Sichere Hash-Algorithmen
Konzepte
Hashfunktionen , SHA , DSA
Hauptstandards
SHA-0 , SHA-1 , SHA-2 , SHA-3

SHA-2 ( Secure Hash Algorithm 2 ) ist eine Reihe kryptografischer Hashfunktionen, die von der National Security Agency (NSA) der Vereinigten Staaten entwickelt und erstmals im Jahr 2001 veröffentlicht wurden. [ 3 ] [ 4 ] Sie werden mithilfe der Merkle-Damgård-Konstruktion aus einer Einweg-Kompressionsfunktion erstellt , die ihrerseits mithilfe der Davies-Meyer-Struktur aus einem spezialisierten Blockchiffre konstruiert wurde.

SHA-2 beinhaltet wesentliche Änderungen gegenüber seinem Vorgänger SHA-1 . Die SHA-2-Familie besteht aus sechs Hashfunktionen mit 224, 256, 384 oder 512 Bit langen Hashwerten: [ 5 ] SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 und SHA-512/256 . SHA-256 und SHA-512 sind Hashfunktionen, deren Hashwerte aus acht 32-Bit- bzw. 64-Bit-Wörtern bestehen. Sie verwenden unterschiedliche Verschiebungsbeträge und additive Konstanten, ihre Strukturen sind ansonsten jedoch nahezu identisch und unterscheiden sich lediglich in der Anzahl der Runden. SHA-224 und SHA-384 sind verkürzte Versionen von SHA-256 bzw. SHA-512, die mit unterschiedlichen Startwerten berechnet werden. SHA-512/224 und SHA-512/256 sind ebenfalls verkürzte Versionen von SHA-512, aber die Anfangswerte werden mit der in Federal Information Processing Standards (FIPS) PUB 180-4 beschriebenen Methode generiert.

SHA-2 wurde erstmals vom National Institute of Standards and Technology (NIST) als US-Bundesstandard veröffentlicht. Die SHA-2-Algorithmenfamilie ist in den USA patentiert [ 6 ]. Die Vereinigten Staaten haben das Patent unter einer lizenzgebührenfreien Lizenz freigegeben [ 5 ] .

Stand 2011 durchbrechen die besten öffentlich bekannten Angriffe die Preimage-Resistenz für 52 von 64 Runden von SHA-256 bzw. 57 von 80 Runden von SHA-512 und die Kollisionsresistenz für 46 von 64 Runden von SHA-256. [ 1 ] [ 2 ]

Hash-Standard

Eine Iteration einer SHA-2-Komprimierungsfunktion. Die blauen Komponenten führen folgende Operationen aus: Die bitweise Rotation verwendet für SHA-512 unterschiedliche Konstanten. Die angegebenen Zahlen gelten für SHA-256. Die rote Komponente stellt die Addition modulo 2 <sup>32</sup> für SHA-256 bzw. 2 <sup>64</sup> für SHA-512 dar.                    

Mit der Veröffentlichung von FIPS PUB 180-2 fügte das NIST drei weitere Hashfunktionen zur SHA-Familie hinzu. Die Algorithmen werden zusammenfassend als SHA-2 bezeichnet und nach ihrer Digest-Länge (in Bit) benannt: SHA-256, SHA-384 und SHA-512.

Die Algorithmen wurden erstmals 2001 im Entwurf FIPS PUB 180-2 veröffentlicht, zu dem auch öffentliche Stellungnahmen und Kommentare entgegengenommen wurden. Im August 2002 wurde FIPS PUB 180-2 zum neuen Secure Hash Standard und ersetzte damit FIPS PUB 180-1, das im April 1995 veröffentlicht worden war. Der aktualisierte Standard enthielt den ursprünglichen SHA-1-Algorithmus mit einer aktualisierten technischen Notation, die mit derjenigen der SHA-2-Familie übereinstimmte. [ 4 ]

Im Februar 2004 wurde eine Änderungsmitteilung für FIPS PUB 180-2 veröffentlicht, die eine zusätzliche Variante, SHA-224, spezifizierte, die auf die Schlüssellänge von Triple DES mit zwei Schlüsseln abgestimmt war . [ 7 ] Im Oktober 2008 wurde der Standard in FIPS PUB 180-3 aktualisiert. Dabei wurde SHA-224 aus der Änderungsmitteilung übernommen, ansonsten jedoch keine grundlegenden Änderungen vorgenommen. Hauptgrund für die Aktualisierung war die Auslagerung von Sicherheitsinformationen zu den Hash-Algorithmen und Empfehlungen zu deren Verwendung in die Special Publications 800-107 und 800-57. [ 8 ] [ 9 ] [ 10 ] Detaillierte Testdaten und Beispiel-Message-Digests wurden ebenfalls aus dem Standard entfernt und in separaten Dokumenten bereitgestellt. [ 11 ]

Im Januar 2011 veröffentlichte das NIST SP800-131A, in dem die damals für die Nutzung durch die US-Bundesregierung zulässige Mindestsicherheit von 80 Bit (SHA-1) auf 112 Bit (SHA-2) angehoben wurde. Diese 112 Bit sollten ab 2014 sowohl die Mindestanforderung als auch ab dem Veröffentlichungsdatum 2011 die empfohlene Sicherheitsstufe darstellen. [ 12 ]

Im März 2012 wurde der Standard in FIPS PUB 180-4 aktualisiert. Dabei wurden die Hash-Funktionen SHA-512/224 und SHA-512/256 hinzugefügt und ein Verfahren zur Generierung von Initialwerten für verkürzte Versionen von SHA-512 beschrieben. Außerdem wurde die Beschränkung für das Auffüllen der Eingabedaten vor der Hash-Berechnung aufgehoben. Dadurch können Hash-Daten gleichzeitig mit der Inhaltsgenerierung, beispielsweise einem Echtzeit-Video- oder Audio-Feed, berechnet werden. Das Auffüllen des letzten Datenblocks muss weiterhin vor der Hash-Ausgabe erfolgen. [ 13 ]

Im Juli 2012 überarbeitete das NIST SP800-57, eine Richtlinie für das kryptografische Schlüsselmanagement. Die Veröffentlichung untersagte die Erstellung digitaler Signaturen mit einer Hash-Sicherheit unter 112 Bit nach 2013. Die vorherige Überarbeitung aus dem Jahr 2007 hatte als Stichtag das Jahr 2010 festgelegt. [ 10 ] Im August 2012 überarbeitete das NIST SP800-107 in gleicher Weise. [ 9 ]

Im März 2023 kündigte das NIST seine Entscheidung an, FIPS 180-4 zu überarbeiten. [ 14 ] FIPS 180-5 wird die SHA-1-Spezifikation entfernen, Leitlinien aus SP 800-107 hinzufügen und redaktionelle Aktualisierungen enthalten.

Im Rahmen des NIST-Wettbewerbs für Hashfunktionen wurde 2012 eine neue Hashfunktion, SHA-3 , ausgewählt. [ 15 ] Der SHA-3-Algorithmus ist nicht von SHA-2 abgeleitet.

Anwendungen

Die SHA-2-Hashfunktion ist in einigen weit verbreiteten Sicherheitsanwendungen und -protokollen implementiert, darunter TLS und SSL , PGP , SSH , S/MIME und IPsec . Der hohe Rechenaufwand von SHA-2-Algorithmen hat zur Entwicklung effizienterer Lösungen geführt, beispielsweise solcher, die auf anwendungsspezifischen integrierten Schaltungen (ASICs) basieren. [ 16 ]

SHA-256 wird zur Authentifizierung von Debian -Softwarepaketen [ 17 ] und im DKIM- Standard für die Nachrichtensignatur verwendet ; SHA-512 ist Bestandteil eines Systems zur Authentifizierung von Archivvideos des Internationalen Strafgerichtshofs für den Völkermord in Ruanda [ 18 ] . SHA-256 und SHA-512 werden in DNSSEC verwendet [ 19 ] . Linux-Distributionen verwenden üblicherweise 512-Bit-SHA-2 für sicheres Passwort-Hashing [ 20 ] [ 21 ] .

Mehrere Kryptowährungen , darunter Bitcoin , verwenden SHA-256 zur Verifizierung von Transaktionen und zur Berechnung des Proof-of-Work [ 22 ] oder des Proof-of-Stake [ 23 ] . Der Aufstieg von ASIC- SHA-2-Beschleunigerchips hat zur Verwendung von scrypt -basierten Proof-of-Work-Verfahren geführt.

Sowohl in 4G- als auch in 5G-Mobilfunknetzen wird HMAC-SHA-256 als Schlüsselerzeugungsfunktion (Key Derivation Function, KDF) zur Generierung kryptografischer Schlüssel verwendet, die für die Sicherung der Kommunikation unerlässlich sind. Dieser Prozess ist in den technischen Spezifikationen TS 33.401 [ 24 ] und TS 33.501 [ 25 ] des 3rd Generation Partnership Project (3GPP) definiert , welche die Sicherheitsarchitektur und -verfahren für diese Netze beschreiben.

SHA-1, SHA-2 und SHA-3 sind die in den USA gesetzlich vorgeschriebenen sicheren Hash-Algorithmen für bestimmte Regierungsanwendungen, einschließlich der Verwendung innerhalb anderer kryptografischer Algorithmen und Protokolle, zum Schutz sensibler, nicht klassifizierter Informationen. FIPS PUB 180-1 empfahl auch die Einführung und Verwendung von SHA-1 durch private und kommerzielle Organisationen. SHA-1 wird für die meisten staatlichen Anwendungen nicht mehr verwendet. Das US-amerikanische National Institute of Standards and Technology (NIST) erklärt: „Das NIST empfiehlt Bundesbehörden, so schnell wie möglich von SHA-1 auf SHA-2 oder SHA-3 umzusteigen.“ [ 26 ] Die NIST-Richtlinie, dass US-Regierungsbehörden die Verwendung von SHA-1 nach 2010 einstellen sollten, aber nicht explizit dazu verpflichteten [ 27 ], sollte die Migration von SHA-1 beschleunigen.

Die SHA-2-Funktionen wurden trotz höherer Sicherheit als SHA-1 anfangs nicht schnell übernommen. Gründe hierfür könnten die fehlende Unterstützung von SHA-2 auf Systemen mit Windows XP SP2 oder älter [ 28 ] sowie die fehlende Dringlichkeit aufgrund der noch nicht entdeckten SHA-1-Kollisionen gewesen sein. Das Google Chrome- Team kündigte an, die Akzeptanz von SHA-1-abhängigen TLS-Zertifikaten im Browser zwischen Ende 2014 und Anfang 2015 schrittweise einzustellen. [ 29 ] [ 30 ] [ 31 ] Auch Microsoft gab bekannt [ 32 ] , dass Internet Explorer und Edge [Legacy] ab Februar 2017 keine öffentlich verfügbaren, mit SHA-1 signierten TLS-Zertifikate mehr akzeptieren würden. Mozilla deaktivierte SHA-1 in Firefox Anfang Januar 2016, musste es jedoch aufgrund von Problemen mit webbasierten Benutzeroberflächen einiger Routermodelle und Sicherheitsgeräte vorübergehend per Update wieder aktivieren . [ 33 ]

Kryptoanalyse und Validierung

Bei einer Hashfunktion, deren Message Digest L Bits enthält , lässt sich eine Nachricht mit einem gegebenen Message Digest stets mit einer Brute-Force- Suche in 2<sup> L</sup> Auswertungen finden. Dies wird als Preimage-Angriff bezeichnet und ist je nach L und der jeweiligen Rechenumgebung unter Umständen praktikabel . Das zweite Kriterium, das Finden zweier verschiedener Nachrichten mit demselben Message Digest ( Kollision ), erfordert im Durchschnitt nur 2<sup> L</sup> /2 Auswertungen mittels eines Birthday-Angriffs .

Anwendungen, die kryptografische Hashes verwenden, wie beispielsweise die Passwortspeicherung, sind von Kollisionsangriffen nur minimal betroffen . Um ein gültiges Passwort für ein bestimmtes Konto zu erstellen, ist ein Preimage-Angriff sowie der Zugriff auf den Hash des ursprünglichen Passworts (typischerweise in der Datei shadow) erforderlich, was unter Umständen trivial sein kann. Die Entschlüsselung von Passwörtern (z. B. um ein Passwort für ein anderes Benutzerkonto zu erhalten) wird durch diese Angriffe nicht ermöglicht. (Allerdings kann selbst ein sicherer Passwort-Hash Brute-Force-Angriffe auf schwache Passwörter nicht verhindern .)

Im Falle der Dokumentensignatur könnte ein Angreifer nicht einfach eine Signatur eines bestehenden Dokuments fälschen – er müsste zwei Dokumente erstellen, eines harmlos und eines schädlich, und den Inhaber des privaten Schlüssels dazu bringen, das harmlose Dokument zu signieren. Es gibt praktische Umstände, unter denen dies möglich ist; bis Ende 2008 war es möglich, gefälschte SSL- Zertifikate mithilfe einer MD5- Kollision zu erstellen, die von weit verbreiteten Webbrowsern akzeptiert wurden. [ 34 ]

Das gestiegene Interesse an kryptografischer Hash-Analyse während des SHA-3-Wettbewerbs führte zu mehreren neuen Angriffen auf die SHA-2-Familie, von denen die wichtigsten in der folgenden Tabelle aufgeführt sind. Nur die Kollisionsangriffe sind von praktischer Komplexität; keiner der Angriffe erstreckt sich auf die vollständige Runden-Hashfunktion.

Auf der FSE 2012 präsentierten Forscher von Sony eine Arbeit, in der sie vorschlugen, Pseudo-Kollisionsangriffe auf 52 Runden bei SHA-256 und 57 Runden bei SHA-512 zu erweitern, indem sie auf dem Biclique -Pseudo-Preimage-Angriff aufbauten. [ 35 ]

Veröffentlicht in Jahr Angriffsmethode Angriff Variante Runden Komplexität
Neue Kollisionsangriffe gegen bis zu 24-stufige SHA-2 [ 36 ] [ 37 ]2008DifferentialKollisionSHA-25624/642 15,5
SHA-51224/802 22,5
Vorbilder für schrittreduziertes SHA-2 [ 38 ]2009Treffpunkt in der MitteUrbildSHA-25642/642 251,7
43/642 254,9
SHA-51242/802 502.3
46/802 511,5
Fortgeschrittene Meet-in-the-Middle-Preimage-Angriffe [ 39 ]2010Treffpunkt in der MitteUrbildSHA-25642/642 248,4
SHA-51242/802 494,6
Differenzieller Angriff höherer Ordnung auf reduziertes SHA-256 [ 2 ]2011DifferentialPseudokollisionSHA-25646/642 178
33/642 46
Bicliquen für Präbilder: Angriffe auf Skein-512 und die SHA-2-Familie [ 1 ]2011FahrradUrbildSHA-25645/642 255,5
SHA-51250/802 511,5
Pseudo-UrbildSHA-25652/642 255
SHA-51257/802 511
Verbesserung lokaler Kollisionen: Neue Angriffe auf reduziertes SHA-256 [ 40 ]2013DifferentialKollisionSHA-25631/642 65,5
PseudokollisionSHA-25638/642 37
Verzweigungsheuristiken in der differentiellen Kollisionssuche mit Anwendungen auf SHA-512 [ 41 ]2014Heuristische DifferenzialPseudokollisionSHA-51238/802 40,5
Analyse von SHA-512/224 und SHA-512/256 [ 42 ]2016DifferentialKollisionSHA-25628/64praktisch
SHA-51227/80praktisch
PseudokollisionSHA-51239/80praktisch
Neue Rekorde bei Kollisionsangriffen auf SHA-2 [ 43 ]2024DifferentialKollisionSHA-25631/642 49,8
SHA-51231/802 115,6
PseudokollisionSHA-25639/64praktisch

Offizielle Bestätigung

Implementierungen aller FIPS-konformen Sicherheitsfunktionen können offiziell über das CMVP-Programm validiert werden , das vom National Institute of Standards and Technology (NIST) und dem Communications Security Establishment (CSE) gemeinsam betrieben wird. Für eine informelle Überprüfung steht auf der NIST-Website ein Paket zur Generierung einer großen Anzahl von Testvektoren zum Download bereit; die daraus resultierende Überprüfung ersetzt jedoch nicht die formale CMVP-Validierung, die für bestimmte Anwendungen gesetzlich vorgeschrieben ist [ 44 ] .

Stand Dezember 2013 existieren über 1300 validierte Implementierungen von SHA-256 und über 900 von SHA-512, von denen nur 5 in der Lage sind, Nachrichten mit einer Länge in Bit, die kein Vielfaches von acht ist, zu verarbeiten und dabei beide Varianten zu unterstützen. [ 45 ]

Testvektoren

Hashwerte einer leeren Zeichenkette (d. h. eines Eingabetextes der Länge Null).

SHA224("") 0x d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f SHA256("") 0x e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 SHA384("") 0x 38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b SHA512("") 0x cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce 47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e SHA512/224("") 0x 6ed0dd02806fa89e25de060c19d3ac86cabb87d6a0ddd05c333b84f4 SHA512/256("") 0x c672b8d1ef56ed28ab87c3622c5114069bdd3ad7b8f9737498d0c01ecef0967a 

Selbst eine kleine Änderung der Nachricht führt (mit überwältigender Wahrscheinlichkeit) aufgrund des Lawineneffekts zu einem anderen Hashwert . Beispielsweise verändert das Hinzufügen eines Punktes am Ende des folgenden Satzes etwa die Hälfte (111 von 224) der Bits im Hashwert, was der zufälligen Erzeugung eines neuen Hashwerts entspricht:

SHA224(" Der schnelle braune Fuchs springt über den faulen Hund ") 0x 730e109bd7a8a32b1cb9d9a09aa2325d2430587ddbc0c38bad911525 SHA224(" Der schnelle braune Fuchs springt über den faulen HundDie") 0x 619cba8e8e05826e9b8c519c0a5c68f4fb653e8a3d8aa04bb2c8cd4c 

Pseudocode

Im Folgenden finden Sie den Pseudocode für den SHA-256-Algorithmus. Beachten Sie die deutlich stärkere Vermischung der Bits innerhalb der w[16..63]Wörter im Vergleich zu SHA-1.

Anmerkung 1: Alle Variablen sind 32-Bit-Ganzzahlen ohne Vorzeichen, und die Addition wird modulo 2<sup> 32</sup> berechnet . Anmerkung 2: Für jede Runde gibt es eine Rundenkonstante k[i] und einen Eintrag im Nachrichtenplan-Array w[i], 0 ≤ i ≤ 63. Anmerkung 3: Die Kompressionsfunktion verwendet 8 Arbeitsvariablen, a bis h. Anmerkung 4: Die Big-Endian -Konvention wird bei der Darstellung der Konstanten in diesem Pseudocode und beim Parsen von Nachrichtenblockdaten von Bytes in Wörter verwendet . Beispielsweise ist das erste Wort der Eingabenachricht „abc“ nach dem Padding 0x61626380.Initialisiere Hashwerte: (die ersten 32 Bits der Nachkommastellen der Quadratwurzeln der ersten 8 Primzahlen 2..19): h0 := 0x6a09e667 h1 := 0xbb67ae85 h2 := 0x3c6ef372 h3 := 0xa54ff53a h4 := 0x510e527f h5 := 0x9b05688c h6 := 0x1f83d9ab h7 := 0x5be0cd19 Initialisiere das Array der Rundenkonstanten: (die ersten 32 Bits der Nachkommastellen der Kubikwurzeln der ersten 64 Primzahlen 2..311): k[0..63] := 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 Vorverarbeitung (Auffüllung): Beginnen wir mit der ursprünglichen Nachricht der Länge L Bits Füge ein einzelnes '1'-Bit an Füge K '0'-Bits hinzu, wobei K die kleinste Zahl >= 0 ist, sodass (L + 1 + K + 64) ein Vielfaches von 512 ist. Füge L als 64-Bit-Big-Endian-Ganzzahl hinzu, sodass die gesamte nachbearbeitete Länge ein Vielfaches von 512 Bit ist. so dass die Bits in der Nachricht wie folgt aufgebaut sind: ⟨Originalnachricht der Länge L⟩ 1 ⟨K Nullen⟩ ⟨L als 64-Bit-Ganzzahl⟩ , (die Anzahl der Bits ist ein Vielfaches von 512) Verarbeite die Nachricht in aufeinanderfolgenden 512-Bit-Blöcken: Nachricht in 512-Bit-Blöcke aufteilen für jeden Abschnitt Erstelle ein 64-Einträge umfassendes Nachrichtenplanungs-Array w[0..63] aus 32-Bit-Wörtern. (Die Anfangswerte in w[0..63] spielen keine Rolle, daher werden sie in vielen Implementierungen hier auf Null gesetzt.) Kopiere den Chunk in die ersten 16 Wörter w[0..15] des Nachrichtenplan-Arrays. Erweitere die ersten 16 Wörter zu den verbleibenden 48 Wörtern w[16..63] des Nachrichtenplan-Arrays: für i von 16 bis 63 s0 := (w[i-15] rightrotate 7) xor (w[i-15] rightrotate 18) xor (w[i-15] rightshift 3) s1 := (w[i-2] rightrotate 17) xor (w[i-2] rightrotate 19) xor (w[i-2] rightshift 10) w[i] := w[i-16] + s0 + w[i-7] + s1 Initialisiere die Arbeitsvariablen mit dem aktuellen Hashwert: a := h0 b := h1 c := h2 d := h3 e := h4 f := h5 g := h6 h := h7 Hauptschleife der Kompressionsfunktion: für i von 0 bis 63 S1 := (e rechtsrotiert 6) xor (e rechtsrotiert 11) xor (e rechtsrotiert 25) ch := (e und f) xor (( nicht e) und g) temp1 := h + S1 + ch + k[i] + w[i] S0 := (a rechtsrotiert 2) xor (a rechtsrotiert 13) xor (a rechtsrotiert 22) maj := (a und b) xor (a und c) xor (b und c) temp2 := S0 + maj h := g g := f f := e e := d + temp1 d := c c := b b := a a := temp1 + temp2 Füge den komprimierten Datenblock zum aktuellen Hashwert hinzu: h0 := h0 + a h1 := h1 + b h2 := h2 + c h3 := h3 + d h4 := h4 + e h5 := h5 + f h6 := h6 + g h7 := h7 + h Erzeuge den endgültigen Hashwert (Big-Endian): digest := hash := h0 append h1 append h2 append h3 append h4 append h5 append h6 append h7 

Die Berechnung der chund maj-Werte kann auf die gleiche Weise optimiert werden wie für SHA-1 beschrieben .

SHA-224 ist identisch mit SHA-256, mit folgender Ausnahme:

  • h0Die anfänglichen Hashwerte h7sind unterschiedlich, und
  • Die Ausgabe wird durch Weglassen von . erstellt h7.
SHA-224-Anfangs-Hashwerte (im Big-Endian-Format): (Die zweiten 32 Bits der Nachkommastellen der Quadratwurzeln der 9. bis 16. Primzahl 23..53) h[0..7] := 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 

SHA-512 ist strukturell identisch mit SHA-256, aber:

  • Die Nachricht wird in 1024-Bit-Blöcke zerlegt.
  • Die anfänglichen Hashwerte und Rundenkonstanten werden auf 64 Bit erweitert.
  • Es sind 80 Runden statt 64.
  • Das Nachrichtenplan-Array w enthält 80 64-Bit-Wörter anstelle von 64 32-Bit-Wörtern.
  • Um das Nachrichtenplan-Array w zu erweitern, verläuft die Schleife von 16 bis 79 anstatt von 16 bis 63.
  • Die Rundungskonstanten basieren auf den ersten 80 Primzahlen 2..409.
  • Die für die Berechnungen verwendete Wortlänge beträgt 64 Bit.
  • Die angehängte Länge der Nachricht (vor der Vorverarbeitung) in Bit ist eine 128-Bit-Big-Endian-Ganzzahl, und
  • Die verwendeten Verschiebungs- und Rotationsbeträge sind unterschiedlich.
SHA-512-Anfangshashwerte (in Big-Endian): h[0..7] := 0x6a09e667f3bcc908, 0xbb67ae8584caa73b, 0x3c6ef372fe94f82b, 0xa54ff53a5f1d36f1, 0x510e527fade682d1, 0x9b05688c2b3e6c1f, ​​0x1f83d9abfb41bd6b, 0x5be0cd19137e2179 SHA-512-Rundenkonstanten: k[0..79] := 0x428a2f98d728ae22, 0x7137449123ef65cd, 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc, 0x3956c25bf348b538, 0x59f111f1b605d019, 0x923f82a4af194f9b, 0xab1c5ed5da6d8118, 0xd807aa98a3030242, 0x12835b0145706fbe, 0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2, 0x72be5d74f27b896f, 0x80deb1fe3b1696b1, 0x9bdc06a725c71235, 0xc19bf174cf692694, 0xe49b69c19ef14ad2, 0xefbe4786384f25e3, 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65, 0x2de92c6f592b0275, 0x4a7484aa6ea6e483, 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5, 0x983e5152ee66dfab, 0xa831c66d2db43210, 0xb00327c898fb213f, 0xbf597fc7beef0ee4, 0xc6e00bf33da88fc2, 0xd5a79147930aa725, 0x06ca6351e003826f, 0x142929670a0e6e70, 0x27b70a8546d22ffc, 0x2e1b21385c26c926, 0x4d2c6dfc5ac42aed, 0x53380d139d95b3df, 0x650a73548baf63de, 0x766a0abb3c77b2a8, 0x81c2c92e47edaee6, 0x92722c851482353b, 0xa2bfe8a14cf10364, 0xa81a664bbc423001, 0xc24b8b70d0f89791, 0xc76c51a30654be30, 0xd192e819d6ef5218, 0xd69906245565a910, 0xf40e35855771202a, 0x106aa07032bbd1b8, 0x19a4c116b8d2d0c8, 0x1e376c085141ab53, 0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8, 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb, 0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3, 0x748f82ee5defb2fc, 0x78a5636f43172f60, 0x84c87814a1f0ab72, 0x8cc702081a6439ec, 0x90befffa23631e28, 0xa4506cebde82bde9, 0xbef9a3f7b2c67915, 0xc67178f2e372532b, 0xca273eceea26619c, 0xd186b8c721c0c207, 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178, 0x06f067aa72176fba, 0x0a637dc5a2c898a6, 0x113f9804bef90dae, 0x1b710b35131c471b, 0x28db77f523047d84, 0x32caab7b40c72493, 0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c, 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec, 0x6c44198c4a475817 SHA-512 Summe & Sigma: S0 := (a rechtsrotiert 28) xor (a rechtsrotiert 34) xor (a rechtsrotiert 39) S1 := (e rechtsrotiert 14) xor (e rechtsrotiert 18) xor (e rechtsrotiert 41)  s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7) s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)

SHA-384 ist identisch mit SHA-512, mit folgender Ausnahme:

  • h0Die anfänglichen Hashwerte h7sind unterschiedlich (sie stammen aus den Primzahlen 9 bis 16), und
  • Die Ausgabe wird durch Weglassen von h6und erstellt h7.
SHA-384-Anfangshashwerte (in Big-Endian): h[0..7] := 0xcbbb9d5dc1059ed8, 0x629a292a367cd507, 0x9159015a3070dd17, 0x152fecd8f70e5939, 0x67332667ffc00b31, 0x8eb44a8768581511, 0xdb0c2e0d64f98fa7, 0x47b5481dbefa4fa4

SHA-512/t ist bis auf folgende Ausnahme identisch mit SHA-512:

  • Die anfänglichen Hashwerte werden durch die SHA-512/t IV-Generierungsfunktionh0 gegeben .h7
  • Die Ausgabe wird durch Abschneiden der Verkettung von h0bis h7bei t Bits erzeugt.
  • t gleich 384 ist nicht zulässig, stattdessen muss SHA-384 wie angegeben verwendet werden.
  • Die t- Werte 224 und 256 werden ausdrücklich als positiv hervorgehoben.
SHA-512/224 Initial-Hashwerte (in Big-Endian): h[0..7] := 0x8c3d37c819544da2, 0x73e1996689dcd4d6, 0x1dfab7ae32ff9c82, 0x679dd514582f9fcf, 0x0f6d2b697bd44da8, 0x77e36f7304C48942, 0x3f9d85a86a1d36C8, 0x1112e6ad91d692a1 SHA-512/256 Initial-Hashwerte (in Big-Endian): h[0..7] := 0x22312194fc2bf72c, 0x9f555fa3c84c64c2, 0x2393b86b6f53b151, 0x963877195940eabd, 0x96283ee2a88effe3, 0xbe5e1e2553863992, 0x2b0199fc2c85b8aa, 0x0eb72ddC81c52ca2

Die SHA-512/t-IV-Generierungsfunktion berechnet einen modifizierten SHA-512-Algorithmus für die ASCII-Zeichenkette „SHA-512/ t “, wobei t durch die Dezimaldarstellung ersetzt wird . Der modifizierte SHA-512-Algorithmush0 entspricht dem ursprünglichen SHA-512-Algorithmus, mit der Ausnahme, dass seine Anfangswerte jeweils mit der Hexadezimalkonstante XOR-verknüpfth7 wurden . 0xa5a5a5a5a5a5a5a5

Eine Beispiel-C-Implementierung für die SHA-2-Familie von Hashfunktionen findet sich in RFC  6234 .

Vergleich der SHA-Funktionen

In der folgenden Tabelle bezeichnet „ interner Zustand “ die „interne Hash-Summe“ nach jeder Komprimierung eines Datenblocks.

Vergleich der SHA-Funktionen
Algorithmus und Variante Ausgabegröße (Bit) Interne Zustandsgröße (Bits) Blockgröße (Bits) Runden Betrieb Sicherheit (Bits) Leistung auf Skylake (Median cpb ) [ 46 ]Erstveröffentlichung
Lange Nachrichten 8 Bytes
MD5 (als Referenz)128128 (4 × 32)5124 (16 Operationen pro Runde)Und, Xor, Or, Rot, Add (mod 2 32 )≤ 18 (Kollisionen festgestellt) [ 47 ]4,9955,001992
SHA-0160160 (5 × 32)51280Und, Xor, Or, Rot, Add (mod 2 32 )< 34 (Kollisionen festgestellt)≈ SHA-1≈ SHA-11993
SHA-1< 63 (Kollisionen gefunden) [ 48 ]3,4752,001995
SHA-2SHA-224 SHA-256224 256256 (8 × 32)51264Und, Xor, Or, Rot, Shr, Add (mod 2 32 )112 1287,62 7,6384,50 85,252004 2001
SHA-384384512 (8 × 64)102480Und, Xor, Or, Rot, Shr, Add (mod 2 64 )1925.12135,752001
SHA-5125122565.06135,502001
SHA-512/224 SHA-512/256224 256112 128≈ SHA-384≈ SHA-3842012
SHA-3SHA3-224 SHA3-256 SHA3-384 SHA3-512224 256 384 5121600 (5 × 5 × 64)1152 1088 832 57624 [ 49 ]Und, Xor, Rot, Not112 128 192 2568,12 8,59 11,06 15,88154,25 155,50 164,00 164,002015
SHAKE128 SHAKE256d (willkürlich) d (willkürlich)1344 1088min( d /2, 128) min( d /2, 256)7,08 8,59155,25 155,50

In der Spalte „Bitoperationen“ steht „Rot“ für „Rotation ohne Übertrag“ und „Shr“ für „logische Rechtsverschiebung “ . Alle diese Algorithmen verwenden modulare Addition in irgendeiner Form, außer SHA-3.

Detailliertere Leistungsmessungen auf modernen Prozessorarchitekturen sind in der folgenden Tabelle aufgeführt.

CPU-Architektur Frequenz Algorithmus Wortgröße (Bit) Zyklen/Byte x86MiB/s x86 Zyklen/Byte x86-64MiB/s x86-64
Intel Ivy Bridge3,5 GHzSHA-2563216,8019913.05256
SHA-5126443,66768,48394
AMD Piledriver APU3,8 GHzSHA-2563222,8715818.47196
SHA-5126488,364112.43292

Die mit „ x86 “ gekennzeichneten Leistungswerte wurden mit 32-Bit -Code auf 64-Bit- Prozessoren ermittelt , während die Werte unter „ x86-64 “ nativen 64-Bit-Code darstellen. Obwohl SHA-256 für 32-Bit-Berechnungen ausgelegt ist, profitiert es von für 64-Bit-Prozessoren auf der x86-Architektur optimiertem Code. 32-Bit-Implementierungen von SHA-512 sind deutlich langsamer als ihre 64-Bit-Pendants. Varianten beider Algorithmen mit unterschiedlichen Ausgabegrößen weisen eine ähnliche Leistung auf, da die Funktionen zur Nachrichtenexpansion und -komprimierung identisch sind und sich lediglich die initialen Hashwerte und Ausgabegrößen unterscheiden. Die besten Implementierungen von MD5 und SHA-1 benötigen auf modernen Prozessoren zwischen 4,5 und 6 Zyklen pro Byte.

Die Tests wurden von der University of Illinois at Chicago auf ihrem Hydra8-System mit einem Intel Xeon E3-1275 V2 (3,5  GHz ) und auf ihrem Hydra9-System mit einer AMD A10-5800K APU (3,8 GHz) durchgeführt. [ 50 ] Die oben genannten Werte für Zyklen pro Byte (CB/s) entsprechen der mittleren Leistung eines Algorithmus, der eine 4.096 Byte lange Nachricht mit der kryptografischen Benchmark-Software SUPERCOP verarbeitet. [ 51 ] Die MiB/s-Leistung wurde von der CPU-Taktfrequenz eines einzelnen Kerns hochgerechnet; die tatsächliche Leistung kann aufgrund verschiedener Faktoren variieren.

Implementierungen

Kryptografiebibliotheken, die SHA-2 unterstützen:

Die Hardwarebeschleunigung wird durch die folgenden Prozessorerweiterungen bereitgestellt:

Siehe auch

Referenzen

  1. ^ a b c Khovratovich, Dmitry; Rechberger, Christian & Savelieva, Alexandra (2011). „Bicliques for Preimages: Attacks on Skein-512 and the SHA-2 family“ (PDF) . IACR Cryptology ePrint Archive . 2011 (286). Archiviert (PDF) vom Original am 15.02.2022 . Abgerufen am 15.02.2022 .
  2. ^ a b c Lamberger, Mario & Mendel, Florian (2011). „Higher-Order Differential Attack on Reduced SHA-256“ (PDF) . IACR Cryptology ePrint Archive . 2011 (37). Archiviert (PDF) vom Original am 22.12.2022 . Abgerufen am 15.02.2022 .
  3. ^ Penard, Wouter; van Werkhoven, Tim. „Über die Secure Hash Algorithm-Familie“ (PDF) . staff.science.uu.nl . Archiviert vom Original (PDF) am 30.03.2016.
  4. ^ a b Bekanntmachung im Federal Register 02-21599, Ankündigung der Genehmigung der FIPS-Veröffentlichung 180-2 (Archiviert am 14.03.2022 im Internetarchiv Wayback Machine)
  5. ^ a b „IPR-Details: Die Vereinigten Staaten von Amerika, vertreten durch die allgemeine Lizenzerklärung der National Security Agency“ . IETF Datatracker . 858. Archiviert vom Original am 16.06.2016 . Abgerufen am 17.02.2008 .
  6. ^ US 6829355 , Lilly, Glenn M., „Vorrichtung und Verfahren für kryptografisches Einweg-Hashing“, veröffentlicht am 07.12.2004, zugewiesen an die National Security Agency 
  7. ^ „FIPS 180-2 mit Änderungsmitteilung 1“ (PDF) . csrc.nist.gov . Archiviert (PDF) vom Original am 09.08.2017 . Abgerufen am 15.02.2022 .
  8. ^ Bekanntmachung im Federal Register E8-24743, Ankündigung der Genehmigung der FIPS-Veröffentlichung 180-3
  9. ^ a b Dang, Quynh (24.08.2012). Empfehlung für Anwendungen mit zugelassenen Hash-Algorithmen (Bericht). National Institute of Standards and Technology. Archiviert vom Original am 28.08.2023 . Abgerufen am 28.08.2023 .
  10. ^ a b Barker, Elaine; Barker, William; Burr, William; Polk, W.; Smid, Miles (10.07.2012). Empfehlung für das Schlüsselmanagement, Teil 1: Allgemeines (Revision 3) (Bericht). National Institute of Standards and Technology. Archiviert vom Original am 28.08.2023 . Abgerufen am 28.08.2023 .
  11. ^ „NIST.gov – Computer Security Division – Computer Security Resource Center“ . 29. Dezember 2016. Archiviert vom Original am 9. September 2017. Abgerufen am 15. Februar 2022 .
  12. ^ Barker, Elaine; Roginsky, Allen (13.01.2011). Transitions: Recommendation for Transitioning the Use of Cryptographic Algorithms and Key Lengths (Bericht). National Institute of Standards and Technology. Archiviert vom Original am 28.08.2023 . Abgerufen am 28.08.2023 .
  13. ^ Bekanntmachung im Federal Register 2012-5400, Ankündigung der Genehmigung der FIPS-Veröffentlichung 180-4 .
  14. ^ NIST, Entscheidung zur Überarbeitung von FIPS 180-4, Secure Hash Standard (SHS)
  15. ^ „NIST wählt Gewinner des Wettbewerbs um den sicheren Hash-Algorithmus (SHA-3) aus“ . NIST . 2. Oktober 2012. Archiviert vom Original am 2. April 2015. Abgerufen am 24. Februar 2015 .
  16. ^ Franck, Lucas Daudt; Ginja, Gabriel Augusto; Carmo, João Paulo; Afonso, Jose A.; Luppe, Maximiliam (2024). „Benutzerdefiniertes ASIC-Design für SHA-256 mit Open-Source-Tools“ . Computer . 13 (1): 9. doi : 10.3390/computers13010009 . HDL : 1822/89307 .
  17. ^ „Überprüfung der Authentizität von Debian-Images“ . Archiviert vom Original am 19.02.2024 . Abgerufen am 19.02.2024 .
  18. ^ Markoff, John (27.01.2009). „Ein Werkzeug zur Überprüfung digitaler Datensätze, auch im Wandel der Technologie“ . The New York Times . ISSN 0362-4331 . Archiviert vom Original am 19.09.2023 . Abgerufen am 27.08.2023 . 
  19. ^ Hardaker, Wes (12.08.2022). SHA-1 aus der aktiven Nutzung innerhalb von DNSSEC entfernen (Bericht). Internet Engineering Task Force.
  20. ^ „Sicherheit/Funktionen – Debian Wiki“ . wiki.debian.org . Abgerufen am 13.01.2025 .
  21. ^ „SHA-Hashes – Arch Wiki“ . wiki.archlinux.org . Abgerufen am 13.01.2025 .
  22. ^ „Bitcoin verschwendet keine Energie“ . Überschüssige Bitcoins . Archiviert vom Original am 28.05.2022 . Abgerufen am 20.04.2020 .
  23. ^ „Was ist SHA-256 und wie hängt es mit Bitcoin zusammen? – Mycryptopedia“ . Mycryptopedia . 21.09.2017. Archiviert vom Original am 17.09.2018 . Abgerufen am 17.09.2018 .
  24. ^ 3GPP TS 33.401, Sicherheitsarchitektur und -verfahren für E-UTRAN
  25. ^ 3GPP TS 33.501, Sicherheitsarchitektur und -verfahren für 5G-Systeme
  26. ^ Abteilung für Computersicherheit, Informationstechnologielabor (04.01.2017). „NIST-Richtlinie zu Hashfunktionen – Hashfunktionen | CSRC | CSRC“ . CSRC | NIST . Archiviert vom Original am 28.08.2023 . Abgerufen am 27.08.2023 .
  27. ^ „Secure Hashing“ . NIST . Archiviert vom Original am 25.06.2011 . Abgerufen am 25.11.2010 .
  28. ^ „Übersicht über Windows XP Service Pack 3“ (PDF) . Microsoft Corporation. Archiviert vom Original (PDF) am 30. Mai 2008.
  29. ^ „SHA-1 wird schrittweise abgeschafft“ . Chromium Blog . Archiviert vom Original am 7. August 2023. Abgerufen am 27. August 2023 .
  30. ^ Mill, Eric. "SHAAAAAAAAAAAAA" . SHAAAAAAAAAAAAA.com . Archiviert vom Original am 1. März 2017. Abgerufen am 26. August 2015 .
  31. ^ „Die inoffiziellen FAQ zur Abschaffung von Chrome SHA1“ . Filippo Valsorda . 08.04.2015. Archiviert vom Original am 28.08.2023 . Abgerufen am 27.08.2023 .
  32. ^ „Ein Update zu unserer Roadmap zur Abschaffung von SHA-1 – Microsoft Edge-Entwicklerblog“ . blogs.windows.com . 29. April 2016. Archiviert vom Original am 28. November 2016. Abgerufen am 28. November 2016 .
  33. ^ „Firefox: Mozilla schaltet SHA-1 ab … und direkt wieder an“ . heise.de (auf Deutsch). 08.01.2016. Archiviert vom Original am 28.08.2023 . Abgerufen am 18.01.2025 .
  34. ^ Alexander Sotirov, Marc Stevens, Jacob Appelbaum, Arjen Lenstra, David Molnar, Dag Arne Osvik, Benne de Weger, MD5 heute als schädlich angesehen: Erstellung eines betrügerischen CA-Zertifikats . Archiviert am 23.03.2022 in der Wayback Machine , abgerufen am 29.03.2009.
  35. ^ Ji Li, Takanori Isobe und Kyoji Shibutani, Sony China Research Laboratory und Sony Corporation, Umwandlung eines Meet-in-the-Middle-Preimage-Angriffs in einen Pseudo-Kollisionsangriff: Anwendung auf SHA-2 . Archiviert am 24.02.2022 in der Wayback Machine .
  36. ^ Sanadhya, Somitra Kumar; Sarkar, Palash (2008), Neue Kollisionsangriffe gegen bis zu 24-stufiges SHA-2 , Lecture Notes in Computer Science, Band 5365, Springer-Verlag, S.  91–103 , doi : 10.1007/978-3-540-89754-5_8 , ISBN 978-3-540-89753-8archiviert vom Original am 21.01.2022 , abgerufen am 12.02.2024Die
  37. ^ Sanadhya, Somitra Kumar; Sarkar, Palash (2009). „Eine kombinatorische Analyse aktueller Angriffe auf die Step-Reduced-SHA-2-Familie“ . Cryptography and Communications . 1 (2): 135–173 . doi : 10.1007/s12095-009-0011-5 . Archiviert vom Original am 2. August 2023. Abgerufen am 12. Februar 2024 .
  38. ^ Aoki, Kazumaro; Guo, Jian; Matusiewicz, Krystian; Sasaki, Yu & Wang, Lei (2009). „Preimages for Step-Reduced SHA-2“. Advances in Cryptology – ASIACRYPT 2009. Lecture Notes in Computer Science. Band 5912. Springer Berlin Heidelberg. S.  578–597 . doi : 10.1007/978-3-642-10366-7_34 . ISBN 978-3-642-10366-7ISSN  0302-9743 .​
  39. ^ Guo, Jian; Ling, San; Rechberger, Christian & Wang, Huaxiong (2010). „Advanced Meet-in-the-Middle Preimage Attacks: First Results on Full Tiger, and Improved Results on MD4 and SHA-2“. Advances in Cryptology – ASIACRYPT 2010 (PDF) . Lecture Notes in Computer Science. Band 6477. Springer Berlin Heidelberg. S.  56–75 . doi : 10.1007/978-3-642-17373-8_4 . ISBN 978-3-642-17373-8ISSN  0302-9743 . Archiviert (PDF) vom Original am 03.03.2022 . Abgerufen am 15.02.2022 .
  40. ^ Mendel, Florian; Nad, Tomislav; Schläffer, Martin (2013). „Verbesserung lokaler Kollisionen: Neue Angriffe auf reduziertes SHA-256“. Advances in Cryptology – EUROCRYPT 2013. Lecture Notes in Computer Science. Band 7881. Springer Berlin Heidelberg. S.  262–278 . doi : 10.1007/978-3-642-38348-9_16 . ISBN 978-3-642-38348-9ISSN  0302-9743 . Archiviert vom Original am 06.11.2018 . Abgerufen am 13.12.2014 .
  41. ^ Eichlseder, Maria; Mendel, Florian; und Schläffer, Martin (2014). „Branching Heuristics in Differential Collision Search with Applications to SHA-512“ (PDF) . IACR Cryptology ePrint Archive . 2014 (302). Archiviert (PDF) vom Original am 20.01.2022 . Abgerufen am 15.02.2022 .
  42. ^ Dobraunig, Christoph; Eichlseder, Maria & Mendel, Florian (2016). „Analyse von SHA-512/224 und SHA-512/256“ (PDF) . Internationale Vereinigung für Kryptologische Forschung . Archiviert (PDF) vom Original am 15.07.2017 . Abgerufen am 15.04.2016 .
  43. ^ Li, Yingxin; Liu, Fukang; Wang, Gaoli (2024). „Neue Rekorde bei Kollisionsangriffen auf SHA-2“ . Cryptology ePrint Archive . Archiviert vom Original am 2. März 2024. Abgerufen am 2. März 2024 .
  44. ^ „Secure Hashing – Cryptographic Algorithm Validation Program“ . NIST CSRC . 5. Oktober 2016. Abgerufen am 8. November 2025 .
  45. ^ „SHS-Validierungsliste“ . NIST . 16.06.2017. Archiviert vom Original am 17.06.2017.
  46. ^ "Maßtabelle" . bench.cr.yp.to .
  47. ^ Tao, Xie; Liu, Fanbao; Feng, Dengguo (2013). Schneller Kollisionsangriff auf MD5 (PDF) . Cryptology ePrint Archive (Technischer Bericht). IACR .
  48. ^ Stevens, Marc ; Bursztein, Elie ; Karpman, Pierre; Albertini, Ange; Markov, Yarik. Die erste Kollision für vollständiges SHA-1 (PDF) (Technischer Bericht). Google Research . Archiviert vom Original (PDF) am 7. Februar 2026.
  49. ^ „Die Keccak-Schwammfunktionsfamilie“ . Abgerufen am 27.01.2016 .
  50. ^ SUPERCOP Benchmarks Messungen von Hashfunktionen, indiziert nach Maschine .
  51. ^ „SUPERCOP“ . Archiviert vom Original am 15. Februar 2015. Abgerufen am 24. Februar 2015 .
  52. ^ " Unterstützte SSL/TLS-Verschlüsselungssammlungen " . Archiviert vom Original am 12.05.2019 . Abgerufen am 19.10.2019 .
  53. ^ „ Mbed TLS Changelog , 7. Juli 2007“ . GitHub . Archiviert vom Original am 4. Februar 2019. Abgerufen am 19. Oktober 2019 .
  54. ^ „ARM Cortex-A53 MPCore Prozessor – Technisches Referenzhandbuch Kryptografie-Erweiterung“ . Archiviert vom Original am 1. Juni 2020. Abgerufen am 15. Februar 2022 .
  55. ^ IBM z/Architecture Principles of Operation, Publikationsnummer SA22-7832. Siehe KIMD- und KLMD-Anweisungen in Kapitel 7.

Weiterführende Literatur