DE102008016530B4 - Effizienter Advanced Encryption Standard (AES)-Datenweg mittels hybrider Rijndael-S-Box - Google Patents

Effizienter Advanced Encryption Standard (AES)-Datenweg mittels hybrider Rijndael-S-Box Download PDF

Info

Publication number
DE102008016530B4
DE102008016530B4 DE102008016530A DE102008016530A DE102008016530B4 DE 102008016530 B4 DE102008016530 B4 DE 102008016530B4 DE 102008016530 A DE102008016530 A DE 102008016530A DE 102008016530 A DE102008016530 A DE 102008016530A DE 102008016530 B4 DE102008016530 B4 DE 102008016530B4
Authority
DE
Germany
Prior art keywords
operand
inverse
aes
results
selector
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.)
Expired - Fee Related
Application number
DE102008016530A
Other languages
English (en)
Other versions
DE102008016530A1 (de
Inventor
Ozturk Erdinc
Vinodh Gopal
Gilbert Wolrich
Wajdi K. Feghali
Kirk S. Yap
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 DE102008016530A1 publication Critical patent/DE102008016530A1/de
Application granted granted Critical
Publication of DE102008016530B4 publication Critical patent/DE102008016530B4/de
Expired - Fee Related 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
    • 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
    • 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)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

Vorrichtung, aufweisend: einen Speicher (602) zum Speichern vorberechneter Ergebnisse einer Multiplikationsoperation, die mit einem ersten Operanden und allen möglichen Werten eines zweiten Operanden durchgeführt wird; und einen Multiplexer (604) mit einer Mehrzahl von Eingängen und einem einzigen Ausgang, wobei jeder aus der Mehrzahl von Eingängen zum Empfangen eines der vorberechneten Ergebnisse aus dem Speicher (602) eingerichtet ist, wobei ein Selektor einen der möglichen Werte des zweiten Operanden zum Auswählen des einen von den vorberechneten Ergebnissen für den einzigen Ausgang umfasst, wobei der Selektor eine Inverse des zweiten Operanden ist und das eine von den vorberechneten Ergebnissen die Multiplikationsoperation und eine inverse Operation kombiniert.

Description

  • GEBIET
  • Diese Schrift bezieht sich auf Kryptographiealgorithmen und insbesondere auf den Advanced Encryption Standard(AES)-Algorithmus.
  • HINTERGRUND
  • Kryptologie ist ein Werkzeug, das auf einem Algorithmus und einem Schlüssel zum Schützen von Informationen beruht. Der Algorithmus ist ein komplexer mathematischer Algorithmus und der Schlüssel ist ein Bit-String. Es gibt zwei grundlegende Typen von Kryptologiesystemen: Systeme mit einem geheimen Schlüssel und Systeme mit einem öffentlichen Schlüssel. Ein System mit einem geheimen Schlüssel, das ebenfalls als ein symmetrisches System bezeichnet wird, hat einen einzelnen Schlüssel („geheimer Schlüssel”), der von zwei oder mehreren Parteien gemeinsam benutzt wird. Der einzelne Schlüssel wird sowohl zum Verschlüsseln als auch Entschlüsseln von Informationen verwendet.
  • Der Advanced Encryption Standard (AES), veröffentlicht durch das National Institute of Standards and Technology (NIST) als Federal Information Processing Standard (FIPS) 197, ist ein System mit einem geheimen Schlüssel. AES ist eine symmetrische Blockchiffre, die Informationen verschlüsseln und entschlüsseln kann.
  • Verschlüsselung (Chiffrieren) führt eine Reihe von Transformationen unter Verwendung des geheimen Schlüssels (Chiffrierschlüssel) zum Transformieren verständlicher Daten, die als „Klartext” bezeichnet werden, in eine unverständliche Form, die als „Chiffrat” bezeichnet wird, durch. Die Transformationen des Chiffrierens umfassen (1) Addieren eines Rundenschlüssels (vom Chiffrierschlüssel abgeleiteter Wert) zum Zustand (ein zweidimensionales Byte-Array) unter Verwendung einer Exclusive-OR(XOR)-Operation; (2) Verarbeiten des Zustands unter Verwendung einer nicht-linearen Byte-Substitutionstabelle (S-Box) (3) zyklisches Verschieben der letzten drei Zeilen des Zustands um unterschiedliche Offsets; und (4) Nehmen aller Spalten des Zustands und Vermischen deren Daten (unabhängig voneinander), um neue Spalten zu erzeugen.
  • Entschlüsselung (inverses Chiffrieren) führt eine Reihe von Transformationen unter Verwendung des Chiffrierschlüssels zum Transformieren der „Chiffrat”-Blöcke in „Klartext”-Blöcke der gleichen Größe durch. Die Transformationen des inversen Chiffrierens sind das Inverse der Transformationen des Chiffrierens.
  • Der Rijndael-Algorithmus ist im AES-Standard zum Verarbeiten von 128-Bit-Datenblöcken unter Verwendung von Chiffrierschlüsseln mit Längen von 128, 192 und 256 Bits spezifiziert. Die unterschiedlichen Schlüssellängen werden typischerweise als AES-128, AES-192 und AES-256 bezeichnet.
  • Der AES-Algorithmus transformiert den Klartext in Chiffrat oder Chiffrat in Klartext in 10, 12 oder 14 aufeinanderfolgenden Runden, wobei die Anzahl der Runden von der Länge des Schlüssels abhängt.
  • US 2004/0184602 A1 offenbart einen AES-Verschlüsselungsprozessor, der aus einer Auswahleinheit, die mit Zeilen- und Spaltenindices ein Element auswählt, das als ein Index verwendet wird, um einen Ersatzwert zu erhalten, und einer Koeffiziententabelle aufgebaut ist, die ein erstes bis viertes Element als Antwort auf den Zeilenindex bereitstellt. Der Prozessor verfügt ferner über einen ersten bis vierten Galois-Feld-Multiplexer, die durch Multiplikation des Ersatzwerts mit dem ersten bis vierten Koeffizienten entsprechend ein erstes bis viertes Produkt berechnen, wobei ein Akkumulator des Prozessors das erste bis vierte Produkt akkumuliert, um ein erstes bis viertes Element einer ausgewählten Spalte eines Ergebniszustands zu entwickeln.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Merkmale von Ausführungsformen des beanspruchten Gegenstands der Erfindung werden im Verlauf der folgenden detaillierten Beschreibung und unter Bezugnahme auf die Zeichnungen klar, in denen gleiche Bezugszeichen gleiche Teile beschreiben und in denen:
  • 1 ein Blockdiagramm eines Systems ist, das einen AES-Datenweg zum Durchführen von AES-Verschlüsselungs- oder Entschlüsselungsrundenoperationen in einem Mehrzweckprozessor umfasst;
  • 2 ein Blockdiagramm einer Ausführungsform des in 1 gezeigten Prozessors ist;
  • 3 ein Blockdiagramm eines Teils des in 1 gezeigten Prozessors ist, das eine Ausführungsform einer in 2 gezeigten Ausführungseinheit zum Durchführen von AES-Entschlüsselung umfasst;
  • 4 ein Blockdiagramm einer Ausführungsform des in 3 gezeigten AES-Datenwegs ist, das einen Entschlüsselungsdatenweg umfasst;
  • 5 ein Blockdiagramm ist, das eine Ausführungsform zum Durchführen einer Inversion in GF(28) für ein Byte (8 Bits) im 128-Bit-Datenweg darstellt;
  • 6 eine Ausführungsform einer beliebigen der in 5 gezeigten kombinierten inversen Multiplikationsoperationen darstellt;
  • 7 ein Blockdiagramm ist, das Multiplikatoren zum Berechnen konstanter Polynommultiplikationen in der in 5 gezeigten inversen Abbildung darstellt; und
  • 8 eine Ausführungsform eines Multiplikators für ein generelles Multiplizieren darstellt, wenn die Eingänge asymmetrische Ankunftszeiten haben.
  • Obwohl die folgende detaillierte Beschreibung mit Verweis auf darstellende Ausführungsformen des beanspruchten Gegenstands der Erfindung fortgesetzt wird, sind für den Durchschnittsfachmann viele Alternativen, Änderungen und Variationen derselben ersichtlich. Entsprechend ist beabsichtigt, dass der beanspruchte Gegenstand der Erfindung allgemein betrachtet wird und nur so, wie in den begleitenden Ansprüchen dargelegt ist, definiert ist.
  • DETAILLIERTE BESCHREIBUNG
  • Der Advanced Encryption Standard(AES)-Algorithmus ist ein berechnungsintensiver Algorithmus, der typischerweise als Software oder in einem spezialisierten Prozessor durchgeführt wird. Somit wird Verschlüsselung typischerweise nur zum Verschlüsseln einer Untermenge der in Computer gespeicherten Informationen verwendet, zum Beispiel von Informationen, die als „streng geheim” eingestuft werden. Nichtsdestotrotz besteht eine Notwendigkeit, weitere der Informationen, die in Computer gespeichert werden, zu verschlüsseln. So wären zum Beispiel, wenn alle auf einem mobilen Computer gespeicherten Informationen verschlüsselt wären, diese Informationen im Falle, dass der mobile Computer gestohlen wird, geschützt.
  • Typischerweise wird eine Reihe von Transformationen sowohl zum Verschlüsseln als auch Entschlüsseln in einem einzigen Datenweg kombiniert. Dies resultiert in der Addition von Verzögerungen aufgrund der Notwendigkeit des Bestimmens an zahlreichen Stellen, ob die durchgeführte Operation eine Verschlüsselung oder Entschlüsselung ist, um die entsprechende Transformation auszuwählen. Da die Verzögerung zum kritischen Weg hinzugerechnet wird, verringert sie die Geschwindigkeit, mit der die Verschlüsselungs-/Entschlüsselungsoperationen durchgeführt werden können.
  • Mit den separaten Wegen kann jeder Weg individuell optimiert werden, um Verzögerungen zu reduzieren. Die inversen Chiffriertransformationen umfassen eine inverse S-Box-Transformation, die den Zustand unter Verwendung einer nicht-linearen Byte-Substitutionstabelle (S-Box) und einer inversen Vermische-Spalten-Transformation, die alle Spalten des Zustands nimmt und deren Daten (unabhängig voneinander) vermischt, um neue Spalten zu erzeugen, verarbeitet. Diese beiden Transformationen erfordern Multiplikationsoperationen und mehrere XOR-Operationen, die zur Verzögerung des kritischen Wegs insbesondere im Entschlüsselungsweg beitragen.
  • Der kritische Verzögerungsweg durch das inverse Vermische-Spalten und inverse S-Box im Entschlüsselungsdatenweg kann durch Kombinieren der inversen S-Box und inversen Vermische-Spalten-Operationen in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung reduziert werden.
  • Da sowohl inverse S-Box als auch Polynommultiplikationsoperationen Kombinationen von XOR-Logik sind, sind in einer Ausführungsform der vorliegenden Erfindung die Polynommultiplikationsoperationen für die inversen Vermische-Spalten-Operationen in der inversen S-Box eingebettet.
  • 1 ist ein Blockdiagramm eines Systems 100, das einen AES-Datenweg 103 zum Durchführen von AES-Verschlüsselungs- oder Entschlüsselungsrundenoperationen in einem Mehrzweckprozessor umfasst. Das System 100 umfasst einen Prozessor 101, einen Speicher-Controller-Hub (MCH) 102 und einen Input-/Output(I/O)-Controller-Hub (ICH) 104. Der MCH 102 umfasst einen Speicher-Controller 106, der die Kommunikation zwischen dem Prozessor 101 und Speicher 108 steuert. Der Prozessor 101 und MCH 102 kommunizieren durch einen System-Bus 116.
  • Der Prozessor 101 kann ein beliebiger aus einer Mehrzahl von Prozessoren sein, so zum Beispiel ein Single Core Intel® Pentium IV®-Prozessor, ein Single Core Intel Celeron-Prozessor, ein Intel® XScale-Prozessor oder ein Multi-Core-Prozessor, wie zum Beispiel Intel® Pentium D, Intel® Xeon®-Prozessor oder Intel® Core® Duo-Prozessor oder jeder andere Prozessortyp. Der AES-Datenweg 103 im Prozessor 101 kann AES-Verschlüsselungs- und Entschlüsselungsrundenoperationen auf Daten duchführen, die in Speicher 108 gespeichert und/oder im Speichergerät 112 gespeichert werden können.
  • Der Speicher 108 kann Dynamic Random Access Memory (DRAM), Static Random Access Memory (SRAM), Synchronized Dynamic Random Access Memory (SDRAM), Double Data Rate 2 (DDR2) RAM oder Rambus Dynamic Random Access Memory (RDRAM) oder jeder andere Speichertyp sein.
  • Der ICH 104 kann mit dem MCH 102 unter Verwendung von einem Hochgeschwindigkeits-Chip-zu-Chip-Interconnect 114 verbunden sein, wie zum Beispiel Direct Media Interface (DMI). DMI unterstützt 2 Gigabit/Sek. simultane Transferraten über zwei unidirektionale Spuren.
  • Der ICH 104 kann einen Speicherung-I/O-Controller 110 zum Steuern von Kommunikation mit zumindest einem mit dem ICH 104 verbundenen Speichergerät 112 umfassen. Das Speichergerät kann zum Beispiel ein Diskettenlaufwerk, Digital Video Disk(DVD)-Laufwerk, Compact Disk(CD)-Laufwerk, Redundant Array of Independent Disks (RAID), Bandlaufwerk oder anderes Speichergerät sein. Der ICH 104 kann mit dem Speichergerät 112 durch einen Speicherungsprotokoll-Interconnect 118 unter Verwendung von einem seriellen Speicherungsprotokoll, wie zum Beispiel Serial Attached Small Computer System Interface (SAS) oder Serial Advanced Technology Attachment (SATA), kommunizieren.
  • 2 ist ein Blockdiagramm einer Ausführungsform des in 1 gezeigten Prozessors 101. Prozessor 101 umfasst eine Fetch- und Dekodiereinheit 206 zum Dekodieren von Prozessorinstruktionen, die von Level 1(L1)-Instruktion-Cache 202 empfangen werden. Daten, die zum Ausführen der Instruktion verwendet werden, können in einer Registerdatei 208 gespeichert werden. In einer Ausführungsform umfasst die Registerdatei 208 eine Mehrzahl von 128-Bit-Registern, die von einer AES-Instruktion verwendet werden, um Daten zur Nutzung durch die AES-Instruktion zu speichern.
  • In einer Ausführungsform ist die Registerdatei eine Gruppe von 128-Bit-Registern ähnlich zu den 128-Bit-MMX-Registern, die in Intel Pentium MMX-Prozessoren bereitgestellt werden, die einen Satz von Streaming (Single Instruction Multiple Data (SIND)) Extension(SSE)-Instruktionen haben. In einem SIMD-Prozessor werden Daten in 128-Bit-Blöcken verarbeitet, die zum gleichen Zeitpunkt geladen werden können. Die 128-Bit-Register ermöglichen, dass Instruktionen auf einen 128-Bit-Block (16 Bytes) in einer Operation angewandt werden.
  • Die Fetch- und Dekodiereinheit 206 ruft Makroinstruktionen aus L1-Instruktion-Cache 202 ab, dekodiert die Makroinstruktionen und zerteilt sie in einfache Operationen, genannt Mikrooperationen (μops). Die Ausführungseinheit 210 plant und führt die Mikrooperationen aus. In der gezeigten Ausführungsform umfasst der AES-Datenweg 103 in der Ausführungseinheit 210 Mikrooperationen für eine AES-Instruktion. Die Ausscheideeinheit (retirement unit) 212 schreibt die Ergebnisse der ausgeführten Instruktionen in Register oder Speicher.
  • 3 ist ein Blockdiagramm eines Teils des in 1 gezeigten Prozessors 101, das eine Ausführungsform einer in 2 gezeigten Ausführungseinheit 210 zum Durchführen von AES-Verschlüsseln und -Entschlüsseln umfasst.
  • AES hat eine festgelegte Blockgröße von 128 Bits und eine Schlüsselgröße von 128, 192 oder 256 Bits und arbeitet auf einem 4×4(16 Bytes (128 Bit festgelegter Blockgröße))-Byte-Array, das als der ‚Zustand’ bezeichnet wird. Der AES-Algorithmus transformiert (verschlüsselt) einen 128-Bit-Klartextblock in einen 128-Bit-Block mit Chiffrat oder (entschlüsselt) einen 128-Bit-Block mit Chiffrat in einen 128-Bit-Block mit Klartext in 10, 12 oder 14 aufeinanderfolgenden Runden, wobei die Anzahl der Runden von der Schlüsselgröße (128, 192 oder 256 Bits) abhängt.
  • Die untere Tabelle 1 zeigt ein Beispiel des 128-Bit-Ergebnisses der Durchführung von AES-Verschlüsselung unter Verwendung eines 128-Bit-Schlüssels auf einem 128-Bit-Eingabeblock.
    128-Bit-Eingabe: 00112233445566778899aabbccddeeff (Hexadezimal)
    128-Bit-Schlüssel: 000102030405060708090a0b0c0d0e0f (Hexadezimal)
    128-Bit-Ergebnis: 69c4e0d86a7b0430d8cdb78070b4c55a (Hexadezimal)
    Tabelle 1
  • In einer Ausführungsform kann eine AES-Instruktion (Makroinstruktion) zum Durchführen von AES-Verschlüsselung oder -Entschlüsselung im AES-Datenweg 103 symbolisch definiert sein als:
    REG[dest] = aes(REG[src],
    key-size = {128, 192, 255},
    #rounds = {1, 10, 12, 14},
    op = {encrypt/decrypt},
    special_last_round = {true/false})
  • Beim Dekodieren der AES-Instruktion werden mehrere Parameter, die zum Steuern des Flusses in jeder AES-Runde genutzt werden, in einem Kontrollregister 322 gespeichert. Die Parameter umfassen die Größe des Schlüssels (128 Bits, 192 Bits oder 256 Bits), Anzahl von Runden (1, 10, 12 oder 14), den Typ der Operation (Verschlüsseln/Entschlüsseln) und ob eine besondere letzte Runde vorhanden ist. AES-Mikrooperationen führen n Runden von AES basierend auf dem Wert von n entsprechend durch. Mit einem Wert der Anzahl von Runden von 10, 12, 14 können AES-Mikrooperationen den aktuellen Standard-AES für Schlüsselgrößen von 128 Bits, 192 Bits oder 256 Bits durchführen. Dadurch, dass erlaubt wird, dass der Typ der Runde (letzte oder nicht letzte) programmierbar ist, kann eine AES-ähnliche Chiffre mit 20 Runden (mit einer letzten Runde nach AES-Stil) oder nur ein „Eine Runde”-Durchgang unter Verwendung derselben AES-Instruktion und AES-Mikrooperationen durchgeführt werden.
  • Wenn die gewählte Operation (op) Verschlüsseln (Chiffrieren) ist, führt der AES-Datenweg 103 eine Reihe von Transformationen unter Verwendung eines geheimen Schlüssels (Chiffrierschlüssel) durch, um verständliche Daten, die als „Klartext” bezeichnet werden, in eine unverständliche Form, die als „Chiffrat” bezeichnet wird, zu transformieren, wie oben in Tabelle 1 gezeigt. Die Transformationen des Chiffrierens, die vom AES-Datenweg 103 für jede der Runden (1, 10, 12 oder 14) mit einem Rundenschlüssel 328, der von einem On-the-fly-Schlüssel-Scheduler 300 zur Verfügung gestellt wird, durchgeführt werden, umfassen: (1) Addieren eines Rundenschlüssels (vom Chiffrierschlüssel abgeleiteter Wert) zum Zustand (ein zweidimensionales Byte-Array) unter Verwendung einer Exclusive-OR(XOR)-Operation; (2) Verarbeiten des Zustands unter Verwendung einer nicht-linearen Byte-Substitutionstabelle (S-Box); (3) zyklisches Verschieben der letzten drei Zeilen des Zustands um unterschiedliche Offsets; und (4) Nehmen aller Spalten des Zustands und Vermischen ihrer Daten (unabhängig voneinander), um neue Spalten zu erzeugen. Wenn das „special_last_round” „true” ist, wird Transformation (4) nicht für die letzte Runde durchgeführt.
  • Die Registerdatei 304 hat eine Mehrzahl von 128-Bit-Registern (REG), die von den AES-Instruktionen verwendet werden können. Einer der 128-Bit-Register REG[src] ist dazu bestimmt, einen Quellenoperanden für die erste AES-Runde zu speichern, und ein anderer der 128-Bit-Register REG[dst], das Ergebnis der AES-Instruktion zu speichern. Ein 128-Bit-Datenblock zum Verschlüsseln oder Entschlüsseln durch die AES-Instruktion wird in ein Quellenregister 306 in der Registerdatei 304 vor Ausgeben der AES-Instruktion geladen. Der Quellenoperand wird in einer Anzahl von Runden (1, 10, 12 oder 14) transformiert, um das Ergebnis des Verschlüsselns/Entschlüsselns der 128-Bit-Quellendaten zur Verfügung zu stellen. Der Quellenoperand kann unter Verwendung des Schlüssels zu verschlüsselnde 128 Bits aus Klartext oder unter Verwendung des Schlüssels zu entschlüsselnde 128 Bits aus Chiffrat sein.
  • Nachdem eine AES-Instruktion von der Fetch- und Dekodiereinheit 206 dekodiert wurde, hat die Ausführung der AES-Instruktion durch die Ausführungseinheit 210 ein Durchführen der der AES-Instruktion zugeordneten Mikrooperationen zur Folge. Die Ausführungseinheit 210 ruft den Quellenoperanden und den Originalschlüssel, die in der Registerdatei 304 gespeichert sind, vor dem Durchführen der Verschlüsselungs- oder Entschlüsselungsoperation unter Verwendung der Mikrooperationen für die AES-Instruktion ab. In der gezeigten Ausführungsform wird der Quellenoperand [SRC] (128-Bit-Blockzustand) im Register 306 gespeichert und der 128-Bit-, 192-Bit- oder 256-Bit-Schlüssel in Register(n) 308, 310 in der Registerdatei 304 gespeichert. Im Fall eines 128-Bit-Schlüssels werden die gesamten 128 Bits des Schlüssels in einem der 128-Bit-Register in der Registerdatei 304 gespeichert, zum Beispiel Register 308. Für Schlüsselgrößen größer als 128 Bits werden die höchstwertigen Bits (größer als 128 Bits) in einem anderen 128-Bit-Register, zum Beispiel Register 310, gespeichert. Der Parameter der Schlüsselgröße für die AES-Instruktion zeigt an, ob der Schlüssel in einem Register oder in mehr als einem Register in der Registerdatei 304 gespeichert wird. Das eine oder die mehreren Register in der Registerdatei 304, die den Schlüssel speichern, werden während der Ausführung der AES-Instruktion nicht geändert. In anderen Ausführungsformen können andere Register in der Registerdatei 304 genutzt werden, um den Schlüssel und den Quellenoperanden zu speichern. Nach dem Abschluss der Ausführung der AES-Instruktion wird das Ergebnis [DST] in Register 312 in der Registerdatei 304 gespeichert.
  • Um den zum Speichern des dem Schlüssel zugeordneten expandierten Schlüssels (d. h., die Rundenschlüssel für jede der 10, 12 oder 14 Runden) benötigten Speicher zu reduzieren, umfasst die Ausführungseinhit 210 einen On-the-fly-Schlüssel-Scheduler 300. Statt vorab den expandierten Schlüssel zu generieren und ihn in einer Tabelle zu speichern, generiert der On-the-fly-Schlüssel-Scheduler 300 den Verschlüsselungs-/Entschlüsselungs-„Rundenschlüssel” 328 on-the-fly, d. h. so, wie er für die nächste AES-Runde benötigt wird. Der Verschlüsselungs-/Entschlüsselungsrundenschlüssel 328 wird an den AES-Datenweg 103 zur Verwendung in der nächsten AES-Runde weitergeleitet. Der On-the-fly-Scheduler 300 umfasst ein 256-Bit-Schlüsselregister 324 zum Speichern des Originalschlüssels, aus dem der expandierte Schlüssel generiert wird. Der Originalschlüssel wird in das 256-Bit-Schlüsselregister aus einem oder beiden Registern 308, 310 in der Registerdatei 304 abhängig von der Größe des Schlüssels (128, 192 oder 256) geladen.
  • Die Schlüsselexpansion 326 expandiert die n Bytes des in Register 304 gespeicherten Originalschlüssels in b Bytes eines expandierten Schlüssels, wobei die ersten n Bytes des expandierten Schlüssels der Originalschlüssel sind. So wird zum Beispiel für einen 128-Bit-Schlüssel der 128-Bit-Schlüssel in einen 176 Bytes expandierten Schlüssel expandiert, d. h. 11 × 16 Bytes, wobei die ersten 16 Bytes der Original-128-Bit-Schlüssel sind und somit die Anzahl der Runden 10 ist. Die 24 Bytes eines 192-Bit-Schlüssels werden auf 208 Bytes (13×16 Bytes) expandiert, um 12 „Rundenschlüssel”, einer für jede der 12 Runden, zur Verfügung zu stellen, und die 32 Bytes eines 256-Bit-Schlüssels werden auf 240 Bytes (15×16 Bytes) expandiert, um 14 „Rundenschlüssel”, einer für jede der 14 Runden, zur Verfügung zu stellen.
  • 4 ist ein Blockdiagramm einer Ausführungsform des in 3 gezeigten AES-Datenwegs 103. Der AES-Datenweg 103 umfasst zwei unabhängige Datenwege: einen Verschlüsselungsdatenweg 400 und einen Entschlüsselungsdatenweg 402. Der Verschlüsselungsdatenweg (Chriffrieren) 400 führt eine AES-Verschlüsselungsrunde durch und umfasst Mikrooperationen für die folgenden Stufen: Blockzustand 404, SubBytes (S-Box) 408, Verschiebe-Zeilen 406, Vermische-Spalten 410 und Addiere-Rundenschlüssel 412. Der Entschlüsselungsdatenweg (inverses Chiffrieren) 402 führt eine AES-Entschlüsselungsrunde durch und umfasst Mikrooperationen für die folgenden Stufen: inverses VerschiebeZeilen 416, inverses Sub-Bytes (S-Box) 418, inverses VermischeSpalten 420 und Addiere-Rundenschlüssel 422. In anderer Ausführungsform kann die Rundenoperationsequenz für den Entschlüsselungsdatenweg 402 das inverse VermischeSpalten 420 und Addiere-Rundenschlüssel 422 mit der Sequenz von Operationen umkehren, die in der folgenden Reihenfolge durchgeführt werden: inverses VerschiebeZeilen 416, inverses SubBytes (S-Box) 418, Addiere-Rundenschlüssel 422 und inverses Vermische-Spalten 420.
  • Aus Architektursicht gibt es exakt einen Zustand, der von dem Verschlüsselungsdatenweg 400 und dem Entschlüsselungsdatenweg 402 geteilt wird. Wenn der initiale Zustand geladen wird, werden sowohl Blockzustand 404 als auch Blockzustand 414 mit demselben Wert durch entsprechende Multiplexer 432, 434 geladen. Der Verschlüsselungsrundenschlüssel und Entschlüsselungsrundenschlüssel werden durch Bereitstellen eines separaten Blockzustands 404, 414 für den AES-Verschlüsselungsdatenweg 400 und den AES-Entschlüsselungsdatenweg 402 separat registriert. So wird zum Beispiel Verschlüsselungsrundenschlüssel 436 an Blockzustand 404 gerichtet und Entschlüsselungsrundenschlüssel 438 an Blockzustand 406 gerichtet. Nach jeder AES-Verschlüsselungs-/Entschlüsselungsrunde wird jeder Blockzustand 404, 414 mit dem entsprechenden nächsten AES-Rundenwert von der entsprechenden Addiere-Rundenschlüssel-Stufe 412, 430 aktualisiert. Nichtsdestotrotz ist nur ein Blockzustandswert gültig, abhängig davon, ob der Modus der Operation Verschlüsseln oder Entschlüsseln ist.
  • Die Ausgabe der letzten Verschlüsselungsrunde des Verschlüsselungsdatenwegs 400 wird in Register 422 gespeichert. Die Ausgabe der letzten Entschlüsselungsrunde des Entschlüsselungsdatenwegs 402 wird in Register 424 gespeichert. Ein Multiplexer 426 wird nach dem AES-Verschlüsselungsdatenweg 400 und AES-Entschlüsselungsdatenweg 402 hinzugefügt, um auszuwählen, ob die Ausgabe der letzten AES-Runde von dem AES-Verschlüsselungsdatenweg 400 oder dem AES-Enrschlüsselungsdatenweg 402 genommen wird. Der Multiplexer 426 ermöglicht, dass das Ergebnis der letzten Runde des AES-Verschlüsselungswegs oder das Ergebnis der letzten Runde des AES-Entschlüsselungswegs 402 basierend darauf, ob der Modus Verschlüsseln oder Entschlüsseln ist, als Ergebnis der AES-Instruktion ausgegeben wird.
  • Durch Trennen des AES-Verschlüsselungsdatenwegs 400 und des AES-Entschlüsselungsdatenwegs 402 wird zusätzliche Logik, die an unterschiedlichen Stufen zum Auswählen, ob die AES-Operation Verschlüsseln oder Entschlüsseln ist, benutzt wird, nicht benötigt. Somit wird die Verzögerung des kritischen Wegs durch den AES-Datenweg 103 reduziert.
  • Des Weiteren können der AES-Verschlüsselungsdatenweg 400 und der AES-Entschlüsselungsdatenweg 402 individuell optimiert werden. So nimmt zum Beispiel aufgrund der zusätzlichen Exclusive-OR(XOR)-Gatter das inverse Vermische-Spalten 420 im AES-Entschlüsselungsdatenweg 402 längere Verzögerungen auf sich, als das korrespondierende Vermische-Spalten 410 im AES-Verschlüsselungsdatenweg 400. Durch Trennen des AES-Verschlüsselungsdatenwegs 400 und des AES-Entschlüsselungsdatenwegs 402 wird diese zusätzliche Verzögerung aus dem kritischen Weg des AES-Verschlüsselungsdatenwegs 400 entfernt.
  • Der Wert der finalen Runde wird vom Verschlüsselungsdatenweg 400 und Entschlüsselungsdatenweg 402 übersprungen, bevor er in entsprechenden Register 422, 424 registriert wird und vor den Vermische-Spalten-Transformationen (Vermische-Spalten 410 im Verschlüsselungsweg und inverses Vermische-Spalten 422 im Entschlüsselungsdatenweg). Eine (finale) Addiere-Rundenschlüssel-Stufe 420 wird zum Durchführen der Addiere-Rundenschlüssel-Operation für die finale AES-Runde zur Verschlüsselung hinzugefügt. Eine (finale) Addiere-Rundenschlüssel-Stufe 430 wird zum Durchführen der Addiere-Rundenschlüssel-Operation für die finale AES-Runde zur Entschlüsselung hinzugefügt. Die zusätzlichen (finalen) Addiere-Rundenschlüssel-Stufen 420, 430 werden von dem Verschlüsselungsdatenweg 400 und dem Entschlüsselungsdatenweg 402 getrennt. Dies resultiert somit in einer Verringerung der Verzögerung des kritischen Wegs in der finalen AES-Verschlüsselungsrunde und der finalen AES-Entschlüsselungsrunde.
  • Des Weiteren wird, da das inverse Vermische-Spalten 420 nicht in der finalen AES-Entschlüsselungsrunde durchgeführt wird und das Vermische-Spalten 410 nicht in der finalen AES-Verschlüsselungsrunde durchgeführt wird, die zusätzliche Verzögerung aufgrund des Multiplexers 426 in der unkritischen finalen Entschlüsselungs-Nerschlüsselungs-AES-Runde versteckt. Die Verzögerung erscheint als versteckt, da keine zusätzliche Verzögerung zum AES-Verschlüsselungsweg 400 hinzugefügt wird und die durch finales Addiere-Rundenschlüssel 428 und Multiplexer 426 hinzugefügte Verzögerung kleiner als die Verzögerung durch Vermische-Spalten 410 ist.
  • Der Verschlüsselungs-/Entschlüsselungsmodus wählt aus, ob der Verschlüsselungswert oder der Entschlüsselungswert gültig ist und das gültige Ergebnis wird durch Multiplexer 426 ausgegeben. Die Reduktion der Verzögerung des kritischen Wegs aufgrund der Partitionierung des AES-Datenwegs 103 in separate AES-Verschlüsselungs-/Entschlüsselungsdatenwege 400, 402 ermöglicht eine entsprechende Erhöhung der Frequenz des Taktgenerators des Prozessors. Wie besprochen, wird eine Verschlüsselungs- und eine Entschlüsselungsoperation auf einem 128-Bit-Blockzustand parallel durchgeführt und das gültige Ergebnis (entweder das Verschlüsselungs- oder Entschlüsselungsergebnis) der Operation ausgegeben. Der Fluss durch den AES-Verschlüsselungsdatenweg 400 und den AES-Entschlüsselungsdatenweg 402 zum Durchführen einer Verschlüsselungs-/Entschlüsselungsoperation auf einem 128-Bit-Block wird nachfolgend beschrieben.
  • Wenn die Fetch- und Dekodiereinheit 206 eine AES-Instruktion dekodiert, werden der ursprüngliche Schlüssel und der zu verschlüsselnde Datenblock (128 Bit), die in der Registerdatei 304 gespeichert sind, an den AES-Verschlüsselungsweg 400 und den AES-Entschlüsselungsweg 402 im AES-Datenweg 103 zum Verarbeiten weitergeleitet. Ein Multiplexer 432 wählt aus, ob die entsprechende Eingabe für die Blockzustände 404, 414 von der Registerdatei 304 genommen wird oder ein AES-Rundenschlüssel 436 aus einer vorhergehenden AES-Verschlüsselungsrunde oder AES-Entschlüsselungsrunde ist.
  • Im Blockzustand 404 wird die 128-Bit-Eingabe (Zustand) für die AES-Verschlüsselungsrunde mit einem Rundenschlüssel (128-Bit-Teil des der Runde zugeordneten expandierten Schlüssels) unter Verwendung einer bit-weisen XOR-Operation addiert, um einen 128-Bit-Zwischenwert (Zustand) zu erzeugen.
  • In Verschiebe-Zeilen 406 läuft der 128-Bit-Zwischenwert (Zustand) durch eine bit-lineare Transformation, in der Bytes in jeder Zeile des 4×4-Arrays (Zustand) zyklisch nach links verschoben werden. Die Anzahl an Stellen, um die jedes Byte verschoben wird, unterscheidet sich für jede Zeile des 4×4-Arrays.
  • In S-Box (SubBytes) 408 wird jedes Byte des Ergebnisses von Verschiebe-Zeilen mit einem anderen Byte-Wert ersetzt, der in einer Lookup-Tabelle gespeichert und aus dieser geholt werden kann, die ebenfalls als eine Substitutionsbox oder „S-Box” bezeichnet wird. Die 5-Box nimmt eine Anzahl an Eingabe-Bits, m, und transformiert sie in eine Anzahl von Ausgabe-Bits, n, und ist typischerweise als eine Lookup-Tabelle implementiert. In einer Ausführungsform kann eine festgelegte Lookup-Tabelle verwendet werden. Diese Operation liefert eine Nichtlinearität durch die Verwendung der inversen Funktion in einem Galois-Körper (GF)(28). So kann zum Beispiel die n-Bit-Ausgabe durch Auswählen einer Zeile in der Lookup-Tabelle unter Verwendung der äußeren zwei Bits der m-Bit-Eingabe und durch Auswählen der Spalte unter Verwendung der inneren Bits der m-Bit-Eingabe gefunden werden.
  • In Vermische-Spalten 410 laufen die Ergebnisse von S-Box 408 durch eine bit-lineare Transformation, in der jede Spalte des 4×4-Arrays (Zustand) als ein Polynom in einem binären Galois-Körper (GF)(28) behandelt wird und danach modulo x4 + 1 mit einem festgelegten Polynom c(x) = 3x3 + x2 + x + 2 multipliziert wird.
  • Ein Addiere-Rundenschlüssel 412 nach Vermische-Spalten 410 führt eine Exlusive-OR-Funktion auf dem nächsten AES-Rundenschlüssel 328, der vom On-the-fly-Scheduler 300 empfangen wurde, und dem Ergebnis der AES-Runde durch.
  • Eine letzte AES-Verschlüsselungsrunde unterscheidet sich von den anderen AES-Entschlüsselungsrunden, indem sie die Vermische-Spalten-Stufe 410 auslässt.
  • In Blockzustand 414 wird die 128-Bit-Eingabe (Zustand) an die AES-Entschlüsselungsrunde mit einem Rundenschlüssel (128-Bit-Teil des der Runde zugeordneten expandierten Schlüssels) unter Verwendung einer bit-weisen XOR-Operation addiert, um einen 128-Bit-Zwischenwert (Zustand) zu erzeugen.
  • In inversen Verschiebe-Zeilen 418 wird die inverse Operation zu Verschiebe-Zeilen 406 durchgeführt.
  • Im inversen S-Box (SubBytes) 416 wird die inverse Operation zu S-Box 408 durchgeführt.
  • In inversen Vermische-Spalten 420 wird die folgende inverse Vermische-Spalten-Transformation für jedes Byte (s0–S3) für jede der vier Spalten (c) des 4×4-Arrays durchgeführt: s'0,c = ({0E}·s0,c) ⊕ ({0B}·s1,c) ⊕ ({0D}·s2,c) ⊕ ({09}·s3,c) s'1,c = ({09}·s0,c) ⊕ ({0E}·s1,c) ⊕ ({0B}·s2,c) ⊕ ({0D}·s3,c) s'2,c = ({0D}·s0,c) ⊕ ({09}·s1,c) ⊕ ({0E}·s2,c) ⊕ ({0B}·s3,c) s'3,c = ({0B}·s0,c) ⊕ ({0D}·s1,c) ⊕ ({09}·s2,c) ⊕ ({0E}·s3,c)
  • Die oben gezeigte Transformation gilt für eine Spalte (c). Die Spalte hat vier Bytes, bezeichnet als s0, s1, s2, s3. E, B, D und 9 sind konstante Polynomwerte, die mit jedem Byte multipliziert werden, um ein Ausgabe-Byte (s'0–s'1) zu berechnen. Jedes Ausgabe-Byte s'0, s'1, s'2, s3 wird durch Multiplizieren aller Bytes in der Spalte mit einem unterschiedlichen von den konstanten Werten und durch Durchführen einer Exclusive-OR(XOR)-Operation auf dem Ergebnis jeder Multiplikationsoperation berechnet. Somit erfordert jedes Ausgabe-Byte vier Multiplikationsoperationen und drei XOR-Operationen. Die konstanten Polynommultiplikationen erfordern eine signifikante Anzahl von XOR-Operationen zusätzlich zu den drei XOR-Operationen pro Ausgabe-Byte pro Spalte. Somit fügt das inverse Vermische-Spalten eine signifikante Verzögerung des kritischen Wegs zum Entschlüsselungsdatenweg 402 hinzu.
  • Ein Addiere-Rundenschlüssel 422 führt nach der inversen Vermische-Spalten-Stufe 420 eine Exclusive-OR-Funktion auf dem Verschlüsselungs-/Entschlüsselungsrundenschlüssel 328 vom On-the-fly-Scheduler 300 und dem Ergebnis der vorhergehenden AES-Entschlüsselungsrundenoperation durch.
  • Eine letzte AES-Entschlüsselungsrunde unterscheidet sich von den anderen AES-Entschlüsselungsrunden, indem sie die inverse Vermische-Spalten-Stufe 420 auslässt.
  • Der kritische Verzögerungsweg durch das inverse Vermische-Spalten 420 und inverse S-Box 418 des Entschlüsselungsdatenwegs 402 kann durch Kombinieren der inversen S-Box und inversen Vermische-Spalten-Operationen in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung reduziert werden.
  • Da sowohl inverse S-Box als auch Polynommultiplikationsoperationen Kombinationen von XOR-Logik sind, sind in einer Ausführungsform der vorliegenden Erfindung die Polynommultiplikationsoperationen in der inversen Kombination aus S-Box und Vermische-Spalten 430 eingebettet. Statt einer Lookup-Tabelle verwendet die inverse Kombination aus S-Box und Vermische-Spalten 430 zum Durchführen der inversen S-Box-Operationen einen funktionalen zusammengesetzten Körper.
  • Die inverse SubByte-Transformation ist durch Zusammensetzen von zwei Transformationen aufgebaut:
    • 1. Affine Transformation
    • 2. Inversion in GF(28)
  • Der Körper GF(28) ist eine Erweiterung des Körpers GF(24). Deshalb kann jedes Element, a, aus GF(28) als ein Polynom der Form ahx + al in GF(28) dargestellt werden. Somit kann die Inversion in GF(28) durch Polynominversion in GF(24) wie folgt realisiert werden: (ahx + al)–1 = (ah ⊗ d)x + (ah ⊕ al) ⊗ d Gleichung 1 d = ((ah 2 ⊗ {0E}) ⊕ (ah ⊗ al) ⊕ a1 2)–1 Gleichung 2
  • 5 ist ein Blockdiagramm, das eine Ausführungsform zum Durchführen einer Inversion in GF(28) für ein Sub (8 Bits) im 128-Bit-Datenweg darstellt. Das ‚Element a’ 520 hat 8 Bits und stellt ein Polynom aus GF(28) dar.
  • Eine Abbildungsoperation wird auf dem Byte a aus GF(28) 520 in Abbildung 502 durchgeführt, um das Element, a, in GF(28) als ein Polynom der Form ahx + al in GF(24) darzustellen. SubByte ah umfasst die höherwertigen 4 Bits und SubByte al umfasst die niederwertigen 4 Bits von Byte a. Das inverse SubByte von a in GF(28), d. h. (a)–1, wird in GF(24) durch (ahx + al)–1 in obiger Gleichung 1 repräsentiert und erfordert zuerst die Berechnung von d, wie in obiger Gleichung 2 gezeigt ist.
  • Multiplikatoren 504, 506 und XOR-Funktion 514 führen die Berechnung für obige Gleichung 1 durch. SubBytes ah und al sind Eingaben für Multiplikatoren 504 und 506. Multiplikator 504 berechnet (ah ⊗ al) in Gleichung 2 und Multiplikator 506 berechnet ((ah 2 ⊗ {0E}) ⊕ al 2) in Gleichung 2. Das Ergebnis von Multiplikator 504 und Multiplikator 506 wird in XOR-Funktion 514 geXORt, die das Ergebnis von nachfolgender Gleichung 3 zur Verfügung stellt: d' = ((ah 2 ⊗ {0E}) ⊕ (ah ⊗ al) ⊕ al 2) Gleichung 3
  • Da der kritische Verzögerungsweg durch Multiplikatoren 504, 506 und XOR-Funktion 514 führt. Um die Verzögerung im kritischen Verzögerungsweg zu verringern, wird statt der Durchführung der in Gleichung 2 benötigten inversen Operation nach der XOR-Funktion 514 die inverse Operation später in kombinierten inversen Multiplikationsoperationen 508, 510 durchgeführt.
  • Nachdem d' berechnet wurde, stehen zwei Multiplikationsoperationen an, die parallel mittels d' durch kombinierte inverse Multiplikationsoperationen 508, 510 berechnet werden können. Kombinierte inverse Multiplikation 508 führt (ah ⊕ al) ⊗ d mit dem Ergebnis von (ah ⊕ al) durch, das von XOR-Funktion 516 empfangen wurde. Kombinierte inverse Multiplikation 510 führt (ah ⊗ d)x durch.
  • Wie vorher besprochen, ist der kritische Verzögerungsweg die Berechnung von d durch Multiplikatoren 504, 506 und XOR-Funktion 514. Da die Inversion eines Koeffizienten in GF(24) in einer Lookup-Tabelle eingebettet sein kann, kann die Inversion von d' innerhalb einer Lookup-Tabelle in kombinierter inverser Multiplikation 508, 510 eingebettet sein. Dies entfernt die inverse Operation von d' zum Bereitstellen von in Gleichung 2 benötigtem d aus dem kritischen Verzögerungsweg.
  • Nachdem die Multiplikation und inverse Operationen in kombinierter inverser Multiplikation 508, 510 durchgeführt worden sind, wandelt die inverse Abbildungsoperation 512 die Elemente aus GF(24) zurück in den Körper GF(28) um. Um weiter die Verzögerung des kritischen Wegs im AES-Entschlüsselungsdatenweg zu verringern, kann die inverse Abbildungsoperation 512 ebenfalls 4 Polynommultiplikationen in GF(28) umfassen, die in der inversen Abbildungsoperation eingebettet sind. Die 4 Polynommultiplikationen in GF(28) stellen das Ergebnis des Multiplizierens des Ergebnisses der kombinierten inversen Multiplikation mit jedem der 4 konstanten Polynomwerte, d. h. E, B, D und 9, zur Verfügung, das von der inversen Vermische-Spalten-Transformation benötigt wird.
  • Zusätzlich zum Durchfahren einer Transformation von 4- zu 8-Bit-Körper führt die inverse Abbildungsoperation 512 ebenfalls eine inverse affine Transformation zum Entschlüsseln durch, wie durch FIPS 197 spezifiziert. Die Kombination der inversen affinen Transformation zum Entschlüsseln in der inversen Abbildungsoperation 512 reduziert weiterhin die Verzögerung durch den AES-Entschlüsselungsweg 402.
  • 6 stellt eine Ausführungsform von jeder der in 5 gezeigten kombinierten inversen Multiplikationsoperationen 508, 510 dar. Während d' durch Multiplikatoren 506, 504 berechnet wird, ist die Eingabe an kombinierte Multiplikationsoperationen 508, 510, d. h., entweder ah ⊕ al oder ah, Eingabe an eine Lookup-Tabelle (Speicher) 602, um einen Satz von vorberechneten Multiplikationsergebnissen zum Multiplizieren eines ersten Operanden (ah oder al) mit allen möglichen Werten eines zweiten Operanden (d) auszuwählen. In der in 6 gezeigten Ausführungsform stellt kombinierte inverse Multiplikation 510 das Ergebnis des Multiplizierens eines 4-Bit-Werts ah mit einem 4-Bit-Wert d zur Verfügung.
  • So umfasst zum Beispiel eine Ausführungsform, in der d 4 Bits hat, 16 mögliche Werte (0000b–1111b). Somit werden die 16 möglichen Ergebnisse der Multiplikation von ah (erster Operand) mit jedem der 16 möglichen Werte von d' (zweiter Operand) in einer Lookup-Tabelle 602 gespeichert. Wie in 6 gezeigt, werden alle möglichen Ergebnisse der Multiplikation von ah mit d in der Lookup-Tabelle 602 gespeichert. Beim Erhalt einer Anfrage zum Ausgeben von Ergebnissen von Multiplikationsoperationen für eine ah-Eingabe wird das Ergebnis des Multiplizierens von ah mit der Inversen von jedem möglichen Wert von d (d), d. h., ah·(0^(–1)) – ah·(15^(–1)), die in der Lookup-Tabelle 602 gespeichert sind, an die Eingänge (bezeichnet als 0–15) von Multiplexer 604 ausgegeben. Nachdem d' durch Multiplikatoren 504, 506 und XOR-Funktion 513 berechnet worden ist, wählt d' einen der Eingänge des Multiplexers 604 aus, um als d·ah ausgegeben zu werden.
  • Da die Berechnung von d' auf dem kritischen Verzögerungsweg liegt, wird d' zum Auswählen des Ergebnisses der Multiplikationsoperation des Multiplexers 604 verwendet. ah wird zum Auswählen der Ausgänge der Lookup-Tabelle 602 verwendet, während d' berechnet wird. Sobald d' verfügbar ist, wird das kombinierte Ergebnis der Multiplikation von ah mit d (Inverse von d') vom Multiplexer 604 basierend auf dem Wert von d' ausgegeben.
  • So wird zum Beispiel, wenn ah den Wert 1001b hat, dieser Wert mit jedem der möglichen Werte von d (d. h. 0000b–1111b) multipliziert und in der Lookup-Tabelle 602 gespeichert. Diese Werte werden von der Lookup-Tabelle 602 ausgegeben und an den 16 Eingängen des Multiplexers 604 zur Verfügung gestellt. Wenn d' berechnet worden ist, wählt es den Eingang des Multiplexers, der das Ergebnis von ah·d ist, das vom Multiplexer 604 ausgegeben wird. So wird zum Beispiel, wenn d' 1010b ist, d 0101b ist, Eingang 10 durch d' ausgewählt, der das Ergebnis von ah·0101b ist. Da die Lookup-Tabelle 602 die Multiplikationsfunktion und die inverse Funktion kombiniert, wird die Verzögerung des kritischen Wegs verringert.
  • So ist zum Beispiel für Vier-Bit-Operanden (Selektor d', Operand d und Operand ah) die Vergrößerung des Speicherplatzes der vorberechneten Ergebniswerte nicht maßgeblich. Des Weiteren ist die Verzögerung zum Nachschlagen der vorberechneten Werte in der Lookup-Tabelle 602 von der Zeit überlagert, die zum Berechnen von d in Multiplikationsoperationen 504, 506 und XOR-Funktion 514 benötigt wird.
  • Um weiter den kritischen Verzögerungsweg im Entschlüsselungsdatenweg zu verringern, kann die inverse Abbildung 512 Ergebnisse der Multiplikation mit konstanten Polynomen E, B, D und 9 zur Verwendung in der inversen Vermische-Spalten-Transformation wie folgt vorberechnen: s'0,c = ({0E}·s0,c) ⊕ ({0B}·s1,c) ⊕ ({0D}·s2,c) ⊕ ({09}·s3,c) s'1,c = ({09}·s0,c) ⊕ ({0E}·s1,c} ⊕ ({0B}·s2,c) ⊕ ({0D}·s3,c) s'2,c = ({0D}·s0,c) ⊕ ({09}·s1,c) ⊕ ({0E}·s2,c) ⊕ ({0B}·s3,c) s'3,c = ({0B}·s0,c) ⊕ ({0D}·s1,c) ⊕ ({09}·s2,c) ⊕ ({0E}·s3,c)
  • 7 ist ein Blockdiagramm, das Multiplikatoren für eine Durchführung konstanter Polynommultiplikationsoperationen in der in 5 gezeigten inversen Abbildung 512 darstellt. In der gezeigten Ausführungsform speichert jeder Multiplikator 700, 702, 704, 706 vorberechnete Ergebnisse der Multiplikation mit einem der Polynome E, 9, D oder B für alle möglichen Werte eines 4-Bit-SubBytes (niedrigere Bits oder höhere Bits) eines der Bytes s0, s1, s2 oder s3. Multiplikator 700 speichert zum Beispiel die Ergebnisse des Multiplizieren von Polynom E mit allen Kombination eines 4-Bit-SubBytes, umfassend 16 mögliche Werte 0000b–1111b.
  • Jeder Multiplikator 700, 702, 704, 706 umfasst einen 16:1-Multiplexer 604, wie in Verbindung mit 6 besprochen worden ist. Allerdings wird keine Lookup-Tabelle 602 benötigt, da einer der Operanden konstant ist (E, 9, D oder B). Stattdessen werden die gespeicherten vorberechneten Ergebnisse, die im Speicher gespeichert sein können, an den Eingängen des Multiplexers 604 zur Verfügung gestellt.
  • Eines der gespeicherten vorberechneten Ergebnisse wird, basierend auf dem Wert des SubBytes ausgewählt. Die Vorberechnung aller möglichen Ergebnisse der Multiplikation des konstanten Polynoms mit allen möglichen SubByte-Werten verringert die Verzögerung durch die inverse Abbildung 512 zum Durchführen der inversen Vermische-Spalten-Transformation. Die vorberechneten Ergebnisse für jedes der SubBytes werden danach zum Berechnen der Ausgaben (s'0–s'3) der inversen Vermischte-Spalten-Transformation mittels XOR-Logik verwendet, um die XOR-Operationen durchzuführen.
  • 8 stellt eine Ausführungsform eines Multiplikators 800 für allgemeines Multiplizieren dar, wenn die Operanden (Eingänge) asymmetrische Ankunftszeiten haben. Verweisend auf 8 umfasst Multiplikator 800 eine Lookup-Tabelle 802, die das Ergebnis des Vorberechnens von Polynom B mit allen Kombinationen von 4-Bit-SubByte A speichert.
  • Während SubByte A, wie in Verbindung mit 5 besprochen, berechnet wird, wird das Ergebnis des Multiplizierens von B mit jedem möglichen Wert von SubByte B an den Eingängen des 16:1-Multiplexers 804 zur Verfügung gestellt. Das SubByte A wählt den geeigneten Eingang aus und das Ergebnis der Multiplikation mit B für SubByte A1 wird nach einer Multiplexer-Verzögerungszeit ausgegeben, die kürzer als die Zeit zum Durchführen der Multiplikation von B mit SubByte A ist.
  • Eine Ausführungsform des Multiplikators zum Berechnen von in 8 gezeigten konstanten Polynomberechnungen kann zum Verringern der Verzögerung des kritischen Wegs genutzt werden, wenn eine asymmetrische Verzögerung auftritt, d. h., dass die Verzögerung durch einen Weg langsamer als durch einen anderen Weg ist. Zum Beispiel, wenn ein Nachschlagen in der Lookup-Tabelle 802 durchgeführt werden kann, während der Multiplexer-Selektor (A) auf dem kritischen Verzögerungsweg berechnet wird. Der auf dem langsamsten Weg (A) berechnete Operand wird für das Auswählen des Ausgangs des Multiplexers 804 verwendet und der auf dem schnelleren Weg (B) berechnete Operand zum Durchführen des Nachschlagens in der Tabelle verwendet. Somit wird die Verzögerung des kritischen Wegs verringert, da die Verzögerung durch den Multiplexer geringer ist als die addierte Verzögerung des Durchführens der Multiplikationsoperation, nachdem beide Operanden gültig sind. In einer Ausführungsform kann der Multiplikator 800 zum Durchführen der Multiplikationsoperation im in 5 gezeigten Multiplikatos 504 verwendet werden.
  • Dem Durchschnittsfachmann ist klar, dass die in Ausführungsformen der vorliegenden Erfindung involvierten Verfahren in einem Computerprogrammprodukt ausgeführt werden können, das ein computer-verwendbares Medium umfasst. Solch ein computer-verwendbares Medium kann zum Beispiel eine Nur-Lese-Speichervorrichtung umfassen, wie zum Beispiel eine Compact Disk Read Only Memory(CD ROM)-Platte oder gewöhnliche ROM-Vorrichtungen oder eine Computerdiskette, umfassend einen darauf gespeicherten computer-lesbaren Programm-Code.
  • Obwohl erfindungsgemäße Ausführungsformen detailliert gezeigt worden sind und mit Verweis auf Ausführungsformen derselben beschrieben worden sind, ist dem Durchschrittsfachmann verständlich, dass verschiedene Änderungen an der Form und den Details vorgenommen werden können, ohne vom Umfang der erfindungsgemäßen Ausführungsformen, die durch die angefügten Ansprüche umfasst werden, abzuweichen.

Claims (12)

  1. Vorrichtung, aufweisend: einen Speicher (602) zum Speichern vorberechneter Ergebnisse einer Multiplikationsoperation, die mit einem ersten Operanden und allen möglichen Werten eines zweiten Operanden durchgeführt wird; und einen Multiplexer (604) mit einer Mehrzahl von Eingängen und einem einzigen Ausgang, wobei jeder aus der Mehrzahl von Eingängen zum Empfangen eines der vorberechneten Ergebnisse aus dem Speicher (602) eingerichtet ist, wobei ein Selektor einen der möglichen Werte des zweiten Operanden zum Auswählen des einen von den vorberechneten Ergebnissen für den einzigen Ausgang umfasst, wobei der Selektor eine Inverse des zweiten Operanden ist und das eine von den vorberechneten Ergebnissen die Multiplikationsoperation und eine inverse Operation kombiniert.
  2. Vorrichtung nach Anspruch 1, wobei der Selektor, der erste Operand und der zweite Operand jeweils 4 Bits haben.
  3. Vorrichtung nach Anspruch 1, weiterhin aufweisend: eine Mehrzahl von Multiplexern, wobei jeder der Multiplexer zum Empfangen von Ergebnissen der Multiplikationsoperation eingerichtet ist, die mit einem von einer Mehrzahl von konstanten Polynomwerten und allen möglichen Werten des zweiten Operanden durchgeführt wird, wobei die Ausgänge von jedem Multiplexer zum Bereitstellen eines Ergebnisses der inversen Vermische-Spalten-Transformation zu kombinieren sind.
  4. Vorrichtung nach Anspruch 1, wobei das vorberechnete Ergebnis zum Durchführen einer inversen SubByte-Transformation in einer Entschlüsselungsoperation in einem Advanced Encryption Standard(AES)-Entschlüsselungsweg verwendet wird.
  5. Vorrichtung nach Anspruch 1, wobei der Selektor nach dem ersten Operanden gültig ist.
  6. Verfahren, aufweisend: Speichern vorberechneter Ergebnisse einer Multiplikationsoperation, die mit einem ersten Operanden und allen möglichen Werten eines zweiten Operanden in einem Speicher durchgeführt wird; und Auswählen eines der vorberechneten Ergebnisse, die an Eingängen zu einem Multiplexer basierend auf einem Selektor für den Multiplexer, umfassend einen von den möglichen Werten des zweiten Operanden, bereitgestellt werden, wobei der Selektor eine Inverse des zweiten Operanden ist und das eine von den vorberechneten Ergebnissen die Multiplikationsoperation und eine inverse Operation kombiniert.
  7. Verfahren nach Anspruch 6, wobei der Selektor, der erste Operand und der zweite Operand jeweils 4 Bits haben.
  8. Verfahren nach Anspruch 6, weiterhin aufweisend: Empfangen von Ergebnissen der Multiplikationsoperation, die mit einem von einer Mehrzahl von konstanten Polynomwerten und allen möglichen Werten des zweiten Operanden durch einen von einer Mehrzahl von Multiplexer durchgeführt wird, wobei die Ausgänge von jedem Multiplexer zum Bereitstellen eines Ergebnisses der inversen Vermische-Spalten-Transformation zu kombinieren sind.
  9. Verfahren nach Anspruch 6, wobei das vorberechnete Ergebnis zum Durchführen einer inversen SubByte-Transformation in einer Entschlüsselungsoperation in einem Advanced Encryption Standard(AES)-Entschlüsselungsweg verwendet wird.
  10. Verfahren nach Anspruch 6, wobei der Selektor nach dem ersten Operanden gültig wird.
  11. System, aufweisend: einen dynamischen Direktzugriffsspeicher (108) zum Speichern von Daten und Instruktionen; und einen Prozessor (101), der mit dem Speicher (108) zum Ausführen der Instruktionen gekoppelt ist, wobei der Prozessor (101) Folgendes aufweist: einen Speicher zum Speichern von Ergebnissen einer Multiplikationsoperation, die mit einem ersten Operanden und allen möglichen Werten eines zweiten Operanden durchgeführt wird; und einen Multiplexer, umfassend eine Mehrzahl von Eingängen und einen einzigen Ausgang, wobei jeder von der Mehrzahl von Eingängen zum Empfangen von einem von den Ergebnissen aus dem Speicher eingerichtet ist, wobei ein Selektor einen der möglichen Werte des zweiten Operanden zum Auswählen des einen von den Ergebnissen für den einzigen Ausgang umfasst, wobei der Selektor eine Inverse des zweiten Operanden ist und das eine von den Ergebnissen die Multiplikationsoperation und eine inverse Operation kombiniert.
  12. System nach Anspruch 11, wobei der Selektor, der erste Operand und der zweite Operand jeweils 4 Bits haben.
DE102008016530A 2007-03-30 2008-03-31 Effizienter Advanced Encryption Standard (AES)-Datenweg mittels hybrider Rijndael-S-Box Expired - Fee Related DE102008016530B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/731,159 2007-03-30
US11/731,159 US8346839B2 (en) 2007-03-30 2007-03-30 Efficient advanced encryption standard (AES) datapath using hybrid rijndael S-box

Publications (2)

Publication Number Publication Date
DE102008016530A1 DE102008016530A1 (de) 2008-11-13
DE102008016530B4 true DE102008016530B4 (de) 2013-01-17

Family

ID=39794396

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102008016530A Expired - Fee Related DE102008016530B4 (de) 2007-03-30 2008-03-31 Effizienter Advanced Encryption Standard (AES)-Datenweg mittels hybrider Rijndael-S-Box

Country Status (3)

Country Link
US (1) US8346839B2 (de)
CN (1) CN101350714B (de)
DE (1) DE102008016530B4 (de)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101702709B (zh) * 2009-11-05 2013-04-10 复旦大学 一种适用于mips处理器的aes加密单元
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
CN103346879A (zh) * 2010-09-06 2013-10-09 苏州国芯科技有限公司 面积紧凑型加解密算法实现方法
CN103338449A (zh) * 2010-09-06 2013-10-02 苏州国芯科技有限公司 用于提高网络安全性的算法硬件实现方法
US20130198528A1 (en) * 2010-10-05 2013-08-01 Craig A. Walrath Modifying a Length of an Element to Form an Encryption Key
US9397834B2 (en) 2010-10-05 2016-07-19 Hewlett-Packard Development Company, L.P. Scrambling an address and encrypting write data for storing in a storage device
US8498410B2 (en) 2011-03-14 2013-07-30 Motorola Solutions, Inc. Methods for customizing a Rijndael block cipher
US9778932B2 (en) 2013-01-23 2017-10-03 International Business Machines Corporation Vector generate mask instruction
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
CN103152165B (zh) * 2013-01-25 2016-01-20 西安电子科技大学 基于fpga的超高速aes处理器及其实现方法
US9900149B2 (en) 2013-12-24 2018-02-20 Synopsys, Inc. Area efficient cryptographic method and apparatus
US9875377B2 (en) * 2014-03-31 2018-01-23 Stmicroelectronics S.R.L. Encryption device of a substitution-box type, and corresponding encryption method and computer program product
US9773432B2 (en) 2015-06-27 2017-09-26 Intel Corporation Lightweight cryptographic engine
CN106712925A (zh) * 2015-11-13 2017-05-24 航天信息股份有限公司 一种基于Logistic映射的S-box获取方法及获取装置
US11121856B2 (en) * 2018-06-15 2021-09-14 Intel Corporation Unified AES-SMS4—Camellia symmetric key block cipher acceleration
JP7383985B2 (ja) * 2019-10-30 2023-11-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
US11277255B2 (en) * 2019-12-11 2022-03-15 Facebook Technologies, Llc Swapping of encryption and decryption operations for side channel attack protection
US11263353B2 (en) * 2019-12-11 2022-03-01 Facebook Technologies, Llc Mixed sequencing of polynomial-diverse encryption and decryption operations for side channel attack protection

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040184602A1 (en) * 2003-01-28 2004-09-23 Nec Corporation Implementations of AES algorithm for reducing hardware with improved efficiency

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4667301A (en) * 1983-06-13 1987-05-19 Control Data Corporation Generator for pseudo-random numbers
US5289397A (en) * 1991-07-22 1994-02-22 Itt Corporation High-speed modulo exponentiator device
US5402369A (en) * 1993-07-06 1995-03-28 The 3Do Company Method and apparatus for digital multiplication based on sums and differences of finite sets of powers of two
US6144980A (en) * 1998-01-28 2000-11-07 Advanced Micro Devices, Inc. Method and apparatus for performing multiple types of multiplication including signed and unsigned multiplication
WO2000062421A1 (en) * 1999-04-14 2000-10-19 Nokia Networks Oy Digital filter and method for performing a multiplication based on a look-up table
US7296049B2 (en) * 2002-03-22 2007-11-13 Intel Corporation Fast multiplication circuits
GB0211812D0 (en) * 2002-05-23 2002-07-03 Koninkl Philips Electronics Nv S-box encryption in block cipher implementations
GB0227793D0 (en) * 2002-11-29 2003-01-08 Koninkl Philips Electronics Nv Multiplier with look up tables
KR100594265B1 (ko) * 2004-03-16 2006-06-30 삼성전자주식회사 매스킹 방법이 적용된 데이터 암호처리장치, aes암호시스템 및 aes 암호방법.
US7539718B2 (en) * 2004-09-16 2009-05-26 Intel Corporation Method and apparatus for performing Montgomery multiplications
US7526518B2 (en) * 2004-10-13 2009-04-28 Cisco Technology, Inc. Galois field multiplication system and method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040184602A1 (en) * 2003-01-28 2004-09-23 Nec Corporation Implementations of AES algorithm for reducing hardware with improved efficiency

Also Published As

Publication number Publication date
CN101350714B (zh) 2015-06-03
CN101350714A (zh) 2009-01-21
DE102008016530A1 (de) 2008-11-13
US20080240422A1 (en) 2008-10-02
US8346839B2 (en) 2013-01-01

Similar Documents

Publication Publication Date Title
DE102008016530B4 (de) Effizienter Advanced Encryption Standard (AES)-Datenweg mittels hybrider Rijndael-S-Box
US10256972B2 (en) Flexible architecture and instruction for advanced encryption standard (AES)
US8634550B2 (en) Architecture and instruction set for implementing advanced encryption standard (AES)
US6157720A (en) Method and apparatus for encrypting data
US8290148B2 (en) Encryption processing apparatus, encryption processing method, and computer program
US8050401B2 (en) High speed configurable cryptographic architecture
US8731188B2 (en) Cryptographic processing apparatus and cryptographic processing method, and computer program
US8520845B2 (en) Method and apparatus for expansion key generation for block ciphers
JP5682525B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
US8391475B2 (en) Method and apparatus for advanced encryption standard (AES) block cipher
US20020021802A1 (en) Encryption apparatus, decryption appatatus, expanded key generating apparatus and method therefor, and recording medium
CN110166223B (zh) 一种国密分组密码算法sm4的快速实现方法
EP1246389A1 (de) Vorrichtung zur wählbaren Ver- bzw. Entschlüsselung von Daten
DE102008013785A1 (de) Vorberechneter Verschlüsselungsschlüssel
JP2010529496A (ja) 擬似ランダム生成、データ暗号化、およびメッセージ暗号化ハッシングのための暗号化方法およびデバイス
KR20180081559A (ko) 암호화 동작을 위한 키 시퀀스 생성
US20040247117A1 (en) Device and method for encrypting and decrypting a block of data
Buell Modern symmetric ciphers—Des and Aes
EP1629626B1 (de) Verfahren und vorrichtung für eine hadwareimplementierung der schlüsselexpansionsfunktion mit wenig speicher
KR100494560B1 (ko) Rijndael암호를 이용한 블록 데이터 실시간암호복호화 장치 및 방법
EP1514174B1 (de) Aes mixcolumn transformation
Dutta An approach to ensure information security through 252-bit integrated encryption system (IES)
KR20160141962A (ko) 모듈로 연산을 적용한 형식 보존 암호화 방법 및 장치

Legal Events

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

Effective date: 20130418

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee