In questo lavoro di tesi abbiamo studiato le proprietà di sicurezza delle implementazioni del cifrario RSA. Nella prima parte, analizziamo i metodi per la generazioni di chiavi RSA di diverse librerie crittografiche. Mostriamo, in particolare, un'applicazione pratica basata su ‘bias’ nelle chiavi RSA che permette di misurare la popolarità delle varie librerie crittografiche e sviluppiamo un metodo di fattorizzazione che rompe un algoritmo proprietario di generazione di chiavi. Nella seconda parte, esaminiamo diversi problemi implementativi del protocollo TLS, come ad esempio i 'padding oracle' di RSA, nel contesto, più ampio, dell'ecosistema Web. Il nostro lavoro mostra come RSA, nonostante la sua apparente semplicità, richieda grande cautela per essere implementato correttamente. Diversamente da RSA, la crittografia basata su curve ellittiche (ECC) utilizza sequenze casuali come chiavi e non richiede padding, risultando, tra le altre cose, più resistente a errori di configurazione. La nostra raccomandazione, quindi, è che gli sviluppatori seguano l’esempio di TLS versione 1.3, in cui è cessato l’utilizzo di RSA in favore di ECC.
The aim of our research was to study security properties of real-world deployments of the RSA cryptosystem. First we analyze RSA key generation methods in cryptographic libraries. We show a practical application of biases in RSA keys for measuring popularity of cryptographic libraries and we develop a factorization method that breaks a proprietary key generation algorithm. Later we examine published implementation issues in the TLS protocol, such as RSA padding oracles, in the wider context of the Web ecosystem. Our work helps to demonstrate how RSA, a seemingly simple and intuitive cryptosystem, requires a lot of knowledge to be implemented correctly. Unlike RSA, elliptic curve cryptography (ECC) algorithms do not require padding, and parameters can be chosen such that random strings serve as keys. It is more resistant to bad user configurations and provides many other benefits. We conclude that practitioners should follow the example of TLS version 1.3 and stop using RSA in favor of ECC.