In Python wurden kryptografische Funktionen mit mathematischer ZuverlÀssigkeitsnachweis implementiert.

Die erfolgreiche Beendigung der Initiative zur Ersetzung der Implementierungen kryptografischer Algorithmen in Python, die in den Modulen hashlib und hmac angeboten werden, durch Varianten mit mathematischer Sicherheitsgarantie, die vom Projekt „HACL*“ bereitgestellt wurden, wurde angekĂŒndigt. Die Arbeit an der Umstellung auf Funktionen mit mathematischer Sicherheitsgarantie begann im Jahr 2022 und wurde nach der Feststellung einer Buffer-Overflow-Schwachstelle in der Implementierung des SHA3-Algorithmus, der im Python-Modul hashlib verwendet wird, initiiert.

In das Hauptrepository des CPython-Projekts wurde der Code mit neuen Implementierungen kryptografischer Hash-Funktionen und HMAC-Algorithmen (Mechanismus zur ÜberprĂŒfung der NachrichtenintegritĂ€t) aufgenommen. Alle standardmĂ€ĂŸig in Python bereitgestellten Hash-Funktionen und HMACs wurden durch verifizierte Varianten ersetzt. Unter anderem wurde eine Implementierung von HMAC-BLAKE2 hinzugefĂŒgt, die SIMD-Befehle AVX2 zur Beschleunigung der Berechnungen nutzt. Es wird erwartet, dass der verifizierte Code Bestandteil der Herbstversion von Python 3.14 sein wird.

Neue Implementierungen kryptografischer Funktionen wurden aus der HACL*-Bibliothek ĂŒbernommen, die von Forschern des französischen Nationalen Instituts fĂŒr Informatik und Automatisierung (INRIA), dem Microsoft Research-Unternehmen und der Carnegie Mellon University entwickelt wird. Die HACL*-Bibliothek unterstĂŒtzt alle erforderlichen kryptografischen Funktionen fĂŒr die Arbeit mit TLS 1.3 und eine vollstĂ€ndige UnterstĂŒtzung der NaCl API (Networking and Cryptography library), wie Curve25519, Ed25519, AES-GCM, Chacha20, Poly1305, SHA-2, SHA-3, HMAC und HKDF. In Bezug auf die Leistung liegt die HACL*-Bibliothek nahe an OpenSSL, bietet jedoch im Gegensatz zu letzterem zusĂ€tzliche Sicherheits- und ZuverlĂ€ssigkeitsgarantien.

Der HACL*-Code ist in einer Teilmenge der funktionalen Sprache F* geschrieben, die ein System abhĂ€ngiger Typen und Spezifikationen bietet, das es ermöglicht, prĂ€zise Spezifikationen (mathematische Modelle) zu definieren und das Fehlen von Fehlern in der Implementierung durch SMT-Formeln und unterstĂŒtzende Nachweiswerkzeuge zu garantieren. Der Referenzcode in F* wird mithilfe des Compilers KaRaMeL in C-Code ĂŒbersetzt und steht zur Integration in andere Projekte zur VerfĂŒgung.

Die DurchfĂŒhrung der Verifizierung umfasst die Festlegung detaillierter Spezifikationen, die alle Verhaltensvarianten des Programms beschreiben, sowie die Erstellung eines mathematischen Nachweises, dass der geschriebene Code vollstĂ€ndig mit den erstellten Spezifikationen ĂŒbereinstimmt. Die Verifizierung garantiert, dass das Programm nur so ausgefĂŒhrt wird, wie es die Entwickler beabsichtigt haben, und dass bestimmte Klassen von Fehlern, wie PufferĂŒberlauf, Dereferenzierung von Zeigern, Zugriff auf bereits freigegebene Speicherbereiche oder doppelte Freigabe von Speicherblöcken, nicht auftreten. WĂ€hrend des Kompilierungsprozesses wird eine strenge ÜberprĂŒfung von Typen und Werten sichergestellt – eine Komponente wird niemals einer anderen Komponente Parameter ĂŒbergeben, die nicht der Spezifikation entsprechen, und erhĂ€lt keinen Zugriff auf die internen ZustĂ€nde anderer Komponenten.

Der Prozess der Migration zu verifiziertem Code dauerte zweieinhalb Jahre und erforderte Anpassungen der HACL*-Bibliothek, deren FunktionalitĂ€t durch die erforderlichen Funktionen fĂŒr den nahtlosen Austausch der bestehenden hashlib-FunktionalitĂ€t erweitert wurde. Beispielsweise wurde in HACL* die UnterstĂŒtzung fĂŒr den Stream-Modus von HMAC hinzugefĂŒgt, zusĂ€tzliche Betriebsmodi fĂŒr die Blake2-Algorithmen bereitgestellt, eine neue API fĂŒr SHA3 entwickelt, die alle Varianten der Keccak-Familie abdeckt, notwendige Mittel zur Fehlerbenachrichtigung (z. B. bei Speicherproblemen) bereitgestellt und Skripte zur Automatisierung der Übertragung neuer Versionen von HACL* in das Python-Repository entwickelt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4