Plusieurs nouvelles versions de bibliothèques cryptographiques ont été publiées :
Publication de la bibliothèque OpenSSL 3.4.0 avec l'implémentation des protocoles SSL/TLS et divers algorithmes de chiffrement. Le support d'OpenSSL 3.4 sera assuré jusqu'en octobre 2025. Le support des versions précédentes d'OpenSSL 3.3, 3.2, 3.1 et 3.0 LTS se poursuivra jusqu'en avril 2026, novembre 2025, mars 2025 et septembre 2026 respectivement. Le code du projet est distribué sous la licence Apache 2.0. Les principales nouveautés :
- Ajout de la prise en charge des ensembles de chiffrement pour TLSv1.3, limité par les fonctionnalités de vérification de l'intégrité des données (RFC 9150) et incluant les algorithmes TLS_SHA256_SHA256 et TLS_SHA384_SHA384.
- Ajout d'une option permettant d'utiliser un source supplémentaire d'entropie basé sur le jitter dans le générateur de nombres pseudo-aléatoires, mise en œuvre via la bibliothèque jitterentropy. L'entropie est générée en mesurant les différences de temps pour réexécuter un ensemble d'instructions déterminé sur le CPU, dépendant de nombreux facteurs internes et imprévisible sans contrôle physique sur le CPU.
- Ajout d'un support initial pour les certificats d'attributs (AC — Attribute Certificate, RFC 5755), qui incluent des informations sur les droits d'accès, les pouvoirs et les attributs du propriétaire du certificat, attestant la possibilité d'effectuer certaines actions. Par exemple, un certificat AC peut définir le droit de se connecter à un service.
- Ajout de la prise en charge des extensions X.509v3 liées aux certificats d'attributs.
- Dans le fournisseur FIPS, prise en charge de l'API FIPS 140-3 Indicator, permettant de déterminer si une opération donnée a été effectuée dans un service approuvé.
- Dans l'API BIO (Basic Input/Output), amélioration du traitement des entrées en format Base64.
- Ajout de la prise en charge de la construction de l'utilitaire openssl en mode PIE (Position Independent Executable), permettant d'utiliser la randomisation de l'espace d'adresses (ASLR).
- Ajout de la prise en charge d'algorithmes de signature numérique combinés, tels que RSA-SHA2-256, pouvant être extraits directement.
- Dans PKCS#12, prise en charge de PBMAC 1 (Password-Based Message Authentication Code 1, RFC 9579).
- Dans l'utilitaire openssl, ajout des options ‘-not_before’ et ‘-not_after’ pour spécifier explicitement le temps de début et de fin de validité du certificat.
- Il est désormais possible d'utiliser des valeurs pré-calculées lors de l'initialisation des algorithmes cryptographiques basés sur les courbes elliptiques P-256.
- Les fonctions TS_VERIFY_CTX_set_* ont été déclarées obsolètes, leur remplacement a été assuré par les fonctions TS_VERIFY_CTX_set0_* offrant une meilleure sémantique.
- Les fonctions SSL_SESSION_get_time(), SSL_SESSION_set_time() et SSL_CTX_flush_sessions() ont été déclarées obsolètes, à la place, utilisez SSL_SESSION_get_time_ex(), SSL_SESSION_set_time_ex() et SSL_CTX_flush_sessions_ex(), qui ne souffrent plus du problème de 2038.
- Le support attendu du protocole QIUC dans OpenSSL 3.4 de serveurs a été reporté à la prochaine version.
La version 4.0.0 du projet LibreSSL, un fork d'OpenSSL, vise à offrir un niveau de sécurité supérieur et un support de qualité pour les protocoles SSL/TLS en éliminant les fonctionnalités superflues, en ajoutant des mesures de protection supplémentaires et en procédant à un nettoyage et une refonte significatifs de la base de code. Le changement significatif du numéro de version est dû à l'utilisation d'une numérotation décimale (après 3.9, la version 4.0). Les changements les plus notables incluent :
- Ajout du support initial pour la compilation avec Emscripten, un compilateur de C/C++ vers WebAssembly.
- Une option CRLfile a été ajoutée à la commande «openssl cms» pour spécifier des listes supplémentaires de certificats révoqués (CRL) qui seront utilisées lors de la vérification.
- Le support pour la plateforme mips32 a été arrêté.
- L'accès aux fonctions écrites en langage assembleur via l'API publique a été supprimé (ces fonctions sont désormais proposées uniquement via des fonctions d'interface en C). Les implémentations assembleur des algorithmes obsolètes pour des architectures dépassées ont été supprimées.
- Le code pour la mise en cache de la validité des certificats, devenu superflu après l'optimisation des performances, a été supprimé.
- L'implémentation des extensions X.509v3 a été améliorée, les méthodes X.509v3 ont été unifiées et un nettoyage de l'API associée a été effectué.
- L'implémentation de type CRYPTO_EX_DATA a été entièrement réécrite.
- Dans libcrypto, les fonctions atoi() et strtol() ont été remplacées par strtonum().
- Un fichier d'en-tête crypto_arch.h a été ajouté, dans lequel le code spécifique aux architectures matérielles a été déplacé.
- L'implémentation de l'algorithme DES a été repensée et optimisée.
- Les fichiers d'en-tête pem2.h, ssl2.h, ssl23.h et ui_compat.h ont été supprimés.
- Le support de l'algorithme de hachage Whirlpool a été supprimé.
- Les fonctions HMAC_Init(), OPENSSL_load_builtin_modules(), X509_REQ_{get,set}_extension_nids(), X509_check_trust() ont été supprimées.
- Les types PEM_USER, PEM_CTX, COMP_CTX, COMP_METHOD, X509_CRL_METHOD, STORE, STORE_METHOD et SSL_AEAD_CTX ont été supprimés.
- Des fonctions SSL_CTX_set1_cert_store() et SSL_CIPHER_get_handshake_digest() ont été ajoutées à libssl.
La version 3.6.0 de la bibliothèque cryptographique Botan est disponible, utilisée dans le projet NeoPG, un fork de GnuPG 2. Cette bibliothèque propose une grande collection de primitives prêtes à l'emploi, utilisées dans le protocole TLS, dans les certificats X.509, les chiffrements AEAD, les modules TPM, PKCS#11, le hachage des mots de passe et la cryptographie post-quantique (signatures basées sur le hachage et accord de clé basé sur McEliece). La bibliothèque est écrite en C++ et est distribuée sous licence BSD. Dans la nouvelle version :
- Une nouvelle bibliothèque avec des algorithmes cryptographiques basés sur des courbes elliptiques a été intégrée, où les opérations sur des courbes types sont effectuées 2 à 3 fois plus rapidement. Une nouvelle API pour le travail bas niveau avec des courbes elliptiques a également été proposée.
- Ajout du support des algorithmes de cryptographie post-quantique récemment standardisés par le NIST : FIPS 203 ML-KEM (Kyber), FIPS 204 ML-DSA (Dilithium) et FIPS 205 SLH-DSA (SPHINCS+).
- Ajout du support pour les puces TPM2.
- L'utilisation des calculs à temps constant pour protéger contre les attaques par canaux auxiliaires a été étendue.
- Ajout de la génération d'entropie supplémentaire à l'aide de la bibliothèque jitterentropy.
- Amélioration des performances de traitement des données en format hexadécimal et en encodage base64.
- Ajout du support pour les extensions processeur AVX2-VAES et GFNI-AVX2.
- Ajout de la détection des capacités CPU armv7, aarch64 et ppc64 sur la plateforme OpenBSD.
- Ajout d'une option de compilation pour désactiver toutes les insertions inline en assembleur.
Publication du projet Rustls 0.23.15, qui développe une implémentation client et serveur des protocoles TLS1.2 et TLS1.3 pour des projets en Rust. Rustls ne fournit pas sa propre implémentation des primitives cryptographiques mais utilise des fournisseurs de fonctions cryptographiques (les algorithmes ECDSA, Ed25519, RSA, ChaCha20-Poly1305, AES128-GCM et AES256-GCM sont pris en charge). Par défaut, Rustls utilise un fournisseur cryptographique basé sur la bibliothèque aws-lc-rs, développée par Amazon et basée sur le code C++ d'AWS-LC, qui est un fork du projet BoringSSL (soutenu par Google, fork d'OpenSSL). La bibliothèque ring, partiellement basée sur BoringSSL et combinant du code en assembleur, C++ et Rust, peut également être utilisée comme fournisseur cryptographique.
La nouvelle version se distingue par des optimisations de performance significatives. Il est affirmé qu'en utilisant les primitives cryptographiques, la bibliothèque aws-lc-rs surpasse désormais les bibliothèques OpenSSL et BoringSSL dans les tests mesurant la bande passante et la vitesse de négociation/reprise de connexion.

Source : opennet.ru
