DE102022201745A1 - Schnelle vorberechnung für montgomery- multiplikator - Google Patents

Schnelle vorberechnung für montgomery- multiplikator Download PDF

Info

Publication number
DE102022201745A1
DE102022201745A1 DE102022201745.5A DE102022201745A DE102022201745A1 DE 102022201745 A1 DE102022201745 A1 DE 102022201745A1 DE 102022201745 A DE102022201745 A DE 102022201745A DE 102022201745 A1 DE102022201745 A1 DE 102022201745A1
Authority
DE
Germany
Prior art keywords
bitwise
montgomery
sum
carry
precalculation
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
DE102022201745.5A
Other languages
English (en)
Inventor
Adir Zevulun
Uria Basher
Nir Shmuel
Ben Witulski
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.)
Mellanox Technologies Ltd
Original Assignee
Mellanox Technologies Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/180,999 external-priority patent/US20220269488A1/en
Priority claimed from US17/180,993 external-priority patent/US20220269487A1/en
Application filed by Mellanox Technologies Ltd filed Critical Mellanox Technologies Ltd
Publication of DE102022201745A1 publication Critical patent/DE102022201745A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/728Methods 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 using Montgomery reduction

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

Eine Montgomery-Multiplikationsvorrichtung (MMA) zum Multiplizieren von zwei Multiplikanden modulo einer vordefinierten Zahl, umfasst eine Vorberechnungsschaltung und eine Montgomery-Multiplikationsschaltung. Die Vorberechnungsschaltung ist so konfiguriert, dass sie einen Montgomery-Vorberechnungswert berechnet, indem sie eine Reihe von Iterationen durchführt. In einer gegebenen Iteration ist die Vorberechnungsschaltung so konfiguriert, dass sie einen oder mehrere Zwischenwerte modifiziert, indem sie bitweise Operationen an den in einer vorangegangenen Iteration berechneten Zwischenwerten durchführt. Die Montgomery-Multiplikationsschaltung ist so konfiguriert, dass sie die beiden Multiplikanden modulo der vordefinierten Zahl multipliziert, indem sie eine Vielzahl von Montgomery-Reduktionsoperationen unter Verwendung des von der Vorberechnungsschaltung berechneten Montgomery-Vorberechnungswertes durchführt.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
  • Diese Anmeldung bezieht sich auf die US-Patentanmeldung Nr. 17/180,993 mit dem Titel „Efficient Montgomery Multiplier“, die am 22. Februar 2021 eingereicht wurde und deren Offenbarung hier durch Bezugnahme aufgenommen ist.
  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich allgemein auf die Montgomery-Arithmetik und insbesondere auf die Berechnung von Montgomery-Vorberechnungswerten und die Implementierung von Montgomery-Multiplikatoren und zugehörigen Schaltungen.
  • HINTERGRUND DER ERFINDUNG
  • In der Kryptographie sind Operationen wie die Modulo-Multiplikation und die Potenzierung großer ganzer Zahlen weit verbreitet. Es wurden mehrere Methoden zur schnellen Implementierung solcher Multiplikationen und Potenzierungen vorgeschlagen. Eine solche weit verbreitete Methode wurde 1985 von Peter Lawrence Montgomery vorgeschlagen und wird beispielsweise von Kork et al. in „Analyzing and Comparing Montgomery Multiplication Algorithms“, IEEE Micro 16(3), Juni 1996, Seiten 26-33, beschrieben, in der die Autoren mehrere Montgomery-Multiplikationsalgorithmen erörtern und den Platz- und Zeitbedarf für die beschriebenen Methoden im Detail analysieren.
  • In „Modified Montgomery modular multiplication and RSA exponentiation techniques,“ IEE Proceedings on Computation Digital Techniques, Vol. 151, No. 6, November 2004, präsentieren Mclvor et al. eine modifizierte Montgomery-Multiplikation und zugehörige modulare Rivest-Shamir-Adleman (RSA) Potenzierungsalgorithmen und Schaltungsarchitekturen, die Carry-Save-Addierer (CSAs) verwenden, um große Wortlängenadditionen durchzuführen. Der vorgestellte Ansatz basiert auf einer Neuformulierung der Lösung für die modulare Multiplikation im Kontext der RSA-Exponentierung und stellt zwei algorithmische Varianten vor, von denen eine auf einem Fünf-zu-Zwei-CSA und die andere auf einem Vier-zu-Zwei-CSA plus Multiplexer basiert.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die Erfindung wird durch die Ansprüche definiert. Zur Veranschaulichung der Erfindung werden hier Aspekte und Ausführungsformen beschrieben, die in den Anwendungsbereich der Ansprüche fallen können oder auch nicht.
  • Eine hier beschriebene Ausführungsform der vorliegenden Erfindung stellt eine Montgomery-Multiplikationsvorrichtung (MMA) zum Multiplizieren zweier Multiplikanden modulo einer vordefinierten Zahl bereit. Die MMA umfasst eine Vorberechnungsschaltung und eine Montgomery-Multiplikationsschaltung. Die Vorberechnungsschaltung ist so konfiguriert, dass sie einen Montgomery-Vorberechnungswert berechnet, indem sie eine Reihe von Iterationen durchführt. In einer gegebenen Iteration ist die Vorberechnungsschaltung so konfiguriert, dass sie einen oder mehrere Zwischenwerte modifiziert, indem sie bitweise Operationen an den in einer vorangegangenen Iteration berechneten Zwischenwerten durchführt. Die Montgomery-Multiplikationsschaltung ist so konfiguriert, dass sie die beiden Multiplikanden modulo der vordefinierten Zahl multipliziert, indem sie eine Vielzahl von Montgomery-Reduktionsoperationen unter Verwendung des von der Vorberechnungsschaltung berechneten Montgomery-Vorberechnungswertes durchführt.
  • In einigen Ausführungsformen beträgt der Montgomery-Vorberechnungswert mindestens zwei hoch die doppelte Anzahl von Bits der Montgomery-Multiplikanden.
  • In einigen Ausführungsformen ist die Vorberechnungsschaltung so konfiguriert, dass sie in der gegebenen Iteration eine bitweise Summe und einen bitweisen Übertrag modifiziert, indem sie bitweise Summen- und bitweise Übertragsoperationen an (i) der in der vorangegangenen Iteration berechneten bitweisen Summe, (ii) dem Zweifachen des in der vorangegangenen Iteration berechneten bitweisen Übertrags und (iii) einer Modulo-Korrekturzahl durchführt. In einem Ausführungsbeispiel ist die Vorberechnungsschaltung so konfiguriert, dass sie den Montgomery-Vorberechnungswert auf der Grundlage der Summe der bitweisen Summe und des doppelten bitweisen Übertrags nach einer letzten Iteration der Reihe von Iterationen berechnet. In einer anderen Ausführungsform ist die Vorberechnungsschaltung so konfiguriert, dass sie die Modulo-Korrekturzahl auf der Grundlage der Summe der bitweisen Summe und des doppelten bitweisen Übertrags berechnet, die in einer letzten Iteration berechnet wurden.
  • In einer weiteren Ausführungsform ist die Vorberechnungsschaltung so konfiguriert, dass sie die Modulo-Korrekturzahl in der gegebenen Iteration auf der Grundlage einer Differenz zwischen der Summe der bitweisen Summe und des bitweisen Übertrags, die in der vorhergehenden Iteration berechnet wurden, und der vordefinierten Zahl berechnet. In einer weiteren Ausführungsform ist die Vorberechnungsschaltung so konfiguriert, dass sie die Modulo-Korrekturzahl in der gegebenen Iteration auf der Grundlage einer Teilmenge der höchstwertigen Bits der Summe des bitweisen Übertrags und der bitweisen Summe, die in der vorhergehenden Iteration berechnet wurden, und einer Teilmenge der höchstwertigen Bits der vordefinierten Zahl berechnet.
  • In einer offenbarten Ausführungsform ist die Vorberechnungsschaltung so konfiguriert, dass sie die Modulo-Korrekturzahl in der gegebenen Iteration auf der Grundlage einer Teilmenge von Bits der Summe des bitweisen Übertrags und der bitweisen Summe, die in der vorhergehenden Iteration berechnet wurden, und auf einer Teilmenge der Bits der vordefinierten Zahl berechnet. In einer Ausführungsform ist die Vorberechnungsschaltung so konfiguriert, dass sie die Modulo-Korrekturzahl auf die vordefinierte Zahl multipliziert mit -1, -2 oder 0 setzt. In einer Ausführungsform umfasst die Vorberechnungsschaltung einen Carry-Save-Addierer (CSA), der so konfiguriert ist, dass er in der gegebenen Iteration eine bitweise Summe und einen bitweisen Übertrag von (i) der doppelten bitweisen Summe, die in der vorhergehenden Iteration berechnet wurde, (ii) dem doppelten bitweisen Übertrag, der in der vorhergehenden Iteration berechnet wurde, und (iii) einer Modulo-Korrekturzahl, die auf die vordefinierte Zahl multipliziert mit -1, -2 oder 0 gesetzt wurde, berechnet.
  • In einigen Ausführungsformen enthält die Vorberechnungsschaltung einen Carry-Save-Addierer (CSA) mit drei Eingängen, der so konfiguriert ist, dass er in der gegebenen Iteration eine bitweise Summe und einen bitweisen Übertrag aus (i) der doppelten bitweisen Summe, die in der vorangegangenen Iteration berechnet wurde, (ii) dem doppelten bitweisen Übertrag, der in der vorangegangenen Iteration berechnet wurde, und (iii) einer Modulo-Korrekturzahl, die auf die vordefinierte Zahl, multipliziert mit -1, -2 oder 0, konfiguriert ist, berechnet. In anderen Ausführungsformen umfasst die Vorberechnungsschaltung einen Carry-Save-Addierer (CSA) mit vier Eingängen, der so konfiguriert ist, dass er in der gegebenen Iteration eine bitweise Summe und einen bitweisen Übertrag von (i) dem Zweifachen der in der vorangegangenen Iteration berechneten bitweisen Summe berechnet, (ii) dem Zweifachen des in der vorangegangenen Iteration berechneten bitweisen Übertrags, (iii) einer ersten Modulo-Korrekturzahl, die auf die vordefinierte Zahl, multipliziert mit -1 oder 0, gesetzt wird, und (iv) einer zweiten Modulo-Korrekturzahl, die auf die vordefinierte Zahl, multipliziert mit -2 oder 0, gesetzt wird.
  • In einigen Ausführungsformen sind die Vorberechnungsschaltung und die Montgomery-Multiplikationsschaltung in einer Netzwerkvorrichtung enthalten und so konfiguriert, dass sie eine kryptografische Operation der Netzwerkvorrichtung durchführen.
  • Zusätzlich wird gemäß einer Ausführungsform der vorliegenden Erfindung ein Verfahren zur Multiplikation zweier Multiplikanden mit einer vordefinierten Zahl bereitgestellt. Das Verfahren umfasst unter Verwendung einer Vorberechnungsschaltung die Berechnung eines Montgomery-Vorberechnungswerts durch Ausführen einer Reihe von Iterationen, wobei in einer gegebenen Iteration ein oder mehrere Zwischenwerte durch Ausführen bitweiser Operationen an den in einer vorhergehenden Iteration berechneten Zwischenwerten modifiziert werden. Unter Verwendung einer Montgomery-Multiplikationsschaltung werden die beiden Multiplikanden modulo der vordefinierten Zahl multipliziert, indem eine Vielzahl von Montgomery-Reduktionsoperationen unter Verwendung des von der Vorberechnungsschaltung berechneten Montgomery-Vorberechnungswertes durchgeführt wird.
  • In einigen Ausführungsformen umfasst der Montgomery-Vorberechnungswert mindestens zwei Potenzen der doppelten Anzahl von Bits der Montgomery-Multiplikanden.
  • In einigen Ausführungsformen umfasst die Berechnung des Montgomery-Vorberechnungswerts in der gegebenen Iteration das Modifizieren einer bitweisen Summe und eines bitweisen Übertrags durch Ausführen von bitweisen Summen- und bitweisen Übertragsoperationen an (i) der in der vorhergehenden Iteration berechneten bitweisen Summe, (ii) dem Zweifachen des in der vorhergehenden Iteration berechneten bitweisen Übertrags und (iii) einer Modulo-Korrekturzahl. In einer beispielhaften Ausführungsform umfasst die Berechnung des Montgomery-Vorberechnungswerts die Berechnung des Montgomery-Vorberechnungswerts auf der Grundlage der Summe der bitweisen Summe und des doppelten bitweisen Übertrags nach einer letzten Iteration der Iterationsreihe. In einer anderen Ausführungsform umfasst die Berechnung des Montgomery-Vorberechnungswerts die Berechnung der Modulo-Korrekturzahl auf der Grundlage der Summe der bitweisen Summe und des doppelten bitweisen Übertrags, die in einer letzten Iteration berechnet wurden.
  • In einer weiteren Ausführungsform umfasst die Berechnung des Montgomery-Vorberechnungswerts die Berechnung der Modulo-Korrekturzahl in der gegebenen Iteration auf der Grundlage einer Differenz zwischen der Summe der bitweisen Summe und des bitweisen Übertrags, die in der vorhergehenden Iteration berechnet wurden, und der vordefinierten Zahl. In einer weiteren Ausführungsform umfasst die Berechnung des Montgomery-Vorberechnungswerts die Berechnung der Modulo-Korrekturzahl in der gegebenen Iteration auf der Grundlage einer Teilmenge der höchstwertigen Bits der Summe des bitweisen Übertrags und der bitweisen Summe, die in der vorhergehenden Iteration berechnet wurden, und einer Teilmenge der höchstwertigen Bits der vordefinierten Zahl.
  • In einer offenbarten Ausführungsform umfasst die Berechnung des Montgomery-Vorberechnungswerts die Berechnung der Modulo-Korrekturzahl in der gegebenen Iteration auf der Grundlage einer Teilmenge von Bits der Summe des bitweisen Übertrags und der bitweisen Summe, die in der vorhergehenden Iteration berechnet wurden, und auf der Grundlage einer Teilmenge der Bits der vordefinierten Zahl. In einer Ausführungsform umfasst die Berechnung des Montgomery-Vorberechnungswertes das Setzen der Modulo-Korrekturzahl auf die vordefinierte Zahl multipliziert mit -1, -2 oder 0. In einer Ausführungsform umfasst die Vorberechnungsschaltung einen Carry-Save-Adder (CSA), und die Berechnung des Montgomery-Vorberechnungswerts umfasst in der gegebenen Iteration die Berechnung einer bitweisen Summe und eines bitweisen Übertrags von (i) der doppelten bitweisen Summe, die in der vorhergehenden Iteration berechnet wurde, (ii) dem doppelten bitweisen Übertrag, der in der vorhergehenden Iteration berechnet wurde, und (iii) einer Modulo-Korrekturzahl, die auf die vordefinierte Zahl multipliziert mit -1, -2 oder 0 gesetzt wurde.
  • In einigen Ausführungsformen umfasst die Vorberechnungsschaltung einen Carry-Save-Addierer (CSA) mit drei Eingängen, und wobei die Berechnung des Montgomery-Vorberechnungswerts in der gegebenen Iteration die Berechnung einer bitweisen Summe und eines bitweisen Übertrags aus (i) der doppelten bitweisen Summe, die in der vorhergehenden Iteration berechnet wurde, (ii) dem doppelten bitweisen Übertrag, der in der vorhergehenden Iteration berechnet wurde, und (iii) einer Modulo-Korrekturzahl, die auf die vordefinierte Zahl, multipliziert mit -1, -2 oder 0, eingestellt ist, umfasst. In anderen Ausführungsformen umfasst die Vorberechnungsschaltung einen Carry-Save-Addierer (CSA) mit vier Eingängen, und wobei die Berechnung des Montgomery-Vorberechnungswerts in der gegebenen Iteration die Berechnung einer bitweisen Summe und eines bitweisen Übertrags von (i) der doppelten bitweisen Summe, die in der vorhergehenden Iteration berechnet wurde, (ii) dem Zweifachen des in der vorangegangenen Iteration berechneten bitweisen Übertrags, (iii) einer ersten Modulo-Korrekturzahl, die auf die vordefinierte Zahl, multipliziert mit -1 oder 0, gesetzt wird, und (iv) einer zweiten Modulo-Korrekturzahl, die auf die vordefinierte Zahl, multipliziert mit -2 oder 0, gesetzt wird.
  • In einigen Ausführungsformen werden die Berechnung des Montgomery-Vorberechnungswerts und die Multiplikation der beiden Multiplikanden in einem Netzwerkgerät durchgeführt, um eine kryptografische Operation des Netzwerkgeräts durchzuführen.
  • Ferner wird gemäß einer Ausführungsform der vorliegenden Erfindung eine integrierte Montgomery-Berechnungsmaschine (IMCE) zum Multiplizieren zweier Multiplikanden mit einer vordefinierten Zahl bereitgestellt. Die IMCE umfasst eine Carry-Save-Addierer-Schaltung (CSA) und eine Steuerschaltung. Die CSA-Schaltung hat mehrere Eingänge und Ausgänge, darunter einen Summenausgang und einen Übertragsausgang. Die Steuerschaltung ist mit den Eingängen und den Ausgängen der CSA-Schaltung verbunden und so konfiguriert, dass sie die CSA-Schaltung in mindestens (i) einer ersten Einstellung, die einen Montgomery-Vorberechnungswert berechnet, und (ii) einer zweiten Einstellung, die eine Montgomery-Multiplikation der beiden Multiplikanden berechnet, betreibt.
  • In einigen Ausführungsformen ist die Steuerschaltung so konfiguriert, dass sie den Summenausgang und den Übertragsausgang der CSA-Schaltung logisch verschiebt und den verschobenen Summenausgang und den verschobenen Übertragsausgang mit den jeweiligen Eingängen der CSA-Schaltung koppelt. In einem Ausführungsbeispiel ist die Steuerschaltung so konfiguriert, dass sie den Summenausgang und den Übertragsausgang der CSA-Schaltung in der ersten Einstellung logisch nach links verschiebt und den Summenausgang und den Übertragsausgang der CSA-Schaltung in der zweiten Einstellung logisch nach rechts verschiebt.
  • In einer Ausführungsform ist die Steuerschaltung in der ersten Einstellung so konfiguriert, dass sie zwei der Eingänge der CSA-Schaltung auf einen konstanten Wert setzt, der von der vordefinierten Zahl abhängt. In einer anderen Ausführungsform ist der Steuerschaltkreis in der ersten Einstellung so konfiguriert, dass er einen Eingang des CSA-Schaltkreises auf die vordefinierte Zahl oder auf Null setzt, abhängig von den höchstwertigen Bits des Summenausgangs und des Übertragsausgangs des CSA-Schaltkreises und von den beiden Multiplikanden. In einer weiteren Ausführungsform ist die Steuerschaltung in der zweiten Einstellung so konfiguriert, dass sie einen Eingang der CSA-Schaltung auf Null oder auf einen der Multiplikanden setzt, abhängig von dem anderen der Multiplikanden. In einer offenbarten Ausführungsform ist die Steuerschaltung so konfiguriert, dass sie in der zweiten Einstellung einen Eingang der CSA-Schaltung auf Null oder auf die vordefinierte Zahl setzt, abhängig von den niederwertigsten Bits des Summenausgangs, des Übertragsausgangs und der beiden Multiplikanden.
  • In einigen Ausführungsformen ist die Steuerschaltung so konfiguriert, dass sie die CSA-Schaltung in einer dritten Einstellung betreibt, die eine Potenzierung einer vordefinierten Basis durch einen vordefinierten Exponenten, modulo der vordefinierten Zahl, berechnet. In einer Ausführungsform ist die Steuerschaltung so konfiguriert, dass sie die CSA-Schaltung in der dritten Einstellung betreibt, indem sie die erste Einstellung und die zweite Einstellung in einer Reihenfolge anwendet, die entsprechend dem Exponenten definiert ist.
  • In einigen Ausführungsformen sind die CSA und der Steuerschaltkreis in einem Netzwerkgerät enthalten und so konfiguriert, dass sie eine kryptografische Operation des Netzwerkgeräts durchführen.
  • Gemäß einer Ausführungsform der vorliegenden Erfindung wird auch ein Verfahren zum Multiplizieren zweier Multiplikanden modulo einer vordefinierten Zahl bereitgestellt. Das Verfahren umfasst den Betrieb einer Carry-Save-Addierschaltung (CSA) mit mehreren Eingängen und mit Ausgängen, die einen Summenausgang und einen Übertragsausgang umfassen. Unter Verwendung einer Steuerschaltung, die mit den Eingängen und den Ausgängen der CSA-Schaltung gekoppelt ist, wird die CSA-Schaltung so gesteuert, dass sie in mindestens (i) einer ersten Einstellung arbeitet, die einen Montgomery-Vorberechnungswert berechnet, und (ii) einer zweiten Einstellung arbeitet, die eine Montgomery-Multiplikation der beiden Multiplikanden berechnet.
  • Jedes Merkmal eines Aspekts oder einer Ausführungsform kann auf andere Aspekte oder Ausführungsformen angewandt werden, und zwar in jeder geeigneten Kombination. Insbesondere kann jedes Merkmal eines Verfahrensaspekts oder einer Ausführungsform auf einen Geräteaspekt oder eine Ausführungsform angewandt werden und umgekehrt.
  • Die vorliegende Erfindung wird aus der folgenden detaillierten Beschreibung der Ausführungsformen in Verbindung mit den Figuren, in denen sie dargestellt ist, besser verständlich:
  • Figurenliste
    • 1 ist ein Blockdiagramm, das schematisch einen Montgomery-Multiplikationsapparat (MMA) gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
    • 2 ist ein Blockdiagramm, das schematisch eine Montgomery-Vorberechnungsschaltung (MPC) in der MMA von 1 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
    • 3 ist ein Flussdiagramm, das schematisch ein Verfahren zur Montgomery-Vorberechnung gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht;
    • 4 ist ein Blockdiagramm, das schematisch einen MMA mit einer in die Montgomery-Berechnungsmaschine integrierten Vorberechnungsschaltung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
    • 5 ist ein Blockdiagramm, das schematisch eine integrierte Montgomery-Berechnungsmaschine (IMCE) gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
    • 6 ist ein Flussdiagramm, das schematisch ein Verfahren zur Montgomery 4096-Bit x 4096-Bit-Multiplikation gemäß einer Ausführungsform der vorliegenden Erfindung darstellt; und
    • 7 ist ein Flussdiagramm, das schematisch ein Verfahren zur Modulo-Potenzierung gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht.
  • DETAILLIERTE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • ÜBERSICHT
  • Public-Key-Kryptosysteme können verwendet werden, um die Vertraulichkeit von Daten, die Autorenauthentifizierung und die Datenintegrität zu gewährleisten. Einige Public-Key-Kryptosysteme (z.B. Rivest-Shamir-Adleman (RSA)) beruhen auf der modularen Potenzierung großer Zahlen, die wiederholte modulare Multiplikationen erfordert. Um die Sicherheit zu erhöhen, sind die Operanden in der Regel weit über 1000 Bit lang, was die Rechenlast der Potenzierungsoperation erhöht.
  • Ein typischer Algorithmus, der zur Verringerung des Rechenaufwands bei modularen Multiplikationen verwendet wird, ist der Montgomery-Algorithmus (beschrieben z.B. in dem oben genannten Artikel von Kork et al.). Der Montgomery-Multiplikationsalgorithmus ersetzt die Probedivision durch den Modulus durch eine Reihe von Additionen und Divisionen durch eine Zweierpotenz und ist heute der am häufigsten in RSA-Kryptosystemen verwendete Algorithmus.
  • Der Montgomery-Algorithmus kann in Hardware oder Software implementiert werden. Typischerweise basieren Hardware-Implementierungen auf sich wiederholenden Operationen, denen eine Vorberechnung eines oder mehrerer Werte vorausgeht und auf die eine Carry-Propagate-Operation und eine abschließende Modulo-Korrektur folgen kann. Der vorberechnete Wert kann z. B. (22n ) %R sein, wobei n die Anzahl der Bits der Montgomery-Operanden ist, „%“ eine Modulo-Operation bezeichnet und R, der Divisor, eine vorgewählte Zahl ist (R < 2n ).
  • Die hier beschriebenen Ausführungsformen der vorliegenden Erfindung bieten effiziente Verfahren und Vorrichtungen für die Berechnung der Montgomery-Vorberechnungswerte. In einigen offenbarten Ausführungsformen ist eine Montgomery-Multiplikationsvorrichtung (MMA) so konfiguriert, dass sie zwei Multiplikanden modulo mit einer vordefinierten Zahl multipliziert. In einigen Ausführungsformen umfasst die MMA eine Vorberechnungsschaltung und eine Montgomery-Multiplikationsschaltung. Die Vorberechnungsschaltung ist so konfiguriert, dass sie einen Montgomery-Vorberechnungswert berechnet, indem sie eine Reihe von Iterationen durchführt. In einer gegebenen Iteration modifiziert die Vorberechnungsschaltung einen oder mehrere Zwischenwerte, indem sie bitweise Operationen an den in einer vorangegangenen Iteration berechneten Zwischenwerten durchführt. In einer Ausführungsform modifiziert die Vorberechnungsschaltung in einer gegebenen Iteration eine bitweise Summe und einen bitweisen Übertrag, indem sie bitweise Summen- und bitweise Übertragsoperationen an (i) der in der vorhergehenden Iteration berechneten bitweisen Summe, (ii) dem doppelten bitweisen Übertrag, der in der vorhergehenden Iteration berechnet wurde, und (iii) einer Modulo-Korrekturzahl durchführt. Die Montgomery-Multiplikationsschaltung ist so konfiguriert, dass sie die beiden Multiplikanden modulo des Divisors multipliziert, indem sie eine Vielzahl von Montgomery-Reduktionsoperationen unter Verwendung des von der Vorberechnungsschaltung berechneten Montgomery-Vorberechnungswertes durchführt.
  • In einigen Ausführungsformen werden zu den Operanden der Vorberechnung und/oder der Montgomery-Multiplikation zwei weitere Bits hinzugefügt, um einen abschließenden Modulo-Korrekturschritt zu vermeiden; so werden für 4096-Bit-Arithmetik 4098-Bit-Operanden verwendet. Durch das Hinzufügen von zwei Bits wird auch ein Überlauf von Zwischenwerten verhindert.
  • Andere Ausführungsformen gemäß der vorliegenden Erfindung, die hier vorgestellt werden, sehen eine integrierte Montgomery-Berechnungsmaschine (IMCE) vor, bei der die Vorberechnungsschaltung in die Montgomery-Multiplikationsschaltung eingebettet ist; in einer Ausführungsform werden dieselben Bit-weise-Summen- und Bitweise-Übertragungsschaltungen sowohl bei der Vorberechnung als auch bei der Montgomery-Multiplikation verwendet.
  • In einigen Ausführungsformen umfasst die IMCE einen CSA und einen Steuerschaltkreis. Der Steuerschaltkreis ist so konfiguriert, dass er den Betrieb des CSA in einer Vielzahl von Einstellungen steuert; in einer ersten Einstellung steuert der Steuerschaltkreis den CSA, um eine Montgomery-Vorberechnung durchzuführen; in einer zweiten Einstellung steuert der Steuerschaltkreis den CSA, um eine Montgomery-Multiplikation durchzuführen, und in einer dritten Einstellung steuert der Steuerschaltkreis den CSA, um eine Modulo-Potenzierung unter Verwendung einer Folge von Montgomery-Multiplikationen zu berechnen. In Ausführungsformen umfasst die Steuerschaltung eine erste Schaltung, die so konfiguriert ist, dass sie Rückschleifeingänge des CSA steuert, und eine zweite Schaltung, die den CSA (über die erste Schaltung) so konfigurieren kann, dass er eine Modulo-Potenzierung berechnet.
  • In den nachstehend beschriebenen Beispielen beträgt die Anzahl der Bits des Montgomery-Operanden 4098; die beschriebene Technik ist jedoch nicht auf 4098 Bits beschränkt; in alternativen Ausführungsformen kann jede andere geeignete Anzahl von Bits verwendet werden.
  • Die offenbarten MMAs und IMCEs können in eine Vielzahl von Host-Systemen eingebettet und in einer Vielzahl von Anwendungsfällen eingesetzt werden. Generell kann jedes System, das mit Montgomery-Multiplikation arbeitet, von den hier beschriebenen Techniken profitieren. Host-Systeme umfassen beispielsweise verschiedene Netzwerkgeräte wie Netzwerkadapter (z. B. Ethernet Network Interface Controllers (NICs), Infiniband Host Channel Adapters (HCAs), Data Processing Units (DPUs) oder „Smart-NICs“, netzwerkfähige Graphics Processing Units (GPUs)), Netzwerk-Switches und Router sowie Beschleuniger.
  • In einem beispielhaften Anwendungsfall wird ein offenbartes MMA und/oder IMCE in ein Netzwerkgerät eingebettet und in einem sicheren Boot-Prozess des Netzwerkgeräts verwendet, z.B. zur Authentifizierung von Signaturen. In einem anderen Anwendungsbeispiel wird ein offenbartes MMA und/oder IMCE in einen Netzwerkadapter eingebettet und zur Beschleunigung kryptografischer Operationen wie Public-Key-Operationen verwendet.
  • BESCHREIBUNG DES SYSTEMS
  • 1 ist ein Blockdiagramm, das schematisch einen Montgomery-Multiplikationsapparat (MMA) 100 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. MMA 100 berechnet das Produkt von Zahlenpaaren modulo einer großen Primzahl N und umfasst eine Montgomery-Berechnungsmaschine (MCE) 102, eine Montgomery Precompute Unit (MPC) 104 und einen Prozessor 106. Die MCE 102 wird hier auch als Montgomery-Multiplikationsschaltung bezeichnet. Je nach anwendbarem Host-System und Anwendungsfall kann der Prozessor 106 beispielsweise aus einer CPU, einer GPU, einem System-on-Chip (SoC), einem Controller, einem digitalen Signalprozessor (DSP) oder einem anderen geeigneten Prozessortyp bestehen oder darin eingebettet sein.
  • MCE 102 ist so konfiguriert, dass er die Multiplikationsargumente A, B und den Divisor N vom Prozessor 106 und einen Vorberechnungswert 2R %N vom MPC 104 erhält und das Produkt (A*B)%N an den Prozessor 106 ausgibt. MCE 102 kann ein Prozessor sein, der ein geeignetes Softwareprogramm ausführt, oder ein Hardware-Montgomery-Multiplikator (siehe z. B. „Montgomery Multiplier for Faster Cryptosystems“, von Thampi und Jose, Procedia Technology 25 (2016), Seiten 392-398). In einigen Ausführungsformen umfasst MCE 102 zusätzliche Schaltkreise, die auf der Montgomery-Multiplikation basierende Exponenten berechnen (siehe z.B. den oben zitierten Artikel von Mclvor et al.)
  • Der MPC 104 ist so konfiguriert, dass er N und -N vom Prozessor 106 empfängt. N und -N werden in der Regel in n+2 Bits dargestellt, wobei n die Anzahl der Bits ist, die bei der Montgomery-Multiplikation verwendet werden (-N kann durch die Darstellung im Zweierkomplement dargestellt werden: -N=~N+1 (N invers + 1)).
  • MPC 104 berechnet dann den Vorberechnungswert (22n)%N und sendet das Ergebnis an MCE 102. In einer Ausführungsform umfasst der MPC einen Carry-Save-Addierer (CSA) mit drei oder vier Eingängen und schließt die Berechnung in einer Anzahl von Zyklen ab, die nahe an n - der Anzahl der Bits - liegt.
  • Der Prozessor 106 ist so konfiguriert, dass er Operanden (Multiplikanden) an MCE 102 und MPC 104 sendet und das Multiplikationsergebnis von MCE 102 empfängt. In einigen Ausführungsformen wird der Prozessor 106 möglicherweise nicht benötigt, z. B. wenn MPC 104 einen Prozessor enthält.
  • Die Konfiguration der MMA 100 ist eine Beispielkonfiguration, die lediglich aus Gründen der konzeptionellen Klarheit dargestellt ist. Andere geeignete Konfigurationen können in alternativen Ausführungsformen der vorliegenden Erfindung verwendet werden. In einigen Ausführungsformen ist beispielsweise ein einzelner MPC so konfiguriert, dass er Werte für eine Vielzahl von MCEs vorberechnet. In einem anderen Beispiel ist der MPC 104 so konfiguriert, dass er -N durch Zweierkomplementierung von N berechnet; daher sendet der Prozessor 106 kein -N an den MPC 104.
  • In einigen Ausführungsformen besteht der Prozessor 106 und/oder der MPC 104 aus einem Mehrzweckprozessor, der mit Software programmiert ist, um die hier beschriebenen Funktionen auszuführen. Die Software kann in elektronischer Form auf den Prozessor heruntergeladen werden, z. B. über ein Netzwerk oder von einem Host, oder sie kann alternativ oder zusätzlich auf nicht-übertragbaren, greifbaren Medien wie einem magnetischen, optischen oder elektronischen Speicher bereitgestellt und/oder gespeichert werden.
  • 2 ist ein Blockdiagramm, das schematisch die Montgomery-Vorberechnungsschaltung (MPC) 104 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Der MPC umfasst einen Carry-Save-Adder (CSA) 200 mit vier Eingängen, der so konfiguriert ist, dass er vier Eingänge (mit In[0] bis In[3] bezeichnet) summiert. Der Wert von -N (N ist der Modulo-Divisor) wird in den MPC eingegeben (z. B. vom Prozessor 106, 1) und an einen R_0-Eingang eines UND-Gatters 202 und einen R_1-Eingang eines UND-Gates 204 angelegt. Die UND- Gates 202 und 204 sind so konfiguriert, dass sie den Eingang -N an die Eingänge in[0] bzw. in [ 1 ] der CSA übertragen, wenn sie aktiviert sind, und andernfalls einen Wert von 0 übertragen. (Die Freigabeeingänge der UND-Gates 202 und 204 werden als en_0 bzw. en 1 bezeichnet).
  • Es ist zu beachten, dass, wenn sowohl en_0 als auch en 1 ausgeschaltet sind (z. B. bei Logik-0), CSA 200 einen kombinierten Wert von 0 in den Eingängen in[0] und in[1] erhält; wenn eines von en_0, en 1 eingeschaltet ist, erhält CSA einen kombinierten Wert von -N, und wenn beide en_0, en_1 eingeschaltet sind, erhält CSA einen kombinierten Wert von -2N.
  • Zwei Register - ein R_C-Register 206 und ein R S-Register 208 - sind so konfiguriert, dass sie den Übertrags- bzw. den Summenausgang von CSA 200 speichern. Die in R_C 206 gespeicherten Daten können über einen Verschieber 210 an den in[3]-Eingang von CSA 200 zurückgeführt werden, während die in R_S 208 gespeicherten Daten über einen Verschieber 212 an den in[2]-Eingang geleitet werden können. Die Verschieber 210 und 212 sind so konfiguriert, dass sie mit zwei multiplizieren, indem sie die Daten um eine Position nach links verschieben (das ganz rechte Ausgangsbit wird auf Logik-0 gesetzt).
  • MPC 104 umfasst ferner eine Steuereinheit 214, die so konfiguriert ist, dass sie die Eingänge en_0 und en_1 der UND-Gates 202 und 204 steuert. Wie weiter unten (unter Bezugnahme auf 3) beschrieben wird, werden in Ausführungsformen nur einige der höherwertigen Bits (z. B. die fünf höchstwertigen Bits) von N und R SC in die Steuereinheit 214 eingegeben.
  • In einer Ausführungsform umfasst der von MPC 104 durchgeführte Vorberechnungsprozess eine Carry-Save-Phase, in der CSA 200 eine Summen- und Übertragdarstellung des Vorberechnungswertes erzeugt, und eine Carry-Propagate-Phase, in der die Summe und der Übertrag (die in R_S 208 bzw. R_C 206 gespeichert sind) addiert werden, um den Vorberechnungswert P = 22n %N zu erzeugen. Gemäß dem in 2 dargestellten Ausführungsbeispiel umfasst MC 104 einen Volladdierer 216, der so konfiguriert ist, dass er die in R_S 208 und R_C 206 gespeicherten Werte addiert, um den Vorberechnungswert P zu erzeugen. In einem Ausführungsbeispiel umfasst der Volladdierer 216 64 Bits und kann eine 4096-Bit-Addition in 64 Zyklen durchführen (wie nachstehend beschrieben wird, können in der CSA zwei weitere Bits benötigt werden, so dass der Volladdierer 216 65 Zyklen benötigt, um die 4098-Bit-Addition auszuführen).
  • Zusammenfassend lässt sich sagen, dass MPC 104 P = 22n %N in einer iterativen Carry-Save-Phase berechnet, gefolgt von einer iterativen Carry-Propagate-Phase. In der Carry-Save-Phase berechnet ein CSA mit 4 Eingängen iterativ P durch Carry-Save-Addition eines Wertes von 0, -N oder -2N und der linksverschobenen Carry- und Save-Ergebnisse der vorherigen Iteration. In der Carry-Propagate-Phase summiert ein Volladdierer iterativ den Übertragund die Summe der Carry-Save-Phase, um P zu erzeugen.
  • Wie zu erkennen ist, handelt es sich bei der Konfiguration des MPC 104 um eine Beispielkonfiguration, die lediglich aus Gründen der konzeptionellen Klarheit dargestellt ist. Andere geeignete Konfigurationen können in alternativen Ausführungsformen der vorliegenden Erfindung verwendet werden. So kann beispielsweise ein CSA mit drei statt vier Eingängen verwendet werden, wobei die UND-Gates 202, 204 durch einen Multiplexer ersetzt werden, der so konfiguriert ist, dass er 0, -N oder -2N an einen einzigen CSA-Eingang ausgibt, der in[0] und in[1] ersetzt. In einer Ausführungsform sind die Schieber 210 und/oder 212 möglicherweise nicht erforderlich; stattdessen können R_S und R_C mit in [2] und in [3] in einer verschobenen Weise verdrahtet werden (z. B. R_S[0] mit in[2] [1], R_S[1] mit in[2] [2] usw.).
  • SPEICHERN EINER LETZTEN SUBTRAKTIONSSTUFE
  • Nach dem ursprünglichen Montgomery-Papier und seiner frühen Umsetzung folgt auf eine Montgomery-Multiplikation ein letzter Schritt, in dem eine Modulo-Korrektur des Ergebnisses C vorgenommen wird: wenn  ( C > N )  C  =  C N .
    Figure DE102022201745A1_0001
  • Dieser Vorgang ist relativ teuer, da er eine vollständige Übertragsfortpflanzung erfordert. Außerdem kann ein Hacker, der versucht, den Schlüssel zu finden, durch externe Messung der Anzahl der Montgomery-Multiplikationszyklen ableiten, ob eine Modulo-Korrektur erforderlich war, was den Bereich der möglichen Schlüsselwerte einschränkt. In einem Artikel von Walter mit dem Titel „Montgomery exponentiation needs no final subtractions“, Electronics Letters, 35(21), 1999, zeigt der Autor jedoch, wie die abschließende Modulo-Korrektur vermieden werden kann, wenn die Anzahl der Bits in der Montgomery-Multiplikation um 2 erhöht wird. Die folgende Tabelle beschreibt die Unterschiede zwischen dem ursprünglichen Montgomery-Algorithmus und Walters Vorschlag:
    Parameter Wert Breite Beschreibung
    Montgomery Walter
    n 4,096 Restbreite = 4.096
    A [n-1:0]
    B [n-1:0]
    N [n-1:0] Reste
    R R = 2 n+2 [n:0] [n+2:0] Grenze
    R' R' = (R 2)mod(N) [n-1:0] Vorberechnung
    Schleife n n+2
  • So berechnet MPC 104 in einigen Ausführungsformen einen Vorberechnungswert, bei dem der Exponent größer als 2n ist, z.B. berechnet er R = 22(n+2).
  • 3 ist ein Flussdiagramm 300, das schematisch ein Verfahren zur Montgomery-Vorberechnung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Der Ablauf wird vom MPC 104 (1) ausgeführt. Das Flussdiagramm beginnt mit einem Initialize-Carry-Save-Addition-Schritt 302, in dem die MPC Anfangswerte für Parameter setzt, die in Registern gespeichert sind, einschließlich R_0, R_1, R_S und R_C (alle oben unter Bezugnahme auf 2 beschrieben), und einen Zähler, der zum Zählen von Iterationen konfiguriert ist. Schritt 302 umfasst: Initialisierung von R0 und R1 auf eine n+3-Bit-Darstellung von -N; Initialisierung von R_S auf eine n+1-Bit-Darstellung von 2n , Initialisierung von R_C auf eine N+1-Bit-Darstellung von 0, und Initialisierung des Zählers auf 4096+4.
  • Der MPC tritt dann in einen Carry-Save-Additionsschritt 304 ein, in dem der MPC: i) en_0 auf 1 setzt, wenn die durch die fünf höchstwertigen Bits von S_N dargestellte Zahl größer ist als die durch die fünf höchstwertigen Bits von N dargestellte Zahl (en 0=1 gibt - N an in[0] aus, während en 0=0 0 ausgibt); ii) en 1 auf 1 setzt, wenn die durch die sechs höchstwertigen Bits von S_N dargestellte Zahl größer ist als die durch die fünf höchstwertigen Bits von N dargestellte Zahl (en_1=1 gibt - N an in[1] aus, während en_1=0 0 ausgibt); iii) bestätigt den um 1 nach links verschobenen Wert von R_S in in[2]; iv) bestätigt den um 1 nach links verschobenen Wert von R C in in[3]; v) setzt R_S gleich der Summe (ohne Übertrag) von in[0], in[1], in[2] und in[3]; vi) setzt R_C gleich dem Übertrag von in[0], in[1], in[2] und in[3]; und vii) verringert den Zähler.
  • (Carry-Save-Addition Schritt 304 ist mathematisch durch die folgenden Gleichungen definiert: SUM _ SC [ 5 : 0 ]   =  R _ S [ n : n 4 ]   +  R _ C [ n : n 4 ]
    Figure DE102022201745A1_0002
    en _ 0   =   ( N [ 4095 : 4095 3 ]   <  SUM _ SC [ 5 : 0 ] ) ;
    Figure DE102022201745A1_0003
    in 0   =   ( en _ 0 ) ?   4096 :   0
    Figure DE102022201745A1_0004
    en _ 1   =   ( N [ 4095 : 4095 3 ]   <  SUM _ SC [ 5 : 1 ] ) ;
    Figure DE102022201745A1_0005
    in 1   =   ( en _ 1 ) ?   4096 :   0
    Figure DE102022201745A1_0006
    in 2   =  R _ < <   1
    Figure DE102022201745A1_0007
    in 3   =  R _ < <   1
    Figure DE102022201745A1_0008
    R _ C , R _ S = CSA ( in 0,  in 1,  in 2,  in 3 )
    Figure DE102022201745A1_0009
    Z a ¨ hler = Z a ¨ hler 1 ) .
    Figure DE102022201745A1_0010
  • Nach Schritt 304 geht der MPC in einen Check-CSA-Done-Schritt 306 über und prüft, ob der Zähler den Wert Null erreicht hat. Ist dies der Fall, ist die Phase der Carry-Save-Addition beendet; die Summe und der Übertrag des vorberechneten Wertes P = 22n%N werden in R_S bzw. R_C gespeichert, und der MPC geht dann in den Schritt 308 Initialize Carry-Propagate-Addition über. Wenn in Schritt 306 die Carry-Save-Addition nicht durchgeführt wird, kehrt die MPC zu Schritt 304 zurück, um die nächste CSA-Iteration auszuführen.
  • In Schritt 308 initialisiert der MPC den Zähler auf 65. Gemäß dem in 3 dargestellten Ausführungsbeispiel umfasst der Volladdierer 216 (2) 64 Bits; daher dauert die Carry-Propagate-Addition 64+1 Iterationen (64*64 = 4096; eine zusätzliche Iteration ist erforderlich, da n etwas größer als 4096 ist).
  • Nach Schritt 308 tritt der MPC in einen Carry-Propagate-Additionsschritt 310 ein, in dem der Ausgang P berechnet wird (durch Addition des Übertrags aus der vorherigen Iteration, einer 64-Bit-Gruppe aus R_S und einer 64-Bit-Gruppe aus R_C) und der Zähler dekrementiert wird. Die ausgewählten Bitgruppen aus R_S und R_C werden in aufeinanderfolgenden Iterationen nach links verschoben (z. B. werden in der ersten Iteration Bits 63:0 ausgewählt, in der nächsten Iteration Bits 127:64 usw.).
  • Als Nächstes geht der MPC in den Schritt 312 Check-Carry-Propagation-Addition-Done (CPA-done) und überprüft, ob der Zähler den Wert Null erreicht hat. Ist dies der Fall, ist der Vorberechnungsablaufplan abgeschlossen, und der Vorberechnungswert wird in P gespeichert. Wenn in Schritt 312 die Carry-Propagation-Addition nicht abgeschlossen ist, kehrt der MPC für die nächste CPA-Iteration zu Schritt 310 zurück.
  • Das in 3 dargestellte Flussdiagramm 300 ist ein Beispiel, das lediglich der konzeptionellen Klarheit halber dargestellt ist. In alternativen Ausführungsformen der vorliegenden Erfindung können andere geeignete Flussdiagramme verwendet werden. Beispielsweise kann der Zähler eher aufwärts als abwärts zählen (mit entsprechend geänderten Schritten für die Überprüfung der Fertigstellung). In einigen Ausführungsformen kann der Zähler nach den „Check-done“-Schritten inkrementiert (oder dekrementiert) werden.
  • VORBERECHNUNG KLEINER ZAHLEN
  • In einigen Ausführungsformen kann die Anzahl der Bits für die Vorberechnungsoperation kleiner sein als die Breite des MPC (z. B. N < 4096). Da bei den oben beschriebenen Verfahren und Schaltungen ein nächster Zyklus in Abhängigkeit von den höherwertigen Bits des Operanden ausgeführt wird, werden zwei Vorstufen hinzugefügt:
    1. a. Der Operand wird (durch den MPC, den MCE oder durch einen Prozessor) nach links verschoben, bis das MSB=1 ist;
    2. b. Die Anzahl der Algorithmuszyklen wird um die Anzahl der Verschiebungen von a) verringert.
  • Nachdem der Vorberechnungsalgorithmus abgeschlossen ist, wird das Ergebnis nach rechts verschoben (durch den MPC, den MCE oder einen Prozessor), um die ursprüngliche Bitgröße wiederherzustellen.
  • INTEGRIERTER MONTGOMERY-MULTIPLIKATOR MIT
  • VORBERECHNUNGSSCHALTUNG
  • Die oben beschriebene Vorberechnungsschaltung ist der Montgomery-Multiplikationsschaltung ähnlich. In einigen Ausführungsformen ist die Vorberechnung in die Montgomery-Multiplikationsschaltung integriert, wodurch ein kleiner Teil der Logik hinzugefügt wird.
  • 4 ist ein Blockdiagramm, das schematisch einen MMA 400 mit einer in die Montgomery-Berechnungsmaschine integrierten Vorberechnungsschaltung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Wie MMA 100 (1) berechnet MMA 400 das Produkt von Zahlenpaaren modulo einer großen Primzahl N, aber im Gegensatz zu MMA 100 umfasst MMA 400 eine integrierte Montgomery-Berechnungsmaschine (IMCE) 402, die so konfiguriert ist, dass sie Argumente A, B und den Divisor N von einem Prozessor 404 erhält und das Produkt (A*B)%N an den Prozessor 404 ausgibt. Der Prozessor 404 ist so konfiguriert, dass er Operanden (Multiplikanden) an die IMCE 402 sendet und das Multiplikationsergebnis von der IMCE erhält. In einigen Ausführungsformen ist der Prozessor 404 möglicherweise nicht erforderlich, beispielsweise wenn die IMCE 402 einen Prozessor enthält.
  • Wie bei MMA 100 umfassen der Prozessor 404 und/oder die IMCE 402 in einigen Ausführungsformen einen Mehrzweckprozessor, der in Software programmiert ist, um die hier beschriebenen Funktionen auszuführen. Die Software kann in elektronischer Form auf den Prozessor heruntergeladen werden, z. B. über ein Netzwerk oder von einem Host, oder sie kann alternativ oder zusätzlich auf nicht-übertragbaren, greifbaren Medien bereitgestellt und/oder gespeichert werden, z. B. in einem magnetischen, optischen oder elektronischen Speicher.
  • 5 ist ein Blockdiagramm, das schematisch eine integrierte Montgomery-Berechnungsmaschine (IMCE) 402 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. In dem Ausführungsbeispiel beträgt die Multiplikation 4096 Bit x 4096 Bit (wie jedoch in der oben zitierten Walter-Referenz erläutert, verwenden wir 4096+2=4098 Bit, um eine letzte Modulo-Operation zu sparen). Wie man sich denken kann, ist ICME 402 eine Obermenge von MPC 104 (2); einige der Untereinheiten von ICME 402 sind identisch mit den Gegenstücken von MPC 104 (und behalten die gleichen Untereinheitsnummern; andere Untereinheiten sind Obermengen der entsprechenden Untereinheiten von MPC 104. Darüber hinaus umfasst IMCE 402 drei neue Untereinheiten - ein Steuergerät 518 (das sich von der Steuereinheit 214, 2, unterscheidet) und zwei Register - ein GPR0-Register 514 und ein GPR1-Register 516.
  • CSA 200 mit 4 Eingängen und Übertragsspeicherung addiert die Eingänge IN[0] bis IN[3]. Die Summen- und Übertragsausgänge sind mit einem R_S-Register 208 bzw. mit einem R_C-Register 206 verbunden. Die Eingänge IN[0] und IN[1] sind mit den UND-Gates 202 bzw. 204 verbunden. Das UND-Gate 202 ist so konfiguriert, dass es an IN[0] den Wert eines R_0-Registers 502 ausgibt, wenn ein Signal en_0 auf logisch-1 und andernfalls auf Null ist, während das UND-Gate 204 so konfiguriert ist, dass es an IN[1] den Wert eines R_1-Registers 504 ausgibt, wenn ein Signal en_1 auf logisch-1 und andernfalls auf Null ist.
  • Ein Links/Rechts-Verschieber 512 ist so konfiguriert, dass er den Ausgang von R_S 208 nach links oder rechts verschiebt und den Verschiebungswert an IN[2] von CSA 200 sendet; auf ähnliche Weise ist ein Links/Rechts-Verschieber 510 so konfiguriert, dass er den Ausgang von R_C 206 nach links oder rechts verschiebt und den Verschiebungswert an IN[3] von CSA 200 sendet. Wie zu erkennen ist, sind die Links/Rechts-Verschieber 512 und 510 eine Obermenge der Verschieber 212, 210 (2), die nur für die Linksverschiebung konfiguriert sind. In einigen Ausführungsformen addiert CPA 216 Gruppen von Bits (z. B. 64-Bit-Gruppen) von R_S 208 und R_C 206, um die 4098-Bit-Übertragssummen-Darstellung auf eine 4098-Bit-Binärdarstellung zu reduzieren; in einer Ausführungsform laden GPPR0 514 und/oder GPR1 516 sequentiell den Ausgang von CPA 216, z. B. in Gruppen von 64 Bits.
  • Der Controller 518 ist so konfiguriert, dass er den Betrieb der IMCE 402 steuert, indem er ein sequentielles Muster von Steuersignalen an die Untereinheiten sendet, einschließlich en_0, en_1; Steuerung der Verschieberichtung der Links-/Rechtsschieber 512 und 510; Laststeuerung der Register R_0 502, R_1 504, GPR0 514, GPR1 516; und durch Initialisierung der Steuerung der Register R_S 208, R_C 206. Der Controller kann (z.B. durch den Prozessor 404, 4) auf eine von mindestens zwei Einstellungen konfiguriert werden - eine erste Einstellung, in der der Controller die UND-Gates 202, 204 und die Verschieber 510, 512 steuert, so dass der CSA einen Montgomery-Vorberechnungswert berechnet, und eine zweite Einstellung, in der der Controller die UND-Gates und die Verschieber steuert, so dass der CSA eine Montgomery-Multiplikation berechnet. In einigen Ausführungsformen kann das Steuergerät für eine dritte Einstellung konfiguriert werden, in der die CSA eine Potenzierung (z.B. RSA-Potenzierung) durch Kaskadierung einer Montgomery-Vorberechnungseinstellung und mehrerer Vorkommen von Montgomery-Multiplikationseinstellungen berechnet.
  • Im Folgenden wird die Gesamtheit von Controller 518, UND-Gate 202, UND-Gate 204, Verschieber 510 und Verschieber 512 zusammen als Steuerschaltung bezeichnet.
  • Gemäß dem in 5 dargestellten und oben beschriebenen Ausführungsbeispiel ist IMCE 402 so konfiguriert, dass es sowohl eine Montgomery-Vorberechnung als auch eine Montgomery-Multiplikation durchführt (und insbesondere eine Montgomery-Vorberechnung gefolgt von einer Montgomery-Multiplikation).
  • Die in 5 dargestellte und hierin beschriebene Konfiguration der IMCE 104 ist eine Beispielkonfiguration, die lediglich der konzeptionellen Klarheit halber dargestellt ist. Andere geeignete Konfigurationen können in alternativen Ausführungsformen der vorliegenden Erfindung verwendet werden. In einigen Ausführungsformen gibt es beispielsweise keine CPA, und alle Operationen werden in einer Summen- und Übertragsschreibweise durchgeführt (mit Ausnahme des endgültigen Potenzierungsergebnisses, das durch eine CPA oder z. B. durch Software in das Binärformat umgewandelt werden kann).
  • 6 ist ein Flussdiagramm 600, das schematisch ein Verfahren zur Montgomery 4096-Bit X 4096-Bit Multiplikation gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. In dem in 6 dargestellten Ausführungsbeispiel werden die beiden Multiplikanden auf 4098 Bit erweitert, um eine abschließende Modulo-Stufe (wie oben erläutert) zu sparen. Der Fluss wird von der Steuerschaltung 518 ausgeführt, die die verschiedenen Untereinheiten von IMCE 402 steuert (5). Das Flussdiagramm beginnt mit einem Initialisierungs-CSA-Register-Schritt 602, bei dem die Steuerschaltung einen Wert von N (den Modulo) in R0 502 lädt, einen Wert von A (einen ersten Multiplikanden) in R1 504 lädt, B (den zweiten Multiplikanden) in GPR1 514 lädt und Null in die Register R_S 208 und R_C 206 lädt. In einer Ausführungsform lädt der Controller die 4098-Bit-Werte in Gruppen von 64 Bits über 65 Zyklen. In einigen Ausführungsformen empfängt das Steuergerät einige oder alle Werte von einem Prozessor (z.B. Prozessor 404, 4), direkt oder über einen Bus.
  • Als Nächstes tritt die Steuerschaltung in einen Initialisierungszählerschritt 604 ein und lädt einen internen Zähler (nicht dargestellt) mit dem Wert 4098 - der Anzahl der auszuführenden Montgomery-Reduktionsiterationen. Der Steuerkreis tritt dann in einen Montgomery-Iterationsschritt 606 ein, in dem der Steuerkreis:
    1. i) den Eingang en0 des UND-Gates 202 (Fig. 402) auf S[0] + C[0] * GPR10]*r10] (Bitoperationen) setzt;
    2. ii) den Eingang en1 des UND-Gates 204 auf GPR1[0] setzt;
    3. iii) wenn en_0 auf logisch-1 ist - R0 in das 4098-Bit in[0] kopiert; andernfalls - in[0]=0 setzt;
    4. iv) wenn en_1 auf logisch-1 ist - R1 in das 4098-Bit in[1] kopiert; andernfalls - in[1]=0 setzt;
    5. v) den 4098-Bit-Wert von in[2] auf eine Rechtsverschiebung um 1 von R_S setzt;
    6. vi) den 4098-Bit-Wert von in[3] auf eine Rechtsverschiebung um 1 von R_C setzt;
    7. vii) bitweise von in[0],in[1],in[2],in[3] (Speichern der bitweisen Summe in R_S und des bitweisen Übertrags in R-C)addiert; und,
    8. viii) den Zähler dekrementiert.
  • Der Steuerkreis tritt dann in einen Check-Counter-Greater-Than-Zero-Schritt 608 ein und überprüft, ob der Zählerwert immer noch größer als Null ist. Ist dies der Fall, ist die Montgomery-Multiplikationsschleife noch nicht beendet, und der Steuerkreis kehrt zu Schritt 606 zurück, um die nächste Montgomery-Iteration auszuführen. Wenn der Zähler in Schritt 608 nicht größer als Null ist, tritt der Steuerschaltkreis in einen Init-Carry-Propagate-Addition-Schritt 610 ein, in dem der Steuerschaltkreis den Zähler auf 65 setzt und dann in einen Carry-Propagate-Addition (CPA) Schritt 612 eintritt.
  • CPA-Schritt 612 (wie Schritt 310 in 3) ist eine 64-Bit-Addition, die eine Gruppe von 64 R_S-Bits zu einer entsprechenden Gruppe von 64 R_C-Bits addiert und den Zähler dekrementiert. In einem Check-CPA-Done-Schritt 614 prüft die Steuerschaltung, ob der Zähler Null erreicht hat, und kehrt zu Schritt 612 zurück, wenn der Zähler immer noch größer als Null ist. Die Steuerschaltung durchläuft die Schritte 612 und 614 65 Mal, um alle 4098 Carry-Save-Bitpaare zu akkumulieren. Wenn der Zähler in Schritt 614 den Wert Null erreicht hat, endet das Flussdiagramm.
  • Das in 6 dargestellte und oben beschriebene Flussdiagramm 600 ist ein Beispiel, das lediglich der konzeptionellen Klarheit halber dargestellt ist. Andere geeignete Flussdiagramme können in alternativen Ausführungsformen der vorliegenden Erfindung verwendet werden. Beispielsweise kann in Ausführungsformen der Zähler hochgezählt und dann mit der Anzahl der Iterationen verglichen werden. In einigen Ausführungsformen wird der Zähler geändert, nachdem er auf Vollständigkeit geprüft wurde.
  • BERECHNUNG DES RSA-EXPONENTEN
  • Der RSA-Algorithmus besteht aus Modulo- Potenzierungen von großen Zahlen. In dem oben zitierten Artikel von Mclvor et al. beschreiben die Autoren die Verwendung eines Montgomery-Multiplikators für die Potenzierung. Die Potenzierung ist formell definiert als M=CD MOD(n). D - der Exponent - kann in der Steuerschaltung 518 gespeichert oder von einem Prozessor (z.B. Prozessor 204, 4) gelesen werden.
  • 7 ist ein Flussdiagramm 700, das schematisch ein Verfahren zur Modulo-Potenzierung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Das Flussdiagramm wird von der Steuerschaltung 518 (5) ausgeführt. Das Flussdiagramm zur Potenzierung umfasst die Ausführung des Vorberechnungsflussdiagramms 300 (3) und mehrere Ausführungen des Flussdiagramms zur Montgomery-Multiplikation 600 (6). Im Folgenden bezeichnen wir die Montgomery-Vorberechnung, die K=(22k)%n berechnet, als Vorberechnung(k,n) und eine Montgomery-Multiplikation M=(a*b)%n als MONTGOMERY(a,b,n).
  • Flussdiagramm 700 beginnt mit einem Vorberechnungsschritt 702, in dem die Steuerschaltung einen Vorberechnungswert K=VORBERECHNUNG(k,n) durch Ausführen eines Vorberechnungsflusses, z.B. Flussdiagramm 300 ( 3), berechnet. Als nächstes führt der Steuerschaltkreis in einem Calculate-Initial-GPRO-Schritt 704 einen Montgomery-Multiplikationsfluss (z. B. Fluss 600, 6) aus, um MONTGOMERY(K,C,n) zu berechnen, und speichert das Ergebnis in GPR0. Dann führt der Steuerschaltkreis in einem Calculate-Initial-GPR1-Schritt 706 einen weiteren Montgomery-Multiplikationsfluss aus, um MONTGOMERY(K,1,n) zu berechnen, und speichert das Ergebnis in GPR1. Der Steuerkreis setzt nun in einem Set-Counter-4098 den Wert des Zählers auf 4098 - die Anzahl der Iterationen bei der Potenzierung.
  • Nach Schritt 708 startet der Steuerkreis die Folge von 4098 Potenzierungsiterationen. GPR0 speichert nach der i-ten Iteration den Wert von C2i , während GPR1 das akkumulierte Potenzierungsergebnis für CD[i-1:0] speichert. In einem Calculate-Next-GPRO-Schritt 710 berechnet der Steuerkreis MONTGOMERY(GPR0,GPR0,n) und quadriert den vorherigen Wert von GPR0. Als nächstes prüft der Steuerkreis in einem Check-Di-Schritt 612, ob das i-te Bit von d logisch-1 ist. Ist dies der Fall, geht der Steuerschaltkreis zu einem Update-GPR1-Schritt 714 über, in dem der Steuerschaltkreis eine Montgomery-Multiplikation (z. B. Flussdiagramm 600) ausführt, um MONTGOMERY(GPR0,GPR1,n) zu berechnen, das Ergebnis in GPR1 speichert und zu einem Decrement-Counter-Schritt 716 übergeht (wenn in Schritt 712 d[i] nicht logisch-1 ist, umgeht der Steuerschaltkreis Schritt 714).
  • In Schritt 716 dekrementiert der Steuerkreis den Zähler und prüft dann in einem Check-Counter-0-Schritt 718, ob der Zähler 0 erreicht hat. Ist dies der Fall, endet der Potenzierungsfluss und GPR1 speichert M - das Potenzierungsergebnis. Hat der Zähler in Schritt 718 nicht den Wert 0 erreicht, kehrt der Steuerkreis für die nächste Potenzierungsiteration zu Schritt 710 zurück.
  • Das in 7 gezeigte und oben beschriebene Flussdiagramm 700 ist ein Beispiel, das lediglich der konzeptionellen Klarheit halber dargestellt ist. In alternativen Ausführungsformen der vorliegenden Erfindung können andere geeignete Flussdiagramme verwendet werden. Zum Schutz vor Sicherheitsangriffen, bei denen die Potenzierungszeit gemessen wird, um die Anzahl der Bits des Logik-1-Exponenten abzuschätzen, wird beispielsweise in einigen Ausführungsformen die Montgomery-Multiplikation von Schritt 714 immer ausgeführt, und der Wert des Bits d[i] des Exponenten (der in Schritt 712 geprüft wird) bestimmt, ob GPR1 mit den Multiplikationsergebnissen aktualisiert wird. In einigen Ausführungsformen wird der Zähler in Schritt 708 gelöscht, in Schritt 716 hochgezählt und in Schritt 718 mit 4098 verglichen. In einer Ausführungsform wird der Zähler nach dem Vergleich mit dem Endwert hochgezählt.
  • MONTGOMERY BERECHNUNG VON KLEINEN ZAHLEN
  • Bei den oben beschriebenen Methoden und Schaltungen der Montgomery-Multiplikation wird ein nächster Zyklus in Abhängigkeit vom niederwertigen Bit des Operanden ausgeführt, so dass der Algorithmus gut funktioniert, wenn die Anzahl der Bits der zu multiplizierenden Zahlen kleiner ist als die Breite des IMCE (z.B. N<4096). Die Operanden sollten in die LSB-Teile der Register geladen werden, und logische 0-Bits sollten in den unbenutzten MS-Teil geladen werden.
  • Die Konfigurationen der Montgomery-Multiplikationsgeräte (MMA) 100 und 400, einschließlich der Montgomery-Vorberechnungsschaltung (MPC) 104 und der integrierten Montgomery-Berechnungsmaschine (IMCE) 402, sowie die Methoden der Flussdiagramme 300, 600 und 700, die hier beschrieben werden, sind Beispielkonfigurationen und -methoden, die nur der konzeptionellen Klarheit halber gezeigt werden. Jede andere geeignete Konfiguration und jedes andere Flussdiagramm kann in alternativen Ausführungsformen verwendet werden. Die verschiedenen Elemente der Montgomery-Multiplikationsgeräte (MMA) 100 und 400, einschließlich der Montgomery-Vorberechnungsschaltung 104 und der integrierten Montgomery-Berechnungsmaschine 402, können mit geeigneter Hardware implementiert werden, z.B. in einem oder mehreren anwendungsspezifischen integrierten Schaltkreisen (ASICs) oder feldprogrammierbaren Gate-Arrays (FPGAs).
  • Obwohl sich die hier beschriebenen Ausführungsformen hauptsächlich auf die Montgomery-Multiplikation, die Montgomery-Vorberechnung und die Montgomery-basierte Potenzierung beziehen, können die hier beschriebenen Verfahren und Systeme auch für andere Anwendungen, wie z.B. die schnelle Division, verwendet werden.
  • Es wird daher deutlich, dass die oben beschriebenen Ausführungsformen als Beispiele angeführt werden und dass die vorliegende Erfindung nicht auf das beschränkt ist, was hierin besonders gezeigt und beschrieben wurde. Vielmehr umfasst der Umfang der vorliegenden Erfindung sowohl Kombinationen und Unterkombinationen der verschiedenen hierin beschriebenen Merkmale als auch Variationen und Modifikationen davon, die dem Fachmann beim Lesen der vorstehenden Beschreibung einfallen würden und die im Stand der Technik nicht offenbart sind. Dokumente, die durch Verweis in die vorliegende Patentanmeldung aufgenommen wurden, sind als integraler Bestandteil der Anmeldung zu betrachten, mit der Ausnahme, dass in dem Maße, in dem Begriffe in diesen aufgenommenen Dokumenten in einer Weise definiert werden, die im Widerspruch zu den in der vorliegenden Beschreibung explizit oder implizit gemachten Definitionen steht, nur die Definitionen in der vorliegenden Beschreibung zu berücksichtigen sind.
  • Es versteht sich, dass die oben beschriebenen Aspekte und Ausführungsformen nur beispielhaft sind und dass im Rahmen der Ansprüche Änderungen im Detail vorgenommen werden können.
  • Jedes Gerät, Verfahren und Merkmal, das in der Beschreibung und (gegebenenfalls) in den Ansprüchen und Zeichnungen offenbart wird, kann unabhängig oder in jeder geeigneten Kombination bereitgestellt werden.
  • Die in den Ansprüchen enthaltenen Bezugszahlen dienen nur der Veranschaulichung und haben keine einschränkende Wirkung auf den Umfang der Ansprüche.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 17180993 [0001]

Claims (26)

  1. Eine Montgomery-Multiplikationsvorrichtung (MMA) zum Multiplizieren zweier Multiplikanden modulo einer vordefinierten Zahl, wobei die MMA umfasst: eine Vorberechnungsschaltung, die so konfiguriert ist, dass sie einen Montgomery-Vorberechnungswert berechnet, indem sie eine Reihe von Iterationen durchführt, wobei die Vorberechnungsschaltung in einer gegebenen Iteration so konfiguriert ist, dass sie einen oder mehrere Zwischenwerte modifiziert, indem sie bitweise Operationen an den in einer vorhergehenden Iteration berechneten Zwischenwerten durchführt; und eine Montgomery-Multiplikationsschaltung, die so konfiguriert ist, dass sie die beiden Multiplikanden modulo der vordefinierten Zahl multipliziert, indem sie eine Vielzahl von Montgomery-Reduktionsoperationen unter Verwendung des von der Vorberechnungsschaltung berechneten Montgomery-Vorberechnungswertes durchführt.
  2. Die MMA nach Anspruch 1, wobei der Montgomery-Vorberechnungswert mindestens zwei Potenzen der doppelten Anzahl von Bits der Montgomery-Multiplikanden umfasst.
  3. Die MMA nach Anspruch 1 oder 2, wobei die Vorberechnungsschaltung so konfiguriert ist, dass sie in der gegebenen Iteration eine bitweise Summe und einen bitweisen Übertrag modifiziert, indem sie bitweise Summen- und bitweise Übertragsoperationen an (i) der in der vorhergehenden Iteration berechneten bitweisen Summe, (ii) dem Zweifachen des in der vorhergehenden Iteration berechneten bitweisen Übertrags und (iii) einer Modulo-Korrekturzahl durchführt.
  4. Die MMA nach Anspruch 3, wobei die Vorberechnungsschaltung so konfiguriert ist, dass sie den Montgomery-Vorberechnungswert auf der Grundlage der Summe der bitweisen Summe und des doppelten bitweisen Übertrags nach einer letzten Iteration der Iterationsreihe berechnet.
  5. Die MMA nach Anspruch 3, wobei die Vorberechnungsschaltung so konfiguriert ist, dass sie die Modulo-Korrekturzahl auf der Grundlage der Summe der bitweisen Summe und des doppelten bitweisen Übertrags berechnet, die in einer letzten Iteration berechnet wurden.
  6. Die MMA nach Anspruch 3, wobei die Vorberechnungsschaltung so konfiguriert ist, dass sie die Modulo-Korrekturzahl in der gegebenen Iteration auf der Grundlage einer Differenz zwischen der Summe der bitweisen Summe und dem bitweisen Übertrag, die in der vorhergehenden Iteration berechnet wurden, und der vordefinierten Zahl berechnet.
  7. Die MMA nach Anspruch 3, wobei die Vorberechnungsschaltung so konfiguriert ist, dass sie die Modulo-Korrekturzahl in der gegebenen Iteration auf der Grundlage einer Teilmenge der höchstwertigen Bits der Summe des bitweisen Übertrags und der bitweisen Summe, die in der vorhergehenden Iteration berechnet wurden, und einer Teilmenge der höchstwertigen Bits der vordefinierten Zahl berechnet.
  8. Die MMA nach Anspruch 3, wobei die Vorberechnungsschaltung so konfiguriert ist, dass sie die Modulo-Korrekturzahl in der gegebenen Iteration auf der Grundlage einer Teilmenge von Bits der Summe des bitweisen Übertrags und der bitweisen Summe, die in der vorhergehenden Iteration berechnet wurden, und auf einer Teilmenge der Bits der vordefinierten Zahl berechnet.
  9. Die MMA nach einem der Ansprüche 3 bis 8, wobei die Vorberechnungsschaltung so konfiguriert ist, dass sie die Modulo-Korrekturzahl auf die vordefinierte Zahl multipliziert mit -1, -2 oder 0 setzt.
  10. Die MMA nach Anspruch 3, wobei die Vorberechnungsschaltung einen Carry-Save-Addierer (CSA) umfasst, der so konfiguriert ist, dass er in der gegebenen Iteration eine bitweise Summe und einen bitweisen Übertrag aus (i) der doppelten bitweisen Summe, die in der vorangegangenen Iteration berechnet wurde, (ii) dem doppelten bitweisen Übertrag, der in der vorangegangenen Iteration berechnet wurde, und (iii) einer Modulo-Korrekturzahl, die auf die vordefinierte Zahl, multipliziert mit -1, -2 oder 0, eingestellt ist, berechnet.
  11. Die MMA nach Anspruch 1, wobei die Vorberechnungsschaltung einen Carry-Save-Addierer (CSA) mit drei Eingängen umfasst, der so konfiguriert ist, dass er in der gegebenen Iteration eine bitweise Summe und einen bitweisen Übertrag aus (i) der doppelten bitweisen Summe, die in der vorangegangenen Iteration berechnet wurde, (ii) dem doppelten bitweisen Übertrag, der in der vorangegangenen Iteration berechnet wurde, und (iii) einer Modulo-Korrekturzahl, die auf die vordefinierte Zahl multipliziert mit -1, -2 oder 0 eingestellt ist, berechnet.
  12. Die MMA nach Anspruch 1, wobei die Vorberechnungsschaltung einen Carry-Save-Addierer (CSA) mit vier Eingängen umfasst, der so konfiguriert ist, dass er in der gegebenen Iteration eine bitweise Summe und einen bitweisen Übertrag von (i) dem Zweifachen der in der vorhergehenden Iteration berechneten bitweisen Summe berechnet, (ii) dem Zweifachen des in der vorhergehenden Iteration berechneten bitweisen Übertrags berechnet, (iii) einer ersten Modulo-Korrekturzahl, die auf die vordefinierte Zahl, multipliziert mit -1 oder 0, gesetzt wird, berechnet und (iv) einer zweiten Modulo-Korrekturzahl, die auf die vordefinierte Zahl multipliziert mit -2 oder 0 gesetzt wird, berechnet.
  13. Die MMA nach einem der vorhergehenden Ansprüche, wobei die Vorberechnungsschaltung und die Montgomery-Multiplikationsschaltung in einer Netzwerkvorrichtung enthalten sind und so konfiguriert sind, dass sie eine kryptographische Operation der Netzwerkvorrichtung durchführen.
  14. Ein Verfahren zur Multiplikation von zwei Multiplikanden mit einer vordefinierten Zahl, wobei das Verfahren umfasst: unter Verwendung einer Vorberechnungsschaltung, Berechnen eines Montgomery-Vorberechnungswertes durch Ausführen einer Reihe von Iterationen, einschließlich, in einer gegebenen Iteration, Modifizieren eines oder mehrerer Zwischenwerte durch Ausführen bitweiser Operationen an den in einer vorhergehenden Iteration berechneten Zwischenwerten; und unter Verwendung einer Montgomery-Multiplikationsschaltung Multiplikation der beiden Multiplikanden, modulo der vordefinierten Zahl, durch Durchführung einer Vielzahl von Montgomery-Reduktionsoperationen unter Verwendung des von der Vorberechnungsschaltung berechneten Montgomery-Vorberechnungswertes.
  15. Das Verfahren nach Anspruch 14, wobei der Montgomery-Vorberechnungswert mindestens zwei Potenzen der doppelten Anzahl von Bits der Montgomery-Multiplikanden umfasst.
  16. Das Verfahren nach Anspruch 14 oder 15, wobei die Berechnung des Montgomery-Vorberechnungswerts in der gegebenen Iteration das Modifizieren einer bitweisen Summe und eines bitweisen Übertrags durch Ausführen von bitweisen Summen- und bitweisen Übertragsoperationen an (i) der in der vorhergehenden Iteration berechneten bitweisen Summe, (ii) dem Zweifachen des in der vorhergehenden Iteration berechneten bitweisen Übertrags und (iii) einer Modulo-Korrekturzahl umfasst.
  17. Das Verfahren nach Anspruch 16, wobei die Berechnung des Montgomery-Vorberechnungswerts die Berechnung des Montgomery-Vorberechnungswerts auf der Grundlage der Summe der bitweisen Summe und des doppelten bitweisen Übertrags nach einer letzten Iteration der Reihe von Iterationen umfasst.
  18. Das Verfahren nach Anspruch 16, wobei die Berechnung des Montgomery-Vorberechnungswerts die Berechnung der Modulo-Korrekturzahl auf der Grundlage der Summe der bitweisen Summe und des doppelten bitweisen Übertrags umfasst, die in einer letzten Iteration berechnet wurden.
  19. Das Verfahren nach Anspruch 16, wobei das Berechnen des Montgomery-Vorberechnungswerts das Berechnen der Modulo-Korrekturzahl in der gegebenen Iteration auf der Grundlage einer Differenz zwischen der Summe der bitweisen Summe und dem bitweisen Übertrag, die in der vorhergehenden Iteration berechnet wurden, und der vordefinierten Zahl umfasst.
  20. Das Verfahren nach Anspruch 16, wobei die Berechnung des Montgomery-Vorberechnungswerts die Berechnung der Modulo-Korrekturzahl in der gegebenen Iteration auf der Grundlage einer Teilmenge der höchstwertigen Bits der Summe des bitweisen Übertrags und der bitweisen Summe, die in der vorhergehenden Iteration berechnet wurden, und einer Teilmenge der höchstwertigen Bits der vordefinierten Zahl umfasst.
  21. Das Verfahren nach Anspruch 16, wobei die Berechnung des Montgomery-Vorberechnungswerts die Berechnung der Modulo-Korrekturzahl in der gegebenen Iteration auf der Grundlage einer Teilmenge von Bits der Summe des bitweisen Übertrags und der bitweisen Summe, die in der vorhergehenden Iteration berechnet wurden, und auf einer Teilmenge der Bits der vordefinierten Zahl umfasst.
  22. Das Verfahren nach einem der Ansprüche 16 bis 21, wobei die Berechnung des Montgomery-Vorberechnungswertes das Setzen der Modulo-Korrekturzahl auf die vordefinierte Zahl multipliziert mit -1, -2 oder 0 umfasst.
  23. Das Verfahren nach Anspruch 16, wobei die Vorberechnungsschaltung einen Carry-Save-Adder (CSA) umfasst und die Berechnung des Montgomery-Vorberechnungswerts in der gegebenen Iteration die Berechnung einer bitweisen Summe und eines bitweisen Übertrags aus (i) dem Zweifachen der in der vorhergehenden Iteration berechneten bitweisen Summe, (ii) dem Zweifachen des in der vorhergehenden Iteration berechneten bitweisen Übertrags und (iii) einer Modulo-Korrekturzahl umfasst, die auf die vordefinierte Zahl multipliziert mit -1, -2 oder 0 gesetzt ist.
  24. Das Verfahren nach Anspruch 14, wobei die Vorberechnungsschaltung einen Carry-Save-Addierer (CSA) mit drei Eingängen umfasst und wobei die Berechnung des Montgomery-Vorberechnungswerts in der gegebenen Iteration die Berechnung einer bitweisen Summe und eines bitweisen Übertrags aus (i) der doppelten bitweisen Summe, die in der vorhergehenden Iteration berechnet wurde, (ii) dem doppelten bitweisen Übertrag, der in der vorhergehenden Iteration berechnet wurde, und (iii) einer Modulo-Korrekturzahl umfasst, die auf die vordefinierte Zahl multipliziert mit -1, -2 oder 0 gesetzt ist, berechnet wurde.
  25. Das Verfahren nach Anspruch 14, wobei die Vorberechnungsschaltung einen Carry-Save-Addierer (CSA) mit vier Eingängen umfasst, und wobei die Berechnung des Montgomery-Vorberechnungswerts in der gegebenen Iteration die Berechnung einer bitweisen Summe und eines bitweisen Übertrags von (i) der doppelten bitweisen Summe, die in der vorhergehenden Iteration berechnet wurde, (ii) dem Zweifachen des in der vorangegangenen Iteration berechneten bitweisen Übertrags berechnet wurde, (iii) einer ersten Modulo-Korrekturzahl, die auf die vordefinierte Zahl multipliziert mit -1 oder 0 gesetzt wird, berechnet wurde und (iv) einer zweiten Modulo-Korrekturzahl, die auf die vordefinierte Zahl multipliziert mit -2 oder 0 gesetzt wird, berechnet wurde.
  26. Das Verfahren nach einem der Ansprüche 15 bis 25, wobei die Berechnung des Montgomery-Vorberechnungswerts und die Multiplikation der beiden Multiplikanden in einer Netzwerkvorrichtung zur Durchführung einer kryptographischen Operation der Netzwerkvorrichtung durchgeführt werden.
DE102022201745.5A 2021-02-22 2022-02-21 Schnelle vorberechnung für montgomery- multiplikator Pending DE102022201745A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US17/180,999 2021-02-22
US17/180,999 US20220269488A1 (en) 2021-02-22 2021-02-22 Fast Precomputation for Montgomery Multiplier
US17/180,993 2021-02-22
US17/180,993 US20220269487A1 (en) 2021-02-22 2021-02-22 Efficient Montgomery Multiplier

Publications (1)

Publication Number Publication Date
DE102022201745A1 true DE102022201745A1 (de) 2022-08-25

Family

ID=82702163

Family Applications (2)

Application Number Title Priority Date Filing Date
DE102022201693.9A Pending DE102022201693A1 (de) 2021-02-22 2022-02-18 Effizienter montgomery-multiplikator
DE102022201745.5A Pending DE102022201745A1 (de) 2021-02-22 2022-02-21 Schnelle vorberechnung für montgomery- multiplikator

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE102022201693.9A Pending DE102022201693A1 (de) 2021-02-22 2022-02-18 Effizienter montgomery-multiplikator

Country Status (1)

Country Link
DE (2) DE102022201693A1 (de)

Also Published As

Publication number Publication date
DE102022201693A1 (de) 2022-08-25

Similar Documents

Publication Publication Date Title
DE102006025673B4 (de) Rechenwerk zum Reduzieren einer Eingabe-Zahl bezüglich eines Moduls
DE69838390T2 (de) Verbessertes gerät und verfahren für modulare multiplikation und exponentation basierend auf montgomerymultiplikation
EP1360579B1 (de) Verfahren und vorrichtung zum modularen multiplizieren und rechenwerk zum modularen multiplizieren
DE102020102453A1 (de) Integrierte Schaltung zum modularen Multiplizieren von zwei ganzen Zahlen für ein kryptographisches Verfahren und Verfahren zur kryptographischen Verarbeitung von Daten basierend auf modularer Multiplikation
DE112007001319T5 (de) Multiplizieren zweier Zahlen
DE19758079A1 (de) Verfahren und Vorrichtung zur Galoisfeld-Multiplikation
DE102018113475A1 (de) Rechenwerk zum rechnen mit maskierten daten
EP2771782A1 (de) Effiziente primzahlprüfung
EP1920323A1 (de) Verfahren zur skalarmultiplikation von punkten auf einer elliptischen kurve
EP1543408B1 (de) Vorrichtung und verfahren zum berechnen einer multiplikation mit einer verschiebung des multiplikanden
DE102005038518A1 (de) Modularer Multiplizierschaltkreis und Kryptographiesystem
EP1499954B1 (de) Berechnung eines ergebnisses einer modularen multiplikation
CN106339204A (zh) 加密计算方法以及装置
DE102006025713B9 (de) Kryptographie-Vorrichtung und Kryptographie-Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation
DE10357661B4 (de) Modularer Montgomery-Multiplizierer und zugehöriges Multiplikationsverfahren
EP1576463B1 (de) Modulare multiplikation mit paralleler berechnung der vorausschau-parameter
DE102006025677B4 (de) Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer Summe mit einem Rechenwerk mit begrenzter Wortlänge
DE10151129B4 (de) Verfahren und Vorrichtung zum Berechnen eines Ergebnisses einer Exponentiation in einer Kryptographieschaltung
WO2012065730A1 (de) Verfahren zur langzahldivision oder modulare reduktion
US20050149595A1 (en) Apparatus and method for calculating a result of a modular multiplication
DE102022201745A1 (de) Schnelle vorberechnung für montgomery- multiplikator
WO2003021424A2 (de) Verfahren und vorrichtung zum modularen multiplizieren
DE102008050800B4 (de) Vorrichtung und Verfahren zum Bestimmen einer modularen multiplikativen Inversen
WO2003093970A2 (de) Vorrichtung und verfahren zum berechnen eines ganzzahligen quotienten
DE602004006126T2 (de) Verbesserte inversionsberechnungen

Legal Events

Date Code Title Description
R012 Request for examination validly filed