Prima versione di LibreSSL

LibreSSLÈ stata rilasciata la prima versione di LibreSSL, aggiornata oggi alla 2.0.1.

LibreSSL si propone come rimpiazzo di OpenSSL dopo i problemi iniziati con heartbleed. Il team di BSD ha avviato il progetto con l’intenzione di produrre un codice meno fumoso, più stabile e sicuro.

Il codice di OpenSSL ha sulle spalle una lunga storia di compatibilità verso il basso che ha trasformato il codice in qualcosa di poco gestibile e prono agli errori.

LibreSSL ha tolto di mezzo la compatibilità con piattaforme non più utilizzate in produzione, come MS-DOS, VMS, NetWare, Windows a 16 bit, Windows NT e OS/2 e con essa un sacco di problemi.

Di fatto OpenSSL utilizza un C compatibile con ogni compilatore possibile da quello dell VMS al QuickC 1.5 all’ultimo gcc, con il risultato che deve reinventare al proprio interno il fuoco, la ruota e l’acqua calda. Una delle conseguenze di tutto ciò è che OpenSSL ha una propria libreria di allocazione della memoria che non è controllabile dal sistema operativo o dai normali tool di debug, ma ha una propria serie di API per fare il debug della gestione della memoria.

Anche dal punto di vista della generazione dei numeri causali, OpenSSL tenta di creare una propria entropia anche se il sistema operativo sottostante non riesce a fornirla, ma è una strategia sbagliata. Nel 2014 se il sistema operativo non fornisce la corretta entropia bisogna correggere il sistema operativo (vedi haveged), non tentare di metterci una pezza in una libreria, come si faceva nel 1990.

Questi e altri problemi sono ben illustrati in una serie di diapositive che presentano il progetto.

Anche se LibreSSL è concepita come drop-in di OpenSSL, i problemi ci sono, ma si tratta anche di abitudini sedimentate di altri sviluppatori abituati ad avere a che fare solamente OpenSSL.

Autore: Luigi Rosa

Consulente IT, sviluppatore, SysAdmin, cazzaro, e, ovviamente, geek.

Spazio per un commento