Perché non possiamo creare una nuova implementazione SSL?

0

Le implementazioni SSL sono state discusse molto ultimamente, a causa del potenziale di Chrome di disattivare NSS ( link ) e OpenSSL con Heartbleed.

Quali sono i principali fattori che impediscono a qualcuno con tonnellate di risorse (ad es. Google) di implementare una nuova libreria SSL più facilmente controllabile / gestibile per garantire la sicurezza in futuro?

Comprendo che un'implementazione SSL potrebbe essere un enorme progetto in sé, ma altre persone hanno implementato implementazioni di clean room prima (ad esempio BouncyCastle in Java). Quindi sicuramente qualcuno con abbastanza risorse avrebbe la capacità di scrivere da zero, e sarebbe più economico che provare a controllare e mantenere qualcosa come OpenSSL.

    
posta Anthony Kraft 11.04.2014 - 00:55
fonte

1 risposta

4

Scrivere un'implementazione SSL funzionante non è difficile quando lo fai spesso; L'ho fatto già quattro volte (per vari clienti, niente opensource, ahimè). Ci vogliono circa 3 giorni, forse 4 o 5 se vuoi farlo correttamente (almeno quello che mi serve) (*).

Produrre una nuova libreria SSL non sarebbe un problema, e nemmeno sarebbe una soluzione. Ci sono già diversi oltre a OpenSSL, ad es. GnuTLS , PolarSSL , CyaSSL ... Vedi la pagina di Wikipedia per una lista. La maggior parte sono open source.

Ciò che è difficile è manutenzione . È faticoso mantenere la libreria aggiornata con nuove versioni di protocollo, nuove funzionalità, problemi di interoperabilità (i workaround necessari per parlare con altre librerie esistenti che non sono necessariamente conformi allo standard) ... Il codice sorgente OpenSSL è sicuro da leggere, ma è perché è cresciuto da un nucleo storicamente semplice ma antico, e ha sviluppato estensioni, nuove API e featurism strisciante, inclusa una buona dose di "correzioni" per evitare i bug del compilatore.

(*) Esclusa la validazione X.509 completa. La costruzione del percorso, l'elaborazione di tutte le estensioni e la gestione della revoca sono un compito abbastanza. Un meccanismo di validazione primitivo per casi specifici è abbastanza semplice, ma il supporto X.509 abbastanza ragionevole è scoraggiante. Non mi piacerebbe implementare una cosa del genere in C.

    
risposta data 11.04.2014 - 04:02
fonte

Leggi altre domande sui tag