DE60119620T2 - Verfahren zur Skalarmultiplikation auf einer elliptischen Kurve und entsprechende Vorrichtung - Google Patents

Verfahren zur Skalarmultiplikation auf einer elliptischen Kurve und entsprechende Vorrichtung Download PDF

Info

Publication number
DE60119620T2
DE60119620T2 DE60119620T DE60119620T DE60119620T2 DE 60119620 T2 DE60119620 T2 DE 60119620T2 DE 60119620 T DE60119620 T DE 60119620T DE 60119620 T DE60119620 T DE 60119620T DE 60119620 T2 DE60119620 T2 DE 60119620T2
Authority
DE
Germany
Prior art keywords
point
scalar
value
section
doubling
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 - Fee Related
Application number
DE60119620T
Other languages
English (en)
Other versions
DE60119620D1 (de
Inventor
Intell.Property Group Katsuyuki Chiyoda-ku Okeya
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
Publication of DE60119620D1 publication Critical patent/DE60119620D1/de
Application granted granted Critical
Publication of DE60119620T2 publication Critical patent/DE60119620T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • G06F7/725Finite field arithmetic over elliptic curves
    • 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/7261Uniform execution, e.g. avoiding jumps, or using formulae with the same power profile

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)
  • Complex Calculations (AREA)
  • Storage Device Security (AREA)

Description

  • HINTERGRUND DER ERFINDUNG
  • Die vorliegende Erfindung betrifft die Sicherheitstechnologie in einem Computernetzwerk und insbesondere ein Verfahren und eine Vorrichtung zur Kryptographieverarbeitung in einem Kryptosystem mittels elliptischer Kurven und ein Aufzeichnungsmedium.
  • Ein Kryptosystem mittels elliptischer Kurven ist eine Art eines von N. Koblitz und V.S. Miller vorgeschlagenen Kryptosystems mittels öffentlicher Schlüssel. Das Kryptosystem mittels öffentlicher Schlüssel beinhaltet im Allgemeinen als einen öffentlichen Schlüssel bezeichnete Informationen, welche der Öffentlichkeit bekannt gemacht werden können, und als privater Schlüssel bezeichnete Informationen, welche geheim gehalten werden müssen. Der öffentliche Schlüssel wird zur Verschlüsselung oder Signaturprüfung einer gegebenen Nachricht verwendet, und der private Schlüssel wird zur Entschlüsselung oder Signaturerzeugung der gegebenen Nachricht verwendet. Der private Schlüssel in dem Kryptosystem mittels elliptischer Kurven hängt von einem Skalarwert ab. Zusätzlich ergibt sich die Sicherheit des Kryptosystems mittels elliptischer Kurven aus der Schwierigkeit, ein diskretes Logarithmenproblem auf einer elliptischen Kurve zu lösen. Hierbei bedeutet das diskrete Logarithmenproblem auf einer elliptischen Kurve ein Problem, einen Skalarwert d zu erhalten, wenn ein Punkt P, der sich auf einer elliptischen Kurve befindet, und ein Punkt dP, der ein skalares Vielfaches des Punkts P ist, bereitgestellt sind. Hier bezeichnet jeder Punkt auf der elliptischen Kurve einen Satz von Zahlen, die eine Definitionsgleichung der elliptischen Kurve erfüllen. Eine Operation unter Verwendung eines als Unendlichkeitspunkt bezeichneten virtuellen Punkts als ein Identitätselement, d.h. eine Addition auf der elliptischen Kurve, ist für alle Punkte auf der elliptischen Kurve definiert. Dann wird eine Addition eines Punkts zu dem Punkt selbst auf der elliptischen Kurve insbesondere als eine Verdopplung auf der elliptischen Kurve bezeichnet. Eine Skalarmultiplikation gibt an, dass eine Addition mit einer bestimmten Häufigkeit auf einen Punkt angewendet wird. Ein skalarmultiplizierter Punkt bezeichnet das Ergebnis der Skalarmultiplikation, und ein Skalarwert bezeichnet die Häufigkeit.
  • Die Schwierigkeit, das diskrete Logarithmenproblem auf einer elliptischen Kurve zu lösen, wurde theoretisch bewiesen, während Informationen, die geheimen Informationen in der Art des privaten Schlüssels oder dergleichen zugeordnet sind, in einer realen Umgebung bei der Kryptographieverarbeitung herauslecken können. Demgemäß wurde ein Angriffsverfahren einer so genannten Leistungsanalyse vorgeschlagen, bei dem die geheimen Informationen auf der Grundlage der Leckinformationen entschlüsselt werden.
  • Ein Angriffsverfahren, bei dem Spannungsänderungen bei der Kryptographieverarbeitung unter Verwendung geheimer Informationen, wie DES (Data Encryption Standard) oder dergleichen, gemessen werden, so dass der Prozess der Kryptographieverarbeitung erhalten wird und die geheimen Informationen auf der Grundlage des erhaltenen Prozesses abgeleitet werden, ist in P. Kocher, J. Jaffe und B. Jun, Differential Power Analysis, Advances in Cryptology: Verhandlungen von CRYPTO '99, LNCS 1666, Springer-Verlag (1999), S. 388–397 offenbart. Dieses Angriffsverfahren wird als DPA ("Differential Power Analysis") bezeichnet.
  • Ein Kryptosystem mittels elliptischer Kurven, auf das das vorstehend erwähnte Angriffsverfahren angewendet wird, ist in J. Coron, Resistance against Differential Power Analysis for Elliptic Curve Cryptosystems, Cryptographic Hardware and Embedded Systems: Verhandlungen von CHES '99, LNCS 1717, Springer-Verlag (1999), S. 292–302 offenbart. In dem Kryptosystem mittels elliptischer Kurven müssen eine Verschlüsselung, Entschlüsselung, Signaturerzeugung und Signaturprüfung einer gegebenen Nachricht mit Operationen bezüglich elliptischer Kurven ausgeführt werden. Insbesondere wird die Berechnung der Skalarmultiplikation auf einer elliptischen Kurve bei der Kryptographieverarbeitung unter Verwendung eines Skalarwerts als geheime Information verwendet.
  • Andererseits ist in P.L. Montgomery, Speeding the Pollard and Elliptic Curve Methods of Factorization, Math. Comp. 48 (1987), S. 243–264 offenbart, dass unter Verwendung einer elliptischen Kurve von Montgomery-Form BY2 = X3 + AX2 + X (A, B ∊ Fp) Operationen mit höherer Geschwindigkeit als unter Verwendung einer als elliptische Kurve von Weierstrass-Form bezeichneten elliptischen Kurve, die allgemein verwendet wird, ausgeführt werden können. Dies ergibt sich dadurch, dass die Berechnungszeit für die Addition und Verdopplung durch die Verwendung einer elliptischen Kurve von Montgomery-Form in dem folgenden Skalarmultiplikations-Berechnungsverfahren verkürzt wird. Das heißt, dass bei dem Skalarmultiplikations-Berechnungsverfahren ein Punktpaar (2mP, (2m + 1)P) oder ein Punktpaar ((2m + 1)P, (2m + 2)P), abhängig von dem Wert eines spezifischen Bits eines Skalarwerts, wiederholt anhand eines Punktpaars (mP, (m + 1)P) auf einer elliptischen Kurve berechnet wird.
  • Zusätzlich sind in J. Lopez und R. Dahab, Fast Multiplication on Elliptic Curve over GF(2m) without Precomputation, Cryptographic Hardware and Embedded Systems: Verhandlungen von CHES '99, LNCS 1717, Springer-Verlag (1999), S. 316–327 ein Skalarmultiplikations-Berechnungsverfahren, bei dem ein Skalarmultiplikations-Berechnungsverfahren in einer elliptischen Kurve von Montgomery-Form auch auf eine elliptische Kurve angewendet wird, die auf einem endlichen Körper der Charakteristik 2 definiert ist, ein Additionsverfahren und ein Verdopplungsverfahren zur Verwendung bei dem Skalarmultiplikations-Berechnungsverfahren offenbart. Bei dem Skalarmultiplikations-Berechnungsverfahren ist die Berechnungszeit für die Addition und Verdopplung verkürzt. Dementsprechend kann die Skalarmultiplikationsberechnung mit höherer Geschwindigkeit ausgeführt werden als bei einem allgemeinen Skalarmultiplikations-Berechnungsverfahren auf einer elliptischen Kurve, die auf einem endlichen Körper der Charakteristik 2 definiert ist.
  • Als eine Maßnahme gegen einen DPA-Angriff auf Kryptosysteme mittels elliptischer Kurven ist ein Verfahren, bei dem randomisierte projektive Koordinaten verwendet werden, in J. Coron, Resistance against Differential Power Analysis for Elliptic Curve Cryptosystems, Cryptographic Hardware and Embedded Systems: Verhandlungen von CHES '99, LNCS 1717, Springer-Verlag (1999), S. 292–302 offenbart. Dies ist eine Maßnahme gegen ein Angriffsverfahren, bei dem beobachtet wird, ob ein spezifischer Wert bei der Skalarmultiplikationsberechnung auftritt oder nicht und ein Skalarwert anhand des Beobachtungsergebnisses abgeleitet wird. Das heißt, dass durch Multiplikation mit einem Zufallswert verhindert wird, dass die Erscheinung eines solchen spezifischen Werts abgeleitet wird.
  • Bei dem vorstehend erwähnten Kryptosystem mittels elliptischer Kurven aus dem Stand der Technik wurde ein Angriff durch eine Leistungsanalyse, wie DPA oder dergleichen, nicht berücksichtigt. Daher müssen zum Entkräften des Angriffs durch die Leistungsanalyse zusätzliche Berechnungen oder dergleichen, die über die erforderlichen Berechnungen hinausgehen, bei der Kryptographieverarbeitung unter Verwendung geheimer Informationen ausgeführt werden, um die Abhängigkeit des Prozesses der Kryptographieverarbeitung und der geheimen Informationen voneinander abzuschwächen. Demgemäß wurde die für die Kryptographieverarbeitung erforderliche Zeit erhöht, so dass die Wirksamkeit der Kryptographieverarbeitung in einem Computer in der Art einer Chipkarte oder dergleichen mit einer geringen Rechengeschwindigkeit, einem Server, der eine sehr hohe Anzahl von Kryptographieprozessen verwaltet, oder dergleichen, erheblich abgenommen hat. Zusätzlich kann die Abhängigkeit des Kryptographieverarbeitungsprozesses und geheimer Informationen voneinander nicht vollkommen aufgehoben werden. Falls der Wirksamkeit der Kryptographieverarbeitung Priorität gegeben wurde, wurde das Kryptosystem weiterhin leicht durch eine Leistungsanalyse angreifbar, so dass eine Möglichkeit bestand, dass geheime Informationen herauslecken.
  • In WO 00/25204 A ist ein Skalarmultiplikationsverfahren in einem Kryptographiesystem mittels elliptischer Kurven unter Einschluss der Merkmale des Oberbegriffs des Anspruchs 1 offenbart.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Eine Aufgabe der vorliegenden Erfindung besteht darin, ein Verfahren und eine Vorrichtung zur Kryptographieverarbeitung und ein Aufzeichnungsmedium, wobei geheime Informationen selbst auch dann nicht herauslecken, wenn der Kryptographieverarbeitungsprozess bei der Leistungsanalyse oder dergleichen herausleckt, und wobei die Kryptographieverarbeitung mit hoher Geschwindigkeit ausgeführt werden kann, bereitzustellen. Insbesondere besteht eine Aufgabe der vorliegenden Erfindung darin, ein Skalarmultiplikations-Berechnungsverfahren bereitzustellen, bei dem Informationen über einen Skalarwert als geheime Informationen nicht anhand des Berechnungsprozesses zum Berechnen eines skalarmultiplizierten Punkts auf einer elliptischen Kurve von dem Skalarwert abgeleitet werden können.
  • Zum Lösen der vorstehenden Aufgabe ist das Skalarmultiplikations-Berechnungsverfahren zum Berechnen eines skalarmultiplizierten Punkts auf der Grundlage eines Skalarwerts und eines Punkts auf einer elliptischen Kurve in einem Kryptosystem mittels elliptischer Kurven gemäß Anspruch 1 vorgesehen.
  • Weiterhin ist gemäß einem anderen Aspekt der vorliegenden Erfindung ein Datenerzeugungsverfahren zum Erzeugen zweiter Daten anhand erster Daten vorgesehen, welches den Schritt des Berechnens einer Skalarmultiplikation unter Verwendung des vorstehend erwähnten Skalarmultiplikations-Berechnungsverfahrens aufweist. Weiterhin ist gemäß einem anderen Aspekt der vorliegenden Erfindung ein Signaturerzeugungsverfahren zum Erzeugen von Signaturdaten anhand Daten vorgesehen, welches den Schritt des Berechnens einer Skalarmultiplikation unter Verwendung des vorstehend erwähnten Skalarmultiplikations-Berechnungsverfahrens aufweist. Zusätzlich ist gemäß einem anderen Aspekt der vorliegenden Erfindung ein Entschlüsselungsverfahren zum Erzeugen entschlüsselter Daten anhand verschlüsselter Daten vorgesehen, welches den Schritt des Berechnens einer Skalarmultiplikation unter Verwendung der vorstehend erwähnten Skalarmultiplikations-Berechnungsverfahren aufweist.
  • Weiterhin ist gemäß einem anderen Aspekt der vorliegenden Erfindung der Skalarmultiplikationsrechner zum Berechnen eines skalarmultiplizierten Punkts auf der Grundlage eines Skalarwerts und eines Punkts auf einer elliptischen Kurve in einem Kryptosystem mittels elliptischer Kurven gemäß Anspruch 8 vorgesehen.
  • Weiterhin ist gemäß einem anderen Aspekt der vorliegenden Erfindung ein Aufzeichnungsmedium zum Speichern eines Programms, das, wenn es auf einem Computer ausgeführt wird, das vorstehend erwähnte Skalarmultiplikations-Berechnungsverfahren ausführt, vorgesehen. Vorzugsweise kann eine elliptische Kurve von Montgomery-Form als die elliptische Kurve verwendet werden. Vorzugsweise kann eine auf einem endlichen Körper der Charakteristik 2 definierte elliptische Kurve als die elliptische Kurve verwendet werden.
  • Wie vorstehend beschrieben wurde, wird gemäß der vorliegenden Erfindung bei der Kryptographieverarbeitung unter Verwendung geheimer Informationen in einem Kryptographieverarbeitungssystem die Abhängigkeit des Kryptographieverarbeitungsprozesses und der geheimen Informationen voneinander vollkommen aufgehoben. Daher lecken die geheimen Informationen selbst dann nicht heraus, wenn der Kryptographieverarbeitungsprozess herausleckt. Zusätzlich kann die Kryptographieverarbeitung mit hoher Geschwindigkeit ausgeführt werden, wenn eine zu verwendende elliptische Kurve zu einer elliptischen Kurve von Montgomery-Form umgeformt wird. Ebenso kann die Kryptographieverarbeitung mit hoher Geschwindigkeit ausgeführt werden, wenn eine auf einem endlichen Körper der Charakteristik 2 definierte elliptische Kurve als die elliptische Kurve verwendet wird.
  • KURZBESCHREIBUNG DER ZEICHNUNG
  • 1 ist ein Flussdiagramm, in dem ein Skalarmultiplikations-Berechnungsverfahren gemäß einem ersten für das Verständnis der vorliegenden Erfindung nützlichen Beispiel dargestellt ist.
  • 2 zeigt einen Verarbeitungsablauf in dem Skalarmultiplikations-Berechnungsverfahren und eine Vorrichtung dafür gemäß dem ersten Beispiel.
  • 3 zeigt eine Konfiguration eines Signaturgenerators gemäß einem Modus zum Ausführen der vorliegenden Erfindung.
  • 4 ist ein Flussdiagramm, in dem ein Skalarmultiplikations-Berechnungsverfahren gemäß einem zweiten für das Verständnis der vorliegenden Erfindung nützlichen Beispiel dargestellt ist.
  • 5 zeigt einen Verarbeitungsablauf in dem Skalarmultiplikations-Berechnungsverfahren und eine Vorrichtung dafür gemäß dem zweiten Beispiel.
  • 6 ist ein Flussdiagramm eines Verarbeitungsablaufs in dem Skalarmultiplikations-Berechnungsverfahren gemäß dem dritten für das Verständnis der vorliegenden Erfindung nützlichen Beispiel.
  • 7 zeigt einen Verarbeitungsablauf in dem Skalarmultiplikations-Berechnungsverfahren und eine Vorrichtung dafür gemäß dem dritten Beispiel.
  • 8 ist ein Flussdiagramm, in dem ein Skalarmultiplikations-Berechnungsverfahren gemäß einem vierten für das Verständnis der vorliegenden Erfindung nützlichen Beispiel dargestellt ist.
  • 9 zeigt einen Verarbeitungsablauf in dem Skalarmultiplikations-Berechnungsverfahren und eine Vorrichtung dafür gemäß dem vierten Beispiel.
  • 10 zeigt eine Konfiguration einer Entschlüsselungseinrichtung gemäß dem Modus zum Ausführen der vorliegenden Erfindung.
  • 11 zeigt eine Konfiguration eines Kryptographieverarbeitungssystems gemäß einem Modus zum Ausführen der vorliegenden Erfindung.
  • 12 ist ein Flussdiagramm, in dem ein Skalarmultiplikations-Berechnungsverfahren gemäß einer ersten Ausführungsform der vorliegenden Erfindung dargestellt ist.
  • 13 ist ein Flussdiagramm, in dem ein Skalarmultiplikations-Berechnungsverfahren gemäß der ersten Ausführungsform der vorliegenden Erfindung dargestellt ist.
  • 14 ist ein Flussdiagramm, in dem ein Skalarmultiplikations-Berechnungsverfahren gemäß der ersten Ausführungsform der vorliegenden Erfindung dargestellt ist.
  • 15 zeigt einen Verarbeitungsablauf in dem Skalarmultiplikations-Berechnungsverfahren und eine Vorrichtung dafür gemäß der ersten Ausführungsform.
  • 16 ist ein Flussdiagramm, das ein Kryptographieverarbeitungsverfahren in dem Kryptographieverarbeitungssystem in 11 zeigt.
  • 17 ist eine Sequenzansicht, die einen Verarbeitungsablauf in dem Kryptographieverarbeitungssystem in 11 zeigt.
  • 18 ist ein Flussdiagramm eines Signaturerzeugungsverfahrens in dem Signaturgenerator in 3.
  • 19 ist eine Sequenzansicht, die einen Verarbeitungsablauf in dem Signaturgenerator in 3 zeigt.
  • 20 ist ein Flussdiagramm eines Entschlüsselungsverfahrens in der Entschlüsselungseinrichtung in 10.
  • 21 ist eine Sequenzansicht, die einen Verarbeitungsablauf in der Entschlüsselungseinrichtung in 10 zeigt.
  • 22 ist ein Flussdiagramm eines Skalarmultiplikations-Berechnungsverfahrens gemäß einer zweiten Ausführungsform der vorliegenden Erfindung.
  • 23 ist ein Flussdiagramm des Skalarmultiplikations-Berechnungsverfahrens gemäß der zweiten Ausführungsform der vorliegenden Erfindung.
  • 24 ist ein Flussdiagramm eines Skalarmultiplikations-Berechnungsverfahrens gemäß der zweiten Ausführungsform der vorliegenden Erfindung.
  • 25 ist ein Flussdiagramm, das einen Verarbeitungsablauf in dem Skalarmultiplikations-Berechnungsverfahren und eine Vorrichtung dafür gemäß der zweiten Ausführungsform der vorliegenden Erfindung zeigt.
  • 26 ist ein Flussdiagramm eines Skalarmultiplikations-Berechnungsverfahrens gemäß einem fünften für das Verständnis der vorliegenden Erfindung nützlichen Beispiel.
  • 27 ist ein Flussdiagramm, das einen Verarbeitungsablauf bei dem Skalarmultiplikations-Berechnungsverfahren und eine Vorrichtung dafür gemäß dem fünften Beispiel zeigt.
  • 28 zeigt eine Vorrichtung zum Umwandeln in randomisierte projektive Koordinaten in 27.
  • 29 ist ein Flussdiagramm eines Verfahrens zum Umwandeln in randomisierte projektive Koordinaten in der Vorrichtung zum Umwandeln in randomisierte projektive Koordinaten.
  • DETAILLIERTE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • Ein Modus zum Ausführen der vorliegenden Erfindung wird nachstehend mit Bezug auf die Zeichnung beschrieben.
  • 11 zeigt eine Konfiguration eines Kryptographieverarbeitungssystems entsprechend dem Modus zum Ausführen der vorliegenden Erfindung. Dieses Kryptographieverarbeitungssystem 1101 ist beispielsweise in einer Chipkarte bereitgestellt. Wenn eine Nachricht (ein Wert) 1105 zur Verschlüsselung (oder Entschlüsselung oder Signaturerzeugung oder -prüfung) eingegeben wird, wird eine Verarbeitung ausgeführt, um eine vorgegebene Berechnung auszuführen und eine Nachricht (einen Wert) 1106 auszugeben. Das Kryptographieverarbeitungssystem 1101 weist einen Kryptographieverarbeitungsabschnitt 1102, einen Skalarmultiplikations-Berechnungsabschnitt 1103 und einen Abschnitt 1104 zum Speichern geheimer Informationen auf. Insbesondere lecken aus dem Skalarmultiplikations-Berechnungsabschnitt 1103 in diesem Modus selbst dann keine geheimen Informationen, wenn der Skalarmultiplikations-Berechnungsprozess herausleckt. Demgemäß ist das Kryptographieverarbeitungssystem 1101 als ein System ausgebildet, aus dem selbst dann keine geheimen Informationen herauslecken, wenn der Kryptographieverarbeitungsprozess herausleckt.
  • 16 ist ein Flussdiagramm, in dem ein Verarbeitungsablauf in dem Kryptographieverarbeitungssystem in 11 dargestellt ist. 17 ist eine Sequenzansicht, in der ein Verarbeitungsablauf in dem Kryptographieverarbeitungssystem in 11 dargestellt ist.
  • In 16 gibt das Kryptographieverarbeitungssystem 1101 die der Kryptographieverarbeitung in der folgenden Weise auf der Grundlage der gegebenen Nachricht 1105 unterzogene Nachricht 1106 aus. Wenn die Nachricht 1105 dem Kryptographieverarbeitungssystem 1101 zugeführt wird, empfängt der Kryptographieverarbeitungsabschnitt 1102 zuerst die Nachricht 1105 (Schritt 1601). Der Kryptographie verarbeitungsabschnitt 1102 übergibt dem Skalarmultiplikations-Berechnungsabschnitt 1103 entsprechend der eingegebenen Nachricht 1105 einen Punkt auf einer elliptischen Kurve (Schritt 1602). Der Skalarmultiplikations-Berechnungsabschnitt 1103 empfängt einen Skalarwert, der geheime Informationen darstellt, von dem Abschnitt 1104 zum Speichern geheimer Informationen (Schritt 1603). Der Skalarmultiplikations-Berechnungsabschnitt 1103 berechnet einen skalarmultiplizierten Punkt auf der Grundlage des empfangenen Punkts und des empfangenen Skalarwerts bei einem Skalarmultiplikations-Berechnungsverfahren, bei dem selbst dann keine geheimen Informationen herauslecken, wenn der Skalarmultiplikations-Berechnungsprozess herausleckt (Schritt 1604). Der Skalarmultiplikations-Berechnungsabschnitt 1103 sendet den berechneten Skalarmultiplikationspunkt zum Kryptographieverarbeitungsabschnitt 1102 (Schritt 1605). Der Kryptographieverarbeitungsabschnitt 1102 führt eine Kryptographieverarbeitung auf der Grundlage des vom Skalarmultiplikations-Berechnungsabschnitt 1103 empfangenen skalarmultiplizierten Punkts aus (Schritt 1606). Der Kryptographieverarbeitungsabschnitt 1102 gibt eine Nachricht 1106 als Ergebnis der Kryptographieverarbeitung aus (Schritt 1607).
  • Die vorstehend erwähnte Verarbeitungsprozedur wird mit Bezug auf die Sequenzansicht aus 17 beschrieben. Zuerst wird die von einem Kryptographieverarbeitungsabschnitt 1701 ausgeführte Verarbeitung beschrieben (1102 in 11). Der Kryptographieverarbeitungsabschnitt 1701 empfängt eine Eingabenachricht. Der Kryptographieverarbeitungsabschnitt 1701 wählt einen Punkt auf einer elliptischen Kurve auf der Grundlage der Eingabenachricht aus, übergibt den Punkt auf der elliptischen Kurve an einen Skalarmultiplikations-Berechnungsabschnitt 1702 aus und empfängt einen skalarmultiplizierten Punkt von dem Skalarmultiplikations-Berechnungsabschnitt 1702. Der Kryptographieverarbeitungsabschnitt 1701 führt eine Kryptographieverarbeitung unter Verwendung des empfangenen skalarmultiplizierten Punkts aus und gibt eine Ausgabenachricht als Ergebnis der Kryptographieverarbeitung aus.
  • Als nächstes wird die vom Skalarmultiplikations-Berechnungsabschnitt 1702 ausgeführte Verarbeitung beschrieben (1103 in 11). Der Skalarmultiplikations-Berechnungsabschnitt 1702 empfängt einen Punkt auf einer elliptischen Kurve von dem Kryptographieverarbeitungsabschnitt 1701. Der Skalarmultiplikations-Berechnungsabschnitt 1702 empfängt einen Skalarwert von einem Abschnitt 1703 zum Speichern geheimer Informationen. Der Skalarmultiplikations-Berechnungsabschnitt 1702 berechnet einen skalarmultiplizierten Punkt auf der Grundlage des empfangenen Punkts auf der elliptischen Kurve und des empfangenen Skalarwerts bei einem Skalarmultiplikations-Berechnungsverfahren, bei dem geheime Informationen selbst dann nicht herauslecken, wenn der Skalarmultiplikations-Berechnungsprozess herausleckt. Dann sendet der Skalarmultiplikations-Berechnungsabschnitt 1702 den skalarmultiplizierten Punkt zum Kryptographieverarbeitungsabschnitt 1701.
  • Als letztes wird die vom Abschnitt 1703 zum Speichern geheimer Informationen ausgeführte Verarbeitung beschrieben (1104 in 11). Der Abschnitt 1703 zum Speichern geheimer Informationen sendet einen Skalarwert zum Skalarmultiplikations-Berechnungsabschnitt 1702, so dass der Skalarmultiplikations-Berechnungsabschnitt 1702 einen skalarmultiplizierten Wert berechnen kann.
  • Bei der vom Skalarmultiplikations-Berechnungsabschnitt 1103 ausgeführten Skalarmultiplikationsberechnung lecken keine Informationen über den Skalarwert, wobei es sich um geheime Informationen handelt, heraus, selbst wenn der Skalarmultiplikations-Berechnungsprozess herausleckt. Demgemäß lecken selbst dann, wenn der Kryptographieverarbeitungsprozess herausleckt, wenn der Kryptographieverarbeitungsabschnitt 1102 die Kryptographieverarbeitung ausführt, keine geheimen Informationen heraus. Dies liegt daran, dass nur der Skalarmultiplikations-Berechnungs abschnitt 1103 den Skalarwert behandelt, der die geheimen Informationen darstellt.
  • Als nächstes wird ein Beispiel des Skalarmultiplikations-Berechnungsabschnitts 1103 in dem Kryptographieverarbeitungssystem 1101 beschrieben.
  • 2 zeigt ein erstes Beispiel, das zum Verständnis eines Skalarmultiplikations-Berechnungsverfahrens nützlich ist, bei dem selbst dann keine geheimen Informationen herauslecken, wenn der Kryptographieverarbeitungsprozess bei der Kryptographieverarbeitung unter Verwendung der geheimen Informationen in dem Kryptographieverarbeitungssystem 1101 herausleckt. 1 ist ein Flussdiagramm, in dem das Skalarmultiplikations-Berechnungsverfahren gemäß dem ersten Beispiel dargestellt ist. Das erste Beispiel wird mit Bezug auf die 1 und 2 beschrieben.
  • In einen Skalarmultiplikationsrechner 201 werden ein Punkt und ein Skalarwert 207 eingegeben, und eine Skalarmultiplikation 208 wird bei der folgenden Prozedur ausgegeben. Hier wird angenommen, dass der eingegebene Punkt, der eingegebene Skalarwert und ein auszugebender skalarmultiplizierter Punkt durch P, d bzw. dP ausgedrückt sind.
  • In Schritt 101 wird 1 als Anfangswert in eine Variable I eingesetzt, um in einem Wiederholungsbeurteilungsabschnitt 206 zu beurteilen, ob eine Wiederholung erfolgen sollte oder nicht. In Schritt 102 wird ein Verdopplungspunkt 2P des Punkts P durch einen Verdopplungsoperationsabschnitt 204 berechnet. In Schritt 103 werden der dem Skalarmultiplikationsrechner 201 zugeführte Punkt P und der in Schritt 102 erhaltene Punkt 2P in einem Punktspeicherabschnitt 202 als ein Punktpaar (P, 2P) gespeichert. In Schritt 104 wird durch den Wiederholungsbeurteilungsabschnitt 206 beurteilt, ob die Variable I und die Bitlänge des Skalarwerts miteinander übereinstimmen oder nicht. Falls die Variable I und der Skalarwert miteinander übereinstimmen, geht die Verarbeitung zu Schritt 113. Falls sie nicht übereinstimmen, geht die Verarbeitung zu Schritt 105. In Schritt 105 wird die Variable I um 1 erhöht. In Schritt 106 wird durch einen Bitwert-Beurteilungsabschnitt 205 beurteilt, ob der Wert des I-ten Bits des Skalarwerts 0 oder 1 ist. Falls der Wert des I-ten Bits 0 ist, geht die Verarbeitung zu Schritt 107. Falls der Wert des I-ten Bits 1 ist, geht die Verarbeitung zu Schritt 110.
  • In Schritt 107 wird durch einen Additionsoperationsabschnitt 203 eine Addition mP + (m + 1)P zwischen einem Punkt mP und einem Punkt (m + 1)P auf der Grundlage eines im Punktspeicherabschnitt 202 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt (2m + 1)P berechnet. Dann geht die Verarbeitung zu Schritt 108. In Schritt 108 wird durch den Verdopplungsoperationsabschnitt 204 die Verdopplung 2(mP) des Punkts mP auf der Grundlage des im Punktspeicherabschnitt 202 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt 2mP berechnet. Dann geht die Verarbeitung zu Schritt 109. In Schritt 109 werden der in Schritt 108 erhaltene Punkt 2mP und der in Schritt 107 erhaltene Punkt (2m + 1)P als ein Punktpaar (2mP, (2m + 1)P) an Stelle des Punktpaars (mP, (m + 1)P) im Punktspeicherabschnitt 202 gespeichert. Dann kehrt die Verarbeitung zu Schritt 104 zurück.
  • In Schritt 110 wird durch einen Additionsoperationsabschnitt 203 die Addition mP + (m + 1)P zwischen einem Punkt mP und einem Punkt (m + 1)P auf der Grundlage eines im Punktspeicherabschnitt 202 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt (2m + 1)P berechnet. Dann geht die Verarbeitung zu Schritt 111. In Schritt 111 wird durch den Verdopplungsoperationsabschnitt 204 eine Verdopplung 2((m + 1)P) des Punkts (m + 1)P auf der Grundlage des im Punktspeicherabschnitt 202 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt (2m + 2)P berechnet. Dann geht die Verarbeitung zu Schritt 112. In Schritt 112 werden der in Schritt 110 erhaltene Punkt (2m + 1)P und der in Schritt 111 erhaltene Punkt (2m + 2)P als ein Punktpaar ((2m + 1)P, (2m + 2)P) an Stelle des Punktpaars (mP, (m + 1)P) im Punktspeicherabschnitt 202 gespeichert. Dann kehrt die Verarbeitung zu Schritt 104 zurück.
  • In Schritt 113 wird der Punkt mP als die Skalarmultiplikation 208 auf der Grundlage des im Punktspeicherabschnitt 202 gespeicherten Punktpaars (mP, (m + 1)P) ausgegeben. Demgemäß wird die Verarbeitung beendet.
  • Der Punkt mP, der ein durch die vorstehend erwähnte Prozedur ausgegebener Wert ist, entspricht dem skalarmultiplizierten Punkt dP, der durch Multiplizieren des Punkts P mit dem Skalarwert d erhalten wird. Dies wird dadurch bewiesen, dass ein Skalarwert m in Bezug auf den Punkt mP des im Berechnungsprozess gespeicherten Punktpaars (mP, (m + 1)P) mit der Bitzeichenkette der oberen I Bits im Skalarwert d übereinstimmen muss, und zusätzlich dadurch, dass, um in Schritt 104 zu folgern, dass die Verarbeitung zu Schritt 113 geht, die Variable I und die Bitlänge des Skalarwerts d miteinander übereinstimmen müssen. Das heißt, dass dadurch, dass der Skalarwert m mit dem Skalarwert d übereinstimmt, bewiesen wird, dass der Punkt mP dem skalarmultiplizierten Punkt dP entspricht.
  • Andererseits ist der Grund dafür, dass Informationen über einen Skalarwert als geheime Informationen selbst dann nicht herauslecken, wenn der Skalarmultiplikations-Berechnungsprozess in der vorstehend erwähnten Prozedur herausleckt, der folgende. Zum Erhalten von Informationen über einen Skalarwert auf der Grundlage des Berechnungsprozesses muss es zumindest eine Differenz zwischen dem Berechnungsprozess für einen Skalarwert und dem Berechnungsprozess für einen anderen geben. Zuerst werden zwei Skalarwerte betrachtet, die sich nur in einem spezifischen Bit voneinander unterscheiden. Der Unterschied in dem spezifischen Bit führt zu einem Unterschied in der Beziehung, ob die Verarbeitung zu Schritt 107 oder zu Schritt 110 geht, nachdem die Beurteilung von Bitwerten in Schritt 106 nach Operationen in dem Berechnungsprozess mit einer bestimmten Häufigkeit wiederholt wurde. Unabhängig davon, ob die Verarbeitung zu Schritt 107 oder zu Schritt 110 geht, sind die danach ausgeführten Schritte jedoch gleich. Das heißt, dass nach Schritt 107 und Schritt 110 zuerst eine Addition ausgeführt wird, als nächstes eine Verdopplung ausgeführt wird und dann das Ergebnis als ein Punktpaar gespeichert wird. Dann kehrt die Verarbeitung zu Schritt 104 zurück. Dementsprechend gibt es keinen Unterschied in dem Berechnungsprozess. Weil der gleiche Berechnungsprozess verwendet wird, ist es daher unmöglich, Informationen über einen Skalarwert zu entnehmen.
  • Als nächstes werden Skalarwerte mit einer festen Bitlänge beschrieben. Zwei Skalarwerte mit der gleichen Bitlänge unterscheiden sich in einigen Bitwerten. Es sei angenommen, dass die Anzahl der Bits, die unterschiedliche Werte aufweisen, k ist und dass die zwei gegebenen Skalarwerte d0 bzw. dk sind. Ein Skalarwert d1 ist so definiert, dass der Wert eines ersten verschiedenwertigen Bits der Skalarwerte d0 und dk gleich dem Wert des entsprechenden Bits des Skalarwerts dk ist und die Werte der anderen Bits gleich den Werten der entsprechenden Bits des Skalarwerts d0 sind. Die Skalarwerte d0 und d1 unterscheiden sich nur in einem Bitwert. Als nächstes wird ein Skalarwert d2 so definiert, dass der Wert eines ersten verschiedenwertigen Bits der Skalarwerte d1 und dk gleich dem Wert des entsprechenden Bits des Skalarwerts dk ist und dass die Werte der anderen Bits gleich den Werten der entsprechenden Bits des Skalarwerts d1 sind. Die Skalarwerte d1 und d2 unterscheiden sich nur in einem Bitwert. In der gleichen Weise werden Skalarwerte d3 bis dk-1 definiert. Weil die Skalarwerte d0 und dk in k-ten Bitwerten verschieden sind, unterscheiden sich die Skalarwerte dk-1 und dk nur in einem Bitwert. Dementsprechend unterscheiden sich Skalarwerte, die sich in dem Index nur um eins unterscheiden, nur in einem Bitwert voneinander. Wie vorstehend beschrieben wurde, durchlaufen Skalarwerte, die sich nur in einem Bitwert unterscheiden, den gleichen Berechnungsprozess. Weil es eine Kette der Skalarwerte d0 bis dk gibt, die sich nur in einem Bitwert unterscheiden, durchlaufen die Skalarwerte d0 und dk den gleichen Berechnungsprozess. Es ist daher nicht möglich, Informationen eines Skalarwerts aus dem Berechnungsprozess zu entnehmen.
  • Falls eine elliptische Kurve von Montgomery-Form für die elliptische Kurve verwendet wird, können zusätzlich die Addition und die Verdopplung mit hoher Geschwindigkeit ausgeführt werden. Demgemäß kann die Skalarmultiplikationsberechnung mit höherer Geschwindigkeit als bei einer elliptischen Kurve von Weierstrass-Form, die im Allgemeinen verwendet wird, ausgeführt werden.
  • Es ist auch ein schnelles Additions- und Verdopplungsberechnungsverfahren für eine auf einem endlichen Körper der Charakteristik 2 definierte elliptische Kurve bekannt. Falls ein solches Berechnungsverfahren für die Additions- und Verdopplungsberechnung in der vorstehend erwähnten Prozedur verwendet wird, kann eine Skalarmultiplikationsberechnung mit einer höheren Geschwindigkeit als eine allgemeine Skalarmultiplikationsberechnung für eine auf einem endlichen Körper der Charakteristik 2 definierte elliptische Kurve ausgeführt werden.
  • 5 zeigt ein zweites Beispiel eines Skalarmultiplikations-Berechnungsverfahrens, in dem geheime Informationen selbst dann nicht herauslecken, wenn der Kryptographieverarbeitungsprozess bei der Kryptographieverarbeitung herausleckt, bei der die geheimen Informationen in dem Kryptographieverarbeitungssystem 1101 in 11 verwendet werden. 4 ist ein Flussdiagramm, welches das Skalarmultiplikations-Berechnungsverfahren gemäß dem zweiten Beispiel zeigt. Das zweite Beispiel wird mit Bezug auf die 4 und 5 beschrieben.
  • In einen Skalarmultiplikationsrechner 501 werden ein Punkt und ein Skalarwert 507 eingegeben und eine Skalarmultiplikation 508 in der folgenden Prozedur ausgegeben. In Schritt 401 wird 1 als Anfangswert in eine Variable I eingesetzt, um in einem Wiederholungsbeurteilungsabschnitt 506 zu beurteilen, ob eine Wiederholung erfolgen sollte oder nicht. In Schritt 402 wird ein Verdopplungspunkt 2P des Punkts P durch einen Verdopplungsoperationsabschnitt 504 berechnet. In Schritt 403 werden der dem Skalarmultiplikationsrechner 501 zugeführte Punkt P und der in Schritt 402 erhaltene Punkt 2P in einem Punktspeicherabschnitt 502 als ein Punktpaar (P, 2P) gespeichert. In Schritt 404 wird durch den Wiederholungsbeurteilungsabschnitt 506 beurteilt, ob die Variable I und die Bitlänge des Skalarwerts miteinander übereinstimmen oder nicht. Falls die Variable I und der Skalarwert miteinander übereinstimmen, geht die Verarbeitung zu Schritt 413. Falls sie nicht übereinstimmen, geht die Verarbeitung zu Schritt 405. In Schritt 405 wird die Variable I um 1 erhöht. In Schritt 406 wird durch einen Bitwert-Beurteilungsabschnitt 505 beurteilt, ob der Wert des I-ten Bits des Skalarwerts 0 oder 1 ist. Falls der Wert des I-ten Bits 0 ist, geht die Verarbeitung zu Schritt 407. Falls der Wert des I-ten Bits 1 ist, geht die Verarbeitung zu Schritt 410.
  • In Schritt 407 wird durch den Verdopplungsoperationsabschnitt 504 eine Verdopplung 2(mP) des Punkts mP auf der Grundlage eines im Punktspeicherabschnitt 502 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt 2mP berechnet. Dann geht die Verarbeitung zu Schritt 408. In Schritt 408 wird durch einen Additionsoperationsabschnitt 503 eine Addition mP + (m + 1)P zwischen dem Punkt mP und dem Punkt (m + 1)P auf der Grundlage des im Punktspeicherabschnitt 502 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt (2m + 1)P berechnet. Dann geht die Verarbeitung zu Schritt 409. In Schritt 409 werden der in Schritt 407 erhaltene Punkt 2mP und der in Schritt 408 erhaltene Punkt (2m + 1)P als ein Punktpaar (2mP, (2m + 1)P) an Stelle des Punktpaars (mP, (m + 1)P) im Punktspeicherabschnitt 502 gespeichert. Dann kehrt die Verarbeitung zu Schritt 404 zurück.
  • In Schritt 410 wird durch den Verdopplungsoperationsabschnitt 504 eine Verdopplung 2((m + 1)P) des Punkts (m + 1)P auf der Grundlage eines im Punktspeicherabschnitt 502 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt (2m + 2)P berechnet. Dann geht die Verarbeitung zu Schritt 411. In Schritt 411 wird durch einen Additionsoperationsabschnitt 503 eine Addition mP + (m + 1)P zwischen dem Punkt mP und dem Punkt (m + 1)P auf der Grundlage des im Punktspeicherabschnitt 502 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt (2m + 1)P berechnet. Dann geht die Verarbeitung zu Schritt 412. In Schritt 412 werden der in Schritt 411 erhaltene Punkt (2m + 1)P und der in Schritt 410 erhaltene Punkt (2m + 2)P als ein Punktpaar ((2m + 1)P, (2m + 2)P) an Stelle des Punktpaars (mP, (m + 1)P) im Punktspeicherabschnitt 502 gespeichert. Dann kehrt die Verarbeitung zu Schritt 404 zurück.
  • In Schritt 413 wird der Punkt mP als die Skalarmultiplikation 508 auf der Grundlage des im Punktspeicherabschnitt 502 gespeicherten Punktpaars (mP, (m + 1)P) ausgegeben. Demgemäß wird die Verarbeitung beendet.
  • In der gleichen Weise wie im ersten Beispiel kann bewiesen werden, dass der Punkt mP, der ein in der vorstehend erwähnten Prozedur ausgegebener Wert ist, dem durch Multiplizieren des Punkts P mit dem Skalarwert d erhaltenen skalarmultiplizierten Punkt dP entspricht.
  • Andererseits ist der Grund, aus dem Informationen über einen Skalarwert als geheime Informationen selbst dann nicht herauslecken, wenn der Skalarmultiplikations-Berechnungsprozess bei der vorstehend erwähnten Prozedur herausleckt, einfach der folgende: Falls erwiesen ist, dass zwei Skalarwerte, die sich nur in einem spezifischen Bit voneinander unterscheiden, demselben Berechnungsprozess unterzogen werden, ist erwiesen, dass Informationen über einen Skalarwert als geheime Informationen selbst dann nicht herauslecken, wenn der Skalarmultiplikations-Berechnungsprozess herausleckt, weil die anderen Abschnitte aus dem in der ersten Ausführungsform angegebenen Grund gesichert sind. Daher werden zwei Skalarwerte betrachtet, die sich nur in einem spezifischen Bit voneinander unterscheiden. Die Wertedifferenz in dem spezifischen Bit führt zu einem Unterschied in der Beziehung, ob die Verarbeitung nach der Beurteilung der Bitwerte in Schritt 406 zu Schritt 407 oder zu Schritt 410 geht, nachdem Operationen in dem Berechnungsprozess mit einer spezifischen Häufigkeit wiederholt worden sind. Unabhängig davon, ob die Verarbeitung zu Schritt 407 oder zu Schritt 410 geht, werden danach jedoch die gleichen Schritte ausgeführt. Das heißt, dass nach Schritt 407 und Schritt 410 zuerst eine Verdopplung ausgeführt wird, als nächstes eine Addition ausgeführt wird und das Ergebnis dann als ein Punktpaar gespeichert wird. Dann kehrt die Verarbeitung zu Schritt 404 zurück. Dementsprechend gibt es keinen Unterschied in dem Berechnungsprozess. Daher ist es nicht möglich, Informationen über einen Skalarwert aus dem Skalarmultiplikations-Berechnungsprozess zu entnehmen.
  • Zusätzlich kann, wenn eine elliptische Kurve von Montgomery-Form für die elliptische Kurve verwendet wird, die Skalarmultiplikationsberechnung in der gleichen Weise wie in dem ersten Beispiel mit einer höheren Geschwindigkeit als bei der elliptischen Kurve von Weierstrass-Form ausgeführt werden.
  • Weiterhin kann in Bezug auf eine auf einem endlichen Körper der Charakteristik 2 definierte elliptische Kurve in der gleichen Weise wie im ersten Beispiel eine Skalarmultiplikationsberechnung mit einer höheren Geschwindigkeit als bei einer allgemeinen Skalarmultiplikationsberechnung für eine auf einem endlichen Körper der Charakteristik 2 definierte elliptische Kurve ausgeführt werden, falls ein schnelles Additions- und Verdopplungsberechnungsverfahren für die Additions- und Verdopplungsberechnung in der vorstehend erwähnten Prozedur verwendet wird.
  • 7 zeigt ein drittes Beispiel eines Skalarmultiplikations-Berechnungsverfahrens, bei dem geheime Informationen selbst dann nicht herauslecken, wenn der Kryptographieverarbeitungsprozess bei der Kryptographieverarbeitung herausleckt, wobei geheime Informationen in dem Kryptographieverarbeitungssystem 1101 in 11 verwendet werden. 6 ist ein Flussdiagramm, in dem das Skalarmultiplikations-Berechnungsverfahren gemäß dem dritten Beispiel dargestellt ist. Das dritte Beispiel wird mit Bezug auf die 6 und 7 beschrieben.
  • In einen Skalarmultiplikationsrechner 701 werden ein Punkt und ein Skalarwert 707 eingegeben und eine Skalarmultiplikation 708 in der folgenden Prozedur ausgegeben. In Schritt 601 wird 1 als Anfangswert in eine Variable I eingesetzt, um in einem Wiederholungsbeurteilungsabschnitt 706 zu beurteilen, ob eine Wiederholung erfolgen sollte oder nicht. In Schritt 602 wird ein Verdopplungspunkt 2P des Punkts P durch einen Verdopplungsoperationsabschnitt 704 berechnet. In Schritt 603 werden der dem Skalarmultiplikationsrechner 701 zugeführte Punkt P und der in Schritt 602 erhaltene Punkt 2P in einem Punktspeicherabschnitt 702 als ein Punktpaar (P, 2P) gespeichert. In Schritt 604 wird durch den Wiederholungsbeurteilungsabschnitt 706 beurteilt, ob die Variable I und die Bitlänge des Skalarwerts miteinander übereinstimmen oder nicht. Falls die Variable I und der Skalarwert miteinander übereinstimmen, geht die Verarbeitung zu Schritt 613. Falls sie nicht übereinstimmen, geht die Verarbeitung zu Schritt 605. In Schritt 605 wird die Variable I um 1 erhöht. In Schritt 606 wird durch einen Bitwert-Beurteilungsabschnitt 705 beurteilt, ob der Wert des I-ten Bits des Skalarwerts 0 oder 1 ist. Falls der Wert des I-ten Bits 0 ist, geht die Verarbeitung zu Schritt 607. Falls der Wert des I-ten Bits 1 ist, geht die Verarbeitung zu Schritt 610.
  • In Schritt 607 werden in einem Additions- und Verdopplungsoperationsabschnitt 703 eine Addition mP + (m + 1)P zwischen einem Punkt mP und einem Punkt (m + 1)P und eine Verdopplung 2(mP) des Punkts mP gleichzeitig auf der Grundlage eines im Punktspeicherabschnitt 702 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß werden ein Punkt (2m + 1)P und ein Punkt 2mP berechnet. Dann geht die Verarbeitung zu Schritt 609. In Schritt 609 werden der Punkt 2mP und der Punkt (2m + 1)P, die in Schritt 607 erhalten wurden, an Stelle des Punktpaars (mP, (m + 1)P) als ein Punktpaar (2mP, (2m + 1)P) im Punktspeicherabschnitt 702 gespeichert. Dann kehrt die Verarbeitung zu Schritt 604 zurück.
  • In Schritt 610 werden in einem Additions- und Verdopplungsoperationsabschnitt 703 eine Addition mP + (m + 1)P zwischen einem Punkt mP und einem Punkt (m + 1)P und eine Verdopplung 2((m + 1)P) des Punkts (m + 1)P gleichzeitig auf der Grundlage eines im Punktspeicherabschnitt 702 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß werden ein Punkt (2m + 1)P und ein Punkt (2m + 2)P berechnet. Dann geht die Verarbeitung zu Schritt 612. In Schritt 612 werden der Punkt (2m + 1)P und der Punkt (2m + 2)P, die in Schritt 610 erhalten wurden, an Stelle des Punktpaars (mP, (m + 1)P) als ein Punktpaar ((2m + 1)P, (2m + 2)P) im Punktspeicherabschnitt 702 gespeichert. Dann kehrt die Verarbeitung zu Schritt 604 zurück.
  • In Schritt 613 wird der Punkt mP als die Skalarmultiplikation 708 auf der Grundlage des im Punktspeicherabschnitt 702 gespeicherten Punktpaars (mP, (m + 1)P) ausgegeben. Demgemäß wird die Verarbeitung beendet.
  • In der gleichen Weise wie in der ersten Ausführungsform kann bewiesen werden, dass der Punkt mP, der ein in der vorstehend erwähnten Prozedur ausgegebener Wert ist, dem durch Multiplizieren des Punkts P mit dem Skalarwert d erhaltenen skalarmultiplizierten Punkt dP entspricht.
  • Andererseits ist der Grund, aus dem Informationen über einen Skalarwert als geheime Informationen selbst dann nicht herauslecken, wenn der Skalarmultiplikations-Berechnungs prozess bei der vorstehend erwähnten Prozedur herausleckt, einfach der folgende: Falls erwiesen ist, dass zwei Skalarwerte, die sich nur in einem spezifischen Bit voneinander unterscheiden, demselben Berechnungsprozess unterzogen werden, ist erwiesen, dass Informationen über einen Skalarwert als geheime Informationen selbst dann nicht herauslecken, wenn der Skalarmultiplikations-Berechnungsprozess herausleckt, weil die anderen Abschnitte aus dem in dem ersten Beispiel angegebenen Grund gesichert sind. Daher werden zwei Skalarwerte betrachtet, die sich nur in einem spezifischen Bit voneinander unterscheiden. Die Wertedifferenz in dem spezifischen Bit führt zu einem Unterschied in der Beziehung, ob die Verarbeitung nach der Beurteilung der Bitwerte in Schritt 606 zu Schritt 607 oder zu Schritt 610 geht, nachdem Operationen in dem Berechnungsprozess mit einer spezifischen Häufigkeit wiederholt worden sind. Unabhängig davon, ob die Verarbeitung zu Schritt 607 oder zu Schritt 610 geht, werden danach jedoch die gleichen Schritte ausgeführt. Das heißt, dass nach Schritt 607 und Schritt 610 eine Addition und eine Verdopplung gleichzeitig ausgeführt werden und das Ergebnis dann als ein Punktpaar gespeichert wird. Dann kehrt die Verarbeitung zu Schritt 604 zurück. Dementsprechend gibt es keinen Unterschied in dem Berechnungsprozess. Daher ist es nicht möglich, Informationen über einen Skalarwert aus dem Skalarmultiplikations-Berechnungsprozess zu entnehmen.
  • Zusätzlich kann, wenn eine elliptische Kurve von Montgomery-Form für die elliptische Kurve verwendet wird, die Skalarmultiplikationsberechnung in der gleichen Weise wie in dem ersten Beispiel mit einer höheren Geschwindigkeit als bei der elliptischen Kurve von Weierstrass-Form ausgeführt werden.
  • Weiterhin kann in Bezug auf eine auf einem endlichen Körper der Charakteristik 2 definierte elliptische Kurve in der gleichen Weise wie im ersten Beispiel eine Skalarmultiplikationsberechnung mit einer höheren Geschwin digkeit als bei einer allgemeinen Skalarmultiplikationsberechnung für eine auf einem endlichen Körper der Charakteristik 2 definierte elliptische Kurve ausgeführt werden, falls ein schnelles Additions- und Verdopplungsberechnungsverfahren für die Additions- und Verdopplungsberechnung in der vorstehend erwähnten Prozedur verwendet wird.
  • 9 zeigt ein viertes Beispiel eines Skalarmultiplikations-Berechnungsverfahrens, bei dem geheime Informationen selbst dann nicht herauslecken, wenn der Kryptographieverarbeitungsprozess bei der Kryptographieverarbeitung herausleckt, wobei die geheimen Informationen in dem Kryptographieverarbeitungssystem 1101 in 11 verwendet werden. 8 ist ein Flussdiagramm, in dem das Skalarmultiplikations-Berechnungsverfahren gemäß dem vierten Beispiel dargestellt ist. Das vierte Beispiel wird mit Bezug auf die 8 und 9 beschrieben.
  • In einen Skalarmultiplikationsrechner 901 werden ein Punkt und ein Skalarwert 907 eingegeben und eine Skalarmultiplikation 908 in der folgenden Prozedur ausgegeben. In Schritt 801 wird 1 als Anfangswert in eine Variable I eingesetzt, um in einem Wiederholungsbeurteilungsabschnitt 906 zu beurteilen, ob eine Wiederholung erfolgen sollte oder nicht. In Schritt 802 wird ein Verdopplungspunkt 2P des Punkts P durch einen Verdopplungsoperationsabschnitt 904 berechnet. In Schritt 803 werden der dem Skalarmultiplikationsrechner 901 zugeführte Punkt P und der in Schritt 802 erhaltene Punkt 2P in einem Punktspeicherabschnitt 902 als ein Punktpaar (P, 2P) gespeichert. In Schritt 804 wird durch den Wiederholungsbeurteilungsabschnitt 906 beurteilt, ob die Variable I und die Bitlänge des Skalarwerts miteinander übereinstimmen oder nicht. Falls die Variable I und der Skalarwert miteinander übereinstimmen, geht die Verarbeitung zu Schritt 813. Falls sie nicht übereinstimmen, geht die Verarbeitung zu Schritt 805. In Schritt 805 wird die Variable I um 1 erhöht. In Schritt 806 wird durch einen Additionsoperationsabschnitt 903 eine Addition mP + (m + 1)P zwischen einem Punkt mP und einem Punkt (m + 1)P auf der Grundlage eines im Punktspeicherabschnitt 902 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt (2m + 1)P berechnet. In Schritt 807 wird durch einen Bitwert-Beurteilungsabschnitt 905 beurteilt, ob der Wert des I-ten Bits des Skalarwerts 0 oder 1 ist. Falls der Wert des I-ten Bits 0 ist, geht die Verarbeitung zu Schritt 808. Falls der Wert des I-ten Bits 1 ist, geht die Verarbeitung zu Schritt 811.
  • In Schritt 808 wird durch den Verdopplungsoperationsabschnitt 904 eine Verdopplung 2(mP) des Punkts mP auf der Grundlage des im Punktspeicherabschnitt 902 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt 2mP berechnet. Dann geht die Verarbeitung zu Schritt 809. In Schritt 809 werden der in Schritt 808 erhaltene Punkt 2mP und der in Schritt 806 erhaltene Punkt (2m + 1)P an Stelle des Punktpaars (mP, (m + 1)P) als ein Punktpaar (2mP, (2m + 1)P) in dem Punktspeicherabschnitt 902 gespeichert. Dann kehrt die Verarbeitung zu Schritt 804 zurück. In Schritt 811 wird durch den Verdopplungsoperationsabschnitt 904 eine Verdopplung 2((m + 1)P) des Punkts (m + 1)P auf der Grundlage des im Punktspeicherabschnitt 902 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt (2m + 2)P berechnet. Dann geht die Verarbeitung zu Schritt 812. In Schritt 812 werden der in Schritt 806 erhaltene Punkt (2m + 1)P und der in Schritt 811 erhaltene Punkt (2m + 2)P an Stelle des Punktpaars (mP, (m + 1)P) als ein Punktpaar ((2m + 1)P, (2m + 2)P) in dem Punktspeicherabschnitt 902 gespeichert. Die Verarbeitung kehrt dann zu Schritt 804 zurück.
  • In Schritt 813 wird der Punkt mP als die Skalarmultiplikation 908 auf der Grundlage des im Punktspeicherabschnitt 902 gespeicherten Punktpaars (mP, (m + 1)P) ausgegeben. Demgemäß wird die Verarbeitung beendet.
  • In der gleichen Weise wie gemäß der ersten Ausführungsform kann bewiesen werden, dass der Punkt mP, der ein in der vorstehend erwähnten Prozedur ausgegebener Wert ist, dem durch Multiplizieren des Punkts P mit dem Skalarwert d erhaltenen skalarmultiplizierten Punkt dP entspricht.
  • Andererseits ist der Grund, aus dem Informationen über einen Skalarwert als geheime Informationen selbst dann nicht herauslecken, wenn der Skalarmultiplikations-Berechnungsprozess bei der vorstehend erwähnten Prozedur herausleckt, einfach der folgende: Falls erwiesen ist, dass zwei Skalarwerte, die sich nur in einem spezifischen Bit voneinander unterscheiden, demselben Berechnungsprozess unterzogen werden, ist erwiesen, dass Informationen über einen Skalarwert als geheime Informationen selbst dann nicht herauslecken, wenn der Skalarmultiplikations-Berechnungsprozess herausleckt, weil die anderen Abschnitte aus dem in dem ersten Beispiel angegebenen Grund gesichert sind. Daher werden zwei Skalarwerte betrachtet, die sich nur in einem spezifischen Bit voneinander unterscheiden. Die Wertedifferenz in dem spezifischen Bit führt zu einem Unterschied in der Beziehung, ob die Verarbeitung nach der Beurteilung der Bitwerte in Schritt 807 zu Schritt 808 oder zu Schritt 811 geht, nachdem Operationen in dem Berechnungsprozess mit einer spezifischen Häufigkeit wiederholt worden sind. Unabhängig davon, ob die Verarbeitung zu Schritt 808 oder zu Schritt 811 geht, werden danach jedoch die gleichen Schritte ausgeführt. Das heißt, dass nach Schritt 808 und Schritt 811 zuerst eine Verdopplung ausgeführt wird, als nächstes eine Addition ausgeführt wird und das Ergebnis dann als ein Punktpaar gespeichert wird. Dann kehrt die Verarbeitung zu Schritt 804 zurück. Dementsprechend gibt es keinen Unterschied in dem Berechnungsprozess. Daher ist es nicht möglich, Informationen über einen Skalarwert aus dem Skalarmultiplikations-Berechnungsprozess zu entnehmen.
  • Zusätzlich kann, wenn eine elliptische Kurve von Montgomery-Form für die elliptische Kurve verwendet wird, die Skalarmultiplikationsberechnung in der gleichen Weise wie in dem ersten Beispiel mit einer höheren Geschwindigkeit als bei der elliptischen Kurve von Weierstrass-Form ausgeführt werden.
  • Weiterhin kann in Bezug auf eine auf einem endlichen Körper der Charakteristik 2 definierte elliptische Kurve in der gleichen Weise wie im ersten Beispiel eine Skalarmultiplikationsberechnung mit einer höheren Geschwindigkeit als bei einer allgemeinen Skalarmultiplikationsberechnung für eine auf einem endlichen Körper der Charakteristik 2 definierte elliptische Kurve ausgeführt werden, falls ein schnelles Additions- und Verdopplungsberechnungsverfahren für die Additions- und Verdopplungsberechnung in der vorstehend erwähnten Prozedur verwendet wird.
  • 15 zeigt eine erste Ausführungsform eines Skalarmultiplikations-Berechnungsverfahrens gemäß der vorliegenden Erfindung, wobei geheime Informationen selbst dann nicht herauslecken, wenn der Kryptographieverarbeitungsprozess bei der Kryptographieverarbeitung herausleckt, bei der die geheimen Informationen in dem Kryptographieverarbeitungssystem 1101 in 11 verwendet werden. Die 12 bis 14 sind ein Flussdiagramm, in dem das Skalarmultiplikations-Berechnungsverfahren gemäß der ersten Ausführungsform dargestellt ist. Die erste Ausführungsform wird mit Bezug auf die 12 bis 15 beschrieben.
  • In einen Skalarmultiplikationsrechner 1501 werden ein Punkt und ein Skalarwert 1507 eingegeben, und es wird eine Skalarmultiplikation 1508 in der folgenden Prozedur ausgegeben. In Schritt 1201 wird 1 als Anfangswert in eine Variable I eingesetzt, um in einem Wiederholungsbeurteilungsabschnitt 1506 zu beurteilen, ob eine Wiederholung erfolgen sollte oder nicht. In Schritt 1202 wird ein Verdopplungspunkt 2P des Punkts P durch einen Verdopplungsoperationsabschnitt 1504 berechnet. In Schritt 1203 werden der dem Skalarmultiplikationsrechner 1501 zugeführte Punkt P und der in Schritt 1202 erhaltene Punkt 2P in einem Punktspeicherabschnitt 1502 als ein Punktpaar (P, 2P) gespeichert. In Schritt 1204 wird durch den Wiederholungsbeurteilungsabschnitt 1506 beurteilt, ob die Variable I und die Bitlänge des Skalarwerts miteinander übereinstimmen oder nicht. Falls die Variable I und der Skalarwert miteinander übereinstimmen, geht die Verarbeitung zu Schritt 1213. Falls sie nicht übereinstimmen, geht die Verarbeitung zu Schritt 1205. In Schritt 1205 wird die Variable I um 1 erhöht. In Schritt 1206 wird die Berechnungsreihenfolge der Addition und Verdopplung durch einen Operationsrandomisierungsabschnitt 1509 randomisiert. Zum Ausführen der Berechnung in der Reihenfolge der Addition und dann der Verdopplung geht die Verarbeitung zu Schritt 1301. Zum Ausführen der Berechnung in der Reihenfolge der Verdopplung und dann der Addition geht die Verarbeitung zu Schritt 1401.
  • In Schritt 1301 wird durch einen Bitwert-Beurteilungsabschnitt 1505 beurteilt, ob der Wert des I-ten Bits des Skalarwerts 0 oder 1 ist. Falls der Wert des I-ten Bits 0 ist, geht die Verarbeitung zu Schritt 1302. Falls der Wert des I-ten Bits 1 ist, geht die Verarbeitung zu Schritt 1305.
  • In Schritt 1302 wird durch einen Additionsoperationsabschnitt 1503 eine Addition mP + (m + 1)P zwischen einem Punkt mP und einem Punkt (m + 1)P auf der Grundlage eines im Punktspeicherabschnitt 1502 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt (2m + 1)P berechnet. Dann geht die Verarbeitung zu Schritt 1303. In Schritt 1303 wird durch den Verdopplungsoperationsabschnitt 1504 die Verdopplung 2(mP) des Punkts mP auf der Grundlage des im Punktspeicherabschnitt 1502 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt 2mP berechnet. Dann geht die Verarbeitung zu Schritt 1304. In Schritt 1304 werden der in Schritt 1303 erhaltene Punkt 2mP und der in Schritt 1302 erhaltene Punkt (2m + 1)P als ein Punktpaar (2mP, (2m + 1)P) an Stelle des Punktpaars (mP, (m + 1)P) im Punktspeicherabschnitt 1502 gespeichert. Dann kehrt die Verarbeitung zu Schritt 1204 zurück.
  • In Schritt 1305 wird durch einen Additionsoperationsabschnitt 1503 die Addition mP + (m + 1)P zwischen einem Punkt mP und einem Punkt (m + 1)P auf der Grundlage eines im Punktspeicherabschnitt 1502 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt (2m + 1)P berechnet. Dann geht die Verarbeitung zu Schritt 1306. In Schritt 1306 wird durch den Verdopplungsoperationsabschnitt 1504 eine Verdopplung 2((m + 1)P) des Punkts (m + 1)P auf der Grundlage des im Punktspeicherabschnitt 1502 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt (2m + 2)P berechnet. Dann geht die Verarbeitung zu Schritt 1307. In Schritt 1307 werden der in Schritt 1305 erhaltene Punkt (2m + 1)P und der in Schritt 1306 erhaltene Punkt (2m + 2)P als ein Punktpaar ((2m + 1)P, (2m + 2)P) an Stelle des Punktpaars (mP, (m + 1)P) im Punktspeicherabschnitt 1502 gespeichert. Dann kehrt die Verarbeitung zu Schritt 1204 zurück.
  • In Schritt 1401 wird durch einen Bitwert-Beurteilungsabschnitt 1505 beurteilt, ob der Wert des I-ten Bits des Skalarwerts 0 oder 1 ist. Falls der Wert des I-ten Bits 0 ist, geht die Verarbeitung zu Schritt 1402. Falls der Wert des I-ten Bits 1 ist, geht die Verarbeitung zu Schritt 1405.
  • In Schritt 1402 wird durch den Verdopplungsoperationsabschnitt 1504 eine Verdopplung 2(mP) des Punkts mP auf der Grundlage eines im Punktspeicherabschnitt 1502 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt 2(mP) berechnet. Dann geht die Verarbeitung zu Schritt 1403. In Schritt 1403 wird durch den Additionsoperationsabschnitt 1503 eine Addition mP + (m + 1)P zwischen dem Punkt mP und dem Punkt (m + 1)P auf der Grundlage des im Punktspeicherabschnitt 1502 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt (2m + 1)P berechnet. Dann geht die Verarbeitung zu Schritt 1404. In Schritt 1404 werden der in Schritt 1402 erhaltene Punkt 2mP und der in Schritt 1403 erhaltene Punkt (2m + 1)P als ein Punktpaar (2mP, (2m + 1)P) an Stelle des Punktpaars (mP, (m + 1)P) im Punktspeicherabschnitt 1502 gespeichert. Dann kehrt die Verarbeitung zu Schritt 1204 zurück.
  • In Schritt 1405 wird durch den Verdopplungsoperationsabschnitt 1504 eine Verdopplung 2((m + 1)P) des Punkts (m + 1)P auf der Grundlage eines im Punktspeicherabschnitt 1502 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt (2m + 2)P berechnet. Dann geht die Verarbeitung zu Schritt 1406. In Schritt 1406 wird durch den Additionsoperationsabschnitt 1503 eine Addition mP + (m + 1)P zwischen dem Punkt mP und dem Punkt (m + 1)P auf der Grundlage des im Punktspeicherabschnitt 1502 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt (2m + 1)P berechnet. Dann geht die Verarbeitung zu Schritt 1407. In Schritt 1407 werden der in Schritt 1406 erhaltene Punkt (2m + 1)P und der in Schritt 1405 erhaltene Punkt (2m + 2)P als ein Punktpaar ((2m + 1)P, (2m + 2)P) an Stelle des Punktpaars (mP, (m + 1)P) im Punktspeicherabschnitt 1502 gespeichert. Dann kehrt die Verarbeitung zu Schritt 1204 zurück.
  • In Schritt 1213 wird der Punkt mP als die Skalarmultiplikation 1508 auf der Grundlage des im Punktspeicherabschnitt 1502 gespeicherten Punktpaars (mP, (m + 1)P) ausgegeben. Demgemäß wird die Verarbeitung beendet.
  • In der gleichen Weise wie im ersten Beispiel kann bewiesen werden, dass der Punkt mP, der ein in der vorstehend erwähnten Prozedur ausgegebener Wert ist, dem durch Multiplizieren des Punkts P mit dem Skalarwert d erhaltenen skalarmultiplizierten Punkt dP entspricht.
  • Falls eine elliptische Kurve von Montgomery-Form für die elliptische Kurve verwendet wird, können zusätzlich die Addition und die Verdopplung mit hoher Geschwindigkeit ausgeführt werden. Demgemäß kann die Skalarmultiplikationsberechnung mit höherer Geschwindigkeit als bei einer elliptischen Kurve von Weierstrass-Form, die im Allgemeinen verwendet wird, ausgeführt werden.
  • Weiterhin kann in Bezug auf eine auf einem endlichen Körper der Charakteristik 2 definierte elliptische Kurve eine Skalarmultiplikationsberechnung mit einer höheren Geschwindigkeit als bei einer allgemeinen Skalarmultiplikationsberechnung für eine auf einem endlichen Körper der Charakteristik 2 definierte elliptische Kurve ausgeführt werden, falls ein schnelles Additions- und Verdopplungsberechnungsverfahren für die Additions- und Verdopplungsberechnung in der vorstehend erwähnten Prozedur verwendet wird.
  • 25 zeigt eine zweite Ausführungsform eines Skalarmultiplikations-Berechnungsverfahrens, wobei geheime Informationen selbst dann nicht herauslecken, wenn der Kryptographieverarbeitungsprozess bei der Kryptographieverarbeitung herausleckt, bei der die geheimen Informationen in dem Kryptographieverarbeitungssystem 1101 in 11 verwendet werden. Die 22 bis 24 sind ein Flussdiagramm, in dem das Skalarmultiplikations-Berechnungsverfahren gemäß der zweiten Ausführungsform dargestellt ist. Die zweite Ausführungsform wird mit Bezug auf die 22 bis 25 beschrieben.
  • In einen Skalarmultiplikationsrechner 2501 werden ein Punkt und ein Skalarwert 2507 eingegeben, und es wird eine Skalarmultiplikation 2508 in der folgenden Prozedur ausgegeben. In Schritt 2201 wird 1 als Anfangswert in eine Variable I eingesetzt, um in einem Wiederholungsbeurteilungsabschnitt 2506 zu beurteilen, ob eine Wiederholung erfolgen sollte oder nicht. In Schritt 2202 wird ein Verdopplungspunkt 2P des Punkts P durch einen Verdopplungsoperationsabschnitt 2504 berechnet. In Schritt 2203 werden der dem Skalarmultiplikationsrechner 2501 zugeführte Punkt P und der in Schritt 2202 erhaltene Punkt 2P in einem Punktspeicherabschnitt 2502 als ein Punktpaar (P, 2P) gespeichert.
  • In Schritt 2204 wird durch den Wiederholungsbeurteilungsabschnitt 2506 beurteilt, ob die Variable I und die Bitlänge des Skalarwerts miteinander übereinstimmen oder nicht. Falls die Variable I und der Skalarwert miteinander übereinstimmen, geht die Verarbeitung zu Schritt 2213. Falls sie nicht übereinstimmen, geht die Verarbeitung zu Schritt 2205. In Schritt 2205 wird die Variable I um 1 erhöht. In Schritt 2206 wird durch einen Bitwert-Beurteilungsabschnitt 2505 beurteilt, ob der Wert des I-ten Bits des Skalarwerts 0 oder 1 ist. Falls der Wert des I-ten Bits 0 ist, geht die Verarbeitung zu Schritt 2401. Falls der Wert des I-ten Bits 1 ist, geht die Verarbeitung zu Schritt 2301.
  • In Schritt 2301 wird die Berechnungsreihenfolge der Addition und Verdopplung durch einen Operationsrandomisierungsabschnitt 2509 randomisiert. Zum Ausführen der Berechnung in der Reihenfolge der Addition und dann der Verdopplung geht die Verarbeitung zu Schritt 2305. Zum Ausführen der Berechnung in der Reihenfolge der Verdopplung und dann der Addition geht die Verarbeitung zu Schritt 2302.
  • In Schritt 2302 wird durch den Verdopplungsoperationsabschnitt 2504 eine Verdopplung 2((m + 1)P) des Punkts (m + 1)P auf der Grundlage eines im Punktspeicherabschnitt 2502 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt (2m + 2)P berechnet. Dann geht die Verarbeitung zu Schritt 2303. In Schritt 2303 wird durch einen Additionsoperationsabschnitt 2503 eine Addition mP + (m + 1)P zwischen dem Punkt mP und dem Punkt (m + 1)P auf der Grundlage des im Punktspeicherabschnitt 2502 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt (2m + 1)P berechnet. Dann geht die Verarbeitung zu Schritt 2304.
  • In Schritt 2305 wird durch den Additionsoperationsabschnitt 2503 die Addition mP + (m + 1)P zwischen dem Punkt mP und dem Punkt (m + 1)P auf der Grundlage des im Punktspeicherabschnitt 2502 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt (2m + 1)P berechnet. Dann geht die Verarbeitung zu Schritt 2306. In Schritt 2306 wird durch den Verdopplungsoperationsabschnitt 2504 eine Verdopplung 2((m + 1)P) des Punkts (m + 1)P auf der Grundlage des im Punktspeicherabschnitt 2502 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt (2m + 2)P berechnet. Dann geht die Verarbeitung zu Schritt 2304.
  • In Schritt 2304 werden der in Schritt 2303 oder Schritt 2305 erhaltene Punkt (2m + 1)P und der in Schritt 2302 oder Schritt 2306 erhaltene Punkt (2m + 2)P als ein Punktpaar ((2m + 1)P, (2m + 2)P) an Stelle des Punktpaars (mP, (m + 1)P) im Punktspeicherabschnitt 2502 gespeichert. Dann kehrt die Verarbeitung zu Schritt 2204 zurück.
  • In Schritt 2401 wird die Berechnungsreihenfolge der Addition und Verdopplung durch einen Operationsrandomisierungsabschnitt 2509 randomisiert. Zum Ausführen der Berechnung in der Reihenfolge der Addition und dann der Verdopplung geht die Verarbeitung zu Schritt 2405. Zum Ausführen der Berechnung in der Reihenfolge der Verdopplung und dann der Addition geht die Verarbeitung zu Schritt 2402.
  • In Schritt 2402 wird durch den Verdopplungsoperationsabschnitt 2504 eine Verdopplung 2(mP) des Punkts mP auf der Grundlage eines im Punktspeicherabschnitt 2502 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt 2mP berechnet. Dann geht die Verarbeitung zu Schritt 2403. In Schritt 2403 wird durch den Additionsoperationsabschnitt 2503 eine Addition mP + (m + 1)P zwischen dem Punkt mP und dem Punkt (m + 1)P auf der Grundlage des im Punktspeicherabschnitt 2502 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt (2m + 1)P berechnet. Dann geht die Verarbeitung zu Schritt 2404.
  • In Schritt 2405 wird durch den Additionsoperationsabschnitt 2503 die Addition mP + (m + 1)P zwischen dem Punkt mP und dem Punkt (m + 1)P auf der Grundlage des im Punktspeicherabschnitt 2502 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt (2m + 1)P berechnet. Dann geht die Verarbeitung zu Schritt 2406. In Schritt 2406 wird durch den Verdopplungsoperationsabschnitt 2504 eine Verdopplung 2(mP) des Punkts mP auf der Grundlage des im Punktspeicherabschnitt 2502 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt 2mP berechnet. Dann geht die Verarbeitung zu Schritt 2404.
  • In Schritt 2404 werden der in Schritt 2402 oder Schritt 2406 erhaltene Punkt 2mP und der in Schritt 2403 oder Schritt 2405 erhaltene Punkt (2m + 1)P als ein Punktpaar (2mP, (2m + 1)P) an Stelle des Punktpaars (mP, (m + 1)P) im Punktspeicherabschnitt 2502 gespeichert. Dann kehrt die Verarbeitung zu Schritt 2204 zurück.
  • In Schritt 2213 wird der Punkt mP als die Skalarmultiplikation 2508 auf der Grundlage des im Punktspeicherabschnitt 2502 gespeicherten Punktpaars (mP, (m + 1)P) ausgegeben. Demgemäß wird die Verarbeitung beendet.
  • In der gleichen Weise wie im ersten Beispiel kann bewiesen werden, dass der Punkt mP, der ein in der vorstehend erwähnten Prozedur ausgegebener Wert ist, dem durch Multiplizieren des Punkts P mit dem Skalarwert d erhaltenen skalarmultiplizierten Punkt dP entspricht.
  • Falls eine elliptische Kurve von Montgomery-Form für die elliptische Kurve verwendet wird, können zusätzlich die Addition und die Verdopplung mit hoher Geschwindigkeit ausgeführt werden. Demgemäß kann die Skalarmultiplikationsberechnung mit höherer Geschwindigkeit als bei einer elliptischen Kurve von Weierstrass-Form, die im Allgemeinen verwendet wird, ausgeführt werden.
  • Weiterhin kann in Bezug auf eine auf einem endlichen Körper der Charakteristik 2 definierte elliptische Kurve eine Skalarmultiplikationsberechnung mit einer höheren Geschwindigkeit als bei einer allgemeinen Skalarmultiplikationsberechnung für eine auf einem endlichen Körper der Charakteristik 2 definierte elliptische Kurve ausgeführt werden, falls ein schnelles Additions- und Verdopplungsberechnungsverfahren für die Additions- und Verdopplungs berechnung in der vorstehend erwähnten Prozedur verwendet wird.
  • 27 zeigt ein fünftes Beispiel eines Skalarmultiplikations-Berechnungsverfahrens, bei dem geheime Informationen selbst dann nicht herauslecken, wenn der Kryptographieverarbeitungsprozess bei der Kryptographieverarbeitung herausleckt, wobei die geheimen Informationen in dem Kryptographieverarbeitungssystem 1101 in 11 verwendet werden. 26 ist ein Flussdiagramm, in dem das Skalarmultiplikations-Berechnungsverfahren gemäß dem fünften Beispiel dargestellt ist. Das fünfte Beispiel wird mit Bezug auf die 26 und 27 beschrieben.
  • In einen Skalarmultiplikationsrechner 2701 werden ein Punkt und ein Skalarwert 2707 eingegeben und eine Skalarmultiplikation 2708 in der folgenden Prozedur ausgegeben. In Schritt 2601 wird 1 als Anfangswert in eine Variable I eingesetzt, um in einem Wiederholungsbeurteilungsabschnitt 2706 zu beurteilen, ob eine Wiederholung erfolgen sollte oder nicht. In Schritt 2614 wird eine Zufallszahl k durch einen Abschnitt 2709 zum Umwandeln in randomisierte projektive Koordinaten erzeugt. In Schritt 2615 wird durch die Verwendung der in Schritt 2614 erzeugten Zufallszahl k ein Punkt P durch den Abschnitt 2709 zum Umwandeln in randomisierte projektive Koordinaten als P = (kx, ky, k) in projektiven Koordinaten ausgedrückt. Hier wird angenommen, dass der Punkt P als P = (x, y) in affinen Koordinaten ausgedrückt wird. In Schritt 2602 wird ein Verdopplungspunkt 2P des in Schritt 2615 als P = (kx, ky, k) ausgedrückten Punkts P durch einen Verdopplungsoperationsabschnitt 2704 berechnet. In Schritt 2603 werden der dem Skalarmultiplikationsrechner 2701 zugeführte und in Schritt 2615 als P = (kx, ky, k) ausgedrückte Punkt P und der in Schritt 2602 erhaltene Punkt 2P als ein Punktpaar (P, 2P) in einem Punktspeicherabschnitt 2702 gespeichert.
  • In Schritt 2604 wird durch den Wiederholungsbeurteilungsabschnitt 2706 beurteilt, ob die Variable I und die Bitlänge des Skalarwerts miteinander übereinstimmen oder nicht. Falls die Variable I und der Skalarwert miteinander übereinstimmen, geht die Verarbeitung zu Schritt 2613. Falls sie nicht übereinstimmen, geht die Verarbeitung zu Schritt 2605. In Schritt 2605 wird die Variable I um 1 erhöht. In Schritt 2606 wird durch einen Bitwert-Beurteilungsabschnitt 2705 beurteilt, ob der Wert des I-ten Bits des Skalarwerts 0 oder 1 ist. Falls der Wert des I-ten Bits 0 ist, geht die Verarbeitung zu Schritt 2607. Falls der Wert des I-ten Bits 1 ist, geht die Verarbeitung zu Schritt 2610.
  • In Schritt 2607 wird durch einen Additionsoperationsabschnitt 2703 eine Addition mP + (m + 1)P zwischen einem Punkt mP und einem Punkt (m + 1)P auf der Grundlage eines im Punktspeicherabschnitt 2702 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt (2m + 1)P berechnet. Dann geht die Verarbeitung zu Schritt 2608. In Schritt 2608 wird durch den Verdopplungsoperationsabschnitt 2704 die Verdopplung 2(mP) des Punkts mP auf der Grundlage des im Punktspeicherabschnitt 2702 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt 2mP berechnet. Dann geht die Verarbeitung zu Schritt 2609. In Schritt 2609 werden der in Schritt 2608 erhaltene Punkt 2mP und der in Schritt 2607 erhaltene Punkt (2m + 1)P als ein Punktpaar (2mP, (2m + 1)P) an Stelle des Punktpaars (mP, (m + 1)P) im Punktspeicherabschnitt 2702 gespeichert. Dann kehrt die Verarbeitung zu Schritt 2604 zurück.
  • In Schritt 2610 wird durch den Additionsoperationsabschnitt 2703 die Addition mP + (m + 1)P zwischen einem Punkt mP und einem Punkt (m + 1)P auf der Grundlage eines im Punktspeicherabschnitt 2702 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt (2m + 1)P berechnet. Dann geht die Verarbeitung zu Schritt 2611. In Schritt 2611 wird durch den Verdopplungsoperationsabschnitt 2704 eine Verdopplung 2((m + 1)P) des Punkts (m + 1)P auf der Grundlage des im Punktspeicherabschnitt 2702 gespeicherten Punktpaars (mP, (m + 1)P) ausgeführt. Demgemäß wird ein Punkt (2m + 2)P berechnet. Dann geht die Verarbeitung zu Schritt 2612. In Schritt 2612 werden der in Schritt 2610 erhaltene Punkt (2m + 1)P und der in Schritt 2611 erhaltene Punkt (2m + 2)P als ein Punktpaar ((2m + 1)P, (2m + 2)P) an Stelle des Punktpaars (mP, (m + 1)P) im Punktspeicherabschnitt 2702 gespeichert. Dann kehrt die Verarbeitung zu Schritt 2604 zurück.
  • In Schritt 2613 wird der Punkt mP als die Skalarmultiplikation 2708 auf der Grundlage des im Punktspeicherabschnitt 2702 gespeicherten Punktpaars (mP, (m + 1)P) ausgegeben. Demgemäß wird die Verarbeitung beendet.
  • In der gleichen Weise wie im ersten Beispiel kann bewiesen werden, dass der Punkt mP, der ein in der vorstehend erwähnten Prozedur ausgegebener Wert ist, dem durch Multiplizieren des Punkts P mit dem Skalarwert d erhaltenen skalarmultiplizierten Punkt dP entspricht.
  • Weiter ist der Grund, aus dem Informationen über einen Skalarwert als geheime Informationen selbst dann nicht herauslecken, wenn der Skalarmultiplikations-Berechnungsprozess in der vorstehend erwähnten Prozedur herausleckt, dem in der ersten Ausführungsform beschriebenen Grund ähnlich. Weiterhin ist erwiesen, dass bei der Skalarmultiplikationsberechnung selbst bei einem Angriffsverfahren, bei dem beobachtet wird, ob ein spezifischer Wert bei der Skalarmultiplikationsberechnung auftritt oder nicht und ein Skalarwert von dem Beobachtungsergebnis abgeleitet wird, keine Informationen über einen Skalarwert herauslecken. Dies liegt daran, dass die Multiplikation mit einem Zufallswert so ausgeführt wird, dass das Erscheinen des spezifischen Werts nicht abgeleitet werden kann.
  • Zusätzlich kann, wenn eine elliptische Kurve von Montgomery-Form für die elliptische Kurve verwendet wird, die Skalarmultiplikationsberechnung in der gleichen Weise wie in dem ersten Beispiel mit einer höheren Geschwindigkeit als bei der elliptischen Kurve von Weierstrass-Form ausgeführt werden.
  • Weiterhin kann in Bezug auf eine auf einem endlichen Körper der Charakteristik 2 definierte elliptische Kurve in der gleichen Weise wie im ersten Beispiel eine Skalarmultiplikationsberechnung mit einer höheren Geschwindigkeit als bei einer allgemeinen Skalarmultiplikationsberechnung für eine auf einem endlichen Körper der Charakteristik 2 definierte elliptische Kurve ausgeführt werden, falls ein schnelles Additions- und Verdopplungsberechnungsverfahren für die Additions- und Verdopplungsberechnung in der vorstehend erwähnten Prozedur verwendet wird.
  • 28 zeigt eine Ausführungsform einer Vorrichtung zum Umwandeln in randomisierte projektive Koordinaten zur Verwendung als der Abschnitt 2709 zum Umwandeln in randomisierte projektive Koordinaten in 27. 29 ist ein Flussdiagramm, in dem ein Verfahren zum Umwandeln in randomisierte projektive Koordinaten in der Vorrichtung zum Umwandeln in randomisierte projektive Koordinaten dargestellt ist.
  • In eine Vorrichtung 2801 zum Umwandeln in randomisierte projektive Koordinaten wird ein Punkt 2805 auf einer elliptischen Kurve eingegeben und ein in randomisierten projektiven Koordinaten ausgedrückter Punkt 2806 in der folgenden Prozedur ausgegeben. In Schritt 2901 wird durch einen Koordinatenbeurteilungsabschnitt 2802 beurteilt, ob der gegebene Punkt 2805 auf der elliptischen Kurve in affinen Koordinaten oder in projektiven Koordinaten ausgedrückt ist. Falls der Punkt 2805 in affinen Koordinaten ausgedrückt ist, geht die Verarbeitung zu Schritt 2902. Falls der Punkt 2805 in projektiven Koordinaten ausgedrückt ist, geht die Verarbeitung zu Schritt 2903. In Schritt 2902 wird der in affinen Koordinaten ausgedrückte Punkt folgendermaßen in projektiven Koordinaten ausgedrückt. Unter der Annahme, dass der in affinen Koordinaten ausgedrückte Punkt (x, y) ist, wird er durch (x, y, 1) in projektiven Koordinaten ausgedrückt.
  • In Schritt 2903 wird eine Zufallszahl k durch einen Zufallszahlen-Erzeugungsabschnitt 2803 erzeugt. In Schritt 2904 wird durch einen Abschnitt 2804 zum Umwandeln in projektive Koordinaten der in projektiven Koordinaten ausgedrückte gegebene Punkt folgendermaßen in randomisierten projektiven Koordinaten ausgedrückt. Unter der Annahme, dass der gegebene Punkt (x, y, z) ist, werden die jeweiligen Koordinaten mit der vom Zufallszahlen-Erzeugungsabschnitt 2803 erzeugten Zufallszahl k multipliziert, und es wird ein als P = (kx, ky, kz) in randomisierten projektiven Koordinaten ausgedrückter Punkt 2806 ausgegeben.
  • In projektiven Koordinaten werden alle durch Multiplizieren jeweiliger Koordinaten mit einer von 0 verschiedenen Zahl k erhaltenen Punkte als der gleiche Punkt angesehen. Das heißt, dass (x, y, z) und (kz, ky, kz) denselben Punkt darstellen.
  • Zusätzlich kann zum Sparen von Speicher oder dergleichen (x, y, 1) in Schritt 2902 nicht tatsächlich gespeichert werden, sondern virtuell als durch (x, y, 1) ausgedrückt angesehen werden. Dann können (kx, ky, k) tatsächlich gespeichert werden, wenn sie in Schritt 2904 ausgedrückt wurden.
  • 3 zeigt die Konfiguration, wenn das Kryptographieverarbeitungssystem des in 11 beschriebenen Modus als ein Signaturgenerator verwendet wird. Ein Kryptographieverarbeitungsabschnitt 1102 in 11 entspricht einem Signaturabschnitt 302 in einem Signaturgenerator 301 in 3. 18 ist ein Flussdiagramm, in dem ein Verarbeitungsablauf in dem Signaturgenerator in 3 dargestellt ist. 19 ist eine Sequenzansicht, in der der Verarbeitungsablauf in dem Signaturgenerator in 3 dargestellt ist.
  • In 18 gibt der Signaturgenerator 301 auf der Grundlage einer gegebenen Nachricht 305 folgendermaßen eine Nachricht 306 aus, die mit einer Signatur einhergeht. Wenn die Nachricht 305 dem Signaturgenerator 301 zugeführt wird, empfängt der Signaturabschnitt 302 die Nachricht 305 (Schritt 1801). Der Signaturabschnitt 302 übergibt an einen Skalarmultiplikations-Berechnungsabschnitt 303, entsprechend der Eingabenachricht 305, einen Punkt auf einer elliptischen Kurve (Schritt 1802). Der Skalarmultiplikations-Berechnungsabschnitt 303 empfängt einen Skalarwert, der geheime Informationen darstellt, von einem Abschnitt 304 zum Speichern geheimer Informationen (Schritt 1803). Der Skalarmultiplikations-Berechnungsabschnitt 303 berechnet einen skalarmultiplizierten Punkt auf der Grundlage des empfangenen Punkts und des empfangenen Skalarwerts bei einem Skalarmultiplikations-Berechnungsverfahren, bei dem geheime Informationen selbst dann nicht herauslecken, wenn der Skalarmultiplikations-Berechnungsprozess herausleckt (Schritt 1804). Der Skalarmultiplikations-Berechnungsabschnitt 303 sendet den berechneten skalarmultiplizierten Punkt zum Signaturabschnitt 302 (Schritt 1805). Der Signaturabschnitt 302 führt eine Signaturerzeugungsverarbeitung auf der Grundlage des vom Skalarmultiplikations-Berechnungsabschnitt 303 empfangenen skalarmultiplizierten Punkts aus (Schritt 1806). Der Signaturabschnitt 302 gibt eine Nachricht 306, die mit einer Signatur als Ergebnis der Signaturerzeugungsverarbeitung einhergeht, aus (Schritt 1807).
  • Die vorstehend erwähnte Verarbeitungsprozedur wird mit Bezug auf die Sequenzansicht von 19 beschrieben. Zuerst wird die von einem Signaturabschnitt 1901 (302 in 3) ausgeführte Verarbeitung beschrieben. Der Signaturabschnitt 1901 empfängt eine Eingabenachricht. Der Signaturabschnitt 1901 wählt auf der Grundlage der Eingabenachricht einen Punkt auf einer elliptischen Kurve aus, gibt den Punkt auf der elliptischen Kurve an einen Skalarmultiplikations-Berechnungsabschnitt 1902 aus und empfängt einen skalarmultiplizierten Punkt vom Skalarmultiplikations-Berechnungsabschnitt 1902. Der Signaturabschnitt 1901 führt unter Verwendung des empfangenen skalarmultiplizierten Punkts eine Signaturerzeugungsverarbeitung aus und gibt als Ergebnis der Signaturerzeugungsverarbeitung eine Ausgabenachricht aus.
  • Als nächstes wird die vom Skalarmultiplikations-Berechnungsabschnitt 1902 ausgeführte Verarbeitung beschrieben (303 in 3). Der Skalarmultiplikations-Berechnungsabschnitt 1902 empfängt vom Signaturabschnitt 1901 einen Punkt auf einer elliptischen Kurve. Der Skalarmultiplikations-Berechnungsabschnitt 1902 empfängt einen Skalarwert von einem Abschnitt 1903 zum Speichern geheimer Informationen. Der Skalarmultiplikations-Berechnungsabschnitt 1902 berechnet einen skalarmultiplizierten Punkt auf der Grundlage des empfangenen Punkts auf der elliptischen Kurve und des empfangenen Skalarwerts bei einem Skalarmultiplikations-Berechnungsverfahren, bei dem geheime Informationen selbst dann nicht herauslecken, wenn der Skalarmultiplikations-Berechnungsprozess herausleckt. Dann sendet der Skalarmultiplikations-Berechnungsabschnitt 1902 den skalarmultiplizierten Punkt zum Signaturabschnitt 1901.
  • Als letztes wird die vom Abschnitt 1903 zum Speichern geheimer Informationen ausgeführte Verarbeitung beschrieben (304 in 3). Der Abschnitt 1903 zum Speichern geheimer Informationen sendet einen Skalarwert zum Skalarmultiplikations-Berechnungsabschnitt 1902, so dass der Skalarmultiplikations-Berechnungsabschnitt 1902 einen skalarmultiplizierten Punkt berechnen kann.
  • Die in der ersten und der zweiten Ausführungsform und im ersten bis fünften Beispiel beschriebene Skalarmultiplikationsberechnung wird unverändert auf die vom Skalarmultiplikations-Berechnungsabschnitt 303 ausgeführte Skalarmultiplikationsberechnung angewendet. Daher lecken bei dieser Skalarmultiplikationsberechnung Informationen über einen Skalarwert, der geheime Informationen darstellt, selbst dann nicht heraus, wenn der Skalarmultiplikations-Berechnungsprozess herausleckt. Dementsprechend lecken selbst dann keine geheimen Informationen heraus, wenn der Signaturerzeugungs-Verarbeitungsprozess herausleckt, wenn der Signaturabschnitt 302 die Signaturerzeugungsverarbeitung ausführt. Dies liegt daran, dass nur der Skalar multiplikations-Berechnungsabschnitt 303 den Skalarwert behandelt, der die geheimen Informationen darstellt.
  • 10 zeigt die Konfiguration, in der das Kryptographieverarbeitungssystem des in 11 beschriebenen Modus als eine Entschlüsselungseinrichtung verwendet wird. Ein Kryptographieverarbeitungsabschnitt 1102 in 11 entspricht einem Entschlüsselungsabschnitt 1002 in einer Entschlüsselungseinrichtung 1001 in 10. 20 ist ein Flussdiagramm, in dem ein Verarbeitungsablauf in der Entschlüsselungseinrichtung in 10 dargestellt ist. 21 ist eine Sequenzansicht, in der der Verarbeitungsablauf in der Entschlüsselungseinrichtung in 10 dargestellt ist.
  • In 20 gibt die Entschlüsselungseinrichtung 1001 eine Nachricht 1006 aus, die folgendermaßen anhand einer gegebenen Nachricht 1005 entschlüsselt wurde. Wenn die Nachricht 1005 der Entschlüsselungseinrichtung 1001 zugeführt wird, empfängt der Entschlüsselungsabschnitt 1002 die Nachricht 1005 (Schritt 2001). Der Entschlüsselungsabschnitt 1002 übergibt an einen Skalarmultiplikations-Berechnungsabschnitt 1003 einen der Eingabenachricht 1005 entsprechenden Punkt auf einer elliptischen Kurve (Schritt 2002). Der Skalarmultiplikations-Berechnungsabschnitt 1003 empfängt einen Skalarwert, der geheime Informationen darstellt, von einem Abschnitt 1004 zum Speichern geheimer Informationen (Schritt 2003). Der Skalarmultiplikations-Berechnungsabschnitt 1003 berechnet einen skalarmultiplizierten Punkt auf der Grundlage des empfangenen Punkts und des empfangenen Skalarwerts in einem Skalarmultiplikations-Berechnungsverfahren, bei dem geheime Informationen selbst dann nicht herauslecken, wenn der Skalarmultiplikations-Berechnungsprozess herausleckt (Schritt 2004). Der Skalarmultiplikations-Berechnungsabschnitt 1003 sendet den berechneten skalarmultiplizierten Punkt zum Entschlüsselungsabschnitt 1002 (Schritt 2005). Der Entschlüsselungsabschnitt 1002 führt eine Entschlüsselungsverarbeitung auf der Grundlage des vom Skalarmultiplikations- Berechnungsabschnitt 1003 empfangenen skalarmultiplizierten Punkts aus (Schritt 2006). Der Entschlüsselungsabschnitt 1002 gibt eine entschlüsselte Nachricht 1006 als Ergebnis der Entschlüsselungsverarbeitung aus (Schritt 2007).
  • Die vorstehend erwähnte Verarbeitungsprozedur wird mit Bezug auf die Sequenzansicht aus 21 beschrieben. Zuerst wird die vom Entschlüsselungsabschnitt 2101 ausgeführte Verarbeitung beschrieben (1002 in 10). Der Entschlüsselungsabschnitt 2101 empfängt eine Eingabenachricht. Der Entschlüsselungsabschnitt 2101 wählt einen Punkt auf einer elliptischen Kurve auf der Grundlage der Eingabenachricht aus, übergibt den Punkt auf der elliptischen Kurve an einen Skalarmultiplikations-Berechnungsabschnitt 2102 und empfängt einen skalarmultiplizierten Punkt vom Skalarmultiplikations-Berechnungsabschnitt 2102. Der Entschlüsselungsabschnitt 2101 führt eine Entschlüsselungsverarbeitung unter Verwendung des empfangenen skalarmultiplizierten Punkts aus und gibt eine Ausgabenachricht als Ergebnis der Entschlüsselungsverarbeitung aus.
  • Als nächstes wird eine vom Skalarmultiplikations-Berechnungsabschnitt 2102 ausgeführte Verarbeitung beschrieben (1003 in 10). Der Skalarmultiplikations-Berechnungsabschnitt 2102 empfängt einen Punkt auf einer elliptischen Kurve vom Entschlüsselungsabschnitt 2101. Der Skalarmultiplikations-Berechnungsabschnitt 2102 empfängt einen Skalarwert von einem Abschnitt 2103 zum Speichern geheimer Informationen. Der Skalarmultiplikations-Berechnungsabschnitt 2102 berechnet einen skalarmultiplizierten Punkt auf der Grundlage des empfangenen Punkts auf der elliptischen Kurve und des empfangenen Skalarwerts bei einem Skalarmultiplikations-Berechnungsverfahren, bei dem geheime Informationen selbst dann nicht herauslecken, wenn der Skalarmultiplikations-Berechnungsprozess herausleckt. Dann sendet der Skalarmultiplikations-Berechnungsabschnitt 2102 den skalarmultiplizierten Punkt zum Entschlüsselungsabschnitt 2101.
  • Schließlich wird die vom Abschnitt 2103 zum Speichern geheimer Informationen ausgeführte Verarbeitung beschrieben (1004 in 10). Der Abschnitt 2103 zum Speichern geheimer Informationen sendet einen Skalarwert zum Skalarmultiplikations-Berechnungsabschnitt 2102, so dass der Skalarmultiplikations-Berechnungsabschnitt 2102 einen skalarmultiplizierten Wert berechnen kann.
  • Die in der ersten und der zweiten Ausführungsform und im ersten bis fünften Beispiel beschriebene Skalarmultiplikationsberechnung wird unverändert auf die vom Skalarmultiplikations-Berechnungsabschnitt 1003 ausgeführte Skalarmultiplikationsberechnung angewendet. Daher lecken bei dieser Skalarmultiplikationsberechnung Informationen über einen Skalarwert, die geheime Informationen darstellen, selbst dann nicht heraus, wenn der Skalarmultiplikations-Berechnungsprozess herausleckt. Dementsprechend lecken selbst dann keine geheimen Informationen heraus, wenn der Entschlüsselungsabschnitt 1002 die Entschlüsselungsverarbeitung ausführt. Dies liegt daran, dass nur der Skalarmultiplikations-Berechnungsabschnitt 1003 den geheime Informationen darstellenden Skalarwert behandelt.

Claims (10)

  1. Skalarmultiplikation-Berechnungsverfahren in einem Kryptographieverarbeitungssystem zum Berechnen eines skalarmultiplizierten Punkts (1508, 2508) auf der Grundlage eines Skalarwerts und eines Punktes (1507, 2507) auf einer elliptischen Kurve in einem Kryptosystem mittels elliptischer Kurven, umfassend die folgenden Schritte: Beurteilen eines Wertes eines Bits des Skalarwerts (1505, 2505); und Ausführen der Addition (1503, 2503) auf der elliptischen Kurve und der Verdoppelung (1504, 2504) auf der elliptischen Kurve; wobei der Bitwert von Eins oder Null den Inhalt der auszuführenden Additions- und Verdoppelungsberechnungen bestimmt; gekennzeichnet dadurch, daß das Verfahren ferner den folgenden Schritt umfaßt: Randomisieren (1509, 2509) der Berechnungsreihenfolge von Addition auf der elliptischen Kurve und Verdoppelung auf der elliptischen Kurve; wobei die Addition (1503, 2503) und die Verdoppelung (1504, 2504) auf der elliptischen Kurve in der randomisierten Berechnungsreihenfolge ausgeführt werden.
  2. Datenerzeugungsverfahren in einem Kryptographieverarbeitungssystem zum Erzeugen zweiter Daten aus ersten Daten, umfassend das Berechnen einer Skalarmultiplikation mittels des Skalarmultiplikation-Berechnungsverfahrens nach Anspruch 1.
  3. Signaturerzeugungsverfahren in einem Kryptographieverarbeitungssystem zum Erzeugen von Signaturdaten (306) aus Daten (305), umfassend das Berechnen einer Skalarmultiplikation (303) mittels des Skalarmultiplikation-Berechnungsverfahrens nach Anspruch 1.
  4. Entschlüsselungsverfahren in einem Kryptographieverarbeitungssystem zum Erzeugen entschlüsselter Daten (1006) aus verschlüsselten Daten (1005), umfassend das Berechnen einer Skalarmultiplikation (1003) mittels des Skalarmultiplikation-Berechnungsverfahrens nach Anspruch 1.
  5. Verfahren nach Anspruch 1, wobei eine elliptische Kurve von Montgomery-Form als elliptische Kurve benutzt wird.
  6. Verfahren nach Anspruch 1, wobei eine auf einem endlichen Körper der Charakteristik 2 definierte elliptische Kurve als elliptische Kurve benutzt wird.
  7. Verfahren nach Anspruch 1, wobei, falls der Wert des Bits des Skalarwerts Null ist, die Additionsberechnung das Addieren eines Punktes mP zu einem Punkt (m + 1)P und die Verdoppelungsberechnungen das Verdoppeln des Punktes mP, um 2(mP) zu erhalten, enthalten, wobei m den Skalarwert und P den Punkt bezeichnen, und wobei, wenn der Wert des Bits des Skalarwerts Eins ist, die Additionsberechnung das Addieren eines Punktes mP zu einem Punkt (m + 1)P und die Verdoppelungsberechnungen das Verdoppeln des Punktes (m + 1)P, um 2((m + 1)P) zu erhalten, enthalten, wobei m den Skalarwert und P den Punkt bezeichnen.
  8. Skalarmultiplikationsrechner (1501, 2501) zum Berechnen eines skalarmultiplizierten Punktes (1508, 2508) auf der Grundlage eines Skalarwerts (1507, 2507) und eines Punktes (1508, 2508) auf einer elliptischen Kurve in einem Kryptosystem mittels elliptischer Kurven, umfassend: eine Bitwert-Beurteilungseinrichtung (1505, 2505) zum Beurteilen eines Wertes eines Bits des Skalarwerts; eine Additionsoperationseinrichtung (1503, 2503) zum Ausführen von Additionen auf der elliptischen Kurve; und eine Verdoppelungsoperationseinrichtung (1504, 2504) zum Ausführen von Verdoppelung auf der elliptischen Kurve; gekennzeichnet durch eine Randomisierungseinrichtung (1509, 2509) zum Randomisieren der Berechnungsreihenfolge von Addition und Verdoppelung auf der elliptischen Kurve; wobei die Additionsoperationseinrichtung und die Verdoppelungsoperationseinrichtung dazu ausgelegt sind, die Addition und die Verdoppelung auf der elliptischen Kurve in der von der Randomisierungseinrichtung randomisierten Reihenfolge auszuführen, wobei die Inhalte der Additions- und Verdoppelungsberechnungen dadurch bestimmt sind, wie die Beurteilungseinrichtung den Bitwert von Eins oder Null beurteilt hat.
  9. Speichermedium, das ein Programm speichert, das, wenn es auf einem Computer ausgeführt wird, das Skalarmultiplikation-Berechnungsverfahren nach Anspruch 1 durchführt.
  10. Kryptographieverarbeitungssystem, umfassend einen Skalarmultiplikationsrechner nach Anspruch 8.
DE60119620T 2000-05-30 2001-03-20 Verfahren zur Skalarmultiplikation auf einer elliptischen Kurve und entsprechende Vorrichtung Expired - Fee Related DE60119620T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2000160001A JP3821631B2 (ja) 2000-05-30 2000-05-30 楕円曲線暗号におけるスカラー倍計算方法及び装置、並びに記憶媒体
JP2000160001 2000-05-30

Publications (2)

Publication Number Publication Date
DE60119620D1 DE60119620D1 (de) 2006-06-22
DE60119620T2 true DE60119620T2 (de) 2006-12-21

Family

ID=18664253

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60119620T Expired - Fee Related DE60119620T2 (de) 2000-05-30 2001-03-20 Verfahren zur Skalarmultiplikation auf einer elliptischen Kurve und entsprechende Vorrichtung

Country Status (4)

Country Link
US (1) US7046801B2 (de)
EP (1) EP1160661B1 (de)
JP (1) JP3821631B2 (de)
DE (1) DE60119620T2 (de)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3820909B2 (ja) * 2001-04-24 2006-09-13 ソニー株式会社 楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにプログラム
FR2828779B1 (fr) * 2001-08-17 2004-01-16 Gemplus Card Int Procede de calcul universel applique a des points d'une courbe elliptique
JP4067818B2 (ja) 2001-12-10 2008-03-26 富士通株式会社 楕円曲線暗号装置、楕円曲線暗号プログラム及び楕円曲線暗号の演算方法
DE20217616U1 (de) 2002-11-13 2003-02-20 Technische Universität Darmstadt, 64285 Darmstadt Kryptographievorrichtung mit einer gegen Seitenkanal-Angriffe resistenten Implementierung der Punktmultiplikation auf elliptischen Kurven
US7555122B2 (en) 2002-12-04 2009-06-30 Wired Communications LLC Method for elliptic curve point multiplication
EP1648111B1 (de) * 2003-07-22 2014-01-15 Fujitsu Limited Manipulationsbeständige verschlüsselung mit geheimem schlüssel
US7483534B2 (en) * 2004-08-05 2009-01-27 King Fahd University Of Petroleum Elliptic polynomial cryptography with multi y-coordinates embedding
US7483533B2 (en) * 2004-08-05 2009-01-27 King Fahd University Of Petroleum Elliptic polynomial cryptography with multi x-coordinates embedding
US7478902B2 (en) * 2004-11-04 2009-01-20 Hewlett-Packard Development Company, L.P. Inkjet compositions
US7764785B2 (en) 2004-11-08 2010-07-27 King Fahd University Of Petroleum And Minerals Method for communicating securely over an insecure communication channel
WO2006118092A1 (ja) * 2005-04-27 2006-11-09 Matsushita Electric Industrial Co., Ltd. 情報セキュリティ装置及び楕円曲線演算装置
KR101194837B1 (ko) * 2005-07-12 2012-10-25 삼성전자주식회사 멱지수를 숨기는 dpa 대책의 고속 계산을 위한 암호화장치 및 방법
WO2007045258A1 (en) 2005-10-18 2007-04-26 Telecom Italia S.P.A. A method for scalar multiplication in elliptic curve groups over prime fields for side-channel attack resistant cryptosystems
ATE466329T1 (de) 2005-10-28 2010-05-15 Telecom Italia Spa Verfahren zur skalarmultiplikation in gruppen elliptischer kurven über binäre polynomische körper für nebenkanalattacken-beständige kryptosysteme
KR100850202B1 (ko) * 2006-03-04 2008-08-04 삼성전자주식회사 Ecc 패스트 몽고매리 전력 래더 알고리즘을 이용하여dfa 에 대응하는 암호화 방법
KR20080012634A (ko) * 2006-08-04 2008-02-12 삼성전자주식회사 고속 몽고메리 전력 래더 알고리즘에서 사용되는 폴트 검출동작을 구현하기 위한 이진 유한 영역에서의 포인트 덧셈방법 및 덧셈 연산 장치
US7983415B2 (en) * 2006-12-19 2011-07-19 King Fahd University Of Petroleum And Minerals Method for performing iterative scalar multiplication which is protected against address bit attack
US8102998B2 (en) * 2007-05-02 2012-01-24 King Fahd University Of Petroleum And Minerals Method for elliptic curve scalar multiplication using parameterized projective coordinates
US20080273695A1 (en) * 2007-05-02 2008-11-06 Al-Gahtani Theeb A Method for elliptic curve scalar multiplication using parameterized projective coordinates
US8559625B2 (en) * 2007-08-07 2013-10-15 Inside Secure Elliptic curve point transformations
US7991162B2 (en) * 2007-09-14 2011-08-02 University Of Ottawa Accelerating scalar multiplication on elliptic curve cryptosystems over prime fields
US8619977B2 (en) * 2008-01-15 2013-12-31 Inside Secure Representation change of a point on an elliptic curve
US8233615B2 (en) 2008-01-15 2012-07-31 Inside Secure Modular reduction using a special form of the modulus
US8542820B2 (en) * 2009-02-05 2013-09-24 Infineon Technologies Ag Apparatus for calculating a result of a scalar multiplication
US8548160B2 (en) * 2010-01-13 2013-10-01 Microsoft Corporation Determination of pairings on a curve using aggregated inversions
US20150234750A1 (en) * 2014-02-18 2015-08-20 Aspeed Technology Inc. Method and apparatus for addressing a memory containing different bit-length field variables
US9645794B2 (en) * 2014-09-23 2017-05-09 Texas Instruments Incorporated Homogeneous atomic pattern for double, add, and subtract operations for digital authentication using elliptic curve cryptography
US9590805B1 (en) * 2014-12-23 2017-03-07 EMC IP Holding Company LLC Ladder-based cryptographic techniques using pre-computed points
US10181944B2 (en) 2015-06-16 2019-01-15 The Athena Group, Inc. Minimizing information leakage during modular exponentiation and elliptic curve point multiplication
US11251973B1 (en) * 2018-06-11 2022-02-15 Synopsys, Inc. Efficient calculation of ED25519/448 signature verification in an encryption device
CN113014388B (zh) * 2021-03-30 2022-06-28 浙江萤火虫区块链科技有限公司 一种椭圆曲线密码算法中标量乘的加速系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5854759A (en) * 1997-05-05 1998-12-29 Rsa Data Security, Inc. Methods and apparatus for efficient finite field basis conversion
US5987131A (en) * 1997-08-18 1999-11-16 Picturetel Corporation Cryptographic key exchange using pre-computation
DE19837808A1 (de) 1998-08-20 2000-02-24 Orga Kartensysteme Gmbh Verfahren zur Ausführung eines Verschlüsselungsprogramms zur Verschlüsselung von Daten in einem mikroprozessorgestützten, tragbaren Datenträger
CA2252078C (en) * 1998-10-28 2009-02-17 Certicom Corp. Power signature attack resistant cryptographic system

Also Published As

Publication number Publication date
EP1160661A3 (de) 2002-06-12
EP1160661A2 (de) 2001-12-05
JP2001337599A (ja) 2001-12-07
US7046801B2 (en) 2006-05-16
US20010048741A1 (en) 2001-12-06
JP3821631B2 (ja) 2006-09-13
EP1160661B1 (de) 2006-05-17
DE60119620D1 (de) 2006-06-22

Similar Documents

Publication Publication Date Title
DE60119620T2 (de) Verfahren zur Skalarmultiplikation auf einer elliptischen Kurve und entsprechende Vorrichtung
DE69917592T2 (de) Gegen stromverbrauchsignaturanfall beständige kryptographie
DE60217260T2 (de) Datenverarbeitungs- und Verschlüsselungseinheit
DE60125710T2 (de) Manipulationssichere Methode zur modularen Multiplikation
DE69534603T2 (de) Verschlüsselungssystem für elliptische kurve
DE60121066T2 (de) Angriffsresistente kryptographische Verfahren und Vorrichtung
DE69828787T2 (de) Verbessertes verfahren und vorrichtung zum schutz eines verschlüsselungsverfahrens mit öffentlichem schlüssel gegen angriffe mit zeitmessung und fehlereinspeisung
DE102006022960B9 (de) Verfahren zum Verschlüsseln von Eingabedaten, kryptographisches System und Computerprogrammprodukt
DE69826963T2 (de) Gerät für die modulare Inversion zur Sicherung von Information
DE60222052T2 (de) Verschlüsselung gesichert gegen Angriffe durch die Analyse der Leistungsaufnahme (DPA)
DE69936024T2 (de) Vorrichtung zur Verschlüsselung/Entschlüsselung
EP1999884B1 (de) Verfahren zum sicheren ermitteln von daten
DE60223775T2 (de) Vorrichtung zum Konvertieren einer elliptischen Kurve
EP1922837B1 (de) Verfahren zum sicheren ver- oder entschlüsseln einer nachricht
DE60036499T2 (de) Eine Technik, um einen Parameter, wie z.b. eine Prüfsumme, durch ein Primitiv zu erzeugen, welche elementare Register-Operationen verwendet
DE69932740T2 (de) Verfahren und vorrichtung zur kryptographischen datenverarbeitung
DE102005037598A1 (de) Verfahren und System zur Sicherung von Daten
DE69924912T2 (de) Verschlüsselungsverfahren und Vorrichtung unter Verwendung einer elliptischen Kurve
DE102007054316A1 (de) Modulares Multiplikationsverfahren, modularer Multiplizierer und Kryptosystem
DE69735290T2 (de) Verfahren zur unsymmetrischen kryptographischen kommunikation und zugehöriger tragbarer gegenstand
DE10304451B3 (de) Modulare Exponentiation mit randomisiertem Exponenten
DE102006013975B4 (de) Kryptographievorrichtung und -verfahren mit Skalarmultiplikation
EP1664979B1 (de) Übergang zwischen maskierten repräsentationen eines wertes bei kryptographischen berechnungen
DE112018002723B4 (de) System, verfahren und vorrichtung zur verschleierung von vorrichtungsoperationen
DE60037619T2 (de) Vorrichtung zum Lösen eines Gleichungssystems in einem endlichen Körper und Vorrichtung zum Invertieren von Elementen eines Erweiterungskörpers

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee