-
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.