Pochi giorni fa a Eurocrypt 2009, i ricercatori di sicurezza ha annunciato un attacco alla SHA-1 algoritmo di hash. L'attacco è abbastanza grave ed è un forte segnale per i fornitori di software di allontanarsi da SHA-1.
Per quasi tutti gli algoritmi crittografici, se il digest di lunghezza n, significa che ci sono 2 n possibili valori diversi per il message digest (testo cifrato nel caso di un algoritmo di crittografia). Prendendo la possibilità di attacchi di compleanno in considerazione, possiamo tranquillamente assumere che la rottura di questi digerisce vorranno almeno 2 n / 2 operazioni.
Se n = 160 (come nel caso di SHA-1), ci vorranno 2 80 calcoli per violare il codice. Anche se assumiamo che un computer può fare 2 20 operazioni al secondo, ci vorrà un enorme 36 miliardi anni per decifrare il codice. I nostri segreti e sistemi sono tenuti al sicuro da questi algoritmi che dovrebbero resistere meglio i computer per 36 miliardi di anni di cracking del codice.
Poi qualcuno molto intelligente arriva, trova un punto debole nello stesso algoritmo piuttosto che cercare di fare attacco di forza bruta, e la sicurezza dei nostri documenti, firme e protocolli sono in pericolo. Siamo costretti a trovare alternative migliori e la progettazione di algoritmi migliori.
Nel mondo reale, gli algoritmi crittografici diventati obsoleti o rotti in 10-25 anni, piuttosto che il periodo di tempo teorico di 36 miliardi di anni.
Come passo di precauzione si consiglia di effettuare gli algoritmi / protocolli utilizzati nelle applicazioni facilmente sostituibili. Questo renderà la vostra vita più facile quando l'algoritmo è rotto e si desidera sostituirlo. Inoltre, come programmatore si dovrebbe capire che anche se l'algoritmo non è ancora rotto, l'implementazione può essere imperfetta. La maggior parte delle vulnerabilità di sicurezza sono causati da crappy implementazioni degli algoritmi di sicurezza / protocolli.
E vi ho detto che non si dovrebbe scrivere il proprio algoritmo di crittografia ?
Naturalmente, nel mondo reale le cose sono completamente diverse:
Come probabilmente sapete, nessuno degli algoritmi nel mondo vi aiuterà se so il nome da nubile di tua madre.