DE60125710T2 - Manipulationssichere Methode zur modularen Multiplikation - Google Patents

Manipulationssichere Methode zur modularen Multiplikation Download PDF

Info

Publication number
DE60125710T2
DE60125710T2 DE60125710T DE60125710T DE60125710T2 DE 60125710 T2 DE60125710 T2 DE 60125710T2 DE 60125710 T DE60125710 T DE 60125710T DE 60125710 T DE60125710 T DE 60125710T DE 60125710 T2 DE60125710 T2 DE 60125710T2
Authority
DE
Germany
Prior art keywords
mod
calculation
case
modular
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60125710T
Other languages
English (en)
Other versions
DE60125710D1 (de
Inventor
Masahiro Kaminaga
Takashi Endo
Takashi Watanabe
Masaru Ohki
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Application granted granted Critical
Publication of DE60125710D1 publication Critical patent/DE60125710D1/de
Publication of DE60125710T2 publication Critical patent/DE60125710T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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/724Finite field arithmetic
    • 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/722Modular multiplication
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7257Random modification not requiring correction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves

Landscapes

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

Description

  • HINTERGRUND DER ERFINDUNG
  • Die vorliegende Erfindung betrifft ein manipulationssicheres Kryptoverarbeitungsverfahren für Hochsicherheitsmedien, wie zum Beispiel IC-Karten.
  • Eine IC-Karte ist eine Vorrichtung, die persönliche Informationen aufbewahrt, die nicht manipuliert werden dürfen, oder eine Verschlüsselung von Daten oder eine Entschlüsselung eines Chiffretextes unter Verwendung von geheimen Schlüsseln ausführt. Eine IC-Karte selbst hat keine eigene Energieversorgung, und wenn sie in eine Lese-/Schreibeinrichtung für eine IC-Karte eingeführt ist, wird der IC-Karte Energie zugeführt und sie wird betriebsfähig gemacht. Nachdem sie betriebsfähig gemacht ist, empfängt die IC-Karte von der Lese-/Schreibeinrichtung übertragene Befehle, und die IC-Karte verarbeitet den Befehlen folgend beispielsweise einen Datentransfer. Eine allgemeine Erläuterung einer IC-Karte wird in Junichi Mizusawa, "IC card", Ohm-sha, denshi-tsuushin jouhou-gakkai-hen etc. gegeben.
  • Eine IC-Karte ist so aufgebaut, dass ein Chip 102 für eine IC-Karte auf einer Karte 101, wie in 1 gezeigt, angebracht ist. Im Allgemeinen umfasst eine IC-Karte einen Energieversorgungsanschluss VCC, einen Erdungsanschluss GND, einen Rückstellanschluss RST, einen Eingabe-/Ausgabeanschluss E/A und einen Taktimpulsanschluss CLK an den durch die ISO7816-Normen bestimmten Positionen, und über diese Anschlüsse wird einer IC-Karte von einer Lese-Schreibeinrichtung Energie zugeführt oder kommuniziert sie mit ihr (siehe W. Rankl und Effing: Smartcard Handbook, John Wiley & AMP; SONS, 1997, S. 41).
  • Die Konfiguration eines Chips für eine IC-Karte ist im Wesentlichen die gleiche wie jene eines typischen Mikrocomputers. Die Konfiguration ist, wie in 2 gezeigt, aus einer Zentralverarbeitungseinheit (CPU) 201, einer Speichervorrichtung 204, einem Eingabe-/Ausgabe (E/A)-Port 207 und einem Koprozessor 202 zusammengesetzt (in manchen Fällen gibt es keinen Koprozessor). Die CPU 201 ist eine Vorrichtung, die eine logische Operation, eine arithmetische Operation etc. ausführt. Die Speichervorrichtung 204 ist eine Vorrichtung, die Programme, Daten etc. speichert. Der Eingabe-/Ausgabe-Port ist eine Vorrichtung, die mit der Lese-/Schreibeinrichtung kommuniziert. Der Koprozessor ist eine Vorrichtung, die Kryptoverarbeitung selbst oder eine für eine Kryptoverarbeitung notwendige Operation mit einer hohen Geschwindigkeit ausführt. Es gibt beispielsweise eine spezielle Recheneinrichtung zum Ausführen einer Restoperation eines RSA-Kryptogramms oder eine Chiffriervorrichtung, die eine Rundenverarbeitung eines DES-Kryptogramms ausführt. Einige der Prozessoren für IC-Karten umfassen keinen Koprozessor. Ein Datenbus 203 ist ein Bus, der jeweilige Vorrichtungen miteinander verbindet.
  • Die Speichervorrichtung 204 ist aus einem ROM (einem Nurlesespeicher), einem RAM (einem Direktzugriffsspeicher), einem EEPROM (einem elektrischen löschbaren programmierbaren Nurlesespeicher) etc. zusammengesetzt. Ein ROM ist ein Speicher, der nicht veränderbar ist, und er wird hauptsächlich zum Speichern von Programmen verwendet. Ein RAM ist ein Speicher, der frei wiederbeschreibbar sein kann, aber wenn seine Energieversorgung ausgeschaltet ist, werden die gespeicherten Inhalte des RAMs gelöscht. Wenn eine IC-Karte aus einer Lese-/Schreibeinrichtung herausgezogen wird, verschwinden die Inhalte des RAMs, weil die Energieversorgung ausgeschaltet wird. Ein EEPROM ist ein Speicher, der die Inhalte festhält, sogar wenn die Energieversorgung unterbrochen wird. Ein EEPROM wird verwendet, um die Daten zu speichern, die auf diesem festgehalten werden sollen, sogar wenn er in einem Fall, in dem ein Umschreiben erforderlich ist, von der Lese-/Schreibeinrichtung getrennt wird. Beispielsweise wird die Anzahl der vorausbezahlten Male einer Guthabenkarte jedes Mal, wenn sie verwendet wird, umgeschrieben, und die Daten sollten festgehalten werden, sogar wenn sie von der Lese-/Schreibeinrichtung weggenommen wird. Deshalb müssen derartige Daten auf einem EEPROM festgehalten werden.
  • Eine IC-Karte hat Programme und/oder andere wichtige Informationen, die in dem Chip enthalten sind, und wird verwendet, um in diesem wichtige Informationen zu speichern oder Kryptoverarbeitung auszuführen. Gewöhnlicherweise sind die Schwierigkeiten, einen Chiffretext in einer IC-Karte zu entschlüsseln, bisher als äquivalent zu jenen betrachtet worden, einen Chiffre-Algorithmus zu entschlüsseln. Jedoch ist der Verbrauchsstrom, während sie eine Kryptoverarbeitung durchführt, genau beobachtet und analysiert worden; dabei deutet sich an, dass Inhalte einer Kryptoverarbeitung oder geheime Schlüssel leichter geschätzt werden können als die Entschlüsselung eines Krypto-Algorithmus. Der Verbrauchsstrom kann durch die Messung des von der Lese-/Schreibeinrichtung zugeführten Stroms beobachtet werden. Im Detail wird dieses bedrohliche Angriffsverfahren in 8.5.1 Passive Protective Mechanisms (S. 263) von John Wiley & AMP; SONS, W. Rankl & AMP; W. Effing "Smart Card Handbook", beschrieben.
  • Ein CMOS, der einen Chip für eine IC-Karte darstellt, verbraucht Strom, wenn seine Ausgabezustände von 1 zu 0 oder von 0 zu 1 übergehen. Insbesondere fließt in dem Datenbus 203 wegen des Stroms eines Bustreibers und der statischen Kapazität von Verdrahtungen und den mit den Verdrahtungen verbundenen Transistoren, wenn der Wert des Busses sich von 1 zu 0 oder von 0 zu 1 ändert, ein großer Strom. Deshalb gibt es, falls der verbrauchte Strom beobachtet wird, eine Möglichkeit, dass man fähig sein kann, zu schätzen, was innen betrieben wird.
  • 3 zeigt die Wellenform eines durch einen IC-Kartenchip in einem Zyklus verbrauchten Stroms. Abhängig von der Art der Datenverarbeitung ist die Wellenform unterschiedlich, wie bei Kurven 301 und 302 gezeigt. Ein Unterschied wie dieser tritt abhängig von der Art der Daten auf, die in dem Bus 203 fließen oder in der CPU 201 verarbeitet werden.
  • Der Koprozessor 202 ist, parallel zu der CPU, beispielsweise fähig, eine modulare arithmetische Operation von 512 Bits auszuführen, so dass es möglich ist, über eine lange Zeit einen Verbrauchsstrom mit einer unterschiedlichen Wellenform von derjenigen der CPU zu beobachten. Durch die Beobachtung des unverkennbaren Musters kann die Anzahl der Male an Operationen eines Koprozessors leicht geschätzt werden. Falls es irgendeine Relation zwischen geheimen Schlüsseln und den Malen an Operationen des Koprozessors gibt, gibt es eine Möglichkeit, dass man die geheimen Schlüssel aus den Malen an Operationen des Koprozessors schätzen kann.
  • Falls es eine Abweichung abhängig von den geheimen Schlüsseln bei den Operationsinhalten des Koprozessors gibt, wird die Abweichung aus dem Verbrauchsstrom erhalten, und die geheimen Schlüssel können geschätzt werden. Beispielsweise wird bei einer Überlaufverarbeitung, die in dem Fall einer Operation zur modularen Multiplikation auftritt, in vielen Fällen ein für einen Überlauf besonderer Verbrauchsstrom erzeugt. In einem anderen Fall unterscheidet sich die Verarbeitungszeit manchmal abhängig davon, ob ein Überlaufprozess ausgeführt wird oder nicht.
  • In dem Fall einer CPU bestehen ähnliche Umstände. Da die Anzahl von Bits eines geheimen Schlüssels bekannt ist, könnte es, falls der Verbrauchsstrom durch Änderung der zu verarbeitenden Daten beobachtet wird, möglich sein, dass der Einfluss des Bitwertes des geheimen Schlüssels beobachtet wird. Wenn die Wellenformen von Verbrauchsströmen statistisch verarbeitet werden, könnte man fähig sein, den geheimen Schlüssel zu schätzen.
  • EP 0 801 345 offenbart ein Verfahren zur modularen Multiplikation für eine Datenverschlüsselung unter Verwendung der Montgomery'schen Gleichung.
  • EP 1 006 492 offenbart eine Informationsverarbeitungsausrüstung und eine IC-Karte, wobei die IC-Karte ein Speichermemory einschließlich einer Programmspeichereinheit zum Speichern eines Programms und einer Datenspeichereinheit zum Speichern von Daten und eine Zentralverarbeitungseinheit zum Ausführen eines vorgegebenen Prozesses in Übereinstimmung mit dem Programm zum Verarbeiten der Daten hat, wobei das Programm eine oder mehrere Datenprozesseinheiten aufweist, von denen jede eine Prozessanweisung zum Geben einer Durchführungsanweisung an die Zentralverarbeitungseinheit hat, wobei ein Datenprozessbefehl willkürlich ausgetauscht und ein Scheinprozess hinzugefügt wird, um dadurch die Abhängigkeit eines Verbrauchsstroms eines IC-Chips von dem Datenprozess zu reduzieren.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Das Ziel der Erfindung ist es, die Beziehung zwischen der Datenverarbeitung in einem IC-Kartenchip und dem Verbrauchsstrom zu verringern.
  • Zur Erreichung des oben genannten Ziels schlägt die vorliegende Erfindung ein manipulationssicheres Verfahren zur modularen Exponentiation gemäß den Hauptansprüchen vor.
  • Falls die Beziehung zwischen dem Verbrauchsstrom und der Verarbeitung in einem Chip verringert wird, wird es schwierig, die Verarbeitung in einem IC-Kartenchip oder den geheimen Schlüssel aus dem beobachteten Verbrauchsstrom zu schätzen. Bei der vorliegenden Erfindung konzentriert sich die Aufmerksamkeit darauf, dass bei dem Prozess zur modularen Multiplikation in einem IC-Kartenchip, AB MOD N, oder dem Prozess zur modularen Multiplikation durch das Montgomery'sche Verfahren, ABR^(-1) MOD N (an dieser Stelle drückt A^B die B-te Potenz von A aus), Multiplikator B Multiplikand A substituiert werden durch TN + B*(–1)^G, SN + A*(–1)^F (S, T, F, G sind ganze Zahlen, wobei F und G jeweils 0 oder 1 sind) unter der Verwendung von ihrem Modulo N, und danach wird es, falls sie verarbeitet werden, schwierig, die Inhalte eines Prozesses oder den geheimen Schlüssel aus der Wellenform des Verbrauchsstroms oder der Abweichung der Verarbeitungszeit zu schätzen.
  • Eine manipulationssichere Einrichtung, die durch einen IC-Kartenchip dargestellt wird, umfasst einen Speicher, der aus einer Programmspeichereinheit zum Speichern von Programmen und einer Datenspeichereinheit zum Speichern von Daten und einer Zentralverarbeitungseinheit (CPU) zusammengesetzt ist, die den Programmen folgend die vorgegebenen Prozesse ausführt. Die Einrichtung kann als eine Informationsverarbeitungsvorrichtung verstanden werden, bei der die Programme, die aus an die CPU zu gebenden Verarbeitungsanweisungen zusammengesetzt sind, ein oder mehrere Datenverarbeitungsmittel bereitstellen.
  • In dem Fall einer Hochsicherheits-IC-Karte, die durch elektronisches Geld dargestellt wird, wird ein RSA-Kryptosystem oder ein Elliptische-Kurven-Kryptosystem auf einem Galois-Feld GF(P^N) : (P ist eine Primzahl, N ist eine positive ganze Zahl) verwendet. In jenem Fall wird die Verarbeitung der Operation zur modularen Multiplikation, A*B MOD N, oder die Operation zur modularen Multiplikation eines Polynoms, A(X)*B(X) MOD Φ(X) notwendig (in manchen Fällen A = B). Da das Konzept sich in dem Fall von Polynomen nicht unterscheidet, wird im Folgenden eine Erläuterung über den gewöhnlichen Prozess zur modularen Multiplikation gegeben. Die Verarbeitung zur modularen Multiplikation von Polynomen unterscheidet sich ein wenig bei der Computerimplementierung von der gewöhnlichen Verarbeitung zur modularen Multiplikation, aber sie wird im Detail bei der bevorzugten Ausführungsform gemäß der vorliegenden Erfindung erläutert.
  • Bei der vorliegenden Erfindung besteht eine der Methoden zur Störung der Beziehung zwischen den durch die Operation zur modularen Multiplikation verarbeiteten Daten und dem Verbrauchsstrom eines IC-Kartenchips darin, anstatt die wirklichen Daten, die für eine arithmetische Verarbeitung verwendet werden, direkt zu verwenden, die Berechnung mit Daten durchzuführen, durch die ein Berechnungsergebnis nicht stark verändert wird, und das Ergebnis nach der Berechnung zu korrigieren.
  • Um genauer zu sein, werden, wenn die Verarbeitung zur modularen Multiplikation, A*B MOD N berechnet wird, der Multiplikator B und der Multiplikand A substituiert durch TN + B*(–1)^G beziehungsweise SN + A*(–1)^F (S, T, F, G: wenigstens eine von ihnen ist eine ganze Zahl, die nicht Null ist, wobei F und G jeweils 0 oder 1 sind), und S = (SN + A*(–1)^F)*(TN + B*(–1)^G) MOD N wird berechnet, und danach soll in einem Fall, in dem (F + G) eine ungerade Zahl ist, (N – S) zu dem Ergebnis einer Operation zur modularen Multiplikation gemacht werden, oder kann in einem Fall, in dem (F + G) eine gerade Zahl ist, S zu dem Ergebnis der Berechnung gemacht werden.
  • Bei dem obigen Prozess wird jedes Mal, wenn die Operation zur modularen Multiplikation ausgeführt wird, das Ergebnis zu der wirklichen Lösung korrigiert. In dem Fall der Operation zur modularen Exponentiation, der durch ein RSA-Kryptosystem dargestellt wird, gibt es keine Notwendigkeit, jedes Mal eine Korrektur durchzuführen, eine Korrektur kann einmal beim letzten Mal gemacht werden.
  • Bei dem Prozess zur modularen Multiplikation, der für die bei einem RSA-Kryptosystem zu verwendende modulare Exponentiation Y^X MOD N verwendet wird, wenn der Prozess zur modularen Multiplikation A*B MOD N berechnet wird, werden sowohl der Multiplikator B als auch der Multiplikand A substituiert durch TN + B*(–1)^G beziehungsweise SN + A*(–1)^F (S, T, F, G sind ganze Zahlen, wobei F oder G jeweils 0 oder 1 sind), dann wird S wie folgt berechnet: S = (SN + A*(–1)^F)*(TN + B*(–1)^G) MOD N,und beim letzten Mal kann, falls erforderlich, eine Korrektur des Subtrahierens des berechneten Wertes der Operation zur modularen Exponentiation von N gemacht werden. Der Grund, warum man eine derartige Berechnung machen kann, wie oben beschrieben, wird bei der später zu beschreibenden bevorzugten Ausführungsform gemäß der vorliegenden Erfindung erläutert.
  • Wegen des Prozesses, wie oben beschrieben, ist ein Strom mit einem unterschiedlichen Muster von jenem des bei dem Prozess zur modularen Multiplikation zu erzeugenden Originalstroms zu beobachten, so dass es schwierig wird, die internen Prozesse basierend auf der Wellenform zu schätzen, die in einem Fall erwartet wird, wo die Originaldaten verwendet werden. Wenn S, T, F, G mit einer Informationsquelle geändert werden, die nicht von außen geschätzt werden kann, wird die Wirkung verstärkt. Insbesondere, wenn ein statistischer Prozess hinsichtlich des Nehmens des Mittelwerts von verschiedenen Arten von Wellenformen ausgeführt wird, wird er die charakteristischen Merkmale der Wellenformen auf die gleiche Weise löschen wie bei willkürlichen gemittelten Wellenformen, und die Wirkung wird weiter verstärkt.
  • Die vorliegende Erfindung kann beim Verstecken von Informationen, wie beispielsweise einer Operation zur modularen Multiplikation oder einer Berechnung zur modularen Exponentiation bei einem RSA-Kryptosystem und einer Multiplikation/Division auf dem Feld einer Definition oder eines skalaren Vielfachen eines Basispunkts bei dem Elliptische-Kurven-Kryptosystem verwendet werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist eine Außenansicht einer IC-Karte und der Konfiguration der Anschlüsse;
  • 2 ist ein Blockdiagramm eines Mikrocomputers;
  • 3 ist eine Ansicht, die Beispiele für Wellenformen von Verbrauchsströmen zeigt;
  • 4 ist eine Ansicht, die Verarbeitungsprozeduren einer Berechnung zur modularen Exponentiation (Additionskettenverfahren mit Fensterbreite 2 Bits) zeigt;
  • 5 ist eine Ansicht, die Verarbeitungsprozeduren einer Berechnung zur modularen Exponentiation (Gleitfensterverfahren mit Fensterbreite 2 Bits) zeigt;
  • 6 ist eine Ansicht, die eine Form einer elliptischen Kurve zeigt;
  • 7 ist eine veranschaulichende Ansicht zum Erläutern der Addition auf einer elliptischen Kurve;
  • 8 ist ein Berechnungsalgorithmus (Additionskettenverfahren mit 2 Bits) eines skalaren Vielfachen eines Punkts P auf einer elliptischen Kurve;
  • 9 ist eine Ansicht, die Verarbeitungsprozeduren bei einer Ausführungsform in einem Fall zeigt, in dem die vorliegende Erfindung auf eine Berechnung zur modularen Exponentiation angewandt wird, bei der das Montgomery'sche Verfahren verwendet wird;
  • 10 ist eine Ansicht, die Verarbeitungsprozeduren bei einer Ausführungsform in einem Fall zeigt, in dem die vorliegende Erfindung auf eine Berechnung zur modularen Exponentiation angewandt wird, bei der das Montgomery'sche Verfahren verwendet wird;
  • 11 ist eine Ansicht, die Verarbeitungsprozeduren einer Ausführungsform in einem Fall zeigt, in dem die vorliegende Erfindung auf eine gewöhnliche Berechnung zur modularen Exponentiation angewandt wird;
  • 12 ist eine Ansicht, die die Verarbeitungsprozeduren einer Ausführungsform in einem Fall zeigt, in dem die vorliegende Erfindung auf eine gewöhnliche Berechnung zur modularen Exponentiation angewandt wird;
  • 13 ist eine Ansicht, die Verarbeitungsprozeduren einer Ausführungsform in einem Fall zeigt, in dem die vorliegende Erfindung auf eine Berechnung zur modularen Exponentiation angewandt wird, bei der das Montgomery'sche Verfahren verwendet wird;
  • 14 ist eine Ansicht, die Verarbeitungsprozeduren einer Ausführungsform in einem Fall zeigt, in dem die vorliegende Erfindung auf eine Berechnung zur modularen Exponentiation angewandt wird, bei der das Montgomery'sche Verfahren verwendet wird (Fortsetzung von 13);
  • 15 ist eine veranschaulichende Ansicht, die Verarbeitungsprozeduren eines Beispiels in einem Fall zeigt, in dem ein Punkt auf einer elliptischen Kurve in GF(P) dupliziert wird;
  • 16 ist eine veranschaulichende Ansicht, die Verarbeitungsprozeduren eines Beispiels in einem Fall zeigt, in dem eine zusätzliche Berechnung eines Punkts auf einer elliptischen Kurve auf GF(P) angewandt wird;
  • 17 ist eine veranschaulichende Ansicht, die Verarbeitungsprozeduren eines Beispiels in einem Fall zeigt, in dem ein Punkt auf einer elliptischen Kurve auf GF(P^N) dupliziert wird;
  • 18 ist eine veranschaulichende Ansicht, die Verarbeitungsprozeduren eines Beispiels in einem Fall zeigt, in dem ein Punkt auf einer elliptischen Kurve auf GF(2^N) dupliziert wird; und
  • 19 ist eine veranschaulichende Ansicht, die Verarbeitungsprozeduren eines Beispiels in einem Fall zeigt, in dem ein Punkt auf einer elliptischen Kurve auf GF(P) hinzugefügt wird.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Bei nachstehend gezeigten Ausführungsformen werden RSA-Kryptosysteme repräsentativ für das Kryptosystem mit öffentlichem Schlüssel (Kryptosystem mit asymmetrischem Schlüssel) als Beispiele verwendet. Eine detaillierte Erläuterung über ein RSA-Kryptosystem wird in Eiji Okamoto "Angouriron Nyuumon" (Kyoritsu-Shuppan), und A. J. Menezes, P.C. Van Oorschot, S.A. Vanstone "Handbook of Applied Cryptography" (CRC-Press) gegeben. Elliptische-Kurven-Kryptosysteme werden nur zu veranschaulichenden Zwecken beschrieben. Detaillierte Erläuterungen gibt es jeweils über das Elliptische-Kurven-Kryptosystem, Neal Koblitz, "A Course in Number Theory and Cryptography", Graduate Texts in Mathematics 114, Springer-Verlag 1994, über die arithmetische Operation auf einer elliptischen Kurve, Joseph H. Silverman und John Tate, "Rational Points on Elliptic Curve", Springler-Verlag, 1992, und über das algebraische System, wie zum Beispiel "Gruppe", "Ring", "Feld" etc., in Kazuo Matsuzaka, "Daisuukei-Nyuumon", Iwanami Shoten.
  • Vor der Erläuterung von Ausführungsformen wird mathematisches Wissen dargelegt, um den Hintergrund der Erläuterung zu bilden. Im Allgemeinen wird bei dem Kryptosystem mit öffentlichem Schlüssel (Kryptosystem mit asymmetrischem Schlüssel) eine Geheimschlüsselinformation in dem öffentlichen Schlüssel eingeschlossen, und Kryptogramme sind auf der Grundlage aufgebaut, dass trotz dieser Tatsache das Herausnehmen einer Geheimschlüsselinformation aus einem öffentlichen Schlüssel aufgrund der Tatsache, dass für eine Berechnung viel Zeit notwendig ist, fast unrealistisch ist (Sicherheit basierend auf hoher Berechnungszeit). Als repräsentative Probleme, die eine auf Berechnungszeit basierende Sicherheit hat, können die Primfaktorzerlegung und das Diskreter-Logarithmus-Problem auf ei ner Gruppe angeführt werden. Was die erstere benutzt, ist das RSA-Kryptosystem, und was das letztere auf eine Mordell-Weil-Gruppe auf einer elliptischen Kurve zur Benutzung anwendet, ist das Elliptische-Kurven-Kryptosystem.
  • Das RSA-Kryptosystem wird kurz erläutert. Bei dem RSA-Kryptosystem werden ein Produkt N aus 2 großen Primzahlen P und Q, beispielsweise jeweils 512 Bits, N = PQ, und eine Zahl E (in vielen IC-Karten wird 3 oder 65537 verwendet) genommen, die mit N gegenseitig teilerfremd ist. Diese Zahlen N und E werden als öffentlicher Schlüssel in einer Datei für einen öffentlichen Schlüssel registriert. In dieser Situation überträgt ein Sender B Daten (einen Klartext) L, ausgedrückt durch eine Zahl größer als 1 und kleiner als N – 1 in verschlüsselter Form, Y = L^E MOD Nzu dem Besitzer A des öffentlichen Schlüssels, wobei L^E ein Ausdruck ist, der die E-te Potenz von L zeigt. Der Besitzer A, der den Chiffretext Y erhält, berechnet Y^X MOD Nunter Verwendung des geheimen Schlüssels X, der die unten gezeigte Gleichung erfüllt, XE MOD (P – 1)(Q – 1) = 1wobei (P – 1)(Q – 1) der Wert der Euler'schen Funktion Φ(N) in Relation zu N ist. Dieser Wert ist gleich der Zahl der natürlichen Zahlen, die mit N gegenseitig teilerfremd sind. Gemäß dem Euler'schen Theorem wird Y^((P – 1)(Q – 1) MOD N = 1aufgestellt. Da man auf der anderen Seite XE = 1 + K(P – 1)(Q – 1)schreiben kann, wobei K eine ganze Zahl ist, erhält man Y^X MOD N = L^(XE) MOD N = L^(1 + K(P – 1)(Q – 1)) MOD N = L*L^(K(P – 1)(Q – 1) MOD N = L
  • Deshalb ist der Besitzer A fähig, durch die Berechnung von "Y^X MOD N" den von dem Sender B gesendeten Originalklartext L wiederherzustellen. In diesem Fall werden für die Berechnung des geheimen Schlüssels X die Primfaktoren P und Q von N verwendet. Gegenwärtig ist kein Verfahren zur Berechnung von X ohne die Verwendung der Primfaktorenzerlegung bekannt, und die Faktorisierung eines Produktes aus großen Primzahlen erfordert eine enorm lange Zeitdauer. Somit ist, sogar wenn N der Öffentlichkeit bekannt gemacht wird, der geheime Schlüssel von A sicher.
  • Das repräsentative Implementierungsverfahren der Berechnung zur modularen Exponentiation, die bei der Operation zur Verschlüsselung/Entschlüsselung bei einem RSA-Kryptosystem zu verwenden ist, ist das Additionskettenverfahren und das Gleitfensterverfahren.
  • Zuerst wird unter Bezugnahme auf 4 eine Erläuterung über den Berechnungsalgorithmus bei dem Additionskettenverfahren gegeben. Dieses Verfahren wird am häufigsten benutzt. Bei diesem Verfahren werden die Bits in dem geheimen Schlüssel X in 2-Bit-Blocks geteilt; gemäß dem Blockwert, der irgendeiner aus 00, 01, 10 oder 11 ist, wird Y[0] = 1, Y[1] = Y, Y[2] = Y^2 MOD N oder Y[3] = Y^3 MOD N jeweils auf X in absteigender Ordnung von dem höchsten angewandt; und durch Ausführen der Berechnung zur modularen Multiplikation wird die Berechnung von Y^X MOD N verwirklicht. Bei dem Obigen erfolgt die Teilung in 2-Bit-Blocks zum Zweck der Erläuterung. In tatsächlichen Fällen können Blocks aus 1 Bit, 3 Bits oder 4 Bits möglich sein. Das Konzept des Verfahrens ist das gleiche.
  • Zuerst wird im Folgenden eine Bittabelle erstellt, Y[0] = 1, Y[1] = Y, Y[2] = Y^2 MOD N, Y[3] = Y^3 MOD N (Schritt 401). Anschließend wird eine Initialisierung ausgeführt (Schritt 402), an einer bedingten Verzweigung (Schritt 403) wird beurteilt, ob der Prozess bis zum letzten Bitblock des Indexes x beendet ist. Falls der Prozess beendet ist und falls nicht die Berechnung der 4ten Potenz ausgeführt wird, wird die Verarbeitungsprozedur abgeschlossen (Schritt 404). Diese Berechnung der 4ten Potenz (Schritt 404) wird unabhängig von den Bits von x ausgeführt, aber bei der bei den nächsten Schritten durchzuführenden Berechnung zur modularen Multiplikation werden bedingte Verzweigungsprozesse ausgeführt (Schritte 405, 406, 407, 408) und entsprechend den jeweiligen Bedingungen werden bei Schritten 409, 410, 411, 412 Berechnungen zur modularen Multiplikation ausgeführt.
  • Durch ein numerisches Beispiel wird einfach bestätigt, dass mit diesem Verfahren eine korrekte Berechnung ausgeführt werden kann. Da der wesentliche Teil dieses Berechnungsverfahrens ein Indexabschnitt ist, wird die folgende Gleichung als ein Beispiel mit numerischem Wert nur in dem Indexabschnitt angeführt. S = Y^219 MOD N.
  • Durch den binären Ausdruck wird 219 als 11011011 ausgedrückt. Basierend auf diesem Beispiel erfolgt eine Berechnung durch das Additionskettenverfahren mit 2-Bit-Breite. Wenn 11011011 in 2-Bit-Blocks geteilt wird, werden 11, 01, 10, 11 erhalten. Eine Initialisierung wird ausgeführt (S = 1), und dann wird die 4te Potenz davon im Modulo N erhalten. Die 4te Potenz von 1 ist gleich 1. Als Nächstes nimmt man den führenden Bitblock in dem Indexabschnitt auf. Da es 11 ist, wird S mit Y[3] = Y^3 MOD N multipliziert, und S = Y^3 MOD N wird erhalten. Als Nächstes, zurückgeführt und durch die 4te Potenz davon im Modulo N, wird Y^12 MOD N erhalten. Dann nimmt man den zweiten Bitblock von dem Anfang des Indexabschnitts auf. Da es 01 ist, wird S mit Y[1] = Y multipliziert, und S = Y^13 MOD N wird erhalten. Wieder zurückgeführt und durch die 4te Potenz davon im Modulo N, wird S = Y^52 MOD N erhalten. Dann nimmt man den dritten Bitblock von dem Anfang des Indexabschnitts auf. Da es 10 ist, wird S mit Y[2] = Y^2 MOD N multipliziert, und S = Y^54 MOD N wird erhalten. Wieder zurückgeführt und durch die 4te Potenz davon im Modulo N, wird S = Y^216 MOD N erhalten. Dann nimmt man den vierten Bitblock des Indexabschnitts auf. Da es 11 ist, wird S mit Y[1] = Y^3 MOD N multipliziert, und S = Y^219 MOD N wird erhalten. Dies ist die zu findende Lösung.
  • Als Nächstes wird unter Bezugnahme auf 5 als ein weiterer repräsentativer Algorithmus zur modularen Exponentiation das Gleitfensterverfahren erläutert. Bei diesem Beispiel wird angenommen, dass die maximale Verarbeitungseinheit von X bei der Berechnung von Y^X MOD N 2 Bits hat. Zuerst wird eine Tabelle von Y[2] = Y^2 MOD N und Y[3] = Y^3 MOD N erstellt (Schritt 501). Als Nächstes wird S zu 1 initialisiert (Schritt 502), und dann wird beurteilt, ob der Prozess an dem letzten Bitblock des Indexes X ausgeführt worden ist (Schritt 503). Falls er beendet ist, wird die Verarbeitung abgeschlos sen und falls er es nicht ist, wird eine arithmetische Operation zum modularen Quadrat durchgeführt (Schritt 504). Man nimmt 1 Bit des Indexes x auf (Schritt 505) und falls es nicht 1 ist, wird die Verarbeitungsprozedur zu dem bedingten Verzweigungsprozess (Schritt 503) zurückgegeben. Falls dieses Bit 1 ist, wird eine arithmetische Operation zum modularen Quadrat durchgeführt (Schritt 507). Als Nächstes wird beurteilt, ob das nächste Bit von X erhalten wird oder nicht (Schritt 508) und ob die Verarbeitungsprozedur nicht zu dem bedingten Verzweigungsprozess (Schritt 503) zurückgegeben wird, aber in diesem Fall ist der Prozess bis zu dem letzten Bitblock von X beendet worden. Somit wird die Bedingung bei Schritt 503 "JA" und der Prozess wird abgeschlossen. In einem Fall, in dem der nächste Bitblock von X erhalten wird, wird bei dem bedingten Verzweigungsprozess (Schritt 509) entsprechend der Tatsache, dass das Bit 1 oder 0 ist, jeweils eine arithmetische Operation zum modularen Quadrat durchgeführt (Schritte 510, 511), und die Verarbeitungsprozedur wird zu dem bedingten Verzweigungsprozess (Schritt 503) zurückgegeben.
  • Auch dieser Prozess wird numerisch bestätigt. Als Beispiel wird der folgende Ausdruck angeführt. Wenn man S = Y^2226 MOD Nberechnet, wird eine Tabelle von Y[2] = Y^2 MOD N und Y[3] = Y^3 MOD N erstellt. In diesem Fall sind Y[0], Y[1] nicht notwendig. Ein Numeral 2226 wird in Binärschreibweise als 100010110010 geschrieben. Man untersucht diese Bitfolge in der absteigenden Ordnung, und wenn ein 2-Bit-Block eine 1 in der höheren Ordnung hat, betrachtet man ihn als eine Gruppe, und wenn es mit einer unabhängigen 0 weitergeht, wird angenommen, dass eine arithmetische Operation zum modularen Quadrat durchgeführt wird. Kurz gesagt, man versteht, dass 100010110010 in 10, 0, 0, 10, 11, 0, 0, 10 zerlegt werden kann. Deshalb wird nach der Initialisierung zu S = 1 zuerst der Prozess, der 10 entspricht, das heißt, eine arithmetische Operation zum modularen Quadrat von S durchgeführt, dadurch wird S mit Y[2] multipliziert. In diesem Fall setzt man S = Y[2] = Y^2 MOD N. Als Nächstes wird der Prozess, der 0 entspricht, das heißt, eine arithmetische Operation zum modularen Quadrat durchgeführt, und man erhält S = Y^4 MOD N. Der Prozess, der der angrenzenden 0 entspricht, S = Y^8 MOD N, wird durchgeführt. Wenn als Nächstes der Prozess für 10 durchgeführt wird, erhält man S = ((Y^8 MOD N)^4 MOD N*Y^2 MOD N) MOD N = Y^34 MOD N. Bei dem folgenden Prozess, der 11 entspricht, wird S = ((Y^34 MOD N)^4*Y^3 MOD N) MOD N = Y^139 MOD N durchgeführt. Weiterhin wird entsprechend den 2 aufeinander folgenden Nullen die modulare arithmetische Operation zur 4ten Potenz durchgeführt und man erhält S = (Y^139 MOD N)^4 MOD N = Y^556 MOD N, und bei dem letzten Schritt entsprechend der letzten 10 erhält man S = ((Y^556 MOD N)^4 MOD N*Y^2 MOD N) MOD N = Y^2226 MOD N. Somit wird die zu findende Lösung erhalten. Da bei diesem Verfahren nur die Indexbits mit dem führenden Bit 1 in eine Tabelle gesetzt werden, beträgt die dafür erforderliche RAM-Kapazität die Hälfte von jenen anderen Verfahren.
  • Es ist anzumerken, dass das oben genannte Additionskettenverfahren und Gleitfensterverfahren unter Verwendung einer Technik durchgeführt werden kann, die als das Montgomery'sche Verfahren bezeichnet wird. Das Montgomery'sche Verfahren ist eines, das für die Hochgeschwindigkeitsdurchführung der arithmetischen Operation zur modularen Multiplikation, AB MOD N, zu verwenden ist. Insbesondere ist das Montgomery'sche Verfahren für eine Implementierung durch Hardware geeignet. Der Algorithmus des Verfahrens wird kurz erläutert. Für die detaillierte Beschreibung siehe bei Montgomery, "Modular Multiplication Without Trial Division", Mathematics of Computation 44, 170, S. 519-521 (1985).
  • Das Wesentliche des Montgomery'schen Verfahrens liegt in der Nutzung der Tatsache, dass in fast allen Computern die arithmetische Operation von MOD 2^N durch Vernachlässigung von Bits höherer Ordnung verwirklicht werden kann. Mit anderen Worten, das Wesentliche des Montgomery'schen Verfahrens liegt darin, dass die Berechnung von AB MOD N durch arithmetische Operationen im Modulo (Potenz 2) ersetzt wird. Im RSA-Kryptosystem ist, da N ein Produkt aus großen Primzahlen ist, es eine ungerade Zahl; deshalb ist es mit einer willkürlichen Potenz 2 gegenseitig teilerfremd. Dann kann man eine diophantische Gleichung mit Unbekannten, M und W, betrachten, AB + MN = WRwobei angenommen wird, dass die Bitlänge von A und B N ist und R = 2^n. In diesem Fall hat diese Gleichung eine unendliche Zahl von Lösungen. Wenn man M so finden kann, ist W kongruent mit ABR^(–1) MOD N. Da M's regelmäßig mit Abständen von einem R angeordnet sind, kann es einen nicht negativen Wert kleiner als der Wert von R annehmen. In diesem Fall nimmt W den Wert von ABR^(–1) MOD N oder ABR^(–1) MOD N + N an. Im Fall des Letzteren wird N von W subtrahiert, um eine Ziellösung zu erhalten.
  • Wie oben gezeigt, wird bei dem Montgomery'schen Verfahren eine arithmetische Operation in der Form von ABR^(–1) MOD N ausgeführt. Deshalb werden bei dem oben genannten Algorithmus beispielsweise bei dem Tabellenerstellungsprozess, der in 401, gezeigt in 4, für das Additionskettenverfahren und in 501, gezeigt in 5, für das Gleitfensterverfahren ausgeführt wird, die Werte der jeweiligen Tabelle für die nachfolgende Verarbeitung durch die Werte Y[0] = R MOD N, Y[1) = Y*R MOD N, Y[2] = Y^2*R MOD N, Y[3] = Y^3*R MOD N ersetzt. Der Anfangswert von S wird auch als R MOD N eingestellt. Dann werden die Werte des Multiplikanden A und des Multiplikators B jeweils R-Vielfache des Originalwertes; deshalb bleibt bei dem Prozess von ABR^(–1) MOD N ein Term aus R-Vielfachen übrig. Wenn man dieses Format als das Montgomery'sche Format bezeichnet, werden sowohl das Additionskettenverfahren als auch das Gleitfensterverfahren im Montgomery'schen Format durchgeführt, und man ist in der Lage, bei dem letzten Schritt des Multiplizierens mit R^(–1) MOD N die zu findende Lösung zu erhalten.
  • Als Nächstes wird zum Zweck einer späteren Erläuterung eine kurze Erläuterung über die Überlaufverarbeitung bei dem Prozess zur modularen Multiplikation gegeben. Obwohl es geringfügige Unterschiede zwischen den Überlaufverarbeitungen gemäß der Implementierung der Verarbeitungseinheiten gibt, wird eine repräsentative erläutert. Das einfachste Verfahren ist, dass zuerst A*B berechnet wird, und falls das Ergebnis weniger als N ist, A*B zu der Lösung gemacht wird, und falls A*B größer als N ist, N von dem Produkt subtrahiert wird, bis das Ergebnis weniger als N wird; somit kann A*B MOD N erhalten werden. Kurz gesagt, bedeutet in diesem Fall der "Überlauf', dass A*B gleich N ist oder größer als N wird, und die "Überlaufverarbeitung" meint nichts anderes als die Verarbeitung zur Durchführung einer Subtraktion von N von A*B, bis es geringer als N wird. Bei diesem Verfahren ist, soweit die Bitlänge von A*B kurz ist, die Kodierungsmenge klein und die Verarbeitungszeit ebenfalls vernachlässigbar, wohingegen, wenn die Bitlänge groß wird, die Verarbeitungszeit mit einer energielosen Vorrichtung, wie einer IC-Karte, sehr groß wird, was dazu führt, dass dieses Verfahren nicht oft benutzt wird.
  • Ein weiteres Problem ist der Überlauf, der bei dem Montgomery'schen Verfahren auftritt. Wie vorher kurz erläutert, wird bei Kenntnisnahme, dass es bei dem Montgomery'schen Verfahren schneller ist, zu versuchen, den Rest im Modulo R = 2^n zu finden (n zeigt die Bitzahl von A und B) als einen Rest im Modulo N (ungerade Zahl) zu berechnen, die Berechnung von A*B*R^(–1) MOD N zu der Operation zum Finden von M = –A*B*N^(–1) MOD R in der oben genannten diophantischen Gleichung umgewandelt: AB + MN = WR.
  • Es gibt ein M in dem Bereich von 0 bis R – 1. Das Finden von M bedeutet nicht, dass der Wert des Ausdrucks A*B*R^(–1) MOD N bestimmt ist. (Im Folgenden wird er als Montgomery'sche Gleichung bezeichnet.) Falls A, B in dem Rest im Modulo N resultieren, hat man A & LT; N & LT; R, und auch B & LT; N & LT; R, und man hat auch M & LT; R. Deshalb W = (AB + MN)/R & LT; (NR + RN)/R = 2N
  • Kurz gesagt, W ist kleiner als 2N, aber W kann größer als N sein. Tatsächlich existiert ein solcher Fall. In jenem Fall soll N einmal subtrahiert werden. In diesem Fall bedeutet "Überlauf', dass W größer als N wird, und "Überlaufverarbeitung" bedeutet die Operation, N einmal zu subtrahieren.
  • Im Fall des RSA-Kryptosystems ist es klar, dass eine Operation einer arithmetischen Operation zur modularen Multiplikation vorkommt, aber im Fall eines Elliptische-Kurven-Kryptosystems ist es keine offensichtliche Sache. Somit wird eine kurze Erläuterung über das Elliptische-Kurven-Kryptosystem gegeben. Eine elliptische Kurve ist eine Menge von Nullpunkten eines Polynoms der dritten Ordnung, definiert auf dem Feld K. Wenn die Charakteristik nicht 2 ist, hat sie eine kanonische Form, Y^2 = X^3 + AX+ B
  • Auf dem Feld mit den Charakteristiken 2 hat eine elliptische Kurve eine kanonische Form, Y^2 + CY = X^3 + AX + B,oder Y^2 + XY = X^3 + AX + B
  • (In beiden Fällen soll ein Punkt im Unendlichen 0, der später zu erläutern ist, in die Betrachtung eingeschlossen werden.) Die Form einer elliptischen Kurve ist in 6 gezeigt.
  • Ein Kryptosystem erfordert nur ein endliches Feld (Galois-Feld) als das definierte Feld, so dass nur der Fall erläutert wird. Ein Feld, das aus einer endlichen Zahl von Elementen zusammengesetzt ist, wird ein endliches Feld oder Galois-Feld genannt, und der Aufbau ist gut bekannt. Seine einfachste Zusammensetzung ist unten gezeigt. Es soll zuerst ein Restring ZP eines ganzzahligen Rings betrachtet werden, wobei eine Primzahl P der Modulo ist. Der ZP fällt als eine Menge mit {0, 1, 2, ---, P – 1 } zusammen. Die Summe (+) und das Produkt (*) in ZP sind wie unten gezeigt definiert, A (+) B = (A + B) MOD P A (*) b = (A*B) MOD P
  • Jedes Element außer 0 hat ein inverses Element in Bezug auf (*), und es hat den Aufbau eines Feldes. Dieses wird ein Primzahlenfeld genannt und wird als GF(P) geschrieben. Dies ist das primitivste Beispiel für ein endliches Feld. Im Folgenden wird, soweit keine Verwechslung auftreten kann, (+) wie gewöhnlich als + geschrieben und (*) wird ebenfalls wie gewöhnlich durch * ausgedrückt. Betreffend ein Produkt kann A*B als AB geschrieben werden.
  • Als Nächstes soll ein Polynom F(X) betrachtet werden, das die Elemente von GF(P) als seine Koeffizienten hat, und ein neues Feld kann durch Addieren von dem, was in GF(P) unter den Nullpunkten nicht eingeschlossen ist, zu GF(P), aufgebaut werden. Dies wird ein algebraisches Erweiterungsfeld von GF(P) mit endlichem Grad genannt. Es ist bekannt, dass die Zahl der Elemente in einem algebraischen Erweiterungsfeld von GF(P) mit endlichem Grad eine Potenz von P ist. Wenn die Zahl der Elemente als P^N geschrieben wird, kann das algebraische Erweiterungsfeld mit endlichem Grad als GF(P^N) ausgedrückt werden.
  • Gemäß dem Homomorphismus-Theorem (Kazuo Matsuzaka, "Daisuu Nyuumon", S. 125, Iwanami) ist GF(P^N) isomorph mit einem Restring GF(P)[X]/(F(X)) betreffend das Ideal erzeugt durch das gesamte Vielfache von F(X)-- ein unzerlegbares Polynom des Grades N eines Rings GF(P)[X] erzeugt durch das gesamte Polynom of GF(P)-Koeffizienten. In diesem Fall gehört es, soweit F(X) unzerlegbar ist, zu dem gleichen Ring. Deshalb kann man ein echtes unzerlegbares Polynom des Grades N bestimmen, und ähnlich dem Fall von ZP kann durch Definierung der Summe und des Produkts als Summe und Produkt bei MOD F(X) die Operation von GF(P^N) auf einem Mikrocomputer verwirklicht werden.
  • Für die Implementierung auf einer IC-Karte sind insbesondere der Fall des Primzahlenfelds GF(P) (P ist eine Primzahl) und der Fall des Binärfelds GF(2^N) wichtig. Es gibt ein Verfahren zur Verwirklichung von GF(P^N), indem die Größe von P zu der Ordnung einer Registergröße in einem Mikrocomputer gemacht wird, und nun sind die Untersuchungen darüber in der Entwicklung.
  • Zwischen den Punkten auf einer elliptischen Kurve kann eine arithmetische Operation definiert werden. Wie in 7 gezeigt, wird, wenn es 2 Punkte P und Q auf einer elliptischen Kurve gibt, eine gerade Linie durch diese 2 Punkte gezeichnet (Wenn P = Q, zeichne eine Tangente.). Der Schnittpunkt der geraden Linie wird mit einer weiteren elliptischen Kurve als R gesetzt. Wegen der Symmetrie der Kurve ist der symmetrische Punkt von R in Bezug auf die x-Achse auch ein Punkt auf der elliptischen Kurve. Dieser Punkt wird als P + Q geschrieben und wird als die "Summe" von P und Q definiert. Wenn es keinen Schnittpunkt gibt, wird als ein virtueller Punkt ein Punkt im Unendlichen angesehen und so betrachtet, dass die gerade Linie und die elliptische Kurve sich an dem virtuellen Punkt schneiden. Der Unendlichkeitspunkt wird als 0 geschrieben. Ein Punkt, der an einer symmetrischen Position eines Punkts P auf einer elliptischen Kurve in Bezug auf die x-Achse liegt, wird ein inverses Element von P genannt und als -P ausgedrückt. Unter der Verwendung dieser "Summe" wird, was durch K-maliges Addieren eines Punkts P gebildet wird, als KP geschrieben. Was durch K-maliges Addieren eines Punkts -P gebildet wird, wird als -KP geschrieben. KP oder -KP wird ein skalares Vielfaches von P genannt. Die Koordinaten dieser Punkte können durch rationale Ausdrücke der Koordinaten der Punkte P und Q ausgedrückt werden; deshalb ist es möglich, diese arithmetischen Operationen auf einem allgemeinen Feld zu betrachten. Diese "Summierung" ist ähnlich einer gewöhnlichen Summierung, wo das Assoziativgesetz und das Kommutativgesetz aufgestellt sind. Betreffend diese Summierung spielt der Punkt im Unendlichen 0 die Rolle der 0 in der gleichen Weise wie bei einer Operation mit gewöhnlichen Zahlen. Wenn -P zu P addiert wird, kann 0 erhalten werden. Dies zeigt, dass eine Additionsoperation auf einer elliptischen Kurve den Aufbau einer Abelschen Gruppe hat. Diese kann als Mordell-Weil-Gruppe bezeichnet werden. Wenn eine elliptische Kurve E und ein definierendes Feld GF(Q) (Q = P^N) festgelegt sind, kann eine Mordell-Weil-Gruppe als G(E/GF(Q)) geschrieben werden. Der Aufbau von G(E/GF(Q)) ist sehr einfach, und es ist bekannt, dass es ein Isomorphismus einer zyklischen Gruppe oder eines direkten Produkts von 2 zyklischen Gruppen wird. Unter dem Gesichtspunkt der Kryptologie ist es in einem Fall, in dem es in der Form einer zyklischen Gruppe oder eines direkten Produkts von 2 zyklischen Gruppen ist, erwünscht, dass die Ordnung von jedem der beiden (die Originalzahl) durch eine große Primzahl teilbar ist.
  • Die Koordinaten der Summe eines Punkts P = (X1, Y1) und eines Punkts Q = (X2, Y2), P + Q werden als (X3 + Y3) gesetzt. Wenn P + Q nicht Null ist, wird der unten gezeigte Ausdruck aufgestellt. Im Fall einer IC-Karte gibt es keinen positiven Grund, die Charakteristik 3 zu benutzen, so dass im Folgenden der Fall der Charakteristik 3 weggelassen wird. Von den im Folgenden betrachteten elliptischen Kurven wird angenommen, dass sie nicht-singulär sind.
  • In dem Fall, in dem die Charakteristik nicht 2 oder 3 ist, wird für Y^2 = X^3 + AX + B: X3 = H^2 – X1 – X2, Y3 = H(X1 – X3) – Y1,erhalten, wobei H = (Y2 – Y1)/(X2 – X1), wenn P nicht gleich Q ist, und H = (3X1^2 + A)/(2Y1), wenn P gleich Q ist.
  • In dem Fall, in dem die Charakteristik 2 ist, wird für Y^2 + XY = X^3 + AX + B: X3 = H^2 + H + X1 + X2 + A Y3 = H(X1 + X3) + X3 + Y1,erhalten, wobei H = (Y1 + Y2)/(X1 + X2), wenn P nicht gleich Q ist, und H = X1 + (Y1/X1), wenn P gleich Q ist.
  • Bei der obigen Additionsgleichung soll eine Operation auf dem Galois-Feld GF(P^N) ausgeführt werden. Deshalb werden beispielsweise auf GF(P) (P ist eine große Primzahl) die folgenden Ausdrücke durchgeführt, X3 = (H^2 – X1 – X2) MOD P Y3 = (H(X1 – X3) – Y1) MOD P
  • Die Berechnung von H muss auch auf dem MOD P ausgeführt werden. Kurz gesagt, H = (Y2 – Y1)/(X2 – X1) kann interpretiert werden als H = (Y2 – Y1)*{(X2 – X1)^(–1) MOD P} MOD P.
  • Auch in dem Fall von GF(P^N), wie oben erwähnt, muss schließlich eine Berechnung zur modularen Multiplikation eines Polynoms ausgeführt werden, und so kann es auf ähnliche Weise verstanden werden.
  • Im Allgemeinen erfordert es, sogar falls der Wert von KP = Q bekannt ist, eine enorme Menge an Berechnungen, um den Wert von K herauszufinden. Somit wird K nicht leicht herausgefunden. Dies wird als Diskreter-Logarithmus-Problem auf einer elliptischen Kurve bezeichnet. Ein Elliptische-Kurven-Kryptosystem nutzt die Schwierigkeiten des Diskreter-Logarithmus-Problems auf einer elliptischen Kurve aus. Es gibt viele Arten von Kryptosystemen, die eine elliptische Kurve benutzen. An dieser Stelle wird insbesondere die elliptische Elgamal-Technik erläutert. Es wird angenommen, dass die ellip tische Kurve E und ein Punkt P auf der elliptischen Kurve (im Allgemeinen ein Punkt mit einer großen Ordnung, ein Basispunkt genannt) der Öffentlichkeit bekannt gemacht werden.
  • Es wird angenommen, dass Mr. A eine geheime Information M an Mr. B übertragen wird. (Die Information M wird mit einem Punkt auf einer elliptischen Kurve ausgedrückt. Über die Einbettung eines Klartextes (Chiffretextes) auf einer elliptischen Kurve wird eine Erläuterung in Neal Koblitz, "A Course in Number Theory and Cryptography", Graduate Texts in Mathematics 114, Springer-Verlag, 1994, S. 253, gegeben.)
  • Schritt 1. Der Empfänger Mr. B wählt eine positive ganze Zahl X[B] aus und behält sie als einen geheimen Schlüssel und registriert Y[B] = X[B]P in dem Öffentlicher-Schlüssel-Register.
  • Schritt 2. Sender Mr. A überträgt die folgenden Werte an Mr. B unter der Verwendung einer Zufallszahl R, C1 = RP C2 = M + RY(B)
  • Schritt 3. Empfänger Mr. B empfängt C1 und C2 und stellt M unter der Verwendung seines geheimen Schlüssels X[B], wie unten gezeigt, wieder her, C2 – X[B]C1 = M
  • Unabhängig von dem elliptischen Elgamal-Kryptosystem ist es bei dem Elliptische-Kurven-Kryptosystem notwendig, das skalare Vielfache eines Punkts auf der elliptischen Kurve zu berechnen. Der Algo rithmus zum Finden des skalaren Vielfachen eines Punkts auf einer elliptischen Kurve ist ähnlich der Berechnung zur modularen Exponentiation. Ein Standardalgorithmus zum Berechnen von KP (K ist eine positive ganze Zahl) auf eine ähnliche Weise wie bei der Berechnung zur modularen Exponentiation wird erläutert, bei dem eine Verarbeitung auf jedem Zwei-Bit-Block, wie in 8 gezeigt, ausgeführt wird. Zuerst wird zum Verarbeiten von 2 Bits gleichzeitig eine Tabelle des Basispunkts P erstellt. Bei der Operation zur modularen Exponentiation werden entsprechend der 0. Potenz, 1. Potenz, 2. Potenz, 3. Potenz in MOD N 0 (Punkt im Unendlichen), P, 2P, 3P erstellt (Schritt 801). Unterschiedlich von dem Fall einer Operation zur modularen Exponentiation muss diese Tabelle nicht bei Bedarf neu geschrieben werden, sondern kann vorher erstellt werden. Als Nächstes wird der Wert eines Punkts zur Berechnung initialisiert (Schritt 802). Als Nächstes wird, nachdem das Zweifache von Punkt S berechnet ist (Schritt 803), beurteilt, ob der Prozess durchgeführt worden ist, bis das letzte Bit von K erreicht ist (Schritt 804), und falls nicht, wird eine bedingte Verzweigung gemäß einem 2-Bit-Wert von K genommen (Schritte 805, 806, 807, 808), und die entsprechenden Werte, Punkte P[0], P[1], P[2], P[3], werden addiert (Schritte 809, 810, 811, 812). Dieser Prozess wird bis zu dem letzten Bit von K fortgesetzt, und dadurch kann KP berechnet werden. Dieses Verfahren zur Berechnung wird durch Aufnehmen von jeweils 2 Bits aus der höchsten Ordnung ausgeführt. Es ist bekannt, dass es mathematisch den gleichen Aufbau hat wie denjenigen der Berechnung zur Modulo-Exponentiation. Es ist auch leicht, es durch das Gleitfensterverfahren zu ersetzen. Man kann es so betrachten, dass die Operation zur modularen Exponentiation bei RSA oder die Additionsoperation auf der elliptischen Kurve die Operation ist, die auf dem algebraischen System, ZN oder G(E/GF(Q)), ausgeführt wird. Sie wird später noch einmal erläutert.
  • Andererseits gibt es, wenn ein Mikrocomputer interne Programme durchführt, eine Möglichkeit, dass die Energie, die verbraucht wird, nach außen durchsickert. Wenn dieser Prozess von einem Mikrocomputer verwirklicht wird, könnte der Prozess auf einem geheimen Schlüssel der Bedrohung eines Durchsickerns ausgesetzt sein. Beispielsweise wird gemäß dem Bitblockwert von K (bei diesem Beispiel jeweils 2 Bits) eine entsprechende Verzweigung genommen. Falls der Prozess als Änderung des Verbrauchsstroms offenbart wird, könnten die Bits von K aus der Stromwellenform identifiziert werden.
  • In Anbetracht der obigen Umstände werden die Ausführungsformen gemäß der vorliegenden Erfindung erläutert. Der in 9 gezeigte Prozess ist ein typisches Anwendungsbeispiel der vorliegenden Erfindung. Die vorliegende Ausführungsform zeigt die Durchführung einer Berechnung zur modularen Exponentiation, Y^X MOD N, durch das Additionskettenverfahren. Jedoch wird bei der vorliegenden Ausführungsform eine Berechnung zur modularen Exponentiation in einem RSA-Kryptosystem unter der Verwendung einer Verarbeitung zur modularen Multiplikation nach dem Montgomery'schen Verfahren ausgeführt. Bei diesem Prozess wird eine arithmetische Operation zur modularen Multiplikation benutzt, die als A*B*R^(–1) MOD N bezeichnet wird. Wie oben beschrieben, bezeichnet N eine ungerade Zahl (im Allgemeinen ist in einem RSA-Kryptosystem N ein Produkt aus großen Primzahlen P und Q und eine ungerade Zahl), und R = 2^n (n bezeichnet die Bitlänge der Daten).
  • Zuerst wird bei Schritt 901 nach dem Setzen von S = R MOD N eine Zähleinrichtung J zum Zählen der Anzahl der Bitblocks von X zu 0 initialisiert, und die Variable V[0] zum Beurteilen der bedingten Verzweigung wird auf 0 gesetzt. Als Nächstes werden die Tabellen zum Verarbeiten bei einem 2-Bit-Additionskettenverfahren erstellt (Schritt 902). In diesem Fall wird zusätzlich zu der Originaltabelle (903), die für einen gewöhnlichen Additionskettenprozess notwendig ist, Y[0][0] = R MOD N, Y[1][0] = YR MOD N, Y[2][0] = Y^2R MOD N, Y[3][0] = Y^3R MOD N, auch eine Inversionstabelle (904) im Modulo N, Y[0][1] = N – (R MOD N), Y[1][1] = N – (YR MOD N), Y[2][1] = N – (Y^2R MOD N), Y[3][1] = N – (Y^3R MOD N), erstellt. Die Tabellen existieren üblicherweise auf einem RAM. Nach der Fertigstellung dieser Tabellen wird bei dem bedingten Verzweigungsprozess (Schritt 905) untersucht, ob der Index x bis zu dem letzten Bit gelesen worden ist (falls alle Bits aufgenommen worden sind). Falls der Prozess für alle Bitblocks nicht beendet worden ist, wird der Prozess zu Schritt 906 zum Generieren von Zufallszahlen [J] vorgerückt (Schritt 906). Diese Zufallszahl ist 0 oder 1. Als Nächstes wird S = S^2*R^(–1) MOD N zweimal durchgeführt (Schritt 907). Da bei dem ersten Schritt S zu S = R MOD N initialisiert wird, wird das Ergebnis der arithmetischen Operation zum Modulo-Quadrat zu S = (R MOD N)^2*R(–1) MOD N = R MOD N. Es ist anzumerken, dass das Verarbeitungsergebnis von Schritt 907 zu R MOD N wird. Als Nächstes wird bei bedingten Verzweigungsprozessen (Schritte 908, 909, 910, 911) ein 2-Bit-Block des Indexes x gelesen. Entsprechend dem Wert des Bitblocks: 00, 01, 10 oder 11 in Binärschreibweise (in der Figur wird der Block ausgedrückt als "2-Bit-Block von x") wird der Prozess zu Schritt 912, 913, 914 oder 915 zum Ausführen einer arithmetischen Operation zur modularen Multiplikation verzweigt. Bei dieser arithmetischen Operation zur modularen Multiplikation wird dementsprechend, ob V[J] 0 oder 1 ist, ein unterschiedlicher Wert auf der Tabelle verwendet. Falls beispielsweise der Bitblock von X 10 ist, wird in einem gewöhnlichen Fall s = S*Y[2][0]*R^(–1) MOD N = S*(Y^2R MOD N) MOD N berechnet, aber wenn V[J] = 1, wird Y[2][1] aus der Inversionstabelle genommen, um S = S*Y[2][1]*R^(–1) MOD N = S*(N – (Y^2R MOD N))*R^(–1) MOD N zu berechnen (Schritt 914). Auch bei dem Prozess von Schritt (912, 913 oder 915) wird gemäß dem Wert von V(J] der Wert des Multiplikators geändert. Nach Beendigung des arithmeti schen Prozesses zur modularen Multiplikation wird bei Schritt 921 die Zählereinrichtung inkrementiert, und der Prozess wird zu Schritt 905 zurückgebracht. Bei dem bedingten Verzweigungsprozess (Schritt 905) wird, wenn alle Bitblocks des Indexes x gelesen worden sind, die Prozedur zu dem Prozess von Schritt 916 vorgerückt. Bei Schritt 916 wird ein Prozess des Multiplizierens von R^(–1) MOD N ausgeführt, um die Daten im Montgomery'schen Format (Daten multipliziert mit R MOD N) zu dem gewöhnlichen Wert zurückzubringen. Als Nächstes wird T = N – S berechnet, und das Ergebnis wird auf einen RAM gelegt (Schritt 917). S und T werden auf den unterschiedlichen Bereichen auf dem RAM gespeichert, und die Duplizierung soll auf dem RAM nicht erfolgen. Bei der bedingten Verzweigung (Schritt 918) wird, falls der letzte Wert von V 1 ist, T ausgegeben (Schritt 919), und falls V = 0, wird S ausgegeben (Schritt 920). Es ist offensichtlich, dass aufgrund der Tatsache, dass (tN – B)^2 MOD N = B^2 MOD N (t ist eine ganze Zahl), ein korrekter Wert ausgegeben wird.
  • Durch die Prozesse, wie oben beschrieben, wird die Überlaufverarbeitung zu derjenigen, die unterschiedlich von der originalen ist. Somit wird es schwierig, eine interne Verarbeitung durch die Beobachtung des Stromverbrauchs oder der Verarbeitungszeit zu schätzen. Wenn A in A*B MOD N substituiert wird durch SN + A*(–1)^F und B in A*B MOD N substituiert wird durch TN + B*(–1)^G (s, t, f, g sind ganze Zahlen), ist dies ein Beispiel für das spezielle Setzen von (S, T, F, G) = {(0, 0, 0, 0), (0, 1, 0, 1)} (innerhalb der {} sind die Elemente einer Menge gezeigt).
  • Bei der obigen Ausführungsform wird V[J] betreffend jedes J als eine Zufallszahl variiert, aber es gibt ein Verfahren, bei dem der Wert von J, J = 0, 1, ---, M – 1 (M zeigt die Zahl von Bitblocks), von Anfang an zufällig als 0 oder 1 vorgegeben wird. Dies ist in 10 gezeigt. Zuerst wird bei Schritt 1001 nach dem Setzen von S = R MOD N, eine Zähleinrichtung J zum Zählen der Anzahl der Bitblocks von X zu 0 initialisiert. Als Nächstes werden die Tabellen zum Verarbeiten eines 2-Bit-Additionskettenverfahrens erstellt (Schritt 1002). In diesem Fall wird zusätzlich zu der Originaltabelle (1003), die für einen gewöhnlichen Additionskettenprozess notwendig ist, Y[0][0] = R MOD N, Y[1][0] = YR MOD N, Y[2] (0] = Y^2R MOD N, Y[3][0] = Y^3R MOD N, auch eine Inversionstabelle (1004) im Modulo N, Y[0][1] = N – (R MOD N), Y[1][1] = N – (YR MOD N), Y[2][1] = N – (Y^2R MOD N), Y[3][1] = N – (Y^3R MOD N), erstellt. Die Tabellen befinden sich üblicherweise auf einem RAM. Nach der Erstellung der Tabellen wird der Prozess zu Schritt 1005 vorgerückt, um Zufallszahlen V zu generieren. Diese Zufallszahl ist 0 oder 1. Als Nächstes wird bei einer bedingten Verzweigung (Schritt 1006) untersucht, ob der Index x bis zu dem letzten Bitblock gelesen worden ist (falls alle Bitblöcke aufgenommen worden sind). Als Nächstes wird S = S^2*R^(–1) MOD N zweimal durchgeführt (Schritt 1007). Es ist anzumerken, dass bei dem ersten Prozess, da S zu R MOD N initialisiert wird, S durch modulare Quadratexponentiation zu S = (R MOD N)^2*R^(–1) MOD N = R MOD N wird. Als Nächstes wird bei bedingten Verzweigungsprozessen (Schritte 1008, 1009, 1010, 1011) ein 2-Bit-Block des Indexes x gelesen. Gemäß dem Wert des Bitblocks: 00, 01, 10 oder 11 in Binärschreibweise wird der Prozess zu Schritt 1012, 1013, 1014, 1015 verzweigt, um eine arithmetische Operation zur modularen Multiplikation auszuführen. Bei der arithmetischen Operation zur modularen Multiplikation wird dementsprechend, ob V 0 oder 1 ist, ein unterschiedlicher Tabellenwert verwendet. Wenn beispielsweise der Bitblock von X 10 ist, wird in einem gewöhnlichen Fall S = S*Y[2][0]*R^(–1) MOD N = S*(Y^2R MOD N) MOD N berechnet, aber wenn V = 1, wird Y[2][1] aus der Inversionstabelle heraus genommen, um S = S*Y[2][1]*R^(–1) MOD N = S*(N – (Y^2R MOD N))*R^(–1) MOD N zu berechnen (Schritt 1014). Auch bei dem Prozess von Schritt 1012, 1013, 1015 wird der Wert des Multiplikators entsprechend dem Wert von V geändert. Nach Beendigung des arithmetischen Prozesses zur modularen Multiplikation wird bei Schritt 1021 die Zähleinrichtung inkrementiert, und der Prozess wird zu Schritt 1005 zurückgegeben. Bei dem bedingten Verzweigungsprozess (Schritt 1006) wird, wenn alle Bitblocks des Indexes x bis zu dem letzten Bitblock gelesen worden sind, die Prozedur zu dem Prozess von Schritt 1016 vorgerückt. Bei Schritt 1016 wird ein Prozess des Multiplizierens von R^(–1) MOD N ausgeführt, um die Daten im Montgomery'schen Format (Daten multipliziert mit R MOD N) zu dem gewöhnlichen Wert zurückzubringen. Als Nächstes wird T = N – S berechnet, und das Ergebnis wird auf einen RAM gelegt (Schritt 1017). Nun werden S und T auf den unterschiedlichen Bereichen auf dem RAM gespeichert, und sie sollen nicht dupliziert sein. Bei der bedingten Verzweigung (Schritt 1018) wird, wenn der letzte Wert von V 1 ist, T ausgegeben (Schritt 1019), und wenn V 0 ist, wird S ausgegeben (Schritt 1020). Es ist klar, dass durch diesen Prozess ein korrekter Wert ausgegeben wird, wie aus der Tatsache ersichtlich, dass (tN – B)^2 MOD N = B^2 MOD N (t ist eine ganze Zahl).
  • Durch den Prozess, wie oben beschrieben, wird die Überlaufverarbeitung unterschiedlich von der originalen, so dass es schwierig wird, eine interne Verarbeitung durch die Beobachtung des Stromverbrauchs oder der Verarbeitungszeit eines IC-Chips zu schätzen. Wenn A und B bei der Operation zur modularen Multiplikation A*B MOD N durch die oben erwähnten Werte substituiert werden, ist dies ein Beispiel für das spezielle Setzen von (S, T, F, G) = {(0, 0, 0, 0), (0, 1, 0, 1)}.
  • Bei den obigen 2 Ausführungsformen werden Beispiele aufgeführt, bei denen das Montgomery'sche Verfahren verwendet wird; es ist jedoch leicht, die vorliegende Erfindung auf ein anderes Verfahren als dem Montgomery'sche Verfahren anzuwenden. Im Folgenden wird ein Beispiel gezeigt. Es ist ziemlich leicht, die in 9 gezeigte Ausfüh rungsform zu einem Nicht-Montgomery'schen Verfahren zu verändern, und es genügt, einen Teil zu eliminieren, wo Daten zum Montgomery'schen Format umgewandelt werden. 11 zeigt ein gewöhnliches Implementierungsverfahren, für das das Montgomery'sche Verfahren nicht verwendet wird.
  • Zuerst wird bei Schritt 1101 nach dem Setzen von S = 1 eine Zähleinrichtung J zum Zählen der Anzahl der Bitblocks von X zu 0 initialisiert, und weiterhin wird die Variable V[0] auf 0 eingestellt. Als Nächstes werden die Tabellen zum Verarbeiten eines 2-Bit-Additionskettenverfahrens erstellt (Schritt 1102). In diesem Fall wird zusätzlich zu der Originaltabelle (1103), die für einen gewöhnlichen Additionskettenprozess notwendig ist, Y[0][0] = 1, Y[1][0] = Y MOD N, Y[2][0] = Y^2 MOD N, Y[3][0] = Y^3 MOD N, auch eine inverse Tabelle im Modulo N(1104),Y[0][1] = N – 1, Y[1][1] = N – (Y MOD N), Y[2][1] = N (Y^2 MOD N), Y[3][1] = N – (Y^3 MOD N), erstellt. Die Tabellen existieren üblicherweise auf einem RAM. Nach der Erstellung der Tabellen wird bei einer bedingten Verzweigung (Schritt 1105) untersucht, ob der Index x bis zu dem letzten Bitblock gelesen worden ist (falls alle Bitblocks aufgenommen worden sind). Falls der Prozess für alle Bitblocks des Indexes x nicht beendet worden ist, wird der Prozess zu Schritt 1106 zum Generieren von Zufallszahlen V[J] vorgerückt. Die Zufallszahl ist 0 oder 1. Als Nächstes wird S = S^2 MOD N zweimal durchgeführt (Schritt 1107). Als Nächstes wird bei bedingten Verzweigungsprozessen (Schritte 1108, 1109, 1110, 1111) ein 2-Bit-Block des Indexes x gelesen. Entsprechend dem Wert des Bitblocks: 00, 01, 10 oder 11 in Binärschreibweise (in der Figur wird er ausgedrückt als ein Bitblock von x) wird der Prozess zu Schritt 1112, 1113, 1114 oder 1115 zum Ausführen einer arithmetischen Operation zur modularen Multiplikation verzweigt. Bei der arithmetischen Operation zur modularen Multiplikation wird dementsprechend, ob der Wert von V[J] 0 oder 1 ist, ein unterschiedlicher Tabellenwert ver wendet. Wenn beispielsweise der Bitblock von X 10 ist, wird in dem gewöhnlichen Fall S = S*Y[2][0] MOD N = S*(Y^2 MOD N) MOD N berechnet, aber wenn V[J] = 1, wird Y[2][1] aus der Inversionstabelle heraus genommen, um S = S*Y[2][1] MOD N = S*(N – (Y^2 MOD N)) MOD N zu berechnen (Schritt 1114). Auch bei dem Prozess von Schritt 1112, 1113, 1115 wird gemäß dem Wert von V[J] der Wert eines Multiplikators geändert. Nach Beendigung der arithmetischen Prozesse zur modularen Multiplikation wird bei Schritt 1120 die Zählereinrichtung inkrementiert, und der Prozess wird zu Schritt 1105 zurückgegeben. Bei dem bedingten Verzweigungsprozess (Schritt 1105) wird, wenn alle Bitblocks des Indexes x bis zu dem letzten Bitblock gelesen worden sind, die Prozedur zu dem Prozess von Schritt 1116 vorgerückt. Bei Schritt 1116 wird T = N – S berechnet, und das Ergebnis wird auf einen RAM gelegt. S und T werden auf den voneinander unterschiedlichen Bereichen gespeichert, und sie sollen nicht in Duplizierung gesetzt werden. Wenn der letzte Wert von V bei dem bedingten Verzweigungsprozess (Schritt 1117) 1 ist, wird T ausgegeben (Schritt 1118), und wenn V = 0, wird S ausgegeben (Schritt 1119). Es ist klar, dass aufgrund der Tatsache, dass (tN – B)^2 MOD N = B^2 MOD N (t ist eine ganze Zahl), durch diesen Prozess ein korrekter Wert ausgegeben wird. Die Überlaufverarbeitung wird durch die Prozesse, wie oben beschrieben, unterschiedlich von der originalen, so dass es schwierig wird, eine interne Verarbeitung aus der Beobachtung des Stromverbrauchs oder der Verarbeitungszeit eines IC-Chips zu schätzen. Wenn A und B bei der Operation zur modularen Multiplikation A*B MOD N durch die Werte, wie oben beschrieben, substituiert werden, ist dies ein Beispiel für das spezielle Setzen von (S, T, F, G) = {(0, 0, 0, 0), (0, 1, 0, 1)}.
  • Im Folgenden wird die vorliegende Erfindung entsprechend der in 11 gezeigten Ausführungsform in der Form von Methodenschritten kurz erläutert. Dies ist ein manipulationssicheres Verfahren zur modularen Multiplikation zum Berechnen einer modularen Multiplikation, A*B MOD N, die während der Kryptoverarbeitung auftritt, unter Verwendung einer Informationsverarbeitungsvorrichtung mit:
    • (1) einem Schritt zum Berechnen von S1 = A*B MOD N,
    • (2) einem Schritt zum Berechnen von S2 = {sN + A*(–1)^f}*{tN + B*(–1)^g } MOD N an Stelle des Schritts (1) (wenigstens eine unter s, t, f, g ist eine ganze Zahl außer Null, und f, g sind beide 0 oder 1),
    • (3) einem Schritt zum richtigen Auswählen von (1) oder (2),
    • (4) einem Schritt zum richtigen Wiederholen der obigen Schritte (1), (2) und (3), und zuletzt wird, wenn Schritt (1) ausgewählt ist, das Berechnungsergebnis S1 ausgegeben, und wenn (2) ausgewählt ist, wird N – S2 an Stelle von S2 ausgegeben, und
    • (5) einem Schritt zum Verwenden von S1 und N – S2 als den Berechnungsergebnissen einer arithmetischen modularen Multiplikation A*B MOD N einer Kryptoverarbeitung.
  • Bei den obigen Ausführungsformen (gezeigt in 9, 10 und 11) werden Zufallszahlen als die Werte von V verwendet; es ist jedoch unnötig, zu sagen, dass für V auch eine, bei dem abwechselnd 0 und 1 eingestellt werden, Pseudozufallszahlen oder chaotische Sequenzen eingesetzt werden können. Bei den obigen Ausführungsformen werden S, T, F, G nur auf 2 Arten variiert; jedoch kann durch die Variation von mehr Variablen der Verwürflungseffekt erreicht werden. Eine Ausführungsform in einem derartigen Fall ist in 12 gezeigt.
  • Zuerst wird bei Schritt 1201 nach dem Setzen von S = 1 eine Zähleinrichtung J zum Zählen der Anzahl der Bitblocks von X zu 0 initiali siert, und die Variable V[0] zum Beurteilen der Verzweigungsbedingungen wird auf 0 eingestellt. Als Nächstes werden 4 Zufallszahlen W[K] (K = 0, 1, 2, 3) erstellt (Schritt 1202). Diese Zufallszahlen sind ganze Zahlen, die 0 & LT; W[K] & LT; MAX erfüllen, und MAX wird durch die Beschränkungen, wie zum Beispiel die Größen des Speichers, des Registers etc., bestimmt. Als Nächstes werden die Tabellen zur Verwendung bei dem Prozess eines 2-Bit-Additionskettenverfahrens erstellt (Schritt 1203). In diesem Fall wird zusätzlich zu der Originaltabelle (1204), die für einen gewöhnlichen Additionskettenprozess notwendig ist, Y[0][0] = 1, Y[1][0] = Y MOD N, Y[2][0] = Y^2 MOD N, Y[3][0] = Y^3 MOD N, auch eine Inversionstabelle im Modulo N (1205), Y[0][1] = N – 1, Y[1][1] = N – (Y MOD N), Y[2][1] = N – (Y^2 MOD N), Y[3][1] = N – (Y^3 MOD N), erstellt. Die Tabellen existieren üblicherweise auf einem RAM. Nach der Erstellung der Tabellen wird bei dem bedingten Verzweigungsprozess (Schritt 1206) untersucht, ob der Index x bis zu dem letzten Bitblock gelesen worden ist (falls alle Bitblocks aufgenommen worden sind). Falls nicht alle Bitblocks beendet worden sind, wird der Prozess zu Schritt 1207 zum Generieren einer Zufallszahl V[J] vorgerückt. Diese Zufallszahl ist 0 oder 1. Als Nächstes wird S = S^2 MOD N zweimal durchgeführt (Schritt 1208). Als Nächstes wird bei den bedingten Verzweigungsprozessen (Schritte 1209, 1210, 1211, 1212) ein 2-Bit-Block des Indexes x gelesen. Entsprechend dem Wert des Bitblocks: 00, 01, 10 oder 11 in Binärschreibweise (in der Figur wird er ausgedrückt als ein Bitblock von x) wird der Prozess zu Schritt 1213, 1214, 1215 oder 1216 zum Ausführen einer Operation zur modularen Multiplikation verzweigt. Bei der Operation zur modularen Multiplikation wird dementsprechend, ob der Wert von V[J] 0 oder 1 ist, ein unterschiedlicher Tabellenwert verwendet. Wenn beispielsweise der Bitblock von X 10 ist, wird in dem gewöhnlichen Fall S = S*Y[2][0) MOD N = S*(Y^2 MOD N) MOD N berechnet, aber wenn V[J] = 1, wird Y[2][1] aus der Inversionstabelle heraus genommen, um S = S*Y[2][1] MOD N = S*(N – (Y^2 MOD N)) MOD N zu berechnen (Schritt 1215). Ähnlich dem obigen Fall wird bei dem Prozess bei Schritt 1213, 1214, 1216 der Wert eines Multiplikators geändert. Nachdem die Prozesse zur modularen Multiplikation beendet sind, wird bei Schritt 1221 die Zählereinrichtung inkrementiert, und der Prozess wird zu Schritt 1206 zurückgegeben. Bei dem bedingten Verzweigungsprozess (Schritt 1206) wird, wenn alle Bitblocks des Indexes x bis zu dem letzten gelesen worden sind, die Prozedur zu dem Prozess von 1217 vorgerückt. Bei Schritt 1217 wird T = N – S berechnet, und das Ergebnis wird auf einen RAM gelegt. S und T werden auf den voneinander unterschiedlichen Bereichen auf dem RAM gespeichert, und sie sollen nicht dupliziert werden. Wenn bei dem bedingten Verzweigungsprozess (Schritt 1218) der letzte Wert von V 1 ist, wird T ausgegeben (Schritt 1219), und wenn V = 0, wird S ausgegeben (Schritt 1220). Es ist klar, dass aufgrund der Tatsache, dass (tN – B)^2 MOD N = B^2 MOD N (t ist eine ganze Zahl), durch diesen Prozess ein korrekter Wert ausgegeben wird. Durch die Prozesse, wie oben beschrieben, wird die Verarbeitung unterschiedlich von der originalen, so dass es schwierig wird, eine interne Verarbeitung durch die Beobachtung des Verbrauchsstroms oder der Verarbeitungszeit eines IC-Chips zu schätzen. Diese ist eine der Ausführungsformen der vorliegenden Erfindung. Da dieses Verfahren leicht für das Montgomery'sche Verfahren modifiziert werden kann, wird auf das Anführen eines Beispiels verzichtet.
  • Bei den oben gezeigten Beispielen werden Multiplikatoren variiert. Der Sinn der vorliegenden Erfindung wird nicht durch die Variierung von entweder einem Multiplikanden oder einem Multiplikator oder durch die Variierung von beiden von ihnen verletzt. Vom mathematischen Standpunkt aus ist dies eine offensichtliche Tatsache. Bei der Implementierung tritt jedoch ein gewisser Unterschied auf. In dem Fall der Variation auf der Seite des Multiplikators kann, falls einmal in einem Anfangsstadium eine Tabelle erstellt wird, durch bloßes Va riieren des aus der Tabelle zu entnehmenden Wertes die vorliegende Erfindung erreicht werden. In dem Fall jedoch, wo der Multiplikand variiert wird, ist der Multiplikand selbst während jedem Berechnungsprozess unterschiedlich, so dass bei jedem Berechnungsprozess Zwischenergebnisse S und N-S zusammengesetzt werden müssen. Um diese Tatsache zu zeigen, wird eine Ausführungsform gezeigt, bei der die Seite des Multiplikanden variiert wird.
  • 13 wird der Reihenfolge nach erläutert. Zuerst wird bei Schritt 1301 nach dem Setzen von S = R MOD N weiterhin eine Zähleinrichtung J zum Zählen der Anzahl der Bitblocks von X zu 0 initialisiert, und die Variable V[0] zum Beurteilen der Verzweigungsbedingungen wird auf 0 eingestellt. Als Nächstes wird eine für den 2-Bit-Additionskettenverfahrensprozess zu verwendende Tabelle erstellt (Schritt 1302). Die Tabelle ist aus gewöhnlichen Tabellenwerten zusammengesetzt, Y[0] = R MOD N, Y[1] = YR MOD N, Y[2] = Y^2R MOD N, Y[3] = Y^3R MOD N, und eine für die Variierung auf der Seite des Multiplikators zu verwendende Inversionstabelle wird nicht benötigt. Die Tabelle existiert üblicherweise auf einem RAM. Nach der Erstellung der Tabelle wird bei dem bedingten Verzweigungsprozess (Schritt 1303) untersucht, ob der Index x bis zu dem letzten Bitblock gelesen worden ist (falls alle Bitblocks aufgenommen worden sind). Falls der Prozess für den letzten Bitblock des Indexes x nicht beendet worden ist, wird der Prozess zu Schritt 1304 zum Generieren einer Zufallszahl V[J] vorgerückt. Diese Zufallszahl ist 0 oder 1. Als Nächstes wird S = ^2*R^(–1) MOD N zweimal durchgeführt (Schritt 1305). Bei dem ersten Prozess erzeugt, da S zu S = R MOD N initialisiert wird, diese Operation zum modularen Quadrat S = (R MOD N)^2*R^(–1) MOD N = R MOD N. Es ist anzumerken, dass das Ergebnis des Prozesses von Schritt 1305 R MOD N ist. Aus diesem S werden als Nächstes S[0] = S und S[1] = N – S berechnet, und die Ergebnisse werden auf einem RAM gespeichert (Schritt 1306). Als Nächstes wird bei den bedingten Verzweigungsprozessen (Schritte 1307, 1308, 1309, 1310) ein 2-Bit-Block des Indexes x gelesen. Entsprechend dem Wert des Bitblocks: 00, 01, 10 oder 11 in Binärschreibweise (in der Figur wird der Bitblock ausgedrückt als ein Bitblock von x) wird der Prozess zu Schritt 912, 913, 914 oder 915 zum Ausführen der Operation zur modularen Multiplikation verzweigt. Bei der Operation zur modularen Multiplikation wird dementsprechend, ob der Wert von V[0] 0 oder 1 ist, ein unterschiedlicher Tabellenwert verwendet. Wenn beispielsweise der Bitblock von X 10 ist, wird normalerweise S = S[0]*Y[0]*R^(–1) MOD N = S*(Y^2R MOD N) MOD N berechnet, aber wenn V[J] = 1, wird S[1] anstelle von S[0] herausgenommen, um S = S[1]*Y[2]*R^(–1) MOD N = (N – S)*(Y^2R MOD N)*R^(–1) MOD N zu berechnen (Schritt 1313). Für den Prozess bei Schritt 1311, 1312 oder 1314 wird ähnlich dem Obigen der Wert des Multiplikators gemäß dem Wert von V[J] variiert. Nach Beendigung des Prozesses zur modularen Multiplikation bei Schritt 1315 wird die Zählereinrichtung inkrementiert, und der Prozess wird zu Schritt 1303 zurückgegeben. In einem Fall, in dem alle Bitblocks des Indexes x bei Schritt 1303 vollständig gelesen worden sind, wird die Prozedur zu Schritt 1316 vorgerückt. Bei Schritt 1316 wird zum Zurückbringen der Daten mit Montgomery'schem Format (Daten multipliziert mit R MOD N) zu dem gewöhnlichen Wert der Prozess zum Multiplizieren von R^(–1) MOD N ausgeführt. Als Nächstes wird T = N – S berechnet, und das Ergebnis wird auf einen RAM gelegt (Schritt 1317). S und T werden auf den voneinander unterschiedlichen Bereichen auf dem RAM gespeichert, und sie sollen nicht dupliziert werden. Falls bei dem bedingten Verzweigungsprozess (Schritt 1318) der letzte Wert von V 1 ist, wird T ausgegeben (Schritt 1319), und falls V = 0, wird S ausgegeben (Schritt 1320). Es ist klar, dass aufgrund der Tatsache, dass (tN – B)^2 MOD N = B^2 MOD N (t ist eine ganze Zahl), durch diesen Prozess ein korrekter Wert ausgegeben wird. Die Überlaufverarbeitung wird durch die Prozesse, wie oben beschrieben, unterschiedlich von der originalen, so dass es schwierig wird, eine interne Verarbeitung durch die Beobachtung des Stromverbrauchs oder der Verarbeitungszeit eines IC-Chips zu schätzen. Wenn A und B bei der Operation zur modularen Multiplikation A*B MOD N durch die Werte, wie oben erwähnt, substituiert werden, ist dies ein Beispiel für das spezielle Setzen von (S, T, F, G) = {(0, 0, 0, 0), (1, 0, 1, 0)}. Es ist leicht, das Obige zu einem Verfahren ohne Verwendung des Montgomery'schen Verfahrens zu modifizieren. Somit wird auf das Anführen eines Beispiels verzichtet.
  • Bei den bisher gezeigten Ausführungsformen wird ein Multiplikator oder ein Multiplikand variiert. Es ist unnötig, zu sagen, dass beide von ihnen variiert werden können. Falls beispielsweise bei dem in 13 gezeigten Prozess von Schritt 1305 der Prozess als S = (N – S)^2*R^(–1) MOD N ausgeführt wird, kann die Form des Verbrauchsstroms unterschiedlich von der originalen sein. Die Ausführungsformen gemäß der vorliegenden Erfindung umfassen verschiedene Arten von Variationen, aber im wesentlichen ist es möglich, die Variationen durch die Kombination der oben beschriebenen Ausführungsformen zu bilden.
  • Alle oben erwähnten Ausführungsformen werden auf die Verarbeitung der Berechnung zur modularen Exponentiation angewandt. Die vorliegende Erfindung ist besonders effektiv für die Berechnung zur modularen Exponentiation, und wenn die oben beschriebene Technik auf die allgemeinere modulare Berechnung ausgedehnt wird, ist es möglich, ein Durchsickern der geheimen Information durch eine Verarbeitung, wie zum Beispiels eine Überlaufverarbeitung, zu verhindern. Der Grund dafür, dass die vorliegende Erfindung effektiv ist, resultiert im wesentlichen aus der Tatsache, dass die folgende Relation existiert. (tN – B)^2 MOD N = B^2 MOD N, wobei t eine ganze Zahl ist.
  • Bei dem von der Berechnung zur modularen Exponentiation unterschiedlichen Prozess tritt jedoch beispielsweise in dem Fall, in dem bei einem Elliptische-Kurven-Kryptosystem das skalare Vielfache des Basispunkts P auf einer Kurve berechnet werden muss, nicht immer eine "natürliche" Modifikation wie der obige Ausdruck auf. Die Umstände werden kurz erläutert. In einem Primzahlenfeld GF(P) (P ist eine große Primzahl) wird eine elliptische Kurve E: Y^2 = X^3 + AX + Bbetrachtet. Wie oben beschrieben, kommen in dem Fall, in dem das skalare Vielfache KP eines Punkts P auf der Kurve E berechnet wird, ein Verdoppeln eines Punkts P und die Berechnung der Summe von Punkten vor (siehe 8). Wenn diese 2 Berechnungen im Detail analysiert werden, wird in dem Fall einer IC-Karte oder eines Mikrocomputers herausgefunden, dass eine IC-Karte oder ein Mikrocomputer einem komplizierteren Berechnungsprozess als RSA unterzogen werden muss.
  • Es wird angenommen, dass die Koordinaten der Summe eines Punkts P = (X1, Y1) und eines Punkts Q = (X2, Y2) auf einer elliptischen Kurve, das heißt, die Koordinate von P + Q (X3, Y3) ist, wie oben beschrieben. Wenn P + Q nicht 0 ist, können die folgenden Ausdrücke existieren: X3 = (H^2 – X1 – X2) MOD P Y3 = (H*(X1 – X3) – Y1) MOD P wobei H = (Y2 – Y1)*((X2 – X1)^(–1)) MOD P, wenn P nicht gleich Q ist, und H = (3X1^2 + A)*((2Y1)^(–1)) MOD P, wenn P gleich Q ist.
  • Bei der Gruppenoperation einer Mordell-Weil-Gruppe wird eine notwendige Operation zur modularen Multiplikation unten im Einzelnen genannt: H = (Y2 – Y1)*(X2 – X1)^(–1) MOD P, FALLS P ≠ Q, (E1) H = (3X1^2 + A)*(2Y1)^(–1) MOD P, FALLS P = Q, (E1)' H^2 MOD P (E2) H*(X1 – X3) MOD P (E3)
  • Bei dem Prozess von (E1) wird, wenn A = Y2 – Y1, B = (X2 – X1)^(–1) MOD P (oder X2 – X1) substituiert werden durch SN + A*(–1)^F beziehungsweise TN + B*(–1)^G (S, T, F, G sind ganze Zahlen, wobei F und G jeweils 0 oder 1 sind), das Überlaufmuster geändert (so bei dem Fall von (E1)'). H wird bei dem Prozess (E2) im Modulo P quadriert, und dieser Wert ist der gleiche wie der originale, aber bei dem Prozess (E3) muss, da der Wert im Modulo P umgekehrt wird, zum Erhalten eines richtigen Y3 das Ergebnis in (E3) korrigiert werden. Es ist klar, dass, wenn F + G eine gerade Zahl ergibt, keine Korrektur notwendig ist, und wenn F + G eine ungerade Zahl ergibt, eine Korrektur notwendig ist.
  • Es wird eine Ausführungsform gezeigt, aber über den zusammenfassenden Prozessfluss eines elliptischen Kryptosystems ist eine Erläuterung bezüglich 8 und der dazugehörigen Beschreibung gegeben worden, so dass an dieser Stelle die Erläuterung auf einen Berechnungsabschnitt des Verdoppelns von S = 2S, und S = S + P(J) beschränkt wird. In anderen Worten wird erläutert, wie der Algorithmus gemäß der vorliegenden Erfindung auf Schritt 803 (Verdopplungsberechnung) und Schritten 809, 810, 811, 812 (Summierung) zu implementieren ist.
  • Die folgenden Ausführungsformen unter Bezugnahme auf 1519 sollen nicht Teil der Erfindung sein.
  • Zuerst wird unter den Ausführungsformen auf dem Primzahlenfeld GF(P) die einfachste erläutert. Alle Berechnungen auf einem Primzahlenfeld können basierend auf MOD P durchgeführt werden. 15 zeigt ein Flussdiagramm, bei dem die vorliegende Erfindung auf die Verdoppelung eines Punkts P(X, Y) auf der elliptischen Kurve E, Y^2 = X^3 + AX + B, auf dem GF(P) angewandt wird. Im Folgenden setzt man 2P = (X3, Y3).
  • Bei Schritt 1401 wird D1 = (2*Y)^(–1) MOD P berechnet. Als Nächstes wird bei Schritt 1402 D2 = 3*Y^2 + A) MOD P berechnet. Für diese D1 und D2 wird eine Tabelle, D1[0] = D1, D2[0] = D2, D1[1] = P – D1, D2[1] = P – D2, berechnet, und die Ergebnisse werden auf einem RAM gespeichert (Schritt 1403). D1[1], D2[1] sind Inversionswerte von D1, D2 für MOD P. Als Nächstes werden 2 Zufallszahlen (2 Bits) V, W (V, W sind beide 0 oder 1) generiert (Schritt 1404). Als Nächstes werden aus der bei Schritt 1403 erhaltenen Tabelle D1[V], D2[V] heraus genommen, und eine Berechnung zur modularen Multiplikation, H = D1[V]*D2[V] MOD P wird durchgeführt, und das Ergebnis wird auf einem RAM gespeichert (Schritt 1405). Da D1[1]*D2[1] MOD P = (P – D1)*(P – D2) MOD P = D1*D2 MOD P zu dem Zeitpunkt, wenn Schritt 1405 beendet ist, kann in jedem der beiden Fälle von V = 0 oder V = 1 ein richtiges H erhalten werden. Als Nächstes wird bei Schritten 1406 und 1407 X3 erhalten, und das Ergebnis wird auf einem RAM gespeichert. Bei Schritt 1408 wird D3 = (X – X3) MOD P berechnet. Als Nächstes wird für den Wert von D3 und H, der vorher verwendet worden ist, eine Tabelle, H[0] = H, D3[0] = D3, H[1] = P – H, D3[1] = P – D3, berechnet, und das Ergebnis wird auf einem RAM gespeichert (Schritt 1409). H[1], D3[1] sind jeweils der Inversionswert von H, D3 für MOD P. Als Nächstes werden H[V], D3[V] aus der bei Schritt 1409 erhaltenen Tabelle heraus genommen, und eine Berechnung zur modularen Multiplikation, H[W]*D3[W] MOD P wird durchgeführt, und das Ergebnis wird auf einem RAM gespeichert (Schritt 1410). Da H[1]*D3[1] MOD P = (P – H)*(P – D3) MOD P = H*D3 MOD P zu dem Zeitpunkt, wenn Schritt 1410 beendet ist, kann, sogar wenn W = 0 oder W = 1, ein richtiger Wert erhalten werden. Schließlich wird bei Schritt 1411 Y3 = (Y3 – Y) MOD P berechnet, und das Ergebnis wird auf einem RAM gespeichert. Mit der obigen Operation wird die jeweilige Koordinate von 2P erhalten. Diese ist eine der Ausführungsformen gemäß der vorliegenden Erfindung.
  • Eine der repräsentativen Methoden zum Durchführen einer reziproken Berechnung bei Schritt 1401 ist das Verfahren, bei dem das erweiterte Euklidische Verfahren benutzt wird, und ein weiteres Verfahren ist dasjenige, das den kleinen Fermat'schen Satz benutzt. Das erweiterte Euklidische Verfahren ist ein Verfahren zum Erhalten von D1 auf einer diophantischen Gleichung, 2*Y*D1 + P*U = 1, als einem Ergebnis des Wiederholens einer Operation zum Finden eines größten gemeinsamen Teilers zwischen 2*Y und P (Euklidisches Verfahren). Auf der anderen Seite ist ein Verfahren, das den kleinen Fermat'schen Satz benutzt, ein Verfahren, bei dem die Tatsache benutzt wird, dass für eine positive ganze Zahl G, die mit P gegenseitig teilerfremd ist, eine Gleichung, G^(P – 1) MOD P = 1, aufgestellt wird, wodurch die Gleichung, G^(–1) MOD P = G^(P – 2) MOD P, resultiert. Furz gesagt, aus der Gleichung, D1 = (2*Y)^(P – 2) MOD P, wird D1 erhalten. Bei einem Verfahren, bei dem der kleine Fermat'sche Satz verwendet wird, resultiert die Berechnung von Kehrwerten in einer Berechnung zur modularen Exponentiation. Da es leicht ist, das Verfahren der vorliegenden Erfindung auf die Berechnung zur modularen Exponentiation anzuwenden, kann das Durchsickern von Informationen aus einer Überlaufverarbeitung verringert werden.
  • Als Nächstes wird ein Fall beschrieben, bei dem die vorliegende Erfindung auf ähnliche Weise auf die Berechnung zur Addition von Punkten für eine elliptische Kurve auf dem GF(P) angewandt werden könnte. Im Folgenden wird angenommen, dass die Koordinaten der Summe (P + Q) von Punkt P = (X1, Y1) und Punkt Q = (X2, Y2) auf einer elliptischen Kurve (X3, Y3) sind und nicht (P + Q ≡ 0 ist. 16 zeigt die Anwendung der vorliegenden Erfindung auf die Berechnung zur Addition des Punktes P und des Punktes Q auf einer elliptischen Kurve E, Y^2 = X^3 + AX + B, auf dem GF(P).
  • Bei dem bedingten Verzweigungsprozess (Schritt 1501) wird beurteilt, ob das P und Q miteinander zusammenfallen. Falls sie miteinander zusammenfallen, wird die Berechnung verdoppelnd, und der Prozess ist der gleiche, wie unter Bezugnahme auf 15 erläutert, so dass die Erläuterung weggelassen wird (vorausgesetzt, dass die Symbole x, y als x1, y1 gelesen werden). Im Folgenden wird der Prozess gezeigt, wenn P und Q nicht zusammenfallen. Bei Schritt 1502 wird D1 = (X2 – X1)^(–1) MOD P berechnet. Als Nächstes bei Schritt 1503 D2 = (Y2 – Y1) MOD P. Für diese D1, D2 wird eine Tabelle D1[0] = D1, D2[0] = D2, D1[1] = P – D1, D2[1] = P – D2 berechnet, und das Ergebnis wird auf einem RAM gespeichert (Schritt 1504). D1[1], D2[1] sind jeweils die Inversionswerte von D1 und D2 für MOD P. Als Nächstes werden 2 (2 Bits) Zufallszahlen V, W generiert (V', W sind beide 0 oder 1) (Schritt 1505). Als Nächstes werden D1[V], D2[V] aus der bei Schritt 1504 erhaltenen Tabelle heraus genommen, und eine Berechnung zur modularen Multiplikation, H = D1[V]*D2[V] MOD P, wird durchgeführt, und das Ergebnis wird auf einem RAM gespeichert (Schritt 1506). Da Dl[1]*D2[1] MOD P = (P – D1)*(P – D2) MOD P = D1*D2 MOD P, wenn Schritt 1506 beendet ist, kann, sogar wenn V = 0 oder V = 1, eine richtige Lösung H erhalten werden. Als Nächstes wird bei Schritten 1507, 1509 X3 erhalten, und das Ergebnis wird auf einem RAM gespeichert. Bei Schritt 1509 wird D3 ≡ (X1 – X3) MOD P berechnet. Als Nächstes wird für das D3 und H, das vorher erhalten wird, eine Tabelle, H[0] = H, D3[0] = D3, H[1] = P – H, D3[1] = P – D3, erhalten, und das Ergebnis wird auf einem RAM gespeichert (Schritt 1510). H[1], D3[1] sind jeweils die Inversionswerte von H, D3 für MOD P. Als Nächstes werden H[W], D3[W] aus der bei Schritt 1510 erhaltenen Tabelle heraus genommen, und eine Berechnung zur modularen Multiplikation, H[W]*D3[W] MOD P, wird durchgeführt, und das Ergebnis wird auf einem RAM gespeichert (Schritt 1511). Da H[1]*D3[1] MOD P = (P – H)*(P – D3) MOD P = H*D3 MOD P zu dem Zeitpunkt, wenn Schritt 1511 beendet ist, kann, sogar falls W 0 ist oder W 1 ist, eine richtige Lösung erhalten werden. Schließlich wird bei Schritt 1512 Y3 = (Y3 – Y1) berechnet, und das Ergebnis wird auf einem RAM gespeichert. Somit wird bei dem obigen Prozess eine jeweilige Koordinate von P + Q erhalten. Diese ist eine der Ausführungsformen gemäß der vorliegenden Erfindung.
  • Der in 16 gezeigte Ansatz kann leicht auf ein Galois-Feld GF(P^F) erweitert werden (P ist eine Primzahl, N ist eine positive ganze Zahl). Wie oben beschrieben, ist GF(P^N) homomorph mit einem Quotientenring, GF(P)[X]/(Φ(X)), erzeugt durch ein Primideal (Φ(X)), das durch das gesamte Vielfache eines unzerlegbaren Polynoms Φ(X) (Reduktionspolynoms) in GF(P) eines Rings GF(P)[X] (Polynomrings) generiert ist, der durch das gesamte Polynom von GF(P)-Koeffizienten gebildet ist, und in dem Computer wird es als GF(P)[X]/(Φ(X)) verwirklicht. Wenn die Operation durchgeführt wird, kann unter der Annahme, dass A(X), B(X) die Elemente von GF(P)[X] (eines Polynoms aus GE(P)-Koeffizienten) sind, die Operation in GF(P)[X]/(Φ(X)) verwirklicht werden, wenn man, vorausgesetzt, dass die Operation von Koeffizienten in MOD P ausgeführt wird, setzt, wie unten gezeigt,
    (Summe): {A(X) + B(X)} MOD Φ(X),(Produkt): A(X)*B(X) MOD Φ(X).
  • Es wird ein Fallbeispiel gezeigt. Eine Primzahl ist P = 5, N = 2, und ein Reduktionspolynom Φ(X) ist X^2 + X + 1. Φ(X) ist klar unzerlegbar bei Beurteilung der Tatsache, dass Φ(0) = 1, Φ(1) = 3, Φ(2) = 7 ≡ 2(MOD 5), Φ(3) = 13 ≡ 3(MOD 5) und Φ(4) = 21 ≡ 1(MOD 5). Wenn A(X) = 4X^2 + 3X + 2, B(X) = 3X^2 + 4X + 1 gesetzt wird, dann können Summe und Produkt dieser 2 Polynome auf GF(5)[X] /(X^2 + X + 1) berechnet werden,
    (Summe): {A(X) + B(X) } MOD Φ(X) = 7X^2 + 7X + 3 = 2X^2 + 2X + 3 (Koeffizienten werden mit MOD 5 berechnet)(Produkt): A(X)*B(X) MOD Φ(X) = (4X^2 + 3X + 2)*(3X^2 + 4X +1) MOD (X^2 + X + 1) = 12X^4 + 25X^3 + 22X^2 + 11X + 2 MOD (X^2 + X + 1) = 2X^4 + 2X^2 + X + 2 MOD (X^2 + X + 1) (Koeffizienten werden mit MOD 5 berechnet) = X
  • Basierend auf dieser Tatsache wird es leicht sein, Ausführungsformen zu bilden.
  • Es wird der Fall betrachtet, in dem die Primzahl P ≥ 3. In diesem Fall können alle elliptischen Kurven zu E umgeformt werden: Y^2 = X^3 + AX + B. Diese wird als die kanonische Form von Weierstraß bezeichnet. Da jeweilige Komponenten von Koordinaten von Punkten auf E die Elemente von GF(P^N) sind, können A(X), B(X) als die Elemente von GF(P)[X]/(Φ(X)) ausgedrückt werden, wie im Folgenden gezeigt ((A(X), B(X)).
  • Im Folgenden wird die Verdoppelung von P = (A(X), B(X)) gezeigt. Die Summenberechnung kann leicht aus dem in 16 gezeigten Ansatz für den Fall von GF(P) und die Verdoppelungsberechnung geschätzt werden, so dass nur der Fall der Verdoppelung erläutert wird.
  • In 17 wird ein Ansatz zur Verdoppelungsberechnung gezeigt. Bei Schritt 1601 wird D1(X) = (2*B(X)^(–1) MOD Φ(X) berechnet. Als Nächstes wird bei Schritt 1602 D2 (X) = (3*A(X)^2 + A) MOD Φ(X) berechnet. Für diese D1, D2 wird eine Tabelle, D1[0] (X) = D1(X), D2[0] = D2(X), D1[1](X) = Φ(X) – D1(X), D2[1](X) = Φ(X) – D2(X), berechnet, und das Ergebnis wird auf einem RAM gespeichert (Schritt 1603).
  • D1[1] (X), D2[1] (X) sind jeweils Inversionswerte von D1(X), D2 (X) für MOD Φ(X). Als Nächstes werden 2 (2 Bits) Zufallszahlen, V und W, generiert (sowohl V als auch W sind 0 oder 1) (Schritt 1604). Als Nächstes werden D1[V] (X), ' D2[V] (X) aus der bei Schritt 1603 erhaltenen Tabelle heraus genommen, und eine Berechnung zur modularen Multiplikation, H(X) = D1[V](X)*D2[V](X) MOD Φ(X), wird durchgeführt, und das Ergebnis wird in einem RAM gespeichert (Schritt 1605). Da D1[1](X)*D2[1](X) MOD Φ(X) = (Φ(X) – D1(X))*(Φ(X) – D2(X)) MOD Φ(X) = D1(X)*D2(X) MOD Φ(X), wenn Schritt 1605 beendet ist, kann, sogar falls V = 0 oder V = 1, ein richtiges H(X) erhalten werden. Als Nächstes wird bei Schritten 1606, 1607 A3(X) berechnet, und das Ergebnis wird auf einem RAM gespeichert. Bei Schritt 1608 wird D3(X) = (A(X) – A3(X)) MOD Φ(X) berechnet. Als Nächstes wird für das D3(X) und H(X), das vorher verwendet wird, eine Tabelle, H[0](X) = H(X), D3[0](X) = D3(X), H[1](X) = Φ(X) H(X), D3[1](X) = Φ(X) – D3(X), berechnet, und das Ergebnis wird auf einem RAM gespeichert (Schritt 1609). H1(X) und D3[1](X) sind jeweils Inversionswerte von H(X), D3(X) für MOD Φ(X). Als Nächstes werden H[W](X), D3[W](X) aus der bei Schritt 1609 berechneten Tabelle heraus genommen, und eine Berechnung zur modularen Multiplikation, H[W](X)*D3[W](X) MOD Φ(X), wird durchgeführt, und das Ergebnis wird auf einem RAM gespeichert (Schritt 1610). Da H[1](X)*D3[1](X) MOD Φ(X) = (Φ(X) – H(X))*(Φ(X) – D3(X)) MOD Φ(X) = H(X)*D3(X) MOD Φ(X) zu dem Zeitpunkt, wenn Schritt 1610 beendet ist, kann, sogar wenn W = 0 oder W = 1, eine richtige Lösung gefunden werden. Schließlich wird bei Schritt 1611 B3(X) = (B3(X) – B(X)) MOD Φ(X) berechnet, und das Ergebnis wird auf einem RAM gespeichert. Durch die bisher ausgeführten Operationen werden die Werte von jeweiligen Koordinaten von 2P gefunden.
  • Es gibt 2 repräsentative Verfahren zum Durchführen einer bei Schritt 1601 gezeigten reziproken Berechnung, eines ist das Verfahren, bei dem das erweiterte Euklidische Verfahren benutzt wird, und ein weiteres ist das Verfahren, das den kleinen Fermat'schen Satz benutzt. Bei dem erweiterten Euklidischen Verfahren wird D1(X) auf einer diophantischen Gleichung, 2*B(X)*D1(X) + Φ(X)*U(X) = 1, durch Wiederholen einer Operation zum Finden eines größten gemeinsamen Teilers zwischen 2*B(X) und Φ(X) erhalten (Euklidisches Verfahren). Auf der anderen Seite ist ein Verfahren, das den kleinen Fermat'schen Satz benutzt, eines, bei dem die Tatsache genutzt wird, dass für G(X), das mit Φ(X) gegenseitig teilerfremd ist, der Ausdruck G(X)^(P^N – 1) MOD Φ(X) = 1 aufgestellt wird und daraus der Ausdruck G(X)^(–1) MOD Φ(X) = G(X)^(P^N – 2) MOD Φ(X) erhalten wird. Kurz gesagt, D1(X) wird aus dem Ausdruck D1(X) = (2*B(X))^(P^N – 2) MOD Φ(X) erhalten. Bei der Berechnung von Kehrwerten resultiert, wenn der kleine Fermat'sche Satz verwendet wird, die Berechnung in einer Berechnung zur modularen Exponentiation. Es ist leicht, die vorliegende Erfindung auf die Berechnung zur modularen Exponentiation anzuwenden, wodurch das Durchsickern von Informationen aus der Überlaufverarbeitung verringert werden kann.
  • Als Nächstes wird der Fall erläutert, in dem P = 2. In diesem Fall sind die Umstände ein wenig unterschiedlich von den bisherigen. Dies wird durch die Tatsache verursacht, dass, wenn das Galois-Feld GF(2^N) in der Form von GF(2)[X]/(Φ(X)) unter Verwendung eines Reduktionspolynoms Φ(X) ausgedrückt wird, die Koeffizienten des Polynoms GF(2) sind. In dem Fall von GF(2) ist ein Vorzeichen sinnlos, da auf diesem Feld –1 = 1. Dies macht eines der Konzepte der vorliegenden Erfindung, "Inversion auf dem MOD Φ(X)", sinnlos. In dem Fall der Multiplikation mit einer geraden Zahl des Polynoms A(X) von GF(2)[X) werden die Koeffizienten auf MOD 2 berechnet, so dass das Ergebnis 0 wird und dem Berechnungsergebnis irgendein Einfluss gegeben wird. Somit –A(X) = A(X). Deshalb wird die lineare Verknüpfung zwischen Φ(X) und A(X) auf GF(2), 0 ausgenommen, im Wesentlichen nur Φ(X), Φ(X) + A(X) und A(X). Auf den Grundlagen dieser Tatsache wird die Ausführungsform in dem Fall von P = 2 gezeigt.
  • An dieser Stelle wird eine elliptische Kurve E mit einer Weierstraß'schen kanonischen Form, Y^2 + XY = X^3 + AX + B, betrachtet. Für den Punkt P (A(X), B(X)) auf der Kurve E wird 2P = (A3(X), B3(X)) gesetzt. Beim Bilden einer Ausführungsform werden die Verdoppelungsformeln im Voraus modifiziert, wie unten gezeigt, A3(X) = (H(X)^2 + H(X) + A) MOD Φ(X) B3(X) = (H(X)*(A(X) + A3(X)) + A3(X) + B(X)) MOD Φ(X),wobei angenommen wird, dass H(X) = (A(X)^2 + B(X))*A(X)^(–1) MOD Φ(X).
  • 18 zeigt die Verdoppelungsberechnung. Bei Schritt 1701 wird Dl(X) = (A(X))^(–1) MOD Φ(X) berechnet. Als Nächstes wird bei Schritt 1702 D2 (X) = (A(X)^2 + B(X)) MOD Φ(X) berechnet. Für diese D1(X), D2 (X) wird eine Tabelle, D1[0] (X) = D1(X), D2[0] (X) = D2 (X), D1[1] (X) = Φ(X) + D1(X), D2[1] (X) = Φ(X) + D2 (X), berechnet, und das Ergebnis wird auf einem RAM gespeichert (Schritt 1703). Als Nächstes werden vier (vier Bits) Zufallszahlen, V, W, I, J (V, W, I, J sind alle 0 oder 1), erzeugt (Schritt 1704). Als Nächstes werden aus der bei Schritt 1703 erhaltenen Tabelle D1[V] (X), D2[W] (X) heraus genommen, und eine Berechnung zur modularen Multiplikation, H(X) = D1[V] (X)*D2[W] (X) MOD Φ(X) wird durchgeführt, und das Ergebnis wird in einem RAM gespeichert (Schritt 1705). Da (Φ(X) + D1(X))*D2(X) MOD Φ(X) = D1(X)*(Φ(X) + D2(X) MOD Φ(X) = (Φ(X) + D1(X))*(Φ(X) + D2(X)) MOD Φ(X) = D1(X)*D2 (X) MOD Φ(X) zu dem Zeitpunkt, wenn Schritt 1705 beendet ist, kann, sogar falls V, W = 0 oder 1, eine richtige Lösung H(X) gefunden werden. Als Nächstes wird bei Schritten 1706, 1707 A3(X) berechnet, und das Ergebnis wird in einem RAM gespeichert. Bei Schritt 1708 wird D3(X) = (A(X) + A3(X)) MOD Φ(X) berechnet. Für das D3(X) und das H(X), das vorher verwendet wird, wird eine Tabelle, H[0](X) = H(X), D3[0](X) = D3(X), H[1](X) = Φ(X) + H(X), D3[1](X) = Φ(X) + D3(X), erhalten, und das Ergebnis wird auf einem RAM gespei chert (Schritt 1709). Als Nächstes werden aus der bei Schritt 1709 erhaltenen Tabelle H[I](X) und D3[J](X) heraus genommen, und eine Berechnung zur modularen Multiplikation, H[I] (X)*D3[J] (X) MOD Φ(X), wird durchgeführt, und das Ergebnis wird auf einem RAM gespeichert (Schritt 1710). Da (Φ(X) + H(X))*D3(X) MOD Φ(X) = H(X)*(Φ(X) + D3(X) MOD Φ(X) = (Φ(X) + H(X)*(Φ(X) + D3(X)) MOD Φ(X) = H(X)*D3(X) MOD Φ(X) zu dem Zeitpunkt der Beendigung von Schritt 1710, kann, sogar falls I = 0 oder 1 oder J ist 0 oder 1, eine richtige Lösung erhalten werden. Schließlich wird bei Schritt 1711 B3(X) = (B3(X) + A3(X) + B(X)) MOD Φ(X) berechnet, und das Ergebnis wird auf einem RAM gespeichert. Somit werden die jeweiligen Koordinatenwerte von 2P erhalten.
  • Es gibt 2 repräsentative Verfahren, die bei Schritt 1701 eine reziproke Berechnung durchführen: eines ist das Verfahren, bei dem das erweiterte Euklidische Verfahren benutzt wird, und ein weiteres ist das Verfahren, das den kleinen Fermat'schen Satz benutzt. Das erweiterte Euklidische Verfahren ist das Verfahren zum Erhalten von D1(X) auf einer diophantischen Gleichung, A(X)*D1(X) + Φ(X)*U(X) = 1, durch Wiederholen einer Operation zum Finden eines größten gemeinsamen Teilers zwischen A(X) und Φ(x). Auf der anderen Seite ist ein weiteres Verfahren, das den kleinen Fermat'schen Satz benutzt, eines, bei dem die Tatsache benutzt wird, dass für G(X), das mit Φ(x) gegenseitig teilerfremd ist, der Ausdruck G(X)^(2^N – 1) MOD Φ(x) = 1 aufgestellt wird, so dass der Ausdruck G(X)^(–1) MOD Φ(x) = G(X)^(2^N – 2) MOD Φ(x) aufgestellt wird. Kurz gesagt, ist es das Verfahren zum Erhalten von D1(x) aus der Gleichung D1(X) = (A(X))^(2^N – 2) MOD Φ(x). Bei dem Verfahren, das den kleinen Fermat'schen Satz zum Ausführen einer reziproken Berechnung verwendet, ergibt sich die Berechnung zur modularen Exponentiation. Es ist leicht, das Verfahren gemäß der vorliegenden Erfindung auf eine Berechnung zur modularen Exponentiation anzuwenden, und das Durchsickern von Informationen aus der Überlaufverarbeitung kann verringert werden.
  • Bei der Mordell-Weil-Gruppenoperation eines Punktes auf einer elliptischen Kurve wird der Einfluss eines Vorzeichens sofort aufgelöst. An dieser Stelle wird eine Ausführungsform gezeigt, bei der der Einfluss eines Vorzeichens nicht sofort aufgelöst wird.
  • 19 zeigt ein Beispiel, bei dem die vorliegende Erfindung auf eine ähnliche Weise auf die Verdoppelungsberechnung eines Punktes P = (X, Y) auf einer elliptischen Kurve E, Y^2 = X^3 + AX + B, auf GF(P) angewandt werden könnte. Im Folgenden wird 2P = (X3, Y3) gesetzt. Bei Schritt 1801 wird D1 = (2*Y)^(–1) MOD P berechnet. Als Nächstes wird bei Schritt 1802 D2 = (3*X^2 + A) MOD P berechnet. Für D2 wird eine Tabelle, D2[0] = D2, D2[1] = P – D2, berechnet, und das Ergebnis wird auf einem RAM gespeichert (Schritt 1803). D2[1] ist der Inversionswert von D2 für MOD P. Als Nächstes werden 2 (2 Bits) Zufallszahlen V, W (beide von V und W sind 0 oder 1) generiert (Schritt 1804). Als Nächstes wird aus der bei Schritt 1803 erhaltenen Tabelle D2[V] heraus genommen, und eine modulate Multiplikation, H = D1*D2[V] MOD P, wird durchgeführt, und das Ergebnis wird auf einem RAM gespeichert (Schritt 1805). An dieser Stelle ist D1*D2[1] MOD P gleich D1*D2 MOD P oder gleich P – (D1*D2 MOD P), und es ist unterschiedlich von der in 15 gezeigten Ausführungsform zu dem Zeitpunkt, wenn Schritt 1805 beendet ist, es ist nicht immer wahr, dass eine richtige Lösung erhalten wird. Als Nächstes wird bei Schritten 1806, 1807 X3 berechnet, und das Ergebnis wird auf einem RAM gespeichert. Bei Schritt 1806 wird H auf MOD P quadriert, so dass, sogar falls das Ergebnis von Schritt 1805 D1*D2 MOD P oder P – (D1*D2 MOD P) ist, eine richtige Lösung X3 erhalten wird. Bei Schritt 1808 wird D3 = (X – X3) MOD P berechnet. Für das D3 wird eine Tabelle, D3[0] = D3, D3[1] = P – D3, erhalten, und das Ergebnis wird auf einem RAM gespeichert (Schritt 1809). D3[1] ist ein Inversionswert von D3 für MOD P. Als Nächstes wird aus der bei Schritt 1809 erhaltenen Tabelle D3[W] heraus genommen, und eine Berechnung zur modularen Multiplikation, H*D3[W] MOD P wird durchgeführt, und das Ergebnis wird auf einem RAM gespeichert (Schritt 1810). Da H*D3[1] MOD P = H*(P – D3) MOD P = P – (H*D3 MOD P) zu dem Zeitpunkt, wenn Schritt 1810 beendet ist, wird, wenn V = 0, das auf dem RAM gespeicherte Ergebnis zu H*D3 MOD P, und wenn V = 1, wird es zu P – (H*D3 MOD P). Bei Schritt 1811 wird eine Tabelle, Y3[0] = Y3, Y3[1] = P – Y3, berechnet und auf einem RAM gespeichert. Als Nächstes wird bei dem bedingten Verzweigungsprozess (Schritt 1812) beurteilt, ob der Wert von V EXOR (exklusives ODER) W 0 oder 1 ist. Wenn er 0 ist, wird die Prozedur zu Schritt 1813 vorgerückt, und wenn er 1 ist, wird die Prozedur zu Schritt 1814 vorgerückt. Wenn V identisch zu W ist, ist der Wert von V EXOR W 0, und wenn sie unterschiedlich voneinander sind, ist er 1. Deshalb kann, wenn der Wert von V EXOR W schließlich 0 ist, die richtige Lösung Y3 bei Schritt 1813 erhalten werden. Wenn der Wert von V EXOR W 1 ist, kann die richtige Lösung Y3 bei Schritt 1814 erhalten werden. Mit den obigen Prozessen werden die jeweiligen Koordinatenwerte von 2P erhalten.
  • Es gibt 2 repräsentative Verfahren, die die reziproke Berechnung bei Schritt 1801 durchführen: eines ist das Verfahren, bei dem das erweiterte Euklidische Verfahren benutzt wird, und ein weiteres ist das Verfahren, das den kleinen Fermat'schen Satz benutzt. Das erweiterte Euklidische Verfahren ist ein Verfahren zum Erhalten von D1 auf einer diophantischen Gleichung, 2*Y*D1 + P*U = 1, durch Wiederholen einer Operation zum Finden eines größten gemeinsamen Teilers zwischen 2*Y und P (Euklidisches Verfahren). Auf der anderen Seite ist das Verfahren, das den kleinen Fermat'schen Satz benutzt, eines, bei der die Tatsache genutzt wird, dass für positive ganze Zahlen G, die mit P gegenseitig teilerfremd sind, der Ausdruck G^(P – 1) MOD P = 1 aufgestellt wird, wodurch der Ausdruck G^(–1) MOD P = G^(P – 2) MOD P erhalten wird. Kurz gesagt, D1 wird aus dem Ausdruck D1 = (2*Y)^(P – 2) MOD P erhalten. Bei dem Verfahren, bei dem der kleine Fermat'sche Satz verwendet wird, resultiert die Berechnung von Kehrwerten in einer Berechnung zur modularen Exponentiation. Es ist leicht, das Verfahren gemäß der vorliegenden Erfindung auf die Berechnung zur modularen Exponentiation anzuwenden, und das Durchsickern von Informationen aus der Überlaufverarbeitung kann verringert werden.
  • Es ist auch leicht, den in 16 gezeigten Ansatz auf die Verdoppelungsberechnung auf einer elliptischen Kurve auf GF(P^N) auszudehnen.
  • Nach den Ausführungsformen gemäß der vorliegenden Erfindung werden bei der Informationsverarbeitungsvorrichtung, wie zum Beispiel einem IC-Kartenchip, die Daten, die sich von den originalen unterscheiden, das heißt, "modulare Inversionswerte", verwendet, um die modulare Multiplikation zu berechnen, und danach wird durch die Korrektur des Berechnungsergebnisses eine richtige Lösung erhalten. Somit wird es schwierig, einen geheimen Schlüssel oder eine interne Verarbeitung aus der Wellenform des Verbrauchsstroms zu schätzen.

Claims (2)

  1. Manipulationssicheres Verfahren zur modularen Exponentiation zur Berechnung von yx mod N unter Verwendung einer modularen Multiplikation, A*B*R–1 mod N, wobei A ein Multiplikand, B ein Multiplikator, n die Bitlänge von A und B und R gleich 2n ist, unter Verwendung einer Informationsverarbeitungsvorrichtung, mit den Schritten: – Ausführen von S = S2*R–1 mod N (1007) vorgegebene z Male, wobei z eine positive ganze Zahl ist; – Berechnen von A*B*R–1 mod N; und – Wiederholen der Schritte des Ausführens von S = S2*R–1 mod N (1007) vorgegebene z Male und des Berechnens von A*B*R–1 mod N über eine Bitlänge von x geteilt durch z Male; wobei der Schritt des Berechnens von A*B*R–1 mod N durch Berechnen von S1 = A*B*R–1 mod N oder durch Berechnen von S2 = A*(t*N – B)*R–1 mod N ausgeführt wird, wobei t = eine ganze Zahl außer 0, und die Berechnung von S1 oder S2 durch Verwendung von Zufallszahlen ausgewählt wird; und wobei das manipulationssichere Verfahren zur modularen Multiplikation weiterhin die Schritte aufweist: – Berechnen von T1 = S1*R–1 mod N (1016) oder T2 = N – S2*R–1 mod N (1017) in einem Fall, dass das letzte Berechnungsergebnis S2 ist; und – Ausgeben (1019, 1020) von T1 oder T2 als einem Berechnungsergebnis von yx mod N.
  2. Manipulationssicheres Verfahren zur modularen Exponentiation zur Berechnung von yx mod N unter Verwendung einer modularen Multiplikation, A*B mod N, wobei A ein Multiplikand, B ein Multiplikator, n die Bitlänge von A und B ist, unter Verwendung einer Informationsverarbeitungsvorrichtung, mit den Schritten: – Ausführen von S = S2 mod N (1107) vorgegebene z Male, wobei z eine positive ganze Zahl ist; – Berechnen von A*B mod N; und – Wiederholen der Schritte des Ausführens von S = S2 mod N (1107) vorgegebene z Male und des Berechnens von A*B mod N über eine Bitlänge von x geteilt durch z Male; wobei der Schritt des Berechnens von A*B mod N durch Berechnen von S1 = A*B mod N oder durch Berechnen von S2 = A*(t*N – B) mod N ausgeführt wird, wobei t = eine ganze Zahl außer 0, und die Berechnung von S1 oder S2 durch Verwendung von Zufallszahlen ausgewählt wird; und wobei das manipulationssichere Verfahren zur modularen Multiplikation weiterhin die Schritte aufweist: – Berechnen von T = N – S2 (1116) in einem Fall, dass das letzte Berechnungsergebnis S2 ist; und – Ausgeben (1118, 1119) von S1 oder T als einem Ergebnis von yx mod N.
DE60125710T 2001-03-05 2001-08-22 Manipulationssichere Methode zur modularen Multiplikation Expired - Lifetime DE60125710T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2001060223A JP3950638B2 (ja) 2001-03-05 2001-03-05 耐タンパーモジュラ演算処理方法
JP2001060223 2001-03-05

Publications (2)

Publication Number Publication Date
DE60125710D1 DE60125710D1 (de) 2007-02-15
DE60125710T2 true DE60125710T2 (de) 2007-11-08

Family

ID=18919673

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60125710T Expired - Lifetime DE60125710T2 (de) 2001-03-05 2001-08-22 Manipulationssichere Methode zur modularen Multiplikation

Country Status (4)

Country Link
US (1) US6968354B2 (de)
EP (1) EP1239364B1 (de)
JP (1) JP3950638B2 (de)
DE (1) DE60125710T2 (de)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10142155C1 (de) * 2001-08-29 2002-05-23 Infineon Technologies Ag Verfahren und Vorrichtung zum modularen Multiplizieren
JP2003241659A (ja) * 2002-02-22 2003-08-29 Hitachi Ltd 情報処理方法
US20040001590A1 (en) * 2002-06-27 2004-01-01 Eisentraeger Anne Kirsten Efficient elliptic curve double-and-add calculator
JP4360792B2 (ja) * 2002-09-30 2009-11-11 株式会社ルネサステクノロジ べき乗剰余演算器
US7769167B2 (en) 2003-07-25 2010-08-03 Microsoft Corporation Weil and Tate pairing techniques using parabolas
US7298839B2 (en) 2003-07-25 2007-11-20 Microsoft Corporation Squared Weil and Tate pairing techniques for use with elliptic curves
US7440569B2 (en) * 2003-07-28 2008-10-21 Microsoft Corporation Tate pairing techniques for use with hyperelliptic curves
DE10338435B4 (de) * 2003-08-18 2008-12-11 Infineon Technologies Ag Schaltung zur Durchführung eines Algorithmus
JP4713490B2 (ja) * 2003-11-17 2011-06-29 サンディスク アイエル リミティド 暗号文メッセージからリトリーブされた平文メッセージの計算をマスクする方法、および、暗号文メッセージをマスクする装置
KR100564599B1 (ko) 2003-12-24 2006-03-29 삼성전자주식회사 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체
FR2864649B1 (fr) * 2004-12-23 2007-06-01 Samsung Electronics Co Ltd Circuit de calcul d'inverse, procede de calcul d'inverse et support d'enregistrement contenant un code de programme lisible par ordinateur
CA2935823C (en) * 2005-01-18 2019-01-15 Certicom Corp. Accelerated verification of digital signatures and public keys
US7743977B2 (en) * 2005-02-28 2010-06-29 Broadcom Corporation Method and system for random data access for security applications
CN101292274B (zh) * 2005-10-19 2011-01-19 松下电器产业株式会社 信息安全装置、信息安全方法、计算机程序、计算机可读取的记录媒体及集成电路
KR100871221B1 (ko) * 2005-11-11 2008-12-01 삼성전자주식회사 선형 궤환 시프트 레지스터를 이용하는 통신 시스템에서부호 생성 방법 및 장치
US20070157030A1 (en) * 2005-12-30 2007-07-05 Feghali Wajdi K Cryptographic system component
KR100808953B1 (ko) 2006-05-22 2008-03-04 삼성전자주식회사 모듈러곱셈 방법 및 상기 곱셈방법을 수행할 수 있는스마트카드
FR2917197B1 (fr) 2007-06-07 2009-11-06 Thales Sa Procede de masquage du resultat d'une operation de multiplication modulaire et dispositif associe.
EP2015171A1 (de) * 2007-06-29 2009-01-14 Gemplus Kryptographieverfahren, das eine gesicherte modulare Potenzierung gegen Angriffe mit verborgenen Kanälen ohne Kenntnis des öffentlichen Exponenten umfasst, Kryptoprozessor zur Umsetzung des Verfahrens und dazugehörige Chipkarte
US7991162B2 (en) * 2007-09-14 2011-08-02 University Of Ottawa Accelerating scalar multiplication on elliptic curve cryptosystems over prime fields
JP5179933B2 (ja) * 2008-04-18 2013-04-10 ルネサスエレクトロニクス株式会社 データ処理装置
US8635467B2 (en) 2011-10-27 2014-01-21 Certicom Corp. Integrated circuit with logic circuitry and multiple concealing circuits
US8334705B1 (en) 2011-10-27 2012-12-18 Certicom Corp. Analog circuitry to conceal activity of logic circuitry
US10148285B1 (en) 2012-07-25 2018-12-04 Erich Schmitt Abstraction and de-abstraction of a digital data stream
US9959429B2 (en) 2013-03-15 2018-05-01 Cryptography Research, Inc. Asymmetrically masked multiplication
US10795858B1 (en) 2014-02-18 2020-10-06 Erich Schmitt Universal abstraction and de-abstraction of a digital data stream
EP3242202A1 (de) * 2016-05-04 2017-11-08 Gemalto Sa Gegenmassnahme bei sicheren fehlerangriffen durch fehlerinjektionen auf kryptografischen potenzierungsalgorithmen
CN108242994B (zh) 2016-12-26 2021-08-13 阿里巴巴集团控股有限公司 密钥的处理方法和装置
US10601578B2 (en) * 2017-10-26 2020-03-24 Nxp B.V. Protecting ECC against fault attacks
EP3503459B1 (de) * 2017-12-22 2021-04-21 Secure-IC SAS Vorrichtung und verfahren zum schutz der ausführung einer kryptographischen operation
US11522674B1 (en) 2021-09-09 2022-12-06 Aires Investment Holdings Private Limited Encryption, decryption, and key generation apparatus and method involving diophantine equation and artificial intelligence

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2726668B1 (fr) * 1994-11-08 1997-01-10 Sgs Thomson Microelectronics Procede de mise en oeuvre de reduction modulaire selon la methode de montgomery
JP3525209B2 (ja) * 1996-04-05 2004-05-10 株式会社 沖マイクロデザイン べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
JP3615622B2 (ja) * 1996-06-28 2005-02-02 株式会社ルネサステクノロジ マイクロコンピュータ
WO1998019231A1 (en) * 1996-10-31 1998-05-07 Motorola Limited Co-processor for performing modular multiplication
US6748410B1 (en) * 1997-05-04 2004-06-08 M-Systems Flash Disk Pioneers, Ltd. Apparatus and method for modular multiplication and exponentiation based on montgomery multiplication
US6026421A (en) * 1997-11-26 2000-02-15 Atmel Corporation Apparatus for multiprecision integer arithmetic
JP2000165375A (ja) * 1998-11-30 2000-06-16 Hitachi Ltd 情報処理装置、icカード
US6298135B1 (en) * 1999-04-29 2001-10-02 Motorola, Inc. Method of preventing power analysis attacks on microelectronic assemblies
JP3926532B2 (ja) * 2000-03-16 2007-06-06 株式会社日立製作所 情報処理装置、情報処理方法、及びカード部材
US6625631B2 (en) * 2001-09-28 2003-09-23 Intel Corporation Component reduction in montgomery multiplier processing element

Also Published As

Publication number Publication date
EP1239364B1 (de) 2007-01-03
US6968354B2 (en) 2005-11-22
EP1239364A1 (de) 2002-09-11
JP2002258743A (ja) 2002-09-11
US20020152252A1 (en) 2002-10-17
JP3950638B2 (ja) 2007-08-01
DE60125710D1 (de) 2007-02-15

Similar Documents

Publication Publication Date Title
DE60125710T2 (de) Manipulationssichere Methode zur modularen Multiplikation
DE60121066T2 (de) Angriffsresistente kryptographische Verfahren und Vorrichtung
DE69930334T2 (de) IC-Karte ausgerüstet mit einer Verarbeitungsanlage für Elliptische-Kurven-Verschlüsselung
DE69534603T2 (de) Verschlüsselungssystem für elliptische kurve
DE60119620T2 (de) Verfahren zur Skalarmultiplikation auf einer elliptischen Kurve und entsprechende Vorrichtung
DE60217260T2 (de) Datenverarbeitungs- und Verschlüsselungseinheit
DE69917592T2 (de) Gegen stromverbrauchsignaturanfall beständige kryptographie
DE60223775T2 (de) Vorrichtung zum Konvertieren einer elliptischen Kurve
EP1891512B1 (de) Bestimmung einer modularen inversen
DE112008000668T5 (de) Kryptografisches Verfahren und System
EP1922837B1 (de) Verfahren zum sicheren ver- oder entschlüsseln einer nachricht
DE102010001289A1 (de) Vorrichtung zum Berechnen eines Ergebnisses einer Skalarmultiplikation
DE102007054316A1 (de) Modulares Multiplikationsverfahren, modularer Multiplizierer und Kryptosystem
DE60217131T2 (de) Universelles berechnungsverfahren für punkte auf einer elliptischen kurve
DE60022770T2 (de) Gegenmassnahme in einem elektronischen baustein zur ausführung eines kryptoalgorithmus mit öffentlichem schlüssel vom rsa-typ
EP1664979B1 (de) Übergang zwischen maskierten repräsentationen eines wertes bei kryptographischen berechnungen
DE60117813T2 (de) Verfahren und Vorrichtung zur Speicherung und wiedergewinnung eones Privaten Kryptoschlüssels
DE10161137B4 (de) Verfahren und System zum kryptographischen Bearbeiten von Daten
DE10161138B4 (de) Verfahren und Vorrichtung zum Ermitteln einer elliptischen Kurve, Verfahren und Vorrichtung zum Multiplizieren eines Punktes mit einem Skalar
EP2128754B1 (de) Sichere sliding window exponentiation
DE10057203C1 (de) Verfahren zur Berechnung eines digitalen Signalwertes für ein cryptographisches Verfahren
DE102012210354B3 (de) Verfahren und Recheneinheit zur Erzeugung kryptographischer Daten
DE102010039273B4 (de) Kryptographie-Prozessor, Chipkarte und Verfahren zur Berechnung eines Ergebnisses einer Exponentiation
DE102004023902A1 (de) Übergang von einer booleschen Maskierung zu einer arithmetischen Maskierung
DE102010064578B3 (de) Kryptographie-Prozessor, Chipkarte und Verfahren zur Berechnung eines Ergebnisses einer Exponentiation

Legal Events

Date Code Title Description
8381 Inventor (new situation)

Inventor name: KAMINAGA, MASAHIRO, TOKYO, JP

Inventor name: ENDO, TAKASHI, TOKYO, JP

Inventor name: WATANABE, TAKASHI, TOKYO, JP

Inventor name: OHKI, MASARU, TOKYO, JP

8364 No opposition during term of opposition