Chiunque si interessi di sicurezza informatica anche solo per hobby avra' sentito dire mille volte che la
sicurezza tramite l'oscuramento e' da rifiutare in favore di un approccio in cui specifiche, algoritmi e codice sorgente sono pubblici e accessibili a tutti.
L'idea su cui poggia questa tesi e' che
anche quando un algoritmo o un software sono chiusi se c'e' una vulnerabilita' le analisi indirette potrebbero finire per farla emergere comunque con un po' di sforzi. Ne consegue il rischio che i dettagli della vulnerabilita' potrebbero andare a finire nelle mani di persone intenzionate ad usarle per fini illeciti che sono state disponibili ad investire per scoprirle, nelle mani di governi o di organizzazioni che sono riuscite ad ottenere le specifiche in qualche modo, o del progettista stesso che potrebbe aver inserito volontariamente una vulnerabilita'.
Se invece algoritmi e software sono pubblici lo scrutinio della comunita' di utilizzatori ed esperti finira' per far emergere velocemente quanto meno tutte le vulnerabilita' piu' evidenti, scoraggera' chi sviluppa software e algoritmi ad usare tecniche approssimative o poco testate sperando che la loro segretezza sia una protezione sufficiente, proteggera' dalle
backdoor (inserimenti intenzionali di vulnerabilita'), per cui alla fine il software sara' piu' sicuro.
Questa tesi ha una sua logica, ma sono sempre stato convinto che detta in maniera cosi' semplicistica finisce per nascondere gran parte della realta'.
Eppur funziona
Prima di attaccare questa tesi da alcuni punti di vista e' meglio tenere a mente un concetto semplice ma molto spesso sottovalutato.
Un dato sistema, algoritmo, software, e' comunque piu' resistente contro gli attacchi se non e' pubblico. L'oscuramento rende il processo di attacco piu' complesso
di molto nella pratica, per cui se gli altri fattori quali l'analisi da parte di esperti esterni alla ricerca di vulnerabilita' non controbilanciasse la mancata sicurezza dovuta alla rinuncia dell'oscuramento sarebbe meglio tenere le cose segrete. Allora qual'e' la verita'?
Tutto dipende da chi sei
La National Security Agency (NSA), agenzia di sicurezza statunitense avvolta nel mistero, e' sicuramente il posto in cui c'e' la maggiore densita' di crittografi professionisti del mondo. Per l'NSA il discorso sulla sicurezza tramite l'oscuramento si capovolge: l'analisi da parte di crittografi esterni per loro non e' vitale, hanno al loro interno una quantita' di crittografi tra i migliori del pianeta, per cui l'oscuramento e' un valore aggiunto irrinunciabile.
Se l'NSA dovesse disegnare un algoritmo crittografico per proteggere comunicazioni di importanza militare avrebbe molto senso da parte loro creare algoritmi segreti e non pubblici.
Non si tratta soltanto di rendere pubblico questo o l'altro algoritmo. Molto spesso un algoritmo reca all'interno anche i frutti di nuove scoperte nel campo. I crittografi dell'NSA possono beneficiare di tutte le pubblicazioni prodotte dai crittografi all'esterno, ed essere sempre aggiornati su qual'e' lo stato dell'arte della crittoanalisi pubblica, ma allo stesso tempo possono non rendere note le scoperte che sono fatte all'interno dell'NSA.
Quello che si crea e' un flusso unidirezionale di conoscenza che l'NSA sfrutta a proprio vantaggio. Pero' e' anche vero che
l'NSA e' un caso limite, e infatti
in quasi tutti i casi realistici e' molto meglio rilasciare gli algoritmi e il codice sorgente pubblicamente dal punto di vista della sicurezza, con una eccezione notevole che sembra emergere negli ultimi anni: gli
algoritmi di ranking alla base di parte del web (2.0 e non).
L'oscuramento, da Google ai Social Media
Cosa accadrebbe se Google pubblicasse le specifiche del suo algoritmo di ranking? Quel giorno sarebbe la
festa nazionale dei SEO.
Sembrano esserci campi in cui la pubblicazione degli algoritmi alla base della sintesi di informazioni provvede indirettamente a specificare il modo in cui creare ad arte dei dati di input per attaccare il sistema.
Se Google ci dicesse per filo e per segno cosa dovremmo fare per guadagnare posizioni nei suoi risultati di ricerca finirebbe per distruggere in un colpo solo la (gia' vacillante) qualita' dei risultati prodotti dal motore di ricerca.
Eppure in teoria la pubblicazione degli algoritmi avrebbe anche i soliti vantaggi: trasparenza e possibilita' da parte di ricercatori esterni di sperimentare versioni piu' raffinate dell'algoritmo sono un esempio. Ma in questo caso
gli svantaggi della pubblicazione superano di gran lunga i vantaggi,
anche per questioni di segretezza aziendale al fine di evitare che i concorrenti prendano le buone idee difficilmente osservabili indirettamente.
Lo stesso fenomeno si osserva nel caso di sistemi quali
Oknotizie, nel caso specifico di quello che faccio negli ultimi tempi, ma piu' in generale di tutti i social media:
Digg,
Reddit,
Delicious (popular), devono tutti avere al loro interno degli algoritmi che prendono decisioni sull'importanza di risorse e sul peso degli utenti in relazione ad una quantita' di parametri.
In particolare in un sistema come oknotizie la qualita' delle news in home page e' un requisito fondamentale per avere un servizio funzionante. Se la pubblicazione dei dettagli dell'algoritmo permettesse ad un attaccante di far
salire qualunque notizia tra le prime posizioni, oknotizie si trasformerebbe in gran parte in una lista di spam.
E nel nostro piccolo anche noi possiamo fare lo stesso gioco dell'NSA.
Quando osserviamo le vulnerabilta' scoperte contro Reddit e Digg implementiamo delle contromisure nel nostro sistema, senza per questo rendere pubblici i dettagli del nostro algoritmo o le vulnerabilita' che abbiamo scoperto da soli nel nostro sistema.
Esiste un'altra soluzione?
Eppure e' brutto che le cose stiano in questi termini, immagino che cosi' come
a me dia fastidio non sapere di preciso come Google funzioni quando vedo siti pieni di spam che sono piu' in alto dei miei nelle pagine di ricerca, allo stesso modo gli utenti dei sistemi di social media potrebbe aver voglia di conoscere di preciso perche' una tale notizia o risorsa e' trionfante in home page mentre le proprie faticano ad imporsi.
Pubblicare l'algoritmo sarebbe una operazione di trasparenza apprezzata da molti, ma ad oggi e' impossibile.
Sarebbe bello poter creare degli algoritmi che non possono essere violati anche se sono pubblici, come quelli crittografici ad esempio in cui la sicurezza risiede nella chiave. Nel caso degli algoritmi di ranking dei social media invece la sicurezza risiede totalmente nel meccanismo usato, e l'unica altra componente e' l'input dell'algoritmo, che in un sito fatto dal basso e' per definizione nelle mani degli utenti e di conseguenza purtroppo anche degli attaccanti.
Per approfondire