DE102008014359B4 - Ausführen einer AES-Verschlüsselung oder -Entschlüsselung in mehreren Modi mit einem einzigen Befehl - Google Patents

Ausführen einer AES-Verschlüsselung oder -Entschlüsselung in mehreren Modi mit einem einzigen Befehl Download PDF

Info

Publication number
DE102008014359B4
DE102008014359B4 DE102008014359A DE102008014359A DE102008014359B4 DE 102008014359 B4 DE102008014359 B4 DE 102008014359B4 DE 102008014359 A DE102008014359 A DE 102008014359A DE 102008014359 A DE102008014359 A DE 102008014359A DE 102008014359 B4 DE102008014359 B4 DE 102008014359B4
Authority
DE
Germany
Prior art keywords
encryption
aes
instruction
processor
operand
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102008014359A
Other languages
English (en)
Other versions
DE102008014359A1 (de
Inventor
Martin Oreg. Dixon
Srinivas Oreg. Chennupaty
Shay Gueron
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102008014359A1 publication Critical patent/DE102008014359A1/de
Application granted granted Critical
Publication of DE102008014359B4 publication Critical patent/DE102008014359B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Verfahren zum Ausführen einer AES-Verschlüsselung, das Folgendes umfaßt: Kombinieren eines ersten Operanden des Befehls und eines zweiten Operanden des Befehls, um ein Ergebnis zu erzeugen; Verschlüsseln des Ergebnisses unter Verwendung eines Schlüssels entsprechend einem Advanced Encryption Standard(AES)-Algorithmus, um ein verschlüsseltes Ergebnis zu erzeugen; und Platzieren des verschlüsselten Ergebnisses an einer Stelle des ersten Operanden des Befehls.

Description

  • 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 59 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.

Claims (21)

  1. Verfahren zum Ausführen einer AES-Verschlüsselung, das Folgendes umfaßt: Kombinieren eines ersten Operanden des Befehls und eines zweiten Operanden des Befehls, um ein Ergebnis zu erzeugen; Verschlüsseln des Ergebnisses unter Verwendung eines Schlüssels entsprechend einem Advanced Encryption Standard(AES)-Algorithmus, um ein verschlüsseltes Ergebnis zu erzeugen; und Platzieren des verschlüsselten Ergebnisses an einer Stelle des ersten Operanden des Befehls.
  2. Verfahren nach Anspruch 1, wobei das Kombinieren Folgendes umfasst: Ausführen einer exklusives-ODER-Operation an dem ersten Operanden des Befehls und dem zweiten Operanden des Befehls, um das Ergebnis zu erzeugen.
  3. Verfahren nach Anspruch 1, wobei das Verschlüsseln Folgendes umfasst: Erhalten des Schlüssels aus einem oder mehreren vorgegebenen Registers.
  4. Verfahren nach Anspruch 3, wobei der Schlüssel 128 Bits, 192 Bits oder 256 Bits lang ist.
  5. Verfahren nach Anspruch 1, wobei der zweite Operand zu verschlüsselnder Klartext ist, der 128 Bits lang ist.
  6. Verfahren nach Anspruch 5, wobei der erste Operand null ist.
  7. Verfahren nach Anspruch 5, wobei der erste Operand ein zuvor verschlüsseltes Ergebnis aus einer vorherigen Verschlüsselungsoperation ist.
  8. Prozessor (109) zum Durchführen einer Verschlüsselung, der Folgendes umfaßt: eine erste Logik zum logischen Kombinieren eines Klartextwertes mit einem zweiten Wert, um ein kombiniertes Ergebnis zu erzeugen, und zum Verschlüsseln des kombinierten Ergebnisses unter Verwendung eines Advanced Encryption Standard(AES)-Algorithmus' und eines Schlüssels, um ein verschlüsseltes Ergebnis zu erzeugen; ein erstes Register zum Speichern des zweiten Wertes; und ein zweites Register zum Speichern des Schlüssels, wobei die erste Logik dafür konfiguriert ist, das verschlüsselte Ergebnis in dem ersten Register zu speichern.
  9. Prozessor (109) nach Anspruch 8, wobei die erste Logik dafür konfiguriert ist, den Klartextwert und den zweiten Wert einer exklusiven-ODER(XOR)-Operation zu unterziehen, um das kombinierte Ergebnis zu erzeugen.
  10. Prozessor (109) nach Anspruch 8, wobei der zweite Wert ein zuvor verschlüsseltes Ergebnis oder null ist.
  11. Prozessor (109) nach Anspruch 8, wobei der Klartextwert und das verschlüsselte Ergebnis jeweils 128 Bits lang sind.
  12. System (100) zum Verschlüsseln von Daten, das Folgendes umfaßt: einen Speicher (104) zum Speichern eines Advanced Encryption Standard(AES)-Verschlüsselungsbefehls, der zwei Operanden aufweist, der in der Lage ist, Daten in mindestens zwei Modi zu verschlüsseln; und einen Prozessor (109) zum Ausführen des AES-Verschlüsselungsbefehls.
  13. System (100) nach Anspruch 12, wobei der AES-Verschlüsselungsbefehl nur zwei Operanden hat.
  14. System (100) nach Anspruch 12, wobei die mindestens zwei Modi zwei aus folgender Gruppe sind: Elektronischer Codebuch-Modus, Zähler-Modus oder Verschlüsselungsblock-Verkettungs-Modus.
  15. System (100) nach Anspruch 12, wobei, in welchem der mindestens zwei Modi der AES-Verschlüsselungsbefehl Daten verschlüsselt, auf einem Wert eines der zwei Operanden basiert.
  16. System (100) nach Anspruch 12, wobei, in welchem der mindestens zwei Modi der AES-Verschlüsselungsbefehl Daten verschlüsselt, auf einem unmittelbaren Byte basiert, das dem AES-Verschlüsselungsbefehl zugeordnet ist.
  17. System (100) zum Entschlüsseln von Daten, das Folgendes umfaßt: einen Speicher (104) zum Speichern eines Advanced Encryption Standard(AES)-Entschlüsselungsbefehls, der zwei Operanden aufweist, der in der Lage ist, Daten in mindestens zwei Modi zu entschlüsseln; und einen Prozessor (109) zum Ausführen des AES-Entschlüsselungsbefehls.
  18. System (100) nach Anspruch 17, wobei der AES-Entschlüsselungsbefehl nur zwei Operanden hat.
  19. System (100) nach Anspruch 17, wobei die mindestens zwei Modi zwei aus folgender Gruppe sind: Elektronischer Codebuch-Modus, Zähler-Modus oder Verschlüsselungsblock-Verkettungs-Modus.
  20. System (100) nach Anspruch 17, wobei, in welchem der mindestens zwei Modi der AES-Entschlüsselungsbefehl Daten entschlüsselt, auf einem Wert eines der zwei Operanden basiert.
  21. Maschinenlesbares Medium (107), auf dem ein Befehl gespeichert ist, der, wenn er durch eine Maschine ausgeführt wird, die Maschine veranlasst, ein Verfahren nach einem der Ansprüche 1 bis 7 auszuführen.
DE102008014359A 2007-03-14 2008-03-14 Ausführen einer AES-Verschlüsselung oder -Entschlüsselung in mehreren Modi mit einem einzigen Befehl Active DE102008014359B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/724,005 2007-03-14
US11/724,005 US8538012B2 (en) 2007-03-14 2007-03-14 Performing AES encryption or decryption in multiple modes with a single instruction

Publications (2)

Publication Number Publication Date
DE102008014359A1 DE102008014359A1 (de) 2008-10-16
DE102008014359B4 true DE102008014359B4 (de) 2011-08-25

Family

ID=39328229

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102008014359A Active DE102008014359B4 (de) 2007-03-14 2008-03-14 Ausführen einer AES-Verschlüsselung oder -Entschlüsselung in mehreren Modi mit einem einzigen Befehl

Country Status (7)

Country Link
US (3) US8538012B2 (de)
JP (1) JP4767985B2 (de)
KR (3) KR20080084752A (de)
CN (2) CN103957100B (de)
DE (1) DE102008014359B4 (de)
GB (1) GB2447563B (de)
TW (1) TWI390401B (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US8447796B2 (en) * 2008-11-25 2013-05-21 Intel Corporation Apparatus with a vector generation unit and encoder for receiving first and second inputs to generate at least significant zero (LSZ)
EP2196937A1 (de) * 2008-12-15 2010-06-16 Thomson Licensing Verfahren und Vorrichtungen zur Softwareverschlüsselung auf Befehlsebene
US8214598B2 (en) * 2009-12-22 2012-07-03 Intel Corporation System, method, and apparatus for a cache flush of a range of pages and TLB invalidation of a range of entries
US9003170B2 (en) 2009-12-22 2015-04-07 Intel Corporation Bit range isolation instructions, methods, and apparatus
US8549264B2 (en) 2009-12-22 2013-10-01 Intel Corporation Add instructions to add three source operands
US9990201B2 (en) * 2009-12-22 2018-06-05 Intel Corporation Multiplication instruction for which execution completes without writing a carry flag
EP2717511A1 (de) * 2012-10-05 2014-04-09 Nagravision S.A. Verfahren und Vorrichtung zur Verschlüsselung und Entschlüsselung von digitalen Datenblocks
DE102013205166A1 (de) * 2013-03-22 2014-09-25 Robert Bosch Gmbh Verfahren zum Erzeugen einer Einwegfunktion
US9513913B2 (en) 2014-07-22 2016-12-06 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
US9467279B2 (en) 2014-09-26 2016-10-11 Intel Corporation Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality
US10110566B2 (en) * 2015-07-21 2018-10-23 Baffle, Inc. Systems and processes for executing private programs on untrusted computers
EP3552339A4 (de) 2016-12-09 2020-04-22 Cryptography Research, Inc. Programmierbare blockchiffrierung mit maskierten eingaben
CN108777611B (zh) * 2018-05-11 2021-06-18 吉林大学 基于双密钥流密码的双向链表顺序加密解密方法
GB2582900A (en) 2019-03-18 2020-10-14 Pqshield Ltd Cryptography using a cryptographic state
KR20210018130A (ko) * 2019-08-06 2021-02-17 주식회사 아이씨티케이 홀딩스 프로세서, 프로세서의 동작 방법 및 이를 포함한 전자 장치
US11886879B2 (en) 2019-08-06 2024-01-30 Ictk Holdings Co., Ltd. Processor, processor operation method and electronic device comprising same for selective instruction execution based on operand address

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040148512A1 (en) * 2003-01-24 2004-07-29 Samsung Electronics Co., Ltd. Cryptographic apparatus for supporting multiple modes
EP1596530A1 (de) * 2004-05-14 2005-11-16 Via Technologies, Inc. Vorrichtung und Verfahren zur Erzeugung einer kryptografischen Prüfsumme unter Verwendung von kryptografischen Funktionen
US20050286720A1 (en) * 2002-08-08 2005-12-29 Toshihiko Fukuoka Encrypting/decrypting device and method, encrypting device and method, decrypting device and method, and transmitting/receiving device

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3547474B2 (ja) 1994-03-22 2004-07-28 富士通株式会社 暗号演算回路
AU728942B2 (en) * 1995-06-30 2001-01-18 Canon Kabushiki Kaisha A communication apparatus and a communication system
US6118870A (en) * 1996-10-09 2000-09-12 Lsi Logic Corp. Microprocessor having instruction set extensions for decryption and multimedia applications
US6704871B1 (en) * 1997-09-16 2004-03-09 Safenet, Inc. Cryptographic co-processor
US6324288B1 (en) * 1999-05-17 2001-11-27 Intel Corporation Cipher core in a content protection system
EP1252738A2 (de) * 2000-01-31 2002-10-30 VDG Inc. Blockverschlüsselungsverfahren und vorrichtungen zum schutz der datenvertraulichkeit und integrität
US7106860B1 (en) * 2001-02-06 2006-09-12 Conexant, Inc. System and method for executing Advanced Encryption Standard (AES) algorithm
US6937727B2 (en) * 2001-06-08 2005-08-30 Corrent Corporation Circuit and method for implementing the advanced encryption standard block cipher algorithm in a system having a plurality of channels
US7280657B2 (en) * 2001-06-13 2007-10-09 Itt Manufacturing Enterprises, Inc. Data encryption and decryption system and method using merged ciphers
JP3851115B2 (ja) * 2001-06-28 2006-11-29 富士通株式会社 暗号回路
US7289524B2 (en) * 2001-10-04 2007-10-30 Bbn Technologies Corp. Execution unit for a network processor
GB2374260B (en) * 2001-10-12 2003-08-13 F Secure Oyj Data encryption
US7508937B2 (en) * 2001-12-18 2009-03-24 Analog Devices, Inc. Programmable data encryption engine for advanced encryption standard algorithm
DE10201449C1 (de) * 2002-01-16 2003-08-14 Infineon Technologies Ag Rechenwerk, Verfahren zum Ausführen einer Operation mit einem verschlüsselten Operanden, Carry-Select-Addierer und Kryptographieprozessor
US7221763B2 (en) * 2002-04-24 2007-05-22 Silicon Storage Technology, Inc. High throughput AES architecture
JP2005527853A (ja) * 2002-05-23 2005-09-15 アトメル・コーポレイション 高度暗号化規格(aes)のハードウェア暗号法エンジン
US20030223581A1 (en) * 2002-05-30 2003-12-04 Bedros Hanounik Cipher block chaining unit for use with multiple encryption cores
US6950517B2 (en) * 2002-07-24 2005-09-27 Qualcomm, Inc. Efficient encryption and authentication for data processing systems
US20040047466A1 (en) * 2002-09-06 2004-03-11 Joel Feldman Advanced encryption standard hardware accelerator and method
US20040202317A1 (en) * 2002-12-20 2004-10-14 Victor Demjanenko Advanced encryption standard (AES) implementation as an instruction set extension
US7336783B2 (en) * 2003-01-24 2008-02-26 Samsung Electronics, C., Ltd. Cryptographic systems and methods supporting multiple modes
JP3818263B2 (ja) 2003-01-28 2006-09-06 日本電気株式会社 Aes暗号処理装置、aes復号処理装置、aes暗号・復号処理装置、aes暗号処理方法、aes復号処理方法、および、aes暗号・復号処理方法
US7337314B2 (en) * 2003-04-12 2008-02-26 Cavium Networks, Inc. Apparatus and method for allocating resources within a security processor
US8060755B2 (en) 2003-04-18 2011-11-15 Via Technologies, Inc Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine
US7532722B2 (en) 2003-04-18 2009-05-12 Ip-First, Llc Apparatus and method for performing transparent block cipher cryptographic functions
US7542566B2 (en) 2003-04-18 2009-06-02 Ip-First, Llc Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
US7392399B2 (en) * 2003-05-05 2008-06-24 Sun Microsystems, Inc. Methods and systems for efficiently integrating a cryptographic co-processor
WO2004112309A1 (en) * 2003-06-16 2004-12-23 Electronics And Telecommunications Research Institue Rijndael block cipher apparatus and encryption/decryption method thereof
CN101241735B (zh) * 2003-07-07 2012-07-18 罗威所罗生股份有限公司 重放加密的视听内容的方法
US7421076B2 (en) * 2003-09-17 2008-09-02 Analog Devices, Inc. Advanced encryption standard (AES) engine with real time S-box generation
US7921300B2 (en) * 2003-10-10 2011-04-05 Via Technologies, Inc. Apparatus and method for secure hash algorithm
TWI244299B (en) 2004-01-07 2005-11-21 Admtek Inc Method for implementing advanced encryption standards by a very long instruction word architecture processor
ATE435538T1 (de) * 2004-02-05 2009-07-15 Research In Motion Ltd Speicherung auf einem chip,erzeugung und handhabung eines geheimschlüssels
CN1677921A (zh) 2004-03-31 2005-10-05 华为技术有限公司 通过可编程器件实现数据加密的方法
TWI268686B (en) * 2004-04-16 2006-12-11 Via Tech Inc Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
US7496196B2 (en) * 2004-06-30 2009-02-24 Intel Corporation Method apparatus and system of performing one or more encryption and/or decryption operations
JP4447977B2 (ja) * 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
US7783037B1 (en) * 2004-09-20 2010-08-24 Globalfoundries Inc. Multi-gigabit per second computing of the rijndael inverse cipher
JP4734906B2 (ja) * 2004-12-07 2011-07-27 ソニー株式会社 情報処理装置、情報記録媒体、および情報処理方法、並びにコンピュータ・プログラム
WO2006112114A1 (ja) * 2005-03-31 2006-10-26 Matsushita Electric Industrial Co., Ltd. データ暗号化装置及びデータ暗号化方法
US7606363B1 (en) * 2005-07-26 2009-10-20 Rockwell Collins, Inc. System and method for context switching of a cryptographic engine
JP4890976B2 (ja) * 2005-08-31 2012-03-07 キヤノン株式会社 暗号処理装置
DE602005025891D1 (de) * 2005-11-08 2011-02-24 Irdeto Access Bv Verfahren zur Ver- und Entwürfelung von Daten
US8189774B2 (en) * 2006-01-06 2012-05-29 Fujitsu Semiconductor Limited Processors for network communications
US7831039B2 (en) * 2006-06-07 2010-11-09 Stmicroelectronics S.R.L. AES encryption circuitry with CCM
US7769166B2 (en) * 2006-08-24 2010-08-03 Lsi Corporation Dual mode AES implementation to support single and multiple AES operations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050286720A1 (en) * 2002-08-08 2005-12-29 Toshihiko Fukuoka Encrypting/decrypting device and method, encrypting device and method, decrypting device and method, and transmitting/receiving device
US20040148512A1 (en) * 2003-01-24 2004-07-29 Samsung Electronics Co., Ltd. Cryptographic apparatus for supporting multiple modes
EP1596530A1 (de) * 2004-05-14 2005-11-16 Via Technologies, Inc. Vorrichtung und Verfahren zur Erzeugung einer kryptografischen Prüfsumme unter Verwendung von kryptografischen Funktionen

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ASTARLOA, A. (u.a.): Multi-architectural 128 bit AES-CBC Core based on Open-Source Hardware AES Implementations for secure industrial communications. In: International Conference on Communication Technology ICCT '06. 27.-30. November 2006, S. 1-5 *

Also Published As

Publication number Publication date
KR20100082748A (ko) 2010-07-19
DE102008014359A1 (de) 2008-10-16
GB2447563A (en) 2008-09-17
US20080229116A1 (en) 2008-09-18
TW200903254A (en) 2009-01-16
US9325498B2 (en) 2016-04-26
CN103957100A (zh) 2014-07-30
KR101302799B1 (ko) 2013-09-03
TWI390401B (zh) 2013-03-21
KR20130076834A (ko) 2013-07-08
CN101272238B (zh) 2014-06-04
CN101272238A (zh) 2008-09-24
US20160261406A1 (en) 2016-09-08
CN103957100B (zh) 2018-10-16
US8538012B2 (en) 2013-09-17
KR20080084752A (ko) 2008-09-19
GB0804870D0 (en) 2008-04-16
GB2447563B (en) 2009-09-30
JP2008283672A (ja) 2008-11-20
KR101394710B1 (ko) 2014-05-15
JP4767985B2 (ja) 2011-09-07
US20130202106A1 (en) 2013-08-08

Similar Documents

Publication Publication Date Title
DE102008014359B4 (de) Ausführen einer AES-Verschlüsselung oder -Entschlüsselung in mehreren Modi mit einem einzigen Befehl
DE69938539T2 (de) Kryptographische Einrichtung mit parallel geschalteten Verschlüsselungsblöcken
DE602004005025T2 (de) Instruktionen zur verarbeitung einer verschlusselten nachricht
DE102007052656B4 (de) Digital-Verschlüsselungs-Hardware-Beschleuniger
DE60117230T2 (de) Stromverschlüsselungsanwendungsbeschleuniger und zugehöriges Verfahren
EP2462717B1 (de) Echtzeitfähige quantencomputersichere verschlüsselung von daten aller art
EP1246043B1 (de) Verfahren zur Übertragung von Daten über einen Datenbus
DE102008016530B4 (de) Effizienter Advanced Encryption Standard (AES)-Datenweg mittels hybrider Rijndael-S-Box
EP1668516B1 (de) Entschlüsselung und verschlüsselung bei schreibzugriffen auf einen speicher
DE112017001766T5 (de) Power-side-channel-angriffsresistenter advanced-encryption-standard-beschleunigungsprozessor
DE60121284T2 (de) Verfahren und Vorrichtung zur Ausführung einer kryptographischen Funktion
DE112012002277B4 (de) Verknüpfen von Schlüssel-Steuerdaten bei Diensten allgemeiner kryptografischer Architektur
DE112016004435T5 (de) Hardware-gestützte einseitige kryptografie
DE102019100009A1 (de) Vereinheitlichter Hardwarebeschleuniger für Verschlüsselungssysteme mit symmetrischen Schlüsseln
DE112013004798T5 (de) Befehlssatz zur Nachrichtenplanung des SHA256-Algorithmus
DE102019109845A1 (de) Vereinheitlichte Beschleunigung eines Blockgeheimcodes eines symmetrischen Schlüssels für AES-SMS4-Camellia
DE102015002215A1 (de) Sortierbeschleunigungsprozessor, -Verfahren, -Systeme und -Befehle
DE102008013785A1 (de) Vorberechneter Verschlüsselungsschlüssel
DE112013004796T5 (de) Befehlssatz für die SHA1-Rundenverarbeitung in 128 Bit-Datenwegen
DE202011052333U1 (de) Verschlüsselter Speicherzugriff
DE102014213539A1 (de) Einrichtung und Verfahren zur Speicheradressenverschlüsselung
DE102015006670A1 (de) Befehle und logik zum bereitstellen von kryptographischer allzweck-gf(256)-simd- arithmetikfunktionalität
DE112014000252T5 (de) Anweisung "Vector floating point test data class immediate"
DE112013005466T5 (de) Anweisung "Vector generate mask"
DE102018006744A1 (de) Bitmatrixmultiplikation

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R018 Grant decision by examination section/examining division
R020 Patent grant now final

Effective date: 20111126