-
HINTERGRUND DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft kryptografische Verfahren und insbesondere
ein Verfahren und ein System zum Verwenden sicherer und nicht-sicherer
Prozessoren, um kryptografische Berechnungen durchzuführen, während die
Sicherheit privater Daten auf recht erhalten wird.
-
Das
Internet hat sich von einem Netz, das primär zum Austausch von Information
verwendet wird, zu einem Kommunikationsmedium entwickelt, das für geschäftliche
und kommerzielle Transaktionen verwendet wird. Diese Entwicklung
des Internets zu einem Kommunikationsmedium für geschäftliche und konventionelle Transaktionen
hat zu der Erfordernis geführt,
Kommunikationen über öffentliche
Netze sicher auszuführen. Eine
Verschlüsselungstechnologie
wird üblicherweise
verwendet, um sichere Kommunikationen über unsichere Netze, wie etwa
das Internet, aufrecht zu erhalten. Zusätzlich hat der Zuwachs eines
E-Handels zu einer Erfordernis nach Authentifizierungsverfahren
für Fern-Log-in
und eine Dokumentenverifikation geführt.
-
Eine
Verschlüsselungstechnologie
mit öffentlichem
Schlüssel
stellt sowohl eine Sicherheit als auch eine Authentifizierungsfähigkeit
bereit. Bei Kryptosystemen mit öffentlichem
Schlüssel
hält jeder
Benutzer ein angepasstes Paar von Schlüsseln, die einen privaten Schlüssel und
einen öffentlichen
Schlüssel
einschließen. Der
private Schlüssel
und der öffentliche
Schlüssel
bilden ein einzigartiges, angepasstes Paar. Dokumente oder Kommunikationen,
die mit einem privaten Schlüssel
verschlüsselt
sind, können
nur mit dem angepassten öffentlichen
Schlüssel
entschlüsselt
werden, und umgekehrt. Der öffentliche
Schlüssel
kann öffentlich
offenbart werden und kann von jedermann verwendet werden, um Kommunikationen,
die für
den Besitzer des öffentlichen
Schlüssels
vorgesehen sind, zu verschlüsseln.
Der private Schlüssel
wird geheim gehalten. Somit kann eine Kommunikation, die mit dem öffentlichen
Schlüssel
verschlüsselt
ist, nur von dem Besitzer des angepassten privaten Schlüssels entschlüsselt werden.
-
Verschlüsselungsverfahren
mit öffentlichem
Schlüssel
können
auch verwendet werden, um digitale Signaturen für elektronische Dokumente und
Kommunikationen zu schaffen. Diese digitale Signatur kann verwendet
werden, Dokumente zu verifizieren. Eine Person kann ein elektronisches
Dokument oder eine Kommunikation durch ein verschlüsseltes
Dokument zur Kommunikation mit seinem oder ihrem privaten Schlüssel unterzeichnen.
Ein unterzeichnetes Dokument kann dann durch ein Entschlüsseln des
unterzeichneten Dokuments mit dem angepassten öffentlichen Schlüssel verifiziert
werden. Wenn das Dokument oder die Kommunikation unter Verwendung
des angepassten öffentlichen
Schlüssels
erfolgreich entschlüsselt
wird, kann nur der Besitzer des privaten Schlüssels die Nachricht gesendet
haben.
-
Um
die Integrität
von kommerziellen Transaktionen herzustellen und einen Betrug zu
verhindern, ist es notwendig, dass die Benutzer ihren privaten Schlüssel geheim
halten. Jedermann, der Zugriff auf den privaten Schlüssel eines
Benutzers hat, kann sich als dieser Benutzer mit einer vollständigen Anonymität ausgeben.
Somit wird die weit verbreitete Verwendung digitaler Signaturen
für elektronischen
Handel und andere Anwendungen eine Technologie für eine sichere Speicherung
privater Schlüssel
erfordern.
-
Es
ist bekannt, private Schlüssel
gegen Eingriff einer gesicherten Hardware-Vorrichtungen, wie etwa einer
entnehmbaren Smart-Card zu speichern. Die Zertifikate des privaten
Schlüssels
und des öffentlichen Schlüssels des
Benutzers werden in den Speicher der Smart-Card geschrieben. Um
die Smart-Card zu verwenden, führt
der Benutzer die Smart-Card
in einen Kartenleser ein, der mit einer Host-Vorrichtung verbunden ist,
und gibt dann ein ID/Passwort ein, um die Smart-Card zu aktivieren.
Wenn das korrekte ID/Passwort eingegeben ist, gibt der Prozessor
auf der Karte den privaten Schlüssel
zur Verwendung durch die Host-Vorrichtung frei. Wenn ein inkorrektes
ID/Passwort eine vorbestimmte Anzahl aufeinanderfolgender Versuche
eingegeben wird, sperrt sich die Smart-Card permanent. Manche intelligente
Smart-Cards (oft als Kryptokarten bezeichnet) können kryptografische Betriebsschritte
durchführen,
so dass der private Schlüssel
nicht aus ihrer gegen Eingriffe gesicherten Umgebung ausgegeben
werden muss. Die Bytes, die zu verarbeiten sind, werden in die Smart-Card
durch die Host-Vorrichtung eingegeben und von der Smart-Card verarbeitet.
Nur das Ergebnis wird aus der Smart-Card zu der Host-Vorrichtung
ausgegeben.
-
Ein
Verfahren und ein Gerät
zum Sichern kryptografischer Vorrichtungen gegenüber Angriffen, die ein externe Überwachung
und eine Analyse einschließen,
ist in der internationalen Patentanmeldung WO 99 35782 A offenbart.
-
KURZE ZUSAMMENFASSUNG
DER ERFINDUNG
-
Die
vorliegende Erfindung ist auf ein Verfahren und ein System zum Verwenden
sicherer und nicht-sicherer Vorrichtungen zum Durchführen kryptografischer
Berechnungen, wie etwa einer Verschlüsselung und einer Entschlüsselung
von Nachrichten gerichtet, ohne eine geheime Information zu offenbaren.
Zumindest ein Abschnitt einer geheimen Information wird innerhalb
der sicheren Vorrichtung gehalten. Die sichere Vorrichtung ist nicht
durch irgendeine praktische Einrichtung von dem offenbarten Teil
der Geheiminformation aufdeckbar.
-
Eine
Ausführungsform
schließt
ein Verfahren ein, wie es in dem unabhängigen Anspruch 1 definiert ist.
Der Chiffre-Schlüssel ist
in zwei Partialwerte geteilt, die hierin als der modifizierte Chiffre-Schlüssel und
der Indikator bezeichnet werden. Der modifizierte Chiffre-Schlüssel wird
dann zu einem externen Prozessor ausgegeben. Der modifizierte Chiffre-Schlüssel kann
zufallsmäßig durch
ein Ändern
ausgewählter
Bits des Chiffre-Schlüssels
erzeugt werden. Ein Indikator, der dem modifizierten Chiffre-Schlüssel entspricht,
wird auch erzeugt und schließt
eine Mehrzahl von Indikatorbits ein. Der Indikator ist eine Bitkette,
welche, wenn sie dem modifizierten Chiffre-Schlüssel hinzugefügt wird,
den ursprünglichen
Chiffre-Schlüssel
erzeugt. Ein erstes Produkt wird von dem unsicheren Prozessor berechnet
und ist eine Funktion der Bitkette und des modifizierten Chiffre-Schlüssels. Ein
zweites Produkt wird innerhalb des sicheren Prozessors berechnet
und ist eine Funktion der Bitkette und des Indikators. Ein Endprodukt
wird innerhalb des sicheren Prozessors durch ein Kombinieren des
ersten und des zweiten Produkts berechnet.
-
Eine
zweite Ausführungsform
der vorliegenden Erfindung, wie sie in dem unabhängigen Anspruch 6 definiert
ist, teilt den Chiffre-Schlüssel
in drei Partialwerte, die hierin als der kurze Teil, der modifizierte
lange Teil und der Indikator bezeichnet werden. Der unsichere Schlüssel berechnet
ein erstes Produkt, das mit einem zweiten Produkt kombiniert wird,
das von dem sicheren Prozessor berechnet wird. Das erste Produkt
ist eine Funktion eines dritten Produkts, das von dem sicheren Prozessor
berechnet wird, und eines vierten Produkts. Der sichere Prozessor
berechnet zunächst
das dritte Produkt und gibt das Ergebnis zu dem unsicheren Prozessor
aus. Das dritte Produkt ist eine Funktion der Bitkette und des kurzen
Teils des Chiffre-Schlüssels.
Das vierte Produkt ist eine Funktion der Bitkette und des modifizierten
langen Teils des Chiffre-Schlüssels.
Der unsichere Prozessor modifiziert das dritte Produkt mit einem
vierten Produkt, um das erste Produkt zu erhalten. Das erste Produkt
wird dann in dem sicheren Prozessor eingegeben, der ein zweites
Produkt berechnet und das zweite Produkt mit dem ersten Produkt
kombiniert, um das Endprodukt zu erhalten. Das zweite Produkt ist eine
Funktion der Bitkette und des Indikators.
-
Ein
weiterer Aspekt der Erfindung ist eine Berechnungsvorrichtung, wie
in dem unabhängigen
Anspruch 12 definiert.
-
Weitere
Ausführungsformen
der Erfindung sind in den angehängten
abhängigen
Ansprüchen
spezifiziert.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
In
den Zeichnungen zeigen:
-
1 ein
schematisches Diagramm, das ein Kommunikationsterminal gemäß der vorliegenden
Erfindung zum Kommunizieren über
einen unsicheren Kommunikationskanal veranschaulicht;
-
2 ein
schematisches Diagramm eines Sicherheitsmoduls, das in dem Kommunikationsterminal der 1 verwendet
wird;
-
3 ein
Funktionsblockdiagramm, das die Verarbeitung veranschaulicht, die
von dem unsicheren Prozessor und dem sicheren Prozessor durchgeführt wird;
-
4 ein
Flussdiagramm, das ein Verfahren zum Durchführen kryptografischer Berechnungen
gemäß eine Ausführungsform
der vorliegenden Erfindung veranschaulicht;
-
5 ein
Diagramm, das eine beispielhafte Berechnung gemäß der vorliegenden Erfindung
veranschaulicht; und
-
6 ein
Flussdiagramm, das ein alternatives Verfahren zum Durchführen kryptografischer
Berechnungen gemäß einer
zweiten Ausführungsform
der vorliegenden Erfindung veranschaulicht;
-
7 ein
Diagramm, das eine beispielhafte Berechnung gemäß der zweiten Ausführungsform
veranschaulicht.
-
DETAILLIERTE
BESCHREIBUNG DER ERFINDUNG
-
Unter
Bezugnahme nun auf die Zeichnungen zeigt 1 ein Kommunikationsterminal 10 zum
Senden und Empfangen verschlüsselter
Nachrichten über
einen unsicheren Kommunikationskanal 14. Der Ausdruck "Kommunikationskanal", wie er hierin verwendet
wird, bezieht sich auf jedwede Vorrichtung, die in der Lage ist,
Information über
einen Kommunikationskanal 14 zu senden und/oder zu empfangen.
Der Kommunikationskanal 14 kann ein drahtloser Kanal oder
ein drahtgebundener Kanal sein. Das Kommunikationsterminal 10 kann
beispielsweise ein Mobiltelefon; ein persönliches Kommunikationssystem-(PCS)-Terminal
umfassen, das ein Mobiltelefon mit Datenverarbeitungs-, Fax- und
Datenkommunikations-Fähigkeiten
kombinieren kann; ein persönlicher
digitaler Assistent (PDA), der ein Funktelefon, einen Pager, einen
Internet/Intranet-Zugriff, einen Web-Browser, einen Organizer, einen Kalender
und/oder einen Empfänger
für ein
globales Positionierungssystem (GPS) umfassen. Der Ausdruck Kommunikationsterminal 10 umfasst
auch Berechnungsvorrichtungen, wie etwa einen Personalcomputer,
einen Laptop-Computer oder einen Palmtop-Computer, die eine Kommunikationsschnittstelle
zum Kommunizieren mit anderen Vorrichtungen einschließen.
-
Das
Kommunikationsterminal 10 schließt eine Kommunikationsschnittstelle 16,
einen Prozessor 18, ein Sicherheitsmodul 20 und
einen unsicheren Prozessor, der hierin als ein Beschleuniger 100 bezeichnet wird,
ein. Der Prozessor 18 steuert den Betrieb des Kommunikationsterminals 10 und
kann entweder einen internen oder einen externen Speicher zum Speichern
von Steuerprogrammen und Daten, die während des Betriebs verwendet
werden, einschließen.
Der Prozessor kann auch verwendet werden, um Berechnungsfunktionen
während
der Verschlüsselungs-
und Entschlüsselungsschritte
einer Kommunikationssitzung durchzuführen. Der Prozessor 18 ist
jedoch nicht eine sichere Vorrichtung, derart, dass Daten, die darin
gespeichert sind, einer Entdeckung durch Parteien von außerhalb
unterworfen sind.
-
Die
Kommunikationsschnittstelle 16 stellt eine Einrichtung
zum Verbinden des Kommunikationsterminals 10 mit dem Kommunikationskanal 14 bereit.
Die Schnittstelle 16 kann eine Vielfalt von Ausführungsformen aufweisen,
einschließlich
eines Funkfrequenz-Sendeempfängers,
einer Ethernet-Schnittstelle,
eines Modems, etc.
-
Das
Sicherheitsmodul 20 wird verwendet, um kryptografische
Berechnungen durchzuführen,
z.B. eine Verschlüsselung
und eine Entschlüsselung,
und andere Sicherheitsfunktionen. Das Sicherheitsmodul 20 kann beispielsweise
eine entnehmbare Smart-Card sein, die durch eine obere Metallisierungsschicht
abgedeckt ist, um ein Abtasten interner Knoten zur verbotenen Verwendung
eines Extrahierens gespeicherter privater Information, wie etwa
eines privaten Schlüssels,
zu verhindern. Auf Daten, die berechnet und innerhalb des Sicherheitsmoduls 20 gespeichert
sind, kann von einer Quelle von außen nicht zugegriffen werden,
womit eine Sicherheit für
den Chiffrierprozess bereitgestellt wird. Das Sicherheitsmodul 20 speichert
Schlüsselungsvariable, wie
etwa die öffentlichen
und privaten Schlüssel
des Benutzers, die in Chiffrieralgorithmen verwendet werden, um
Daten zu verschlüsseln
und zu entschlüsseln.
Obzwar in 1 als eine getrennte Vorrichtung
gezeigt, kann das Sicherheitsmodul 20 tatsächlich in
sichere Abschnitte des Prozessors 18 eingeschlossen sein.
-
Der
Beschleuniger 100 ist ein Co-Prozessor, der verwendet wird,
um kryptografische Berechnungen, die von dem Sicherheitsmodul 20 durchgeführt werden,
zu beschleunigen. Der Beschleuniger 100 ist außerhalb
des Sicherheitsmoduls 20 angeordnet und muss nicht ein
sicherer Prozessor sein. Die Funktion des Beschleunigers 100 kann
von dem Prozessor 18 durchgeführt werden oder in diesen eingeschlossen
sein. Die vorliegende Erfindung lässt es zu, dass der Beschleuniger 100 kryptografische
Berechnungen durchführt, ohne
eine Geheiminformation freizugeben. Der Beschleuniger 100 wird
detaillierter untenstehend beschrieben.
-
2 veranschaulicht
das Sicherheitsmodul 20 detaillierter. Das Sicherheitsmodul 20 schließt einen sicheren
Prozessor 30, eine I/O-Schnittstelle 32, einen
Lesespeicher (ROM) 34, einen löschbaren, programmierbaren
Lesespeicher (EPROM) 38, einen Schreiblesespeicher 40 und
optional einen Zufallszahlengenerator 42 ein. Die I/O-Schnittstelle 32 verbindet
das Sicherheitsmodul 20 mit dem Hauptprozessor 18 des
Kommunikationsterminals 10. Der sichere Prozessor 30 führt Programme
aus, die in dem ROM 34 gespeichert sind und spricht auf
Befehle an, die dem sicheren Prozessor 30 an der I/O-Schnittstelle 30 präsentiert
werden. Die Befehle können
Anforderungen einschließen,
Daten unter Verwendung gespeicherter Schlüssel oder extern zugeführter Schlüssel zu
verschlüsseln
oder zu entschlüsseln
und die Ergebnisse als Ausgangsbits zu der I/O-Schnittstelle 32 zurückzugeben.
-
Der
ROM 34 speichert Programme, die für eine Verschlüsselung,
eine Entschlüsselung
und andere Sicherheitsfunktionen verwendet werden. Die Programme
sollten nicht veränderlich sein,
um ein Eingreifen zu verhindern. Andere Daten, die die Benutzer
spezifisch sein können,
wie etwa öffentliche
und private Schlüssel, ein
Modulo und ein Identitätszertifikat
sind feld-programmierbar und werden in dem EPROM 38 gespeichert. Der
private Schlüssel
KPRIV sollte auf eine Weise gespeichert
werden, der einen Zugriff von Quellen von außerhalb verhindert. Es ist
möglich,
den privaten Schlüssel
auf eine zerhackte oder unzulängliche
Weise zu speichern, die eine Verwendung verhindert, bis ein korrektes,
von einem Benutzer zugeführtes
Passwort eingegeben wird. Der RAM 40 stellt einen Arbeitsspeicher
zum vorübergehenden
Speichern von Datenvariablen bereit.
-
Das
Sicherheitsmodul 20 kann auch einen Zufallszahlengenerator 42 einschließen, der
verwendet werden kann, um Zufallszahlen zu erzeugen. Die Zufallszahlen
können
beispielsweise verwendet werden, um Schlüssel zu berechnen oder um Zufalls-Bitketten
für Schlüsselaustauschalgorithmen
zu erzeugen, wie auch für
andere Zwecke, die in dem Stand der Technik alt bekannt sind.
-
Daten,
die von dem Kommunikationsterminal 10 gesendet und von
diesen empfangen werden, können verschlüsselt werden,
um sie vor einer Offenbarung gegenüber dritten Parteien zu schützen. Eine
Verschlüsselung
und eine Entschlüsselung
kann unter Verwendung von Schlüsselalgorithmen
durchgeführt
werden. Ein üblicher öffentlicher
Schlüsselalgorithmus
ist der RSA-Algorithmus.
Der RSA-Algorithmus und andere öffentliche
Schlüsselalgorithmen
verwenden einen ersten Schlüssel,
der als der öffentliche
Schlüssel
bezeichnet wird, für
Verschlüsselungs-Betriebsschritte,
und einen entsprechenden zweiten Schlüssel, der als der private Schlüssel bezeichnet
wird, für
Entschlüsselungs-Betriebsschritte.
Der öffentliche
Schlüssel
und der private Schlüssel
bilden ein angepasstes Paar. Eine Nachricht, die mit dem öffentlichen
Schlüssel
verschlüsselt
ist, kann nur mit dem angepassten privaten Schlüssel entschlüsselt werden.
Deswegen verschlüsselt,
um sichere Kommunikationen einzugehen, der Sender die Nachricht
unter Verwendung des öffentlichen
Schlüssels
des Empfängers.
Nur der vorgesehene Empfänger
kann die Nachricht unter Verwendung des entsprechenden privaten
Schlüssels
entziffern. Der RSA-Algorithmus ist in dem U.S. Patent Nr. 4,405,829
offenbart.
-
In
dem RSA-Algorithmus wird eine Informationssequenz oder eine Nachricht
in eine Mehrzahl von Nachrichtenblöcken geteilt. Jeder Nachrichtenblock
umfasst eine Sequenz von Bits, die einen Wert von 1 oder 0 aufweisen,
der als eine Binärzahl
X angesehen werden kann. Eine Verschlüsselung wird durch ein Potenzieren
der Binärzahl
X (d.h. des Binärwerts
des Nachrichtenblocks) unter Verwendung des öffentlichen Schlüssels KPUB oder des privaten Schlüssels KPRIV als der Exponent und ein Reduzieren
des Ergebnismodulo des zugeordneten Verschlüsselungsmodulo N durchgeführt. IM
Allgemeinen wird der öffentliche
Schlüssel
KPUB des Empfängers verwendet, um eine Nachricht
zu verschlüsseln,
die geheim bleiben soll, und der private Schlüssel KPRIV des
Empfängers
wird verwendet, um die verschlüsselte
Nachricht zu entschlüsseln.
Unter manchen Umständen
kann ein Nachrichtenblock mit dem privaten Schlüssel KPRIV des
Senders verschlüsselt
werden, um die Nachricht eigentlich zu unterzeichnen. In diesem
Fall wird die resultierende unterzeichnete Nachricht mit dem öffentlichen
Schlüssel
KPUB des Senders entschlüsselt, um den ursprünglichen
Volltext wieder zu gewinnen.
-
In
den RSA-Algorithmus weist der private Schlüssel KPRIV typischerweise
eine Länge
von ungefähr 2.048
Bit auf. Der Nachrichtenblock und der Verschlüsselungsmodulo N sind typischerweise
in der gleichen Größenordnung
einer Wortlänge.
Somit bringt eine Verschlüsselung
oder Entschlüsselung
mit dem privaten Schlüssel
KPRIV ein Potenzieren eines 2.048 Bit-Nachrichtenblocks
mit einem 2.048 Bit-Exponenten und ein Reduzieren des Ergebnismodulo
mit einer weiteren 2.048 Bit- Zahl
mit sich. Diese Berechnungen erfordern eine beträchtliche Rechenleistung zum
Durchführen.
-
Zwei
Algorithmen sind in der Vergangenheit verwendet worden, um die Komplexität des Verschlüsselns und
Entschlüsselns
von Nachrichtenblöcken
mit einem Schlüssel
zu verringern, der einen großen
Binärwert
aufweist. Ein Algorithmus, der hierin als der Algorithmus der sukzessiven
Quadrate bezeichnet wird, wird verwendet, um eine erste große Zahl
in die Potenz einer zweiten großen
Zahl zu erheben. Der zweite Algorithmus, der hierin als der Modulo-Reduktionsalgorithmus
bezeichnet wird, wird verwendet, um eine erste große Zahl
Modulo um eine zweite große
Zahl zu reduzieren. Beide dieser Algorithmen werden in einer modifizierten Form
in der vorliegenden Erfindung eingesetzt.
-
Der
Algorithmus der sukzessiven Quadrate wird verwendet, um eine Bitkette
X auf eine große
Potenz Y zu erheben. Bei einer Entschlüsselung ist die Bitkette X
die verschlüsselte
Nachricht, und die Potenz Y ist der Entschlüsselungsschlüssel. Bei
der Verschlüsselung
ist die Bitkette X der volle Nachrichtenblock, und die Potenz Y
ist der Verschlüsselungsschlüssel. Die
aufeinanderfolgenden Quadrate der Bitkette X werden berechnet und
verwendet, um einen akkumulierten Wert Z zu multiplizieren, der
von dem Wert eines entsprechenden Bits der Potenz Y abhängt. Die
aufeinanderfolgenden Quadrate werden hierin als X
1 =
X
1, X
2 = X
2,
bezeichnet. In dem Algorithmus
der sukzessiven Quadrate entspricht das niedrigstwertige Bit in
der Potenz Y, bezeichnet als B
1, der ersten
Potenz von X, das zweite Bit B
2 entspricht
der zweiten Potenz von X, das dritte Bit B
3 entspricht
der vierten Potenz von X, usw., bis das letzte Bit B
L erreicht
ist. Jedes sukzessive Quadrat X
1, X
2, X
3, ... X
n wird verwendet, um den akkumulierten Wert
Z, der von dem Wert des entsprechenden Bits B
n abhängt, in
die Potenz Y zu multiplizieren. Insbesondere wird der akkumulierte
Wert Z mit dem sukzessiven Quadrat multipliziert, wenn das entsprechende
Bit B
n in der Potenz Y 1 ist. Sukzessive
Quadrate, die "0" Bits der Potenz
Y entsprechen, multiplizieren den akkumulierten Wert Z nicht. Der
Algorithmus der sukzessiven Quadrate verringert die Anzahl von Werten,
die multipliziert werden müssen,
von 2
2.048 auf die Größenordnung von 2.048, wobei
X und Y in der Länge
2048 Bit aufweisen.
-
Nach
jedem Multiplikations- oder Quadrierungs-Betriebsschritt weist der
akkumulierte Wert Z eine Wortlänge
in der Größenordnung
von 4.096 Bit auf. Bei der Verschlüsselung und der Entschlüsselung
wird dieser akkumulierte Wert Z durch eine Modulo-Reduktion auf
einen Wert in der Größenordnung
von 2.048 in der Länge
reduziert. Insbesondere wird das Ergebnis jedes Quadrierungs-Betriebsschrittsmodulo
des Verschlüsselungsmodulos
N mit der Wortlänge
2048 reduziert. Dies erfordert ein Subtrahieren einer Anzahl von
Vielfachen von N, bis der Wert des akkumulierten Gesamt-Z geringer
als N ist. Die Anzahl von Vielfachen von N, die subtrahiert werden
müssen,
ist in der Größenordnung
von 22.048 oder 10600 was
die Möglichkeit
einer sukzessiven Subtraktion eliminiert. Die Anzahl von Vielfachen
von N, die subtrahiert werden müssen,
ist in der Größenordnung
von 22.048 oder 10600 was
die Möglichkeit
einer sukzessiven Subtraktion eliminiert.
-
Der
Modulo-Reduktionsalgorithmus wird verwendet, um eine erste große Zahl
Modulo einer zweiten großen
Zahl zu reduzieren. Gemäß dem Modulo-Reduktionsalgorithmus
wird der ungefähre
Reziprokwert von N auf 2.048 signifikante Bit berechnet, wobei führende Nullen
nach dem Binärpunkt
ignoriert werden. Jedes Mal, wenn ein 4.096 Bit-Z-Wert Modulo N
zu reduzieren ist, wird die ungefähre Anzahl von Malen T, die
N von Z subtrahieren, unter Verwendung der Gleichung T = Z 1/N berechnet,
was eine einzelne lange Multiplikation von Z mit dem ungefähren Reziprokwert
von N ist. Das Produkt von TxN wird dann von dem akkumulierten Wert
Z subtrahiert, was Z auf innerhalb ein oder zwei Mal N des erforderlichen
Ergebnisses reduziert. Die Reduktion wird dann durch ein Subtrahieren
der Verschlüsselung
Modulos N um ein oder zwei Mal mehr von dem akkumulierten Wert Z
vervollständigt,
bis der Rest geringer als N, aber nicht negativ ist. Dieser Modulo-Reduktionsalgorithmus
erfordert zwei lange Multiplikationen und zwei Subtraktionen anstelle
von 10600 sukzessiven Subtraktionen.
-
Gemäß der vorliegenden
Erfindung wird ein unsicherer Prozessor oder Beschleuniger 100 verwendet, um
den Hauptteil der kryptografischen Berechnungen durchzuführen, ohne
eine geheime Information in dem Prozess preiszugeben. Eine Ausführungsform
der vorliegenden Erfindung kann beispielsweise verwendet werden,
um einen Wert mit einem geheimen Exponenten zu potenzieren. Somit
kann die erste Ausführungsform beispielsweise
verwendet werden, um eine verschlüsselte Nachricht zu entschlüsseln, ohne
entweder den privaten Schlüssel
KPRIV oder den Volltext der Nachricht preiszugeben.
Diese Ausführungsform
der Erfindung kann auch verwendet werden, um eine nicht-geheime
Nachricht mit dem privaten Schlüssel
KPRIV zu unterzeichnen, wiederum ohne ein
Enthüllen
des Schlüssels
KPRIV. Eine andere Ausführungsform kann verwendet werden,
um einen geheimen Wert einem geheimen Exponenten zu potenzieren.
Diese Ausführungsform
kann beispielsweise verwendet werden, um eine geheime Information
unter Verwendung KPUB oder eines privaten Schlüssels KPRIV zu verschlüsseln, ohne die Geheiminformation
oder den Schlüssel
preiszugeben.
-
In
der ersten Ausführungsform
der Erfindung muss der private Schlüssel KPRIV geheim
bleiben, während
kryptografische Berechnungen durchgeführt werden. Die kryptografischen
Berechnungen können
ein Verschlüsseln
oder ein Entschlüsseln
von Nachrichten mit dem privaten Schlüssel KPRIV umfassen.
Um den privaten Schlüssel
KPRIV zu schützen, aber es dennoch zuzulassen,
dass ein signifikanter Teil der Verarbeitung, die für die Verschlüsselung/Entschlüsselung
erforderlich ist, außerhalb
des Sicherheitsmoduls 20 ausgeführt wird, wird der private
Schlüssel
in zwei oder mehrere Teile geteilt, die manchmal hierin als Partialwerte
bezeichnet werden. In der ersten beispielhaften Ausführungsform
wird der private Schlüssel
KPRIV modifiziert, um einen modifizierten
privaten Schlüssel
KPRIVM (den ersten Partialwert) und einen
Indikator INDIC (den zweiten Partialwert) zu erhalten. Das Sicherheitsmodul 20 führt den
modifizierten privaten Schlüssel
KPRIVM und die Bitkette X einem unsicheren
Prozessor außerhalb
des Sicherheitsmoduls 20, wie etwa bei dem Beschleuniger 100,
zu. Der Beschleuniger 100 führt einen signifikanten Teil
der notwendigen Berechnungen auf der Grundlage von KPRIVM durch
und führt
dem Sicherheitsmodul 20 den resultierenden Wert (der hierin
als das erste Produkt P1 bezeichnet wird)
zu. Zusätzlich
kann der Beschleuniger 100 das Sicherheitsmodul 20 auch
mit anderen Werten versorgen, die von dem Sicherheitsmodul 20 benötigt werden,
um die Berechnungen zu vervollständigen.
Das Sicherheitsmodul 20 führt dann bestimmte zusätzliche
Berechnungen auf der Grundlage des Indikators IDIC und der Bitkette
X durch, um einen zweiten Wert zu erzeugen (der hierin als das zweite
Produkt P2 bezeichnet wird). Das Sicherheitsmodul 20 kombiniert
dann das erste Produkt P1 und das zweite
Produkt P2 auf eine geeignete Weise, um
ein Endprodukt PF zu erzeugen. In dem Fall
einer Entschlüsselung
ist das Endprodukt PF der ursprüngliche
Volltext. Im Fall einer Verschlüsselung
ist das Endprodukt PF der resultierende Chiffre-Text.
-
3 ist
ein Funktionsblockdiagramm, das die Verarbeitung, die von dem Beschleuniger 100 und
dem sicheren Prozessor 30 durchgeführt wird, für eine Ausführungsform veranschaulicht.
Der Beschleuniger 100 umfasst einen Quadratzahlengenerator 102,
einen Akkumulator 104 und eine Verzögerungsschaltung 106. Der
Quadratzahlengenerator 102 empfängt die zugeführte Bitkette
X als Eingang. Die Bitkette X kann entweder den Chiffre-Text, der
mit dem privaten Schlüssel
KPRIV zu entschlüsseln ist, oder den Volltext,
der mit dem privaten Schlüssel
KPRIV zu verschlüsseln ist, umfassen. Der Quadratzahlengenerator 102 quadriert
iterativ die zugeführte
Bitkette X und reduziert jedes sukzessive Quadratmodulo ein Verschlüsselungsmodulo
N. Die sukzessiven Quadrate werden als X1,
X2, ... Xn bezeichnet.
Der Verschlüsselungsmodulo
N ist der Modulo, der dem zugeführten
privaten Schlüssel
KPRIV zugeordnet ist. Der Ausgang des Quadratzahlengenerators 102 wird dem
Akkumulator 104 während
jeder Iteration zugeführt.
Der Ausgang des Quadratzahlengenerators 102 wird auch in
den Sicherheitsprozessor 30 während jeder Iteration rückgekoppelt.
-
Der
multiplikative Akkumulator 104 wird auf einen Startwert
von 1 initialisiert. Wie oben erwähnt, empfängt der multiplikative Akkumulator 104 die
sukzessiven Quadrate X1, X2,
X3, X4, ... Xn, die aus dem Quadratzahlengenerator 102 ausgegeben
werden. Der multiplikative Akkumulator 104 empfängt auch
an einem zweiten Eingang einen akkumulierten Wert Z, der um einen
Zyklus durch die Verzögerungsschaltung 106 verzögert wird.
Der multiplikative Akkumulator 104 multipliziert iterativ
den vorangehenden akkumulierten Wert Z mit dem Ausgang des Quadratzahlengenerators 102 in
Abhängigkeit
von dem Wert eines entsprechenden Bits Bn des modifizierten
privaten Schlüssels
KPRIVM. Somit steuern die Bits des modifizierten
Schlüssels
KPRIVM den Betrieb des multiplikativen Akkumulators 104.
Wenn das entsprechende Bn des modifizierten
Schlüssels
gleich 0 ist, wird der akkumulierte Wert Z mit 1 multipliziert,
d.h. keine Multiplikation muss durchgeführt werden. Wenn das entsprechende
Bit Bn des modifizierten Schlüssels KPRIVM einen Wert von 1 aufweist, multipliziert
der multiplikative Akkumulator 104 den vorangehenden Wert
Z mit einem entsprechenden sukzessiven Quadrat Xn,
das von dem Quadratzahlengenerator 102 ausgegeben wird,
um einen neuen Wert von Z zu berechnen. Nach jedem Multiplikationsbetrieb
wird der resultierende Wert Z Modulo um den Verschlüsselungsschlüssel N reduziert.
Dieser Prozess wird für
jedes Bit des modifizierten Schlüssels
KPRIVM wiederholt, beginnend mit dem niedrigstwertigen
Bit und endend mit dem höchstwertigen
Bit. Der Endwert von Z ist das erste Produkt P1 und wird
in das Sicherheitsmodul 20 eingegeben, um die kryptografischen
Berechnungen zu vollenden.
-
3 zeigt
auch die Verarbeitung, die von dem sicheren Prozessor 30 innerhalb
des Sicherheitsmoduls 20 durchgeführt wird, was die Berechnungen,
die durch den Beschleuniger 100 gestartet sind, vollendet. Der
Prozessor 30 umfasst einen selektiven Multiplizierer 44 und
einen Produktknoten 46. Der selektive Multiplizierer 44 empfängt die
sukzessiven Quadrate X1, X2,
... Xn, die aus dem Quadratzahlengenerator 102 ausgegeben
werden. Der selektive Multiplizierer 44 empfängt auch
den Indikator INDIC, der untenstehend diskutiert wird. Die Betriebsschritte
des selektiven Multiplizierers 44 werden durch den Indikator
INDIC gesteuert. Es besteht eine Eins-zu-Eins-Übereinstimmung zwischen den
Bits INDIC und der Zahl sukzessiver Quadrate Xn.
Insbesondere wählt
der selektive Multiplizierer 44 jene Fälle der sukzessiven Quadrate
Xn, die einen Bitwert von 1 in dem Indikator
INDIC entsprechen, und verwirft die sukzessiven Quadrate, die einem
Bitwert von 0 entsprechen. Die ausgewählten sukzessiven Quadrate
Xn können
in dem RAM 40 gesichert werden. Somit wählt der Indikator INDIC sukzessive
Quadrate Xn, die von dem Quadratzahlengenerator 102 ausgegeben
werden, und verwirft den Rest.
-
Der
selektive Multiplizierer 44 kann das Produkt der ausgewählten sukzessiven
Quadrate Xn berechnen, um einen Wert zu
erzeugen, der hierin als das zweite Produkt P2 bezeichnet
wird, das dem Produktknoten 46 zugeführt wird. Der Produktknoten 46 multipliziert
das zweite Produkt P2 mit dem ersten Produkt
P1, das von dem Beschleuniger 100 erzeugt
wird, um das Endprodukt PF zu erzeugen.
Dieses Endprodukt PF umfasst den Volltext
(Entschlüsselung)
oder den chiffrierten Text (Verschlüsselung), der aus dem Chiffrierbetrieb
hervorgeht. Alternativ kann das erste Produkt P1,
das von dem Beschleuniger 100 ausgegeben wird, mit den
ausgewählten
sukzessiven Quadraten Xn, eines nach dem
anderen, multipliziert werden, um das Endprodukt PF zu
berechnen. Zu Zwecken dieser Anmeldung schließt ein Multiplizierer eines
ersten Produkts P1 mit einem zweiten Produkt
P2 einen Multiplizierer des ersten Produkts
P1 mit den Faktoren ein, die das zweite
Produkt P2 umfassen. Auch schließt ein Bestimmen
und Berechnen eines zweiten Produkts P2,
wie hierin verwendet, ein Bestimmen oder Berechnen der Faktoren
des zweiten Produkts P2 ein.
-
4 veranschaulicht
die Schritte, die bei einem Entschlüsseln einer verschlüsselten
Nachricht unter Verwendung des privaten Schlüssels KPRIV des
Empfängers
eingeschlossen sind, der geheim bleiben soll. Das Sicherheitsmodul 20 bestimmt
den privaten Schlüssel
KPRIV in einem Schritt 400. Um
den externen Beschleuniger 100 zu verwenden, ohne den privaten
Schlüssel
KPRIV preiszugeben, wird der private Schlüssel KPRIV durch ein Ändern ausgewählter Bits
des ursprünglichen
privaten Schlüssels
KPRIV modifiziert, um einen modifizierten
privaten Schlüssel
KPRIVM zu erhalten (Schritt 402).
Ein Indikator INDIC wird dann gebildet, um die Änderungen, die an dem privaten
Schlüssel
KPRIV ausgeführt sind, anzuzeigen (Schritt 402).
Der Indikator INDIC umfasst die gleiche Zahl von Bits wie der private
Schlüssel
KPRIV.
-
Zahlreiche
Verfahren können
verwendet werden, um den modifizierten privaten Schlüssel KPRIVM und den Indikator INDIC zu berechnen.
Im Wege eines Beispiels weist ein privater Schlüssel KPRIV der
eine Länge von
2048 Bits aufweist, einen Mittelwert von 1024 Bitpositionen mit
einem Wert von "1" auf. Zwanzig dieser Bitpositionen
können
von "1" auf "0" geändert
werden, um KPRIVM zu bilden. Der Indikator
INDIC umfasst in diesem Fall eine Bitkette einer gleichen Länge wie
der private Schlüssel
KPRIV der eine "1" in
jeder Bitposition aufweist, die den geänderten Bits in dem privaten
Schlüssel
KPRIV entspricht, und Nullen anderenfalls.
-
Andere
Verfahren können
auch verwendet werden, um den KPRIV und
den Indikator INDIC zu verwenden, einschließlich ein Ersetzen mancher
Einsen durch Nullen oder mancher Nullen durch Einsen. Ein Zugang besteht
darin, zuerst einen Indikator INDIC durch ein zufallsmäßiges Auswählen eines
kleinen Prozentsatzes von Bits in INDIC aufzubauen, um binäre Einsen
zu enthalten, und dann INDIC von dem privaten Schlüssel KPRIV mit Übertrag-Ausbreitung
zu subtrahieren, um den modifizierten privaten Schlüssel KPRIVM zu erhalten. Auf ähnliche Weise können Bits
KPRIV zufallsmäßig ausgewählt und geändert werden, entweder von "1" auf "0" oder von "0" auf "1",
um einen modifizierten privaten Schlüssel KPRIVM mit
einem Wert geringer als KPRIV zu erhalten. Der
modifizierte private Schlüssel
KPRIVM kann dann von dem ursprünglichen
privaten Schlüssel
KPRIV subtrahiert werden, ohne den Indikator
INDIC zu erhalten. Im Allgemeinen werden der modifizierte private
Schlüssel KPRIVM und der Indikator INDIC derart gewählt, dass
die Summe des modifizierten privaten Schlüssels KPRIVM und
der Indikator INDIC dem Wert des privaten Schlüssels KPRIV gleicht.
-
Zur
Entschlüsselung
wird die verschlüsselte
Bitkette, die mit X bezeichnet ist, dem Beschleuniger
100 zusammen
mit dem modifizierten privaten Schlüssel K
PRIVM und
dem Modulo N zugeführt
(Block
404). Der Beschleuniger
100 berechnet das
erste Produkt P
1 als eine Funktion des modifizierten
privaten Schlüssels
K
PRIVM und der Bitkette X unter Verwendung
des Algorithmus der sukzessiven Quadrate und des Modulo-Reduktionsalgorithmus.
Der multiplikative Akkumulator
104 wird initialisiert (Block
406),
indem der Wert Z des multiplikativen Akkumulators
104 auf
einen Startwert von "1" gesetzt wird. Das
erste Produkt P
1 wird dann durch eine Modulo-Potenzierung
von X unter Verwendung des modifizierten privaten Schlüssels K
PRIVM berechnet (Block
408). Für jedes
Bit B
n des modifizierten privaten Schlüssels K
PRIVM wird der Wert Z mit einem entsprechenden sukzessiven
Quadrat X
n der verschlüsselten Bitkette X in Abhängigkeit
von dem Wert des gegenwärtigen
Bits B
n in K
PRIVM multipliziert.
Wenn das Bit B
n einen Wert "1" aufweist, setzt der Akkumulator
104 Inkremente
Z gemäß der Gleichung
wobei X gleich dem Wert der
zugeführten
Bitkette ist und n die Bitposition
ist, ist das sukzessive Quadrat
von X, das dem Bit B
n von K
PRIVM entspricht.
Wenn B
n "0" ist, bleibt der
akkumulierte Z der gleiche. Der Akkumulationsprozess setzt sich
für jedes
Bit B
n innerhalb des modifizierten privaten Schlüssels K
PRIVM fort. Nachdem das letzte Bit B
L in K
PRIVM verarbeitet
ist, wird der Endwert von Z dann zu dem Sicherheitsmodul als das
erste Produkt P
1 gesendet (Block
410).
-
Jedes
sukzessive Quadrat Xn, z.B. X1,
X2, ... Xn wird
von dem externen Beschleuniger 100 zu dem Sicherheitsmodul 20 zurückgekoppelt.
Der gegen Eingriffe gesicherte Chip 20 sichert die sukzessiven
Quadrate Xn, die dem "1er" in
dem Indikator INDIC entsprechen und verwirft den Rest auf eine Weise,
die der Welt außerhalb verheimlicht, welche der sukzessiven Quadrate
Xn gesichert wurden und welche verworfen
wurden. Die gesicherten sukzessiven Quadrate Xn werden
dann zusammen durch den Sicherheitsprozessor 30 multipliziert,
um ein zweites Produkt P2 zu erhalten (Block 412).
-
Das
erste Produkt P1, das von dem externen Beschleuniger 100 ausgegeben
wird, wird mit dem zweiten Produkt P2 multipliziert,
um ein Endprodukt PF zu erhalten (Block 414).
Dieser Endschritt wird von dem Sicherheitsprozessor 30 durchgeführt. Auf äquivalente
Weise kann das erste Produkt P1 mit jedem
der gesicherten sukzessiven Quadrate Xn unabhängig multipliziert
werden, um das Endprodukt PF zu erhalten.
Somit muss das zweite Produkt P2 nicht getrennt
berechnet werden.
-
Eine
Partei, die die externen Berechnungen beobachtet, kann nicht wissen,
welche der "0er" in dem modifizierten
privaten Schlüssel
KPRIVM "1er" gewesen sein sollten.
Die Zahl unterschiedlicher Weisen, auf welche zwanzig "1er" in "0er" geändert worden
sein können,
ist in der Größenordnung
von 1042, und kann deswegen auf sinnvolle
Weise durch Versuch und Irrtum nicht bestimmt werden. Trotzdem kann
der externe Beschleuniger 100 98% oder mehr der erforderlichen Multiplikationen
durchführen.
-
5 veranschaulicht
ein Beispiel einer kryptografischen Berechnung (ohne Modulo-Reduktion)
gemäß der vorliegenden
Erfindung unter Verwendung eines Fünf-Bit KPRIV und
einer Fünf-Bit-Bitkette
X. Wie in dem Beispiel der 5 veranschaulicht,
ist KPRIV = 10111 = 23. Der modifizierte
private Schlüssel
KPRIVM wird durch ein Ändern von Bits an Positionen
2 und 3 von "1" auf "0" erhalten, wobei die Bitposition 1 dem
niedrigstwertigen Bit entspricht. Somit ist der modifizierte private
Schlüssel
KPRIVM = 10001 = 17. Der Indikator InDIC weist
einen Wert von "1" an der Bitposition
2 und 3 und Nullen anderenfalls auf. Somit ist INDIC = 6.
-
Das
niedrigstwertige Bit von K
PRIVM weist einen
Wert von "1" auf. Deswegen multipliziert
der multiplikative Akkumulator
104 den Startwert von Z
(der 1 ist) mit X. Der Endwert von Z nach der Anfangsiteration ist deswegen
X. Das zweite Bit in K
PRIVM ist 0. Deswegen
wird der akkumulierte Wert Z während
der zweiten Iteration nicht multipliziert. Auf ähnliche Weise enthalten die
Bits 3 und 4 von K
PRIVM Nullen, so dass
der Wert von Z während
jeder dieser Iterationen konstant bleibt. Das Bit bei der Position
5 ist eine "1", so dass der akkumulierte
Wert Z gemäß der Formel
hochgesetzt wird, um einen
Endwert von 5,8 × 10
23 zu erhalten. Da dies das letzte Bit ist,
sendet der Beschleuniger
100 Z zu dem Sicherheitsmodul
20 als
das erste Produkt P
1.
-
Das
Sicherheitsmodul 20 bestimmt die von dem Quadratzahlengenerator 102 rückgekoppelte
sukzessiven Quadrate Xn, die jeder Bitposition
innerhalb des Indikators INDIC entsprechen, die einen Wert von "1" enthält. In diesem Beispiel werden
die sukzessiven Quadrate X2 = X2 und
X3 = X4 durch INDIC
ausgewählt.
Das zweite Produkt P2 ist deswegen gleich
X2·X3, was gleich 2,44 × 108 ist.
Ein Endprodukt PF wird dann durch ein Multiplizieren
des ersten Produkts P1 mit dem zweiten Produkt
P2 bestimmt, derart, dass der Endwert PF gleich 1,42 × 1032 ist.
-
Eine
zweite Ausführungsform
kann verwendet werden, um einen geheimen Volltext mit entweder einem öffentlichen
oder einem privaten Schlüssel
zu verschlüsseln,
ohne den geheimen Volltext aufzudecken. Um den Volltext unter Verwendung
des RSA-Algorithmus zu verschlüsseln,
muss der geheime Volltext auf eine Potenz gehoben werden, der durch
den öffentlichen
oder den privaten Schlüssel
dargestellt wird. Gemäß der vorliegenden
Erfindung wird dies ohne ein Aufdecken des geheimen Volltexts gegenüber einem
unsicheren Prozessor ausgeführt,
um diese Potenzierung durchzuführen.
In der zweiten Ausführungsform
wird ein erstes Produkt P1 von dem Beschleuniger 100 berechnet,
und ein zweites Produkt P2 wird innerhalb
des Sicherheitsmoduls 20 berechnet. Das Sicherheitsmodul 20 kombiniert
dann das erste Produkt P1 und das zweite
Produkt P2, um ein Endprodukt PF zu
erhalten. Das erste Produkt P1 in der zweiten
Ausführungsform
ist eine Funktion eines dritten Produkts P3,
das innerhalb des Sicherheitsmoduls 20 berechnet wird,
und eines vierten Produkt P4. Das dritte
Produkt wird verwendet, um den Akkumulator 104 zu initialisieren.
-
Gemäß einer
zweiten Ausführungsform
wird der private Schlüssel
KPRIV zunächst in zwei Partialwerte geteilt,
die hierin als der kurze Teil KSHORT und
der lange Teil KLONG bezeichnet werden.
Der kurze Teil KSHORT, kann beispielsweise
die niedrigstwertigen Bits des privaten Schlüssels KPRIV umfassen.
Der lange Teil KLONG ist in diesem Fall
das Segment, das die höchstwertigen
Bits in KPRIV umfasst. Im Wege eines Beispiels
können, wenn
der private Schlüssel
KPRIV 2,048 Bits enthält, die 16 niedrigstwertigen
Bits den kurzen Teil KSHORT umfassen, und
die 2,032 höchstwertigen
Bits können
den langen Teil KLONG umfassen. Der lange
Teil KLONG wird dann, wie oben beschrieben,
modifiziert, um den modifizierten langen Teil KLONGM und
den Indikator INDIC zu erhalten. Somit wird der private Schlüssel KPRIV effektiv in drei Partialwerte geteilt:
KSHORT, KLONGM und
INDIC, deren Summe gleich KPRIV ist.
-
Der
geheime Volltext X wird anfänglich
unter Verwendung des kurzen Teils KSHORT innerhalb
des Sicherheitsmoduls 20 verschlüsselt, und das Ergebnis ist
das dritte Produkt P3. Das dritte Produkt
P3 wird verwendet, um den multiplikativen
Akkumulator 104 zu initialisieren und wird hierin als der
Startwert bezeichnet. Dies wird durch Modulo-Potenzierung des geheimen
Volltextes unter Verwendung des kurzen Schlüssels KSHORT des
privaten Schlüssels
KPRIV ausgeführt. Die Modulo-Potenzierung kann
unter Verwendung des Algorithmus der sukzessiven Quadrate und des
Modulo-Reduktionsalgorithmus durchgeführt werden, wie zuvor beschrieben.
Dieser Prozess erfordert es notwendigerweise, dass der geheime Prozessor 30 die
ersten 16 sukzessiven Quadrate von X berechnet. Das letzte der berechneten
16 sukzessiven Quadrate, das mit X16 bezeichnet
ist, wäre
der Volltext, gehoben in die Potenz von 32,768, reduziert Modulo
den Verschlüsselungsmodulo
N.
-
Der
Wert X16 wird zu dem Beschleuniger 100 freigegeben,
der X16 verwendet, um den Quadratzahlengenerator 102 zu
initialisieren. Der Quadratzahlengenerator 102 berechnet
die letzten 2,032 sukzessiven Quadrate von X durch ein sukzessives
Quadrieren von X16. Der multiplikative Akkumulator 104,
der auf den Wert des dritten Produkts P3 initialisiert
ist, berechnet das erste Produkt P1 als
eine Funktion des dritten Produkts P3 und
des modifizierten langen Teils KLONGM des
privaten Schlüssels
KPRIV unter Verwendung des Algorithmus der sukzessiven
Quadrate und des Modulo-Reduktionsalgorithmus,
wie zuvor beschrieben. Somit ist es gemäß der vorliegenden Erfindung
nicht notwendig, den geheimen Volltext X gegenüber der Welt außerhalb
freizugeben, statt dessen ist es nur notwendig, X16 freizugeben.
Versuche, X auf der Grundlage von X16 zu
berechnen, würden
eine 1/32.768-te Wurzeloperation erfordern, was in der Modulo-Arithmetik praktisch
nicht möglich
ist. Deswegen offenbart die Offenbarung von X16 und
P3 der Welt außerhalb X nicht.
-
6 veranschaulicht
das Verfahren zum Verschlüsseln
gemäß der zweiten
Ausführungsform
der vorliegenden Erfindung. Der Wert des privaten Schlüssels KPRIV wird bestimmt und innerhalb des Sicherheitsmoduls 20 gespeichert
(Block 600). Zwei zusätzliche
Werte, KSHORT und KLONG,
werden bestimmt (Block 602), indem der private Schlüssel KPRIV in zwei Teile aufgeteilt wird. KSHORT umfasst die 16 niedrigstwertigen Bits,
und KLONG umfasst die 2.032 höchstwertigen
Bits. Der Wert KLONG wird dann auf die zuvor
beschriebene Weise modifiziert, um KLONGM und
einen Indikator INDIC zu erhalten (Block 604).
-
Der
Wert KSHORT wird innerhalb des Sicherheitsmoduls 20 gehalten
und wird verwendet, um den geheimen Volltext, der mit X bezeichnet
ist, zu potenzieren, um das dritte Produkt P3 zu
erhalten. Der Wert X wird auf die Potenz KSHORT innerhalb
des Sicherheitsmoduls 20 durch den Prozessor 30 unter
Verwendung des Algorithmus der sukzessiven Quadrate und des Modulo-Reduktionsalgorithmus
gehoben, um das dritte Produkt P3 und den
Wert X16 = X6536 zu
erhalten (Block 606). Das dritte Produkt ist X, gehoben
auf die Potenz von KSHORT und verringert
Modulo N (z.B. P1=XKSHORTmod
N). Die Werte KLONGM, P3 und
X16 werden in dem Beschleuniger 100 ausgegeben
(Block 610). Der multiplikative Akkumulator 104 wird
auf den Wert P3 initialisiert (Block 612). Von
diesem Punkt setzt sich der Prozess, wie oben unter Bezugnahme auf 4 beschrieben,
fort. Der Quadratzahlengenerator 102 berechnet die sukzessiven
Quadrate Xn von X, beginnend mit X17 und andauernd bis X2048.
Jedes der sukzessiven Quadrate Xn wird durch
Quadrieren des vorherigen Werts berechnet. Somit wird X17 durch
ein Quadrieren von X16 berechnet, X18 wird durch ein Quadrieren von X17 berechnet, usw., bis X2048 erreicht
ist. Jedes der sukzessiven Quadrate, z.B. X17,
X18, Xn wird in
das Sicherheitsmodul 20 rückgekoppelt, das jene sukzessiven
Quadrate Xn sichert, die Einsen in dem Indikator
INDIC entsprechen, um das zweite Produkt P2 zu
berechnen. Die sukzessiven Quadrate Xn werden
auch in dem Akkumulator 104 eingegeben, der den akkumulierten
Wert Z mit dem sukzessiven Quadrat Xn multipliziert,
wenn ein entsprechendes Bit Bn in KLONGM gleich 1 ist, wie zuvor beschrieben.
Der multiplikative Akkumulator 104 multipliziert effektiv
das dritte Produkt P3 mit einem vierten
Produkt P4, das gleich der Bitkette X gehoben
in die Potenz von KLONGM ist. Der Endwert
des Akkumulators 104, der als das erste Produkt P1 bezeichnet wird, wird zu dem Sicherheitsmodul 20 zurückgegeben.
Das Sicherheitsmodul 20 berechnet ein zweites Produkt P2, das die Bitkette X, gehoben auf die Potenz
des Indikators INDIC ist. Das Endprodukt PF wird
dann durch ein Multiplizieren des ersten Produkts P1 mit
dem zweiten Produkt P2 erhalten.
-
Es
sei darauf hingewiesen, dass die Bitkette K
LONGM und
K
SHORT äquivalent
zu dem modifizierten Chiffre-Schlüssel in der ersten Ausführungsform
ist. Das heißt,
K
LONGM + K
SHORT K
PRIVM in der ersten Ausführungsform. Somit könnte das
erste Produkt P
1 in der zweiten Ausführungsform
auch als eine Funktion von K
LONGM und K
SHORT ausgedrückt werden. Spezifischer bezieht
sich das erste Produkt P
1 auf K
LONGM und
-
Das
obige Protokoll ist sicher für
eine Verschlüsselung
des geheimen Volltextes unter Verwendung des privaten Schlüssels KPRIV, wie auch für die übliche Entschlüsselung
eines verschlüsselten
Textes zur Verwendung des privaten Schlüssels KPRIV.
Wenn das Kommunikationsterminal 10 sowohl für die Verschlüsselung
als auch für
die Entschlüsselung
verwendet wird, sollten die gleichen Modifikationen des privaten
Schlüssels KPRIVM für
beide Betriebsschritte verwendet werden.
-
7 veranschaulicht
ein Beispiel einer kryptografischen Berechnung ohne einer Moduloreduktion gemäß der zweiten
Ausführungsform
unter Verwendung eines 5-Bit privaten Schlüssels KPRIV und
eines 5-Bits X. Wie in dem Beispiel der 7 veranschaulicht
ist, ist KPRIV gleich 10111 = 23. KLONGM ist gleich 10000 = 16. KSHORT ist
gleich 00011 = 3. Der Indikator INDIC ist gleich 00100 = 4.
-
Der
Startwert des Akkumulators 104 wird von dem Sicherheitsmodul 20 durch
ein Erheben des Werts der Bitkette X in die Potenz von KSHORT berechnet, was gleich 15.625 ist, was
das dritte Produkt P3 ist. In diesem Beispiel
umfasst KSHORT die ersten beiden Bits von
KPRIV, wobei die übrigen Bits auf 0 gesetzt sind.
Somit berechnet das Sicherheitsmodul 20 auch die ersten
beiden aufeinanderfolgenden Quadrate von X, d.h. X1 =
X und X2 = X2. Das
letzte sukzessive Quadrat X2 wird verwendet,
um den Quadratzahlengenerator 102 zu initialisieren. Der
Beschleuniger 100 berechnet das erste Produkt P1 als eine Funktion des dritten Produkts
P3 und des modifizierten langen Teils KLONGM des privaten Schlüssels KPRIV.
In diesem Beispiel sind die ersten vier Bits von KLONGM gleich
0. Deswegen multiplizieren die ersten vier sukzessiven Quadrate
von X nicht den akkumulierten Wert X.
-
Das
Endbit von KLONGM, das X16 entspricht,
weist einen Wert von 1 auf. Deswegen wird der akkumulierte Wert
Z mit 2,32 × 1022, dem vierten Produkt P4 multipliziert,
und um zu dem ersten Produkt P1 gleich 3,64 × 1026 zu gelangen.
-
Das
erste Produkt P1 wird in das Sicherheitsmodul 20 eingegeben.
Das Sicherheitsmodul 20 berechnet das zweite Produkt P2, das in diesem Beispiel gleich 390.625
ist. Das erste Produkt P1 und das zweite
Produkt P2 werden multipliziert, um das
Endprodukt PF zu erhalten, welches gleich
1,42 × 1032 ist.
-
Die
zweite Ausführungsform
teilt den privaten Schlüssel
KPRIV effektiv in drei Teile: einen kurzen
oder niedrigstwertigen Teil KSHORT, einen
modifizierten höchstwertigen
Teil KLONGM und einen Indikator INDIC. Eine Potenzierung
unter Verwendung des niedrigstwertigen Teils KSHORT findet
innerhalb des Sicherheitsmoduls 20 statt, während eine
Potenzierung mit dem modifizierten höchstwertigen Teil KLONGM, das den Hauptteil der Multiplikationen
umfasst, von dem Beschleuniger 100 durchgeführt wird.
Eine Fachperson wird erkennen, dass andere Arten vorhanden sind,
um den geheimen Schlüssel
zu partitionieren, um die gleichen Ziele zu erreichen.
-
Als
ein Beispiel wird der oben beschriebene Prozess auf einen beispielhaften
geheimen Schlüssel
wie folgt angewandt:
| KPRIV | 11011001011101 |
| KLONG | 11011001010000 |
| KSHORT | 00000000001101 |
| KLONGM | 11000000010000 |
| INDIC | 00011001000000 |
-
In
diesem Fall kann der PRIVATE Schlüssel K
PRIV ausgedrückt werden
als 16 (K
LONGM ODER INDIC) + K
SHORT.
Jedoch kann eine alternative Teilung des privaten Schlüssels K
PRIV wie folgt ausgeführt werden:
| KPRIV | 11011001011101 |
| KLONG | 11011001010000 |
| KSHORT | 00000000001101 |
| KLONGM | 11010110010000 |
| INDIC | 00000011000000 |
-
In
diesem Fall kann der private Schlüssel KPRIV ausgedrückt werden
als 16 (KLONGM + INDIC) + KSHORT.
-
Es
sei darauf hingewiesen, dass die letztere Formel die erstere umfasst,
aber unterschiedliche Arten zulässt,
KLONG zu modifizieren. Das heißt, dass
in dem ersten Beispiel der einzig zugelassenen Bit KLONG von einer
Binären "1" zu einer Binären "0" ist.
In dem zweiten Beispiel kann eine "0" in
KLONG durch eine "1" ersetzt werden,
indem eine Binäre "1" von dieser Position mit einer Vorwärts-Untertragsausbreitung
subtrahiert wird. In gleicher Weise kann eine "1" in
KLONG in eine "0" durch
eine Addition einer "1" zu jener Position
mit einer Vorwärts-Übertragungsausbreitung
konvertiert werden. Was immer an KLONG ausgeführt wird
(eine Bitposition mit einer Übertragungs-/Untertragsausbreitung)
ausgeführt
wird, wird das Gegenteil an dem Indikator INDIC ausgeführt, so
dass ihre Summe aus KLONGM und INDIC kontinuierlich
gleich dem unmodifizierten langen Teil KLONG ist.
Somit können "1er" in "0en" konvertiert werden,
indem sie entweder in KLONG heruntergesetzt
oder die entsprechende Position in INDIC ohne eine Übertragungs-/Untertragsausbreitung
hochgesetzt wird, oder weiter durch ein Hochsetzen derselben mit
einer Übertrags-Ausbreitung
in KLONG, während die entsprechende Position
in INDIC mit einer Untertrags-Ausbreitung herabgesetzt wird. Umgekehrt
können "0en" in KLONG in "1er" konvertiert werden,
indem entweder diese Position in KLONG hochgesetzt
wird, während
(mit einer Untertrags-Ausbreitung) die entsprechende Bitposition
in INDIC herabgesetzt wird, oder weiter, indem (mit einer Übertrags-Ausbreitung)
diese Position in KLONG herabgesetzt wird,
während
die entsprechende Bitposition in INDIC hochgesetzt wird.
-
Es
kann unnötig
sein, den unsicheren Prozessor 100 für Betriebsschritte zu verwenden,
die den öffentlichen
Schlüssel
KPUB einschließen, da öffentliche Schlüssel im
Allgemeinen viel kürzer
(weniger als 16 Bits) als private Schlüssel sind. Jedoch kann die
vorliegende Erfindung auch verwendet werden, um einen geheimen Volltext
mit dem öffentlichen
Schlüssel
KPUB durch Durchführen einer Potenzierung des
geheimen Volltexts mit einem niedrigstwerten Abschnitt des öffentlichen
Schlüssels
KPUB und ein Vervollständigen der Potenzierung mit
dem höchstwertigen
Teil des öffentlichen
Schlüssels
KPUB zu verschlüsseln. Das Ergebnis, das von dem
unsicheren Prozessor 100 zurückgegeben wird, kann dann mit
dem Wert kombiniert werden, der innerhalb des Sicherheitsmoduls 20 berechnet
ist. Wenn ein geheimer Text mit einem öffentlichen Schlüssel KPUB verschlüsselt wird, ist es nicht notwendig,
die Bits des öffentlichen
Schlüssels
KPUB, wie oben beschrieben, zu modifizieren,
da der öffentliche
Schlüssel
KPUB bereits öffentlich ist. Somit bringt
eine dritte Ausführungsform der
Erfindung ein Verschlüsseln
eines Volltexts durch ein Teilen des Verschlüsselungsschlüssels in
zwei Teile mit sich, indem ein erster Teil des Verschlüsselungsbetriebs
mit einem sicheren Prozessor durchgeführt wird, ein zweiter Teil
des Verschlüsselungsbetriebs
in einem unsicheren Prozessor durchgeführt wird und die Ergebnisse
innerhalb des sicheren Prozessors kombiniert werden.
-
Die
vorliegende Erfindung kann auf andere spezifische Arten als jene
ihrer offenbarten ausgeführt
werden, ohne von den wesentlichen Eigenschaften der Erfindung abzuweichen.
Die vorliegenden Ausführungsformen
sind deswegen in jeder Hinsicht als veranschaulichend und nicht
einschränkend
anzusehen, und sämtliche Änderungen,
die innerhalb des Bedeutungs- und Äquivalenzbereichs der angehängten Ansprüche liegen, sind
als hierin eingeschlossen anzusehen.