DE112016004342T5 - Hardware-Beschleuniger mit doppelt affiner abgebildeter S-Box - Google Patents

Hardware-Beschleuniger mit doppelt affiner abgebildeter S-Box Download PDF

Info

Publication number
DE112016004342T5
DE112016004342T5 DE112016004342.2T DE112016004342T DE112016004342T5 DE 112016004342 T5 DE112016004342 T5 DE 112016004342T5 DE 112016004342 T DE112016004342 T DE 112016004342T DE 112016004342 T5 DE112016004342 T5 DE 112016004342T5
Authority
DE
Germany
Prior art keywords
field
bit sequence
finite
processing system
processor
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.)
Withdrawn
Application number
DE112016004342.2T
Other languages
English (en)
Inventor
Sudhir K. Satpathy
Sanu K. Mathew
Vinodh Gopal
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 DE112016004342T5 publication Critical patent/DE112016004342T5/de
Withdrawn legal-status Critical Current

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/10Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols with particular housing, physical features or manual controls
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/726Inversion; Reciprocal calculation; Division of elements of a finite field
    • 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/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Advance Control (AREA)

Abstract

Ein Verarbeitungssystem enthält einen Speicher und ein kryptografisches Beschleunigermodul, das betriebsbereit an den Speicher gekoppelt ist, wobei das kryptografische Beschleunigermodul zum Implementieren einer Byte-Ersatzoperation durch Durchführung: einer ersten abgebildeten affinen Transformation einer Eingangs-Bit-Sequenz, um eine erste Zwischen-Bit-Sequenz zu erzeugen, einer inversen Transformation der ersten Zwischen-Bit-Sequenz, um eine zweite Zwischen-Bit-Sequenz zu erzeugen, und einer zweiten abgebildeten affinen Transformation der zweiten Zwischen-Bit-Sequenz, um eine Ausgangs-Bit-Sequenz zu erzeugen, verwendet wird

Description

  • TECHNISCHES GEBIET
  • Diese Offenbarung betrifft im Allgemeinen Rechenvorrichtungen und insbesondere Rechenvorrichtungen zur Durchführung kryptografischer Operationen.
  • HINTERGRUND
  • Kryptografische Verfahren können zum Schutz vertraulicher Informationen in Computersystemen und anderen elektronischen Vorrichtungen verwendet werden. Zum Beispiel kann eine Verschlüsselungsoperation durchgeführt werden, in der eine Reihe von Transformationen, die durch einen gewählten kryptografischen Algorithmus spezifiziert sind, an Klartexteingangsdaten (z. B. einer Bit-Sequenz, die Text, Zahlen, verständliche Zeichen usw. darstellt) mit einem Verschlüsselungsschlüssel (z. B. einer Bit-Sequenz) durchgeführt wird, um verschlüsselte Daten (chiffrierten Text) zu erzeugen. Es ist im Allgemeinen praktisch nicht möglich, die unverschlüsselten Klartextdaten aus den verschlüsselten Daten ohne Kenntnis des kryptografischen Schlüssels zu ermitteln. Sollte der kryptografische Schlüssel bekannt sein, kann eine Entschlüsselungsoperation (manchmal als umgekehrte Chiffre bezeichnet) an den verschlüsselten Daten durchgeführt werden, um den entsprechenden Klartext (die unverschlüsselten Daten) wiederherzustellen.
  • Figurenliste
  • Die Offenbarung wird aus der folgenden ausführlichen Beschreibung und aus den beiliegenden Zeichnungen verschiedener Ausführungsformen der Offenbarung besser verständlich. Die Zeichnungen sollten jedoch nicht als Einschränkung der Offenbarung auf die speziellen Ausführungsformen verstanden werden, sondern nur der Erklärung und dem Verständnis dienen.
    • 1 zeigt schematisch ein Verarbeitungssystem, das zur Durchführung kryptografischer Operationen verwendet werden kann, gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung;
    • 2 zeigt schematisch ein Blockdiagramm eines kryptografischen Hardware-Beschleunigers, der kryptografische Operationen, gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung implementiert;
    • 3 zeigt schematisch beispielhafte Transformationsmatrizen, die zum Implementieren einer S-Box gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung verwendet werden können;
    • 4 zeigt schematisch eine Mapping-Matrix zum Transformieren des Primfeldes GF(28) in ein Kompositfeld GF(24)2 gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung;
    • 5 zeigt schematisch beispielhafte vereinte Transformationsmatrizen, die zum Implementieren einer S-Box gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung verwendet werden können;
    • 6 zeigt schematisch eine beispielhafte Implementierung einer S-Box unter Verwendung der Mapping- und Invers-Mapping-Matrizen, die zu den entsprechenden affinen Matrizen vereint sind, gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung;
    • 7 zeigt schematisch eine Auswertung möglicher Kombinationen von Polynomen in einem Kompositfeld des Primfeldes GF(28), gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung;
    • 8 veranschaulicht ein Flussdiagramm eines beispielhaften Verfahrens einer Durchführung einer kryptografischen Operation (wie einer Implementierung einer S-Box) gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung;
    • 9 veranschaulicht ein Flussdiagramm eines beispielhaften Verfahrens 900 zur Identifizierung einer S-Box-Implementierung mit optimalem Flächendesign gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung;
    • 10 veranschaulicht ein hochwertiges Komponentendiagramm eines beispielhaften Computersystems gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung;
    • 11 veranschaulicht ein Blockdiagramm eines Prozessors gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung;
    • 12A-12B zeigt schematisch Elemente einer Prozessormikroarchitektur gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung;
    • 13 veranschaulicht ein Blockdiagramm eines beispielhaften Computersystems gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung;
    • 14 veranschaulicht ein Blockdiagramm eines beispielhaften System-on-Chip (SoC) gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung;
    • 15 veranschaulicht ein Blockdiagramm eines beispielhaften Computersystems gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung; und
    • 16 veranschaulicht ein Blockdiagramm eines beispielhaften System-on-Chip (SoC), gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • „Kryptografische Operation“ soll sich hier auf eine Datenverarbeitungsoperation beziehen, die geheime Parameter (z. B. Verschlüsselungs-/Entschlüsselungsoperationen unter Verwendung geheimer Schlüssel) beinhaltet. „Kryptografisches Datenverarbeitungssystem“ soll sich hier auf ein Datenverarbeitungssystem (z. B. einen Allzweck- oder spezialisierten Prozessor, ein System-on-Chip oder dergleichen) beziehen, das zur Durchführung kryptografischer Operationen verwendet wird.
  • Ein kryptografisches Verfahren, wie Advanced Encryption Standard (AES) oder SMS4, kann mehrere Wiederholungen (auch als „Runden“ bezeichnet) durchführen, um, unter Verwendung eines Verschlüsselungsschlüssels, Klartextdaten in einen verschlüsselten chiffrierten Text zu transformieren. Jede Runde kann eine Abfolge von arithmetischen, logischen oder Byte-Umsetzungsoperationen umfassen, die an einem Eingangszustand unter Verwendung eines Rundenschlüssels durchgeführt werden, der aus dem Verschlüsselungsschlüssel abgeleitet ist. Der resultierende Zustand jeder außer der letzten Runde kann dann als Eingangszustand der folgenden Runde verwendet werden.
  • Die rechnerische Komplexität eines Mappings solcher arithmetischer, logischer oder Byte-Umsetzungsoperationen auf Allzweck-Mikroprozessoren, kombiniert mit hohen Datenraten einer Echtzeitmedienverarbeitung und Speicherverschlüsselung kann Energie- und Leistungsflaschenhälse im Prozessorkern erzeugen. Aspekte der vorliegenden Offenbarung gehen darauf und auf andere Mängel ein, indem sie Systeme (wie Hardware-Beschleuniger) und Verfahren zur Durchführung nicht linearer Datenverarbeitungsoperationen unter Verwendung von Komposit-Galoisfeldern offenbaren.
  • In einem anschaulichen Beispiel können in jeder Runde einer kryptografischen Operation gewisse Bits des Rundenschlüssels mit zumindest einem Teilsatz des Rundenzustands gemischt werden und das Ergebnis kann ein Substitutionsmodul sein, das allgemein als S-Box bezeichnet wird. Der Ausgang der S-Box kann rotiert und anschließend mit dem Rundenzustand gemischt werden, um einen Zwischenausgang zu erzeugen, der wiederholt durch Rundenwiederholungen läuft. Nach der letzten Runde können die vier Zustands-Bytes zum Generieren des endgültigen chiffrierten Ausgangs verwendet werden.
  • In gewissen Implementierungen können der Eingang und Ausgang der S-Box durch Elemente eines Galoisfeldes GF(28) dargestellt werden, das als ein Satz aus 256 8-Bit Ganzzahlen angesehen werden kann, wobei gewisse Operationen an diesen Ganzzahlen definiert sind.
  • Gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung kann die S-Box durch Durchführen einer doppelten affinen Transformation mit einer dazwischenliegenden inversen Operation implementiert werden, wie in der Folge ausführlicher beschrieben ist. Verschiedene Aspekte der obengenannten Verfahren und Systeme sind in der Folge als Beispiel und nicht als Einschränkung ausführlicher beschrieben.
  • In der folgenden Beschreibung sind zahlreiche Einzelheiten angegeben, wie Beispiele spezieller Arten von Prozessoren und Systemkonfigurationen, spezieller Hardware-Strukturen, spezieller architektonischer und mikroarchitektonischer Einzelheiten, spezieller Registerkonfigurationen, spezieller Anweisungsarten, spezieller Systemkomponenten, spezieller Abmessungen/Höhen, spezieller Prozessor-Pipeline-Stufen und Operationen, um ein umfassendes Verständnis der vorliegenden Offenbarung zu ermöglichen. Einem Fachmann auf dem Gebiet ist jedoch klar, dass diese speziellen Einzelheiten in der praktischen Umsetzung der hier offenbarten Verfahren nicht verwendet werden müssen. In anderen Fällen sind allgemein bekannte Komponenten oder Verfahren, wie spezielle und alternative Prozessorarchitekturen, spezielle Logikschaltungen/Code für beschriebene Algorithmen, spezieller Firmware-Code, spezielle Verbindungsoperation, spezielle logische Konfigurationen, spezielle Herstellungstechniken und -materialien, spezielle Compiler-Implementierungen, spezielle Angabe von Algorithmen in einem Code, spezielle Abschalt- und Gating-Techniken/Logik und andere spezielle betriebliche Einzelheiten eines Computersystems nicht im Detail beschrieben, um eine unnötige Verschleierung der vorliegenden Offenbarung zu vermeiden.
  • Obwohl die folgenden Beispiele mit Bezugnahme auf einen Prozessor beschrieben sind, sind andere Implementierungen bei anderen Arten von integrierten Schaltungen und Logikvorrichtungen anwendbar. Ähnliche Techniken und Lehren von hier beschriebenen Beispielen können bei anderen Arten von Schaltungen oder Halbleitervorrichtungen angewendet werden, die von einem höheren Pipeline-Durchsatz und einer verbesserten Leistung profitieren können. Die Lehren der hier beschriebenen Beispiele sind bei jedem Prozessor oder jeder Maschine anwendbar, der bzw. die Datenmanipulationen durchführt. Die vorliegende Offenbarung ist jedoch nicht auf Prozessoren oder Maschinen beschränkt, die 512 Bit, 256 Bit, 128 Bit, 64 Bit, 32 Bit oder 16 Bit Datenoperationen durchführen, und können bei jedem Prozessor und jeder Maschine angewendet werden, bei dem bzw. der eine Manipulation oder ein Management von Daten durchgeführt wird.
  • Die Beispiele, die die vorliegende Offenbarung veranschaulichen, und die beiliegenden Zeichnungen sollten nicht in einem einschränkenden Sinn ausgelegt werden, da sie nur Beispiele von hier beschriebenen Ausführungsformen vorsehen sollen und nicht eine umfassende Liste aller möglichen Implementierungen von hier beschriebenen Ausführungsformen vorsehen sollen. Obwohl die folgenden Beispiele eine Handhabung und Verteilung von Anweisungen im Kontext von Ausführungseinheiten und logischen Schaltungen beschreiben, können andere Implementierungen der hier beschriebenen Systeme und Verfahren mittels Daten oder Anweisungen erreicht werden, die auf einem maschinenlesbaren, greifbaren Medium gespeichert sind, die, wenn sie von einer Maschine durchgeführt werden, die Maschine veranlassen, Funktionen in Übereinstimmung mit zumindest einer hier beschriebenen Ausführungsform auszuführen. In gewissen Implementierungen sind Funktionen, die mit hier beschriebenen Ausführungsformen verknüpft sind, in maschinenausführbaren Anweisungen verkörpert. Die Anweisungen können verwendet werden, um einen Allzweck- oder Spezialzweck-Prozessor, der mit den Anweisungen programmiert ist, zu veranlassen, die hier beschriebenen Verfahren auszuführen. Hier beschriebene Implementierungen können als Computerprogrammprodukt oder Software vorgesehen sein, das bzw. die ein maschinen- oder computerlesbares Medium enthalten kann, auf dem Anweisungen gespeichert sind, die zum Programmieren eines Computers (oder anderer elektronischer Vorrichtungen) verwendet werden können, um eine oder mehrere Operationen gemäß den hier beschriebenen Ausführungsformen auszuführen. Alternativ können Operationen von hier beschriebenen Systemen und Verfahren durch spezielle Hardware-Komponenten, die eine Festfunktionslogik zur Durchführung der Operationen enthalten, oder durch jede Kombination programmierter Computerkomponenten und Festfunktions-Hardware-Komponenten ausgeführt werden.
  • Anweisungen, die zum Programmieren von Logik verwendet werden, um die hier beschriebenen Verfahren durchzuführen, können in einem Speicher im System gespeichert sein, wie einem DRAM, Cache, Flash-Speicher oder einem anderen Speicher. Ferner können die Anweisungen über ein Netzwerk oder durch andere computerlesbare Medien verteilt werden. Daher kann ein maschinenlesbares Medium jeden Mechanismus zum Speichern oder Übertragen von Informationen in einer Form, die durch eine Maschine (z. B. einen Computer) lesbar ist, enthalten, wie Disketten, optische Platten, Compact Disc, Nur-Lese-Speicher (CD-ROMs) und magnetisch-optische Platten, Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAM), löschbarer programmierbarer Nur-Lese-Speicher (EPROM), elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM), magnetische oder optische Karten, Flash-Speicher oder einen greifbaren, maschinenlesbaren Speicher, der in der Übertragung von Informationen über das Internet durch elektrische, optische, akustische oder andere Formen von ausgestrahlten Signalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale usw.) verwendet wird, ohne aber darauf beschränkt zu sein. Daher enthält das computerlesbare Medium jede Art von greifbarem maschinenlesbaren Medium, das zum Speichern oder Übertragen elektronischer Anweisungen oder Informationen in einer Form, die durch eine Maschine (z. B. einen Computer) lesbar ist, geeignet ist.
  • „Prozessor“ soll sich hier auf eine Vorrichtung beziehen, die imstande ist, Anweisungen auszuführen, die arithmetische, logische oder I/O-Operationen codieren. In einem anschaulichen Beispiel kann ein Prozessor dem Von Neumann Architekturmodell folgen und kann eine arithmetische Logikeinheit (ALU), eine Steuereinheit und mehrere Register enthalten. In einem weiteren Aspekt kann ein Prozessor einen oder mehrere Verarbeitungskerne enthalten und somit ein Einzelkernprozessor sein, der typischerweise imstande ist, eine einzelne Anweisungs-Pipeline zu verarbeiten, oder ein Mehrfachkernprozessor, der gleichzeitig mehrere Anweisungs-Pipelines verarbeiten kann. In einem anderen Aspekt kann ein Prozessor als eine einzelne integrierte Schaltung, zwei oder mehr integrierte Schaltungen implementiert sein oder kann eine Komponente eines Multi-Chip-Moduls sein (in dem z. B. einzelne Mikroprozessor-Dies in einer einzelnen integrierten Schaltungspackung enthalten sind und sich somit eine einzige Buchse teilen).
  • Unter Bezugnahme nun auf 1 ist ein Blockdiagramm eines beispielhaften Verarbeitungssystems 100 gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung dargestellt. Wie in 1 dargestellt, kann das beispielhafte Verarbeitungssystem 100 einen Prozessor (wie eine zentrale Verarbeitungseinheit (CPU)) 102 und einen Speicher 104 enthalten, die durch eine Zwischenverbindung 108A miteinander verbunden sind. In gewissen Implementierungen kann der Prozessor 102 einen oder mehrere Verarbeitungskerne 110 enthalten. Der Prozessor 102 kann Aufgaben wie Systemanwendungen und Benutzeranwendungen unter Verwendung des Speichers 104 ausführen, um die Anweisungen der Programme und Daten, die mit den Programmen verknüpft sind, zu speichern.
  • Gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung kann das Verarbeitungssystem 100 ferner einen kryptografischen Hardware-Beschleuniger 112 enthalten, der über eine Zwischenverbindung 108B kommunikativ an den Prozessor 102 gekoppelt ist. Der kryptografische Hardware-Beschleuniger 112 kann ferner über eine Zwischenverbindung 108C kommunikativ an den Speicher 104 gekoppelt sein. Die Struktur und der Betrieb des kryptografischen Hardware-Beschleunigers 112 sind in der Folge ausführlicher beschrieben.
  • 2 zeigt schematisch ein Blockdiagramm eines kryptografischen Hardware-Beschleunigers, der kryptografische Operationen gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung implementiert. In verschiedenen anschaulichen Beispielen entspricht der kryptografische Hardware-Beschleuniger 200 von 2 dem kryptografischen Hardware-Beschleuniger 112 von 1. In gewissen Implementierungen können die hier beschriebenen Systeme und Verfahren zum Implementieren verschiedener kryptografischer Verfahren (wie SMS4 oder AES) verwendet werden.
  • Wie schematisch durch 2 gezeigt, kann der kryptografische Hardware-Beschleuniger 200 ein Datenregister 202 zum Speichern mehrerer Bits des Rundenzustands und ein Schlüsselregister 204 zum Speichern mehrerer Bits des Rundenschlüssels enthalten. In einem anschaulichen Beispiel werden die höherwertigen 32 Bits aus dem Schlüssel mit dem Rundenzustand durch das Mischmodul 206 gemischt und das resultierende 32-Bit Wort wird durch eine S-Box 208 verarbeitet. Der Ausgang der S-Box wird durch ein Rotationsmodul 210 rotiert und anschließend mit dem Rundenzustand durch ein Mischmodul 212 gemischt, um einen neuen Satz aus vier Wörtern zu erzeugen, die wiederholt durch Rundenwiederholungen gehen. Jede Wiederholung verwendet einen neuen Schlüssel, der vom vorangehenden Schlüssel unter Verwendung eines ähnlichen Satzes aus Misch-, S-Box- und Rotationsoperationen abgeleitet wird. Nach der letzten Runde werden die vier Zustands-Bytes zum Generieren des endgültigen chiffrierten Ausgangs 220 verwendet.
  • Die Schlüsselerweiterungsoperation für jede Runde wird durch ein Schlüsselerweiterungsmodul 214 implementiert. Die Schlüsselerweiterung beinhaltet ein Addieren einer 32-Bit Rundenkonstante zum Schlüsselwert. Die Rundenkonstante wird durch ein Konstantenberechnungsmodul 218 unter Verwendung der Werte erzeugt, die im Konstantenregister 218 gespeichert sind. Die Schlüsselerweiterungsoperation für die erste Runde beinhaltet eine Addition einer 128-Bit Systemkonstante (Fk).
  • Der Eingang und Ausgang der S-Box 208 sind Elemente eines Galoisfeldes GF(28), die als ein Satz von 256 8-Bit Ganzzahlen betrachtet werden können, wobei gewisse Operationen an diesen Ganzzahlen definiert sind. In allgemeinen Implementierungen kann die S-Box durch Durchführen von zwei affinen Transformationen mit einer dazwischenliegenden inversen Transformation implementiert werden, die durch die folgende Gleichung dargestellt werden kann:
  • S ( x ) = A 2 ( A 1 x + C 1 ) 1 + C 2,
    Figure DE112016004342T5_0001
  • wobei S(x) die S-Box bezeichnet, A1 und A2 binäre Transformationsmatrizen sind und C1 und C2 binäre Vektoren sind. Somit beschreibt Y= A1x + C1 die erste affine Transformation, Z=Y-1 beschreibt die dazwischenliegende inverse Transformation und A2Z + C2 beschreibt die zweite affine Transformation. 3 zeigt schematisch beispielhafte Transformationsmatrizen 302 und Vektoren 304 und ein entsprechendes Reduktionspolynom 306, das bei der Implementierung der S-Box unter Verwendung der Gleichung (1) eingesetzt werden kann.
  • Da eine direkte Durchführung einer inversen Transformation in GF(28) eine signifikante Rechnungskomplexität bedeuten kann, beinhaltet eine effizientere Technik die Verwendung einer Kompositfeldarithmetik. In einem anschaulichen Beispiel ist der S-Box-Eingang in GF(28) als ein 2-Term-Polynom sh * x + sl dargestellt, wobei Koeffizienten sh und sl durch 4-Bit Elemente des GF(24) Feldes dargestellt sind. Diese Kompositfeldumwandlung kann durch Anwenden einer Mapping-Transformation (M) an den Eingängen erreicht werden. Dann kann die inverse Berechnung im Kompositfeld GF(24)2 durchgeführt werden und das Ergebnis kann wieder auf GF(28) abgebildet werden, indem eine inverse Mapping-Transformation (M-1) angewendet wird. Dann kann die zweite affine Transformation durchgeführt werden, um den S-Box-Ausgang zu generieren.
  • Wie schematisch durch 4 dargestellt, kann das Primfeld GF(28), das mit einem Reduktionspolynom 402 verknüpft ist, unter Verwendung einer Mapping-Matrix 404, die mit einem Paar von Reduktionspolynomen 406A-406B verknüpft ist, zum Kompositfeld GF(24)2 transformiert werden. Wie ferner schematisch durch 4 dargestellt, kann die S-Box 408 durch eine Abfolge einer ersten affinen Transformation 410, gefolgt von einer Mapping-Transformation 412 vom Primfeld zum Kompositfeld des Primfeldes, gefolgt von einer inversen Transformation 414, gefolgt von einer Invers-Mapping-Transformation 416 vom Kompositfeld zurück zum Primfeld und schließlich gefolgt von einer zweiten affinen Transformation 418 implementiert werden:
  • S ( x ) = A 2 M 1 ( MA 1 x + MC 1 ) 1 + C 2 ,
    Figure DE112016004342T5_0002
  • wobei die inverse Transformation im Kompositfeld GF(24)2 durchgeführt wird.
  • Gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung können die Mapping- (M) und Invers-Mapping- (M-1) Matrizen von Gleichung (2) zu den affinen Matrizen (A1 und A2) vereint werden, wodurch der Aufwand eliminiert wird, die Mapping- und Revers-Mapping-Operationen auszuführen. 5 zeigt schematisch beispielhafte Transformationsmatrizen 502A-502B und Vektor 514, die zum Implementieren einer S-Box gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung eingesetzt werden können.
  • 6 zeigt schematisch eine beispielhafte Implementierung einer S-Box-Implementierung unter Verwendung der Mapping- (M) und Invers-Mapping-(M-1) Matrizen, die zu den jeweiligen affinen Matrizen (A1 und A2) vereint sind, gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung. Wie schematisch durch 6 dargestellt, kann der Ausgang von S-Box 208 durch Durchführung einer ersten abgebildeten affinen Transformation 602, gefolgt von einer inversen Transformation 604 des Ergebnisses der abgebildeten affinen Transformation 602 und schließlich gefolgt von einer zweiten abgebildeten affinen Transformation 606 des Ergebnisses der reversen Transformation 604 bestimmt werden.
  • Die Implementierung des S-Box Hardware-Beschleunigers gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung kann eine Identifizierung von Grundfeld- und Kompositfeld-Polynomen beinhalten, die die optimale Hardware-Beschleunigerfläche erzeugen.
  • 7 zeigt schematisch eine Auswertung möglicher Kombinationen von Polynomen in einem Kompositfeld des Primfeldes GF(28) gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung. Das Polynomauswahlverfahren kann alle möglichen Kombinationen von Polynomen auswerten und systematisch die Polynome selektieren, die für die Kompositfeldarithmetik wählbar sind. In Blöcken 710-740 kann das Verfahren Polynome auswählen, die Eigenschaften einer Irreduzibilität haben, mit Primitivwurzeln im Primfeld. Dies eliminiert 13 der Primfeldpolynome, sodass drei Polynomanwärter verbleiben. Eine ähnliche Prüfung in Blöcken 740-770 an dem Kompositfeldpolynom selektiert 120 von 276 Polynomen, wodurch 360 Polynomkombinationen erhalten werden, die zur Verwendung gültig sind.
  • In jeder Kombination kann ein Kompositfeldelement identifiziert werden, das auch eine Wurzel des ursprünglichen GF(28) Polynoms ist. Diese Wurzel kann in Block 760 zum Generieren der Mapping-Matrix M und anschließend der abgebildeten affinen Matrizen MA1 und MA2 verwendet werden. Jedes Paar von Reduktionspolynomen generiert acht Wurzeln, wodurch 2880 gültige Mappings erhalten werden, wobei jedes Mapping einer einzigartigen S-Box entspricht. Eine Mapping-Matrix, die die kleinste Hardware-Beschleunigerfläche erzeugt, kann dann ausgewählt werden.
  • 8 veranschaulicht ein Flussdiagramm eines beispielhaften Verfahrens 800 zur Durchführung einer kryptografischen Operation (wie Implementieren einer S-Box) gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung. Das Verfahren 800 kann durch ein Verarbeitungssystem durchgeführt werden, das Hardware (z. B. Schaltkreis, dedizierte Logik und/oder programmierbare Logik), Software (z. B. Anweisungen, die auf einem Computersystem ausführbar sind, um eine Hardware-Simulation durchzuführen) oder eine Kombination davon umfassen kann. In einem anschaulichen Beispiel kann das Verfahren 800 durch ein Verarbeitungssystem 100 von 1 durchgeführt werden. Das Verfahren 800 und/oder jede(s) seiner Funktionen, Programme, Unterprogramme oder Operationen kann durch einen oder mehrere Prozessoren eines Computersystems durchgeführt werden, die das Verfahren ausführen. Zwei oder mehr Funktionen, Programme, Unterprogramme oder Operationen des Verfahrens 800 können parallel oder in einer Reihenfolge durchgeführt werden, die sich von der oben beschriebenen Reihenfolge unterscheiden kann.
  • Unter Bezugnahme auf 8 kann das Verfahren 800 bei Block 810 beginnen, wo das Verarbeitungssystem, das das Verfahren implementiert, eine erste abgebildete affine Transformation einer Eingangs-Bit-Sequenz durchführen kann, um eine erste Zwischen-Bit-Sequenz zu erzeugen. Die erste abgebildete affine Transformation kann ein Multiplizieren der Eingangs-Bit-Sequenz mit einer Matrix umfassen, die durch ein Produkt einer Mapping-Matrix (M) und einer ersten Transformationsmatrix (A1) dargestellt ist. Die erste Transformationsmatrix kann mit einem Paar von Reduktionspolynomen eines finiten Feldes, wie GF(28), verknüpft sein, wie hier oben ausführlicher beschrieben ist.
  • In Block 820 kann das Verarbeitungssystem, das das Verfahren implementiert, eine inverse Transformation der ersten Zwischen-Bit-Sequenz durchführen, um eine zweite Zwischen-Bit-Sequenz zu erzeugen, wie hier oben ausführlicher beschrieben ist.
  • In Block 830 kann das Verarbeitungssystem, das das Verfahren implementiert, eine zweite abgebildete affine Transformation der zweiten Zwischen-Bit-Sequenz durchführen, um eine Ausgangs-Bit-Sequenz zu erzeugen. Die Mapping-Matrix kann ein Mapping vom gewählten finiten Primfeld, wie GF(28) auf ein Kompositfeld des gewählten finiten Primfeldes darstellen, wie hier oben ausführlicher beschrieben ist.
  • 9 veranschaulicht ein Flussdiagramm eines beispielhaften Verfahrens 900 zur Identifizierung einer S-Box-Implementierung mit optimalem Flächendesign gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung. Das Verfahren 900 kann durch ein Verarbeitungssystem durchgeführt werden, das Hardware (z. B. Schaltkreis, dedizierte Logik und/oder programmierbare Logik), Software (z. B. Anweisungen, die auf einem Computersystem ausführbar sind, um eine Hardware-Simulation durchzuführen) oder eine Kombination davon umfassen kann. In einem anschaulichen Beispiel kann das Verfahren 900 durch ein Verarbeitungssystem 100 von 1 durchgeführt werden. Das Verfahren 900 und/oder jede(s) seiner Funktionen, Programme, Unterprogramme oder Operationen kann durch einen oder mehrere Prozessoren eines Computersystems durchgeführt werden, die das Verfahren ausführen. Zwei oder mehr Funktionen, Programme, Unterprogramme oder Operationen des Verfahrens 900 können parallel oder in einer Reihenfolge durchgeführt werden, die sich von der oben beschriebenen Reihenfolge unterscheiden kann.
  • Unter Bezugnahme auf 9 kann das Verfahren 900 bei Block 910 beginnen, wo das Verarbeitungssystem, das das Verfahren implementiert, eine erste Vielzahl von irreduzierbaren Polynomen identifizieren kann, die mit einem finiten Primfeld verknüpft sind, sodass jedes identifizierte Polynom Primitivwurzeln im finiten Primfeld hat, wie hier oben ausführlicher beschrieben ist.
  • In Block 920 kann das Verarbeitungssystem, das das Verfahren implementiert, eine zweite Vielzahl von irreduzierbaren Polynomen identifizieren, die mit einem Kompositfeld des finiten Primfeldes verknüpft sind, sodass jedes identifizierte Polynom Primitivwurzeln im Kompositfeld hat, wie hier oben ausführlicher beschrieben ist.
  • In Block 930 kann das Verarbeitungssystem, das das Verfahren implementiert, unter Verwendung mehrere Kombinationen eines ersten Polynoms der ersten Vielzahl von Polynomen und eines zweiten Polynoms der zweiten Vielzahl von Polynomen mehrere Kompositfeldelemente identifizieren, sodass das identifizierte Kompositfeldelement eine Wurzel eines Reduktionspolynoms präsentiert, das mit dem finiten Primfeld verknüpft ist, wie hier oben ausführlicher beschrieben ist.
  • In Block 940 kann das Verarbeitungssystem, das das Verfahren implementiert, unter Verwendung der identifizierten Vielzahl von Kompositfeldelementen mehrere Mapping-Matrizen und verknüpfte abgebildete affine Matrizen generieren, wie hier oben ausführlicher beschrieben ist.
  • In Block 950 kann das Verarbeitungssystem, das das Verfahren implementiert, eine S-Box-Implementierung unter Verwendung einer Mapping-Matrix der generierten Vielzahl von Mapping Matrizen identifizieren, sodass die identifizierte S-Box-Implementierung das minimale Flächendesign aus mehreren S-Box-Implementierungen hat, wie hier oben ausführlicher beschrieben ist.
  • Obwohl hier verschiedene Systeme und Verfahren unter Bezugnahme auf spezielle integrierte Schaltungen, wie Prozessoren, beschrieben sind, können andere Implementierungen bei anderen Arten von integrierten Schaltungen und logischen Vorrichtungen anwendbar sein. Hier beschriebene Techniken und Lehren von Systemen und Verfahren können bei anderen Arten von Schaltungen oder Halbleitervorrichtungen angewendet werden, die von einer besseren Energieeffizienz und Energieerhaltung profitieren können. Zum Beispiel sind die offenbarten Implementierungen nicht auf eine besondere Art von Computersystemen beschränkt und können auch in anderen Vorrichtungen, wie in von Hand gehaltenen Vorrichtungen, Systemen-on-Chip (SoCs) und eingebetteten Anwendungen verwendet werden. Einige Beispiele für von Hand gehaltene Vorrichtungen enthalten zellulare Telefone, Internet-Protokoll-Vorrichtungen, Digitalkameras, persönliche digitale Assistenten (PDAs) und von Hand gehaltene PCs. Eingebettete Anwendungen können eine Mikrosteuerung, einen Digitalsignalprozessor (DSP), Netzwerk-Computer (NetPC), Set-Top-Boxes, Netzwerk-Hubs, Weitverkehrsnetzwerk- (WAN) Schaltzentralen oder jedes andere System enthalten, das die in der Folge gelehrten Funktionen und Operationen ausführen kann. Ferner sind die hier beschriebenen Systeme und Verfahren nicht auf physische Rechenvorrichtungen beschränkt, sondern können sich auch auf Software-implementierte Verfahren beziehen. Eine Energieeinsparung, die durch hier beschriebene Systeme und Verfahren erzielt wird, kann von einem Mechanismus auf Basis eines Betriebssystems (OS), wie dem Advanced Configuration and Platform Interface (ACPI) Standard, unabhängig und zu diesem komplementär sein.
  • Die hier zuvor beschriebenen Verfahren und Systeme können durch ein Computersystem unterschiedlicher Architekturen, Designs und Konfigurationen für Laptops, Desktops, von Hand gehaltene PCs, persönliche digitale Assistenten, Engineering Workstations, Server, Netzwerkvorrichtungen, Netzwerk-Hubs, Schalter, eingebettete Prozessoren, Digitalsignalprozessoren (DSPs), Grafikvorrichtungen, Videospielvorrichtungen, Set-Top-Boxes, Mikrosteuerungen, Mobiltelefone, tragbare Media-Player, von Hand gehaltene Vorrichtungen implementiert werden und verschiedene andere elektronischen Vorrichtungen sind auch zum Implementieren der hier beschriebenen Verfahren geeignet. Im Allgemeinen ist eine große Palette von Systemen oder elektronischen Vorrichtungen, die imstande sind, einen Prozessor und/oder eine andere Ausführungslogik wie hier offenbart zu integrieren, im Allgemeinen zum Implementieren der hier beschriebenen Systeme und Verfahren geeignet.
  • 10 veranschaulicht ein hochwertiges Komponentendiagramm eines Beispiels eines Computersystems gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung. Ein Computersystem 100 kann einen Prozessor 110 enthalten, um Ausführungseinheiten zu verwenden, die eine Logik enthalten, um Algorithmen zur Verarbeitung von Daten gemäß der hier beschriebenen Ausführungsform auszuführen. System 100 ist für Verarbeitungssysteme repräsentativ, die auf den PENTIUM III™, PENTIUM 4™, Xeon™, Itanium, XScale™ und/oder StrongARM™ Mikroprozessoren beruhen, die von der Firma Intel, Santa Clara, Kalifornien, erhältlich sind, obwohl andere Systeme (einschließlich PCs mit anderen Mikroprozessoren, Engineering Workstations, Set-Top-Boxes und dergleichen) ebenso verwendet werden können. In gewissen Implementierungen führt ein Sample-System 100 eine Version des WINDOWS™ Betriebssystems aus, das von der Firma Microsoft, Redmond, Washington, erhältlich ist, obwohl auch andere Betriebssysteme (zum Beispiel UNIX und Linux), eingebettete Software und/oder grafische Benutzerschnittstellen, verwendet werden können. Somit sind die hier beschriebenen Ausführungsformen nicht auf eine spezielle Kombination aus Hardware-Schaltkreis und Software beschränkt.
  • In einem anschaulichen Beispiel enthält der Prozessor 110 eine oder mehrere Ausführungseinheiten 108 zum Implementieren eines Algorithmus, der zumindest eine Anweisung ausführen soll. Eine Ausführungsform kann im Kontext eines Einzelprozessor-Desktop- oder Serversystems beschrieben werden, es können aber andere Ausführungsformen in einem Mehrfachprozessorsystem enthalten sein. System 100 ist ein Beispiel einer ‚Hub‘-Systemarchitektur. Das Computersystem 100 enthält einen Prozessor 110 zum Verarbeiten von Datensignalen. Der Prozessor 110, als ein anschauliches Beispiel, enthält einen Complex Instruction Set Computer (CISC) Mikroprozessor, einen Reduced Instruction Set Computing (RISC) Mikroprozessor, einen Very Long Instruction Word (VLIW) Mikroprozessor, einen Prozessor, der eine Kombination von Anweisungssätzen implementiert, oder jede andere Prozessorvorrichtung, wie zum Beispiel einen Digitalsignalprozessor. Der Prozessor 110 ist an einen Prozessorbus 110 gekoppelt, der Datensignale zwischen dem Prozessor 110 und anderen Komponenten im System 100 überträgt. Die Elemente des Systems 100 (z. B. Grafikbeschleuniger 112, Speichersteuerungs-Hub 116, Speicher 120, I/O-Steuerungs-Hub 124, drahtloser Sender/Empfänger 126, Flash BIOS 128, Netzwerksteuerung 134, Audiosteuerung 136, serieller Erweiterungsanschluss 138, I/O-Steuerung 140 usw.) führen ihre herkömmlichen Funktionen aus, die jenen, die mit dem Gebiet vertraut sind, allgemein bekannt sind.
  • In gewissen Implementierungen enthält der Prozessor 110 einen Level 1 (L1) internen Cache. Abhängig von der Architektur kann der Prozessor 110 einen einzelnen internen Cache oder mehrere Ebenen von internen Caches haben. Andere Ausführungsformen enthalten eine Kombination von sowohl internen wie auch externen Caches, abhängig von der besonderen Implementierung und den Anforderungen. Eine Registerdatei 106 dient zum Speichern verschiedener Arten von Daten in verschiedenen Registern einschließlich Ganzzahlregister, Gleitkommaregister, Vektorregister, eingelagerter Register, Schattenregister, Prüfpunktregister, Statusregister und Anweisungspointerregister.
  • Die Ausführungseinheit 108, einschließlich einer Logik zum Durchführen von Ganzzahl- und Gleitkommaoperationen, liegt auch im Prozessor 110. Der Prozessor 110 enthält in gewissen Implementierungen einen Mikrocode- (ucode) ROM zum Speichern eines Mikrocodes, der, wenn er ausgeführt wird, Algorithmen für gewisse Makroanweisungen durchführt oder komplexe Szenarien bewältigt. Hier ist der Mikrocode möglicherweise aktualisierbar, um logische Fehler/Behebungen für den Prozessor 110 handzuhaben. Für eine Ausführungsform enthält die Ausführungseinheit 108 eine Logik zum Handhaben eines verpackten Anweisungssatzes 109. Durch Einfügen des verpackten Anweisungssatzes 109 in den Anweisungssatz eines Allzweck-Prozessors 110, gemeinsam mit einem zugehörigen Schaltkreis zur Ausführung der Anweisungen, können die Operationen, die von vielen Multimedia-Anwendungen verwendet werden, unter Verwendung verpackter Daten in einem Allzweck-Prozessor 110 durchgeführt werden. Daher werden viele Multimedia-Anwendungen beschleunigt und effizienter unter Verwendung der vollen Breite eines Datenbusses eines Prozessors zur Durchführung von Operationen an verpackten Daten ausgeführt. Dies eliminiert möglicherweise die Notwendigkeit, kleinere Einheiten von Daten, jeweils ein Datenelement, über den Datenbus des Prozessors zu übertragen, um eine oder mehrere Operationen durchzuführen. Es können auch andere Ausführungsformen einer Ausführungseinheit 108 in Mikrosteuerungen, eingebetteten Prozessoren, Grafikvorrichtungen, DSPs und anderen Arten von logischen Schaltungen verwendet werden. In gewissen Implementierungen kann der Prozessor 110 ferner eine Cache-Steuerlogik 124 enthalten, deren Funktionsweise in der Folge hier ausführlicher beschrieben ist.
  • Das System 100 enthält einen Speicher 120. Der Speicher 120 enthält eine dynamische Direktzugriffsspeicher- (DRAM) Vorrichtung, eine statische Direktzugriffsspeicher- (SRAM) Vorrichtung, eine Flash-Speichervorrichtung oder eine andere Speichervorrichtung. Der Speicher 120 speichert Anweisungen 129 und/oder Daten 123, die durch Datensignale dargestellt sind, die durch den Prozessor 110 auszuführen sind. In gewissen Implementierungen können die Anweisungen 129 Anweisungen enthalten, die die Cache-Steuerlogik 124 zum Managen eines gemeinsamen Cache verwenden, wie hier in der Folge ausführlicher beschrieben ist.
  • Ein Systemlogik-Chip 116 ist an den Prozessorbus 110 und Speicher 120 gekoppelt. Der Systemlogik-Chip 116 ist in der dargestellten Ausführungsform ein Speichersteuerungs-Hub (MCH). Der Prozessor 110 kann mit dem MCH 116 über einen Prozessorbus 110 kommunizieren. Der MCH 116 sieht einen Speicherpfad hoher Bandbreite 118 zum Speicher 120 zur Anweisungs- und Datenspeicherung und zur Speicherung von Grafikbefehlen, Daten und Texturen vor. Der MCH 116 soll Datensignale zwischen dem Prozessor 110, Speicher 120 und anderen Komponenten im System 100 lenken und die Datensignale zwischen Prozessorbus 110, Speicher 120 und System-I/O 122 überleiten. In einigen Ausführungsformen kann der Systemlogik-Chip 116 einen Grafikanschluss zur Kopplung an eine Grafiksteuerung 112 vorsehen. Der MCH 116 ist an den Speicher 120 durch eine Speicherschnittstelle 118 gekoppelt Die Grafikkarte 112 ist an den MCH 116 durch eine Accelerated Graphics Port (AGP) Zwischenverbindung 114 gekoppelt.
  • Das System 100 verwendet einen firmeneigenen Hub-Schnittstellenbus 122, um den MCH 116 an den I/O-Steuerungs-Hub (ICH) 130 zu koppeln. Der ICH 130 sieht direkte Verbindungen zu einigen I/O Vorrichtungen über einen lokalen I/O-Bus vor. Der lokale I/O-Bus ist ein Hochgeschwindigkeits-I/O-Bus zur Verbindung von Peripherien mit dem Speicher 120, Chipset und Prozessor 110. Einige Beispiele sind Audiosteuerung, Firmware-Hub (Flash BIOS) 128, drahtloser Sender/Empfänger 126, Datenspeicher 124, Legacy I/O-Steuerung, enthaltend Benutzereingabe- und Tastaturschnittstellen, ein serieller Erweiterungsanschluss, wie Universal Serial Bus (USB), und eine Netzwerksteuerung 134. Die Datenspeichervorrichtung 124 kann ein Festplattenlaufwerk, ein Diskettenlaufwerk, eine CD-ROM Vorrichtung, eine Flash-Speichervorrichtung oder eine andere Massenspeichervorrichtung enthalten.
  • Für eine andere Ausführungsform eines Systems kann eine Anweisung gemäß einer Ausführungsform mit einem System-on-Chip verwendet werden. Eine Ausführungsform eines Systems-on-Chip umfasst einen Prozessor und einen Speicher. Der Speicher für solche ein System ist ein Flash-Speicher. Der Flash-Speicher kann auf demselben Die gelegen sein wie der Prozessor und andere Systemkomponenten. Zusätzlich können auch andere Logikblöcke wie eine Speichersteuerung oder Grafiksteuerung auf einem System-on-Chip gelegen sein.
  • 11 ist ein Blockdiagramm der Mikroarchitektur für einen Prozessor 200, die Logikschaltungen zur Durchführung von Anweisungen gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung enthält. In einigen Ausführungsformen kann eine Anweisung gemäß einer Ausführungsform implementiert werden, um Datenelemente mit Größen von Byte, Wort, Doppelwort, Quadword usw., wie auch Datentypen, wie Einzel- und Doppelpräzisions-Ganzzahl- und Gleitkommadatentypen, zu bearbeiten. In gewissen Implementierungen ist das sortierte Frontend 201 der Teil des Prozessors 200, der auszuführende Anweisungen abruft und sie zur späteren Verwendung in der Prozessor-Pipeline aufbereitet. Das Frontend 201 kann mehrere Einheiten enthalten. In gewissen Implementierungen ruft der Anweisungs-Prefetcher 226 Anweisungen vom Speicher ab und speist sie in einen Anweisungsdecodierer 228, der sie seinerseits decodiert oder interpretiert. Zum Beispiel decodiert der Decodierer in gewissen Implementierungen eine empfangene Anweisung in einer oder mehreren Operationen, die als „Mikro-Anweisungen“ oder „Mikro-Operationen“ (auch als uops bezeichnet) bezeichnet werden, die die Maschine ausführen kann. In anderen Ausführungsformen zerlegt der Decodierer die Anweisung in einen Opcode und entsprechende Daten und Steuerfelder, die durch die Mikroarchitektur zur Durchführung von Operationen gemäß einer Ausführungsform verwendet werden. In gewissen Implementierungen nimmt der Trace-Cache 230 decodierte uops und fügt sie in programmgeordneten Sequenzen oder Abfolgen in der uop-Warteschlange 234 zur Ausführung zusammen. Wenn der Trace-Cache 230 auf eine komplexe Anweisung trifft, stellt der Mikrocode ROM 232 die uops bereit, die zur Vollendung der Operation erforderlich sind.
  • Einige Anweisungen werden in eine einzige Mikro-op umgewandelt, während andere mehrere Mikro-ops zur Vollendung der vollständigen Operation benötigen. In gewissen Implementierungen, falls mehr als vier Mikro-ops zur Vollendung einer Anweisung erforderlich sind, greift der Decodierer 228 auf den Mikrocode-ROM 232 zu, um die Anweisung auszuführen. Für eine Ausführungsform kann eine Anweisung in eine geringe Anzahl von Mikro-ops zur Verarbeitung beim Anweisungsdecodierer 228 decodiert werden. In einer anderen Ausführungsform kann eine Anweisung im Mikrocode-ROM 232 gespeichert werden, sollte eine Anzahl von Mikro-ops zur Fertigstellung der Operation erforderlich sein. Der Trace-Cache 230 bezieht sich auf eine Eintragspunktprogrammierbare Logikanordnung (PLA) zur Ermittlung eines korrekten Mikro-Anweisungspointers zum Lesen der Mikrocodesequenzen, um eine oder mehrere Anweisungen gemäß einer Ausführungsform aus dem Mikrocode-ROM 232 zu vollenden. Sobald der Mikrocode-ROM 232 die Sequenzierung von Mikro-ops für eine Anweisung beendet hat, beginnt das Frontend 201 der Maschine wieder mit dem Abrufen von Mikro-ops aus dem Trace-Cache 230.
  • Die umsortierte Ausführungsmaschine 203 ist, wo die Anweisungen zur Ausführung aufbereitet werden. Die umsortierte Ausführungslogik hat eine Reihe von Pufferspeichern zum Glätten und Neuordnen des Flusses von Anweisungen zur Leistungsoptimierung, während sie die Pipeline hinablaufen und zur Ausführung geplant werden. Die Zuordnerlogik ordnet die Maschinepuffer und Ressourcen zu, die jede uop zur Ausführung benötigt. Die Register-Aliasing-Logik bildet logische Register auf Einträge in einer Registerdatei ab. Der Zuordner ordnet auch einen Eintrag für jede uop in einer der zwei uop-Warteschlangen, einen für Speicheroperationen und einen für Nicht-Speicheroperationen, vor den Anweisungsplanern zu: Speicherplaner, schneller Planer 202, langsamer/allgemeiner Gleitkommaplaner 204 und einfacher Gleitkommaplaner 206. Die uop-Planer 202, 204, 206 bestimmen basierend auf der Bereitschaft ihrer abhängigen Eingangsregister-Operandenquellen und der Verfügbarkeit der Ausführungsressourcen, die die upos zur Vollendung ihrer Operation benötigen, wann eine uop zur Ausführung bereit ist. Der schnelle Planer 202 einer Ausführungsform kann für jede Hälfte des Haupttaktzyklus planen, während die anderen Planer einmal pro Hauptprozessortaktzyklus planen können. Die Planer vermitteln die Sendeanschlüsse, um uops zur Ausführung zu planen.
  • Physische Registerdateien 208, 210 sitzen zwischen den Planern 202, 204, 206 und den Ausführungseinheiten 212, 214, 216, 218, 220, 222, 224 im Ausführungsblock 211. Es gibt eine separate Registerdatei 208, 210 für Ganzzahl- bzw. Gleitkommaoperationen. Jede Registerdatei 208, 210 einer Ausführungsform enthält auch ein Umleitungsnetzwerk, das soeben vollendete Ergebnisse, die noch nicht in die Registerdatei geschrieben wurden, umgehen oder zu neuen abhängigen uops weiterleiten kann. Die Ganzzahlregisterdatei 208 und die Gleitkommaregisterdatei 210 sind auch imstande, miteinander Daten zu kommunizieren. Für eine Ausführungsform ist die Ganzzahlregisterdatei 208 in zwei separate Registerdateien geteilt, eine Registerdatei für die niederwertigen 32 Bits von Daten und eine zweite Registerdatei für die hochwertigen 32 Bits von Daten. Die Gleitkommaregisterdatei 210 einer Ausführungsform hat 128 Bit breite Einträge, da Gleitkommaanweisungen typischerweise Operanden mit einer Breite von 64 bis 128 Bits haben.
  • Der Ausführungsblock 211 enthält die Ausführungseinheiten 212, 214, 216, 218, 220, 222, 224, wo die Anweisungen tatsächlich ausgeführt werden. Dieser Abschnitt enthält die Registerdateien 208, 210, die die Ganzzahl- und Gleitkommadatenoperandenwerte speichern, die die Mikro-Anweisungen zur Ausführung benötigen. Der Prozessor 200 einer Ausführungsform umfasst eine Reihe von Ausführungseinheiten: Adressengenerierungseinheit (AGU) 212, AGU 214, schnelle ALU 216, schnelle ALU 218, langsame ALU 220, Gleitkomma ALU 222, Gleitkommabewegungseinheit 224. Für eine Ausführungsform führen die Gleitkommaausführungsblöcke 222, 224 Gleitkomma-, MMX-, SIMD- und SSE- oder andere Operationen aus. Die Gleitkomma-ALU 222 einer Ausführungsform enthält einen 64 Bit mal 64 Bit Gleitkommadividierer zur Ausführung von Divisions-, Quadratwurzel und restlicher Mikro-ops. Für hier beschriebene Systeme und Verfahren können Anweisungen, die einen Gleitkommawert enthalten, mit der Gleitkomma-Hardware gehandhabt werden. In gewissen Implementierungen gehen die ALU-Operationen zu Hochgeschwindigkeits-ALU-Ausführungseinheiten 216, 218. Die schnellen ALUs 216, 218 einer Ausführungsform können schnelle Operationen mit einer effektiven Latenz eines halben Taktzyklus ausführen. Für eine Ausführungsform gehen höchst komplexe Ganzzahloperationen zur langsamen ALU 220, da die langsame ALU 220 Ganzzahlausführungs-Hardware für Operationen mit langer Latenz enthält, wie Muliplikator, Verschiebungen, Flag-Logik und Abzweigungsverarbeitung. Speicherlast-/Speicheroperationen werden durch die AGUs 212, 214 ausgeführt. Für eine Ausführungsform sind die Ganzzahl-ALUs 216, 218, 220 im Kontext einer Durchführung von Ganzzahloperationen an 64 Bit Datenoperanden beschrieben. In alternativen Ausführungsformen können die ALUs 216, 218, 220 implementiert werden, um eine Reihe von Datenbits zu unterstützen, einschließlich 16, 32, 128, 256 usw. Ebenso können die Gleitkommaeinheiten 222, 224 implementiert werden, um einen Bereich von Operanden mit Bits unterschiedlicher Breiten zu unterstützen. Für eine Ausführungsform können die Gleitkommaeinheiten 222, 224 128 Bits breite verpackte Datenoperanden in Verbindung mit SIMD und Multimedia-Anweisungen bearbeiten.
  • In gewissen Implementierungen senden die uops-Planer 202, 204, 206 abhängige Operationen. bevor die Stammlast mit der Ausführung fertig ist. Da uops spekulativ im Prozessor 200 geplant und ausgeführt werden, enthält der Prozessor 200 auch Logik zur Handhabung von Speicherfehlschlägen. Falls eine Datenlast im Daten-Cache fehlschlägt, können abhängige Operationen in der Pipeline im Gange sein, die den Planer mit temporär falschen Daten verlassen haben können. Ein Wiedergabemechanismus verfolgt die Anweisungen, die falsche Daten verwenden, und führt sie erneut aus. Die abhängigen Operationen sollten wiedergegeben werden und die unabhängigen sollten vollendet werden können. Die Planer und der Wiedergabemechanismus einer Ausführungsform eines Prozessors sind auch gestaltet, Anweisungssequenzen für Textstring-Vergleichsoperationen zu erfassen.
  • Der Begriff „Register“ kann sich auf die On-board-Prozessorspeicherstellen beziehen, die als Teil von Anweisungen zur Identifizierung von Operanden verwendet werden. Mit anderen Worten, Register können jene sein, die von außerhalb des Prozessors (aus der Perspektive eines Programmierers) verwendbar sind. Die Register einer Ausführungsform sollten jedoch in der Bedeutung nicht auf eine besondere Art von Schaltung beschränkt sein. Vielmehr ist ein Register einer Ausführungsform imstande, Daten zu speichern und vorzusehen und die hier beschriebenen Funktionen durchzuführen. Die hier beschriebenen Register können durch einen Schaltkreis innerhalb eines Prozessors unter Verwendung einer Reihe unterschiedlicher Techniken implementiert werden, wie dedizierte physische Register, dynamisch zugeordnete physische Register unter Verwendung von Register-Aliasing, Kombinationen von dedizierten und dynamisch zugeordneten physischen Registern usw. In gewissen Implementierungen speichern Ganzzahlregister zweiunddreißig Bit Ganzzahldaten. Eine Registerdatei einer Ausführungsform enthält auch acht Multimedia-SIMD-Register für verpackte Daten. Für die folgenden Besprechungen sind die Register als Datenregister zu verstehen, die verpackte Daten halten, wie 64 Bits breite MMX-Register (in einigen Fällen auch als ‚mm‘-Register bezeichnet) in Mikroprozessoren, die mit der MMX™ Technologie von der Firma Intel, Santa Clara, Kalifornien, freigegeben sind. Diese MMX-Register, die sowohl in Ganzzahlwie auch Gleitkommaform erhältlich sind, können mit verpackten Datenelementen arbeiten, die SIMD- und SSE-Anweisungen begleiten. Ebenso können 128 Bits breite XMM-Register, die sich auf eine SSE2-, SSE3-, SSE4-Technologie oder darüber hinaus (allgemein als „SSEx“ bezeichnet) beziehen, auch zum Halten solcher verpackten Datenoperanden verwendet werden. In gewissen Implementierungen müssen beim Speichern verpackter Daten und Ganzzahldaten die Register nicht zwischen den zwei Datenarten unterscheiden.
  • In gewissen Implementierungen sind Ganzzahl und Gleitkomma entweder in derselben Registerdatei oder in verschiedenen Registerdateien enthalten. Ferner können in gewissen Implementierungen Gleitkomma- und Ganzzahldaten in verschiedenen Registern oder im selben Register gespeichert sein.
  • 12A-12B zeigt schematisch Elemente einer Prozessormikroarchitektur gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung. In 12A enthält eine Prozessor-Pipeline 400 eine Abrufstufe 402, eine Längendecodierstufe 404, eine Decodierstufe 406, eine Zuordnungsstufe 408, eine Umbenennungsstufe 410, eine Planungsstufe (auch als Sende- oder Ausgabestufe bekannt) 412, eine Registerlese-/Speicherlesestufe 414, eine Ausführungsstufe 416, eine Zurückschreib-/Speicherschreibstufe 418, eine Ausnahmehandhabungsstufe 422 und eine Commit-Stufe 424.
  • In 12B geben Pfeile eine Kopplung zwischen zwei oder mehr Einheiten an und die Richtung des Pfeils gibt eine Richtung des Datenflusses zwischen diesen Einheiten an. 12B zeigt einen Prozessorkern 111, der eine Frontendeinheit 430 enthält, die an eine Ausführungsmaschineneinheit 450 gekoppelt ist, und beide sind an eine Speichereinheit 470 gekoppelt.
  • Der Kern 111 kann ein Reduced Instruction Set Computing (RISC) Kern, ein Complex Instruction Set Computing (CISC) Kern, ein Very Long Instruction Word (VLIW) Kern oder eine hybride oder andere Kernart sein. Als weitere Option kann der Kern 111 ein Spezialzweckkern sein, wie zum Beispiel ein Netzwerk- oder Kommunikationskern, eine Kompressionsengine, ein Grafikkern oder dergleichen.
  • Die Frontendeinheit 430 enthält eine Abzweigungsvorhersageeinheit 432, die an eine Anweisungs-Cacheeinheit 434 gekoppelt ist, die an einen Anweisungs-Übersetzungspuffer (TLB) 436 gekoppelt ist, der an eine Anweisungsabrufungseinheit 438 gekoppelt ist, die an eine Decodiereinheit 440 gekoppelt ist. Die Decodiereinheit oder der Decodierer kann Anweisungen decodieren und als Ausgang eine oder mehrere Mikro-Operationen, Mikrocode-Eintragspunkte, Mikroanweisungen, andere Anweisungen oder andere Steuersignale generieren, die aus den ursprünglichen Anweisungen decodiert werden oder die andersartig wiedergegeben oder aus diesen abgeleitet werden. Der Decodierer kann unter Verwendung zahlreicher verschiedener Mechanismen implementiert werden. Beispiele für geeignete Mechanismen enthalten Verweistabellen, Hardware-Implementierungen, programmierbare Logikanordnungen (PLAs), Mikrocode-Nur-Lese Speicher (ROMs) usw., ohne aber darauf beschränkt zu sein. Die Anweisungs-Cacheeinheit 434 ist ferner an eine Level 2 (L2) Cacheeinheit 476 in der Speichereinheit 470 gekoppelt. Die Decodiereinheit 440 ist an eine Umbenennungs-/Zuordnereinheit 452 in der Ausführungsmaschineeinheit 450 gekoppelt.
  • Die Ausführungsmaschineeinheit 450 enthält die Umbenennungs-/Zuordnereinheit 452, die an eine Retirement-Einheit 454 und einen Satz aus einer oder mehreren Planereinheit(en) 456 gekoppelt ist. Die Planereinheit(en) 456 stellt (stellen) eine beliebige Anzahl verschiedener Planer dar, einschließlich Reservierungsstationen, eines zentralen Anweisungsfensters usw. Die Planereinheit(en) 456 ist (sind) an die physische(n) Registerdateieinheit(en) 458 gekoppelt. Jede der physischen Registerdateieinheit(en) 458 stellt eine oder mehrere physische Registerdateien dar, von welchen verschiedene eine oder mehrere verschiedene Datenarten speichern, wie skalare Ganzzahl, skalares Gleitkomma, verpackte Ganzzahl, verpacktes Gleitkomma, Vektorganzzahl, Vektorgleitkomma usw., Status (z. B. ein Anweisungspointer, der die Adresse der nächsten auszuführenden Anweisung ist), usw. Die physische(n) Registerdateieinheit(en) 458 ist (sind) durch die Retirement-Einheit 454 überlappt, um unterschiedliche Weisen zu zeigen, in welchen ein Register-Aliasing und eine umsortierte Ausführung implementiert werden können (z. B. unter Verwendung von Aufzeichnungspuffer(n) und eine Retirement-Registerdatei(en), unter Verwendung von Zukunftsdatei(en), Verlaufspuffer(n) und Retirement-Registerdatei(en); unter Verwendung von Register-Maps und eines Pools von Registern; usw.). Im Allgemeinen sind die architektonischen Register von außerhalb des Prozessors oder aus einer Perspektive eines Programmierers sichtbar. Die Register sind nicht auf eine besondere Art von Schaltung beschränkt. Zahlreiche verschiedene Arten von Register sind geeignet, solange sie imstande sind, Daten wie hier beschrieben zu speichern und vorzusehen. Beispiele für geeignete Register enthalten, dedizierte physische Register, dynamisch zugeordnete physische Register unter Verwendung von Register-Aliasing, Kombinationen aus dedizierten und dynamisch zugeordneten physischen Registern usw. die Retirement-Einheit 454 und die physische(n) Registerdateieinheit(en) 458 sind an den (die) Ausführungscluster 460 gekoppelt. Der (die) Ausführungscluster 460 enthält (enthalten) einen Satz aus einer oder mehreren Ausführungseinheiten 162 und einen Satz aus einer oder mehreren Speicherzugriffseinheiten 464. Die Ausführungseinheiten 462 können unterschiedliche Operationen (z. B. Verschiebungen, Addition, Subtraktion, Multiplikation) und auf unterschiedlichen Arten von Daten (z. B. skalares Gleitkomma, verpackte Ganzzahl, verpacktes Gleitkomma, Vektorganzzahl, Vektorgleitkomma) durchführen. Während einige Ausführungsformen eine Anzahl von Ausführungseinheiten enthalten können, die speziellen Funktionen oder Sätzen von Funktionen gewidmet sind, können andere Ausführungsformen eine Ausführungseinheit oder mehrere Ausführungseinheiten enthalten, die alle sämtliche Funktionen ausführen. Die Planereinheit(en) 456, physische(n) Registerdateieinheit(en) 458 und Ausführungscluster 460 sind in einer möglichen Mehrzahl dargestellt, da gewisse Ausführungsformen separate Pipelines für gewisse Arten von Daten/Operationen erzeugen (z. B. eine skalare Ganzzahl-Pipeline, eine skalare Gleitkomma/verpacktes Ganzzahl/verpacktes Gleitkomma/Vektorganzzahl/Vektorgleitkomma-Pipeline und/oder eine Speicherzugriffs-Pipeline, die jeweils ihre eigene Planereinheit, physische(n) Registerdateieinheit(en) und/oder Ausführungscluster haben - und im Fall einer separaten Speicherzugriffs-Pipeline sind gewisse Ausführungsformen implementiert, in welchen der Ausführungscluster dieser Pipeline die Speicherzugriffeinheit(en) 464 hat). Es sollte auch klar sein, dass, wenn separate Pipelines verwendet werden, eine oder mehrere dieser Pipelines eine umsortierte Ausgabe/Ausführung sein kann und der Rest sortiert sein kann.
  • Der Satz von Speicherzugriffeinheiten 464 ist an die Speichereinheit 470 gekoppelt, die eine Daten-TLB-Einheit 472 enthält, die an eine Daten-Cacheeinheit 474 gekoppelt ist, die an eine Level 2 (L2) Cacheeinheit 476 gekoppelt ist. In einer beispielhaften Ausführungsform können die Speicherzugriffeinheiten 464 eine Ladeeinheit, eine Speicheradresseneinheit und eine Speicherdateneinheit enthalten, von welchen jede an die Daten-TLB-Einheit 472 in der Speichereinheit 470 gekoppelt ist. Die L2 Cacheeinheit 476 ist an einen oder mehrere andere Cache-Level und schließlich an einen Hauptspeicher gekoppelt.
  • Beispielsweise kann die beispielhafte Register-Aliasing, umsortierte Ausgabe/Ausführungskernarchitektur die Pipeline 400 wie folgt implementieren: der Anweisungsabrufer 438 führt die Abruf- und Längendecodierstufen 402 und 404 aus; die Decodiereinheit 440 führt die Decodierstufe 406 aus; die Umbenennungs-/Zuordnereinheit 452 führt die Zuordnungsstufe 408 und Umbenennungsstufe 410 aus; die Planereinheit(en) 456 führt (führen) die Planungsstufe 412 aus; die physische(n) Registerdateieinheit(en) 458 und die Speichereinheit 470 führen die Registerlese-/Speicherlesestufe 414 aus; der Ausführungscluster 460 führt die Ausführungsstufe 416 aus; die Speichereinheit 470 und die physischen Registerdateieinheit(en) 458 führen die Zurückschreib-/Speicherschreibstufe 418 aus; unterschiedliche Einheiten können an der Ausnahmehandhabungsstufe 422 beteiligt sein; und die Retirement-Einheit 454 und die physischen Registerdateieinheit(en) 458 führen Commit-Stufe 424 aus.
  • Der Kern 111 kann einen oder mehrere Anweisungssätze (z. B. den x86 Anweisungssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden); den MIPS Anweisungssatz von MIPS Technologies, Sunnyvale, CA; den ARM Anweisungssatz (mit zusätzlichen Erweiterungen wie NEON) von ARM Holdings, Sunnyvale, CA) unterstützen.
  • In gewissen Implementierungen kann der Kern ein Multithreading (Ausführung von zwei oder mehreren parallelen Sätzen von Operationen oder Threads) unterstützen und kann dies auf zahlreiche Weisen machen, enthaltend ein in Zeitscheiben geteiltes Multithreading, simultanes Multithreading (wo ein einziger physischer Kern einen logischen Kern für jeden der Threads vorsieht, wobei dieser physische Kern ein simultanes Multithreading ausführt) oder eine Kombination davon (z. B. in Zeitscheiben geteiltes Abrufen und Decodieren und anschließend ein simultanes Multithreading, wie in der Intel® Hyperthreading Technologie).
  • Während ein Register-Aliasing im Kontext einer umsortierten Ausführung beschrieben ist, sollte klar sein, dass Register-Aliasing in einer sortierten Architektur verwendet werden kann. Während die dargestellte Ausführungsform des Prozessors auch separate Anweisungs- und Daten-Cache-Einheiten 434/474 und eine gemeinsame L2 CacheEinheit 476 enthält, können alternative Ausführungsformen einen einzelnen internen Cache sowohl für Anweisungen wie auch Daten haben, wie zum Beispiel einen Level 1 (L1) internen Cache oder mehrere interne Cache-Levels. In einigen Ausführungsformen kann das System eine Kombination eines internen Cache und eines externen Cache enthalten, der extern zum Kern und/oder Prozessor ist. Alternativ kann der gesamte Cache extern zum Kern und/oder Prozessor sein.
  • In gewissen Implementierungen kann der Prozessorkern 111 als umsortierter (OOO) Kern, anstatt in der Programmreihenfolge, gestaltet sein, um die Leistung durch Ausführen von Anweisungen zu verbessern, sobald ihre Operanden verfügbar werden. Der Leistungsvorteil kann jedoch durch einen deutlichen Anstieg im Energieverbrauch ausgeglichen werden. Wenn mehrere Ausführungs-Threads für das Betriebssystem zur Planung zur Verfügung stehen, kann die Verwendung mehrerer sortierter Kerne anstelle großer OOO-Kerne das Energieverbrauchsprofil des Prozessors verbessern, ohne die Gesamtleistung zu beeinträchtigen. Somit kann zur Verbesserung der Leistungs- und Energieverbrauchskalierbarkeit eines Prozessors dieser so gestaltet sein, dass eine variable Anzahl von Kernen unterstützt wird, abhängig von den Leistungsanforderungen und der Anzahl von Threads, die dem Betriebssystem zur Planung zur Verfügung stehen
  • 13 veranschaulicht ein Blockdiagramm eines beispielhaften Computersystems gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung. Wie in 13 dargestellt, ist das Multiprozessorsystem 700 ein Punkt-zu-Punkt-Zwischenverbindungssystem und enthält einen ersten Prozessor 770 und einen zweiten Prozessor 780, die über eine Punkt-zu-Punkt-Zwischenverbindung 750 gekoppelt sind. Jeder der Prozessoren 770 und 780 kann eine gewisse Version eines Verarbeitungssystems 100 sein, das imstande ist, einen Speicherschutz zum Implementieren einer vertrauenswürdigen Ausführungsumgebung durchzuführen, wie hier oben ausführlicher beschrieben ist. Während nur zwei Prozessoren 770, 780 dargestellt sind, ist klar, dass der Umfang der vorliegenden Offenbarung nicht darauf beschränkt ist. In anderen Ausführungsformen können ein oder mehrere zusätzliche Prozessoren im beispielhaften Computersystem vorhanden sein.
  • Die Prozessoren 770 und 780 sind mit integrierten Speichersteuerungseinheiten 772 bzw. 782 dargestellt. Der Prozessor 770 enthält auch als Teil seiner Bussteuerungseinheiten Punkt-zu-Punkt- (P-P) Schnittstellen 776 und 778; ebenso enthält der zweite Prozessor 780 P-P-Schnittstellen 786 und 788. Die Prozessoren 770, 780 können Informationen über eine Punkt-zu-Punkt- (P-P) Schnittstelle 750 unter Verwendung von P-P Schnittstellenschaltungen 778, 788 austauschen. Wie in 13 dargestellt, koppeln IMCs 772 und 782 die Prozessoren an entsprechende Speicher, nämlich einen Speicher 732 und einen Speicher 734, die Abschnitte eines Hauptspeichers sein können, der lokal an den entsprechenden Prozessoren angebracht ist.
  • Die Prozessoren 770, 780 können Informationen mit einem Chipset 790 über individuelle P-P-Schnittstellen 752, 754 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 776, 794, 786, 798 austauschen. Der Chipset 790 kann auch Informationen mit einer Hochleistungsgrafikschaltung 738 über eine Hochleistungsgrafikschnittstelle 739 austauschen.
  • Ein gemeinsamer Cache (nicht dargestellt) kann in einem Prozessor oder außerhalb beider Prozessoren enthalten sein, aber dennoch mit den Prozessoren über eine P-P-Zwischenverbindung verbunden sein, sodass lokale Cache-Informationen des einen Prozessors oder der beiden Prozessoren im gemeinsamen Cache gespeichert werden können, falls ein Prozessor in einen Niederenergiemodus gebracht wird.
  • Der Chipset 790 kann an einen ersten Bus 716 über eine Schnittstelle 796 gekoppelt sein. In gewissen Implementierungen kann der erste Bus 716 ein Peripheral Component Interconnect (PCI) Bus oder ein Bus wie ein PCI Express Bus oder ein anderer I/O Zwischenverbindungs-Bus dritter Generation sein, obwohl der Umfang der vorliegenden Offenbarung nicht darauf beschränkt ist.
  • Wie in 13 dargestellt, können unterschiedliche I/O Vorrichtungen 714 an den ersten Bus 716 gekoppelt sein, gemeinsam mit einer Busbrücke 718, die den ersten Bus 716 an einen zweiten Bus 720 koppelt. In gewissen Implementierungen kann der zweite Bus 720 ein Bus geringer Pinanzahl (LPC) sein. Unterschiedliche Vorrichtungen können in gewissen Implementierungen an den zweiten Bus 720 gekoppelt sein, enthaltend zum Beispiel eine Tastatur und/oder Maus 722, Kommunikationsvorrichtungen 727 und eine Speichereinheit 728 wie ein Plattenlaufwerk oder eine andere Massenspeichervorrichtung, die Anweisungen/Code und Daten 730 enthalten kann. Ferner kann ein Audio-I/O 724 an den zweiten Bus 720 gekoppelt sein.
  • 14 veranschaulicht ein Blockdiagramm eines beispielhaften System-on-Chip (SoC) gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung. Der Anwendungsprozessor 910 kann durch eine Version des Verarbeitungssystems 100 vorgesehen sein, das imstande ist, einen Speicherschutz zum Implementieren einer vertrauenswürdigen Ausführungsumgebung durchzuführen, wie hier oben ausführlicher beschrieben ist. Wie schematisch durch 14 dargestellt, kann (können) eine Zwischenverbindungeinheit(en) 902 gekoppelt sein an: einen Anwendungsprozessor 910, der einen Satz aus einem oder mehreren Kernen 902A-N und eine gemeinsame Cacheeinheit(en) 906 enthält; ein Systemagenteinheit 910; eine Bussteuerungseinheit(en) 916; eine integrierte Speichersteuerungseinheit(en) 914; einen Satz aus einem oder mehreren Medienprozessoren 920, die eine integrierte Grafiklogik 908 enthalten können, einen Bildprozessor 924 zum Vorsehen einer Standbild- und/oder Videokamerafunktionalität, einen Audioprozessor 926 zum Vorsehen einer Hardware-Audiobeschleunigung und einen Videoprozessor 928 zum Vorsehen einer Videocodier-/- decodierbeschleunigung; eine statische Direktzugriffsspeicher- (SRAM) Einheit 930; eine Direktspeicherzugriffs- (DMA) Einheit 932; und eine Anzeigeeinheit 940 zur Kopplung an eine oder mehrere externe Anzeigen.
  • 15 veranschaulicht ein Blockdiagramm eines beispielhaften Computersystems gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung. Der Prozessor 1610 kann durch eine Version eines Verarbeitungssystems 100 vorgesehen sein, das imstande ist, einen Speicherschutz zum Implementieren einer vertrauenswürdigen Ausführungsumgebung durchzuführen, wie hier oben ausführlicher beschrieben ist.
  • Das System 1600, das schematisch durch 15 dargestellt ist, kann jede Kombination von Komponenten enthalten, die als ICs, Teile davon, einzelne elektronische Vorrichtungen oder andere Module, Logik, Hardware, Software, Firmware oder eine Kombination davon implementiert sind, die in einem Computersystem adaptiert sind, oder als Komponenten, die auf andere Weise in einem Gehäuse des Computersystems eingegliedert sind. Das Blockdiagramm von 15 soll eine Ansicht auf hoher Ebene vieler Komponenten des Computersystems zeigen. Es ist jedoch klar, dass einige der dargestellten Komponenten unterlassen werden können, zusätzliche Komponenten vorhanden sein können und eine andere Anordnung der dargestellten Komponenten in anderen Implementierungen vorliegen kann.
  • Der Prozessor 1610 kann durch einen Mikroprozessor, Mehrfachkernprozessor, Multithreaded-Prozessor, einen Ultraniederspannungsprozessor, einen eingebetteten Prozessor oder ein anderes bekanntes Verarbeitungselement vorgesehen sein. In der dargestellten Implementierung dient der Prozessor 1610 als Hauptverarbeitungseinheit und zentraler Hub zur Kommunikation mit vielen unterschiedlichen Komponenten des Systems 1600. Beispielsweise kann der Prozessor 1600 als System-on-Chip (SoC) implementiert sein. Als spezielles anschauliches Beispiel enthält der Prozessor 1610 einen Intel® Prozessor auf Architecture Core™- Basis, wie einen i3, i5, i7 oder einen anderen solchen Prozessor, der von Intel Corporation, Santa Clara, CA, erhältlich ist.
  • Der Prozessor 1610 kann mit einem Systemspeicher 1615 kommunizieren. In unterschiedlichen Implementierungen können die einzelnen Speichervorrichtungen von verschiedenen Packungsarten sein, wie Einzel-Die-Packung (SDP), Doppel- Die-Packung (DDP) oder Quad-Die-Packung (1P). Diese Vorrichtungen können in einigen Implementierungen direkt an eine Hauptplatine gelötet sein, um eine Lösung mit niedrigerem Profil zu bieten, während in anderen Implementierungen die Vorrichtungen als ein oder mehrere Speichermodule konfiguriert sein können, die ihrerseits an die Hauptplatine durch einen bestimmten Verbinder gekoppelt sind. Andere Speicherimplementierungen sind möglich, wie andere Arten von Speichermodulen, z. B. duale Inline-Speichermodule (DIMMs) verschiedener Arten, einschließlich MikroDIMMs, MiniDIMMs, ohne aber darauf beschränkt zu sein. In einem anschaulichen Beispiel kann der Speicher zwischen 2GB und 16GB groß sein und kann als eine DDR3LM Packung oder ein LPDDR2 oder LPDDR3 Speicher konfiguriert sein, der über eine Kugelgitteranordnung (BGA) an eine Hauptplatine gelötet ist.
  • Zum Vorsehen einer dauerhaften Speicherung von Informationen wie Daten, Anwendungen, eines oder mehrerer Betriebssysteme und so weiter, kann auch ein Massenspeicher 1620 an den Prozessor 1610 gekoppelt sein. In gewissen Implementierungen kann der Massenspeicher 1620, um ein dünneres und leichteres Systemdesign zu ermöglichen, wie auch ein Ansprechvermögen des Systems zu verbessern, durch ein SSD implementiert sein. In anderen Implementierungen kann der Massenspeicher vorwiegend durch ein Festplattenlaufwerk (HDD) mit einer geringeren Menge an SSD-Speicherung implementiert sein, um als SSD Cache zu dienen, um ein nicht flüchtiges Speichern eines Kontextzustands und anderer derartiger Informationen während Abschaltereignissen zu ermöglichen, sodass ein schnelles Hochfahren bei Wiedereinschalten der Systemaktivitäten eintreten kann.
  • Wie auch in 15 dargestellt, kann eine Flash-Vorrichtung 1622 an den Prozessor 1610, z. B. über eine serielle periphere Schnittstelle (SPI), gekoppelt sein. Die Flash-Vorrichtung 1622 kann eine nicht flüchtige Speicherung der System-Software vorsehen, einschließlich einer grundlegenden Eingangs-/Ausgangs-Software (BIOS) wie auch einer anderen Firmware des Systems.
  • In unterschiedlichen Implementierungen kann der Massenspeicher des Systems nur durch ein SSD oder als, optische, Platte oder ein anderes Laufwerk mit einem SSD Cache vorgesehen sein. In einigen Implementierungen kann der Massenspeicher durch ein SSD oder als HDD gemeinsam mit einem Wiederherstellungs- (RST) Cache-Modul vorgesehen sein. Der SSD Cache kann als Single Level Cache (SLC) oder Multi-Level Cache (MLC) Option konfiguriert sein, um ein angemessenes Maß an Ansprechvermögen vorzusehen.
  • Unterschiedliche Eingangs-/Ausgangs- (10) Vorrichtungen können im System 1600 vorhanden sein, enthaltend z. B. eine Anzeige 1624 durch ein Hochdefinitions-LCD- oder LED-Feld vorgesehen sein kann, das mit einem Deckelteil des Gehäuses konfiguriert ist. Dieses Anzeigefeld kann auch eine Berührungsbildschirm 1625 vorsehen, der extern über dem Anzeigefeld adaptiert ist, sodass durch eine Interaktion des Benutzers mit diesem Berührungsbildschirm Benutzereingaben für das System vorgesehen werden können, um gewünschte Operationen zu ermöglichen, z. B. in Bezug auf die Anzeige von Informationen, das Zugreifen auf Informationen und so weiter. In gewissen Implementierungen kann die Anzeige 1624 über eine Anzeigenzwischenverbindung, die als Hochleistungsgrafikzwischenverbindung implementiert sein kann, an den Prozessor 1610 gekoppelt sein. Der Berührungsbildschirm 1625 kann durch eine andere Zwischenverbindung, die in einer Ausführungsform eine I2C-Zwischenverbindung sein kann, an den Prozessor 1610 gekoppelt sein. Zusätzlich zum Berührungsbildschirm 1625 kann eine Benutzereingabe mittels Berührung auch über ein Touch Pad 1630 erfolgen, das im Gehäuse konfiguriert sein kann und auch an dieselbe 12C Zwischenverbindung wie der Berührungsbildschirm 1625 gekoppelt sein kann.
  • Unterschiedliche Sensoren können im System vorhanden sein und können an den Prozessor 1610 auf verschiedene Weisen gekoppelt sein. Gewisse Trägheits- und Umgebungssensoren können an den Prozessor 1610 durch einen Sensor-Hub 1640, z. B. über eine I2C Zwischenverbindung gekoppelt sein. Diese Sensoren können einen Beschleunigungsmesser 1641, einen Umgebungslichtsensor (ALS) 1642, einen Kompass 1643 und ein Gyroskop 1644 enthalten. Andere Umgebungssensoren können einen oder mehrere thermische Sensoren 1646 enthalten, die in einigen Ausführungsformen über einen Systemmanagementbus- (SMBus) Bus an den Prozessor 1610 gekoppelt sind. In gewissen Implementierungen können ein oder mehrere Infrarot- oder andere wärmeerfassenden Elemente oder jedes andere Element zum Erfassen des Vorhandenseins oder der Bewegung eines Benutzers vorhanden sein.
  • Unterschiedliche periphere Vorrichtungen können an den Prozessor 1610 über eine Zwischenverbindung mit geringer Pinanzahl (LPC) gekoppelt sein. In gewissen Implementierungen können unterschiedliche Komponenten durch eine eingebettete Steuerung 1635 gekoppelt sein. Solche Komponenten können eine Tastatur 1636 (z. B. gekoppelt über eine PS2 Schnittstelle), ein Gebläse 1637 und einen thermischen Sensor 1639 enthalten. In einigen Ausführungsformen kann auch ein Touch Pad 1630 über eine PS2 Schnittstelle an EC 1635 gekoppelt sein. Zusätzlich kann ein Sicherheitsprozessor wie ein vertrauenswürdiges Plattformmodul (TPM) 1638 gemäß der Trusted Computing Group (TCG) TPM Spezifikation Version 1.2, vom 2. Oktober 2003, über diese LPC Zwischenverbindung an den Prozessor 1610 gekoppelt sein.
  • In gewissen Implementierungen können periphere Anschlüsse einen Hochdefinitionsmedienschnittstellen- (HDMI) Verbinder (der verschiedene Formfaktoren wie volle Größe, Mini oder Mikro aufweisen kann); eine oder mehrere USB-Anschlüsse, wie externe Anschlüsse voller Größe gemäß der Universal Serial Bus Revision 3.0 Spezifikation (November 2008), mit zumindest einem, der zum Laden von USB-Vorrichtungen (wie Smartphones) mit Leistung versorgt wird, wenn das System im angeschlossenen Bereitschaftszustand ist und an eine Wandgleichstromnetz angeschlossen ist, enthalten. Zusätzlich können ein oder mehrere ThunderboltTM Anschlüsse vorgesehen sein. Andere Anschlüsse können einen extern zugänglichen Kartenleser, wie einen SD-XC Kartenleser voller Größe und/oder einen SIM-Kartenleser für WWAN (z. B. einen 8 Pin Kartenleser) enthalten. Für Audio kann eine 3,5mm Klinkenstecker mit Stereoton und Mikrofonkapazität (z. B. Kombinationsfunktionalität) vorhanden sein, mit einer Unterstützung zur Klinkensteckererfassung (z. B. Unterstützung nur eines Kopfhörers unter Verwendung eines Mikrophons im Deckel oder eines Kopfhörers mit Mikrofon im Kabel). In einigen Ausführungsformen kann dieser Klinkenstecker zwischen Stereokopfhörer und Stereomikrofoneingang umschaltbar sein. Ebenso kann ein Stromversorgungsanschluss zur Kopplung an eine Netzadapterhaltung vorgesehen sein.
  • System 1600 kann mit externen Vorrichtungen auf zahlreiche Weisen, einschließlich drahtlose, kommunizieren. In der in 16 dargestellten Ausführungsform sind unterschiedliche drahtlose Module vorhanden, die jeweils einem Funk entsprechen können, der für ein bestimmtes drahtloses Kommunikationsprotokoll konfiguriert ist. Eine Art für eine drahtlose Kommunikation mit kurzer Reichweite wie einem Nahfeld kann über eine Nahfeldkommunikations- (NFC) Einheit 1645 erfolgen, die in gewissen Implementierungen mit dem Prozessor 1610 über einen SMBus kommunizieren kann.
  • Zusätzliche drahtlose Einheiten können andere drahtlose Maschinen kurzer Reichweite enthalten, einschließlich einer WLAN-Einheit 1650 und einer Bluetooth-Einheit 1652. Unter Verwendung der WLAN-Einheit 1650 kann eine Wi-Fi™ Kommunikation gemäß einem bestimmten Institute of Electrical and Electronics Engineers (IEEE) 802.11 Standard erreicht werden, während über eine Bluetooth-Einheit 1652 eine Kommunikation kurzer Reichweite über ein Bluetooth-Protokoll erfolgen kann. Diese Einheiten können mit dem Prozessor 1610 z. B. über eine USB-Verbindung oder eine universelle asynchrone Empfänger-Sender- (UART) Verbindung kommunizieren. Oder diese Einheiten können an den Prozessor 1610 über eine Zwischenverbindung gemäß einem Peripheral Component Interconnect Express™ (PCIe™) Protokoll gekoppelt sein, z. B. gemäß der PCI ExpressTM Specification Base Spezifikation Version 3.0 (veröffentlicht am 17. Januar 2007) oder gemäß einem anderen derartigen Protokoll wie einem seriellen Dateneingangs-/-ausgangs-(SDIO) Standard. Natürlich kann die tatsächliche physische Verbindung zwischen diesen peripheren Vorrichtungen, die auf einer oder mehreren Erweiterungskarten konfiguriert sein können, durch die NGFF-Verbinder erfolgen, die an eine Hauptplatine adaptiert sind.
  • Zusätzlich kann eine drahtlose Weitverkehrskommunikation, z. B. gemäß einem zellularen oder anderen drahtlosen Weitverkehrsprotokoll, über eine WWAN-Einheit 1656 erfolgen, die ihrerseits an ein Teilnehmeridentitätsmodul (SIM) 1657 gekoppelt ist. Zusätzlich, um einen Empfang und eine Verwendung von Positionsinformationen zu ermöglichen, kann auch ein GPS-Modul 1655 vorhanden sein.
  • Zum Vorsehen von Audioeingängen und -ausgängen kann ein Audioprozessor durch einen Digitalsignalprozessor (DSP) 1660 implementiert sein, der an einen Prozessor 1610 über eine Hochdefinitionsaudio- (HDA) Verbindung gekoppelt sein kann. Ebenso kann der DSP 1660 mit einem integrierten Codierer/Decodierer (CODEC) und Verstärker 1662 kommunizieren, der seinerseits an Ausgangslautsprecher 1663 gekoppelt sein kann, die im Gehäuse implementiert sein können. Ebenso können ein Verstärker und CODEC 1662 gekoppelt sein, um Audioeingänge von einem Mikrofon 1665 zu empfangen.
  • 16 veranschaulicht ein Blockdiagramm eines beispielhaften System-on-Chip (SoC) gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung. Als ein spezielles anschauliches Beispiel kann das SOC 1700 im Benutzergerät (UE) enthalten sein. In gewissen Implementierungen bezieht sich UE auf jede Vorrichtung, die von einem Endbenutzer zum Kommunizieren verwendet wird, wie ein von Hand gehaltenes Telefon, Smartphone, Tablet, ultradünnes Notebook, Notebook mit Breitbandadapter oder jede andere ähnliche Kommunikationsvorrichtung. Häufig ist ein UE mit einer Basisstation oder einem Knoten verbunden, der möglicherweise in seiner Art einer Mobilstation (MS) in einem GSM-Netzwerk entspricht.
  • Wie schematisch durch 16 dargestellt, kann das SOC 1700 zwei Kerne enthalten. Die Kerne 1706 und 1707 können an eine Cache-Steuerung 1708 gekoppelt sein, die mit der Busschnittstelleeinheit 1709 und dem L2 Cache 1710 verknüpft ist, um mit anderen Teilen des Systems 1700 zu kommunizieren. Eine Zwischenverbindung 1710 kann eine On-Chip-Zwischenverbindung, wie eine IOSF-, AMBA- oder andere Zwischenverbindung enthalten.
  • Die Schnittstelle 1710 kann Kommunikationskanäle zu den anderen Komponenten vorsehen, wie ein Teilnehmeridentitätsmodul (SIM) 1730 als Schnittstelle zu einer SI-Karte, einen Boot-ROM 1735, der einen Boot-Code zur Ausführung durch die Kerne 1706 und 1707 hält, um das SOC 1700 zu initialisieren und zu booten, eine SDRAM-Steuerung 1740 als Schnittstelle zu einem externen Speicher (z. B. DRAM 1760), eine Flash-Steuerung 1745 als Schnittstelle mit einem nicht flüchtigen Speicher (z. B. Flash 1765), eine periphere Steuerung 1550 (z. B. serielle periphere Schnittstelle) als Schnittstelle zu peripheren Geräten, Video-Codecs 1720 und Videoschnittstelle 1725 zum Anzeigen und Empfangen einer Eingabe (z. B. Eingabe durch Berührung), eine GPU 1715 zur Durchführung grafikbezogener Berechnungen usw. Zusätzlich kann das System periphere Geräte zur Kommunikation umfassen, wie ein Bluetooth-Modul 1770, 3G Modem 1775, GPS 1785 und WiFi 1785.
  • Es können auch andere Computersystemdesigns und Konfigurationen geeignet sein, um die hier beschriebenen Systeme und Verfahren zu implementieren. Die folgenden Beispiele zeigen unterschiedliche Implementierungen gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung.
  • Beispiel 1 ist ein Verarbeitungssystem, umfassend: einen Speicher; ein kryptografisches Beschleunigermodul, das betriebsbereit an den Speicher gekoppelt ist, wobei das kryptografische Beschleunigermodul eine Byte-Ersatzoperation durch Durchführung: einer ersten abgebildeten affinen Transformation einer Eingangs-Bit-Sequenz, um eine erste Zwischen-Bit-Sequenz zu erzeugen, einer inversen Transformation der ersten Zwischen-Bit-Sequenz, um eine zweite Zwischen-Bit-Sequenz zu erzeugen, und einer zweiten abgebildeten affinen Transformation der zweiten Zwischen-Bit-Sequenz, um eine Ausgangs-Bit-Sequenz zu erzeugen, implementiert.
  • Beispiel 2 ist das Verarbeitungssystem von Beispiel 1, in dem die erste abgebildete affine Transformation durch eine Matrix dargestellt ist, die durch Multiplizieren einer Mapping-Matrix und einer ersten Transformationsmatrix erzeugt wird.
  • Beispiel 3 ist ein Verarbeitungssystem von Beispiel 2, in dem die erste Transformationsmatrix mit einem Paar von Reduktionspolynomen eines finiten Felds verknüpft ist.
  • Beispiel 4 ist ein Verarbeitungssystem von Beispiel 2, in dem zumindest eine der Eingangs-Bit-Sequenz und der Ausgangs-Bit-Sequenz durch ein Element eines finiten Primfeldes vorgesehen ist, und in dem die Mapping-Matrix ein Mapping vom finiten Primfeld auf ein Kompositfeld des finiten Primfeldes darstellt.
  • Beispiel 5 ist ein Verarbeitungssystem von Beispiel 4, in dem das finite Primfeld durch ein GF(28) Galoisfeld dargestellt ist.
  • Beispiel 6 ist ein Verarbeitungssystem von Beispiel 4, in dem das Kompositfeld durch ein GF(24)2 Galoisfeld dargestellt ist.
  • Beispiel 7 ist ein Verarbeitungssystem von Beispiel 1, in dem die zweite abgebildete affine Transformation durch eine Matrix dargestellt ist, die durch Multiplizieren einer Mapping-Matrix und einer zweiten Transformationsmatrix erzeugt wird.
  • Beispiel 8 ist ein Verarbeitungssystem von Beispiel 1, in dem das Verarbeitungssystem verwendet wird, um eines der Folgenden durchzuführen: eine SMS4-Verschlüsselungsoperation oder eine SMS4-Entschlüsselungsoperation.
  • Beispiel 9 ist ein Verarbeitungssystem von Beispiel 1, in dem das Verarbeitungssystem als ein System-on-Chip (SoC) implementiert ist.
  • Beispiel 10. Ein Verfahren, umfassend: Durchführen, durch eine Verarbeitungsvorrichtung, einer ersten abgebildeten affinen Transformation einer Eingangs-Bit-Sequenz, um eine erste Zwischen-Bit-Sequenz zu erzeugen; Durchführen einer inversen Transformation der ersten Zwischen-Bit-Sequenz, um eine zweite Zwischen-Bit-Sequenz zu erzeugen; und Durchführen einer zweiten abgebildeten affinen Transformation der zweiten Zwischen-Bit-Sequenz, um eine Ausgangs-Bit-Sequenz zu erzeugen.
  • Beispiel 11 ist ein Verfahren von Beispiel 10, in dem die erste abgebildete affine Transformation durch eine Matrix dargestellt ist, die durch Multiplizieren einer Mapping-Matrix und einer ersten Transformationsmatrix erzeugt wird.
  • Beispiel 12 ist ein Verfahren von Beispiel 11, in dem die erste Transformationsmatrix mit einem Paar von Reduktionspolynomen eines finiten Felds verknüpft ist.
  • Beispiel 13 ist ein Verfahren von Beispiel 11, in dem zumindest eine der Eingangs-Bit-Sequenz und der Ausgangs-Bit-Sequenz durch ein Element eines finiten Primfeldes vorgesehen ist, und in dem die Mapping-Matrix ein Mapping vom finiten Primfeld auf ein Kompositfeld des finiten Primfeldes darstellt.
  • Beispiel 14 ist ein Verfahren von Beispiel 13, in dem das finite Primfeld durch ein GF(28) Galoisfeld dargestellt ist.
  • Beispiel 15 ist ein Verfahren von Beispiel 13, in dem das Kompositfeld durch ein GF(24)2 Galoisfeld dargestellt ist.
  • Beispiel 16 ist ein Verfahren von Beispiel 10, ferner umfassend: Durchführen einer kryptografischen Operation unter Verwendung der Ausgangs-Bit-Sequenz.
  • Beispiel 17. Ein Apparat, umfassend: einen Speicher; und ein Verarbeitungssystem, das an den Speicher gekoppelt ist, wobei das Verarbeitungssystem das Verfahren nach einem der Beispiele 10-16 ausführt.
  • Beispiel 18. Ein computerlesbares nicht transitorisches Speichermedium, umfassend ausführbare Anweisungen, die, wenn sie durch eine Verarbeitungsvorrichtung ausgeführt werden, die Verarbeitungsvorrichtung zur Durchführung von Operationen veranlassen, umfassend: Durchführen einer ersten abgebildeten affinen Transformation einer Eingangs-Bit-Sequenz, um eine erste Zwischen-Bit-Sequenz zu erzeugen; Durchführen einer inversen Transformation der ersten Zwischen-Bit-Sequenz, um eine zweite Zwischen-Bit-Sequenz zu erzeugen; und Durchführen einer zweiten abgebildeten affinen Transformation der zweiten Zwischen-Bit-Sequenz, um eine Ausgangs-Bit-Sequenz zu erzeugen.
  • Beispiel 19 ist ein computerlesbares, nicht transitorisches Speichermedium von Beispiel 18, in dem die erste abgebildete affine Transformation durch eine Matrix dargestellt ist, die durch Multiplizieren einer Mapping-Matrix und einer ersten Transformationsmatrix erzeugt wird.
  • Beispiel 20 ist ein computerlesbares, nicht transitorisches Speichermedium von Beispiel 19, in dem die erste Transformationsmatrix mit einem Paar von Reduktionspolynomen eines finiten Felds verknüpft ist.
  • Beispiel 21 ist ein computerlesbares, nicht transitorisches Speichermedium von Beispiel 18, in dem zumindest eine der Eingangs-Bit-Sequenz und der Ausgangs-Bit-Sequenz durch ein Element eines finiten Primfeldes vorgesehen ist, und in dem die Mapping-Matrix ein Mapping vom finiten Primfeld auf ein Kompositfeld des finiten Primfeldes darstellt.
  • Beispiel 22 ist ein computerlesbares, nicht transitorisches Speichermedium von Beispiel 21, in dem das finite Primfeld durch ein GF(28) Galoisfeld dargestellt ist.
  • Beispiel 23 ist ein computerlesbares, nicht transitorisches Speichermedium von Beispiel 21, in dem das Kompositfeld durch ein GF(24)2 Galoisfeld dargestellt ist.
  • Beispiel 24 ist ein computerlesbares, nicht transitorisches Speichermedium von Beispiel 18, in dem die zweite abgebildete affine Transformation durch eine Matrix dargestellt ist, die durch Multiplizieren einer Mapping-Matrix und einer zweiten Transformationsmatrix erzeugt wird.
  • Beispiel 25. Ein Verfahren, umfassend: Identifizieren einer ersten Vielzahl von irreduzierbaren Polynomen, die mit einem finiten Primfeld verknüpft sind, wobei jedes identifizierte Polynom Primitivwurzeln im finiten Primfeld hat; Identifizieren einer zweiten Vielzahl von irreduzierbaren Polynomen, die mit einem Kompositfeld des finiten Primfeldes verknüpft sind, wobei jedes identifizierte Polynom Primitivwurzeln im Kompositfeld hat; Identifizieren, unter Verwendung mehrerer Kombinationen eines ersten Polynoms der ersten Vielzahl von Polynomen und eines zweiten Polynoms der zweiten Vielzahl von Polynomen, mehrerer Kompositfeldelemente, wobei jedes identifizierte Kompositfeldelement eine Wurzel eines Reduktionspolynoms darstellt, das mit dem finiten Primfeld verknüpft ist; und Generieren, unter Verwendung der identifizierten mehreren Kompositfeldelemente, mehrerer Mapping-Matrizen und verknüpfter abgebildeter affiner Matrizen.
  • Beispiel 26 ist ein Verfahren von Beispiel 25, ferner umfassend: Identifizieren einer S-Box-Implementierung unter Verwendung einer Mapping-Matrix der generierten mehreren Mapping-Matrizen, in dem die identifizierte S-Box-Implementierung ein minimales Flächendesign aus mehreren S-Box-Implementierungen hat.
  • Beispiel 27 ist ein Verfahren von Beispiel 26, ferner umfassend: Durchführen einer kryptografischen Operation unter Verwendung der identifizierten S-Box-Implementierung.
  • Beispiel 28 ist ein Verfahren von Beispiel 25, in dem das Kompositfeld durch ein GF(24)2 Galoisfeld dargestellt ist.
  • Beispiel 29. Ein Apparat umfassend: einen Speicher; und ein Verarbeitungssystem, das an den Speicher gekoppelt ist, wobei das Verarbeitungssystem das Verfahren nach einem der Beispiele 25-28 durchführt.
  • Beispiel 30. Ein computerlesbares, nicht transitorisches Speichermedium, umfassend ausführbare Anweisungen, die, wenn sie durch ein Verarbeitungssystem ausgeführt werden, das Verarbeitungssystem zur Durchführung von Operationen veranlassen, umfassend: Identifizieren einer ersten Vielzahl von irreduzierbaren Polynomen, die mit einem finiten Primfeld verknüpft sind, wobei jedes identifizierte Polynom Primitivwurzeln im finiten Primfeld hat; Identifizieren einer zweiten Vielzahl von irreduzierbaren Polynomen, die mit einem Kompositfeld des finiten Primfeldes verknüpft sind, wobei jedes identifizierte Polynom Primitivwurzeln im Kompositfeld hat; Identifizieren, unter Verwendung mehrerer Kombinationen eines ersten Polynoms der ersten Vielzahl von Polynomen und eines zweiten Polynoms der zweiten Vielzahl von Polynomen, mehrerer Kompositfeldelemente, wobei jedes identifizierte Kompositfeldelement eine Wurzel eines Reduktionspolynoms darstellt, das mit dem finiten Primfeld verknüpft ist; und Generieren, unter Verwendung der identifizierten mehreren Kompositfeldelemente, mehrerer Mapping-Matrizen und verknüpfter abgebildeter affiner Matrizen.
  • Beispiel 31. Das computerlesbare, nicht transitorische Speichermedium von Beispiel 30, ferner umfassend: Identifizieren einer S-Box-Implementierung unter Verwendung einer Mapping-Matrix der generierten mehreren Mapping-Matrizen, in dem die identifizierte S-Box-Implementierung ein minimales Flächendesign aus mehreren S-Box-Implementierungen hat.
  • Beispiel 32. Das computerlesbare, nicht transitorische Speichermedium von Beispiel 30, in dem das finite Primfeld durch ein GF(28) Galoisfeld dargestellt ist.
  • 33. Das computerlesbare, nicht transitorische Speichermedium von Beispiel 30, in dem das Kompositfeld durch ein GF(24)2 Galoisfeld dargestellt ist.
  • Einige Abschnitte der ausführlichen Beschreibung sind im Sinne von Algorithmen und symbolischen Darstellungen von Operationen an Daten-Bits innerhalb eines Computerspeichers dargestellt. Diese algorithmischen Beschreibungen und Darstellungen sind die Mittel, die von Fachleuten auf dem Gebiet der Datenverarbeitung verwendet werden, um die Substanz ihrer Arbeit anderen Fachleuten auf dem Gebiet effektiv zu vermitteln. Ein Algorithmus ist hier und im Allgemeinen als eine in sich stimmige Abfolge von Operationen auszulegen, die zu einem gewünschten Ergebnis führen. Die Operationen sind jene, die physische Manipulationen physikalischer Größen erfordern. Üblicherweise, wenn auch nicht unbedingt, weisen diese Größe die Form elektrischer oder magnetischer Signale auf, die gespeichert, übertragen, kombiniert, verglichen oder auf andere Weise manipuliert werden können. Es hat sich gelegentlich als praktisch erwiesen, im Wesentlichen aus Gründen der allgemeinen Verwendung, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen oder dergleichen zu bezeichnen.
  • Es sollte jedoch berücksichtigt werden, dass diese und ähnliche Begriffe mit den richtigen physikalischen Größen zu verknüpfen sind und nur praktische Etiketten sind, die diesen Größen verliehen werden. Falls nicht anderes angeführt ist, wie aus der vorangehenden Besprechung hervorgeht ist klar, dass in der gesamten Beschreibung Besprechungen, die Begriffe wie „Verschlüsseln“, „Entschlüsseln“, „Speichern“, „Vorsehen“, „Ableiten“, „Erhalten“, „Empfangen“, „Authentifizieren“, „Löschen“, „Ausführen“, „Anfordern“, „Kommunizieren“ oder dergleichen verwenden, sich auf die Maßnahmen und Prozesse eines Rechensystems oder einer ähnlichen elektronischen Rechenvorrichtung beziehen, das bzw. die Daten, die als physikalische (elektronische) Größen in den Registern und Speichern im Rechensystem präsentiert werden, manipuliert und in andere Daten umformt, die ähnlich als physikalische Größen in den Speichern oder Registern oder anderen solchen Informationsspeicher-, Übertragungs- oder Anzeigevorrichtungen im Computersystem präsentiert werden.
  • Die Wörter „Beispiel“ oder „beispielhaft“, wie hier verwendet, bedeuten als ein Beispiel, Fallbeispiel oder eine Veranschaulichung dienend. Jeder Aspekt oder jedes Design, der bzw. das hier als „Beispiel“ oder „beispielhaft“ beschrieben ist, ist nicht unbedingt als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Designs auszulegen. Vielmehr soll die Verwendung der Wörter „Beispiel“ oder „beispielhaft“ Konzepte in konkreter Weise präsentieren. Wie in dieser Anmeldung verwendet, soll der Begriff „oder“ ein inklusives „oder“ und nicht ein exklusives „oder“ bedeuten. Das heißt, falls nicht anderes spezifiziert ist oder klar aus dem Zusammenhang hervorgeht, soll „X enthält A oder B“ jede der natürlichen inklusiven Umsetzungen bedeuten. Das heißt, falls X A enthält; X B enthält oder X sowohl A wie auch B enthält, dann ist „X enthält A oder B“ unter einem der vorangehenden Fallbeispiele erfüllt. Zusätzlich sollen die Artikel „einer/eine/ein“, wie in dieser Anmeldung und in den beiliegenden Ansprüchen verwendet, im Allgemeinen in der Bedeutung „ein oder mehrere“ ausgelegt werden, falls nicht anderes spezifiziert ist oder klar aus dem Zusammenhang hervorgeht, der sich auf eine Singularform bezieht. Ferner soll die Verwendung des Begriffs „eine Ausführungsform“ oder „eine bestimmte Ausführungsform“ oder „eine Implementierung“ oder „eine bestimmte Implementierung“ durchgehend nicht dieselbe Ausführungsform oder Implementierung bedeuten, falls nicht als solche beschrieben. Ebenso sind die Begriffe „erste“, „zweite“, „dritte“, „vierte“ usw., wie hier verwendet, als Etiketten zu verstehen, um unter verschiedenen Elementen zu unterscheiden, und müssen nicht unbedingt eine Bedeutung von Ordnungszahlen gemäß ihrer numerischen Bezeichnung haben.
  • Hier beschriebene Ausführungsformen können sich auch auf einen Apparat zur Durchführung der vorliegenden Operationen beziehen. Dieser Apparat kann spezielle für den erforderlichen Zweck konstruiert sein oder kann einen Allzweck-Computer umfassen, der selektiv durch ein im Computer gespeichertes Computerprogramm aktiviert oder rekonfiguriert werden kann. Ein solches Computerprogramm kann in einem nicht transitorischen computerlesbaren Speichermedium gespeichert werden, wie einer Art von Platte, enthaltend Disketten, optische Platten, CD-ROMs und magnetisch-optische Platten, Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAMs), EPROMs, EEPROMs, magnetische oder optische Karten, Flash-Speicher oder jede Art von Medien, die zum Speichern elektronischer Anweisungen geeignet sind, ohne aber darauf beschränkt zu sein. Der Begriff „computerlesbares Speichermedium“ sollte so verstanden werden, dass er ein einzelnes Medium oder mehrere Medien umfasst (z. B. eine zentralisierte oder verteilte Datenbank und/oder zugehörige Caches und Server), die den einen Satz oder mehrere Sätze von Anweisungen speichern. Der Begriff „computerlesbares Medium“ soll auch jedes Medium enthalten, das imstande ist, einen Satz von Anweisungen zur Ausführung durch die Maschine zu speichern, zu codieren oder zu tragen, und das die Maschine veranlasst, eine oder mehrere der Methodologien der vorliegenden Ausführungsformen auszuführen. Der Begriff „computerlesbares Speichermedium“ soll daher so verstanden werden, dass er Festkörperspeicher, optische Medien, magnetische Medien, jedes Medium, das imstande ist, einen Satz von Anweisungen zur Ausführung durch die Maschine zu speichern, und das die Maschine veranlasst, eine oder mehrere der Methodologien der vorliegenden Ausführungsformen auszuführen, enthält, ohne aber darauf beschränkt zu sein.
  • Die hier präsentierten Algorithmen und Anzeigen beziehen sich an sich nicht auf einen besonderen Computer oder anderen Apparat. Es können unterschiedliche Allzwecksysteme mit Programmen gemäß den Lehren hierin verwendet werden oder es kann sich als praktisch erweisen, einen spezialisierteren Apparat zu konstruieren, um die erforderlichen Verfahrensoperationen durchzuführen. Die erforderliche Struktur für eine Reihe dieser Systeme geht aus der folgenden Beschreibung hervor. Zusätzlich sind die vorliegenden Ausführungsformen nicht unter Bezugnahme auf eine besondere Programmiersprache beschrieben. Es ist klar, dass eine Reihe von Programmiersprachen verwendet werden kann, um die Lehren der hier beschriebenen Ausführungsformen zu implementieren.
  • Die obenstehende Beschreibung führt zahlreiche spezielle Einzelheiten an, wie Beispiele spezieller Systeme, Komponenten, Verfahren und so weiter, um ein gutes Verständnis mehrerer Ausführungsformen zu ermöglichen. Für einen Fachmann auf dem Gebiet ist jedoch offensichtlich, dass zumindest einige Ausführungsformen ohne diese speziellen Einzelheiten in die Praxis umgesetzt werden können. In anderen Fällen sind allgemein bekannte Komponenten oder Verfahren nicht im Details beschrieben oder in einem einfachen Blockdiagrammformat angeführt, um ein unnötiges Verschleiern der vorliegenden Ausführungsformen zu vermeiden. Somit sind die speziellen Einzelheiten, die oben angeführt sind, nur beispielhaft. Besondere Implementierungen können von diesen beispielhaften Einzelheiten abweichen und noch immer als im Umfang der vorliegenden Ausführungsformen liegend angesehen werden.
  • Es ist klar, dass die obenstehende Beschreibung anschaulich und nicht einschränkend sein soll. Viele andere Ausführungsformen sind für Fachleute auf dem Gebiet beim Lesen und Verstehen der obenstehenden Beschreibung offensichtlich. Der Umfang der vorliegenden Ausführungsformen sollte daher unter Bezugnahme auf die beiliegenden Ansprüche, gemeinsam mit dem vollen Umfang von Äquivalenten, zu welchen solche Ansprüche berechtigt sind, bestimmt werden.

Claims (21)

  1. Verarbeitungssystem, umfassend: einen Speicher; ein kryptografisches Beschleunigermodul, das betriebsbereit an den Speicher gekoppelt ist, wobei das kryptografische Beschleunigermodul eine Byte-Ersatzoperation durch Durchführung: einer ersten abgebildeten affinen Transformation einer Eingangs-Bit-Sequenz, um eine erste Zwischen-Bit-Sequenz zu erzeugen, einer inversen Transformation der ersten Zwischen-Bit-Sequenz, um eine zweite Zwischen-Bit-Sequenz zu erzeugen, und einer zweiten abgebildeten affinen Transformation der zweiten Zwischen-Bit-Sequenz, um eine Ausgangs-Bit-Sequenz zu erzeugen, implementiert.
  2. Verarbeitungssystem nach Anspruch 1, wobei die erste abgebildete affine Transformation durch eine Matrix dargestellt ist, die durch Multiplizieren einer Mapping-Matrix und einer ersten Transformationsmatrix erzeugt wird.
  3. Verarbeitungssystem nach Anspruch 2, wobei die erste Transformationsmatrix mit einem Paar von Reduktionspolynomen eines finiten Felds verknüpft ist.
  4. Verarbeitungssystem nach Anspruch 2, wobei zumindest eine der Eingangs-Bit-Sequenz und der Ausgangs-Bit-Sequenz durch ein Element eines finiten Primfeldes vorgesehen ist, und wobei die Mapping-Matrix ein Mapping vom finiten Primfeld auf ein Kompositfeld des finiten Primfeldes darstellt.
  5. Verarbeitungssystem nach Anspruch 4, wobei das finite Primfeld durch ein GF(28) Galoisfeld dargestellt ist.
  6. Verarbeitungssystem nach Anspruch 4, wobei das Kompositfeld durch ein GF(24)2 Galoisfeld dargestellt ist.
  7. Verarbeitungssystem nach Anspruch I, wobei die zweite abgebildete affine Transformation durch eine Matrix dargestellt ist, die durch Multiplizieren einer Mapping-Matrix und einer zweiten Transformationsmatrix erzeugt wird.
  8. Verarbeitungssystem nach Anspruch 1, wobei das Verarbeitungssystem verwendet wird, um eines der Folgenden durchzuführen: eine SMS4-Verschlüsselungsoperation oder eine SMS4-Entschlüsselungsoperation.
  9. Verarbeitungssystem nach Anspruch I, wobei das Verarbeitungssystem als ein System-on-Chip (SoC) implementiert ist.
  10. Computerlesbares, nicht transitorisches Speichermedium, umfassend ausführbare Anweisungen, die, wenn sie durch eine Verarbeitungsvorrichtung ausgeführt werden, die Verarbeitungsvorrichtung zur Durchführung von Operationen veranlassen, umfassend: Durchführen einer ersten abgebildeten affinen Transformation einer Eingangs-Bit-Sequenz, um eine erste Zwischen-Bit-Sequenz zu erzeugen; Durchführen einer inversen Transformation der ersten Zwischen-Bit-Sequenz, um eine zweite Zwischen-Bit-Sequenz zu erzeugen; und Durchführen einer zweiten abgebildeten affinen Transformation der zweiten Zwischen-Bit-Sequenz, um eine Ausgangs-Bit-Sequenz zu erzeugen.
  11. Computerlesbares, nicht transitorisches Speichermedium nach Anspruch 10, wobei die erste abgebildete affine Transformation durch eine Matrix dargestellt ist, die durch Multiplizieren einer Mapping-Matrix und einer ersten Transformationsmatrix erzeugt wird.
  12. Computerlesbares, nicht transitorisches Speichermedium nach Anspruch 11, wobei die erste Transformationsmatrix mit einem Paar von Reduktionspolynomen eines finiten Felds verknüpft ist.
  13. Computerlesbares, nicht transitorisches Speichermedium nach Anspruch 10, wobei zumindest eine der Eingangs-Bit-Sequenz und der Ausgangs-Bit-Sequenz durch ein Element eines finiten Primfeldes vorgesehen ist, und wobei die Mapping-Matrix ein Mapping vom finiten Primfeld auf ein Kompositfeld des finiten Primfeldes darstellt.
  14. Computerlesbares, nicht transitorisches Speichermedium nach Anspruch 13, wobei das finite Primfeld durch ein GF(28) Galoisfeld dargestellt ist.
  15. Computerlesbares, nicht transitorisches Speichermedium nach Anspruch 13, wobei das Kompositfeld durch ein GF(24)2 Galoisfeld dargestellt ist.
  16. Computerlesbares, nicht transitorisches Speichermedium nach Anspruch 10, wobei die zweite abgebildete affine Transformation durch eine Matrix dargestellt ist, die durch Multiplizieren einer Mapping-Matrix und einer zweiten Transformationsmatrix erzeugt wird.
  17. Verfahren, umfassend: Identifizieren einer ersten Vielzahl von irreduzierbaren Polynomen, die mit einem finiten Primfeld verknüpft sind, wobei jedes identifizierte Polynom Primitivwurzeln im finiten Primfeld hat; Identifizieren einer zweiten Vielzahl von irreduzierbaren Polynomen, die mit einem Kompositfeld des finiten Primfeldes verknüpft sind, wobei jedes identifizierte Polynom Primitivwurzeln im Kompositfeld hat; Identifizieren, unter Verwendung mehrerer Kombinationen eines ersten Polynoms der ersten Vielzahl von Polynomen und eines zweiten Polynoms der zweiten Vielzahl von Polynomen, mehrerer Kompositfeldelemente, wobei jedes identifizierte Kompositfeldelement eine Wurzel eines Reduktionspolynoms darstellt, das mit dem finiten Primfeld verknüpft ist; und Generieren, unter Verwendung der identifizierten mehreren Kompositfeldelemente, mehrerer Mapping-Matrizen und verknüpfter abgebildeter affiner Matrizen.
  18. Verfahren nach Anspruch 17, ferner umfassend: Identifizieren einer S-Box-Implementierung unter Verwendung einer Mapping-Matrix der generierten mehreren Mapping-Matrizen, wobei die identifizierte S-Box-Implementierung ein minimales Flächendesign aus mehreren S-Box-Implementierungen hat.
  19. Verfahren nach Anspruch 17, ferner umfassend: Durchführen einer kryptografischen Operation unter Verwendung der identifizierten S- Box-Implementierung.
  20. Verfahren nach Anspruch 17, wobei das Kompositfeld durch ein GF(24)2 Galoisfeld dargestellt ist.
  21. Apparat, umfassend: einen Speicher; und ein Verarbeitungssystem, das an den Speicher gekoppelt ist, wobei das Verarbeitungssystem zum Durchführen des Verfahrens nach einem der Ansprüche 17-20 dient.
DE112016004342.2T 2015-09-24 2016-08-12 Hardware-Beschleuniger mit doppelt affiner abgebildeter S-Box Withdrawn DE112016004342T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/863,769 US10158485B2 (en) 2015-09-24 2015-09-24 Double affine mapped S-box hardware accelerator
US14/863,769 2015-09-24
PCT/US2016/046905 WO2017052837A1 (en) 2015-09-24 2016-08-12 Double affine mapped s-box hardware accelerator

Publications (1)

Publication Number Publication Date
DE112016004342T5 true DE112016004342T5 (de) 2018-05-30

Family

ID=58387137

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016004342.2T Withdrawn DE112016004342T5 (de) 2015-09-24 2016-08-12 Hardware-Beschleuniger mit doppelt affiner abgebildeter S-Box

Country Status (4)

Country Link
US (1) US10158485B2 (de)
CN (1) CN108027864B (de)
DE (1) DE112016004342T5 (de)
WO (1) WO2017052837A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102328020B1 (ko) * 2015-04-03 2021-11-17 한국전자통신연구원 하나의 룩업 테이블을 이용한 파노라마 영상 출력 시스템 및 방법
KR102451156B1 (ko) * 2015-12-09 2022-10-06 삼성전자주식회사 메모리 모듈 내에서 랭크 인터리빙 동작을 갖는 반도체 메모리 장치
US11323247B2 (en) 2017-10-27 2022-05-03 Quantropi Inc. Methods and systems for secure data communication
US11138132B2 (en) * 2018-06-20 2021-10-05 Intel Corporation Technologies for secure I/O with accelerator devices
CN108880783B (zh) * 2018-09-06 2021-04-20 成都三零嘉微电子有限公司 一种针对sm4算法的联合攻击方法
US20200313850A1 (en) * 2019-03-29 2020-10-01 Irdeto Canada Corporation Method and apparatus for implementing a white-box cipher
CA3135046C (en) * 2019-04-23 2022-10-04 Quantropi Inc. Enhanced randomness for digital systems
US11722292B2 (en) 2021-01-29 2023-08-08 Robert Bosch Gmbh System and method for improving the efficiency of advanced encryption standard in multi-party computation with precomputed data

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7873161B2 (en) 2002-12-13 2011-01-18 Nxp B.V. Small hardware implementation of the subbyte function of rijndael
CN100369074C (zh) * 2006-03-02 2008-02-13 西安西电捷通无线网络通信有限公司 一种实现sms4密码算法中加解密处理的方法
US7860240B2 (en) 2007-06-29 2010-12-28 Intel Corporation Native composite-field AES encryption/decryption accelerator circuit
US8923510B2 (en) 2007-12-28 2014-12-30 Intel Corporation Method and apparatus for efficiently implementing the advanced encryption standard
US8139764B2 (en) * 2008-05-06 2012-03-20 Harris Corporation Closed galois field cryptographic system
JP2010049213A (ja) 2008-08-25 2010-03-04 Toshiba Corp 暗号化装置、復号装置、暗号通信システム、方法及びプログラム
KR100960113B1 (ko) 2008-09-19 2010-05-27 한국전자통신연구원 고속처리 가능한 아리아 암복호화 장치
KR100991713B1 (ko) 2008-11-26 2010-11-04 고려대학교 산학협력단 마스킹을 이용한 aes 역원 연산 장치 및 방법과 이를 이용한 aes 암호 시스템
JP5711681B2 (ja) 2012-03-06 2015-05-07 株式会社東芝 暗号処理装置
US9143325B2 (en) * 2012-12-14 2015-09-22 Microsoft Technology Licensing, Llc Masking with shared random bits
US9843441B2 (en) 2013-09-24 2017-12-12 Intel Corporation Compact, low power advanced encryption standard circuit
CN103516512A (zh) * 2013-10-21 2014-01-15 深圳市芯通信息科技有限公司 基于aes算法的加解密方法及加解密器
US9800406B2 (en) 2014-05-21 2017-10-24 Intel Corporation Technologies for modifying a first cryptographic cipher with operations of a second cryptographic cipher
US9910792B2 (en) 2016-04-11 2018-03-06 Intel Corporation Composite field scaled affine transforms-based hardware accelerator

Also Published As

Publication number Publication date
US20170093571A1 (en) 2017-03-30
WO2017052837A1 (en) 2017-03-30
CN108027864A (zh) 2018-05-11
US10158485B2 (en) 2018-12-18
CN108027864B (zh) 2022-07-05

Similar Documents

Publication Publication Date Title
US10402468B2 (en) Processing device for performing convolution operations
DE112016004342T5 (de) Hardware-Beschleuniger mit doppelt affiner abgebildeter S-Box
TWI540446B (zh) 用於實施安全視訊輸出路徑的硬體輔助虛擬化
US9448950B2 (en) Using authenticated manifests to enable external certification of multi-processor platforms
US9501668B2 (en) Secure video ouput path
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
DE102014004563A1 (de) Befehle und Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches
DE102013018238A1 (de) Anweisung und Logik zum Bereitstellen einer Vektorkompressions- und Rotationsfunktionalität
US20160188889A1 (en) Creating secure channels between a protected execution environment and fixed-function endpoints
DE112011105666T5 (de) Befehl und Logik zum Bereitstellen von Vektor-Lade-OP/Speicher-OP mit Schritt-Funktionalität
US10230528B2 (en) Tree-less integrity and replay memory protection for trusted execution environment
US10606765B2 (en) Composite field scaled affine transforms-based hardware accelerator
DE102013021221A1 (de) Befehle und Logik zur Vektorisierung von bedingten Schleifen
DE112011105665T5 (de) Befehl und Logik zum Liefern von Vektorladen und -speichern mit Schritt- und Maskierfunktionalität
DE112011105664T5 (de) Instruktion und Logik zum Bereitstellen einer Vektorstreuungs-Op- und -Hol-Op-Funktionalität
DE202016009016U1 (de) Befehle und Logik für wiederkehrende benachbarte Sammlungen
DE202019005672U1 (de) System zum Verhindern eines unautorisierten Zugriffs auf verschlüsselten Speicher
DE102018131595A1 (de) Verwaltung von Prozessorleistung basierend auf Benutzerunterbrechungen
DE102018125747A1 (de) Unterstützung für eine höhere anzahl von gleichzeitigenschlüsseln in einer kryptografie-engine mit mehrerenschlüsseln
DE102018005101A1 (de) Feld-Systemtest-Sicherheit
DE102015006670A1 (de) Befehle und logik zum bereitstellen von kryptographischer allzweck-gf(256)-simd- arithmetikfunktionalität
DE112016004365T5 (de) Sichere modularpotenzierungsprozessoren, verfahren, systeme und instruktionen
DE112016004192T5 (de) Fehlerprüfung komprimierter Ströme in heterogenen Kompressionsbeschleunigern
DE202016009013U1 (de) Befehle und Logik für Vektorpermutation
CN108027866B (zh) 具有轮常数生成的sms4加速处理器

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee