Un possibile percorso nella crittografia è attraverso implementazione . Prendi alcune funzioni standard o set di funzioni, ad es. la famiglia di funzioni hash SHA . Dallo standard, produci il tuo codice; lo standard include alcuni vettori di test che ti aiuteranno a verificare che la tua implementazione sia corretta. Quindi confronta il tuo codice con le librerie esistenti, ad es. OpenSSL , Crypto ++ e sphlib ; confronta il tuo codice e scopri cosa potresti fare per rendere il tuo codice più veloce e / o più fluido. Sebbene ottenere un'immediata implementazione della funzione hash non sia estremamente utile di per sé (poiché le implementazioni veloci sono già disponibili gratuitamente), l'esercizio ti garantirà una conoscenza precisa e approfondita di come funzionano queste funzioni, e che sarà un strong risorsa per comprendere i documenti di ricerca su di loro.
Le funzioni di hash sono un buon punto di partenza poiché tendono ad essere specificate con precisione e non usano alcuna chiave. Dopo aver imparato alcune funzioni di hash, prova HMAC . Quindi procedere alla crittografia simmetrica (in particolare RC4 , DES e 3DES e AES ). A quel punto avrai alcune nozioni sul funzionamento interno di qualche cifrario simmetrico e, forse più importante, saprai come leggere e capire le specifiche dell'algoritmo.
Ulteriori passi saranno quelli di dilettarsi in crypto asimmetrico, in pratica RSA . La crittografia asimmetrica richiede un po 'di matematica; potresti voler dare un'occhiata al Manuale di crittografia applicata , che è liberamente disponibile ed è un buon libro di riferimento (questo libro non ha alcun rapporto con la "Crittografia applicata" di Bruce Schneier - quest'ultimo è un libro introduttivo spesso citato, ma molto meno utile come riferimento). Se si desidera implementare la propria RSA, l'uso di un linguaggio di programmazione o di una libreria che fornisce aritmetica di intere dimensioni renderà le cose più semplici (ad es. Java con java.math.BigInteger
, C # /. NET 4.0 con System.Numerics.BigInteger
o una libreria esterna come GMP ). In alternativa, vai avanti e scrivi il tuo codice intero più grande (di nuovo, un esercizio sano); per questo, ti consigliamo di leggere il capitolo 14 del Manuale .
Dopo aver eseguito le funzioni hash, HMAC, crittografia simmetrica e RSA, puoi procedere a scrivere la tua libreria SSL / TLS, iniziando con TLS 1.0 . La scrittura di un client TLS in grado di connettersi e interagire con il server TLS esistente ti fornirà una conoscenza approfondita dell'handshake SSL / TLS e sarai in grado di comprendere tutte le ricerche sugli attacchi noti su SSL e su come sono risolti (ad es. BEST, Barboncino,...). Utilizza questa risposta come guida di lettura su TLS.
L'implementazione non è l'unico modo per imparare la crittografia, ma funziona.