Non vedo l'ora di saperne di più sull'implementazione di SSL / TLS, qualcuno di voi potrebbe suggerirmi una buona fonte per apprenderlo? Per ora ho solo conoscenze di base su di esso come ciò che è SSL e come funziona.
Grazie.
Per ottenere un primo prototipo funzionante:
Scegli un linguaggio di programmazione comodo, che offre le primitive di cui hai bisogno: supporto di rete, facili manipolazioni byte per byte ... Il linguaggio dovrebbe offrire implementazioni delle primitive crittografiche di base, altrimenti dovrai reimplementare loro stessi C # o Java sono adeguati; Macro di Excel molto meno. Dovresti avere una buona conoscenza pregressa della lingua.
Ottieni un'implementazione compatibile da testare; scegli un opensource come OpenSSL o GnuTLS , che può funzionare sia come client che come server, produce tonnellate di output di debug e, soprattutto, che è possibile modificare per eseguire il dump dei valori intermedi. Per la tua prima implementazione SSL, probabilmente trascorrerai molte volte a capire cosa inviare esattamente a SHA-1 e MD5 per ottenere correttamente i messaggi Finished
.
Leggi le specifiche per la versione del protocollo che desideri implementare. Esistono SSL 3.0 , TLS 1.0 , TLS 1.1 e TLS 1.2 . Scegli solo uno inizialmente; estendere il tuo codice in supporto per altre versioni in seguito. TLS 1.0 è probabilmente il più semplice dei quattro. Puoi anche leggere questa risposta come una sorta di "guida alla lettura per SSL".
Concentrati su un paio di pacchetti di crittografia, ad es. TLS_RSA_WITH_RC4_128_SHA
e TLS_RSA_WITH_3DES_EDE_CBC_SHA
. Altre opzioni implicano più complessità; inizia in piccolo.
Se devi implementare alcune primitive crittografiche (ad esempio RC4 o SHA-1), esegui correttamente , ovvero come moduli autonomi con un'API pulita. Provali (Google up per i vettori di test). Non è possibile eseguire un lavoro di implementazione ragionevole a meno che non si disponga di strumenti affidabili. L'utilizzo di algoritmi già implementati (sia dal framework di programmazione che utilizzi, sia da una libreria esterna) ti aiuterà molto.
Ricorda che scrivere il tuo SSL è per l'apprendimento, non per l'utilizzo in produzione. È un ottimo modo per capire come funzionano le cose. Tuttavia, il codice di produzione richiede molta attenzione, in particolare per quanto riguarda gli attacchi side-channel . L'esperienza ha ripetutamente dimostrato che le implementazioni diventano sufficientemente solide solo attraverso anni di esperienza, test e riparazioni.
Conoscere le funzionalità interne di SSL è una buona competenza che ti sarà utile. Puoi costruire una intera carriera interpretando le tracce SSL ottenute con alcuni strumenti di monitoraggio della rete (questo è il modo moderno di Oracle, e anche i bastoncini di incenso sono facoltativi).
Leggi altre domande sui tag tls