# OpenSSL

OpenSSL est une boîte à outils de chiffrement comportant deux bibliothèques, libcrypto et libssl, fournissant respectivement une implémentation des algorithmes cryptographiques et du protocole de communication SSL/TLS, ainsi qu'une interface en ligne de commande, openssl.
Développée en C, OpenSSL est disponible sur les principaux systèmes d'exploitation et dispose de nombreux wrappers ce qui la rend utilisable dans une grande variété de langages informatiques. En 2014, deux tiers des sites Web l'utilisaient.

## Histoire

Basé sur la bibliothèque SSLeay de Eric A. Young et Tim J. Hudson, le projet voit le jour en 1998 dans le but de mettre à la disposition de tous les outils libres pour le chiffrement.
Bien que massivement utilisée, la bibliothèque est peu médiatisée en dehors de la communauté informatique. Cela change en avril 2014 à la suite de la révélation d'une vulnérabilité majeure, Heartbleed qui permet de récupérer le contenu de la mémoire du serveur sans laisser aucune trace numérique$^,$. Du fait de sa très grande utilisation, de nombreux sites internet grand public, entre autres Wikipédia, Google, Dropbox, Yahoo! et Flickr, sont affectés et recommandent à leurs utilisateurs de ne pas se connecter pendant les quelques jours nécessaires à effectuer les mises à jour puis de changer leurs mots de passe$^,$.
Heartbleed a mis en avant le manque de moyens d'OpenSSL et de nombreux logiciels libres essentiels au bon fonctionnement d'internet et des systèmes de communication. Cette constatation a mené à la création de la Core Infrastructure Initiative soutenue par des entreprises majeures du secteur informatique telles que Google, Microsoft, Facebook ou encore Amazon Web Services.
De nouvelles failles, de moindres importances que Heartbleed, sont rendues publiques en juin de la même année. Les annonces et l'importance de ces failles ont permis de révéler plusieurs problèmes dans la qualité du code.
Ces problèmes ont poussé des développeurs du projet OpenBSD à forker OpenSSL en LibreSSL. Quelques mois plus tard, Google annonce avoir également créé son propre fork, mais pour des raisons de facilité de maintenance car elle l'utilise dans ses projets Chrome et Android$^,$.
Le 19 janvier 2017 il a été annoncé que Akamai apporte un soutien financier à la fondation OpenSSL pour accélérer le développement de la version 1.1.1 qui sera la première à inclure la possibilité d’utiliser TLS 1.3. OpenSSL 1.1.1 devait être initialement disponible début avril 2017 mais les spécifications de TLS 1.3 n’étant pas finalisées sa sortie est différée. Une première version beta est finalement apparue le 13 février 2018 et le 11 septembre 2018 la release de la version 1.1.1 LTS (Long Term Support) voit enfin le jour avec le support du TLS 1.3.
Le 26 octobre 2022 est annoncé qu’une faille de sécurité critique sur la version 3.0 et son correctif seront publiés le 1er novembre 2022$^,$. Finalement ce sont deux failles hautes qui sont publiés.

### Versions

Historique des versions majeures de OpenSSL :
| Version | Date de sortie | Commentaire | Dernière version mineure |
| 0.9.1 | 23 décembre 1998 | Lancement du projet | 0.9.1c (4 mars 1999) |
| 0.9.2 | 22 mars 1999 | | 0.9.2b (6 avril 1999) |
| 0.9.3 | 25 mai 1999 | | 0.9.3a (29 mai 1999) |
| 0.9.4 | 9 août 1999 | | 0.9.4 (9 août 1999) |
| 0.9.5 | 28 février 2000 | | 0.9.5a (1er avril 2000) |
| 0.9.6 | 24 septembre 2000 | | 0.9.6m (17 mars 2004) |
| 0.9.7 | 31 décembre 2002 | Support des cartes accélératrices matérielles | 0.9.7m (23 février 2007) |
| 0.9.8 | 5 juillet 2005 | | 0.9.8zh (3 décembre 2015) |
| 1.0.0 | 29 mars 2010 | | 1.0.0t (3 décembre 2015) |
| 1.0.1 | 14 mars 2012 | | 1.0.1u (22 septembre 2016) |
| 1.0.2 | 24 février 2014 | Consultez le changelog. | 1.0.2t (10 septembre 2019) |
| 1.1.0 | 25 août 2016 | Consultez le changelog. | 1.1.0l (10 septembre 2019) |
| 1.1.1 | 11 septembre 2018 | Consultez le changelog. | 1.1.1u (30 mai 2023) |
| 3.0.0 | 7 septembre 2021 | Consultez le changelog. | 3.0.9 (30 mai 2023) |
| Ancienne version, non prise en charge Ancienne version, encore prise en charge Version actuelle Version future ||||

### Abandon pour LibreSSL puis réadoption

À la suite de la faille Heartbleed, quelques distributions et logiciels remplacent OpenSSL par son fork LibreSSL. Quelques années plus tard, un retour arrière est réalisé pour des raisons de maintenance, de fonctionnalités et par conséquent de sécurité.
| Distribution | support LibreSSL | abandon LibreSSL / réadoption OpenSSL |
| Void Linux | 06/08/2014 | 05/03/2021 |
| Alpine Linux | | 29/01/2019$^,$ |
| Gentoo Linux | 11/07/2014 | 05/01/2021 |
| Python | 23/02/2015 | 27/08/2020 |

## Algorithmes

OpenSSL supporte un grand nombre de :
* types de chiffrement :
    AES, Blowfish, Camellia, ChaCha20, SEED, CAST-128, DES, IDEA, RC2, RC4, RC5, Triple DES, GOST 28147-89
* fonctions de hachage cryptographique :
    MD5, MD4, MD2, SHA-1, SHA-2, RIPEMD-160, MDC-2, GOST R 34.11-94
* types de cryptographie à clé publique :
    RSA, DSA, Diffie-Hellman, courbe elliptique, GOST R 34.10-2001