Veröffentlichung der kryptografischen Bibliothek Botan 3.0.0

Die Veröffentlichung der kryptographischen Bibliothek Botan 3.0.0, die im Projekt NeoPG, einem Fork von GnuPG 2, verwendet wird, ist verfügbar. Die Bibliothek bietet eine umfangreiche Sammlung von vorkonfigurierten Primitives, die im TLS-Protokoll, in X.509-Zertifikaten, AEAD-Verschlüsselungen, TPM-Modulen, PKCS#11, Passwort-Hashing und postquantensicherer Kryptographie (Hash-basierte Signaturen und Schlüsselvereinbarungen basierend auf McEliece) verwendet werden. Die Bibliothek ist in C++ geschrieben und unter der BSD-Lizenz erhältlich.

Zu den Änderungen in der neuen Version gehören:

  • In der Codebasis ist die Verwendung des C++20-Standards erlaubt (früher wurde C++11 verwendet), weshalb die Anforderungen an Compiler erhöht wurden — für den Build sind jetzt mindestens GCC 11, Clang 14 oder MSVC 2022 erforderlich. Die Unterstützung für HP- und Pathscale-Compiler sowie für die Projekte Google NaCL und IncludeOS wurde eingestellt.
  • Es wurden zahlreiche Änderungen vorgenommen, die die Abwärtskompatibilität beeinträchtigen. Viele veraltete Header-Dateien, zum Beispiel spezifisch für bestimmte Algorithmen (aes.h usw.), wurden entfernt. Implementierungen von Funktionen und Algorithmen, die zuvor als veraltet gekennzeichnet wurden (CAST-256, MISTY1, Kasumi, DESX, XTEA, PBKDF1, MCEIES, CBC-MAC, Tiger, NEWHOPE, CECPQ1), wurden entfernt. Bei der Entropieerzeugung für den Zufallszahlengenerator wurde die Verwendung von /proc und /dev/random eingestellt. Einige Klassen (zum Beispiel Data_Store), Strukturen und Enumerationen wurden aus der API entfernt. Wo möglich, wurde die Rückgabe und Verwendung von rohen Zeigern eingestellt.
  • Unterstützung für das TLS 1.3-Protokoll hinzugefügt. Die Unterstützung für TLS 1.0, TLS 1.1 und DTLS 1.0 wurde eingestellt. Die Unterstützung für DSA, SRP, SEED, AES-128 OCB, CECPQ1, DHE_PSK und Camellia CBC Chiffren sowie anonyme Chiffren und SHA-1-Hashes wurde aus der TLS-Implementierung entfernt.
  • Unterstützung für den postquantensicheren Kryptografie-Algorithmus Kyber hinzugefügt, der gegen Brute-Force-Angriffe auf Quantencomputern resistent ist.
  • Unterstützung für den postquantensicheren Kryptografie-Algorithmus Dilithium zur Verwendung mit digitalen Signaturen hinzugefügt.
  • Unterstützung für das Hashing im Punktformat auf elliptischen Kurven, das die SSWU-Technik (draft-irtf-cfrg-hash-to-curve) verwendet, hinzugefügt.
  • Unterstützung für die kryptographische Hash-Funktion BLAKE2b hinzugefügt.
  • Eine neue Programmierschnittstelle T::new_object vorgeschlagen, die unique_ptr anstelle von rohem Zeiger „T*“ zurückgibt.
  • Neue Funktionen und APIs hinzugefügt: X509_DN::DER_encode, Public_Key::get_int_field, ideal_granularity, requires_entire_message, SymmetricAlgorithm::has_keying_material. Ein großer Satz neuer Funktionen für die Verwendung in C-Code (C89) wurde hinzugefügt.
  • In der Implementierung des Argon2-Algorithmus wurden AVX2-Befehle verwendet.
  • Die Größe der Tabellen in den Implementierungen der Algorithmen Camellia, ARIA, SEED, DES und Whirlpool wurde reduziert.
  • Eine neue Implementierung von DES/3DES wurde vorgeschlagen, die gegen die meisten Klassen von Seitenkanalangriffen zum Schutz des Cache-Zustands geschützt ist.
  • Die SHACAL2-Implementierung ist für Systeme auf Basis der ARMv8- und POWER-Architekturen optimiert.
  • Der Code zur Berechnung der Paritätsbits, zur Umwandlung von bcrypt/base64 und zur Bestimmung des ASN.1-Stringtyps wurde von der Tabellenprüfung befreit und ist nun unabhängig von den verarbeiteten Daten (wird in konstanter Zeit ausgeführt).

Quelle: opennet.ru

60GB SSD 8Gb DDR4