-
ALLGEMEINER STAND DER TECHNIK
-
Implementierungen der beanspruchten Erfindung können sich allgemein auf Prozessoren und insbesondere auf Befehle beziehen, die Prozessoren veranlassen, eine Verschlüsselung oder Entschlüsselung nach dem Advanced Encryption Standard (AES) auszuführen.
-
AES ist der weiterentwickelte Verschlüsselungsstandard vom National Institute of Standards and Technology (NIST) und ist in der FIPS-Publikation 197 Zdefiniert. AES kann eine variable Schlüsselgröße haben. Es gibt 3 akzeptable Schlüsselgrößen: 128-Bit, 192-Bit und 256-Bit. Die AES-Verschlüsselung nimmt 128-Bits Klartexteingabe und einen Schlüssel und erzeugt dann 128-Bits an Verschlüsselungstext-Ausgabe (zum Beispiel Klartext, der AES-verschlüsselt wurde). Gleichermaßen führt die AES-Entschlüsselung eine entgegengesetzte Operation aus, wobei sie 128-Bits Verschlüsselungstext und einen Schlüssel nimmt, um 128-Bits an Klartext zu erzeugen.
-
AES kann in vielen Betriebsmodi verwendet werden. Einer der üblicheren Modi ist der sogenannte Cipher-Block Chaining(CBC)-Modus. Ein etwas weniger häufig verwendeter Modus ist der sogenannte Electronic Codebook(ECB)-Modus. Andere Modi sind ebenfalls möglich, wie zum Beispiel der aufkommende sogenannte Counter-Modus (CTR), der vom Konzept her dem ECB ähnelt.
-
In Rechensystemen kann es wünschenswert sein, einen oder mehrere Befehle für einen Prozessor zu haben, die eigens für die AES-Verschlüsselung und/oder -Entschlüsselung vorgesehen sind.
-
Der Artikel ”ASTARLOA, A. [u. a.]: Multi-architectural 128 bit AES-CBC Core based an Open – Source Hardware AES Implementations for secure industrial communications. In: International Conference an Communication Technology ICCT '06. 27.–30. November 2006, S. 1–5”, offenbart ein Verschlüsselungsverfahren. Hierbei werden ein Initialisierungsvektor und ein Klartextvektor miteinander verknüpft. Diese Verknüpfung wird dann verschlüsselt. In einem weiteren Schritt wird die verschlüsselte Verknüpfung mit einem weiteren Klartextvektor verknüpft und diese Verknüpfung wird dann wiederum verschlüsselt. Nachteilig ist hieran, dass es mehrere Schritte braucht, um zu einer ersten Verschlüsselungsverknüpfung zu gelangen, was eine erhebliche Rechnerleistung beansprucht. Weiterhin verbraucht die beschriebene Verschlüsselungskaskade erheblichen Speicherplatz.
-
Die Offenlegungsschrift
EP 1 596 530 A1 zeigt eine Vorrichtung und ein Verfahren zum Ausführung von kryptographischen Operationen. Hierbei wird die Verschlüsselung mittels eines einzigen kryptographischen Befehls ausgeführt, wobei der Befehl eine Anweisung enthält, welcher Blockchiffren-Modus bei der Verschlüsselung anzuwenden ist.
-
Die Offenlegungsschrift
US 2005/0286720 A1 zeigt eine Verschlüsselungs-/Entschlüsselungsvorrichtung. Bei der Verschlüsselung wird beispielsweise ein Blockchiffren-Modus gewählt abhängig von der Länge der zu verschlüsselnden Daten.
-
Die Offenlegungsschrift
US 2004/0148512 A1 zeigt eine kryptographische Vorrichtung zum Verschlüsseln von Daten. Hierbei werden verschiedene Blockchiffren-Modi verwendet.
-
Kurze Beschreibung der Zeichnungen
-
Die der Erfindung zu Grunde liegende Aufgabe kann daher darin gesehen werden, ein Verfahren zum Ausführen einer AES-Verschlüsselung, einen Prozessor zum Durchführen einer Verschlüsselung, ein System zum Verschlüsseln von Daten, ein System zum Entschlüsseln von Daten und ein maschinenlesbares Medium anzugeben, welche die bekannten Nachteile überwinden.
-
Die Aufgabe wird mittels des Gegenstands der unabhängigen Ansprüche gelöst. Vorteilhafte Ausgestaltungen sind Gegenstand von jeweils abhängigen Unteransprüchen.
-
Die begleitenden Zeichnungen, die in diese Spezifikation aufgenommen sind und einen Teil von ihr bilden, veranschaulichen eine oder mehrere Implementierungen entsprechend den Prinzipien der Erfindung und erläutern zusammen mit der Beschreibung solche Implementierungen. Die Zeichnungen sind nicht unbedingt maßstabsgetreu; statt dessen wird auf die Veranschaulichung der Prinzipien der Erfindung Wert gelegt. In den Zeichnungen ist Folgendes dargestellt:
-
1 veranschaulicht ein beispielhaftes Computersystem gemäß einigen Implementierungen.
-
2 veranschaulicht Registerdateien eines Prozessors gemäß einigen Implementierungen.
-
3 veranschaulicht konzeptuell einen AES-Verschlüsselungsbefehl, der im ECB-Modus verwendet wird.
-
4 veranschaulicht beispielhaften Code zur Verwendung des AES-Verschlüsselungsbefehls im ECB-Modus.
-
5 veranschaulicht konzeptuell einen AES-Verschlüsselungsbefehl, der im CBC-Modus verwendet wird.
-
6 veranschaulicht konzeptuell zwei verkettete AES-Verschlüsselungsbefehle, die im CBC-Modus verwendet werden.
-
7 veranschaulicht beispielhaften Code zur Verwendung des AES-Verschlüsselungsbefehls im CBC-Modus.
-
8 veranschaulicht konzeptuell einen AES-Verschlüsselungsbefehl, der im CTR-Modus verwendet wird.
-
9 veranschaulicht beispielhaften Code zur Verwendung des AES-Verschlüsselungsbefehls im CTR-Modus.
-
Detaillierte Beschreibung
-
Die folgende detaillierte Beschreibung bezieht sich auf die begleitenden Zeichnungen. Es können in verschiedenen Zeichnungen die gleichen Bezugszahlen verwendet werden, um die gleichen oder ähnliche Elemente zu bezeichnen. In der folgenden Beschreibung werden, zum Zweck der Erläuterung und nicht der Einschränkung, konkrete Details dargelegt, wie zum Beispiel bestimmte Strukturen, Architekturen, Schnittstellen, Techniken usw., um ein gründliches Verstehen der verschiedenen Aspekte der beanspruchten Erfindung zu ermöglichen. Jedoch ist dem Fachmann, der in den Genuß der vorliegenden Offenbarung kommt, klar, daß die verschiedenen Aspekte der beanspruchten Erfindung auch in anderen Beispielen praktiziert werden können, die von diesen konkreten Details abweichen können. In bestimmten Fällen wird auf Beschreibungen allseits bekannter Vorrichtungen, Schaltkreise und Verfahren verzichtet, damit die Beschreibung der vorliegenden Erfindung nicht durch unnötige Details in den Hintergrund tritt.
-
Überblick
-
Diese Anmeldung beschreibt Ausführungsformen von Verfahren, Vorrichtungen und Systemen, die in einem Prozessor Befehle zum Ausführen einer AES-Verschlüsselung und/oder -Entschlüsselung enthalten. Zwei derartige Befehle sind:
AESENCRYPT (arg1)xmmdestination, (arg2)xmmsource/memory
AESDECRYPT (arg1)xmmdestination, (arg2)xmmsource/memory
-
Das xmmsource/memory liefert den Klartext, der im Verschlüsselungsfall verwendet werden soll, und das xmmdestination ist der Verschlüsselungstext. Im Entschlüsselungsfall sind die Rollen umgekehrt, und die Quelle (source) ist der Verschlüsselungstext, und der Zielort (destination) ist der Klartext. In einigen Implementierungen können beide Operanden zum Verschlüsseln oder Entschlüsseln verwendet werden, wie weiter unten noch erläutert wird. In beiden Fällen wird der Verschlüsselungsschlüssel mit Hilfe eines oder mehrerer impliziter 128-Bit-Register (zum Beispiel XMMO und XMM1, wie weiter unten noch ausführlicher beschrieben wird) an den AESENCRYPT- und/oder AESDECRYPT-Befehl übermittelt.
-
Obgleich sich ein großer Teil der folgenden Beschreibung auf den Verschlüsselungsbefehl, AESENCRYPT, konzentriert, ist dem Verschlüsselungsfachmann klar, daß der Entschlüsselungsbefehl, AESDECRYPT, in einer ähnlichen Weise auch zur Entschlüsselung eingesetzt und/oder verwendet werden kann. Daß sich die Beschreibung überwiegend auf AESENCRYPT bezieht, geschieht lediglich aus Gründen der Klarheit und der Vereinfachung der Beschreibung und bedeutet nicht, daß einer der Befehle wichtiger als der andere ist.
-
Computersystem
-
1 veranschaulicht ein beispielhaftes Computersystem 100 gemäß einer Ausführungsform der Erfindung. Das Computersystem 100 enthält eine Zwischenverbindung 101 zum Übermitteln von Informationen. Die Zwischenverbindung 101 kann einen Multi-Drop-Bus, eine oder mehrere Point-to-Point-Zwischenverbindungen oder eine beliebige Kombination der beiden sowie sonstige andere Kommunikationshardware und/oder -software enthalten.
-
1 veranschaulicht einen Prozessor 109 zum Verarbeiten von Informationen, der mit der Zwischenverbindung 101 gekoppelt ist. Der Prozessor 109 stellt eine zentrale Verarbeitungseinheit eines beliebigen Architekturtyps dar, einschließlich einer CISC- oder RISC-Architektur.
-
Das Computersystem 100 enthält des Weiteren einen Direktzugriffsspeicher (RAM) oder einen anderen dynamischen Speicherbaustein (als ein Hauptspeicher 104 bezeichnet), der mit der Zwischenverbindung 101 gekoppelt ist und dem Speichern von Informationen und Befehlen, die durch den Prozessor 109 ausgeführt werden sollen, dient. Der Hauptspeicher 104 kann ebenfalls zum Speichern von zeitweiligen Variablen oder anderen Zwischeninformationen während der Ausführung von Befehlen durch den Prozessor 109 verwendet werden.
-
Das Computersystem 100 enthält ebenfalls einen Nurlesespeicher (ROM) 106 und/oder eine andere statische Speichervorrichtung, die mit der Zwischenverbindung 101 gekoppelt ist und dem Speichern von statischen Informationen und Befehlen für den Prozessor 109 dient. Eine Datenspeichervorrichtung 107 ist mit der Zwischenverbindung 101 gekoppelt, um Informationen und Befehle zu speichern.
-
1 veranschaulicht ebenfalls, daß der Prozessor 109 eine Ausführungseinheit 130, eine Registerdatei 150, einen Cache 160, einen Decoder 165 und eine interne Zwischenverbindung 170 enthält. Natürlich enthält der Prozessor 109 noch weitere Schaltungen, die für das Verstehen der Erfindung nicht notwendig sind.
-
Der Decoder 165 dient dem Decodieren von Befehlen, die durch den Prozessor 109 empfangen wurden, und die Ausführungseinheit 130 dient dem Ausführen von Befehlen, die durch den Prozessor 109 empfangen wurden. Zusätzlich zu dem Erkennen von Befehlen, die in der Regel in Allzweckprozessoren implementiert werden, erkennen der Decoder 165 und die Ausführungseinheit 130 Befehle, wie im vorliegenden Text beschrieben, zum Ausführen von AES-Verschlüsselungs- oder -Entschlüsselungs(AESENCRYPT oder AESDECRYPT)-Operationen. Der Decoder 165 und die Ausführungseinheit 130 erkennen Befehle zum Ausführen von AESENCRYPT- oder AESDECRYPT-Operationen sowohl an gepackten als auch an ungepackten Daten.
-
Die Ausführungseinheit 130 ist mit der Registerdatei 150 durch die interne Zwischenverbindung 170 gekoppelt. Auch hier braucht die interne Zwischenverbindung 170 nicht unbedingt ein Multi-Drop-Bus zu sein und kann in alternativen Ausführungsformen eine Point-to-Point-Zwischenverbindung oder ein anderer Typ eines Kommunikationsweges sein.
-
Die Registerdatei(en) 150 stellen einen Speicherbereich des Prozessors 109 zum Speichern von Informationen, einschließlich Daten, dar. Es versteht sich, daß ein Aspekt der Erfindung die beschriebenen Befehlsausführungsformen zum Ausführen von AESENCRYPT- oder AESDECRYPT-Operationen an gepackten oder ungepackten Daten sind. Gemäß diesem Aspekt der Erfindung ist der Speicherbereich, der zum Speichern der Daten verwendet wird, nicht von ausschlaggebender Bedeutung. Jedoch werden Ausführungsformen der Registerdatei 150 später mit Bezug auf 2 beschrieben.
-
Die Ausführungseinheit 130 ist mit dem Cache 160 und dem Decoder 165 gekoppelt. Der Cache 160 dient dem Cache-Speichern von Daten und/oder Steuersignalen zum Beispiel von dem Hauptspeicher 104. Der Decoder 165 dient dem Decodieren von Befehlen, die durch den Prozessor 109 empfangen wurden, in Steuersignale und/oder Mikrocode-Eintrittspunkte. Diese Steuersignale und/oder Mikrocode-Eintrittspunkte können von dem Decoder 165 zu der Ausführungseinheit 130 weitergeleitet werden.
-
In Reaktion auf diese Steuersignale und/oder Mikrocode-Eintrittspunkte führt die Ausführungseinheit 130 die entsprechenden Operationen aus. Wenn zum Beispiel ein AESENCRYPT- oder AESDECRYPT-Befehl empfangen wird, so veranlaßt der Decoder 165 die Ausführungseinheit 130, die erforderliche Bit-Verschlüsselung oder -Entschlüsselung vorzunehmen. Bei wenigstens einigen Ausführungsformen kann die Ausführungseinheit 130 128 Bits an Klartext oder Verschlüsselungstext unter Verwendung eines oder mehrerer Schlüssel verschlüsseln oder entschlüsseln (siehe zum Beispiel der Krypto-Schaltungsaufbau 145).
-
Der Decoder 165 kann unter Verwendung einer beliebigen Anzahl verschiedener Mechanismen (zum Beispiel einer Nachschlagetabelle, einer Hardware-Implementierung, einer PLA usw.) implementiert werden. Das heißt, obgleich die Ausführung der verschiedenen Befehle durch den Decoder 165 und die Ausführungseinheit 130 im vorliegenden Text durch eine Reihe von Wenn-dann-Aussagen dargestellt sein kann, versteht es sich, daß die Ausführung eines Befehls keine serielle Verarbeitung dieser Wenn-dann-Aussagen erfordert. Vielmehr wird jeder beliebige Mechanismus zum logischen Ausführen dieser Wenn-dann-Verarbeitung als in den Geltungsbereich der Erfindung fallend angesehen.
-
1 zeigt zusätzlich eine Datenspeichervorrichtung 107 (zum Beispiel eine Magnetdiskette, eine optische Disk und/oder ein anderes maschinenlesbares Speichermedium), die mit dem Computersystem 100 gekoppelt sein kann. Außerdem ist dargestellt, daß die Datenspeichervorrichtung 107 Code 195 zur Ausführung durch den Prozessor 109 enthält. Der Code 195 kann eine oder mehrere Ausführungsformen eines AESENCRYPT- oder AESDECRYPT-Befehls 142 enthalten und kann so geschrieben sein, daß der Prozessor 109 veranlaßt wird, eine Bit-AES-Verschlüsselung oder -Entschlüsselung mit dem einen oder den mehreren AESENCRYPT- oder AESDECRYPT-Befehlen 142 für eine beliebige Anzahl von sicherheitsbezogenen Zwecken auszuführen.
-
Das Computersystem 100 kann ebenfalls über die Zwischenverbindung 101 mit einer Anzeigevorrichtung 121 zum Anzeigen von Informationen für einen Computernutzer gekoppelt sein. Die Anzeigevorrichtung 121 kann einen Framepuffer, spezialisierte Grafikrendering-Vorrichtungen, eine Flüssigkristallanzeige (LCD) und/oder eine Flachbildschirmanzeige enthalten.
-
Eine Eingabevorrichtung 122, die alphanumerische und andere Tasten enthält, kann mit der Zwischenverbindung 101 zum Übermitteln von Informations- und Befehlsauswahlen an den Prozessor 109 gekoppelt sein. Eine andere Art von Benutzereingabevorrichtung ist eine Cursorsteuerung 123, wie zum Beispiel eine Maus, ein Trackball, ein Stift, ein Berührungsbildschirm oder Cursor-Richtungstasten, zum Übermitteln von Richtungsinformationen und Befehlsauswahlen an den Prozessor 109 und zum Steuern der Cursorbewegung auf der Anzeigevorrichtung 121. Diese Eingabevorrichtung hat in der Regel zwei Freiheitsgrade in zwei Achsen, einer ersten Achse (zum Beispiel x) und einer zweiten Achse (zum Beispiel y), die es der Vorrichtung ermöglichen, Positionen in einer Ebene zu spezifizieren. Jedoch darf diese Erfindung nicht auf die Eingabevorrichtungen mit nur zwei Freiheitsgraden beschränkt werden.
-
Eine weitere Vorrichtung, die mit der Zwischenverbindung 101 gekoppelt sein kann, ist ein Drucker 124, der zum Drucken von Befehlen, Daten oder sonstigen Informationen auf ein Medium wie zum Beispiel Papier, Folie oder ähnliche Arten von Medien verwendet werden kann. Außerdem kann das Computersystem 100 mit einer Vorrichtung zur Tonaufzeichnung und/oder -wiedergabe 125, wie zum Beispiel einem Audio-Digitalisierer, gekoppelt sein, der mit einem Mikrofon zum Aufzeichnen von Informationen gekoppelt ist. Des Weiteren kann die Vorrichtung 125 einen Lautsprecher enthalten, der mit einem Digital-Analog(D/A)-Wandler zum Wiedergeben der digitalen Töne gekoppelt ist.
-
Das Computersystem 100 kann ein Endgerät in einem Computernetzwerk (zum Beispiel einem LAN) sein. Das Computersystem 100 wäre dann ein Computer-Teilsystem eines Computernetzwerks. Das Computersystem 100 enthält optional eine Videodigitalisierungsvorrichtung 126 und/oder eine Kommunikationsvorrichtung 190 (zum Beispiel einen seriellen Kommunikationschip, eine Drahtlosschnittstelle, einen Ethernetchip oder ein Modem, das eine Kommunikation mit einer externen Vorrichtung oder einem externen Netzwerk). Die Videodigitalisierungsvorrichtung 126 kann dafür verwendet werden, Videobilder zu erfassen, die zu anderen in dem Computernetzwerk übertragen werden können.
-
Bei mindestens einer Ausführungsform unterstützt der Prozessor 109 einen Befehlssatz, der mit dem Befehlssatz kompatibel ist, der durch vorhandene Prozessoren verwendet wird (wie zum Beispiel der Intel®Pentium®-Prozessor, der Intel®Pentium®Pro-Prozessor, der Intel®Pentium®II-Prozessor, der Intel®Pentium®III-Prozessor, der Intel®Pentium®4-Prozessor, der Intel®Itanium®-Prozessor, der Intel®Itanium®2-Prozessor oder der Intel®CoreTMDuo-Prozessor), die von der Intel Corporation aus Santa Clara, Kalifornien, hergestellt werden. Infolge dessen kann der Prozessor 109 existierende Prozessoroperationen zusätzlich zu den Operationen der Erfindung ausführen. Der Prozessor 109 kann sich auch zur Herstellung in einer oder mehreren Fertigungstechnologien eignen und kann, indem er in hinreichender Detailliertheit auf einem maschinenlesbaren Speichermedium dargestellt wird, geeignet sein, diese Herstellung zu vereinfachen. Obgleich die Erfindung unten so beschrieben wird, daß sie in einen x86-basierten Befehlssatz eingebunden ist, könnten alternative Ausführungsformen die Erfindung auch in andere Befehlssätze einbinden. Zum Beispiel könnte die Erfindung in einen 64-Bit-Prozessor unter Verwendung eines anderen Befehlssatzes als dem x86-basierten Befehlssatz eingebunden werden.
-
2 veranschaulicht die Registerdatei des Prozessors gemäß einer alternativen Ausführungsform der Erfindung. Die Registerdatei 150 kann zum Speichern von Informationen verwendet werden, einschließlich Steuer-/Statusinformationen, Festkommadaten, Gleitkommadaten und gepackten Daten. In der in 2 gezeigten Ausführungsform enthält die Registerdatei 150 Festkommaregister 201, Register 209, Statusregister 208, Erweiterungsregister 210 und Befehlszeigerregister 211. Die Statusregister 208, die Befehlszeigerregister 211, die Festkommaregister 201 und die Register 209 sind alle mit der internen Zwischenverbindung 170 gekoppelt. Außerdem sind ebenfalls Erweiterungsregister 210 mit der internen Zwischenverbindung 170 gekoppelt. Die interne Zwischenverbindung 170 kann – muß aber nicht – ein Multi-Drop-Bus sein. Die interne Zwischenverbindung 170 kann statt dessen ein beliebiger anderer Typ eines Kommunikationsweges sein, einschließlich einer Point-to-Point-Zwischenverbindung.
-
Bei mindestens einer Ausführungsform werden die Erweiterungsregister 210 sowohl für gepackte Festkommadaten als auch für gepackte Gleitkommadaten verwendet. Bei alternativen Ausführungsformen können die Erweiterungsregister 210 für skalare Daten, gepackte Boolesche Daten, gepackte Festkommadaten und/oder gepackte Gleitkommadaten verwendet werden. Natürlich können alternative Ausführungsformen implementiert werden, die mehr oder weniger Registersätze, mehr oder weniger Register in jedem Satz oder mehr oder weniger Datenspeicherbits in jedem Register enthalten, ohne von dem breiteren Geltungsbereich der Erfindung abzuweichen.
-
Bei mindestens einer Ausführungsform sind die Festkommaregister 201 so implementiert, daß sie zweiunddreißig Bits speichern, die Register 209 sind so implementiert, daß sie achtzig Bits speichern (alle achtzig Bits werden zum Speichern von Gleitkommadaten verwendet, während nur vierundsechzig für gepackte Daten verwendet werden), und die Erweiterungsregister 210 sind so implementiert, daß sie 128 Bits speichern. Außerdem können die Erweiterungsregister 210 acht Register enthalten, XR0 213a bis XR7 213h. XR0 213a, XR1 213b und XR2 213c sind Beispiele für einzelne Register in den Registern 210. Zum Beispiel können 128-Bit-Erweiterungsregister 210 verwendet werden, um einen oder beide Operanden für einen AESENCYPT-Befehl bereitzustellen, und können verwendet werden, um eines oder beide der impliziten Register (zum Beispiel XMM0 und XMM1) bereitzustellen, die durch den AESENCYPT-Befehl verwendet.
-
Bei einer anderen Ausführungsform enthalten die Festkommaregister 201 jeweils 64 Bits, die Erweiterungsregister 210 enthalten jeweils 64 Bits, und die Erweiterungsregister 210 enthalten sechzehn Register. Bei einer Ausführungsform können zwei Register der Erweiterungsregister 210 als ein Paar betrieben werden. Bei einer weiteren alternativen Ausführungsform enthalten die Erweiterungsregister 210 zweiunddreißig Register.
-
AES-Verschlüsselungs- und/oder -Entschlüsselungsoperation(en)
-
3 veranschaulicht konzeptuell einen AES-Verschlüsselungsbefehl (AESENCRYPT Arg1, Arg2) 310, der im ECB-Modus verwendet wird. Wie gezeigt, hat AESENCRYPT 310 zwei Operanden, von denen einer, Arg2, den zu verschlüsselnden Klartext zuführt. Der verschlüsselte Verschlüsselungstext wird zu Arg1 von AESENCRYPT 310 geschrieben. Der Verschlüsselungsschlüssel wird aus einem oder mehreren der impliziten 128-Bit-Register XMM0 und XMM1 zugeführt. Wenn zum Beispiel der Verschlüsselungsschlüssel 128 Bits lang ist, so kann er durch eines der Register XMMO zugeführt werden. In einem solchen Fall kann das andere Register XMM1 in einer anderen Eigenschaft verwendet werden, wie mit Bezug auf 4 beschrieben wird.
-
Wie man in 3 erkennen kann, wird AESENCRYPT 310 im ECB-Modus verwendet, indem der Klartext von Arg2 mit einem Schlüssel verschlüsselt wird. Ein Regime zum Bestimmen, welcher Modus (zum Beispiel ECB, CBC usw.) in welchem AESENCRYPT 310 arbeitet, ist, die Operanden zum Bestimmen des Modus zu verwenden. In einer Implementierung führt AESENCRYPT 310 eine exklusive-ODER(XOR)-Operation an seinen Operanden, Arg1 und Arg2, aus, bevor das Ergebnis mit dem Schlüssel verschlüsselt wird. Ein solches Regime, das mit Bezug auf 4 ausführlicher beschrieben wird, ermöglicht eine oder zwei Eingaben zu AESENCRYPT 310. Wenn nur eine einzige Eingabe gewünscht wird, wie zum Beispiel Arg2 für den ECB-Modus, wie in 3 gezeigt, so kann der andere Operand Arg1 auf null gesetzt werden, so daß die XOR-Operation durch AESENCRYPT 310 nur den ersten Operanden, Arg2, zur Verschlüsselung durch den Schlüssel erbringt. Wie dieses XOR-Operationsregime für den CBC- und den CTR-Modus verwendet werden kann, wird mit Bezug auf die 5–9 näher beschrieben.
-
Ein anderes (nicht gezeigtes) Regime zum Bestimmen, in welchem Modus AESENCRYPT 310 operiert, kann sein, ein unmittelbares Byte in dem AESENCRYPT 310-Befehl zusätzlich zu den zwei Operanden Arg1 und Arg2 zu verwenden. Dieses zweite Regime kann, im Gegensatz zu dem ersten, wo die Operanden einer XOR-Operation unterzogen werden, auf der Grundlage des Inhalts des unmittelbaren Bytes spezifizieren, wie und/oder ob einer oder beide der Operanden von AESENCRYPT 310 verwendet werden sollen. Andere Regimes als diese zwei sind sowohl möglich als auch in Betracht gezogen, um einen einzelnen, aus zwei Operanden bestehenden Befehl zu ermöglichen, wie zum Beispiel AESENCRYPT 310 (oder AESDECRYPT), der in mehreren unterschiedlichen Modi (zum Beispiel ECB, CBC, CTR usw.) verwendet werden soll.
-
4 veranschaulicht beispielhaften Code (der zum Beispiel, wenn er durch den Prozessor 190 ausgeführt wird, ein Verfahren darstellt) 410 zur Verwendung von AESENCRYPT 310 im ECB-Modus. Zuerst wird der Verschlüsselungsschlüssel (über einen MOV-Befehl oder etwas Ähnliches) in eines der impliziten Register XMMO geladen. Als nächstes kann ein Wert (zum Beispiel 16) (über einen MOV-Befehl oder etwas Ähnliches) in ein anderes Register ECX geladen werden, um die Anzahl von 128-Bit-Blöcken aus Klartext auf AES-Verschlüsselung einzustellen. Dieser Wert, multipliziert mit 128 Bits, kann die Gesamtlänge des Klartextes angeben, der durch den Code 410 verschlüsselt werden soll. Nach einer solchen Initialisierung kann eine Schleife, die AESENCRYPT 310 enthält, ECX-mal ausgeführt werden.
-
Innerhalb der Schleife wird das zweite implizite Register XMM1 für den ECB-Modus durch Laden eines Wertes null gelöscht. Wie oben angesprochen, erzeugt dieser Wert null, wenn er durch AESENCRYPT 310 mit dem zweiten Operanden einer XOR-Operation unterzogen wird, den zweiten Operanden, der das gewünschte Ergebnis für den Betrieb im ECB-Modus ist. Wenden wir uns dem nächsten Befehl zu, wo AESENCRYPT 310 den Klartext im Plainmemory [ECX] nimmt, den Klartext mit dem Schlüssel im XMMO verschlüsselt und das Ergebnis in das zweite implizite Register XMM1 schreibt. Als nächstes wird der Verschlüsselungstext im XMM1 in das Ciphermemory [ECX] gespeichert, und der Schleifenwert im ECX wird dekrementiert, bevor zum Anfang der Schleife zurückgesprungen wird.
-
Bei der nächsten Schleife wird aus dem XMM1 wieder das verschlüsselte Ergebnis für die vorherigen 128 Bits gelöscht. Auf diese Weise hat AESENCRYPT 310 die einzelne Eingabe des Plainmemory [ECX] für den dekrementierten Wert im ECX, der durch den Schlüssel im XMMO zu verschlüsseln ist. Die Schleifenausführung des Codes 410 kann fortgesetzt werden, bis alle Blöcke aus Klartext, die durch den Anfangswert spezifiziert wurden, der in das ECX geladen wurde, im ECB-Modus AES-verschlüsselt wurden.
-
5 veranschaulicht konzeptuell einen AES-Verschlüsselungsbefehl (AESENCRYPT Arg1, Arg2) 310, der im CBC-Modus verwendet wird. Wie gezeigt, hat AESENCRYPT 310 zwei Operanden, von denen einer, Arg2, den zu verschlüsselnden Klartext zuführt. Im CBC-Modus führt der andere Operand, Arg1, sogenannten ”alten” Verschlüsselungstext aus dem vorherigen verschlüsselten Block zu, der mit dem Klartext durch AESENCRYPT 310 vor der Verschlüsselung einer XOR-Operation unterzogen wird. Der Verschlüsselungsschlüssel wird von einem oder mehreren der impliziten 128-Bit-Register XMMO und XMM1 zugeführt. Der verschlüsselte Verschlüsselungstext für den momentanen Block wird auf Arg1 von AESENCRYPT 310 überschrieben.
-
6 veranschaulicht konzeptuell zwei verkettete AES-Verschlüsselungsbefehle 600, die im CBC-Modus verwendet werden. Dies zeigt visuell die zeitliche Eigenart des CBC-Modus' (wobei die erste Operation im zeitlichen Verlauf links in der Figur erscheint), wobei das Ergebnis des vorherigen Verschlüsselungsblocks einer XOR-Operation mit dem neuen Klartext unterzogen wird. Dies erzeugt einen zufälligeren Verschlüsselungstext als der ECB-Modus (zum Beispiel wird im ECB-Modus derselbe Klartextblock in denselben Verschlüsselungstextsblock, der den gleichen Schlüssel bekommt, verschlüsselt). Im CBC-Modus, wie in 6 gezeigt, hängt der Verschlüsselungstext für einen bestimmten Block aus Klartext von dem Verschlüsselungstextergebnis des vorherigen Durchgangs ab.
-
7 veranschaulicht beispielhaften Code (der zum Beispiel, wenn er durch den Prozessor 190 ausgeführt wird, ein Verfahren darstellt) 710 zur Verwendung des AES-Verschlüsselungsbefehls im CBC-Modus. Zuerst wird der Verschlüsselungsschlüssel (über einen MOV-Befehl oder etwas Ähnliches) in eines der impliziten Register XMMO geladen. Als nächstes kann ein Wert (zum Beispiel 16, aber diese Zahl kann größer oder kleiner sein) (über einen MOV-Befehl oder etwas Ähnliches) in ein anderes Register ECX geladen werden, um die Anzahl von 128-Bit-Blöcken aus Klartext auf AES-Verschlüsselung einzustellen. Dieser Wert, multipliziert mit 128 Bits, kann die Gesamtlänge des Klartextes angeben, der durch den Code 710 zu verschlüsseln ist. Des Weiteren kann, beim ersten Mal durch die Schleife, XMM1 durch Laden einer null gelöscht werden, weil es keinen Verschlüsselungstext aus einem vorherigen Block gibt, der mit dem ersten Block aus Klartext kombiniert werden könnte. Nach einer solchen Initialisierung kann eine Schleife, die AESENCRYPT 310 enthält, ECX-mal ausgeführt werden.
-
Innerhalb die Schleife nimmt AESENCRYPT 310 den Klartext im Plainmemory [ECX], führt daran eine XOR-Operation mit dem Wert im XMM1 aus (zum Beispiel null beim ersten Mal durch die Schleife), verschlüsselt das einer XOR-Operation unterzogene Ergebnis mit dem Schlüssel im XMMO und schreibt das Ergebnis in das zweite implizite Register XMM1 über den Wert, der sich bereits dort befand. Als nächstes wird der Verschlüsselungstext im XMM1 im Ciphermemory [ECX] gespeichert, und der Schleifenwert im ECX wird dekrementiert, bevor zum Anfang der Schleife zurückgesprungen wird.
-
Bei der nächsten Schleife wird, im Gegensatz zum ECB-Modus, das Verschlüsselungstextergebnis von ungleich null für die vorherigen 128 Bits im XMM1 nicht gelöscht. Es wird vielmehr durch AESENCRYPT 310 vor der Verschlüsselung mit dem Schlüssel gemäß dem CBC-Modus einer XOR-Operation mit dem nächsten Block aus Klartext unterzogen. Auf diese Weise hat AESENCRYPT 310 die doppelten Eingaben des Plainmemory [ECX] für den dekrementierten Wert im ECX und des Verschlüsselungstextwertes im XMM1 aus der vorherigen Schleife. Der AESENCRYPT 310-Befehl führt eine XOR-Operation an den zwei Eingaben aus und verschlüsselt das Ergebnis mit dem Schlüssel im XMMO. Die Schleifenausführung des Codes 410 kann fortgesetzt werden, bis alle Blöcke aus Klartext, die durch den Anfangswert spezifiziert wurden, der in den ECX geladen wurde, im CBC-Modus AES-verschlüsselt wurden.
-
Das oben beschriebene Regime und System können vorteilhafterweise eine CBC-Modus- und eine ECB-Modus-Verschlüsselung unter Verwendung eines einzigen, aus zwei Operanden bestehenden Befehls ausführen. Dieser Befehl ermöglicht engere Schleifen für ABS in seinen häufigsten zwei Modi. Der Befehl arbeitet mit einer begrenzten Anzahl von Operanden und verschiebt die häufigste Verwendung von ABS in einen einzigen Befehl, der immer noch die zweit-häufigste Verwendung unterstützt.
-
8 veranschaulicht konzeptuell einen AES-Verschlüsselungsbefehl (AESENCRYPT Arg1, Arg2) 810, der im CTR-Modus verwendet wird. Wie gezeigt, hat AESENCRYPT 810 zwei Operanden, von denen einer, Arg2, den zu verschlüsselnden Zählerwert zuführt. Im CTR-Modus stellt der andere Operand, Arg1, den zu verschlüsselnden Klartext bereit, der durch AESENCRYPT 810 nach der Verschlüsselung einer XOR-Operation mit dem Klartext unterzogen wird. Der Verschlüsselungsschlüssel wird aus einem oder mehreren der impliziten 128-Bit-Register XMMO und XMM1 zugeführt. Der verschlüsselte Verschlüsselungstext für den momentanen Block wird auf Arg1 von AESENCRYPT 810 überschrieben.
-
9 veranschaulicht beispielhaften Code (der zum Beispiel, wenn er durch den Prozessor 190 ausgeführt wird, ein Verfahren darstellt) 910 zur Verwendung des AES-Verschlüsselungsbefehls im CTR-Modus. Zuerst wird der Verschlüsselungsschlüssel (über einen MOV-Befehl oder etwas Ähnliches) im eines der impliziten Register XMMO geladen. Als nächstes kann ein Wert (zum Beispiel 16, aber diese Zahl kann größer oder kleiner sein) (über einen MOV-Befehl oder etwas Ähnliches) in ein anderes Register ECX geladen werden, um die Anzahl von 128-Bit-Blöcken aus Klartext auf AES-Verschlüsselung einzustellen. Dieser Wert, multipliziert mit 128 Bits, kann die Gesamtlänge des Klartextes angeben, der durch den Code 910 zu verschlüsseln ist. Als nächstes wird ein Zählerwert (über einen MOV-Befehl oder etwas Ähnliches) in ein anderes XMM-Register (wie zum Beispiel XMM4) geladen. Nach einer solchen Initialisierung kann eine Schleife, die AESENCRPT 810 enthält, ECX-mal ausgeführt werden.
-
Innerhalb der Schleife nimmt AESENCRYPT 810 den Zählerwert, nimmt die eigentliche Verschlüsselung des Zählerwertes vor und führt dann die XOR-Operation mit den Klartextdaten aus, um den Verschlüsselungstext zu erzeugen. Als nächstes wird der Verschlüsselungstext im XMM3 im Ciphermemory [ECX] gespeichert, und der Schleifenwert im ECX wird dekrementiert, bevor zum Anfang der Schleife zurückgesprungen wird. Danach wird der Zähler nach Bedarf (über einen ADD-, MUL- oder einen anderen Befehl) justiert. Die Schleife schreitet anderenfalls identisch zum ECB-Modus voran.
-
Die obige Beschreibung einer oder mehrerer Implementierungen stellt eine Veranschaulichung und Beschreibung dar, soll aber weder erschöpfend sein noch den Geltungsbereich der Erfindung auf die konkret offenbarte Form beschränken. Modifizierungen und Varianten sind angesichts der obigen Lehren möglich oder können aus der praktischen Umsetzung verschiedener Implementierungen der Erfindung abgeleitet werden.
-
Obgleich zum Beispiel eine AES-Verschlüsselung und -Entschlüsselung für einen 128-Bit-Schlüssel beschrieben wurde, läßt der NIST-Standard in der FIPS-Publikation 197 auch 192-Bit- und 256-Bit-Schlüssel zu. In einem solchen Fall kann der XMM1 für die anderen 64 Bits oder 128 Bits in dem 192-Bit- oder 256-Bit-Schlüssel verwendet werden. In einem solchen Fall kann ein anderes 128-Bit-Register (zum Beispiel XMM2, XMM3 usw.) anstelle des XMM1 im Code 410 oder Code 710 oder Code 910 (oder einem sonstigen Code, in dem sich AESENCRYPT oder AESDECRYPT befindet) verwendet werden, weil sich ein Teil des Schlüssels im XMM1 befindet.
-
Obgleich oben AESENCRYPT beschrieben wurde, kann AESDECRYPT Arg1, Arg2 in einer ähnlichen Weise zum Unterstützen einer AES-Entschlüsselung im ECB-Modus, CTR-Modus und im CBC-Modus verwendet werden. Der Fachmann erkennt, daß die Verwendung von AESDECRYPT im ECB-Modus relativ unkompliziert ist, während der CBC-Modus zusätzliche Berechnungen mit sich bringen kann, wie zum Beispiel das Inverse oder Entgegengesetzte der XOR-Operation, die durch AESENCRYPT während der Verschlüsselung ausgeführt wird.
-
Es versteht sich des Weiteren, daß die Details der genauen Art und Weise, wie AESENCRYPT und AESDECRYPT den AES-Algorithmus ausführen, zwar nicht dargelegt wurden, daß dies aber durchaus im Rahmen der Fähigkeiten eines Verschlüsselungsfachmanns liegt. Die konkrete Implementierung kann allgemein für den konkreten Prozessor 190, auf dem AESENCRYPT und AESDECRYPT ausgeführt werden, optimiert werden. In einigen Implementierungen können diese Befehle in Maschinensprache für die schnellstmögliche Ausführung optimiert werden. Die Details einer solchen Optimierung sind für die beanspruchte Erfindung ohne besondere Relevanz und wurden im Interesse einer besseren Verständlichkeit der Erklärung weggelassen.
-
Kein Element, keine Aktion und kein Befehl, die in der Beschreibung der vorliegenden Anmeldung verwendet werden, darf als maßgeblich oder entscheidend für die Erfindung verstanden werden, wenn dies nicht ausdrücklich so beschrieben wurde. Des Weiteren kann der unbestimmte Artikel (”ein”, ”einer”, ”eine”) im Sinne des vorliegenden Textes sowohl ein als auch mehrere Dinge beinhalten. Es können Änderungen und Modifikationen an der oder den oben beschriebenen Implementierungen der beanspruchten Erfindung vorgenommen werden, ohne erheblich vom Geist und den Prinzipien der Erfindung abzuweichen. Es ist beabsichtigt, daß alle derartigen Änderungen und Modifikationen hier in den Geltungsbereich dieser Offenbarung aufgenommen sind und durch die folgenden Ansprüche geschützt sind.