[go: up one dir, main page]

DE102005005335A1 - Vorrichtung und Verfahren zur Hardware-Verschlüsselung - Google Patents

Vorrichtung und Verfahren zur Hardware-Verschlüsselung Download PDF

Info

Publication number
DE102005005335A1
DE102005005335A1 DE200510005335 DE102005005335A DE102005005335A1 DE 102005005335 A1 DE102005005335 A1 DE 102005005335A1 DE 200510005335 DE200510005335 DE 200510005335 DE 102005005335 A DE102005005335 A DE 102005005335A DE 102005005335 A1 DE102005005335 A1 DE 102005005335A1
Authority
DE
Germany
Prior art keywords
bit
outputting
input
key
inverse
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.)
Ceased
Application number
DE200510005335
Other languages
English (en)
Inventor
Kyoung-Moon Ahn
Mi-Jung Noh
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE102005005335A1 publication Critical patent/DE102005005335A1/de
Ceased legal-status Critical Current

Links

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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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
    • 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
    • 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/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Complex Calculations (AREA)

Abstract

Die Erfindung bezieht sich auf eine Vorrichtung zur Hardware-Verschlüsselung mit einer Mehrzahl von sequentiell verbundenen Modulen, einer Mehrzahl zugehöriger Schlüssel und einer die Schlüssel bereitstellenden Schlüsselbereitstellungseinheit, wobei ein erstes Modul einen ersten Schlüssel und Eingabedaten empfängt und Chiffriertext abgibt und jedes weitere Modul einen zugehörigen Schlüssel und den vom vorherigen Modul abgegebenen Chiffriertext empfängt und seinerseits Chiffriertext abgibt, sowie auf ein zugehöriges Verschlüsselungsverfahren.
Erfindungsgemäß umfasst jedes Modul eine S-BOX (161 bis 164), die zur Berechnung eines multiplikativen Inversen jedes Elements (S00 bis S33) eines Eingabevektors (SBIN) über GF(28) unter Verwendung einer Operation über GF(((22)2)2) und zum Ersetzen jedes Elements im Eingabevektor durch ein durch diese Operation erhaltenes Ersatzelement (S00' bis S33') eingerichtet ist.
Verwendung z. B. für Smartcards und IC-Karten.

Description

  • Die Erfindung bezieht sich auf eine Vorrichtung zur hardwaremäßigen Verschlüsselung, kurz Hardware-Verschlüsselung, nach dem Oberbegriff des Anspruchs 1 und auf ein zugehöriges Verfahren zur Hardware-Verschlüsselung.
  • Benutzer von intelligenten elektronischen Karten (Smartcards), integrierten Schaltkreiskarten (IC-Karten), dem Internet und drahtlosen lokalen Netzwerken (LAN) haben zunehmend den Wunsch, große Mengen an geheimer Information zu übertragen, die sichere Kommunikationsverbindungen erfordert. Demgemäß wird allgemein eine Vorrichtung zur hardwaremäßigen Verschlüsselung, eine sogenannte Hardware-Kryptographiemaschine, bereitgestellt, um die geheime Information durch einen Signatur- oder Authentikationsprozess zu verschlüsseln und zu übertragen, so dass sie von unautorisierten Dritten nicht erkannt werden kann. In Anbetracht des hohen Rechenaufwands für die meisten Verschlüsselungsprozesse wird die Verschlüsselung in bestimmten technischen Anwendungen, wie Smartcards, typischerweise in Hardware und nicht in Software ausgeführt. Dazu wird häufig ein symmetri scher Verschlüsselungsalgorithmus, wie der Datenverschlüsselungsstandard (DES) oder der fortentwickelte Verschlüsselungsstandard (AES) in Hardware implementiert, alternativ zu einem Algorithmus mit öffentlichem Schlüssel, wie dem Rivest-Shamir-Adelman(RSA)-Algorithmus oder dem Elliptikkurvenkrypto(ECC)-System.
  • Der AES-Algorithmus hat die Struktur eines Substitutionspermutationsnetzwerks (SPN). AES bezieht sich auf einen symmetrischen Verschlüsselungsalgorithmus in Form eines permutierten DES und benutzt eine Blocklänge von 128 Bit sowie eine Schlüssellänge von 128 Bit, 192 Bit oder 256 Bit. Abhängig von der jeweils verwendeten Schlüssellänge werden 10, 12 oder 14 Runden bzw. Durchläufe beim AES ausgeführt. Der AES-Verschlüsselungsprozess umfasst die Summation eines anfänglichen Eingabeschlüssels mit Eingabedaten und eine Operation im jeweiligen Durchlauf.
  • Jede Runde beim AES-Verschlüsselungsprozess führt die gleichen Operationen aus, mit Ausnahme einer letzten Runde, die eine Datentransformation weglässt. Wenn beispielsweise die Anzahl an Durchläufen, die im AES-Verschlüsselungsprozess verwendet werden, mit Nr bezeichnet wird, wird ein Durchlauf, der Operationen mit den Bezeichnungen "Sub_Byte transformation", "Shift_Row transformation", "Mix_Column transformation" und "Add_Round_Key operation" umfasst, Nr-1 Mal ausgeführt, und eine letzte Rundenoperation mit "Sub_Byte transformation", "Shift_Row transformation" und "Add_Round_Key operation", jedoch ohne "Mix_Column transformation" wird ein Mal durchgeführt. Dementsprechend werden in einer Implementierung des herkömmlichen AES-Verschlüsselungsalgorithmus wenigstens Nr + 1 Taktzyklen im Verschlüsselungsprozess benötigt, und mehr als 2(Nr + 1) Taktzyklen werden dafür benötigt, sowohl den Verschlüsselungsprozess als auch einen zugehörigen Entschlüsselungsprozess auszuführen, welcher den zum Verschlüsselungsprozess inversen Prozess darstellt. Ein Durchlauf des AES-Verschlüsselungsalgorithmus, wie er oben erwähnt ist, ist z.B. in den Offenlegungsschriften US 2003/0133568 A und KR 2002-061718 beschrieben.
  • Der Vorgang "Sub_Byte transformation", der eine nichtlineare Transformation darstellt, wird durch den Betrieb einer sogenannten S-BOX durchgeführt und verbraucht von allen Transformationen die meiste Energie bei einer herkömmlichen Implementierung des AES-Algorithmus. Als nichtlineare Transformationsfunktion substituiert die S-BOX Eingabedaten durch andere Daten. Die S-BOX verursacht aufgrund der Komplexität eines Speichers und eines Schaltkreises, die zur Implementierung der nichtlinearen Transformationsfunktion verwendet werden, einen hohen Leistungsverbrauch. Beispielsweise führt die S-BOX einen Substitutionsvorgang gemäß einer nichtlinearen Funktion unter Benutzung verschiedener Methoden aus, wie einer Nachlagetabelle (LUT), einer Summe von Produkten (SOP), einem Produkt von Summen (POS), einer Reed-Muller-Form positiver Polarität (PPRM-Form) und eines binären Entscheidungsdiagramms (BDD). Um für einen Eingabewert der S-BOX in einer typischen LUT-Implementierung einen transformierten Wert zu erhalten, werden Werte als eine LUT in einem Festwertspeicher (ROM) abgelegt. In Implementierungen gemäß den Techniken der SOP, POS, PPRM-Form und BDD und ähnlichen werden Daten in binärer Notation unter Benutzung von acht Eingaben ausgedrückt.
  • Eine gemeinsame Schwierigkeit herkömmlicher Implementierungen einer S-BOX unter Verwendung der obigen Methoden besteht darin, dass sie etwa 800 bis 2200 Gate-Einheiten benötigt. Die hohe Anzahl an erforderlichen Gate-Einheiten ist insbesondere für Hardware-Anwendungen mit limitierten Speicher- und Bandbreitenkapazitäten problematisch, wie für Smartcards und IC-Karten. Die hohe Anzahl an erforderlichen Gate-Einheiten ist zudem nicht gut für miniaturisierte Systeme ge eignet, die einen niedrigen Energieverbrauch und eine hohe Betriebsgeschwindigkeit erfordern.
  • Der Erfindung liegt als technisches Problem die Bereitstellung einer Vorrichtung und eines Verfahrens zur Hardware-Verschlüsselung der eingangs genannten Art zugrunde, mit denen sich die oben erwähnten Schwierigkeiten des Standes der Technik wenigstens teilweise beheben lassen und die insbesondere eine Hardware-Implementierung des AES-Algorithmus mit vergleichsweise niedrigem Leistungsbedarf und hoher Betriebsgeschwindigkeit erlauben.
  • Die Erfindung löst dieses Problem durch die Bereitstellung einer Verschlüsselungsvorrichtung mit den Merkmalen des Anspruchs 1 und eines Verschlüsselungsverfahrens mit den Merkmalen des Anspruchs 13.
  • Erfindungsgemäß wird das multiplikative Inverse jedes Elements in einem Eingabevektor einer S-BOX über GF(28) unter Verwendung einer Operation über GF(((22)2)2) berechnet, wodurch die Verschlüsselungsvorrichtung und das Verschlüsselungsverfahren eine Implementierung des AES-Algorithmus mit niedrigem Energiebedarf und hoher Betriebsgeschwindigkeit ermöglichen.
  • Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen angegeben.
  • Vorteilhafte Ausführungsbeispiele der Erfindung sind in den Zeichnungen dargestellt und werden nachfolgend beschrieben. Hierbei zeigen:
  • 1 ein Blockdiagramm einer Vorrichtung zur Hardware-Verschlüsselung,
  • 2 ein detaillierteres Blockdiagramm zur Veranschaulichung der Funktion einiger Module der Vorrichtung von 1,
  • 3 ein detaillierteres Blockdiagramm zur Veranschaulichung der Funktion eines weiteren Moduls der Vorrichtung von 1,
  • 4 ein Blockdiagramm einer Schlüsselbereitstellungseinheit für die Vorrichtung von 1,
  • 5 ein Blockdiagramm einer in Subbyte-Schaltkreisen von 2 und 3 verwendbaren S-BOX,
  • 6 ein Blockdiagramm einer Inversoperationseinheit von 5 zur Durchführung einer inversen Operation über GF(((22)2)2),
  • 7 ein Blockdiagramm eines ersten, in 6 verwendbaren Inversoperators zur Durchführung einer inversen Operation über GF((22)2),
  • 8 ein Blockdiagramm eines in 6 verwendbaren 4-Bit-Multiplizierers zur Durchführung einer Multiplikation über GF((22)2),
  • 9 ein Blockdiagramm eines in den 7 und 8 verwendbaren 2-Bit-Multiplizierers zur Durchführung einer Multiplikation über GF(22),
  • 10 ein Blockdiagramm einer Vorrichtung zur Hardware-Entschlüsselung, die zum Entschlüsseln von Chiffriertext geeignet ist, welcher von der Hardware-Verschlüsselungsvorrichtung von 1 übertragen wird,
  • 11 ein Blockdiagramm zur Veranschaulichung der Funktion einiger Module in der Entschlüsselungsvorrichtung von 10,
  • 12 ein Blockdiagramm zur Veranschaulichung der Funktion eines weiteren Moduls der Entschlüsselungsvorrichtung von 10 und
  • 13 ein Blockdiagramm einer inversen S-BOX, die in inversen Subbyte-Schaltkreisen der 11 und 12 verwendbar ist.
  • 1 zeigt eine Hardware-Verschlüsselungsvorrichtung 100, in der ein AES-Algorithmus implementiert ist und die einen Addierer 110 sowie eine Mehrzahl von Modulen 120 bis 150 umfasst, die zu jeweils einer von zehn Runden bzw. Durchläufen des AES-Algorithmus gehören. Die Hardware-Verschlüsselungsvorrichtung 100 umfasst des weiteren eine Schlüsselbereitstellungseinheit, z.B. die in 4 gezeigte Schlüsselbereitstellungseinheit 400, die einen Eingabeschlüssel INKEY für den Addierer 110 sowie Schlüssel KEY1 bis KEY10 für je eines der Module 120 bis 150 bereitstellt, wie weiter unten detaillierter erläutert. In jedem der Module 120 bis 150 wird typischerweise eine redundante Operation ausgeführt.
  • Der Addierer 110 addiert übertragene Daten TXD zum Eingabeschlüssel INKEY und gibt das Additionsergebnis als Eingabedaten an das Modul 120 aus. Die übertragenen Daten TXD haben typischerweise eine Blocklänge von 128 Bit. Die Module 120 bis 150 empfangen den jeweils zugehörigen Schlüssel KEY1 bis KEY10, die typischerweise eine Datenlänge von 128 Bit haben, wobei zehn Module 120 bis 150 vorgesehen sind, die wie gesagt zehn im AES-Algorithmus ausgeführten Durchläufen entsprechen. In Fällen, in denen die Schlüssel eine Datenlänge von 192 Bit oder 256 Bit haben, werden zwölf bzw. vierzehn Durchläufe des AES-Algorithmus ausgeführt. Das Modul 120 transformiert das Ausgangssignal des Addierers 110 in Chiffriertext unter Verwendung des Schlüssels KEY1. Entsprechend transformiert jedes der neun übrigen Module 130 bis 150 sequentiell den vom vorherigen Modul ausgegebenen Chiffriertext in einen geänderten Chiffriertext unter Verwendung des jeweiligen Schlüssels KEY2 bis KEY10. Das letzte Modul 150 transformiert den vom vorhergehenden Modul 140 abgegebenen Chiffriertext unter Verwendung des Schlüssels KEY10 in einen endgültigen Chiffriertext CIPHD. Dieser kann geheime Information enthalten, die z.B. von einem miniaturisierten System, wie einer Smartcard oder einer IC-Karte, übertragen wird. Die Hardware-Kryptographiemaschine 100 ist auch für Internet-Kommunikation, drahtlose LAN-Kommunikation und dergleichen einsetzbar, um geheime Information sicher zu übertragen und zu empfangen.
  • Im obigen Ausführungsbeispiel werden, da zehn Durchläufe im AES-Verschlüsselungsprozess benutzt werden, neun Mal Durchläufe mit den Operationen "Sub_Byte transformation", "Shift_Row transformation", "Mix_Column transformation" und "Add_Round_Key operation" ausgeführt, während ein letzter Durchlauf mit "Sub_Byte transformation", "Shift_Row transformation" und "Add_Round_Key operation", jedoch ohne "Mix_Column transformation", ein Mal ausgeführt wird.
  • Im allgemeinen verbraucht die Hardware-Verschlüsselungsvorrichtung 100 wegen der Komplexität eines Speichers und eines Schaltkreises zur Durchführung der "Sub_Byte transformation", bei der es sich um eine nichtlineare Transformation handelt, eine relativ hohe Leistung. Die Erfindung trägt dem dadurch Rechnung, dass eine Hardware-Kryptographiemaschine mit neuartiger S-BOX benutzt wird, wie sie in 5 bzw. 13 dargestellt ist. Die neuartige S-BOX wird in einem Sub_Byte-Schaltkreis 160 von 2, einem Subbyte-Schaltkreis 200 von 3, einem inversen Subbyte-Schaltkreis 1700 von 11 und einem inversen Subbyte-Schaltkreis 2100 in 12 eingesetzt und dazu verwendet, die "Sub_Byte transformation" und "inverse Sub_Byte transformation" in einer vom üblichen Stand der Technik verschiedenen Art und Weise auszuführen.
  • Gemäß einem Ausführungsbeispiel der Erfindung benutzt die Hardware-Verschlüsselungsvorrichtung 100 die S-BOX dazu, jedes Eingabeelement durch sein multiplikatives Inverses bzw. den Reziprokwert über GF(28) unter Verwendung von Operationen über zusammengesetzte Felder von GF(2) zu ersetzen, d.h. GF(22), GF((22)2) und GF(((22)2)2). Die Funktionsweise der S-BOX von 5 wird nachfolgend unter Bezugnahme auf die 2, 3 und 5 genauer erläutert.
  • 2 veranschaulicht den Betrieb der Module 120 bis 140 von 1, die sich auf den ersten bis neunten Durchlauf des AES-Algorithmus beziehen. Wie aus 2 ersichtlich, umfasst jedes der Module 120 bis 140 einen Subbyte-Schaltkreis 160, einen Zeilenverschiebungs-Schaltkreis 170, einen Spaltenmischungs-Schaltkreis 180 und einen Addierer 190. Wie vorstehend erwähnt, werden die Operationen "Sub_Byte transformation", "Shift_Row transformation", "Mix_Column transformation" und "Add_Round_Key operation" in Form des ersten und neunten Durchlauf des AES-Algorithmus in dieser Art neun Mal durchgeführt.
  • Der Subbyte-Schaltkreis 160 benutzt die S-BOX von 5 zur Durchführung einer inversen Operation über GF(28) für die "Sub_Byte transformation", indem er eine Operation über das zusammengesetzte Feld GF(((22)2)2) ausführt. Mit anderen Worten wird die inverse Operation über GF(28) durch die Operation über die zusammengesetzten Felder von GF(2) ausgeführt, d.h. GF(22), GF((22)2) und GF(((22)2)2). Durch die Funktion der S-BOX werden Elemente eines Eingangsvektors INCIPH vom Subbyte-Schaltkreis 160 durch substituierende Elemente ersetzt, und der Subbyte-Schaltkreis 160 gibt Daten als Resultat dieses Betriebs der S-BOX in Form eines Subbyte-Ausgabevektors ab. Für weitere De tails der inversen Operation unter Verwendung der zusammengesetzten Felder kann auf die diesbezügliche Literatur verwiesen werden, z.B. den Beitrag "A Compact Rijndael Hardware Architecture with S-BOX Optimization" von Akashi Satoh, Sumio Morioka, Kohji Takano und Seiji Munetoh in ASIACRYPT 2001.
  • Die nachstehende Gleichung 1 zeigt ein primitives Polynom für GF(28), GF(2), GF((22)2) und GF(((22)2)2) gemäß einem allgemeinen Kommunikationsstandard. GF(28): x8 + x4 + x3 + x + 1 GF(22): x2 + x + 1 GF((22)2): x2 + x + ϕ GF(((22)2)2): x2 + x + λ (1)
  • Das primitive Polynom gemäß Gleichung 1 ist ein irreduzibles Polynom, wobei λ = {1100}2 ∊ GF((22)2) und ϕ = {10}2 ∊ GF(22). Mit anderen Worten ist der erste Koeffizient λ eine Binärzahl {1100}2 über GF((22)2), und der zweite Koeffizient ϕ ist eine Binärzahl {10}2 über GF(22).
  • Um die Operation "Shift_Row transformation" auszuführen, empfängt der Zeilenverschiebungs-Schaltkreis 170 den Subbyte-Ausgabevektor als Eingabevektor und verschiebt diesen gemäß einer Zeileneinheits-Verschiebefunktion und gibt das Resultat als einen Zeilenverschiebungs-Ausgabevektor in einer Zeileneinheit ab.
  • Um die Operation "Mix_Column transformation" auszuführen, permutiert der Spaltenmischungs-Schaltkreis 180 den Zeilenverschiebungs-Ausgabevektor gemäß einer Spalteneinheits-Permutationsfunktion und gibt das Resultat als Spaltenmischungs-Ausgabevektor in einer Spalteneinheit ab.
  • Um die Operation "Add_Round_Key operaton" auszuführen, addiert der Addierer 190 den Ausgabevektor des Spaltenmischungs-Schaltkreises 180 zum zugehörigen Schlüssel KEYN der Schlüssel KEY1 bis KEY9 und gibt das Additionsergebnis als Chiffriertext OUTCIPH ab, der als Eingabe für das jeweils folgende Modul dient.
  • 3 veranschaulicht die Betriebsweise des zum zehnten Durchlauf von 1 gehörigen Moduls 150, das hierzu einen Subbyte-Schaltkreis 200, einen Zeilenverschiebungs-Schaltkreis 210 und einen Addierer 220 umfasst. Wie oben erwähnt, werden während dieser zehnten und letzten Runde des AES-Algorithmus die Operationen "Sub-Byte transformation", "Shift_Row transformation" und "Add_Round_Key operation" jeweils ein Mal ausgeführt, wobei sie vom Subbyte-Schaltkreis 200, vom Zeilenverschiebungs-Schaltkreis 210 bzw. vom Addierer 220 in der gleichen Weise ausgeführt werden wie oben zum Subbyte-Schaltkreis 160, zum Zeilenverschiebungs-Schaltkreis 170 bzw. zum Addierer 190 von 2 beschrieben, worauf verwiesen werden kann.
  • 4 veranschaulicht die zur Erzeugung der Schlüssel KEY1 bis KEY10 und des Eingabeschlüssels INKEY von 1 verwendbare Schlüsselbereitstellungseinheit 400 mit einem Register 410, einem Multiplexer 420 und einem Schlüsselgenerator 430. Der Eingabeschlüssel INKEY wird zur Verschlüsselung benutzt und typischerweise vom Systemnutzer bereitgestellt. Der Schlüsselgenerator 430 erzeugt den Schlüssel KEY1 für das Modul 120 unter Verwendung des über den Multiplexer 420 zugeführten Eingabeschlüssels INKEY. Die Schlüsselbereitstellungseinheit 420 führt dem Addierer 110 von 1 den Eingabeschlüssel INKEY zu einem Anfangszeitpunkt vor dem Betrieb des Moduls 120 zu. Typischerweise erfolgt die Bereitstellung des Eingabeschlüssels INKEY für den Addierer 110 von 1 und die Erzeugung des Schlüssels KEY1 durch den Schlüsselgenerator 430 während eines einzigen Zyklus eines nicht gezeigten Systemtaktes. Der vom Schlüsselgenerator 430 erzeug te Schlüssel KEY1 wird im Register 410 gespeichert und gleichzeitig dem Modul 120 zugeführt. Nach einem Taktzyklus wird der Schlüssel KEY1 vom Register 410 dem Multiplexer 420 zugeführt. Der Multiplexer 420 gibt selektiv den Eingabeschlüssel INKEY oder den vom Register 410 abgegebenen Schlüssel KEY1 abhängig vom logischen Zustand eines Steuersignals RNDST ab. Unter Verwendung des zugeführten Schlüssels KEY1 erzeugt der Schlüsselgenerator 430 dann den Schlüssel KEY2 und gibt diesen ab.
  • Auf diese Weise erzeugt der Schlüsselgenerator 430 sequentiell die weiteren Schlüssel KEY2 bis KEY10, die vom jeweiligen Modul 130 bis 150 für den zweiten bis zehnten Durchlauf verwendet werden, indem er dazu den Schlüssel des jeweils vorherigen Durchlaufs benutzt, der im Register 410 gespeichert ist. Beispielsweise empfängt der Schlüsselgenerator 430 den Schlüssel KEY1 vom Register 410 über den Multiplexer 420 und benutzt ihn zur Erzeugung des Schlüssels KEY2, der im zweiten Durchlauf vom Modul 130 benutzt wird.
  • Die Schlüsselbereitstellungseinheit 400 erzeugt in der oben beschriebenen Weise unter Verwendung des Eingabeschlüssels INKEY jeden der Schlüssel KEY1 bis KEY10, so dass die Module 120 bis 150 für die zehn Durchläufe des AES-Algorithmus mit den entsprechenden Schlüsseln KEY1 bis KEY10 versorgt werden. Da der Eingabeschlüssel INKEY dem Addierer 110 von 1 zugeführt wird und die Schlüssel KEY1 bis KEY10 sequentiell durch den Schlüsselgenerator 430 erzeugt werden, wozu wie oben erwähnt jeweils ein Zyklus des Systemtaktes benutzt wird, sind zehn Taktzyklen erforderlich, um den AES-Verschlüsselungsalgorithmus unter Verwendung der Hardware-Verschlüsselungsvorrichtung von 1 auszuführen. Folglich werden insgesamt 20 Taktzyklen zur Durchführung des Verschlüsselungsprozesses und des dazu inversen Entschlüsselungsprozesses benötigt. Wie sich aus den obigen Erläuterungen ergibt, ist nur eine minimale Anzahl an Taktzyklen gemäß der Erfindung zur Erzeugung von Schlüsseln für den AES-Verschlüsselungsprozess erforderlich, so dass ein schneller Betrieb bereitgestellt wird. Der Entschlüsselungsprozess wird weiter unten in Verbindung mit den 10 bis 13 näher erläutert.
  • 5 veranschaulicht Aufbau und Funktionsweise der in den Subbyte-Schaltkreisen 160 und 200 der 2 und 3 verwendbaren, neuartigen S-BOX mit einer Einheit 161 für eine isomorphe Transformation δ, einer Einheit 162 für eine inverse Operation X–1, einer Einheit 163 für eine inverse isomorphe Transformation δ–1 und einer Einheit 164 für eine affine Transformation.
  • Die Einheit 161 führt die isomorphe Transformation δ aus, durch die ein Element über GF(8), welches jeweilige Elemente eines Eingangsvektors SBIN bildet, in ein Element über GF(((22)2)2) transformiert, das von der Isomorphietransformationseinheit 161 abgegeben wird. Der Eingangsvektor SBIN besitzt 128 Bit und besteht aus 16 Elementen S00 bis S33 mit je 8-Bit-Daten. Die von der Isomorphietransformationseinheit 161 ausgeführte, isomorphe Transformation δ ist durch die folgenden Gleichungen 2 und 3 definiert: y = δ·x, (2)wobei x ein Eingangsvektor der Isomorphietransformationseinheit 161 und y ein durch die isomorphe Transformation δ transformierter Vektor ist, mit
    Figure 00130001
  • Die Inversoperationseinheit 162 verarbeitet das von der Isomorphietransformationseinheit 161 abgegebene Element über GF(((22)2)2) und gibt das multiplikative Inverse des Elements über GF(((22)2)2) ab. Die Betriebsweise der Inversoperationseinheit 162 ist im Detail in 6 veranschaulicht.
  • Die Einheit 163 führt eine inverse isomorphe Transformation δ–1 aus, durch die das von der Inversoperationseinheit 162 abgegebene, multiplikative Inverse des Elements über GF(((22)2)2) in ein Element über GF(28) transformiert wird, das dann von der Einheit 163 abgegeben wird. Die von der Einheit 163 ausgeführte, inverse isomorphe Transformation ist in den nachstehenden Gleichungen 4 und 5 definiert. x = δ–1·y, (4)wobei y den der Einheit 163 zugeführten inversen Vektor und x den durch die inverse isomorphe Transformation δ–1 transformierten Vektor bezeichnet, mit
    Figure 00140001
    Die Einheit 164 führt eine affine Transformation mit dem von der Einheit 163 abgegeben Element über GF(28) aus. Wie aus 5 ersichtlich, ergibt sich ein affin transformierter Vektor SBOUT mit 128 Bit bestehend aus 16 Elementen S00' bis S33' mit jeweils 8-Bit-Daten. Der Vektor SBOUT hat die gleiche Anzahl an Bit wie der Vektor SBIN, welcher der Isomorphietransformationseinheit 161 zugeführt wird. Die affine Transformation ist durch die nachstehende Gleichung 6 definiert.
    Figure 00140002
    wobei x0 bis x7 Bitwerte des 8-Bit-Datenelements über GF(28), das von der Einheit 163 invers isomorph transformiert wurde, und x'0 bis x'7 Bitwerte des affin transformierten 8-Bit-Datenelements sind.
  • 6 veranschaulicht detailliert die zur Durchführung der inversen Operation über GF(((22)2)2) benutzte Inversoperationseinheit 162 von 5. Wie aus 6 ersichtlich, umfasst die Inversoperationseinheit 162 einen ersten Addierer 601, einen ersten Multiplizierer 602, einen ersten Quadrierer 603, einen ersten Koeffizientenmultiplizierer 608, einen zweiten Addierer 604, einen ersten Inversoperator 605, einen zweiten Multiplizierer 606 und einen dritten Multiplizierer 607. Der erste Addierer 601 addiert obere 4-Bit-Daten PH[3:0] und untere 4-Bit-Daten PL[3:0] der von der Isomorphietransformationseinheit 161 abgegebenen digitalen 8-Bit-Daten und gibt das Additionsergebnis als eine erste Summe ab. Der erste Multiplizierer 602 multipliziert die unteren 4-Bit-Daten PL[3:0] mit der vom ersten Addierer 601 abgegebenen ersten Summe über GF((22)2) und gibt das Multiplikationsergebnis als ein erstes Produkt ab. Der erste Quadrierer 603 empfängt die oberen 4-Bit-Daten PH[3:0] und gibt das Quadrat derselben als ein erstes Quadraturresultat ab. Der erste Koeffizientenmultiplizierer 608 multipliziert das erste Quadraturresultat mit dem ersten Koeffizienten λ, wie er in der obigen Gleichung 1 definiert ist, und gibt das Multiplikationsergebnis als ein erstes Koeffizientenprodukt ab. Der zweite Addierer 604 addiert das erste Produkt mit dem ersten Koeffizientenprodukt des ersten Koeffizientenmultiplizierer 608 und gibt das Additionsergebnis als eine zweite Summe ab. Der erste Inversoperator 605 berechnet das Inverse der zweiten Summe über GF((22)2) und gibt das berechnete Ergebnis ab. Die Betriebsweise des ersten Inversoperators 605 wird nachstehend unter Bezugnahme auf 7 näher erläutert.
  • Der zweite Multiplizierer 606 multipliziert die Ausgabe des ersten Inversoperators 605 mit der ersten Summe über GF((22)2) und gibt das Multiplikationsergebnis als ein zweites Produkt oder als das Inverse PL –1[3:0] der niedrigeren 4-Bit-Daten PL[3:0] ab. Der dritte Multiplizierer 607 multipliziert die Ausgabe des ersten Inversoperators 605 mit den oberen 4-Bit-Daten PH[3:0] und gibt das Multiplikationsergebnis als ein drittes Produkt oder das Inverse PH –1[3:0] der oberen 4-Bit-Daten PH[3:0] ab.
  • 7 zeigt detaillierter Aufbau und Funktionsweise des ersten Inversoperators 605, der eine inverse Operation über GF((22)2) ausführt. Wie aus 7 ersichtlich, umfasst der erste Inversoperator 605 von 6 einen dritten Addierer 701, einen vierten Multiplizierer 702, einen zweiten Quadrierer 703, einen zweiten Koeffizientenmultiplizierer 704, einen vierten Addierer 705, einen zweiten Inversoperator 706, einen fünften Multiplizierer 707 und einen sechsten Multiplizierer 708. Der dritte Addierer 701 addiert obere 2-Bit-Daten QH[1:0] mit unteren 2-Bit-Daten QL[1:0] von digitalen 4-Biten-Daten, welche die Ausgabe des zweiten Addierers 604 von 6 bilden, und gibt das Additionsresultat als eine dritte Summe ab. Der vierte Multiplizierer 702 multipliziert die dritte Summe mit den unteren 2-Bit-Daten QL[1:0] über GF(22) und gibt das Multiplikationsergebnis als ein viertes Produkt ab. Der zweite Quadrierer 703 quadriert die oberen 2-Bit-Daten QH[1:0] und gibt das Resultat als ein zweites Quadraturresultat ab. Der zweite Koeffizientenmultiplizierer 704 multipliziert das zweite Quadraturresultat mit dem zweiten Koeffizienten θ, wie er in der obigen Gleichung 1 definiert ist, und gibt das Multiplikationsergebnis als ein zweites Koeffizientenprodukt ab. Der vierte Addierer 705 addiert das vierte Produkt zum zweiten Koeffizientenprodukt und gibt das Additionsergebnis als eine vierte Summe ab. Der zweite Inversoperator 706 berechnet das Quadrat der vierten Summe und gibt das Quadraturresultat als das Inverse der vierten Summe ab. Mit anderen Worten ist das Quadrat der vierten Summe gleich ihrem Inversen. Der fünfte Multiplizierer 707 multipliziert die Ausgabe des zweiten Inversoperators 706 mit der dritten Summe über GF(22) und gibt das Multiplikationsergebnis als ein fünftes Produkt oder als das Inverse QL 1[1:0] der niedrigeren 2-Bit-Daten QL[1:0] ab. Der sechste Multiplizierer 708 multipliziert die Ausgabe des zweiten Inversoperators 706 mit den oberen 2-Bit-Daten QH[1:0] über GF(22) und gibt das Multiplikationsergebnis als ein sechstes Produkt oder als das Inverse QH –1[1:0] der oberen 2-Bit-Daten QH[1:0] ab.
  • 8 zeigt detaillierter den Aufbau und die Funktionsweise der in 6 zur Durchführung der Multiplikation über GF((22)2) benutzten 4-Bit-Multiplizierer 602, 606 und 607. Wie aus 8 ersichtlich, umfasst jeder der 4-Bit-Multiplizierer 602, 606 und 607 von 6 einen fünften Addierer 801, einen sechsten Addierer 802, einen siebten Multiplizierer 803, einen achten Multiplizierer 804, einen neunten Multiplizierer 805, einen siebten Addierer 806, einen dritten Koeffizientenmultiplizierer 807 und einen achten Addierer 808. Die 4-Bit-Multiplizierer 602, 606 und 607 empfangen jeweils zwei digitale 4-Bit-Datenwerte als einen ersten Operand A bzw. einen zweiten Operand B, um ein Multiplikationsresultat M der zwei digitalen 4-Bit-Datenwerte über GF((22)2) zu berechnen.
  • Dazu addiert der fünfte Addierer 801 obere 2-Bit-Daten BH[1:0] mit unteren 2-Bit-Daten BL[1:0] des zweiten Operanden B und gibt das Additionsresultat als eine fünfte Summe ab. Der sechste Addierer 802 addiert die oberen 2-Bit-Daten BH[1:0] mit unteren 2-Bit-Daten AL[1:0] des ersten Operanden A und gibt das Additionsergebnis als eine sechste Summe ab. Der siebte Multiplizierer 803 multipliziert die unteren 2-Bit-Daten BL[1:0] des zweiten Operanden B mit den unteren 2-Bit-Daten AL[1:0] des ersten Operanden A über GF(22) und gibt das Multiplikationsergebnis als ein siebtes Produkt ab. Der achte Multiplizierer 804 multipliziert die oberen 2-Bit-Daten BH[1:0] des zweiten Operanden B mit den oberen 2-Bit-Daten AH[1:0] des ersten Operanden A und gibt das Multiplikationsergebnis als ein achtes Produkt ab. Der neunte Multiplizierer 805 multipliziert die fünfte Summe mit der sechsten Summe über GF(22) und gibt das Multiplikationsresultat als ein neuntes Produkt ab. Der siebte Addierer 808 addiert das neunte Produkt mit dem siebten Produkt und gibt das Additionsergebnis als obere 2-Bit-Daten MH[1:0] des 4-Bit-Multiplikationsergebnisses M ab. Der dritte Koeffizientenmultiplizierer 807 multipliziert das achte Produkt mit dem zweiten Koeffizienten ϕ gemäß der obigen Gleichung 1 und gibt das Multiplikationsergebnis als ein drittes Koeffizientenprodukt ab. Der achte Addierer 808 addiert das sieb te Produkt mit dem dritten Koeffizientenprodukt und gibt das Additionsergebnis als untere 2-Bit-Daten ML[1:0] des 4-Bit-Multiplikationsergebnisses M ab.
  • 9 veranschaulicht Aufbau und Funktionsweise der 2-Bit-Multiplizierer 702, 707, 708, 803, 804 und 805 der 7 und 8, welche die Multiplikation über GF(22) ausführen. Wie aus 9 ersichtlich, umfasst jeder der 2-Bit-Multiplizierer 702, 707, 708, 803, 804 und 805 der 7 und 8 ein erstes UND-Gatter 901, ein zweites UND-Gatter 902, ein drittes UND-Gatter 903, ein viertes UND-Gatter 904, ein erstes Exklusiv-ODER-Gatter 905, ein zweites Exklusiv-ODER-Gatter 906 und ein drittes Exklusiv-ODER-Gatter 907. Jeder der 2-Bit-Multiplizierer 702, 707, 708, 803, 804 und 805 empfängt zwei digitale 2-Bit-Datenwerte als einen dritten Operanden C bzw. vierten Operanden D, um das Multiplikationsresultat der beiden digitalen 2-Bit-Datenwerte über GF(22) zu berechnen. Das Resultat der Multiplikation der Operanden C und D wird gemäß folgender Gleichung 7 berechnet. (ax + b)(cx + d) = acx2 + adx + bcx + bd = ac(x + 1) + adx + bcx + bd = (ac + ad + bc)x + (ac + bd) (7)
  • Dabei bezeichnen a und c obere sowie b und d untere Bits der 2-Bit-Daten.
  • Gleichung 7 wird folglich dadurch erhalten, dass der dritte Operand C mit „ax + b" und der vierte Operand D mit „cx + d" bezeichnet werden. Da ein primitives Polynom mit „x2+ x + 1" über GF(22) bezeichnet wird und das primitive Polynom ein irreduzibles Polynom in der obigen Gleichung 1 ist, ist in der obigen Gleichung 7 „x2" gleich „x + 1".
  • Somit berechnen die 2-Bit-Multiplizierer 702, 707, 708, 803, 804 und 805 ihr jeweiliges Multiplikationsergebnis wie folgt. Das erste UND-Gatter 901 berechnet das logische Produkt der oberen Bits „a" und „c" des dritten Operanden C bzw. des vierten Operanden D und gibt das Resultat „ac" dieser Berechnung als ein erstes logisches Produkt ab. Das zweite UND-Gatter 902 berechnet das logische Produkt des unteren Bit „b" des dritten Operanden C mit dem oberen Bit „c" des vierten Operanden D und gibt das Resultat „bc" der Berechnung als ein zweites logisches Produkt ab. Das dritte UND-Gatter 903 berechnet das logische Produkt des oberen Bit „a" des dritten Operanden C mit dem unteren Bit „d" des vierten Operanden D und gibt das Resultat „ad" dieser Berechnung als ein drittes logisches Produkt ab. Das vierte UND-Gatter 904 berechnet das logische Produkt der unteren Bits „b" und „d" des dritten Operanden C bzw. des vierten Operanden D und gibt das Resultat „bd" dieser Berechnung als ein viertes logisches Produkt ab. Das erste Exklusiv-ODER-Gatter 905 berechnet die Exklusiv-ODER-Verknüpfung der Ausgabe „ac" des ersten UND-Gatters 901 mit der Ausgabe „bc" des zweiten UND-Gatters 902 und gibt das Resultat „ac + bc" dieser Berechnung als eine erste XOR-Ausgabe ab. Das zweite Exklusiv-ODER-Gatter 906 berechnet die Exklusiv-ODER-Verknüpfung der Ausgabe „ac + bc" des ersten Exklusiv-ODER-Gatters 905 mit der Ausgabe „ad" des dritten UND-Gatters 903 und gibt das Resultat „ac + ad + bc" dieser Berechnung als oberes Datenbit des Multiplikationsresultates ab. Das dritte Exklusiv-ODER-Gatter 907 berechnet die Exklusiv-ODER-Verknüpfung der Ausgabe des ersten UND-Gatters 901 mit der Ausgabe des vierten UND-Gatters 904 und gibt das Resultat „ac + bd" dieser Berechnung als unteres Datenbit des Multiplikationsresultates ab.
  • 10 veranschaulicht ein Beispiel einer Hardware-Entschlüsselungsvorrichtung, die zum Entschlüsseln vom Chiffriertext eingesetzt werden kann, der von der Hardware-Verschlüsselungsvorrichtung von 1 erzeugt und übertragen wurde. Wie aus 10 ersichtlich, empfängt die Hardware-Entschlüsselungsvorrichtung Chiffriertext CIPHD, der von der Hardware-Verschlüsselungsvorrichtung 100 der 1 übertragen wurde, und entschlüsselt den Chiffriertext unter Verwendung eines von einem Systemnutzer bereitgestellten Eingabeschlüssels INKEY in Klartext. Der von der Hardware-Entschlüsselungsvorrichtung abgegebene Klartext kann geheime Informationen oder Authentikations-/Signaturdaten enthalten, die über ein System wie eine Smartcard, eine IC-Karte, das Internet, ein drahtloses LAN etc. übertragen werden. Im Entschlüsselungsprozess wird der oben erläuterte AES-Verschlüsselungsprozess umgekehrt ausgeführt. Wenn die Hardware-Verschlüsselungsvorrichtung 100 zehn AES-Durchläufe ausführt, wie in 1 angegeben, führt die Hardware-Entschlüsselungsvorrichtung zehn entsprechende zusätzliche Durchläufe umgekehrt zum Verschlüsselungsprozess aus, was in insgesamt zwanzig Durchläufen resultiert. Die Hardware-Entschlüsselungsvorrichtung benutzt einen Addierer 1100 sowie Module 1200 bis 1500, die zu Durchläufen 10 bis 1 gehören. Der Klartext wird vom letzten Modul 1500 abgegeben. Für die Durchführung der Entschlüsselung werden der Eingabeschlüssel INKEY und die weiteren Schlüssel KEY1 bis KEY10 in einer zur Nutzung bei der Verschlüsselung umgekehrten Reihenfolge verwendet.
  • Die Schlüsselbereitstellungseinheit 400 verwendet den Eingabeschlüssel INKEY zur Erzeugung der Schlüssel KEY1 bis KEY10 für die Entschlüsselung in gleicher Weise wie für den Verschlüsselungsprozess. Sobald der Schlüssel KEY10 erzeugt worden ist, wird der Entschlüsselungsprozess in der in 10 gezeigten Weise ausgeführt. Die Schlüsselbereitstellungseinheit 400 erzeugt die weiteren Schlüssel KEY9 bis INKEY zur Verwendung im jeweils zugehörigen Durchlauf 10 bis 1. Insgesamt werden somit zwanzig Zyklen des Systemtaktes benötigt, um die zehn Durchläufe für den Verschlüsselungsprozess und die zehn Durchläufe für den Entschlüsselungsprozess auszuführen, wie oben erläutert.
  • 11 veranschaulicht detaillierter Aufbau und Funktionsweise der zum zehnten bis zweiten Durchlauf in der Hardware-Entschlüsselungsvorrichtung von 10 gehörigen Module 1200 bis 1400. Wie aus 11 ersichtlich, transformiert jedes der Module 1200 bis 1400 von 10 einen eingangsseitigen Chiffriertext I_INCIPH unter Verwendung einer mit "inverse Shift_Row transformation" bezeichneten Operation in einem entsprechenden Schaltkreis 1600 zur inversen Zeilenverschiebung. Die Ausgabe des Schaltkreises 1600 wird dann durch eine mit "inverse Sub-Byte transformation" bezeichnete Operation in einem entsprechenden inversen Subbyte-Schaltkreis 1700 transformiert. Ein Addierer 1800 addiert zur Ausgabe des inversen Subbyte-Schaltkreises 1700 den zum betreffenden Modul gehörigen Schlüssel KEYN und gibt das Additionsergebnis aus. Das Additionsergebnis wird durch eine finale, mit "inverse Mix_Column transformation" bezeichnete Operation in einem entsprechenden inversen Spaltenmischungs-Schaltkreis 1900 transformiert, der das Transformationsergebnis als Chiffriertext I_OUTCIPH abgibt.
  • 12 zeigt detaillierter Aufbau und Funktionsweise des letzten Moduls 1500 von 10. Wie aus 12 ersichtlich, umfasst das Modul 1500 von 10 einen inversen Zeilenverschiebungs-Schaltkreis 2000, einen inversen Subbyte-Schaltkreis 2100 und einen Addierer 2200. Damit führt das Modul 1500, das zu einem finalen Durchlauf im Entschlüsselungsprozess gehört, einen Durchlauf aus, der die mit "inverse Shift_Row transformation", "inverse Sub_Byte transformation" und "Add_Round_Key operation" bezeichneten Operationen umfasst.
  • 13 veranschaulicht eine inverse S-BOX, wie sie in den inversen Subbyte-Schaltkreisen 1700 und 2100 der 11 und 12 eingesetzt werden kann. Wie aus 13 ersichtlich, führt die inverse S-BOX eine Transformation durch, die invers zu der von der S-BOX in 5 durchgeführten Transformation ist. Die inverse S-BOX benutzt dazu eine inverse affine Transformationseinheit 2300, eine Isomorphietransformati onseinheit 2400, eine Inversoperationseinheit 2500 und eine inverse Isomorphietransformationseinheit 2600. Der inverse Transformationsprozess gemäß den 10 bis 13 ist dem Fachmann ohne weiteres verständlich und kann vollständig in Hardware implementiert sein. Eine weitergehende detaillierte Beschreibung des inversen Transformationsprozesses ist daher an dieser Stelle entbehrlich.
  • Wie oben erläutert, berechnet die S-BOX von 5 in der Hardware-Kryptographiemaschine für den AES-Algorithmus mittels Durchführung der Operation "Sub_Byte transformation" das multiplikative Inverse eines Elements über GF(28) unter Verwendung einer Operation über das zusammengesetzte Feld GF(((22)2)2). Dabei werden von der Hardware-Krypographiemaschine keine Taktzyklen bei der Erzeugung des Schlüssels für den anfänglichen Durchlauf verschwendet. Die Hardware-Kryptographiemaschine benutzt eine optimierte Schlüsselbereitstellungseinheit 400 zur Erzeugung eines Schlüssels KEYN, der im jeweiligen Durchlauf verwendet wird, während jedes Taktzyklus. Dementsprechend weist die S-BOX von 5 bzw. die inverse S-BOX von 13 eine Größe von etwa 400 Gattern auf, was einen reduzierten Hardware-Aufwand bedeutet. Zudem wird die Anzahl benötigter Taktzyklen zur Berechnung der nichtlinearen Transformationsfunktion verringert. Die von der S-BOX in 5 bzw. der inversen S-BOX von 13 durchgeführten Operationen werden in Abhängigkeit von der variablen Länge der jeweiligen Schlüssel, die z.B. 128 Bit, 192 Bit oder 256 Bit betragen kann, in zehn, zwölf bzw. vierzehn Durchläufen ausgeführt.
  • Wie aus den obigen Erläuterungen deutlich wird, wird eine von der S-BOX benötigte Hardware-Fläche in der Hardware-Kryptographiemaschine minimiert, und auch die Anzahl benötigter Taktzyklen zur Erzeugung von Schlüsseln für den AES-Verschlüsselungsalgorithmus wird minimiert. Dementsprechend ergibt die Erfindung den Vorteil, dass sie einfach für miniaturisierte System wie Smartcards und IC-Karten an wendbar ist, bei denen nur wenig Hardware-Fläche zur Verfügung steht und eine hohe Betriebsgeschwindigkeit gefordert ist.

Claims (20)

  1. Vorrichtung zur Hardware-Verschlüsselung mit – einer Mehrzahl von sequentiell miteinander verbundenen Modulen (120 bis 150), wobei ein erstes Modul (120) einen ersten Schlüssel (KEY1) und Eingabedaten empfängt und einen Chiffriertext abgibt und jedes weitere Modul (130 bis 150) einen zugehörigen Schlüssel (KEY2 bis KEY10) und den vom vorhergehenden Modul abgegebenen Chiffriertext empfängt und einen Chiffriertext abgibt, und – einer Schlüsselbereitstellungseinheit (440) zur Bereitstellung der Schlüssel, dadurch gekennzeichnet, dass – jedes der Module (120 bis 150) eine S-BOX zur Berechnung eines multiplikativen Inversen jedes Elements in einem Eingabevektor (SBIN) über GF(28) unter Verwendung einer Operation über GF(((22)2)2) und zum Ersetzen jedes Elements im Eingabevektor durch ein Ersatzelement umfasst, das unter Verwendung eines Ergebnisses der Operation erhalten wird.
  2. Vorrichtung nach Anspruch 1, weiter dadurch gekennzeichnet, dass die Schlüsselbereitstellungseinheit zur Erzeugung der mehreren Schlüssel (KEY1 bis KEY10) in Bezug auf einen Eingabeschlüssel (INKEY) eingerichtet ist und die Vorrichtung einen Addierer (110) aufweist, der zum Eingabeschlüssel Übertragungsdaten (TXD) addiert und die resultierende Summe als die Eingabedaten für das erste Modul (120) abgibt.
  3. Vorrichtung nach Anspruch 1 oder 2, weiter dadurch gekennzeichnet, dass sie zehn, zwölf oder vierzehn Module beinhaltet.
  4. Vorrichtung nach einem der Ansprüche 1 bis 3, weiter dadurch gekennzeichnet, dass jedes Modul mit Ausnahme des letzten Moduls folgende Elemente enthält: – einen Subbyte-Schaltkreis (160), der die zugehörige S-BOX zur Erzeugung eines Subbyte-Ausgabevektors aus einem Eingabevektor benutzt, – einen Zeilenverschiebungs-Schaltkreis (170), der den Subbyte-Ausgabevektor empfängt und in einer Zeileneinheit abhängig von einer Zeileneinheit-Verschiebefunktion verschiebt und das Resultat als einen Zeilenverschiebungs-Ausgabevektor abgibt, – einen Spaltenmischungs-Schaltkreis (180), der den Zeilenverschiebungs-Ausgabevektor in einer Spalteneinheit abhängig von einer Spalteneinheits-Permutationsfunktion permutiert und das Resultat als Spaltenmischungs-Ausgabevektor abgibt, und – einen Addierer (190), der den Spaltenmischungs-Ausgabevektor und einen zum zugehörigen Modul gehörigen Schlüssel addiert und die resultierende Summe abgibt, und/oder dass das letzte Modul folgende Elemente enthält: – einen Subbyte-Schaltkreis (200), der die zugehörige S-BOX zur Erzeugung eines Subbyte-Ausgabevektors aus einem Eingabevektor benutzt, – einen Zeilenverschiebungs-Schaltkreis (210), der den Subbyte-Ausgabevektor empfängt und in einer Zeileneinheit abhängig von einer Zeileneinheit-Verschiebefunktion verschiebt und das Resultat als einen Zeilenverschiebungs-Ausgabevektor abgibt, und – einen Addierer (220), der den Zeilenverschiebungs-Ausgabevektor und einen zum zugehörigen Modul gehörigen Schlüssel addiert und die resultierende Summe abgibt.
  5. Vorrichtung nach einem der Ansprüche 1 bis 4, weiter dadurch gekennzeichnet, dass die S-BOX folgende Elemente enthält: – eine Isomorphietransformationseinheit (161) zur Transformation eines Elements über GF(28) in ein Element über GF(((22)2)2), – eine Inversoperationseinheit (162) zur Berechnung des Inversen des Elements über GF(((22)2)2), – eine Einheit (163) zur inversen isomorphen Transformation, um das Inverse des Elements über GF(((22)2)2) in ein transformiertes Element über GF(28) zu transformieren, und – eine Einheit (164) zur affinen Transformation des transformierten Elements über GF(28) in Abhängigkeit von einer affinen Transformationsfunktion.
  6. Vorrichtung nach Anspruch 5, weiter dadurch gekennzeichnet, dass die Inversoperationseinheit folgende Elemente enthält: – einen ersten Addierer (601) zum Addieren oberer 4-Bit-Daten und unterer 4-Bit-Daten eines digitalen 8-Bit-Datenwerts, der das Element über GF(((22)2)2) bildet, und zum Abgeben einer ersten Summe, – einen ersten Multiplizierer (602) zum Multiplizieren der ersten Summe mit den unteren 4-Bit-Daten über GF((22)2) und zum Abgeben eines ersten Produkts, – einen ersten Quadrierer (603) zum Quadrieren der oberen 4-Bit-Daten und Abgeben eines ersten Quadraturergebnisses, – einen ersten Koeffizientenmultiplizierer (608) zum Multiplizieren des ersten Quadraturergebnisses mit einem ersten Koeffizienten (λ) und Abgeben eines ersten Koeffizientenproduktes, – einen zweiten Addierer (604) zum Addieren des ersten Produkts und des ersten Koeffizientenprodukts und zum Abgeben einer zweiten Summe, – einen ersten Inversoperator (605) zur Berechnung des Inversen der zweiten Summe über GF((22)2), – einen zweiten Multiplizierer (606) zum Multiplizieren des Inversen der zweiten Summe über GF((22)2) mit der ersten Summe über GF((22)2) und zum Abgeben eines zweiten Produkts als dem Inversen der unteren 4-Bit-Daten und – einen dritten Multiplizierer (607) zum Multiplizieren des Inversen der zweiten Summe über GF((22)2) mit den oberen 4-Bit-Daten über GF((22)2) und zum Abgeben eines dritten Produkts als dem Inversen der oberen 4-Bit-Daten.
  7. Vorrichtung nach Anspruch 6, weiter dadurch gekennzeichnet, dass der erste Inversoperator folgende Elemente enthält: – einen dritten Addierer (701) zum Addieren von oberen 2-Bit-Daten und unteren 2-Bit-Daten eines digitalen 4-Bit-Datenwertes, der die zweite Summe bildet, und zum Abgeben einer dritten Summe, – einen vierten Multiplizierer zum Multiplizieren der dritten Summe mit den unteren 2-Bit-Daten über GF(22) und zum Abgeben eines vierten Produkts, – einen zweiten Quadrierer (703) zum Quadrieren der oberen 2-Bit-Daten und Abgeben eines zweiten Quadraturergebnisses, – einen zweiten Koeffizientenmultiplizierer (704) zum Multiplizieren des zweiten Quadraturergebnisses mit einem zweiten Koeffizienten (ϕ) und zum Abgeben eines zweiten Koeffizientenproduktes, – einen vierten Addierer (705) zum Addieren des vierten Produktes und des zweiten Koeffizientenproduktes und zum Abgeben einer vierten Summe, – einen zweiten Inversoperator (706) zur Berechnung eines Quadrats der vierten Summe als Inverses der vierten Summe, – einen fünften Multiplizierer (707) zum Multiplizieren des Inversen der vierten Summe mit der dritten Summe über GF(22) und zum Abgeben eines fünften Produktes als Inverses der unteren 2-Bit-Daten und – einen sechsten Multiplizierer (708) zum Multiplizieren des Inversen der vierten Summe mit den oberen 2-Bit-Daten über GF(22) und zum Abgeben eines sechsten Produktes als Inverses der oberen 2-Bit-Daten.
  8. Vorrichtung nach Anspruch 6 oder 7, weiter dadurch gekennzeichnet, dass wenigstens einer von dem ersten, dem zweiten und dem dritten Multiplizierer folgende Elemente enthält: – einen fünften Addierer (801) zum Addieren oberer 2-Bit-Daten und unterer 2-Bit-Daten eines zweiten Eingabeoperanden (B) mit vier Bit und zum Abgeben einer fünften Summe, – einen sechsten Addierer (802) zum Addieren oberer 2-Bit-Daten und unterer 2-Bit-Daten eines ersten Eingabeoperanden (A) mit vier Bit und zum Abgeben einer sechsten Summe, – einen siebten Multiplizierer (803) zum Multiplizieren der unteren 2-Bit-Daten des ersten und des zweiten Eingabeoperanden über GF(22) und zum Abgeben eines siebten Produkts, – einen achten Multiplizierer (805) zum Multiplizieren der oberen 2-Bit-Daten des ersten und des zweiten Eingabeoperanden über GF(22) und zum Abgeben eines achten Produkts, – einen neunten Multiplizierer (805) zum Multiplizieren der fünften Summe mit der sechsten Summe über GF(22) und zum Abgeben eines neunten Produkts, – einen siebten Addierer (806) zum Addieren des neunten Produkts und des siebten Produkts und zum Abgeben einer siebten Summe als obere 2-Bit-Daten eines 4-Bit-Multiplikationsresultats, – einen zweiten Koeffizientenmultiplizierer (807) zum Multiplizieren des achten Produkts mit einem zweiten Koeffizienten (ϕ) und zum Abgeben eines zweiten Koeffizientenproduktes und – einen achten Addierer (808) zum Addieren des siebten Produkts und des zweiten Koeffizientenprodukts und zum Abgeben einer achten Summe als untere 2-Bit-Daten des 4-Bit-Multiplikationsresultates.
  9. Vorrichtung nach Anspruch 7 oder 8, weiter dadurch gekennzeichnet, dass wenigstens einer von dem vierten, dem fünften und dem sechsten Multiplizierer folgende Elemente enthält: – ein erstes UND-Gatter (901) zum Berechnen des logischen Produkts eines oberen Bit eines ersten Eingabeoperanden mit zwei Bit und eines oberen Bit eines zweiten Eingabeoperanden mit zwei Bit und zum Abgeben eines ersten logischen Produkts, – ein zweites UND-Gatter (902) zum Berechnen des logischen Produkts eines unteren Bit des ersten Eingabeoperanden und des oberen Bit des zweiten Eingabeoperanden und zum Abgeben eines zweiten logischen Produkts, – ein drittes UND-Gatter (903) zum Berechnen des logischen Produkts des oberen Bit des ersten Eingabeoperanden und eines unteren Bit des zweiten Eingabeoperanden und zum Abgeben eines dritten logischen Produkts, – ein viertes UND-Gatter (904) zum Berechnen des logischen Produkts des unteren Bit des ersten Eingabeoperanden und des unteren Bit des zweiten Eingabeoperanden und zum Abgeben eines vierten logischen Produkts, – ein erstes Exklusiv-ODER-Gatter (905) zur Exklusiv-ODER-Verknüpfung des ersten logischen Produkts und des zweiten logischen Produkts und zum Abgeben einer ersten XOR-Ausgabe, – ein zweites Exklusiv-ODER-Gatter (906) zur Exklusiv-ODER-Verknüpfung der ersten XOR-Ausgabe und des dritten logischen Produkts und zum Abgeben eines oberen Bit eines 2-Bit-Multiplikationsresultats und – ein drittes Exklusiv-ODER (907) zur Exklusiv-ODER-Verknüpfung des ersten logischen Produkts und des vierten logischen Produkts und zum Abgeben eines unteren Bit des 2-Bit-Multiplikationsresultats.
  10. Vorrichtung nach Anspruch 8 oder 9, weiter dadurch gekennzeichnet, dass wenigstens einer von dem siebten, dem achten und dem neunten Multiplizierer folgende Elemente enthält: – ein erstes UND-Gatter (901) zum Berechnen des logischen Produkts eines oberen Bit eines dritten Eingabeoperanden mit zwei Bit und eines oberen Bit eines vierten Eingabeoperanden mit zwei Bit und zum Abgeben eines ersten logischen Produkts, – ein zweites UND-Gatter (902) zum Berechnen des logischen Produkts eines unteren Bit des dritten Eingabeoperanden und des oberen Bit des vierten Eingabeoperanden und zum Abgeben eines zweiten logischen Produkts, – ein drittes UND-Gatter (903) zum Berechnen des logischen Produkts des oberen Bit des dritten Eingabeoperanden und eines unteren Bit des vierten Eingabeoperanden und zum Abgeben eines dritten logischen Produkts, – ein viertes UND-Gatter (904) zum Berechnen des logischen Produkts des unteren Bit des dritten Eingabeoperanden und des unteren Bit des vierten Eingabeoperanden und zum Abgeben eines vierten logischen Produkts, – ein erstes Exklusiv-ODER-Gatter (905) zur Exklusiv-ODER-Verknüpfung des ersten logischen Produkts und des zweiten logischen Produkts und zum Abgeben einer ersten XOR-Ausgabe, – ein zweites Exklusiv-ODER-Gatter (906) zur Exklusiv-ODER-Verknüpfung der ersten XOR-Ausgabe und des dritten logischen Produkts und zum Abgeben eines oberen Bit eines 2-Bit-Multiplikationsresultats und – ein drittes Exklusiv-ODER (907) zur Exklusiv-ODER-Verknüpfung des ersten logischen Produkts und des vierten logischen Produkts und zum Abgeben eines unteren Bit des 2-Bit-Multiplikationsresultats.
  11. Vorrichtung nach einem der Ansprüche 2 bis 10, weiter dadurch gekennzeichnet, dass die Schlüsselbereitstellungseinheit den ersten Schlüssel unter Verwendung des Eingabeschlüssels erzeugt und sequentiell die weiteren Schlüssel für die zugehörigen Module erzeugt, wobei zur Erzeugung jedes weiteren Schlüssels ein vorheriger, in einem Register gespeicherter Schlüssel benutzt wird und der Eingabeschlüssel dem Addierer zugeführt wird und der erste Schlüssel in einem einzigen Zyklus eines Systemtakts erzeugt wird.
  12. Vorrichtung nach einem der Ansprüche 1 bis 11, weiter dadurch gekennzeichnet, dass die Schlüsselbereitstellungseinheit folgende Elemente enthält: – einen Multiplexer (420), der den Eingabeschlüssel und eine Ausgabe eines Registers empfängt und selektiv eine der empfangenen Eingaben basierend auf einem Steuersignal (RNDST) abgibt, und – einen Schlüsselgenerator (430), der die Ausgabe des Multiplexers empfängt und einen Schlüssel erzeugt und abgibt, der vom Registerempfangen wird.
  13. Verfahren zur Hardware-Verschlüsselung, bei dem – eine Mehrzahl von Schlüsseln (KEY1 bis KEY10) entsprechend einer Mehrzahl von sequentiell angeordneten Modulen unter Verwendung eines Eingabeschlüssels (INKEY) erzeugt wird, – Eingabedaten in Chiffriertext unter Verwendung eines ersten der mehreren Module und eines ersten der Schlüssel transformiert werden und der Chiffriertext abgegeben wird und – der vom ersten Modul abgegebene Chiffriertext sequentiell unter Verwendung der weiteren Module und deren zugehöriger Schlüssel transformiert wird, dadurch gekennzeichnet, dass die Transformation der Eingabedaten in Chiffriertext folgende Schritte umfasst: – Empfangen der Eingabedaten als Eingabevektor in einer S-BOX und – Berechnen eines multiplikativen Inversen jedes Elements im Eingabevektor über GF(28) unter Verwendung einer Operation über GF(((22)2)2) und Ersetzen jedes Elements im Eingabevektor durch ein Ersatzelement, das unter Verwendung des Resultat der Operation erhalten wird.
  14. Verfahren nach Anspruch 13, weiter gekennzeichnet durch das Addieren von Übertragungsdaten (TXD) zum Eingabeschlüssel (INKEY) und Abgeben einer resultierenden Summe als die Eingabedaten.
  15. Verfahren nach Anspruch 13 oder 14, weiter dadurch gekennzeichnet, dass zehn, zwölf oder vierzehn Module vorgesehen werden.
  16. Verfahren nach einem der Ansprüche 13 bis 15, weiter dadurch gekennzeichnet, dass das sequentielle Transformieren des vom ersten Modul abgegebenen Chiffriertextes in weitere Chiffriertexte folgende Schritte umfasst: – Empfangen eines Eingabesignals als Eingabevektor in eine S-BOX, Durchführen einer S-BOX-Operation und Abgeben eines Resultats der S-BOX-Operation, – Verschieben des Resultats der S-BOX-Operation in einer Zeileneinheit gemäß einer Zeileneinheits-Verschiebefunktion und Abgeben eines Verschiebeergebnisvektors, – Permutieren des Verschiebeergebnisvektors in einer Spalteneinheit gemäß einer Spalteneinheits-Permutationsfunktion und Abgeben eines entsprechenden Permutationsvektors und – Addieren des Permutationsvektors zu einem zugehörigen der Schlüssel und Abgeben einer resultierenden Summe als Eingabesignal für ein folgendes Modul, wobei eine letzte Transformation von Chiffriertext folgende Schritte umfasst: – Empfangen eines Eingabesignals als Eingabevektor in eine letzte S-BOX, Durchführen einer letzten S-BOX-Operation und Abgeben eines Resultats als letzte S-BOX-Operation, – Verschieben des Resultats der S-BOX-Operation in einer Zeileneinheit gemäß einer Zeileneinheits-Verschiebefunktion und Abgeben eines finalen Verschiebeergebnisvektors und – Addieren des finalen Verschiebeergebnisvektors zu einem zugehörigen der Schlüssel und Abgeben eines Resultats der Addition als Chiffriertext.
  17. Verfahren nach einem der Ansprüche 13 bis 16, weiter dadurch gekennzeichnet, dass das Ersetzen des jeweiligen Elements im Eingabevektor mit einem Ersatzelement folgende Schritte umfasst: – Transformieren jedes Elements im Eingabevektor über GF(28) in ein Element über GF(((22)2)2), – Berechnen und Abgeben des multiplikativen Inversen des Elements über GF(((22)2)2), – Transformieren des multiplikativen Inversen des Elements über GF(((22)2)2) in ein transformiertes Element über GF(28) und – Transformieren des transformierten Elements über GF(28) gemäß einer affinen Transformationsfunktion.
  18. Verfahren nach Anspruch 17, weiter dadurch gekennzeichnet, dass zur Berechnung des Inversen des Elements über GF(((22)2)2) ein digitaler 8-Bit-Datenwert, der das Element über GF(((22)2)2) bildet, in untere 4-Bit-Daten und obere 4-Bit-Daten aufgeteilt wird, um ein Inverses der oberen und der unteren 4-Bit-Daten über GF((22)2) unter Verwendung einer einfachen Addition und Multiplikation zu berechnen.
  19. Verfahren nach Anspruch 18, weiter dadurch gekennzeichnet, dass zur Berechnung des Inversen des Elements über GF((22)2) die oberen und unteren 4-Bit-Daten, die das Element über GF((22)2) bilden, jeweils in untere 2-Bit-Daten und obere 2-Bit-Daten aufgeteilt werden, um das Inverse der oberen und der unteren 2-Bit-Daten über GF(22) unter Verwendung einer einfachen Addition und Multiplikation zu berechnen.
  20. Verfahren nach einem der Ansprüche 13 bis 19, weiter dadurch gekennzeichnet, dass die Erzeugung der Schlüssel folgende Schritte umfasst: – Erzeugen des ersten Schlüssels unter Verwendung des Eingabeschlüssels und – sequentielles Erzeugen eines jeweils weiteren Schlüssels unter Verwendung des durch ein in der Sequenz vorhergehendes Modul benutzten, in einem Register gespeicherten Schlüssels, wobei die Bereitstellung des Eingabeschlüssels für den Addierer und die Erzeugung des ersten Schlüssels in einem einzigen Zyklus eines Systemtakts ausgeführt werden.
DE200510005335 2004-01-29 2005-01-28 Vorrichtung und Verfahren zur Hardware-Verschlüsselung Ceased DE102005005335A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020040005647A KR100800468B1 (ko) 2004-01-29 2004-01-29 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
KR10-2004-0005647 2004-01-29

Publications (1)

Publication Number Publication Date
DE102005005335A1 true DE102005005335A1 (de) 2005-08-25

Family

ID=34806017

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200510005335 Ceased DE102005005335A1 (de) 2004-01-29 2005-01-28 Vorrichtung und Verfahren zur Hardware-Verschlüsselung

Country Status (4)

Country Link
US (1) US20050169463A1 (de)
JP (1) JP2005215688A (de)
KR (1) KR100800468B1 (de)
DE (1) DE102005005335A1 (de)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2893796B1 (fr) * 2005-11-21 2008-01-04 Atmel Corp Procede de protection par chiffrement
US20080019524A1 (en) * 2006-06-29 2008-01-24 Kim Moo S Apparatus and method for low power aes cryptographic circuit for embedded system
US8094815B2 (en) * 2006-11-13 2012-01-10 Electronics Andtelecommunications Research Institute Arithmetic method and apparatus for supporting AES and ARIA encryption/decryption functions
US7949130B2 (en) 2006-12-28 2011-05-24 Intel Corporation Architecture and instruction set for implementing advanced encryption standard (AES)
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
JP5197258B2 (ja) * 2007-10-10 2013-05-15 キヤノン株式会社 暗号処理回路
US8233615B2 (en) * 2008-01-15 2012-07-31 Inside Secure Modular reduction using a special form of the modulus
TWI416347B (zh) 2009-06-22 2013-11-21 Realtek Semiconductor Corp 處理有限域運算之方法與運算電路
US9832769B2 (en) 2009-09-25 2017-11-28 Northwestern University Virtual full duplex network communications
US8665063B2 (en) * 2009-09-25 2014-03-04 Northwestern University Neighbor discovery techniques
US20160269175A1 (en) * 2015-03-09 2016-09-15 Qualcomm Incorporated Cryptographic cipher with finite subfield lookup tables for use in masked operations
US10409614B2 (en) 2017-04-24 2019-09-10 Intel Corporation Instructions having support for floating point and integer data types in the same register
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
CN108737073B (zh) * 2018-06-22 2021-09-28 北京智芯微电子科技有限公司 分组加密运算中抵抗能量分析攻击的方法和装置
KR102838677B1 (ko) 2019-03-15 2025-07-25 인텔 코포레이션 매트릭스 가속기 아키텍처를 위한 희소 최적화
US12182035B2 (en) 2019-03-15 2024-12-31 Intel Corporation Systems and methods for cache optimization
KR102894763B1 (ko) 2019-03-15 2025-12-03 인텔 코포레이션 하이브리드 부동 소수점 포맷에 대한 내적 누산 명령어를 갖는 그래픽 프로세서 및 그래픽 프로세싱 유닛
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
JP7383985B2 (ja) * 2019-10-30 2023-11-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
US11861761B2 (en) 2019-11-15 2024-01-02 Intel Corporation Graphics processing unit processing and caching improvements
US11663746B2 (en) 2019-11-15 2023-05-30 Intel Corporation Systolic arithmetic on sparse data
KR102875089B1 (ko) * 2020-06-10 2025-10-23 한국전자통신연구원 곱셉 역원 연산 회로, 장치 및 방법
US11968187B2 (en) * 2020-10-23 2024-04-23 Secturion Systems, Inc. Multi-independent level security for high performance computing and data storage systems
KR20250079746A (ko) * 2023-11-27 2025-06-04 데이터얼라이언스 주식회사 저전력 광역 네트워크에서 패킷을 암호화하여 전송하는 방법 및 장치

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997044935A1 (en) * 1996-05-20 1997-11-27 Philips Electronics N.V. Cryptographic method and apparatus for non-linearly merging a data block and a key
KR100296958B1 (ko) * 1998-05-06 2001-09-22 이석우 블록 데이터 암호화 장치
KR100377172B1 (ko) * 2000-06-13 2003-03-26 주식회사 하이닉스반도체 데이터 암호화 표준 알고리즘을 이용한 암호화 장치의 키스케쥴러
CN1193537C (zh) * 2000-07-04 2005-03-16 皇家菲利浦电子有限公司 将输入数据块加密转换成输出数据块的方法和系统
JP3505482B2 (ja) * 2000-07-12 2004-03-08 株式会社東芝 暗号化装置、復号装置及び拡大鍵生成装置、拡大鍵生成方法並びに記録媒体
US7142671B2 (en) * 2000-12-13 2006-11-28 Broadcom Corporation Methods and apparatus for implementing a cryptography engine
KR20020087331A (ko) * 2001-05-14 2002-11-22 최병윤 부분 라운드간 파이프라인 기법을 이용한 AES Rijndael암호 및 복호 회로
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
TW527783B (en) * 2001-10-04 2003-04-11 Ind Tech Res Inst Encryption/deciphering device capable of supporting advanced encryption standard
US7801301B2 (en) * 2001-10-10 2010-09-21 Stmicroelectronics S.R.L. Method and circuit for data encryption/decryption
US7283628B2 (en) * 2001-11-30 2007-10-16 Analog Devices, Inc. Programmable data encryption engine
US7508937B2 (en) 2001-12-18 2009-03-24 Analog Devices, Inc. Programmable data encryption engine for advanced encryption standard algorithm
JP4328487B2 (ja) * 2002-01-28 2009-09-09 インターナショナル・ビジネス・マシーンズ・コーポレーション 組合せ回路、暗号回路、その生成方法及びプログラム
US20030198345A1 (en) * 2002-04-15 2003-10-23 Van Buer Darrel J. Method and apparatus for high speed implementation of data encryption and decryption utilizing, e.g. Rijndael or its subset AES, or other encryption/decryption algorithms having similar key expansion data flow
US7257229B1 (en) * 2002-06-07 2007-08-14 Winbond Electronics Corporation Apparatus and method for key scheduling
JP3984116B2 (ja) * 2002-07-09 2007-10-03 株式会社東芝 フォトマスクの製造方法
US20040047466A1 (en) * 2002-09-06 2004-03-11 Joel Feldman Advanced encryption standard hardware accelerator and method
US7421076B2 (en) * 2003-09-17 2008-09-02 Analog Devices, Inc. Advanced encryption standard (AES) engine with real time S-box generation

Also Published As

Publication number Publication date
US20050169463A1 (en) 2005-08-04
KR100800468B1 (ko) 2008-02-01
JP2005215688A (ja) 2005-08-11
KR20050078271A (ko) 2005-08-05

Similar Documents

Publication Publication Date Title
DE102005005335A1 (de) Vorrichtung und Verfahren zur Hardware-Verschlüsselung
DE60105788T2 (de) AES Verschlüsselungsschaltung
DE102005012098B4 (de) Datenchiffrierprozessor sowie AES-Chiffriersystem und AES-Chiffrierverfahren
DE69721439T2 (de) Kryptographisches verfahren und einrichtung zum nichtlinearen zusammenfugen eines datenblocks und eines schlussels
DE60222052T2 (de) Verschlüsselung gesichert gegen Angriffe durch die Analyse der Leistungsaufnahme (DPA)
DE69728465T2 (de) Nichtparalleler Mehrzyklus-Verschlüsselungsapparat
DE602005002632T2 (de) Schlüsselmaskierung für kryptographische Prozesse mittels einer Kombination von Zufallsmaskenwerten
DE60314055T2 (de) Verschlüsselung und Entschlüsselung in einem Schaltkreis, bei der eine nichtlineare Transformation wie die SUBBYTE-Operation maskiert wird
DE68922847T2 (de) Übertragungsvorrichtung.
DE602004001273T2 (de) Verfahren und Vorrichtung zur Identifiezierungsbasierten Verschlüsselung
DE60024739T2 (de) Generator eines erweiterten Schlüssels, Verschlüsselungs/Entschlüsselungsvorrichtung, Verfahren zur Erzeugung eines erweiterten Schlüssels und Speichermedium
EP3218893B1 (de) Gehärtete white box implementierung
DE102019208032A1 (de) Verfahren und system für fehlertolerante und sichere mehrparteienberechnung mit spdz
DE102008013785A1 (de) Vorberechneter Verschlüsselungsschlüssel
DE10347455B4 (de) Pseudozufallszahlengenerator für einen Stream Cipher
EP1298834B1 (de) Verfahren und Vorrichtung zum Verschlüsseln und Entschlüsseln von Daten
DE102005056814A1 (de) Kryptografiesystem und Datenverschlüsselungsverfahren
WO2008096004A1 (de) Reduktion von seiten-kanal-informationen durch interagierende krypto-blocks
DE69838258T2 (de) Public-Key-Datenübertragungssysteme
DE102009000869A1 (de) Verfahren und Vorrichtung zur manipulationssicheren Übertragung von Daten
DE10339999A1 (de) Pseudozufallszahlengenerator
DE69333257T2 (de) Anlage für Signalschaltung und -verarbeitung
DE60301750T2 (de) Vorrichtung zur Erzeugung eines erweiterten Schlüssels, Verschlüsselungsvorrichtung und Verschlüsselungssystem
DE102004042826A1 (de) Verfahren und Vorrichtung zur Datenverschlüsselung
DE102005010779B4 (de) Schlüsseldispositionsvorrichtung und System zur Ver-/Entschlüsselung von Daten

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8131 Rejection