La version 3.0.0 de la bibliothèque cryptographique Botan, utilisée dans le projet NeoPG, un fork de GnuPG 2, est maintenant disponible. La bibliothèque offre une vaste collection de primitives prêtes à l'emploi, utilisées dans le protocole TLS, les certificats X.509, les ciphers AEAD, les modules TPM, PKCS#11, le hachage de mots de passe et la cryptographie post-quantique (signatures basées sur un hachage et accord de clés basé sur McEliece). La bibliothèque est écrite en C++ et est distribuée sous licence BSD.
Parmi les changements de la nouvelle version :
- L'utilisation de la norme C++20 est désormais autorisée dans la base de code (auparavant, C++11 était utilisé), ce qui élève les exigences pour les compilateurs : pour la compilation, il faut désormais au minimum GCC 11, Clang 14 ou MSVC 2022. Le support des compilateurs HP et Pathscale, ainsi que des projets Google NaCL et IncludeOS, a été abandonné.
- Une grande quantité de modifications perturbant la compatibilité ascendante a été apportée. De nombreux fichiers d'en-tête obsolètes ont été supprimés, comme ceux spécifiques à certains algorithmes (aes.h, etc.). Les mises en œuvre des fonctions et algorithmes qui étaient précédemment déclarés obsolètes (CAST-256, MISTY1, Kasumi, DESX, XTEA, PBKDF1, MCEIES, CBC-MAC, Tiger, NEWHOPE, CECPQ1) ont été supprimées. L'utilisation de /proc et /dev/random pour générer de l'entropie pour le générateur de nombres pseudo-aléatoires a été arrêtée. Certaines classes (comme Data_Store), structures et énumérations ont été retirées de l'API. Dans la mesure du possible, les pointeurs bruts ne sont plus retournés ni utilisés.
- Prise en charge du protocole TLS 1.3 ajoutée. La prise en charge de TLS 1.0, TLS 1.1 et DTLS 1.0 a été supprimée. Le support des ensembles de ciphers DSA, SRP, SEED, AES-128 OCB, CECPQ1, DHE_PSK et Camellia CBC, ainsi que des ciphers anonymes et des hachages SHA-1 a été retiré de l'implémentation TLS.
- Ajout de la prise en charge de l'algorithme de cryptographie post-quantique Kyber, résistant à la factorisation sur un ordinateur quantique.
- Ajout de la prise en charge de l'algorithme de cryptographie post-quantique Dilithium pour les signatures numériques.
- Ajout de la prise en charge du hachage sous forme de point sur une courbe elliptique, utilisant la technique SSWU (draft-irtf-cfrg-hash-to-curve).
- Ajout de la fonction de hachage cryptographique BLAKE2b.
- Une nouvelle interface de programmation T::new_object a été proposée, retournant unique_ptr au lieu d'un pointeur brut « T* ».
- De nouvelles fonctions et API ont été ajoutées : X509_DN::DER_encode, Public_Key::get_int_field, ideal_granularity, requires_entire_message, SymmetricAlgorithm::has_keying_material. Un grand ensemble de nouvelles fonctions a été ajouté pour une utilisation dans le code en C (C89).
- Les instructions AVX2 ont été utilisées dans l'implémentation de l'algorithme Argon2.
- Réduction de la taille des tables dans les implémentations des algorithmes Camellia, ARIA, SEED, DES et Whirlpool.
- Une nouvelle implémentation de DES/3DES a été proposée, protégée contre la plupart des classes d'attaques par canaux auxiliaires qui évaluent l'état du cache.
- L'implémentation de SHACAL2 est optimisée pour les systèmes basés sur les architectures ARMv8 et POWER.
- Le code de calcul des bits de parité, de transformation bcrypt/base64 et de détermination du type de chaîne ASN.1 a été débarrassé de la recherche dans les tables et maintenant ne dépend plus des données traitées (temps constant d'exécution).
Source : opennet.ru
