[go: up one dir, main page]

DE60109805T2 - Verfahren und system zur benützung eines ungesicherten krypto-beschleunigers - Google Patents

Verfahren und system zur benützung eines ungesicherten krypto-beschleunigers Download PDF

Info

Publication number
DE60109805T2
DE60109805T2 DE60109805T DE60109805T DE60109805T2 DE 60109805 T2 DE60109805 T2 DE 60109805T2 DE 60109805 T DE60109805 T DE 60109805T DE 60109805 T DE60109805 T DE 60109805T DE 60109805 T2 DE60109805 T2 DE 60109805T2
Authority
DE
Germany
Prior art keywords
product
cipher key
bit string
modified
function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE60109805T
Other languages
English (en)
Other versions
DE60109805D1 (de
Inventor
Paul Dent
Michael Kornby
Ben Smeets
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ericsson Inc
Original Assignee
Ericsson Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ericsson Inc filed Critical Ericsson Inc
Application granted granted Critical
Publication of DE60109805D1 publication Critical patent/DE60109805D1/de
Publication of DE60109805T2 publication Critical patent/DE60109805T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/723Modular exponentiation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7233Masking, e.g. (A**e)+r mod n
    • G06F2207/7242Exponent masking, i.e. key masking, e.g. A**(e+r) mod n; (k+r).P
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)
  • Spinning Or Twisting Of Yarns (AREA)
  • Automatic Cycles, And Cycles In General (AREA)
  • Breeding Of Plants And Reproduction By Means Of Culturing (AREA)
  • Organic Low-Molecular-Weight Compounds And Preparation Thereof (AREA)
  • Preliminary Treatment Of Fibers (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Calculators And Similar Devices (AREA)

Description

  • 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 X1 = X1, X2 = X2,
    Figure 00110001
    bezeichnet. In dem Algorithmus der sukzessiven Quadrate entspricht das niedrigstwertige Bit in der Potenz Y, bezeichnet als B1, der ersten Potenz von X, das zweite Bit B2 entspricht der zweiten Potenz von X, das dritte Bit B3 entspricht der vierten Potenz von X, usw., bis das letzte Bit BL erreicht ist. Jedes sukzessive Quadrat X1, X2, X3, ... Xn wird verwendet, um den akkumulierten Wert Z, der von dem Wert des entsprechenden Bits Bn abhängt, in die Potenz Y zu multiplizieren. Insbesondere wird der akkumulierte Wert Z mit dem sukzessiven Quadrat multipliziert, wenn das entsprechende Bit Bn 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 22.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 KPRIVM und dem Modulo N zugeführt (Block 404). Der Beschleuniger 100 berechnet das erste Produkt P1 als eine Funktion des modifizierten privaten Schlüssels KPRIVM 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 P1 wird dann durch eine Modulo-Potenzierung von X unter Verwendung des modifizierten privaten Schlüssels KPRIVM berechnet (Block 408). Für jedes Bit Bn des modifizierten privaten Schlüssels KPRIVM wird der Wert Z mit einem entsprechenden sukzessiven Quadrat Xn der verschlüsselten Bitkette X in Abhängigkeit von dem Wert des gegenwärtigen Bits Bn in KPRIVM multipliziert. Wenn das Bit Bn einen Wert "1" aufweist, setzt der Akkumulator 104 Inkremente Z gemäß der Gleichung
    Figure 00190001
    wobei X gleich dem Wert der zugeführten Bitkette ist und n die Bitposition
    Figure 00190002
    ist, ist das sukzessive Quadrat von X, das dem Bit Bn von KPRIVM entspricht. Wenn Bn "0" ist, bleibt der akkumulierte Z der gleiche. Der Akkumulationsprozess setzt sich für jedes Bit Bn innerhalb des modifizierten privaten Schlüssels KPRIVM fort. Nachdem das letzte Bit BL in KPRIVM verarbeitet ist, wird der Endwert von Z dann zu dem Sicherheitsmodul als das erste Produkt P1 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 KPRIVM 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 KPRIVM 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 KPRIVM 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
    Figure 00200001
    hochgesetzt wird, um einen Endwert von 5,8 × 1023 zu erhalten. Da dies das letzte Bit ist, sendet der Beschleuniger 100 Z zu dem Sicherheitsmodul 20 als das erste Produkt P1.
  • 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 KLONGM und KSHORT äquivalent zu dem modifizierten Chiffre-Schlüssel in der ersten Ausführungsform ist. Das heißt, KLONGM + KSHORT KPRIVM in der ersten Ausführungsform. Somit könnte das erste Produkt P1 in der zweiten Ausführungsform auch als eine Funktion von KLONGM und KSHORT ausgedrückt werden. Spezifischer bezieht sich das erste Produkt P1 auf KLONGM und
    Figure 00250001
  • 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 KPRIV ausgedrückt werden als 16 (KLONGM ODER INDIC) + KSHORT. Jedoch kann eine alternative Teilung des privaten Schlüssels KPRIV 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.

Claims (20)

  1. Verfahren zum Durchführen kryptografischer Berechnungen an einer Bitkette (X) unter Verwendung eines geheimen Chiffre-Schlüssels (KPRIV), dadurch gekennzeichnet, dass das Verfahren umfasst: Modifizieren (402) des Chiffre-Schlüssels durch ein Ändern ausgewählter Bits des Chiffre-Schlüssels, um einen modifizierten Chiffre-Schlüssel (KPRIVM) zu erhalten; Erzeugen (402) eines Indikators (INDIC), der dem modifizierten Chiffre-Schlüssel entspricht, wobei der Indikator eine Mehrzahl von Indikatorbits aufweist, die die Änderungen, die an dem Chiffre-Schlüssel ausgeführt sind, anzeigen; Berechnen (408) eines ersten Produkts (P1) als eine Funktion der Bitkette (X) und des modifizierten Chiffre-Schlüssels in einem unsicheren Prozessor (100); Berechnen (412) eines zweiten Produkts (P2) als eine Funktion der Bitkette (X) und des Indikators (INDIC) in einem sicheren Prozessor (30); und Berechnen eines Endprodukts (PF) als eine Funktion der ersten und zweiten Produkte in dem sicheren Prozessor (30), um ein kryptografisches Ergebnis an der Bitkette (X) bereit zu stellen.
  2. Verfahren nach Anspruch 1, wobei ein Modifizieren des Chiffre-Schlüssels (KPRIV), um einen modifizierten Chiffre-Schlüssel zu enthalten, ein Ändern zufällig ausgewählter Bits des Chiffre-Schlüssels umfasst, um den modifizierten Chiffre-Schlüssel (KPRIVM) zu erhalten.
  3. Verfahren nach Anspruch 2, wobei ein Erzeugen eines Indikators (INDIC), der dem modifizierten Chiffre-Schlüssel entspricht, ein Berechnen des additiven Komplements des modifizierten Chiffre-Schlüssels (KPRIVM) umfasst, das, wenn es dem modifizierten Chiffre-Schlüssel hinzugefügt wird, den Chiffre-Schlüssel (KPRIV) ergibt.
  4. Verfahren nach Anspruch 1, wobei ein Berechnen des ersten Produkts (P1) als eine Funktion der Bitkette (X) und des modifizierten Chiffre-Schlüssels (KPRIVM) in dem unsicheren Prozessor (100) ein Durchführen einer Modulo-Potenzierung der Bitkette unter Verwendung des modifizierten Chiffre-Schlüssels als ein Exponent umfasst.
  5. Verfahren nach Anspruch 1, wobei ein Berechnen des ersten Produkts (P1) als eine Funktion der Bitkette (X) und des modifizierten Chiffre-Schlüssels (KPRIVM) durch den unsicheren Prozessor (100) ein Berechnen des ersten Produkts als eine Funktion eines dritten Produkts (P3), das von dem sicheren Prozessor (30) berechnet ist, und eines vierten Produkts (P4) umfasst, wobei das dritte Produkt eine Funktion der Bitkette und eines kurzen Teils (KSHORT) des Chiffre-Schlüssels ist, und wobei das vierte Produkt eine Funktion der Bitkette (X) und eines modifizierten langen Teils (KLONGM) des Chiffre-Schlüssels ist.
  6. Verfahren zum Durchführen von Berechnungen unter Verwendung einer geheimen Bitkette (X) und eines Chiffre-Schlüssels (KPRIV) unter Verwendung eines unsicheren Prozessors (100), dadurch gekennzeichnet, dass das Verfahren umfasst: Teilen (602) des Chiffre-Schlüssels in erste und zweite Teile (KSHORT, KLONG); Berechnen, in einem sicheren Prozessor (30), eines dritten Produkts (P3) als eine Funktion der Bitkette (X) und des ersten Teils (KSHORT) des Chiffre-Schlüssels; Ausgeben des dritten Produkts (P3) zu dem unsicheren Prozessor (100); Modifizieren des zweiten Teils (KLONG) des Chiffre-Schlüssels mit dem sicheren Prozessor (30) durch ein Ändern ausgewählter Bits des zweiten Teils des Chiffre-Schlüssels, um einen modifizierten zweiten Teil (KLONGM) des Chiffre-Schlüssels zu erhalten; Erzeugen (604) eines Indikators (INDIC), der dem modifizierten zweiten Teil des Chiffre-Schlüssels entspricht, wobei der Indikator eine Mehrzahl von Indikatorbits aufweist, die die Änderungen anzeigen, die an dem zweiten Teil (KLONG) des Chiffre-Schlüssels ausgeführt sind; Berechnen eines ersten Produkts (P1) mit dem unsicheren Prozessor (100) als eine Funktion des dritten Produkts (P3) und des modifizierten zweiten Teils des Chiffre-Schlüssels; Berechnen eines zweiten Produkts (P2) mit dem sicheren Prozessor (30) als eine Funktion der Bitkette (X) und des Indikators (INDIC); und Berechnen eines Endprodukts (PF) mit dem sicheren Prozessor als eine Funktion des ersten Produkts (P1) und des zweiten Produkts (P2), um ein kryptografisches Ergebnis an der Bitkette (X) bereit zu stellen.
  7. Verfahren nach Anspruch 6, wobei ein Teilen des Chiffre-Schlüssels (KPRIV) in erste und zweite Teile (KSHORT, KLONG) ein Teilen des Chiffre-Schlüssels in einen niedrigstwertigen Teil und einen höchstwertigen Teil umfasst.
  8. Verfahren nach Anspruch 7, wobei ein Berechnen des dritten Produkts (P3) als eine Funktion der Bitkette (X) und des ersten Teils des Chiffre-Schlüssels ein Berechnen des dritten Produkts als eine Funktion der Bitkette und des niedrigstwertigen Teils (KSHORT) des Chiffre-Schlüssels umfasst.
  9. Verfahren nach Anspruch 8, wobei ein Modifizieren des zweiten Teils (KLONG) des Chiffre-Schlüssels mit dem sicheren Prozessor (30), um den modifizierten zweiten Teil (KLONGM) des Chiffre-Schlüssels zu erhalten, ein Modifizieren des höchstwertigen Teils des Chiffre-Schlüssels umfasst.
  10. Verfahren nach Anspruch 9, wobei ein Berechnen des ersten Produkts (P1) mit dem unsicheren Prozessor (100) als eine Funktion des dritten Produkts (P3) und des modifizierten zweiten Teils (KLONGM) des Chiffre-Schlüssels ein Auswählen sukzessiver Rechtecke (Xn) der Bitkette auf der Grundlage des modifizierten zweiten Teils des Chiffre-Schlüssels und ein Multiplizieren des dritten Produkts mit den ausgewählten sukzessiven Rechtecken umfasst.
  11. Verfahren nach Anspruch 9, wobei ein Berechnen des zweiten Produkts (P2) mit dem sicheren Prozessor (30) als eine Funktion der Bitkette (X) und des Indikators (INDIC) ein Auswählen eines oder mehrerer sukzessiver Rechtecke (Xn) der Bitkette auf der Grundlage des Indikators umfasst, wobei das zweite Produkt das Produkt der ausgewählten sukzessiven Rechtecke umfasst.
  12. Berechnungsvorrichtung (10) zum Potenzieren einer Bitkette (X) mit einem geheimen Exponenten (KPRIV), wobei die Berechnungsvorrichtung einen sicheren Prozessor (30) und einen unsicheren Prozessor (100) umfasst, umfassend eine Einrichtung, die sämtliche der Schritte, die in Anspruch 1 definiert sind, ausführt.
  13. Berechnungsvorrichtung nach Anspruch 12, wobei das erste Produkt (P1), das von dem unsicheren Prozessor (100) berechnet ist, die Bitkette (X) angehoben auf die Potenz des ersten Partialwerts (KPRIVM) umfasst.
  14. Berechnungsvorrichtung nach Anspruch 13, wobei das zweite Produkt (P2), das von dem sicheren Prozessor (30) berechnet ist, die Bitkette (X) angehoben auf die Potenz des zweiten Partialwerts (INDIC) umfasst.
  15. Berechnungsvorrichtung nach Anspruch 14, wobei das Endprodukt (PF) das Produkt der ersten und zweiten Produkte (KPRIVM, INDIC) umfasst.
  16. Berechnungsvorrichtung nach Anspruch 12, wobei das erste Produkt (P1), das von dem unsicheren Prozessor (100) berechnet ist, weiter als eine Funktion eines dritten Produkts (P3) berechnet wird.
  17. Berechnungsvorrichtung nach Anspruch 16, wobei das dritte Produkt (P3) von dem sicheren Prozessor (30) als eine Funktion eines dritten Partialwerts (KSHORT) und der Bitkette (X) berechnet wird.
  18. Berechnungsvorrichtung nach Anspruch 17, wobei das dritte Produkt (P3) die Bitkette (X) angehoben auf die Potenz des dritten Partialwerts (KSHORT) umfasst.
  19. Berechnungsvorrichtung nach Anspruch 18, wobei das erste Produkt (P1) das dritte Produkt (P3) multipliziert mit einem vierten Produkt (P4) umfasst.
  20. Berechnungsvorrichtung nach Anspruch 19, wobei das vierte Produkt (P4) die Bitkette (X) angehoben auf die Potenz des ersten Partialwerts (KLONGM) umfasst.
DE60109805T 2000-10-25 2001-09-24 Verfahren und system zur benützung eines ungesicherten krypto-beschleunigers Expired - Fee Related DE60109805T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/695,958 US6769062B1 (en) 2000-10-25 2000-10-25 Method and system of using an insecure crypto-accelerator
PCT/US2001/029855 WO2002035341A2 (en) 2000-10-25 2001-09-24 Method and system of using an insecure crypto-accelerator
US695958 2003-10-30

Publications (2)

Publication Number Publication Date
DE60109805D1 DE60109805D1 (de) 2005-05-04
DE60109805T2 true DE60109805T2 (de) 2006-05-04

Family

ID=24795138

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60109805T Expired - Fee Related DE60109805T2 (de) 2000-10-25 2001-09-24 Verfahren und system zur benützung eines ungesicherten krypto-beschleunigers

Country Status (7)

Country Link
US (1) US6769062B1 (de)
EP (1) EP1330702B1 (de)
JP (1) JP2004512570A (de)
AT (1) ATE292301T1 (de)
AU (1) AU2002211260A1 (de)
DE (1) DE60109805T2 (de)
WO (1) WO2002035341A2 (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10301492A (ja) * 1997-04-23 1998-11-13 Sony Corp 暗号化装置および方法、復号装置および方法、並びに情報処理装置および方法
US20020066039A1 (en) * 2000-11-30 2002-05-30 Dent Paul W. Anti-spoofing password protection
FR2823398B1 (fr) * 2001-04-04 2003-08-15 St Microelectronics Sa Extraction d'une donnee privee pour authentification d'un circuit integre
FR2825873A1 (fr) * 2001-06-11 2002-12-13 St Microelectronics Sa Stockage protege d'une donnee dans un circuit integre
US7194089B2 (en) * 2001-10-24 2007-03-20 International Business Machines Corporation Method for reducing a value modulo a shared secret
US8838950B2 (en) * 2003-06-23 2014-09-16 International Business Machines Corporation Security architecture for system on chip
US8553885B2 (en) * 2005-01-27 2013-10-08 Blackberry Limited Wireless personal area network having authentication and associated methods
US8489728B2 (en) 2005-04-15 2013-07-16 Microsoft Corporation Model-based system monitoring
DE602005010428D1 (de) * 2005-08-04 2008-11-27 Dibcom Verfahren, Vorrichtung und Computerprogramm zur Datenentschlüsselung
JP2009505148A (ja) * 2005-08-19 2009-02-05 エヌエックスピー ビー ヴィ 暗号化演算における反転操作を行うための回路配置及び方法
US8077974B2 (en) 2006-07-28 2011-12-13 Hewlett-Packard Development Company, L.P. Compact stylus-based input technique for indic scripts
KR20080084480A (ko) * 2007-03-16 2008-09-19 삼성전자주식회사 매개 모듈을 이용한 디바이스간의 상호 인증 방법 및 그시스템
CN101911741B (zh) * 2007-12-27 2013-05-22 日本电气株式会社 无线电通信系统、无线电通信装置和密码化方法
US20090177884A1 (en) * 2008-01-04 2009-07-09 Benica Corporation Digital content security system, portable steering device and method of securing digital contents
CN101739400B (zh) * 2008-11-11 2014-08-13 日电(中国)有限公司 生成索引的方法和装置以及检索方法和装置
US8438401B2 (en) * 2009-09-22 2013-05-07 Raytheon BBN Technologies, Corp. Device and method for securely storing data
CN104468096B (zh) 2014-12-01 2018-01-05 公安部第三研究所 基于密钥分散运算实现网络电子身份标识信息保护的方法
EP4040363A1 (de) * 2021-02-05 2022-08-10 Nagravision SA Verfahren und system zur überprüfung eines systems eines ersten elements gruppiert mit n zweiten elementen
US12353570B1 (en) * 2023-06-28 2025-07-08 Synopsys, Inc. Side-channel resilient public key cryptography

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69840782D1 (de) 1998-01-02 2009-06-04 Cryptography Res Inc Leckresistentes kryptographisches Verfahren und Vorrichtung
US6701433B1 (en) * 1998-03-23 2004-03-02 Novell, Inc. Method and apparatus for escrowing properties used for accessing executable modules
US6684330B1 (en) * 1998-10-16 2004-01-27 Tecsec, Inc. Cryptographic information and flow control
US6678825B1 (en) * 2000-03-31 2004-01-13 Intel Corporation Controlling access to multiple isolated memories in an isolated execution environment

Also Published As

Publication number Publication date
US6769062B1 (en) 2004-07-27
AU2002211260A1 (en) 2002-05-06
EP1330702A2 (de) 2003-07-30
WO2002035341A2 (en) 2002-05-02
WO2002035341A3 (en) 2002-09-19
JP2004512570A (ja) 2004-04-22
DE60109805D1 (de) 2005-05-04
EP1330702B1 (de) 2005-03-30
ATE292301T1 (de) 2005-04-15

Similar Documents

Publication Publication Date Title
DE60109805T2 (de) Verfahren und system zur benützung eines ungesicherten krypto-beschleunigers
DE60001630T2 (de) Sichere gegenseitige Netzwerkauthenifizierung und Schlüselaustauschprotokoll
DE60031304T3 (de) Verfahren zur authentifizierung von softwarebenutzern
DE69834431T3 (de) Leckresistentes kryptographisches verfahren und vorrichtung
DE69829967T2 (de) Verfahren und vorrichtung zur schnellen elliptischen verschlüsselung mit unmittelbarer einbettung
DE2843583C2 (de) Verfahren für den zugriffsicheren Nachrichtenverkehr über einen ungesicherten Nachrichtenübertragungskanal
DE69629857T2 (de) Datenkommunikationssystem unter Verwendung öffentlicher Schlüssel
DE69935455T2 (de) Kryptographisches verfahren unter verwendung eines öffentlichen und eines privaten schlüssels
DE69917356T2 (de) Sicherheitstechnik an einem Computernetzwerk
EP2826199B1 (de) Verfahren und system zur gesicherten kommunikation zwischen einem rfid-tag und einem lesegerät
DE112018000215T5 (de) Sichere private Postquanten-Stream-Aggregation
CH660822A5 (de) Zufallsprimzahlen-erzeugungsmittel in einer mit oeffentlichem schluessel arbeitenden daten-verschluesselungsanlage.
CH694601A5 (de) Verfahren zur Verifizierung der Echtheit von ausgetauschten Nachrichten.
CH694603A5 (de) Identifizierungsverfahren.
DE69838258T2 (de) Public-Key-Datenübertragungssysteme
DE102005024725A1 (de) System und Verfahren für Chaotische Digitale Signatur, Verschlüsselung und Authentifizierung
EP1298834A1 (de) Verfahren und Vorrichtung zum Verschlüsseln und Entschlüsseln von Daten
US6993136B2 (en) Cryptographic key exchange method using efficient elliptic curve
DE10248004A1 (de) Verfahren und Vorrichtung zum Verschlüsseln von Daten
WO2009133206A1 (de) Verfahren zur bestimmung einer kette von schlüsseln, verfahren zur übertragung einer teilkette der schlüssel, computersystem und chipkarte
CH711134A2 (de) Schlüsselzustimmungsprotokoll.
DE60026439T2 (de) System und Verfahren zur Übertragung der Befugnis, Nachrichten zu entschüsseln in einem symmetrischen Kodierungsschema
DE60105328T2 (de) Öffentliche Schlüsselverteilung unter Verwendung einer näherungsweise linearen Funktion
DE102020000814A1 (de) Schlüsselgenerierung und PACE mit Sicherung gegen Seitenkanalangriffe
DE69821091T2 (de) Kryptographische vorrichtung mit verschlüsselungs und entschlüsselungssystem und schlüsselhinterlegungssystem

Legal Events

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