Article de reference

OpenSSL

openssl showing a [[X.509]] certificate for [[UEFI]] [[UEFI#Secure Boot|Secure Boot]]"},"developer":{"wt":"The OpenSSL Project"},"released":{"wt":"{{start date and age|1998}}"},...

OpenSSL est une bibliothèque logicielle permettant aux applications de sécuriser les communications sur les réseaux informatiques contre l'écoute clandestine et d'identifier l'expéditeur. Elle est largement utilisée par les serveurs Internet , notamment par la majorité des sites web HTTPS .

OpenSSL contient une implémentation open source des protocoles SSL et TLS . La bibliothèque principale , écrite en langage C , implémente les fonctions cryptographiques de base et fournit diverses fonctions utilitaires. Des interfaces permettant d'utiliser la bibliothèque OpenSSL dans différents langages informatiques sont disponibles.

La Fondation OpenSSL (OSF) représente le projet OpenSSL dans la plupart des domaines juridiques, notamment les accords de licence des contributeurs, la gestion des dons, etc. OpenSSL Software Services (OSS) représente également le projet OpenSSL pour les contrats de support.

OpenSSL est disponible pour la plupart des systèmes d'exploitation de type Unix (y compris Linux , macOS et BSD ), Microsoft Windows et OpenVMS .

SSLeay, créée par Eric Andrew Young et Tim Hudson, dont le développement a été officieusement interrompu le 17 décembre 1998, lorsque Young et Hudson ont rejoint RSA Security . Les membres fondateurs étaient Mark Cox, Ralf Engelschall, Stephen Henson, Ben Laurie et Paul Sutton.

En 2018, la numérotation des versions d'OpenSSL est passée directement de 1.1.1 à 3.0.0, en omettant le chiffre 2 comme numéro de version majeure afin d'éviter un conflit avec l'un des modules d'OpenSSL. La version 3.0.0 a été la première à utiliser la licence Apache .

Akamai .

Sorties de versions majeures

Historique des versions d'OpenSSL
VersionDate de sortie originaleSoutien jusqu'à CommentaireDernière version mineure
SCTP
  • Prise en charge de l'exportateur de matériel de clé TLS
  • Prise en charge de l'établissement de clés DTLS pour SRTP
  • Prochaine négociation du protocole
  • Signatures PSS dans les certificats, les demandes et les listes de révocation de certificats (CRL)
  • Prise en charge des informations de destinataire basées sur un mot de passe pour le CMS
  • Prise en charge de TLS 1.2 et TLS 1.1
  • Capacité FIPS 140 préliminaire pour un module FIPS 2.0 non validé
  • Prise en charge du protocole SRP ( Secure Remote Password Protocol )
  • 1.0.1u ( Sélection automatique de courbe elliptique (EC) TLS
  • API permettant de définir les algorithmes et courbes de signature pris en charge par TLS
  • API de configuration SSL_CONF
  • Support TLS Brainpool
  • Soutien ALPN
  • Prise en charge par le CMS des normes RSA-PSS , RSA-OAEP , ECDH et ANSI X9.42
  • Prise en charge FIPS 140
  • 1.0.2u ( BLAKE2
  • Prise en charge de ChaCha20-Poly1305
  • Prise en charge de X25519
  • Prise en charge de DANE et de la transparence des certificats
  • Prise en charge des suites de chiffrement CCM
  • Prise en charge des secrets maîtres étendus
  • SSLv2 supprimé
  • La prise en charge des suites de chiffrement Kerberos a été supprimée.
  • RC4 et 3DES ont été retirés des suites de chiffrement par défaut de libssl.
  • Supprimez DSS, SEED, IDEA, CAMELLIA et AES-CCM de la liste de chiffrement par défaut
  • La prise en charge des chiffrements 40 et 56 bits a été supprimée de libssl.
  • Prise en charge de la norme FIPS 140 supprimée
  • 1.1.0l ( LTS )( 2023-09-11 )1.1.1w (11 septembre 2023)
    licence Apache 2.0
  • Prise en charge de la norme FIPS 140-2 réintégrée.
  • Fournisseurs de cryptomonnaies, en remplacement des moteurs de cryptomonnaies
  • Prise en charge du protocole CMP (Certificate Management Protocol)
  • Développement en cours
    Conformité à la norme FIPS 140-3
  • Améliorations des performances
  • 3.1.8 (11 février 2025)
    QUIC côté client
  • Compression du certificat TLS
  • Utilisation déterministe de l'ECDSA
  • Clés publiques brutes TLS
  • 3.2.6 (30 septembre 2025)
    Chiffres
    AES , Blowfish , Camellia , ChaCha20 , Poly1305 , SEED , CAST-128 , DES , IDEA , RC2 , RC4 , RC5 , Triple DES , GOST 28147-89 , SM4
    Fonctions de hachage cryptographiques
    MD5 , MD4 , MD2 , SHA-1 , SHA-2 , SHA-3 , RIPEMD-160 , MDC-2 , GOST R 34.11-94 , BLAKE2 , Tourbillon , SM3
    Cryptographie à clé publique
    RSA , DSA , échange de clés Diffie-Hellman , courbe elliptique , X25519 , Ed25519 , X448 , Ed448 , SM2

    ( La confidentialité persistante parfaite est prise en charge à l'aide de Diffie-Hellman sur courbe elliptique depuis la version 1.0. )

    Validation FIPS 140

    La norme FIPS 140 est un programme fédéral américain de test et de certification des modules cryptographiques. Un certificat FIPS 140-1 initial pour le module FOM 1.0 d'OpenSSL a été révoqué en juillet 2006 « suite à des interrogations concernant l'interaction du module validé avec des logiciels externes ». Le module a été recertifié en février 2007 avant d'être remplacé par la norme FIPS 140-2. OpenSSL 1.0.2 prenait en charge l'utilisation du module objet FIPS (FOM) d'OpenSSL, conçu pour exécuter des algorithmes conformes aux normes FIPS dans un environnement validé FIPS 140-2. OpenSSL a pris la décision controversée de classer l'architecture 1.0.2 comme « en fin de vie » (EOL) à compter du 31 décembre 2019, malgré les objections selon lesquelles il s'agissait de la seule version d'OpenSSL disponible prenant en charge le mode FIPS. En raison de la fin de vie, de nombreux utilisateurs n'ont pas pu déployer correctement le FOM 2.0 et sont devenus non conformes car ils n'ont pas obtenu de support étendu pour l'architecture 1.0.2, bien que le FOM lui-même soit resté validé pendant huit mois supplémentaires.

    Le module objet FIPS 2.0 a conservé sa validation FIPS 140-2 sous plusieurs formats jusqu'au 1er septembre 2020, date à laquelle le NIST a déprécié l'utilisation de la norme FIPS 186-2 pour les signatures numériques et a classé tous les modules non conformes comme « historiques ». Cette désignation inclut une mise en garde à l'intention des agences fédérales : elles ne doivent pas inclure ce module dans leurs nouveaux marchés publics. Les trois validations OpenSSL ont été concernées par cette dépréciation : le module objet FIPS OpenSSL (certificat n° 1747) , le module objet FIPS OpenSSL SE (certificat n° 2398) et le module objet FIPS OpenSSL RE (certificat n° 2473). De nombreuses validations et clones OpenSSL « en marque privée » créés par des consultants ont également été déplacés vers la liste historique, bien que certains modules validés FIPS avec une compatibilité de remplacement aient évité la dépréciation, tels que BoringCrypto de Google et CryptoComply de SafeLogic.

    Le comité de gestion d'OpenSSL a annoncé un changement dans le système de numérotation des versions.

    En raison de cette modification, le numéro de version majeure de la version suivante aurait doublé, car le module FIPS d'OpenSSL occupait déjà ce numéro. Par conséquent, il a été décidé de passer directement à OpenSSL 3.0, sans passer par la version 2.0.

    OpenSSL 3.0 a rétabli le mode FIPS et a subi des tests FIPS 140-2, mais avec des retards importants : l’effort a été lancé en 2016 avec le soutien de SafeLogic et un soutien supplémentaire d’Oracle en 2017, mais le processus a été difficile.

    Le 20 octobre 2020, le fournisseur OpenSSL FIPS 3.0 a été ajouté à la liste des implémentations en cours de test du CMVP, ce qui reflétait un engagement officiel auprès d'un laboratoire de test en vue de procéder à une validation FIPS 140-2. Cela a entraîné une série de certifications dans les mois suivants.

    Licence

    OpenSSL était distribué sous une double licence, à la fois la licence OpenSSL et la licence SSLeay, ce qui signifie que les termes de l'une ou l'autre licence pouvaient être utilisés. La licence OpenSSL est une licence Apache 1.0 et la licence SSLeay présente certaines similitudes avec une licence BSD à quatre clauses . Étant donné qu'il s'agissait d' une licence Apache 1.0 et non d'une licence Apache 2.0, la mention « Ce produit inclut un logiciel développé par le projet OpenSSL pour être utilisé dans la boîte à outils OpenSSL » devait figurer dans les supports publicitaires et toute redistribution (articles 3 et 6 de la licence OpenSSL). De ce fait, les licences OpenSSL et Apache 1.0 sont incompatibles avec la licence GNU GPL . Certains développeurs sous licence GPL ont ajouté une exception OpenSSL à leurs licences, autorisant spécifiquement l'utilisation d'OpenSSL avec leur système. GNU Wget et climm utilisent tous deux de telles exceptions. Certains paquets (comme Deluge ) modifient explicitement la licence GPL en ajoutant une section supplémentaire au début de la licence documentant l'exception. D'autres paquets utilisent GnuTLS ( sous licence LGPL) , Botan (sous licence BSD ) ou NSS ( sous licence MPL) , qui remplissent la même fonction.

    OpenSSL a annoncé en août 2015 qu'il exigerait de la plupart des contributeurs qu'ils signent un accord de licence de contributeur (CLA) et qu'OpenSSL serait finalement redistribué sous les termes de la licence Apache 2.0 . Ce processus a commencé en mars 2017, et s'est achevé en 2018.

    Le 7 septembre 2021, OpenSSL 3.0.0 a été publié sous la licence Apache 2.0.

    Vulnérabilités notables

    Attaque par déni de service (DoS) : analyse ASN.1

    OpenSSL 0.9.6k présentait un bogue, découvert le 4 novembre 2003, qui provoquait un grand nombre de récursions sur les machines Windows lors de l'exécution de certaines séquences ASN.1. Windows ne pouvant gérer correctement ces récursions importantes, OpenSSL se bloquait. L'envoi d'un nombre arbitrairement élevé de séquences ASN.1 entraînait donc le plantage d'OpenSSL.

    vulnérabilité d'agrafage OCSP

    Lors de l'établissement d'une liaison, le client pouvait envoyer un message ClientHello mal formaté, ce qui entraînait l'analyse par OpenSSL d'une partie du message au-delà de sa fin. Référencée 2011-0014 par le projet CVE, cette vulnérabilité affectait toutes les versions d'OpenSSL de 0.9.8h à 0.9.8q et de 1.0.0 à 1.0.0c. L'analyse erronée pouvant conduire à la lecture d'une adresse mémoire incorrecte, un attaquant pouvait provoquer un déni de service (DoS) . De plus, certaines applications pouvaient exposer le contenu des extensions OCSP analysées , permettant ainsi à un attaquant de lire le contenu de la mémoire suivant le ClientHello.

    Vulnérabilité ASN.1 BIO

    Lors de l'utilisation des fonctions d'entrée/sortie de base (BIO) ou des fonctions basées sur des fichiers pour lire des données au format DER non fiables , OpenSSL est vulnérable. Cette vulnérabilité a été découverte le 19 avril 2012 et a reçu l'identifiant 2012-2110 . Bien qu'elle n'affecte pas directement le code SSL/TLS d'OpenSSL, aucune application utilisant des fonctions ASN.1 (en particulier d2i_X509 et d2i_PKCS12) n'est concernée. 2013-0169 .Le générateur de nombres pseudo-aléatoires d'OpenSSL acquiert de l'entropie grâce à des méthodes de programmation complexes. Afin d'éviter que l' outil d'analyse Valgrind n'émette d'avertissements, un mainteneur de la distribution Debian a appliqué un correctif à la version Debian de la suite OpenSSL, ce qui a involontairement compromis le générateur de nombres aléatoires en limitant à 32 768 le nombre total de clés privées qu'il pouvait générer. La ​​version défectueuse a été incluse dans la version Debian du 17 septembre 2006 (version 0.9.8c-1), compromettant également d'autres distributions basées sur Debian, comme Ubuntu . Des exploits prêts à l'emploi sont facilement disponibles.

    L'erreur a été signalée par Debian le 13 mai 2008. Sur la distribution Debian 4.0 (etch), ces problèmes ont été corrigés dans la version 0.9.8c-4etch3, tandis que les correctifs pour la distribution Debian 5.0 (lenny) ont été fournis dans la version 0.9.8g-9.

    Un logo représentant la faille Heartbleed

    Les versions 1.0.1 à 1.0.1f d'OpenSSL présentent une faille critique de gestion de la mémoire dans leur implémentation de l' extension TLS Heartbeat. Cette faille pourrait permettre de révéler jusqu'à 64 Ko de la mémoire de l'application à chaque pulsation ( 2014-0160 ). En lisant la mémoire du serveur web, des attaquants pourraient accéder à des données sensibles, notamment la clé privée du serveur . Cela pourrait leur permettre de décrypter des communications interceptées antérieurement si le protocole de chiffrement utilisé ne garantit pas la confidentialité persistante . La connaissance de la clé privée pourrait également permettre à un attaquant de mener une attaque de type « homme du milieu » contre toute communication ultérieure. Cette vulnérabilité pourrait aussi révéler des parties non chiffrées des requêtes et réponses sensibles d'autres utilisateurs, y compris les cookies de session et les mots de passe, ce qui pourrait permettre à des attaquants d' usurper l'identité d'un autre utilisateur du service

    Lors de sa divulgation le 7 avril 2014, on estimait qu'environ 17 % des serveurs web sécurisés d'Internet, soit un demi-million de serveurs certifiés par des autorités reconnues, étaient vulnérables à l'attaque. Cependant, Heartbleed peut affecter à la fois le serveur et le client.

    2014-0224 ) est une vulnérabilité de contournement de sécurité qui résulte d'une faiblesse dans les méthodes OpenSSL utilisées pour le matériel de clé. 2015-0291 ) permet à quiconque de récupérer un certificat, d'en lire le contenu et de le modifier précisément afin d'exploiter la faille et de provoquer le plantage d'un client ou d'un serveur. Si un client se connecte à un serveur OpenSSL 1.0.2 et renégocie le certificat avec une extension d'algorithmes de signature invalide, une déréférencement de pointeur nul se produit. Ceci peut entraîner une attaque par déni de service (DoS) contre le serveur.2016-0701 ) permet, dans certaines conditions, de récupérer la clé Diffie-Hellman privée du serveur OpenSSL. Elle a été signalée à titre confidentiel par Antonio Sanso, chercheur en sécurité chez Adobe.LibreSSL vers 2015.

    LibreSSL

    Heartbleed , des membres du projet OpenBSD ont créé une branche dérivée d'OpenSSL, à partir de la branche 1.0.1g, pour donner naissance au projet LibreSSL . Au cours de la première semaine d'élagage du code source d'OpenSSL , plus de 90 000 lignes de code C ont été supprimées de cette branche.

    Google a annoncé sa propre version dérivée d'OpenSSL, baptisée BoringSSL. Google prévoit de collaborer avec les développeurs d'OpenSSL et de LibreSSL. Depuis, Google a développé une nouvelle bibliothèque, Tink, basée sur BoringSSL. Les navigateurs basés sur Chromium , dont Microsoft Edge , ont implémenté BoringSSL.

    d'Amazon Web Services et destinée à être utilisée sur la plateforme de cloud computing AWS. Elle est basée sur le code des projets OpenSSL et BoringSSL.

    Akamai et Microsoft , basée sur la version 3.3 d'OpenSSL. Certaines fonctionnalités et corrections sont issues du dépôt OpenSSL actuel.

    Critiques

    Compatibilité ascendante

    Au sein des communautés de développeurs, OpenSSL est souvent pointé du doigt pour les ruptures de compatibilité de son API qu'il introduit à chaque nouvelle version majeure , ce qui nécessite des adaptations logicielles susceptibles de retarder l'adoption des nouvelles versions . Ce phénomène, combiné au fait que les versions précédentes ne sont généralement maintenues que pendant deux ans maximum après la sortie d'une nouvelle version majeure contraint certains fournisseurs à anticiper les migrations logicielles très tôt, alors qu'il leur reste peu de temps pour effectuer la mise à jour, parfois au risque de perdre en compatibilité avec les logiciels existants ou de provoquer des régressions

    Délai entre les sorties

    Bien que les versions à support à long terme (LTS) soient maintenues pendant 5 ans , les retards cumulés dans les délais de publication tendent à contraindre les fournisseurs de systèmes d'exploitation à maintenir plus longtemps la dernière version prise en charge, réduisant ainsi la marge de manœuvre lors de la disponibilité de la nouvelle version. Par exemple, OpenSSL 3.0 était initialement prévu pour le quatrième trimestre 2019 et a finalement été publié 21 mois plus tard , sans que la fin de support prévue pour la version 1.1.1 précédemment prise en charge ne soit prolongée, et ce malgré les changements importants qui ont nécessité des adaptations des logiciels existants.

    Régressions de performance significatives

    La réduction du délai de support de la version 1.1.1 mentionnée précédemment suscite des inquiétudes supplémentaires chez les utilisateurs dont les charges de travail sont sensibles aux performances. Peu après la mise à disposition générale de la version 3.0, certains utilisateurs ont commencé à signaler d'importantes régressions de performances affectant cette version dans les environnements multithread. Nombre d'entre eux pointent du doigt l'utilisation inefficace des verrous dans les opérations de bas niveau fréquentes, faisant état de ralentissements de 80 à 400 fois. L'équipe OpenSSL a créé un méta-problème afin de centraliser les signalements de ces importantes régressions de performances. Environ la moitié des utilisateurs ayant signalé ces problèmes indiquent l'impossibilité pour eux de passer à la version 3.0 depuis les versions précédentes, ce qui aggrave les difficultés causées par le temps de support limité restant pour la version 1.1.1.

    Prise en compte des exigences des utilisateurs

    Alors que la couche transport QUIC était en cours de développement pour prendre en charge la troisième version du protocole HTTP , l'utilisation de TLS pour assurer la sécurité a été proposée , et il a été constaté que des adaptations des bibliothèques TLS seraient nécessaires. Ces modifications ont été apportées à BoringSSL , alors la bibliothèque principalement utilisée par les développeurs QUIC, puis portées vers d'autres bibliothèques . Un portage de ce travail a rapidement été proposé à OpenSSL . Bien que des discussions aient débuté le jour même, elles ont rapidement été bloquées, d'abord pour des raisons de licence , puis suspendues une fois ces problèmes résolus. Finalement, dix mois plus tard, le comité de gestion d'OpenSSL a annoncé dans un article de blog que ce correctif ne serait pas adopté pour la version 3.0, craignant que l'API n'évolue. Finalement, plus d'un an après la sortie prévue de la version 3.0, qui ne voyait toujours pas le jour, une équipe de bénévoles d' Akamai et de Microsoft décida de créer une branche du projet, QuicTLS , et d'intégrer ces correctifs au code d'OpenSSL afin de débloquer le développement de QUIC. Cette initiative fut généralement bien accueillie par la communauté. Finalement, après la sortie d'OpenSSL 3.0, le projet de correctifs QUIC fut réexaminé et abandonné , provoquant une vague de déception au sein de la communauté . La demande de fusion fut fermée, tandis que les utilisateurs exprimaient publiquement leur déception , suppliaient les fournisseurs de systèmes d'exploitation de prendre en charge la branche alternative QuicTLS ou recherchaient des solutions alternatives . ​​Finalement, Rich Salz, cofondateur de la branche QuicTLS, annonça son ​​intérêt pour la création d'un projet Apache dérivé de QuicTLS. Au 25 février 2023, il n'existe toujours pas de bibliothèque TLS compatible QUIC et prise en charge à long terme disponible par défaut dans les systèmes d'exploitation sans que les utilisateurs finaux aient besoin de la reconstruire eux-mêmes à partir des sources.

    Plus d articles de Worldlex Wiki

    Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

    Explorer l index