“La differenza tra qualcosa di buono e qualcosa di grande è l’attenzione ai dettagli.”
Charles R. Swindoll
Security by design è uno dei principi obbligatori per lo sviluppo di sofware imposto dal nuovo regolamento europeo per la protezione dei dati personali, per gli amici “GDPR”. Chi sviluppa software, a qualsiasi livello, che sia in assembly, C, Ruby, Python o PHP, sa quanto l’attenzione ai particolari, certe volte maniacale, sia fondamentale per fare la differenza qualitativa di un prodotto, soprattutto sotto il profilo della sicurezza.
Basta davvero poco, nella miriade di istruzioni, algoritmi, parametri, classi e superclassi che compongono un moderno linguaggio di programmazione, fare qualche errore. Errori anche banali, come il non limitare i caratteri di un strcmp() o il non sanificare adeguatamente una variabile in una query SQL (come ben sa chi è stato vittima di una SQL injection…). Certe volte sono errori introdotti volutamente dallo sviluppatore, magari per motivi di astio verso l’azienda dove lavora, o addirittura sono “bug” voluti da agenzie governative, per mantenere un certo controllo.
Alcuni di questi errori sono piccola cosa: magari solo un crash di tanto in tanto. Altri possono causare danni per milioni di euro e provocare veri e propri terremoti “digitali”, come ad esempio il bug nel servizio SMB che a maggio del 2017 ha provocato la diffusione del ransomware WannaCry in quasi tutti i sistemi informatici del pianeta.
L’attenzione ai particolari, quindi, in una società sempre più basata sui servizi digitali, è fondamentale. Ed il legislatore europeo, forse ambiziosamente, ha inserito questo preciso obbligo nella normativa, anch’essa senza dubbio ambiziosa, che regola la gestione ed il trattamento dei nostri dati personali.
In questo processo, il software open source parte con una marcia in più: la possibilità di sbirciare nel codice, studiarlo ed analizzarlo, insieme ad altre migliaia di operatori in tutto il mondo, da un lato stimola gli sviluppatori a produrre prodotti di migliore qualità. Dall’altro, invece, rende possibile correggere certi errori senza dover ricorrere a laboriose procedure aziendali che spesso costano tempo, soldi e fatica.
Per quanto premesso, il cambio di paradigma che impone la legislazione sarà fondamentale per le aziende: non più prodotti semplicemente “che funzionano”, magari rammicciando pezzi di codice qui e là, ma software robusti, scritti in modo che la sicurezza, nella sua accezione più grande e diffusa, sia propria del design del prodotto.
Che sia la fine delle password memorizzate in clear text in campi dentro un DB MySQL ? Francamente ne dubito, anche se lo auspico. E non solo perché le sanzioni sono pesanti (anche se ho qualche dubbio che saranno mai attuate…) ma perché sono in gioco le vite, non più digitali, di ognuno di noi. E rabbrividisco quando le mie intenzioni di voto, opinioni, commenti e pensieri finiscono dentro sistemi sui quali non ho alcun controllo, soprattutto sul loro reale funzionamento. Forse è dato dalla consapevolezza che, per motivi professionali, ho acquisito negli anni: non esistono sistemi sicuri, non esiste la privacy nel mondo digitale. Si può arrivare ad avere sistemi informatici protetti ma ci sarà sempre qualcuno che potrà accedere anche ai dati più reconditi o segreti, per il semplice motivo che chi controlla le infrastrutture spesso ha il controllo anche sui dati. E la crittografia, che sicuramente aiuta a mantenere un certo grado di riservatezza, non è certamente infallibile.
Quindi ecco che si ritorna all’attenzione ai particolari. Anche quelli più insignificanti, come ciò che regaliamo -letteralmente- ai social network. Dettagli magari insignificanti, come la foto di nostro figlio o della spiaggia dove siamo spaparanzati al sole. Lo facciamo con semplicità e con un pizzico di esibizionismo, inconsapevoli che certi dettagli dicono di noi molto più di quanto vorremmo far sapere.
Ok, può sembrare adesso un discorso un po’ paranoico. E forse lo è. Ma è ciò che contraddistingue noi paranoici: l’attenzione al particolare. Perché sono i particolari che fanno la differenza, ricordatevelo sempre. E la sicurezza, quella si, che si basa sui particolari. Spesso insignificanti o anche trascurabili, come uno strcmp() al posto di un strncmp(): basta una sola lettera, in più o in meno, per influenzare la qualità di un software, così come basta una password troppo banale o una foto troppo “esplicita” per essere trascinati in problemi anche pesanti.
Security by design è un principio che andrebbe insegnato anche nelle scuole: un po’ di sana paranoia non ha mai fatto male a nessuno, gusto ?