Fortgeschrittener Verschlüsselungsstandard - Advanced Encryption Standard

Erweiterter Verschlüsselungsstandard
(Rijndael)
AES (Rijndael) Rundfunktion.png
Visualisierung der AES Rundenfunktion
Allgemein
Designer Vincent Rijmen , Joan Daemen
Erstmals veröffentlicht 1998
Abgeleitet von Quadrat
Nachfolger Anubis , Grand Cru , Kalyna
Zertifizierung AES- Gewinner, CRYPTREC , NESSIE , NSA
Verschlüsselungsdetail
Schlüsselgrößen 128, 192 oder 256 Bit
Blockgrößen 128 Bit
Struktur Substitution-Permutationsnetzwerk
Runden 10, 12 oder 14 (je nach Schlüsselgröße)
Beste öffentliche Kryptoanalyse
Es wurden Angriffe veröffentlicht, die rechnerisch schneller sind als ein vollständiger Brute-Force-Angriff , obwohl keine (Stand 2013) rechnerisch durchführbar ist. Für AES-128 kann der Schlüssel mit einer Rechenkomplexität von 2 126.1 mithilfe des Biclique-Angriffs wiederhergestellt werden . Für Biclique-Angriffe auf AES-192 und AES-256 gelten die Rechenkomplexitäten von 2 189,7 bzw. 2 254,4 . Related-Key-Angriffe können AES-256 und AES-192 mit Komplexitäten von 2 99,5 bzw. 2 176 sowohl in Bezug auf Zeit als auch Daten brechen .

Der Advanced Encryption Standard ( AES ), auch bekannt unter seinem ursprünglichen Namen Rijndael ( niederländische Aussprache: [ˈrɛindaːl] ), ist eine 2001 vom US National Institute of Standards and Technology (NIST) aufgestellte Spezifikation zur Verschlüsselung elektronischer Daten .

AES ist eine Teilmenge der Rijndael- Blockchiffre, die von den beiden belgischen Kryptografen Vincent Rijmen und Joan Daemen entwickelt wurde , die während des AES-Auswahlprozesses einen Vorschlag beim NIST eingereicht haben . Rijndael ist eine Familie von Chiffren mit unterschiedlichen Schlüssel- und Blockgrößen. Für AES hat NIST drei Mitglieder der Rijndael-Familie ausgewählt, jedes mit einer Blockgröße von 128 Bit, aber drei verschiedenen Schlüssellängen: 128, 192 und 256 Bit.

AES wurde von der US-Regierung übernommen . Er ersetzt den 1977 veröffentlichten Data Encryption Standard (DES). Der von AES beschriebene Algorithmus ist ein symmetrischer Schlüsselalgorithmus , d. h. derselbe Schlüssel wird sowohl zum Verschlüsseln als auch zum Entschlüsseln der Daten verwendet.

In den Vereinigten Staaten wurde AES am 26. November 2001 vom NIST als US FIPS PUB 197 (FIPS 197) angekündigt. Diese Ankündigung folgte einem fünfjährigen Standardisierungsprozess, in dem fünfzehn konkurrierende Designs vorgestellt und bewertet wurden, bevor die Rijndael-Chiffre veröffentlicht wurde als am besten geeignet ausgewählt ( weitere Informationen finden Sie unter Advanced Encryption Standard-Prozess ).

AES ist in der Norm ISO / IEC 18033-3 enthalten . AES trat am 26. Mai 2002 nach Genehmigung durch den US -Handelsminister als Standard der US-Bundesregierung in Kraft . AES ist in vielen verschiedenen Verschlüsselungspaketen verfügbar und ist die erste (und einzige) öffentlich zugängliche Verschlüsselung, die von der US-amerikanischen National Security Agency (NSA) für streng geheime Informationen genehmigt wurde, wenn sie in einem von der NSA genehmigten kryptografischen Modul verwendet wird (siehe Sicherheit von AES , unten). .

Endgültige Standards

Der Advanced Encryption Standard (AES) ist in jedem der folgenden Punkte definiert:

  • FIPS PUB 197: Advanced Encryption Standard (AES)
  • ISO/IEC 18033-3: Blockchiffren

Beschreibung der Chiffren

AES basiert auf einem Designprinzip, das als Substitutions-Permutationsnetzwerk bekannt ist , und ist sowohl in Software als auch in Hardware effizient. Im Gegensatz zu seinem Vorgänger DES verwendet AES kein Feistel-Netzwerk . AES ist eine Variante von Rijndael mit einer festen Blockgröße von 128 Bit und einer Schlüsselgröße von 128, 192 oder 256 Bit. Im Gegensatz dazu wird Rijndael per se mit Block- und Schlüsselgrößen spezifiziert, die ein beliebiges Vielfaches von 32 Bit sein können, mit einem Minimum von 128 und einem Maximum von 256 Bit.

AES arbeitet mit einem 4 × 4- Spalten-Major-Order- Array von Bytes, das als Zustand bezeichnet wird . Die meisten AES-Berechnungen werden in einem bestimmten endlichen Körper durchgeführt .

Zum Beispiel werden 16 Bytes als dieses zweidimensionale Array dargestellt:

Die für eine AES-Chiffre verwendete Schlüsselgröße gibt die Anzahl der Transformationsrunden an, die die Eingabe, den Klartext , in die endgültige Ausgabe, den Geheimtext , umwandeln . Die Anzahl der Runden ist wie folgt:

  • 10 Runden für 128-Bit-Schlüssel.
  • 12 Runden für 192-Bit-Schlüssel.
  • 14 Runden für 256-Bit-Schlüssel.

Jede Runde besteht aus mehreren Verarbeitungsschritten, einschließlich einem, der vom Verschlüsselungsschlüssel selbst abhängt. Ein Satz umgekehrter Runden wird angewendet, um Chiffretext unter Verwendung des gleichen Verschlüsselungsschlüssels wieder in den ursprünglichen Klartext umzuwandeln.

High-Level-Beschreibung des Algorithmus

  1. KeyExpansion  – runde Schlüssel werden mithilfe des AES-Schlüsselplans aus dem Chiffrierschlüssel abgeleitet . AES erfordert einen separaten 128-Bit-Rundenschlüsselblock für jede Runde plus einen weiteren.
  2. Anfängliche Rundenschlüssel-Ergänzung:
    1. AddRoundKey  – jedes Byte des Zustands wird mit einem Byte des Rundenschlüssels mit bitweisem xor kombiniert .
  3. 9, 11 oder 13 Runden:
    1. SubBytes  – ein nichtlinearer Substitutionsschritt, bei dem jedes Byte gemäß einer Nachschlagetabelle durch ein anderes ersetzt wird .
    2. ShiftRows  – ein Transpositionsschritt, bei dem die letzten drei Zeilen des Zustands zyklisch um eine bestimmte Anzahl von Schritten verschoben werden.
    3. MixColumns  – eine lineare Mischoperation, die auf den Spalten des Zustands arbeitet und die vier Bytes in jeder Spalte kombiniert.
    4. AddRoundKey
  4. Endrunde (insgesamt 10, 12 oder 14 Runden):
    1. Unterbytes
    2. Zeilen umschalten
    3. AddRoundKey

Der SubBytes- Schritt

Im SubBytes- Schritt wird jedes Byte im Zustand durch seinen Eintrag in einer festen 8-Bit-Nachschlagetabelle S ersetzt ; b ij = S (a ij ) .

Im Schritt SubBytes wird jedes Byte im State- Array durch ein SubByte unter Verwendung einer 8-Bit- Substitutionsbox ersetzt . Beachten Sie, dass das Status- Array vor Runde 0 einfach der Klartext/die Eingabe ist. Diese Operation stellt die Nichtlinearität in der Chiffre bereit . Die verwendete S-Box wird von der multiplikativen Inversen über GF (2 8 ) abgeleitet, von der bekannt ist, dass sie gute Nichtlinearitätseigenschaften hat. Um Angriffe basierend auf einfachen algebraischen Eigenschaften zu vermeiden, wird die S-Box konstruiert, indem die inverse Funktion mit einer invertierbaren affinen Transformation kombiniert wird . Die S-Box wird auch gewählt, um jegliche Fixpunkte zu vermeiden (und ist damit eine Störung ), dh , und auch alle gegenüberliegenden Fixpunkte, dh . Während der Entschlüsselung wird der Schritt InvSubBytes (die Umkehrung von SubBytes ) verwendet, was erfordert, dass zuerst die Umkehrung der affinen Transformation genommen und dann die multiplikative Umkehrung gefunden wird.

Der ShiftRows- Schritt

Im Schritt ShiftRows werden Bytes in jeder Zeile des Zustands zyklisch nach links verschoben. Die Anzahl der Stellen, an denen jedes Byte verschoben wird, unterscheidet sich inkrementell für jede Zeile.

Der Schritt ShiftRows arbeitet mit den Zeilen des Zustands; es verschiebt die Bytes in jeder Zeile zyklisch um einen bestimmten Offset . Bei AES bleibt die erste Zeile unverändert. Jedes Byte der zweiten Zeile wird um eins nach links verschoben. In ähnlicher Weise werden die dritte und vierte Reihe um Versätze von zwei bzw. drei verschoben. Auf diese Weise besteht jede Spalte des Ausgangszustands des ShiftRows- Schritts aus Bytes aus jeder Spalte des Eingangszustands. Die Bedeutung dieses Schrittes besteht darin, zu vermeiden, dass die Spalten unabhängig voneinander verschlüsselt werden, in diesem Fall würde AES in vier unabhängige Blockchiffren degenerieren.

Der MixColumns- Schritt

Im Schritt MixColumns wird jede Spalte des Zustands mit einem festen Polynom multipliziert .

Im Schritt MixColumns werden die vier Bytes jeder Spalte des Zustands mit einer invertierbaren linearen Transformation kombiniert . Die Funktion MixColumns nimmt vier Bytes als Eingabe und gibt vier Bytes aus, wobei jedes Eingabebyte alle vier Ausgabebytes beeinflusst. Zusammen mit ShiftRows , MixColumns bietet Diffusion in der Chiffre.

Während dieser Operation wird jede Spalte mit einer festen Matrix transformiert (Matrix links multipliziert mit Spalte ergibt den neuen Wert der Spalte im Zustand):

Die Matrixmultiplikation setzt sich aus der Multiplikation und Addition der Einträge zusammen. Einträge sind Bytes, die als Koeffizienten des Polynoms der Ordnung behandelt werden . Addition ist einfach XOR. Die Multiplikation ist ein modulo irreduzibles Polynom . Bei bitweiser Verarbeitung sollte nach dem Verschieben ein bedingtes XOR mit 1B 16 durchgeführt werden, wenn der verschobene Wert größer als FF 16 ist (Überlauf muss durch Subtraktion des erzeugenden Polynoms korrigiert werden). Dies sind Sonderfälle der üblichen Multiplikation in .

Im allgemeineren Sinne wird jede Spalte als Polynom behandelt und dann mit einem festen Polynom modulo multipliziert . Die Koeffizienten werden in ihrer hexadezimalen Entsprechung der binären Darstellung der Bitpolynome von angezeigt . Der MixColumns- Schritt kann auch als Multiplikation mit der gezeigten speziellen MDS-Matrix im endlichen Körper betrachtet werden . Dieser Vorgang wird im Artikel Rijndael MixColumns näher beschrieben .

Der AddRoundKey- Schritt

Im Schritt AddRoundKey wird jedes Byte des Zustands mit einem Byte des runden Unterschlüssels unter Verwendung der XOR- Operation (⊕) kombiniert .

Im Schritt AddRoundKey wird der Unterschlüssel mit dem Zustand kombiniert. Für jede Runde wird ein Unterschlüssel aus dem Hauptschlüssel unter Verwendung des Schlüsselplans von Rijndael abgeleitet ; Jeder Unterschlüssel hat dieselbe Größe wie der Zustand. Der Unterschlüssel wird hinzugefügt, indem jedes Byte des Zustands mit dem entsprechenden Byte des Unterschlüssels mithilfe von bitweisem XOR kombiniert wird .

Optimierung der Chiffre

Auf Systemen mit 32-Bit- oder größeren Wörtern ist es möglich, die Ausführung dieser Verschlüsselung zu beschleunigen, indem die Schritte SubBytes und ShiftRows mit dem Schritt MixColumns kombiniert werden, indem sie in eine Folge von Tabellensuchvorgängen umgewandelt werden. Dies erfordert vier 32-Bit-Tabellen mit 256 Einträgen (die zusammen 4096 Byte belegen). Eine Runde kann dann mit 16 Tabellen-Lookup-Operationen und 12 32-Bit-Exklusiv-Oder-Operationen durchgeführt werden, gefolgt von vier 32-Bit-Exklusiv-Oder-Operationen im AddRoundKey- Schritt. Alternativ kann die Tabellennachschlageoperation mit einer einzelnen 32-Bit-Tabelle mit 256 Einträgen (die 1024 Byte belegt) gefolgt von kreisförmigen Rotationsoperationen durchgeführt werden.

Mit einem byteorientierten Ansatz ist es möglich, die Schritte SubBytes , ShiftRows und MixColumns in einer einzigen Rundungsoperation zu kombinieren .

Sicherheit

Die National Security Agency (NSA) überprüfte alle AES-Finalisten, einschließlich Rijndael, und stellte fest, dass sie alle sicher genug für nicht geheime Daten der US-Regierung seien. Im Juni 2003 gab die US-Regierung bekannt, dass AES zum Schutz von Verschlusssachen verwendet werden könnte :

Das Design und die Stärke aller Schlüssellängen des AES-Algorithmus (dh 128, 192 und 256) sind ausreichend, um klassifizierte Informationen bis zur Ebene GEHEIM zu schützen. STRENG GEHEIM-Informationen erfordern die Verwendung von entweder 192 oder 256 Schlüssellängen. Die Implementierung von AES in Produkte, die zum Schutz nationaler Sicherheitssysteme und/oder Informationen bestimmt sind, muss von der NSA vor deren Erwerb und Verwendung überprüft und zertifiziert werden.

AES hat 10 Runden für 128-Bit-Schlüssel, 12 Runden für 192-Bit-Schlüssel und 14 Runden für 256-Bit-Schlüssel.

Im Jahr 2006 waren die bekanntesten Angriffe 7 Runden für 128-Bit-Schlüssel, 8 Runden für 192-Bit-Schlüssel und 9 Runden für 256-Bit-Schlüssel.

Bekannte Angriffe

Für Kryptografen ist ein kryptografischer „Break“ alles, was schneller ist als ein Brute-Force-Angriff – dh eine Probeentschlüsselung für jeden möglichen Schlüssel nacheinander durchzuführen (siehe Kryptoanalyse ). Ein Bruch kann daher Ergebnisse beinhalten, die mit der gegenwärtigen Technologie nicht realisierbar sind. Obwohl sie unpraktisch sind, können theoretische Brüche manchmal Einblicke in Anfälligkeitsmuster geben. Der größte erfolgreich öffentlich bekannte Brute-Force-Angriff gegen einen weit verbreiteten Blockchiffre-Verschlüsselungsalgorithmus war 2006 gegen einen 64-Bit- RC5- Schlüssel von Distributed.net .

Der Schlüsselraum vergrößert sich um den Faktor 2 für jedes zusätzliche Bit der Schlüssellänge, und wenn jeder mögliche Wert des Schlüssels gleichwahrscheinlich ist, führt dies zu einer Verdoppelung der durchschnittlichen Brute-Force-Schlüsselsuchzeit. Dies impliziert, dass der Aufwand einer Brute-Force-Suche exponentiell mit der Schlüssellänge zunimmt. Die Schlüssellänge an sich bedeutet keine Sicherheit gegen Angriffe, da sich Chiffren mit sehr langen Schlüsseln als angreifbar erwiesen haben.

AES hat einen ziemlich einfachen algebraischen Rahmen. Im Jahr 2002 wurde von Nicolas Courtois und Josef Pieprzyk ein theoretischer Angriff namens " XSL-Angriff " angekündigt , der angeblich eine Schwäche des AES-Algorithmus aufzeigt, teilweise aufgrund der geringen Komplexität seiner nichtlinearen Komponenten. Seitdem haben andere Papiere gezeigt, dass der Angriff, wie ursprünglich dargestellt, nicht durchführbar ist; siehe XSL-Angriff auf Blockchiffren .

Während des AES-Auswahlprozesses schrieben Entwickler konkurrierender Algorithmen über Rijndaels Algorithmus "wir sind besorgt über [seine] Verwendung ... in sicherheitskritischen Anwendungen". Im Oktober 2000 schrieb Bruce Schneier , ein Entwickler des konkurrierenden Algorithmus Twofish , jedoch am Ende des AES-Auswahlprozesses, dass, obwohl er glaubte, dass eines Tages erfolgreiche akademische Angriffe auf Rijndael entwickelt werden würden, er "nicht daran glaubte, dass jemals jemand" einen Angriff entdecken, der es jemandem ermöglicht, den Rijndael-Verkehr zu lesen."

Bis Mai 2009 waren die einzigen erfolgreichen veröffentlichten Angriffe gegen das vollständige AES Seitenkanalangriffe auf einige spezifische Implementierungen. Im Jahr 2009 wurde ein neuer Related-Key-Angriff entdeckt, der die Einfachheit des Schlüsselplans von AES ausnutzt und eine Komplexität von 2 119 hat . Im Dezember 2009 wurde sie auf 2 99,5 verbessert . Dies ist eine Fortsetzung eines Angriffs, der Anfang 2009 von Alex Biryukov , Dmitry Khovratovich und Ivica Nikolić entdeckt wurde, mit einer Komplexität von 2 96 für einen von 2 35 Schlüsseln. Angriffe auf verwandte Schlüssel sind jedoch in keinem richtig entworfenen kryptographischen Protokoll von Belang, da ein richtig entworfenes Protokoll (dh eine Implementierungssoftware) dafür sorgt, keine verwandten Schlüssel zuzulassen, im Wesentlichen dadurch , dass die Mittel eines Angreifers zur Auswahl von Schlüsseln nach Verwandtschaft eingeschränkt werden.

Ein weiterer Angriff wurde am 30. Juli 2009 von Bruce Schneier gebloggt und am 3. August 2009 als Vorabdruck veröffentlicht. Dieser neue Angriff von Alex Biryukov, Orr Dunkelman, Nathan Keller, Dmitry Khovratovich und Adi Shamir richtet sich gegen AES-256 die nur zwei verwandte Schlüssel und 2 39 Mal verwendet, um den vollständigen 256-Bit-Schlüssel einer 9-Runden-Version wiederherzustellen, oder 2 45- mal für eine 10-Runden-Version mit einer stärkeren Art von verwandtem Unterschlüsselangriff, oder 2 70- mal für einen 11-Runden-Version. 256-Bit-AES verwendet 14 Runden, daher sind diese Angriffe gegen vollständiges AES nicht effektiv.

Die Praktikabilität dieser Angriffe mit stärkeren verwandten Schlüsseln wurde beispielsweise von Vincent Rijmen im Jahr 2010 in dem von Vincent Rijmen verfassten Papier über Choose-Key-Relations-in-the-Middle-Angriffe auf AES-128 kritisiert.

Im November 2009 wurde der erste Erkennungsangriff mit bekanntem Schlüssel gegen eine reduzierte 8-Runden-Version von AES-128 als Vorabdruck veröffentlicht. Dieser bekannte Schlüsselunterscheidungsangriff ist eine Verbesserung des Rebounds oder des Start-from-the-Middle-Angriffs gegen AES-ähnliche Permutationen, die zwei aufeinanderfolgende Permutationsrunden als Anwendung einer sogenannten Super-S-Box betrachten . Es funktioniert auf der 8-Runden-Version von AES-128 mit einer Zeitkomplexität von 2 48 und einer Speicherkomplexität von 2 32 . 128-Bit-AES verwendet 10 Runden, daher ist dieser Angriff gegen volles AES-128 nicht effektiv.

Die ersten Key-Recovery-Angriffe auf vollständige AES wurden von Andrey Bogdanov, Dmitry Khovratovich und Christian Rechberger veröffentlicht und 2011 veröffentlicht. Der Angriff ist ein Biclique-Angriff und ist etwa um den Faktor vier schneller als Brute-Force. Es erfordert 2 126,2 Operationen, um einen AES-128-Schlüssel wiederherzustellen. Für AES-192 und AES-256 sind 2 190,2 bzw. 2 254,6 Operationen erforderlich. Dieses Ergebnis wurde weiter verbessert auf 2 126,0 für AES-128, 2 189,9 für AES-192 und 2 254,3 für AES-256, was die derzeit besten Ergebnisse bei Schlüsselwiederherstellungsangriffen gegen AES sind.

Dies ist ein sehr kleiner Gewinn, da ein 126-Bit-Schlüssel (statt 128-Bit) immer noch Milliarden von Jahren brauchen würde, um auf aktueller und absehbarer Hardware Brute-Force zu erzeugen. Außerdem berechnen die Autoren den besten Angriff unter Verwendung ihrer Technik auf AES mit einem 128-Bit-Schlüssel, der die Speicherung von 2 88 Bit Daten erfordert . Das entspricht etwa 38 Billionen Terabyte an Daten, was mehr ist als alle Daten, die 2016 auf allen Computern der Welt gespeichert waren. Daher gibt es keine praktischen Auswirkungen auf die AES-Sicherheit. Die Platzkomplexität wurde später auf 2 56 Bit verbessert , was 9007 Terabyte entspricht.

Laut Snowden-Dokumenten untersucht die NSA, ob ein kryptografischer Angriff auf der Grundlage der Tau-Statistik dazu beitragen kann, AES zu knacken.

Derzeit ist kein praktischer Angriff bekannt, der es jemandem ohne Kenntnis des Schlüssels ermöglichen würde, bei korrekter Implementierung mit AES verschlüsselte Daten zu lesen.

Seitenkanalangriffe

Seitenkanalangriffe greifen die Chiffre nicht als Blackbox an und stehen somit nicht im Zusammenhang mit der im klassischen Kontext definierten Chiffriersicherheit, sind aber in der Praxis wichtig. Sie greifen Implementierungen der Chiffre auf Hardware- oder Softwaresystemen an, die versehentlich Daten preisgeben. Es gibt mehrere solcher bekannten Angriffe auf verschiedene Implementierungen von AES.

Im April 2005 kündigte D. J. Bernstein einen Cache-Timing-Angriff an, mit dem er einen benutzerdefinierten Server knackte , der die AES-Verschlüsselung von OpenSSL verwendete . Der Angriff erforderte über 200 Millionen ausgewählte Klartexte. Der benutzerdefinierte Server wurde entwickelt, um so viele Timing-Informationen wie möglich auszugeben (der Server meldet die Anzahl der Maschinenzyklen, die der Verschlüsselungsvorgang benötigt hat). Wie Bernstein jedoch betonte, "beendet das Verringern der Genauigkeit der Zeitstempel des Servers oder deren Eliminierung aus den Antworten des Servers den Angriff nicht: Der Client verwendet einfach Roundtrip-Timings basierend auf seiner lokalen Uhr und kompensiert das erhöhte Rauschen durch Mittelung über eine größere Anzahl von Stichproben".

Im Oktober 2005 präsentierten Dag Arne Osvik, Adi Shamir und Eran Tromer ein Paper, das mehrere Cache-Timing-Angriffe gegen die Implementierungen von AES in OpenSSL und der dm-cryptPartitionsverschlüsselungsfunktion von Linux demonstrierte . Ein Angriff war in der Lage, nach nur 800 Operationen, die Verschlüsselungen auslösten, in insgesamt 65 Millisekunden einen kompletten AES-Schlüssel zu erhalten. Für diesen Angriff muss der Angreifer in der Lage sein, Programme auf demselben System oder derselben Plattform auszuführen, die AES ausführt.

Im Dezember 2009 wurde ein Angriff auf einige Hardwareimplementierungen veröffentlicht, der eine differenzielle Fehleranalyse verwendet und die Wiederherstellung eines Schlüssels mit einer Komplexität von 2 32 ermöglicht .

Im November 2010 veröffentlichten Endre Bangerter, David Gullasch und Stephan Krenn ein Papier, das einen praktischen Ansatz für eine "nahezu Echtzeit"-Wiederherstellung von geheimen Schlüsseln von AES-128 ohne die Notwendigkeit von Chiffretext oder Klartext beschreibt. Der Ansatz funktioniert auch bei AES-128-Implementierungen, die Komprimierungstabellen verwenden, wie beispielsweise OpenSSL. Wie einige frühere Angriffe erfordert dieser die Fähigkeit, unprivilegierten Code auf dem System auszuführen, das die AES-Verschlüsselung durchführt, was durch eine Malware-Infektion viel einfacher erreicht werden kann, als das Root-Konto zu beschlagnahmen.

Im März 2016 präsentierten Ashokkumar C., Ravi Prakash Giri und Bernard Menezes einen Seitenkanalangriff auf AES-Implementierungen, der den kompletten 128-Bit-AES-Schlüssel in nur 6-7 Blöcken Klartext/Chiffrtext wiederherstellen kann, was eine wesentliche Verbesserung gegenüber frühere Arbeiten, die zwischen 100 und einer Million Verschlüsselungen erfordern. Der vorgeschlagene Angriff erfordert Standardbenutzerrechte und Algorithmen zum Abrufen von Schlüsseln, die unter einer Minute ausgeführt werden.

Viele moderne CPUs verfügen über eingebaute Hardware-Anweisungen für AES , die vor Timing-bezogenen Seitenkanalangriffen schützen.

NIST/CSEC-Validierung

Das Cryptographic Module Validation Program (CMVP) wird gemeinsam von der Computersicherheitsabteilung des National Institute of Standards and Technology (NIST) der US-Regierung und dem Communications Security Establishment (CSE) der kanadischen Regierung betrieben. Die Verwendung von kryptografischen Modulen, die nach NIST FIPS 140-2 validiert sind, wird von der US-Regierung für die Verschlüsselung aller Daten verlangt, die eine Klassifizierung von Sensitive But Unclassified (SBU) oder höher aufweisen. Aus NSTISSP #11, National Policy Governing the Acquisition of Information Assurance: „Verschlüsselungsprodukte zum Schutz von Verschlusssachen werden von der NSA zertifiziert, und Verschlüsselungsprodukte zum Schutz sensibler Informationen werden gemäß NIST FIPS 140-2 zertifiziert.“

Die kanadische Regierung empfiehlt außerdem die Verwendung von FIPS 140- validierten kryptografischen Modulen in nicht klassifizierten Anwendungen ihrer Abteilungen.

Obwohl die NIST-Publikation 197 („FIPS 197“) das einzigartige Dokument ist, das den AES-Algorithmus abdeckt, wenden sich Anbieter typischerweise an das CMVP unter FIPS 140 und verlangen, dass mehrere Algorithmen (wie Triple DES oder SHA1 ) gleichzeitig validiert werden. Daher ist es selten, kryptografische Module zu finden, die eindeutig FIPS 197-validiert sind, und NIST selbst nimmt sich im Allgemeinen nicht die Zeit, um FIPS 197-validierte Module separat auf seiner öffentlichen Website aufzulisten. Stattdessen wird die FIPS 197-Validierung normalerweise nur als "FIPS genehmigt: AES"-Notation (mit einer bestimmten FIPS 197-Zertifikatsnummer) in der aktuellen Liste der FIPS 140-validierten kryptografischen Module aufgeführt.

Das Cryptographic Algorithm Validation Program (CAVP) ermöglicht eine unabhängige Validierung der korrekten Implementierung des AES-Algorithmus. Eine erfolgreiche Validierung führt dazu, dass Sie auf der NIST-Validierungsseite aufgeführt werden. Dieser Test ist eine Voraussetzung für die unten beschriebene FIPS 140-2-Modulvalidierung. Eine erfolgreiche CAVP-Validierung impliziert jedoch in keiner Weise, dass das den Algorithmus implementierende kryptographische Modul sicher ist. Ein kryptografisches Modul ohne FIPS 140-2-Validierung oder spezifische Genehmigung durch die NSA wird von der US-Regierung als nicht sicher angesehen und kann nicht zum Schutz von Regierungsdaten verwendet werden.

Die FIPS 140-2-Validierung ist sowohl technisch als auch steuerlich schwierig zu erreichen. Es gibt eine standardisierte Testbatterie sowie ein Element des Quellcode-Reviews, das über einen Zeitraum von wenigen Wochen bestanden werden muss. Die Kosten für die Durchführung dieser Tests durch ein zugelassenes Labor können erheblich sein (z. B. weit über 30.000 US-Dollar) und beinhalten nicht die Zeit, die zum Schreiben, Testen, Dokumentieren und Vorbereiten eines Moduls für die Validierung benötigt wird. Nach der Validierung müssen Module erneut eingereicht und bewertet werden, wenn sie in irgendeiner Weise geändert wurden. Dies kann von einfachen Aktualisierungen des Papierkrams reichen, wenn die Sicherheitsfunktionalität nicht geändert wurde, bis hin zu umfangreicheren erneuten Tests, wenn die Sicherheitsfunktionalität durch die Änderung beeinträchtigt wurde.

Testvektoren

Testvektoren sind ein Satz bekannter Chiffren für eine gegebene Eingabe und einen gegebenen Schlüssel. NIST vertreibt die Referenz von AES-Testvektoren als AES Known Answer Test (KAT) Vectors.

Leistung

Hohe Geschwindigkeit und geringe RAM-Anforderungen waren Kriterien des AES-Auswahlprozesses. Als gewählter Algorithmus schnitt AES auf einer Vielzahl von Hardware gut ab, von 8-Bit- Smartcards bis hin zu Hochleistungscomputern.

Auf einem Pentium Pro erfordert die AES-Verschlüsselung 18 Taktzyklen pro Byte, was einem Durchsatz von etwa 11 MiB/s für einen 200-MHz-Prozessor entspricht.

Auf Intel Core- und AMD Ryzen- CPUs, die AES-NI-Befehlssatzerweiterungen unterstützen , kann der Durchsatz mehrere GB/s betragen (sogar über 10 GB/s).

Wo die CPU-Hardware keine AES-Beschleunigung unterstützt, ist ChaCha eine alternative Verschlüsselung mit besserer Leistung und ohne Abstriche bei der Sicherheit.

Implementierungen

Siehe auch

Anmerkungen

  1. ^ Schlüsselgrößen von 128, 160, 192, 224 und 256 Bit werden vom Rijndael-Algorithmus unterstützt, aber im AES-Standard sind nur die Schlüsselgrößen 128, 192 und 256 Bit spezifiziert.
  2. ^ Blockgrößen von 128, 160, 192, 224 und 256 Bit werden vom Rijndael-Algorithmus für jede Schlüsselgröße unterstützt, aber im AES-Standard ist nur die 128-Bit-Blockgröße angegeben.
  3. ^ Large-Block-Varianten von Rijndael verwenden ein Array mit zusätzlichen Spalten, aber immer vier Zeilen.
  4. ^ Rijndael-Varianten mit einer größeren Blockgröße haben leicht unterschiedliche Offsets. Für Blöcke der Größen 128 Bit und 192 Bit ist das Verschiebemuster das gleiche. Zeilewird umByteskreisförmig nach links verschoben. Bei einem 256-Bit-Block bleibt die erste Zeile unverändert und die Verschiebung für die zweite, dritte und vierte Zeile beträgt 1 Byte, 3 Byte bzw. 4 Byte – diese Änderung gilt nur für die Rijndael-Chiffre, wenn sie mit einem 256-Bit-Block verwendet wird , da AES keine 256-Bit-Blöcke verwendet.
  5. ^ Die AES Known Answer Test (KAT) Vektoren sind im Zip-Format auf der NIST-Site hier verfügbar Archiviert 2009-10-23 an der Wayback Machine

Verweise

Externe Links