DE102019116104A1 - Kryptographieverarbeitungsvorrichtung und -verfahren zum kryptographischen verarbeiten von daten - Google Patents

Kryptographieverarbeitungsvorrichtung und -verfahren zum kryptographischen verarbeiten von daten Download PDF

Info

Publication number
DE102019116104A1
DE102019116104A1 DE102019116104.5A DE102019116104A DE102019116104A1 DE 102019116104 A1 DE102019116104 A1 DE 102019116104A1 DE 102019116104 A DE102019116104 A DE 102019116104A DE 102019116104 A1 DE102019116104 A1 DE 102019116104A1
Authority
DE
Germany
Prior art keywords
operand
data
data word
data words
cryptography
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.)
Pending
Application number
DE102019116104.5A
Other languages
English (en)
Inventor
Erich Wenger
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE102019116104.5A priority Critical patent/DE102019116104A1/de
Priority to US16/867,954 priority patent/US11403431B2/en
Priority to CN202010500047.XA priority patent/CN112084508A/zh
Publication of DE102019116104A1 publication Critical patent/DE102019116104A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/40Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using contact-making devices, e.g. electromagnetic relay
    • G06F7/44Multiplying; Dividing
    • G06F7/446Multiplying; Dividing by partial product forming (with electric multiplication table)
    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • 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/122Hardware reduction or efficient architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Software Systems (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Electromagnetism (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Gemäß verschiedenen Ausführungsformen ist eine kryptographische Verarbeitungsvorrichtung beschrieben, die einen Speicher, der konfiguriert ist, einen ersten Operanden und einen zweiten Operanden, die durch Daten, die kryptographisch verarbeitet werden sollen, repräsentiert sind, zu speichern, wobei der erste Operand und der zweite Operand jeweils einem indexierten Array von Datenwörtern entsprechen, und einen Kryptographieprozessor, der konfiguriert ist, zur kryptographischen Verarbeitung der Daten das Produkt des ersten Operanden mit dem zweiten Operanden durch Akkumulieren der Ergebnisse partieller Multiplikationen zu bestimmen, umfasst, wobei jede partielle Multiplikation die Multiplikation eines Datenworts des ersten Operanden mit einem Datenwort des zweiten Operanden umfasst, wobei der Kryptographieprozessor konfiguriert ist, die partiellen Multiplikationen in aufeinanderfolgenden Blöcken partieller Multiplikationen auszuführen, wobei jeder Block einem Ergebnisindexbereich und einem ersten Operandenindexbereich zugeordnet ist und jeder Block alle partiellen Multiplikationen zwischen Datenwörtern des ersten Operanden innerhalb des ersten Operandenindexbereichs mit Datenwörtern des zweiten Operanden umfasst, so dass die Summe von Indizes des Datenworts des ersten Operanden und des Datenworts des zweiten Operanden innerhalb des Ergebnisindexbereichs ist.

Description

  • Die vorliegende Offenbarung bezieht sich auf Kryptographieverarbeitungsvorrichtungen und -verfahren zum kryptographischen Verarbeiten von Daten.
  • Bei der kryptographischen Verarbeitung von Daten wie z. B. Berechnung einer Signatur, Verschlüsselung oder Entschlüsselung von Daten sind die Multiplikation und Addition großer Ganzzahlen typische Operationen, die sehr häufig ausgeführt werden müssen. Das ist insbesondere bei asymmetrischer Kryptographie basierend auf ECC (Elliptische-Kurven-Kryptographie) oder RSA (Rivest, Shamir, Adleman) der Fall. Deshalb definiert insbesondere die Multiplikation mit ihrer quadratischen Komplexität normalerweise den größten Teil der Laufzeit der kryptographischen Verarbeitung von Daten. Dementsprechend sind Herangehensweisen zum Optimieren der Multiplikation großer Ganzzahlen für die kryptographische Verarbeitungsleistung wünschenswert.
  • Gemäß verschiedenen Ausführungsformen wird eine Kryptographieverarbeitungsvorrichtung bereitgestellt, die einen Speicher, der konfiguriert ist, einen ersten Operanden und einen zweiten Operanden, die durch Daten, die kryptographisch verarbeitet werden sollen, repräsentiert sind, zu speichern, wobei der erste Operand und der zweite Operand jeweils einem indexierten Array von Datenwörtern entsprechen, und einen Kryptographieprozessor, der konfiguriert ist, zur kryptographischen Verarbeitung der Daten das Produkt des ersten Operanden mit dem zweiten Operanden durch Akkumulieren der Ergebnisse partieller Multiplikationen zu bestimmen, enthält, wobei jede partielle Multiplikation die Multiplikation eines Datenworts des ersten Operanden mit einem Datenwort des zweiten Operanden enthält, wobei der Kryptographieprozessor konfiguriert ist, die partiellen Multiplikationen in aufeinanderfolgenden Blöcken partieller Multiplikationen auszuführen, wobei jeder Block einem Ergebnisindexbereich und einem ersten Operandenindexbereich zugeordnet ist und jeder Block alle partiellen Multiplikationen zwischen Datenwörtern des ersten Operanden innerhalb des ersten Operandenindexbereichs mit Datenwörtern des zweiten Operanden enthält, so dass die Summe von Indizes des Datenworts des ersten Operanden und des Datenworts des zweiten Operanden innerhalb des Ergebnisindexbereichs ist.
  • Gemäß einer weiteren Ausführungsform ist ein Verfahren zum kryptographischen Verarbeiten von Daten gemäß der vorstehenden Kryptographieverarbeitungsvorrichtung bereitgestellt.
  • In den Zeichnungen beziehen sich gleiche Bezugszeichen durchgehend durch die unterschiedlichen Ansichten allgemein auf die gleichen Teile. Die Zeichnungen sind nicht notwendigerweise maßstabsgerecht, vielmehr ist das Darstellen der Prinzipien der Erfindung im Allgemeinen hervorgehoben. In der folgenden Beschreibung sind verschiedene Aspekte mit Bezug auf die folgenden Zeichnungen beschrieben; es zeigen:
    • 1 ein Beispiel einer Datenverarbeitungsvorrichtung;
    • 2 vier Diagramme, wovon jedes eine Herangehensweise zur Multiplikation von zwei Operanden darstellt;
    • 3 ein Diagramm, das ein Multiplikationsverfahren gemäß einer Ausführungsform darstellt;
    • 4 ein Diagramm, das ein Beispiel zur Handhabung einer Multiplikation für einen Spezialfall von Parametern darstellt;
    • 5 ein Diagramm, das ein Beispiel für eine Schleifenimplementierung darstellt;
    • 6 eine Kryptographieverarbeitungsvorrichtung gemäß einer Ausführungsform; und
    • 7 ein Ablaufdiagramm, das ein Verfahren zum kryptographischen Verarbeiten von Daten einer Nachricht gemäß einer Ausführungsform darstellt.
  • Die folgende ausführliche Beschreibung bezieht sich auf die begleitenden Zeichnungen, die durch Darstellung spezifische Einzelheiten und Aspekte dieser Offenbarung, in denen die Erfindung praktiziert werden kann, zeigen. Andere Aspekte können genutzt werden, und strukturelle, logische und elektrische Änderungen können vorgenommen werden, ohne von dem Schutzbereich der Erfindung abzuweichen. Die verschiedenen Aspekte dieser Offenbarung sind nicht notwendigerweise gegenseitig ausschließend, da einige Aspekte dieser Offenbarung mit einem oder mehreren anderen Aspekten dieser Offenbarung kombiniert sein können, um neue Aspekte zu bilden.
  • 1 zeigt ein Beispiel einer Datenverarbeitungsvorrichtung 100.
  • Die Datenverarbeitungsvorrichtung 100 kann ein Computer oder eine Steuerung oder eine Mikrosteuerung sein, z. B. ein einem Fahrzeug, z. B. eine ECU (elektronische Steuereinheit) in einem Auto. Sie kann auch eine integrierte Schaltung (IC) auf einer Chipkarte einer Smartcard sein wie z. B. einer Smartcard von irgendeinem Formfaktor, z. B. für einen Pass oder für ein SIM („Subscriber Identity Module“).
  • Die Datenverarbeitungsvorrichtung 100 weist eine integrierte Schaltung in der Form eines Chips 101 auf. Der Chip 101 kann ein Steuerungschip sein und einen Prozessor 102 und einen Speicher 103, z. B. einen RAM (Direktzugriffsspeicher) implementieren. Es wird darauf hingewiesen, dass der Prozessor 102 und der Speicher 103 auch auf separaten Chips implementiert sein können. Der Chip 101 kann beispielsweise auch ein RFID- (Hochfrequenzidentifikations-) Chip sein oder ein SIM („Subscriber Identity Module“) für ein Mobiltelefon implementieren. Der Chip 101 kann für eine Sicherheitsanwendung vorgesehen sein, d. h. er kann ein Sicherheitschip sein. Beispielsweise speichert der Speicher 103 Daten, die für eine kryptographische Operation verwendet werden, z. B. um einen Anwender zu authentifizieren oder um Daten zu verschlüsseln/entschlüsseln oder zu signieren, beispielsweise gemäß einem asymmetrischen Kryptographieschema.
  • Asymmetrische Kryptographie basierend auf ECC (Elliptische-Kurven-Kryptographie) oder RSA (Rivest, Shamir, Adleman) erfordert die Addition und Multiplikation langer Ganzzahlen (typischerweise mit einer Länge von 256 Bits bis 4096 Bits). Beispielsweise erfordert das auch der Isogenie-basierte Post-Quantum-Algorithmus SIKE. Insbesondere die Multiplikation, mit ihrer quadratischen Komplexität, definiert gewöhnlich den größten Teil der Laufzeit dieser Anwendungen. Um diese Algorithmen auf einem Prozessor 102 (oder Coprozessor) effizient zu berechnen, können die langen Ganzzahlen in Wörter von 32 Bit oder 64 Bit Länge aufgeteilt werden. Eine Hardware-Implementierung kann einer ähnlichen Herangehensweise folgen.
  • Im Folgenden sind Beispiele beschrieben, in denen zwei Operanden A und B, die in den Arrays 104, 105 in dem Speicher 103 als A[] und B[] gespeichert sind, verarbeitet werden, d. h. multipliziert werden. Beide Operanden sind n-Wörter groß (d. h. sind Vektoren aus n Wörtern). Das Produkt C[] = A[] * B[] ist als 2n-Wort großes Array 106 gespeichert.
  • Der Prozessor 102 enthält eine Registermenge 107, in der er Daten, mit denen er arbeitet, speichert, z. B. ein oder mehrere Register 108 zum Speichern von Daten (z. B. eines oder mehrerer Wörter) von A, ein oder mehrere Register 109 zum Speichern von Daten (z. B. eines oder mehrerer Wörter) von B und ein oder mehrere Ergebnisregister (z. B. Akkumulatoren) 110 zum Speichern und Akkumulieren von Ergebnissen der partiellen Multiplikationen.
  • 2 zeigt vier Diagramme 201, 202, 203, 204, von denen jedes eine Herangehensweise zur Multiplikation von zwei Operanden darstellt.
  • Die Diagramme 201 bis 204 stellen die Herangehensweisen für die Multiplikation für n = 8 dar. Jeder Punkt in den Diagrammen 201 bis 204 repräsentiert eine Multiplikation von Wörtern der Operanden A und B. Pfeile geben die Reihenfolge an, in denen der Prozessor 102 die partiellen Multiplikationen eine nach der anderen ausführt.
  • Das erste Diagramm 201 stellt das Operandenabtast- oder Lehrbuch-Multiplikationsverfahren dar. Gemäß dieser Herangehensweise für die Multiplikation lädt der Prozessor 102 ein Operandenwort A[i] (in die Registermenge 107, z. B. ein Register 108) und multipliziert A[i] mit allen B[j] (die nacheinander in ein Register 109 geladen werden), bevor er zu dem nächsten Operanden A[i+1] weiter geht. Das resultierende Produkt (für jedes A[i]) wird zu dem Zwischenprodukt C[] im Speicher 103 addiert.
  • Das zweite Diagramm 202 stellt Produktabtast- oder spaltenweises Multiplikationsverfahren dar. Gemäß dieser Herangehensweise für die Multiplikation werden alle A[i] mit B[j] multipliziert, wobei die Summe von i+j konstant gehalten wird. Nach dem Aufsummieren aller Zwischenprodukte (für konstante i+j, z. B. in einem Akkumulator 110) wird das resultierende C[i+j] zurück in den Speicher 103 gespeichert. Dann wird die nächste Spalte i+j+1 verarbeitet.
  • Das dritte Diagramm 203 stellt das Hybrid-Multiplikationsverfahren dar, das so gesehen werden kann, dass es das Operandenabtastverfahren und das Produktabtastverfahren kombiniert. Global führt es Produktabtasten aus. Lokal führt es Operandenabtasten aus. Während das Produktabtasten die Anzahl notwendiger Ladeanweisungen (d. h. Ladevorgänge in die Registermenge 107 aus dem Speicher 103) reduziert, wird das lokale Operandenabtasten auf den lokalen Registern 107 des Prozessors 102 ausgeführt. Die Registermenge 107 speichert einen 2d+2 Wörter großen Akkumulator und einen Operanden der Größe d. Der andere Operand kann in die Registermenge 107 geladen und iterativ verarbeitet werden.
  • Das vierte Diagramm 204 stellt das Operanden-Caching-Multiplikationsverfahren dar. Dieses Verfahren führt lokal Produktabtasten und global Operandenabtasten aus. Es tauscht zusätzliche Lade/Speichern- (LD/ST-) Anweisungen gegen die effizientere Verwendung der lokalen Registergruppe 107 ein. Nur 3 Wörter werden für den Akkumulator 110 benötigt, und 2e Wörter werden benötigt, um die verarbeiteten Operanden zwischenzuspeichern (wobei e ein Entwurfsparameter ist).
  • Die in 2 dargestellten Verfahren wurden entworfen, um eine verfügbare Registermenge 107 eines Prozessors 102 in Software effizient zu verwenden. In der Hardware ist ein ähnliches Problem vorhanden. Das Problem ist, die Anzahl von Speicherzugriffen mit Registern zu reduzieren und infolgedessen die beste Leistung zu erreichen, mit einer minimalen Anzahl hinzugefügter Register.
  • 3 zeigt ein Diagramm 300, das ein Multiplikationsverfahren gemäß einer Ausführungsform darstellt.
  • Ähnlich dem Diagramm von 2 stellt das Diagramm 300 die Herangehensweisen für die Multiplikation für n = 8 dar, jeder Punkt 301 repräsentiert eine Multiplikation von Wörtern der Operanden A und B, und Pfeile geben die Reihenfolge an, in der partielle Multiplikationen eine nach der anderen ausgeführt werden.
  • In der Form in der zweidimensionalen Repräsentation der gesamten Multiplikation von 3 entspricht jede „Zeile“ 302 (von oben rechts nach unten links) einem A[i], jede „Diagonale“ 304 entspricht einem B[j], und jede „Spalte“ 304 entspricht einem C[i+j].
  • Das Multiplikationsverfahren von 3 ist als Parallel-Produktabtasten bezeichnet. Das Parallel-Produktabtasten führt globales Produktabtasten und lokales Operandenabtasten aus. In der lokalen Registerdatei 107 hält es 2+f Akkumulatorregister 110 und f Operandenregister 108, 109. Es ist angenommen, dass jedes Operandenregister 108, 109 und jedes Akkumulatorregister 110 ein Wort speichert.
  • Aus einem verarbeiteten Operanden A[i] bis A[i+1] können f-1 lokale Register des Operanden B[] wiederverwendet werden (und müssen nicht erneut aus dem Speicher 103 geholt werden).
  • In 3 sind Blöcke von Wortmultiplikationen 301 drei unterschiedlicher Basistypen gezeigt: die Blocktypen 1 (mit Varianten 1a und 1b), 2 und 3. Der Blocktyp 1a tritt zweimal auf (eine große und eine kleine Version), und der Blocktyp 2 tritt zweimal auf. Die anderen Blocktypen treten nur einmal auf. Es wird darauf hingewiesen, dass 3 ein einfaches Beispiel mit n=8 ist. Für größere n können die verschiedenen Blocktypen häufiger auftreten.
  • Es wird darauf hingewiesen, dass die Blöcke, von links nach rechts, Blockspalten ( 4 ) , ( 1 b 3 ) , ( 2 1 a ) , ( 2 1 a )
    Figure DE102019116104A1_0001
    bilden. Blockspalten sind im Fall höherer Dimensionen ähnlich gebildet.
  • Die Blocktypen unterscheiden sich in ihrer Form der zweidimensionalen Repräsentation der gesamten Multiplikation von 3. Dementsprechend können in einer Implementierung von Parallel-Produktabtasten gemäß einer Ausführungsform basierend auf den Blöcken die ausgeführten Operationen für unterschiedliche Blöcke unterschiedlich sein.
  • Die Blöcke mit dem größten Einfluss auf die Leistung sind die Blöcke 1a und 1b. Sie weisen in dem Beispiel von 3 eine Breite von f= 4 Spalten auf.
  • Für jede der f Spalten wird ein A[i] (der aktuellen Zeile 302) mit dem lokalen B[j] (der aktuellen Diagonale 303) multipliziert und zu dem lokalen Akkumulator 110 (für die aktuelle Spalte 304) addiert. Mit anderen Worten werden die Ergebnisse partieller Multiplikationen unter Berücksichtigung der Indizes der Datenwörter des Operanden akkumuliert. Das bedeutet, dass A[i] * B[j] für alle Paare aus i, j, wobei i + j konstant ist, für das Ergebnisdatenwort C[i+j] akkumuliert werden müssen. Falls der Maximalwert des Datenworts C[i+j] überschritten wird, wird der überschreitende Betrag zu den nächsten Datenwörtern C[i+j+1] und (möglicherweise) C[i+j+2] übertragen.
  • Gemäß einer Ausführungsform verarbeitet der Prozessor 102 die Blöcke von rechts nach links und von unten nach oben, d. h. den (kleinen) Block 1a, den (rechten) Block 2, den (großen) Block 1a, den (linken) Block 2, den Block 3, den Block 1b, den Block 4. Der Prozessor 102 verarbeitet jeden der Blöcke zeilenweise von unten nach oben. Von einer Zeile 302 zu der nächsten können f-1 Wörter von B[] wiederverwendet werden. Siehe beispielsweise den (großen) Block 1a: in der untersten Zeile kann das B am weitesten links (das B[7] ist) nicht für die Zeile darüber wiederverwendet werden, während das für die anderen (B[6], B[5], B[4]) möglich ist. B[3] muss geladen werden. Mit anderen Worten wird B[7] durch B[3] ersetzt.
  • Der Unterschied zwischen den Blöcken 1a und 1b ist, dass der Prozessor, während er das Verarbeiten von Block 1b mit bereits zwischengespeicherten (d. h. geladenen) Wörtern von B[] starten kann, er das Verarbeiten der Blöcke 1a mit Laden aller notwendigen Wörter von B[] starten muss. Der Prozessor 102 beendet wiederum das Verarbeiten von Block 1b durch Speichern der akkumulierten Multiplikationen in C[] in dem Speicher 103 in dem Ergebnis-Array 106.
  • Bei dem Verarbeiten der Blöcke 2 speichert der Prozessor 102 die akkumulierten Register in das Ziel-Speicher-Array für C[] 106. Wenn der Prozessor die Blöcke 2 verarbeitet, führt er immer noch lokales Operandenabtasten aus und verarbeitet nur kürzere Zeilen (z. B. im Vergleich zu Block 1a). Da alle notwendigen Wörter von B[] bereits aus dem entsprechenden vorhergehenden Block 1a verfügbar sind, muss er keine weiteren Wörter von B[] holen. Nur zusätzliche Wörter von A[] müssen geholt werden. Am Ende sind nur zwei Akkumulatorregister 110 übrig, d. h. noch zugewiesen, und zwar diejenigen, die die zwei höchstwertigen Wörter des Ergebnisses der Verarbeitung von Block 2 speichern. Diese beiden werden zu der folgenden Blockspalte (als die zwei niedrigstwertigen Akkumulatorwörter) weitergeleitet (übertragen).
    Am Beginn von Block 3 sind nur die zwei Akkumulatorregister 110, die die übertragenen Wörter speichern, zugewiesen. An diesem Punkt sind, gemäß einer Ausführungsform, ausreichende Register verfügbar, um alle A[i] und B[j], die in Block 3 benötigt werden, zu laden. Sobald der Prozessor 102 eine Zeile mit einem A[i] verarbeitet hat, kann er das Register 108, das das A[i] speichert, einem neuen Zweck als ein zusätzliches Akkumulatorregister 110 zuführen. Von einer Zeile 302 zur nächsten nimmt der Akkumulator um ein Wortregister 110 zu, bis der Akkumulator schließlich f+2 Wörter erfordert, d. h. f+2 Akkumulatorregister 110 mit jeweils einem Wort enthält.
  • Im Folgenden sind mögliche Einzelheiten der Implementierung („Feinheiten“) beschrieben, die sowohl für Software- als auch für Hardware-Implementierungen angewandt werden können. Sie enthalten insbesondere Herangehensweisen zum effizienten Verarbeiten einer einzelnen Zeile.
  • Reduzieren der notwendigen Additionen
  • Während die Repräsentation von 3 so gesehen werden kann, dass sie inkrementelles Verarbeiten des lokalen B[i] vorschlägt, ist es typischerweise effizienter, die geradzahligen und ungeradzahligen B[i] separat zu iterieren. Auf diese Weise kann die Anzahl notwendiger ADC- (Addieren mit Übertrag) Operationen reduziert werden.
  • Der folgende Beispielcode (modifizierter ARM-Code zur besseren Lesbarkeit) ist für f=4. B[j+1...j+3] werden aus der vorhergehenden Zeile wiederverwendet. B[j...j+2] werden in der nachfolgenden Zeile wiederverwendet.
  • LDR A [ i ]
    Figure DE102019116104A1_0002
    LDR B [ j ]
    Figure DE102019116104A1_0003
    MUL RH ,RL  A [ i ] * B [ j ]
    Figure DE102019116104A1_0004
    ADD Acc0   Acc 0 + RL
    Figure DE102019116104A1_0005
    ADC Acc1   Acc1 + RH + C
    Figure DE102019116104A1_0006
    MUL RH ,RL   A [ i ] * B [ j + 2 ]
    Figure DE102019116104A1_0007
    ADC Acc2   Acc2 + RL + C
    Figure DE102019116104A1_0008
    ADC Acc3   Acc3 + RH + C
    Figure DE102019116104A1_0009
    ADC Acc4   Acc4 + C
    Figure DE102019116104A1_0010
    ADC Acc5   Acc5 + C
    Figure DE102019116104A1_0011
    MUL RH ,RL   A [ i ] * B [ j + 1 ]
    Figure DE102019116104A1_0012
    ADD Acc1   Acc1 + RL
    Figure DE102019116104A1_0013
    ADC Acc2   Acc2 + RH + C
    Figure DE102019116104A1_0014
    MUL RH ,RL   A [ i ] * B [ j + 3 ]
    Figure DE102019116104A1_0015
    ADC Acc3   Acc3 + RL + C
    Figure DE102019116104A1_0016
    ADC Acc4   Acc4 + RH + C
    Figure DE102019116104A1_0017
    ADC Acc5   Acc5 + C
    Figure DE102019116104A1_0018
  • Verwenden eines zweiten Acc(f)-Registers
  • Wenn die geradzahligen und ungeradzahligen Operanden B[j] separat verarbeitet werden, gibt es einen Punkt, an dem der Übertrag über zwei Register weitergegeben werden muss. Dadurch, dass man zwei zusätzliche Register diesen Übertrag separat akkumulieren lässt, kann die Anzahl der Additionen reduziert werden. Nur am Ende einer Spalte müssen die besonders akkumulierten Übertragbits zu dem anderen Akkumulatorregister addiert werden.
  • Separates Laden von A[i] und B[j]
  • Das vorstehende Codebeispiel lädt A[i] und B[j] nacheinander. Dann werden f Register benötigt, um den Operanden B[j..j+f-1] zu speichern, und ein Register wird benötigt, um A[i] zu speichern; insgesamt f+1. Es ist jedoch möglich, durch separates Laden von A[i] und B[j] die Anzahl notwendiger Register auf f Register zu reduzieren. Zuerst wird A[i] geladen und multiplizierend akkumuliert mit B[j+1], B[j+3], ..., B[j+f-1]. An diesem Punkt kann das Register B[j+f-1] wiederverwendet werden, um das zu ladende B[j] zu halten. Erst dann wird A[i] mit B[j], B[j+2], ... , B[j+f-2] kombiniert. Das spart ein Register ein. Es wird darauf hingewiesen, dass das Einsparen von zwei Registern bedeutet, dass der Parameter f um eins erhöht werden kann (wenn angenommen wird, dass eine feste Anzahl von Registern in der Registermenge 102 ist).
  • Das folgende Beispiel lädt A[i] und B[j] separat und verwendet ein zweites Acc4X-Register zum Akkumulieren der Überträge. Acc4X muss am Ende der verarbeiteten Spalte zu (Acc5, Acc4) addiert werden.
  • LDR A [ i ]
    Figure DE102019116104A1_0019
    MUL RH ,RL   A [ i ] * B [ j + 1 ]
    Figure DE102019116104A1_0020
    ADD Acc1   Acc1 + RL
    Figure DE102019116104A1_0021
    ADC Acc2   Acc2 + RH + C
    Figure DE102019116104A1_0022
    MUL RH ,RL  A [ i ] * B [ j + 3 ]
    Figure DE102019116104A1_0023
    ADC Acc3   Acc3 + RL + C
    Figure DE102019116104A1_0024
    ADC Acc4   Acc4 + RH + C
    Figure DE102019116104A1_0025
    ADC Acc5   Acc5 + C LDR B [ j ]   ( U ¨ berschreiben von Register B [ j + 3 ] )
    Figure DE102019116104A1_0026
    MUL RH ,RL   A [ i ] * B [ j + 1 ]
    Figure DE102019116104A1_0027
    ADD Acc0   Acc 0 + RL
    Figure DE102019116104A1_0028
    ADC Acc1   Acc1 + RH + C
    Figure DE102019116104A1_0029
    MUL RH ,RL  A [ i ] * B [ j + 2 ]
    Figure DE102019116104A1_0030
    ADC Acc2   Acc2 + RL + C
    Figure DE102019116104A1_0031
    ADC Acc3   Acc3 + RH + C
    Figure DE102019116104A1_0032
    ADC Acc4X   Acc4X + C
    Figure DE102019116104A1_0033
  • Behandlung des Falls von n mod f ≠0
  • Das Parallel-Produktabtasten kann auch angepasst werden, um den Fall von n mod f ≠ 0 zu behandeln.
  • 4 zeigt ein Diagramm 400, das ein Beispiel dafür darstellt, wie dieser Fall effizient behandelt werden kann. Die mittlere Blockspalte 401 kann als Spalte gesehen werden, die (unten) mit einer modifizierten Version von Block 3 startet, einen Block 1 in der Mitte aufweist und (oben) mit einer modifizierten Version von Block 2 endet.
  • Durchlaufen einer Schleife für Produktabtasten
  • Für eine höhere Leistung kann die gesamte mehrfach genaue Multiplikation entrollt werden. Das kann jedoch nur bis zu einer speziellen Größe des Codes sinnvoll sein. Spezielle Systeme mit Anweisungs-Caches können mit einer Schleifen-Implementierung tatsächlich schneller sein, da weniger Code aus dem Speicher geholt werden muss.
  • Für eine vollständige Schleifen-Implementierung iteriert die äußere Schleife durch alle Blockspalten. Die innere Schleife führt die entrollten Blöcke 2 und 3 und eine Schleifen-Version von Block 1 aus. Der Block 1 wird in Teilblöcke der Größe f aufgeteilt, die f Zeilen behandeln. Nach f Zeilen kann sichergestellt sein, dass die Cache-Register B[j] wieder die gleiche logische Reihenfolge aufweisen.
  • 5 zeigt ein Diagramm 500, das ein Beispiel für eine Schleifen-Implementierung mit n=16 und f=4 darstellt.
  • Wie zu sehen ist, enthält es die Blöcke 501 vom Typ 1, die Blöcke 502 vom Typ 2 und die Blöcke 503 vom Typ 3, ähnlich dem Beispiel von 3, jedoch in größerer Anzahl.
  • Freimachen lokaler Register
  • Drei Zeigerregister sind notwendig um die Arrays A[], B[], C[] im Speicher 103 zu adressieren (typischerweise ihre Startadressen). Durch die Annahme, dass die Operanden-Arrays in Beziehung zu dem Stack-Zeiger gespeichert sind, können die entsprechenden Zeigerregister einem neuen Zweck zugeführt werden, um den Entwurfsparameter f zu erhöhen. Ein größerer Entwurfsparameter reduziert wiederum die Anzahl notwendiger Speicherzugriffe und Additionen. Für die erreichte Leistung kann es auch zulässig sein, A[] und B[] am Beginn der Multiplikation in den Stack und das gestackte C[] am Ende der mehrfach genauen Multiplikation zurück in seinen Zielspeicher 106 zu kopieren. Insbesondere in eingebetteten Prozessoren von ARM kann dieses Feinheit der Implementierung einen Unterschied ausmachen, um die Leistung zu verbessern.
  • Wiederverwendung von Operanden zwischen verarbeiteten Mengen von Spalten
  • Zur Vereinfachung der Implementierung können die Blockspalten nur von oben nach unten oder von unten nach oben verarbeitet werden. Durch Verändern der Reihenfolge ist es jedoch möglich, die verbleibenden Operanden von einer Spalte zur nächsten wiederzuverwenden. Diese Form von Produktabtasten kann als „Zickzack“ bezeichnet sein.
  • Es wird darauf hingewiesen, dass sowohl das Hybridabtasten als auch das Parallel-Produktabtasten so gesehen werden können, dass sie global eine Variante des Produktabtastens ausführen. Der Unterschied zwischen den zwei Herangehensweisen für Abtasten ist lokal: das Hybridverfahren teilt die Multiplikation in diamantartige Formen auf (siehe das dritte Diagramm 203 von 2) und benötigt einen 2d+2 (Wort) großen Akkumulator. Das Parallel-Produktabtasten kann so gesehen werden, dass es viele Spalten parallel verarbeitet. Es reduziert dadurch den notwendigen Akkumulator auf f+2 Wörter.
  • Ähnlich zum Operanden-Zwischenspeichern verwendet das Parallel-Produktabtasten die Registerdatei 107 als Cache von Operanden von einer Iteration (Zeile) zur nächsten. Wie vorstehend erläutert können f-1 Wörter des Operanden B[] von Zeile zu Zeile wiederverwendet werden. Das Operanden-Zwischenspeichern (siehe viertes Diagramm 204 von 2) kann so gesehen werden, dass es global eine Herangehensweise ähnlich dem Operandenabtasten ausführt. Das Parallel-Produktabtasten kann so gesehen werden, dass es global eine dem Produktabtasten ähnliche Herangehensweise ausführt. Deshalb beseitigt es die zusätzliche Lade/Speicher-Operation, die von einer Zeile von Operanden zur nächsten erforderlich ist.
  • Tabelle 1 gibt einen Vergleich der Komplexität für die unterschiedlichen Multiplikationsverfahren. In Bezug auf die notwendigen Speicherzugriffe ist es knapp zwischen dem Hybrid- und dem Operanden-Caching-Multiplikationsverfahren. Das Hybridverfahren benötigt ~2n2/d Speicherzugriffe unter Verwendung von ~3d Registern. Das Operanden-Zwischenspeicher-Verfahren benötigt mehr Speicherzugriffe (~3n2/e), benötigt jedoch weniger Register (~2e). Tabelle 1
    Ladeanweisungen Speicheranweisungen Speicherzugriffe benötigte Register (#regs) Speicherzugriffe pro Register
    Operandenabtasten 2n2+n n2+n 3n2+2n
    Produktabtasten 2n2 2n 2n2+2n
    Hybrid 2[n2/d] 2n 2[n2/d] + 2n 3d+2 ~6n2/#regs
    Operanden-Zwischenspeicher n 2n2/e n2/e+n 3n2/e+n 2e+3 ~6n2/#regs
    Parallel-Produktabtasten 2n(n-I)/f+2n 2n 2n2/f+4n-2n/f 2f+2 ~4n2/#regs
  • Das Verfahren mit Parallel-Produktabtasten kann so gesehen werden, dass es die Vorteile sowohl der Hybrid- als auch der Operanden-Zwischenspeicher-Multiplikation vereinigt. Es benötigt nur 2n2/f Speicherzugriffe und benötigt nur ~2f lokale Register. Das ist sogar noch offensichtlicher, wenn die Anzahl von Speicherzugriffen pro verwendeten Register verglichen wird. Während das Hybrid und Operanden-Zwischenspeichern ~6n2/#regs Speicherzugriffe benötigen, erfordert das Parallel-Produktabtasten nur ~4n2/#regs Register (wobei #regs die Anzahl verfügbarer Register in der Registermenge ist).
  • Obwohl die Speicheroperationen normalerweise mit großen Leistungseinbußen einhergehen, kann auch die Anzahl notwendiger Additionen einen Unterschied ausmachen. Beispielsweise kann in Baugruppenimplementierungen, die das Hybridverfahren ausführen, ein Schwerpunkt auf dem Reduzieren der Anzahl von Additionen liegen, um die Multiplikationsleistung zu verbessern.
  • Sowohl das Produktabtasten als auch das Operanden-Zwischenspeichern erfordern ungefähr 3n2 Additionen (drei Additionen pro Multiplizieren-Akkumulieren). Hier besitzen das Hybrid und das Parallel-Produktabtasten einen Vorteil. Je größer die Akkumulatoren sind (2*d+2 bei Hybrid, f+2 bei Parallel-Produktabtasten), desto näher ist die Leistung an dem theoretischen Minimum von 2n2 Additionen. Das Parallel-Produktabtasten erfordert (2+2/f)n2 Additionen.
  • Das Parallel-Produktabtasten kann sowohl in Software als auch in Hardware angewandt werden. Parallel-Produktabtasten in Software ermöglicht eine effiziente Verwendung der verfügbaren Registermenge 107 und mit einer geringen Anzahl notwendiger Lade-, Speicher- und Additionsoperationen. Gemäß einer Ausführungsform ist Parallel-Produktabtasten auf einer RISC-CPU („Reduced Instruction Set Computer Central Processing Unit“) implementiert.
  • In Hardware kann Parallel-Produktabtasten angewandt werden, um die Anzahl notwendiger Ladeoperationen durch Hinzufügen einer begrenzten Menge lokaler Register zu minimieren.
  • Zusammengefasst ist gemäß verschiedenen Ausführungsformen eine Kryptographieverarbeitungsvorrichtung wie in 6 dargestellt bereitgestellt.
  • 6 zeigt eine Kryptographieverarbeitungsvorrichtung 600 gemäß einer Ausführungsform.
  • Die Kryptographieverarbeitungsvorrichtung 600 enthält einen Speicher 601, der konfiguriert ist, einen ersten Operanden und einen zweiten Operanden, die durch Daten repräsentiert sind, die kryptographisch verarbeitet werden sollen, zu speichern, wobei der erste Operand und der zweite Operand jeweils einem indexierten Array von Datenwörtern entsprechen.
  • Ferner enthält die Kryptographieverarbeitungsvorrichtung 600 einen Kryptographieprozessor 602, der konfiguriert ist, zum kryptographischen Verarbeiten der Daten das Produkt des ersten Operanden mit dem zweiten Operand durch Akkumulieren der Ergebnisse partieller Multiplikationen zu bestimmen, wobei jede partielle Multiplikation die Multiplikation eines Datenworts des ersten Operanden mit einem Datenwort des zweiten Operand enthält.
  • Der Kryptographieprozessor 602 ist konfiguriert, die partiellen Multiplikationen in aufeinanderfolgenden Blöcken partieller Multiplikationen auszuführen, wobei jeder Block einem Ergebnisindexbereich und einem ersten Operandenindexbereich (der z. B. mehrere erste Operandenindizes enthält und beispielsweise einem Wertebereich des Index j des Operanden B in dem Beispiel von 3 entspricht) zugeordnet ist und jeder Block alle partiellen Multiplikationen zwischen Datenwörtern des ersten Operanden innerhalb des ersten Operandenindexbereichs mit Datenwörtern des zweiten Operanden enthält, so dass die Summe der Indizes des Datenworts des ersten Operanden und des Datenworts des zweiten Operanden innerhalb des Ergebnisindexbereichs ist.
  • Gemäß verschiedenen Ausführungsformen gruppiert, mit anderen Worten, der Kryptographieprozessor partielle Multiplikationen (d. h. Kombinationen eines Datenworts des ersten Operanden mit einem Datenwort des zweiten Operanden) in Gruppe (oder Blöcke), so dass, falls die Ziffern des ersten Operanden fortlaufend durch Indizes nummeriert sind und die Ziffern des zweiten Operanden fortlaufend durch Indizes nummeriert sind, die Gruppe Kombinationen von Ziffern des ersten Operanden mit Ziffern des zweiten Operanden enthält, so dass die Summe der Indizes der Ziffer des ersten Operanden und der Ziffer des zweiten Operanden innerhalb eines vorbestimmten ersten Bereichs (der Größe f in den vorstehend beschriebenen Beispielen) ist und die Indizes der Ziffern des ersten Operanden innerhalb eines vorbestimmten zweiten Bereichs (Höhe der Blöcke in den vorstehenden beschriebenen Beispielen, z. B. der Bereich des Index j von B[j] für einen Block in dem Beispiel von 3) sind.
  • Der Ergebnisindexbereich (oder erste Bereich) und der erste Operandenindexbereich (oder zweite Bereich) sind größer als 1. Beispielsweise ist der Ergebnisindexbereich 2 oder 4 wie in den vorstehenden Beispielen (oder eine andere Ganzzahl wie 5, 8 usw.). Der erste Operandenindexbereich hängt von dem Ort des Blocks in der zweidimensionalen Repräsentation ab und kann maximal so sein, dass der Block noch in das Raster der partiellen Multiplikationen, das durch die zweidimensionale Repräsentation dargestellt ist, passt.
  • Anschaulich sind, wenn eine zweidimensionale Repräsentation der partiellen Multiplikationen wie in den vorstehend beschriebenen Figuren (z. B. 3) dargestellt, berücksichtigt wird, die Gruppen Abschnitte von Blockspalten, die von einer ersten Zeile zu einer zweiten Zeile reichen. Die Breite der Blockspalten entspricht dem Ergebnisindexbereich, und die Höhe einer Gruppe entspricht dem ersten Operandenindexbereich.
  • Die Blöcke können insbesondere „Parallelogramm“-Blöcke wie z. B. die Blöcke 1a und 1b enthalten, d. h. Blöcke, für die die Anzahl von Datenwörtern des zweiten Operanden multipliziert mit jedem Datenwort des ersten Operanden konstant ist. Für einen solchen Block verarbeitet der Kryptographieprozessor den Block durch Vorangehen über die Datenwörter des ersten Operanden, wobei von Datenwort zu Datenwort des ersten Operanden alle Datenwörter außer einem des zweiten Operanden beibehalten werden und ein zusätzliches Datenwort des zweiten Operanden geladen wird (d. h. ein Datenwort ersetzt wird). Es wird darauf hingewiesen, dass außerdem von Block zu Block Operanden in Registern gehalten werden können.
  • Die Höhe der Parallelogrammblöcke (erster Operandenindexbereich) kann basierend auf dem vorbestimmten Ergebnisindexbereich maximal sein. Das bedeutet, dass dann, wenn die Blockbreite f gegeben ist, die Höhe des Blocks so groß wie möglich sein kann, so dass der resultierende Block immer noch eine Parallelogrammform aufweist.
  • Es wird darauf hingewiesen, dass die Datenwörter der Operanden und das Ergebnis als Ziffern gesehen werden können. Die Datenwörter können beispielsweise 16 Bit, 32 Bit oder 64 Bit enthalten, es sind jedoch auch andere Werte möglich. Die Operanden können Ganzzahlen sein, beispielsweise von einer Größe von 256 Bits bis 4096 Bits.
  • Die Kryptographieverarbeitungsvorrichtung oder wenigstens der Kryptographieprozessor kann ein sicheres Element sein, kann z. B. einem Hardware-Sicherheitsmodul (HSM) entsprechen oder ein Teil davon sein.
  • Die Kryptographieverarbeitungsvorrichtung kann wenigstens einen Teil der Daten, die kryptographisch verarbeitet werden sollen, über eine Kommunikationsnetzverbindung empfangen, die eine drahtgebundene oder drahtlose Kommunikationsverbindung enthält, z.B. eine Funkkommunikationsnetzverbindung wie z. B. eine RFID-Verbindung.
  • Die Kryptographieverarbeitungsvorrichtung kann beispielsweise der Datenverarbeitungsvorrichtung 100 von 1 entsprechen, die konfiguriert ist, (mehrfach genaue) Multiplikation mit Parallel-Produktabtasten auszuführen.
  • Gemäß verschiedenen Ausführungsformen führt eine Vorrichtung ein Verfahren aus wie in 7 dargestellt.
  • 7 zeigt ein Ablaufdiagramm 700, das ein Verfahren zum kryptographischen Verarbeiten von Daten gemäß einer Ausführungsform darstellt.
  • In 701 speichert die Vorrichtung einen ersten Operanden und einen zweiten Operanden, die durch Daten repräsentiert sind, um kryptographisch verarbeitet zu werden, wobei der erste Operand und der zweite Operand jeweils einem indexierten Array von Datenwörtern entsprechen.
  • In 702 führt die Vorrichtung partielle Multiplikationen, wobei jede partielle Multiplikation die Multiplikation eines Datenworts des ersten Operanden mit einem Datenwort des zweiten Operanden entspricht, in aufeinanderfolgenden Blöcken partieller Multiplikationen aus, wobei jeder Block einem Ergebnisindexbereich und einem ersten Operandenindexbereich zugeordnet ist und jeder Block alle partiellen Multiplikationen zwischen Datenwörtern des ersten Operanden innerhalb des ersten Operandenindexbereichs mit Datenwörtern des zweiten Operanden enthält, so dass die Summe der Indizes des Datenworts des ersten Operanden und des Datenworts des zweiten Operanden innerhalb des Ergebnisindexbereichs ist.
  • In 703 bestimmt die Vorrichtung das Produkt des ersten Operanden mit dem zweiten Operanden durch Akkumulieren der Ergebnissee der partiellen Multiplikationen.
  • Verschiedene Beispiele sind im Folgenden beschrieben:
    • Beispiel 1 ist eine Kryptographieverarbeitungsvorrichtung, wie sie in 6 dargestellt ist.
    • Beispiel 2 ist die Kryptographieverarbeitungsvorrichtung nach Beispiel 1, wobei der Kryptographieprozessor konfiguriert ist, die partiellen Multiplikationen, die in dem Block enthalten sind, gemäß einer Sequenz der Datenwörter des ersten Operanden auszuführen.
    • Beispiel 3 ist die Kryptographieverarbeitungsvorrichtung nach Beispiel 2, wobei das Ausführen der partiellen Multiplikationen gemäß der Sequenz von Datenwörtern des ersten Operanden das Ausführen, beginnend ab einem ersten Datenwort der Sequenz der Datenwörter des ersten Operanden, aller partiellen Multiplikationen für ein aktuelles Datenwort des ersten Operanden, die in dem Block enthalten sind, und dann Weitergehen zu dem nächsten Datenwort der Sequenz der Datenwörter des ersten Operanden enthält.
    • Beispiel 4 ist die Kryptographieverarbeitungsvorrichtung nach Beispiel 3, wobei der Kryptographieprozessor konfiguriert ist, wenn er von einem aktuellen Datenwort der Sequenz von Datenwörtern des ersten Operanden zu einem nächsten Datenwort der Sequenz von Datenwörtern des ersten Operanden weiter geht, wenigstens alle Datenwörter außer einem des zweiten Operanden, die in Registern gespeichert sind, beizubehalten, um sie mit dem nächsten Datenwort der Sequenz von Datenwörtern des ersten Operanden zu multiplizieren.
    • Beispiel 5 ist die Kryptographieverarbeitungsvorrichtung nach Beispiel 3 oder 4, wobei der Kryptographieprozessor konfiguriert ist, wenn er von einem aktuellen Datenwort der Sequenz von Datenwörtern des ersten Operanden zu einem nächsten Datenwort der Sequenz von Datenwörtern des ersten Operanden weiter geht, abhängig von den partiellen Multiplikationen, die in dem Block enthalten sind, alle Datenwörter des zweiten Operanden, die in Registern gespeichert sind, beizubehalten, um sie mit dem nächsten Datenwort der Sequenz von Datenwörtern des ersten Operanden zu multiplizieren, alle Datenwörter außer einem des zweiten Operanden, die in Registern gespeichert sind, beizubehalten, um sie mit dem nächsten Datenwort der Sequenz von Datenwörtern des ersten Operanden zu multiplizieren, ein zusätzliches Datenwort des zweiten Operanden aus dem Speicher zu laden oder ein Datenwort des zweiten Operanden, das in Registern gespeichert ist, durch ein weiteres Datenwort des zweiten Operanden, das in dem Speicher gespeichert ist, auszutauschen.
    • Beispiel 6 ist die Kryptographieverarbeitungsvorrichtung nach einem der Beispiele 1 bis 5, wobei der Kryptographieprozessor konfiguriert ist, wenn er einen Block verarbeitet, aufeinanderfolgende Datenwörter des ersten Operanden in einem ersten Operandenregister zu speichern und für jedes Datenwort des ersten Operanden, das in dem ersten Operandenregister gespeichert ist, eine entsprechende Menge von Datenwörtern des zweiten Operanden in zweiten Operandenregistern zu speichern.
    • Beispiel 7 ist die Kryptographieverarbeitungsvorrichtung nach einem der Beispiele 1 bis 6, wobei die Daten Daten, die verschlüsselt oder entschlüsselt werden sollen, einen kryptographischen Schlüssel, Daten für einen Austausch des kryptographischen Schlüssels und/oder eine kryptographische Signatur enthalten.
    • Beispiel 8 ist die Kryptographieverarbeitungsvorrichtung nach einem der Beispiele 1 bis 7, wobei die Kryptographieverarbeitungsvorrichtung konfiguriert ist, den ersten Operanden und den zweiten Operanden aus den Daten, die kryptographisch verarbeitet werden sollen, abzuleiten.
    • Beispiel 9 ist die Kryptographieverarbeitungsvorrichtung nach einem der Beispiele 1 bis 8, die ferner einen Eingang enthält, der konfiguriert ist, wenigstens einen Teil der Daten, die kryptographisch verarbeitet werden sollen, zu empfangen.
    • Beispiel 10 ist die Kryptographieverarbeitungsvorrichtung nach Beispiel 9, wobei der Eingang konfiguriert ist, wenigstens einen Teil der Daten über eine Kommunikationsnetzverbindung zu empfangen.
    • Beispiel 11 ist die Kryptographieverarbeitungsvorrichtung nach einem der Beispiele 1 bis 10, wobei der Kryptographieprozessor konfiguriert ist, das Produkt in dem Speicher entsprechend einem indexierten Ergebnis-Array von Datenwörtern zu speichern.
    • Beispiel 12 ist die Kryptographieverarbeitungsvorrichtung nach einem der Beispiele 1 bis 11, wobei der Kryptographieprozessor konfiguriert ist, für einen Index des Ergebnis-Arrays die partiellen Multiplikationen eines Datenworts des ersten Operanden, das einen ersten Index aufweist, mit einem Datenwort des zweiten Operanden, das einen zweiten Index aufweist, zu akkumulieren, wobei die Summe aus dem ersten Index und dem zweiten Index der Index des Ergebnis-Arrays ist.
    • Beispiel 13 ist die Kryptographieverarbeitungsvorrichtung nach einem der Beispiele 1 bis 12, wobei die partiellen Multiplikationen alle Kombinationen von Datenwörtern des ersten Operanden mit Datenwörtern des zweiten Operanden enthalten.
    • Beispiel 14 ist ein Verfahren zum kryptographischen Verarbeiten von Daten wie in 7 dargestellt.
    • Beispiel 15 ist das Verfahren nach Beispiel 14, das Ausführen der partiellen Multiplikationen, die in dem Block enthalten sind, gemäß einer Sequenz der Datenwörter des ersten Operand enthält.
    • Beispiel 16 ist das Verfahren nach Beispiel 15, wobei das Ausführen der partiellen Multiplikationen gemäß der Sequenz der Datenwörter des ersten Operand das Ausführen, beginnend ab einem ersten Datenwort der Sequenz der Datenwörter des ersten Operanden, aller partiellen Multiplikationen für ein aktuelles Datenwort des ersten Operanden, die in dem Block enthalten sind, und dann Weitergehen zu dem nächsten Datenwort der Sequenz der Datenwörter des ersten Operanden enthält.
    • Beispiel 17 ist das Verfahren nach Beispiel 16, das bei dem Weitergehen von einem aktuellen Datenwort der Sequenz von Datenwörtern des ersten Operanden zu einem nächsten Datenwort der Sequenz von Datenwörtern des ersten Operanden Beibehalten wenigstens aller Datenwörter außer einem des zweiten Operanden, die in Registern gespeichert sind, um sie mit dem nächsten Datenwort der Sequenz von Datenwörtern des ersten Operanden zu multiplizieren, enthält.
    • Beispiel 18 ist das Verfahren nach Beispiel 16 oder 17, das bei dem Weitergehen von einem aktuellen Datenwort der Sequenz von Datenwörtern des ersten Operanden zu einem nächsten Datenwort der Sequenz von Datenwörtern des ersten Operanden, abhängig von den partiellen Multiplikationen, die in dem Block enthalten sind, Beibehalten aller Datenwörter des zweiten Operanden, die in Registern gespeichert sind, um sie mit dem nächsten Datenwort der Sequenz von Datenwörtern des ersten Operanden zu multiplizieren, Beibehalten aller Datenwörter außer einem des zweiten Operanden, die in Registern gespeichert sind, um sie mit dem nächsten Datenwort der Sequenz von Datenwörtern des ersten Operanden zu multiplizieren, Laden eines zusätzlichen Datenworts des zweiten Operanden aus dem Speicher oder Austauschen eines Datenworts des zweiten Operanden, das in Registern gespeichert ist, durch ein weiteres Datenwort des zweiten Operanden, das in dem Speicher gespeichert ist, enthält.
    • Beispiel 19 ist das Verfahren nach einem der Beispiele 14 bis 18, das beim Verarbeiten eines Blocks Speichern aufeinanderfolgender Datenwörter des ersten Operanden in einem ersten Operandenregister und Speichern, für jedes Datenwort des ersten Operanden, das in dem ersten Operandenregister gespeichert ist, einer entsprechenden Menge von Datenwörtern des zweiten Operanden in zweiten Operandenregistern enthält.
    • Beispiel 20 ist das Verfahren nach einem der Beispiele 14 bis 19, wobei die Daten Daten, die verschlüsselt oder entschlüsselt werden sollen, einen kryptographischen Schlüssel, Daten für einen Austausch des kryptographischen Schlüssels und/oder eine kryptographische Signatur enthalten.
    • Beispiel 21 ist das Verfahren nach einem der Beispiele 14 bis 20, das Ableiten des ersten Operanden und des zweiten Operanden aus den Daten, die kryptographisch verarbeitet werden sollen, enthält.
    • Beispiel 22 ist das Verfahren nach einem der Beispiele 14 bis 21, das ferner das Empfangen wenigstens eines Teils der Daten, die kryptographisch verarbeitet werden sollen, enthält.
    • Beispiel 23 ist das Verfahren nach Beispiel 22, das Empfangen wenigstens eines Teils der Daten über eine Kommunikationsnetzverbindung enthält.
    • Beispiel 24 ist das Verfahren nach einem der Beispiele 14 bis 23, das Speichern des Produkts in dem Speicher entsprechend einem indexierten Ergebnis-Array von Datenwörtern enthält.
    • Beispiel 25 ist das Verfahren nach einem der Beispiele 14 bis 24, das für einen Index des Ergebnis-Arrays Akkumulieren der partiellen Multiplikationen eines Datenworts des ersten Operanden, das einen ersten Index aufweist, mit einem Datenwort des zweiten Operanden, das einen zweiten Index aufweist, enthält, wobei die Summe aus dem ersten Index und dem zweiten Index der Index des Ergebnis-Arrays ist.
    • Beispiel 26 ist das Verfahren nach einem der Beispiele 14 bis 25, wobei die partiellen Multiplikationen alle Kombinationen von Datenwörtern des ersten Operanden mit Datenwörtern des zweiten Operanden enthalten.
  • Gemäß einem weiteren Beispiel ist eine Kryptographieverarbeitungsvorrichtung bereitgestellt, die einen Eingang, der konfiguriert ist, Daten, die kryptographisch verarbeitet werden sollen, zu empfangen, einen Speicher, der konfiguriert ist, einen ersten Operanden und einen zweiten Operanden, die (wenigstens teilweise) durch Daten repräsentiert sind, zu speichern, enthält, wobei der erste Operand und der zweite Operand jeweils mehrere Ziffern enthalten (wobei jede Ziffer durch ein Datenwort gegeben ist). Die Kryptographieverarbeitungsvorrichtung enthält ferner einen Kryptographieprozessor, der konfiguriert ist, den ersten Operanden mit dem zweiten Operanden zu multiplizieren, um ein Ergebnis zu erzeugen, durch Multiplizieren jeder Ziffer des ersten Operanden mit jeder Ziffer des zweiten Operanden und Akkumulieren der Ergebnisse in einer Reihenfolge aufeinanderfolgender Gruppen (oder Blöcke), wobei jede Gruppe einer Menge von Ziffern des Ergebnisses zugeordnet ist und Kombinationen aus Ziffern einer Teilmenge von Ziffern des ersten Operanden und für jede Ziffer der Teilmenge von Ziffern des ersten Operanden diejenigen Ziffern des zweiten Operanden, die dann, wenn sie mit der Ziffer der Teilmenge von Ziffern des ersten Operanden kombiniert werden, einen Beitrag zu einer Ziffer aus der Menge von Ziffern des Ergebnisses ergeben (wobei der Beitrag einen „direkten Beitrag“ bedeutet, d. h. keinen Beitrag durch einen Übertrag), enthält.
  • Die Kryptographieverarbeitungsvorrichtung nach einem der vorstehend beschriebenen Beispielen kann in Software (d. h. mit Hilfe eines Prozessors, der eine Software ausführt) oder in Hardware (d. h. durch eine fest verdrahtete Hardware-Schaltung, möglicherweise durch Firmware oder dergleichen gesteuert) implementiert sein.
  • Insbesondere kann die Kryptographieverarbeitungsvorrichtung durch eine oder mehrere Schaltungen implementiert sein, wobei „eine Schaltung“ als irgendeine Art einer Logik implementierenden Entität verstanden werden kann, die Hardware, Software, Firmware oder irgendeine Kombination daraus sein kann. Somit kann in einer Ausführungsform eine „Schaltung“ eine fest verdrahtete Logikschaltung oder eine programmierbare Logikschaltung sein, wie z. B. ein programmierbarer Prozessor, z. B. ein Mikroprozessor (z. B. ein Prozessor für „Complex Instruction Set Computer“ (CISC-Prozessor) oder ein Prozessor für „Reduced Instruction Set Computer“ (RISC-Prozessor)). Eine „Schaltung“ kann auch Software sein, die durch einen Prozessor implementiert oder ausgeführt wird, z. B. irgendeine Art eines Computerprogramms. Irgendeine andere Art der Implementierung der entsprechenden Funktionen, die hier beschrieben sind, kann ebenfalls als eine „Schaltung“ in Übereinstimmung mit einer alternativen Ausführungsform verstanden werden.
  • Obwohl spezifische Ausführungsformen hier dargestellt und beschrieben worden sind, ist durch normale Fachleute zu erkennen, dass die spezifischen gezeigten und beschriebenen Ausführungsformen durch eine Vielzahl alternativer und/oder äquivalenter Implementierungen ersetzt werden können, ohne von dem Schutzbereich der vorliegenden Erfindung abzuweichen. Diese Anmeldung ist dafür vorgesehen, alle Anpassungen oder Variationen der hier diskutierten spezifischen Ausführungsformen abzudecken. Deshalb ist vorgesehen, dass diese Erfindung nur durch die Ansprüche und ihre Äquivalente eingeschränkt ist.
  • Bezugszeichenliste
  • 101
    Chip
    102
    Prozessor
    103
    Speicher
    104-106
    Arrays
    107
    Registermenge
    108-110
    Register
    201-204
    Multiplikationsdiagramme
    300
    Multiplikationsdiagramm
    301
    Partielle Multiplikation
    302
    Zeile
    303
    Diagonale
    304
    Spalte
    400
    Multiplikationsdiagramm
    401
    Blockspalte
    500
    Multiplikationsdiagramm
    501-503
    Multiplikationsblöcke
    600
    Kryptographieverarbeitungsvorrichtung
    601
    Speicher
    602
    Kryptographieprozessor
    700
    Ablaufdiagramm
    701-702
    Prozessoperationen

Claims (14)

  1. Kryptographieverarbeitungsvorrichtung, die Folgendes umfasst: einen Speicher 601, der konfiguriert ist, einen ersten Operanden und einen zweiten Operanden, die durch Daten repräsentiert sind, die kryptographisch verarbeitet werden sollen, zu speichern, wobei der erste Operand und der zweite Operand jeweils einem indizierten Array von Datenwörtern entsprechen; und einen Kryptographieprozessor, der konfiguriert ist, zur kryptographischen Verarbeitung der Daten das Produkt des ersten Operanden mit dem zweiten Operanden durch Akkumulieren der Ergebnisse partieller Multiplikationen zu bestimmen, wobei jede partielle Multiplikation die Multiplikation eines Datenworts des ersten Operanden mit einem Datenwort des zweiten Operanden umfasst; wobei der Kryptographieprozessor konfiguriert ist, die partiellen Multiplikationen in aufeinanderfolgenden Blöcken partieller Multiplikationen auszuführen, wobei jeder Block einem Ergebnisindexbereich und einem ersten Operandenindexbereich zugeordnet ist und jeder Block alle partiellen Multiplikationen zwischen Datenwörtern des ersten Operanden innerhalb des ersten Operandenindexbereichs mit Datenwörtern des zweiten Operanden umfasst, so dass die Summe von Indizes des Datenworts des ersten Operanden und des Datenworts des zweiten Operanden innerhalb des Ergebnisindexbereichs ist.
  2. Kryptographieverarbeitungsvorrichtung nach Anspruch 1, wobei der Kryptographieprozessor konfiguriert ist, die partiellen Multiplikationen, die in dem Block enthalten sind, gemäß einer Sequenz der Datenwörter des ersten Operanden auszuführen.
  3. Kryptographieverarbeitungsvorrichtung nach Anspruch 2, wobei das Ausführen der partiellen Multiplikationen gemäß der Sequenz der Datenwörter des ersten Operand das Ausführen, beginnend ab einem ersten Datenwort der Sequenz der Datenwörter des ersten Operanden, aller partiellen Multiplikationen für ein aktuelles Datenwort des ersten Operanden, die in dem Block enthalten sind, und dann Weitergehen zu dem nächsten Datenwort der Sequenz der Datenwörter des ersten Operanden umfasst.
  4. Kryptographieverarbeitungsvorrichtung nach Anspruch 3, wobei der Kryptographieprozessor konfiguriert ist, wenn er von einem aktuellen Datenwort der Sequenz von Datenwörtern des ersten Operanden zu einem nächsten Datenwort der Sequenz von Datenwörtern des ersten Operanden weiter geht, wenigstens alle Datenwörter außer einem des zweiten Operanden, die in Registern gespeichert sind, beizubehalten, um sie mit dem nächsten Datenwort der Sequenz von Datenwörtern des ersten Operanden zu multiplizieren.
  5. Kryptographieverarbeitungsvorrichtung nach Anspruch 3 oder 4, wobei der Kryptographieprozessor konfiguriert ist, wenn er von einem aktuellen Datenwort der Sequenz von Datenwörtern des ersten Operanden zu einem nächsten Datenwort der Sequenz von Datenwörtern des ersten Operanden weiter geht, abhängig von den partiellen Multiplikationen, die in dem Block enthalten sind, alle Datenwörter des zweiten Operanden, die in Registern gespeichert sind, beizubehalten, um sie mit dem nächsten Datenwort der Sequenz von Datenwörtern des ersten Operanden zu multiplizieren, alle Datenwörter außer einem des zweiten Operanden, die in Registern gespeichert sind, beizubehalten, um sie mit dem nächsten Datenwort der Sequenz von Datenwörtern des ersten Operanden zu multiplizieren, ein zusätzliches Datenwort des zweiten Operanden aus dem Speicher zu laden oder ein Datenwort des zweiten Operanden, das in Registern gespeichert ist, durch ein weiteres Datenwort des zweiten Operanden, das in dem Speicher gespeichert ist, auszutauschen.
  6. Kryptographieverarbeitungsvorrichtung nach einem der Ansprüche 1 bis 5, wobei der Kryptographieprozessor konfiguriert ist, wenn er einen Block verarbeitet, aufeinanderfolgende Datenwörter des ersten Operanden in einem ersten Operandenregister zu speichern und für jedes Datenwort des ersten Operanden, das in dem ersten Operandenregister gespeichert ist, eine entsprechende Menge von Datenwörtern des zweiten Operanden in zweiten Operandenregistern zu speichern.
  7. Kryptographieverarbeitungsvorrichtung nach einem der Ansprüche 1 bis 6, wobei die Daten Daten, die verschlüsselt oder entschlüsselt werden sollen, einen kryptographischen Schlüssel, Daten für einen Austausch des kryptographischen Schlüssels und/oder eine kryptographische Signatur umfassen.
  8. Kryptographieverarbeitungsvorrichtung nach einem der Ansprüche 1 bis 7, wobei die Kryptographieverarbeitungsvorrichtung konfiguriert ist, den ersten Operanden und den zweiten Operanden aus den Daten, die kryptographisch verarbeitet werden sollen, abzuleiten.
  9. Kryptographieverarbeitungsvorrichtung nach einem der Ansprüche 1 bis 8, die ferner einen Eingang umfasst, der konfiguriert ist, wenigstens einen Teil der Daten, die kryptographisch verarbeitet werden sollen, zu empfangen.
  10. Kryptographieverarbeitungsvorrichtung nach Anspruch 9, wobei der Eingang konfiguriert ist, wenigstens einen Teil der Daten über eine Kommunikationsnetzverbindung zu empfangen.
  11. Kryptographieverarbeitungsvorrichtung nach einem der Ansprüche 1 bis 10, wobei der Kryptographieprozessor konfiguriert ist, das Produkt in dem Speicher entsprechend einem indexierten Ergebnis-Array von Datenwörtern zu speichern.
  12. Kryptographieverarbeitungsvorrichtung nach einem der Ansprüche 1 bis 11, wobei der Kryptographieprozessor konfiguriert ist, für einen Index des Ergebnis-Arrays die partiellen Multiplikationen eines Datenworts des ersten Operanden, das einen ersten Index aufweist, mit einem Datenwort des zweiten Operanden, das einen zweiten Index aufweist, zu akkumulieren, wobei die Summe aus dem ersten Index und dem zweiten Index der Index des Ergebnis-Arrays ist.
  13. Kryptographieverarbeitungsvorrichtung nach einem der Ansprüche 1 bis 12, wobei die partiellen Multiplikationen alle Kombinationen von Datenwörtern des ersten Operanden mit Datenwörtern des zweiten Operanden enthalten.
  14. Verfahren zum kryptographischen Verarbeiten von Daten, das Folgendes umfasst: Speichern eines ersten Operanden und eines zweiten Operanden, die durch Daten repräsentiert sind, um kryptographisch verarbeitet zu werden, wobei der erste Operand und der zweite Operand jeweils einem indexierten Array von Datenwörtern entsprechen; Ausführen partieller Multiplikationen, wobei jede partielle Multiplikation die Multiplikation eines Datenworts des ersten Operanden mit einem Datenwort des zweiten Operanden umfasst, in aufeinanderfolgenden Blöcken partieller Multiplikationen, wobei jeder Block einem Ergebnisindexbereich und einem ersten Operandenindexbereich zugeordnet ist und jeder Block alle partiellen Multiplikationen zwischen Datenwörtern des ersten Operanden innerhalb des ersten Operandenindexbereichs mit Datenwörtern des zweiten Operanden umfasst, so dass die Summe der Indizes des Datenworts des ersten Operanden und des Datenworts des zweiten Operanden innerhalb des Ergebnisindexbereichs ist, und Bestimmen des Produkts des ersten Operanden mit dem zweiten Operanden durch Akkumulieren der Ergebnisse der partiellen Multiplikationen.
DE102019116104.5A 2019-06-13 2019-06-13 Kryptographieverarbeitungsvorrichtung und -verfahren zum kryptographischen verarbeiten von daten Pending DE102019116104A1 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE102019116104.5A DE102019116104A1 (de) 2019-06-13 2019-06-13 Kryptographieverarbeitungsvorrichtung und -verfahren zum kryptographischen verarbeiten von daten
US16/867,954 US11403431B2 (en) 2019-06-13 2020-05-06 Cryptographic processing device and method for cryptographically processing data
CN202010500047.XA CN112084508A (zh) 2019-06-13 2020-06-04 用于对数据进行密码处理的密码处理设备和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102019116104.5A DE102019116104A1 (de) 2019-06-13 2019-06-13 Kryptographieverarbeitungsvorrichtung und -verfahren zum kryptographischen verarbeiten von daten

Publications (1)

Publication Number Publication Date
DE102019116104A1 true DE102019116104A1 (de) 2020-12-17

Family

ID=73547200

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019116104.5A Pending DE102019116104A1 (de) 2019-06-13 2019-06-13 Kryptographieverarbeitungsvorrichtung und -verfahren zum kryptographischen verarbeiten von daten

Country Status (3)

Country Link
US (1) US11403431B2 (de)
CN (1) CN112084508A (de)
DE (1) DE102019116104A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11456877B2 (en) * 2019-06-28 2022-09-27 Intel Corporation Unified accelerator for classical and post-quantum digital signature schemes in computing environments

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0576262B1 (de) * 1992-06-25 2000-08-23 Canon Kabushiki Kaisha Gerät zum Multiplizieren von Ganzzahlen mit vielen Ziffern
US5880985A (en) * 1996-10-18 1999-03-09 Intel Corporation Efficient combined array for 2n bit n bit multiplications
US8356064B1 (en) * 2006-11-07 2013-01-15 Marvell International Ltd. Discrete Fourier transform calculation method and apparatus
US8275822B2 (en) * 2007-01-10 2012-09-25 Analog Devices, Inc. Multi-format multiplier unit
DE102014222825A1 (de) * 2014-11-07 2016-05-12 Ihp Gmbh - Innovations For High Performance Microelectronics / Leibniz-Institut Für Innovative Mikroelektronik Vorrichtung und Verfahren zur Multiplikation zur Erschwerung von Seitenkanalangriffen
US10140090B2 (en) * 2016-09-28 2018-11-27 International Business Machines Corporation Computing and summing up multiple products in a single multiplier
KR102594656B1 (ko) * 2016-11-25 2023-10-26 삼성전자주식회사 보안 프로세서, 이를 포함하는 어플리케이션 프로세서 및 보안 프로세서의 동작 방법
US10409604B2 (en) * 2017-04-24 2019-09-10 Arm Limited Apparatus and method for performing multiply-and-accumulate-products operations

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
C. Kirchbach: „SSL-Beschleunigung mit modernen 3D-Grafikkarten: Zur Nutzung von modernen programmierbaren Grafikprozessoren für die Berechnung der aufwendigen kryptographischen Operationen des RSA-Algorithmus (Deutsch) Taschenbuch – 17. Juni 2008 *

Also Published As

Publication number Publication date
US11403431B2 (en) 2022-08-02
CN112084508A (zh) 2020-12-15
US20200394336A1 (en) 2020-12-17

Similar Documents

Publication Publication Date Title
DE102019109847A1 (de) Beschleunigung der matrixmultplikation dünnbesetzter matrizen unter verwendung einer spaltenfaltung und -verdichtung
DE69838390T2 (de) Verbessertes gerät und verfahren für modulare multiplikation und exponentation basierend auf montgomerymultiplikation
DE102019109845A1 (de) Vereinheitlichte Beschleunigung eines Blockgeheimcodes eines symmetrischen Schlüssels für AES-SMS4-Camellia
DE102018125817A1 (de) Systeme und Verfahren zum Laden eines Kachelregisterpaars
DE60215835T2 (de) Reduzierung von komponenten in einer montgomery multiplikations-recheneinheit
DE102019100009A1 (de) Vereinheitlichter Hardwarebeschleuniger für Verschlüsselungssysteme mit symmetrischen Schlüsseln
DE102020126212A1 (de) Vorrichtungen, Verfahren und Systeme für Anweisungen eines Matrixoperationsbeschleunigers
DE102018125805A1 (de) Systeme, verfahren, und vorrichtungen für skalarproduktoperationen
DE112013005236T5 (de) Verfahren und Vorrichtung für Integralbild-Berechnungsbefehle
DE102018006744A1 (de) Bitmatrixmultiplikation
DE102018124945A1 (de) Einrichtung und verfahren für komplexe multiplikation
DE112006000340T5 (de) Datenprozessor, der für eine effiziente digitale Signalverarbeitung ausgebildet ist, und Verfahren für den Prozessor
DE2949375A1 (de) Gleitkommaprozessor
DE112007001319T5 (de) Multiplizieren zweier Zahlen
EP2771782A1 (de) Effiziente primzahlprüfung
DE102018126036A1 (de) Systeme und verfahren zum setzen eines kachelregisterpaars auf null
DE102018125971A1 (de) Systeme und verfahren zum berechnen von skalaprodukten von halbbytes in operanden aus zwei kacheln
DE102018128626A1 (de) Systeme, Verfahren und Vorrichtungen für Matrixoperationen
DE102018006798A1 (de) Einrichtung und Verfahren zum Multiplizieren, Addieren/Subtrahieren und Akkumulieren von gepackten Datenelementen
DE102019116104A1 (de) Kryptographieverarbeitungsvorrichtung und -verfahren zum kryptographischen verarbeiten von daten
DE102018005976A1 (de) Systeme, vorrichtungen und verfahren zur multiplikation und akkumulation von vektorgepackten vorzeichenbehafteten werten
DE102018006710A1 (de) Einrichtung und Verfahren zur Durchführung von Multiplikationen mit Addition-Substraktion von reellen Komponenten
DE102018128949A1 (de) Einrichtung und verfahren zum nach-rechts-verschieben von gepackten quadrupelwörtern und extrahieren von gepackten doppelwörtern
DE112017003351T5 (de) Systeme, Vorrichtungen und Verfahren für ein kumulatives Produkt
DE102018006736A1 (de) Einrichtung und Verfahren zum Durchführen von Transformationen von gepackten komplexen Daten mit echten und imaginären Komponenten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication