-
PRIORITÄTSANSPRUCH
-
Diese Anmeldung beansprucht den Vorteil nach 35 U.S.C. § 119(e) der vorläufigen US-Patentanmeldung mit der Seriennummer 62/511,734, eingereicht am 26. Mai 2017, deren Offenbarung hiermit durch diese Bezugnahme in ihrer Gesamtheit aufgenommen wird.
-
TECHNISCHES GEBIET
-
Die Ausführungsformen der vorliegenden Offenbarung beziehen sich im Allgemeinen auf Systeme und Verfahren zur Verschleierung des Betriebs einer Vorrichtung, insbesondere Zeitsteuerungs- und Stromverbrauchsinformationen.
-
STAND DER TECHNIK
-
Viele Berechnungen werden in der Kryptographie verwendet, einschließlich zur Berechnung von privaten Schlüsseln, Unterschlüsseln und öffentlichen Schlüsseln. Vorrichtungen, die solche Berechnungen durchführen, werden verwendet, um eine sichere und vertrauenswürdige Kommunikation zwischen Vorrichtungen zu erleichtern.
-
Figurenliste
-
Der Zweck und die Vorteile der Ausführungsfonnen der Offenbarung werden einem Durchschnittsfachmann aus der Kurzdarstellung in Verbindung mit den beigefügten Zeichnungen ersichtlich sein:
- 1 veranschaulicht ein sicheres System, das verschiedene Prozesse gemäß Ausführungsformen der Offenbarung implementiert.
- 2 veranschaulicht einen Prozessor, der konfiguriert ist, um verschiedene Prozesse gemäß Ausführungsfonnen der Offenbarung durchzuführen.
- 3 veranschaulicht ein Flussdiagramm eines Verfahrens zur Durchführung eines kryptographischen Prozesses durch das System von 1 gemäß einer Ausführungsform der Offenbarung.
- 4A und 4B veranschaulichen den Leistungsverbrauchsunterschied zwischen zwei kryptographischen Prozessen, die gemäß den Ausführungsformen der Offenbarung ausgeführt werden.
-
ART(EN) DER AUSFÜHRUNG DER ERFINDUNG
-
In der folgenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Teil hiervon bilden und in denen zur Veranschaulichung spezifische Beispiele für Ausführungsformen gezeigt sind, in denen die vorliegende Offenbarung ausgeführt werden kann. Diese Ausführungsformen werden ausreichend detailliert beschrieben, um es einem Durchschnittsfachmann zu ermöglichen, die vorliegende Offenbarung auszuführen. Es können jedoch auch andere Ausführungsformen verwendet werden und Änderungen der Struktur, des Materials und des Prozesses können vorgenommen werden, ohne vom Schutzumfang der Offenbarung abzuweichen. Die hierin dargestellten Veranschaulichungen sollen keine tatsächlichen Ansichten eines bestimmten Verfahrens oder Systems oder einer bestimmten Vorrichtung oder Struktur sein, sondern sind lediglich idealisierte Darstellungen, die zur Beschreibung der Ausführungsformen der vorliegenden Offenbarung verwendet werden. Die hierin dargestellten Zeichnungen sind nicht notwendigerweise maßstabsgetreu. Ähnliche Strukturen oder Komponenten in den verschiedenen Zeichnungen können zur Vereinfachung für den Leser die gleiche oder eine ähnliche Nummerierung beibehalten; die Ähnlichkeit in der Nummerierung bedeutet jedoch nicht, dass die Strukturen oder Komponenten notwendigerweise in Größe, Zusammensetzung, Konfiguration oder einer anderen Eigenschaft identisch sind.
-
Es versteht sich von selbst, dass die Komponenten der Ausführungsformen, wie sie hierin allgemein beschrieben und in den Zeichnungen dargestellt sind, in einer Vielzahl unterschiedlicher Konfigurationen angeordnet und gestaltet werden können. Somit soll die folgende Beschreibung verschiedener Ausführungsformen den Schutzumfang der vorliegenden Offenbarung nicht einschränken, sondern lediglich repräsentativ für verschiedene Ausführungsformen sein. Während die verschiedenen Aspekte der Ausführungsformen in Zeichnungen dargestellt werden können, sind die Zeichnungen nicht notwendigerweise maßstabsgetreu gezeichnet, sofern nicht ausdrücklich angegeben.
-
Darüber hinaus sind die gezeigten und beschriebenen spezifischen Implementierungen nur Beispiele und sollten nicht als der einzige Weg zur Implementierung der vorliegenden Offenbarung ausgelegt werden, sofern hierin nicht anders angegeben. Elemente, Schaltungen und Funktionen können in Blockdiagrammform gezeigt werden, um die vorliegende Offenbarung nicht durch unnötige Einzelheiten undeutlich werden zu lassen. Umgekehrt sind gezeigte und beschriebene spezifische Implementierungen nur beispielhaft und sollten nicht als die einzige Möglichkeit zur Implementierung der vorliegenden Offenbarung ausgelegt werden, sofern hierin nicht anders angegeben. Außerdem sind Blockdefinitionen und die Aufteilung von Logik zwischen verschiedenen Blöcken beispielhaft für eine spezifische Implementierung. Es ist den Durchschnittsfachmann ohne weiteres ersichtlich, dass die vorliegende Offenbarung durch zahlreiche andere Partitionierungslösungen ausgeführt werden kann. Details bezüglich Zeitüberlegungen und dergleichen wurden größtenteils weggelassen, wenn solche Details nicht notwendig sind, um ein vollständiges Verständnis der vorliegenden Offenbarung zu erhalten und diese innerhalb der Fähigkeiten von Durchschnittsfachleuten in dem relevanten Fachgebiet liegen.
-
Durchschnittsfachleute werden verstehen, dass Informationen und Signale unter Verwendung einer Vielzahl verschiedener Technologien und Techniken dargestellt werden können. Zum Beispiel können Daten, Anweisungen, Befehle, Informationen, Signale, Bits, Symbole und Chips, auf die in dieser Beschreibung Bezug genommen werden kann, durch Spannungen, Ströme, elektromagnetische Wellen, Magnetfelder oder -partikel, optische Felder oder Partikel oder eine beliebige Kombination davon dargestellt werden. Einige Zeichnungen können Signale zur Übersichtlichkeit der Darstellung und Beschreibung als ein einzelnes Signal veranschaulichen. Es ist für einen Durchschnittsfachmann ersichtlich, dass das Signal einen Bus von Signalen darstellen kann, wobei der Bus eine Vielfalt von Bitbreiten aufweisen kann und die vorliegende Offenbarung auf einer beliebigen Anzahl von Datensignalen, einschließlich eines einzelnen Datensignals, implementiert werden kann.
-
Die verschiedenen veranschaulichenden logischen Blöcke, Module und Schaltungen, die in Verbindung mit den hierin offenbarten Ausführungsformen beschrieben werden, können mit einem Universalprozessor, einem Spezialprozessor, einem digitalen Signalprozessor (DSP), einer integrierten Schaltung (IC), einer anwendungsspezifischen integrierten Schaltung (ASIC), einer anwenderprogrammierbaren Gatteranordnung (FPGA) oder einer anderen programmierbaren Logikvorrichtung, einer diskreten Gate- oder Transistorlogik, diskreten Hardwarekomponenten oder einer beliebigen Kombination davon, die zum Durchführen der hierin beschriebenen Funktionen ausgelegt sind, implementiert oder durchgeführt werden.
-
Ein Allzweckprozessor (der hierin auch als Host-Prozessor oder einfach als Host bezeichnet werden kann) kann ein Mikroprozessor sein, alternativ kann der Prozessor jedoch ein beliebiger herkömmlicher Prozessor, Controller, Mikrocontroller oder Zustandsautomat sein. Ein Prozessor kann auch als eine Kombination von Rechenvorrichtungen, wie beispielsweise eine Kombination aus einem DSP und einem Mikroprozessor, eine Vielzahl von Mikroprozessoren, ein oder mehrere Mikroprozessoren in Verbindung mit einem DSP-Kern oder irgendeine andere derartige Konfiguration implementiert sein. Ein Universalcomputer mit einem Prozessor wird als Spezialcomputer angesehen, während der Universalcomputer so konfiguriert ist, dass er Rechenanweisungen (z. B. Softwarecode) ausführt, die sich auf Ausführungsformen der vorliegenden Offenbarung beziehen.
-
Die Ausführungsformen können in Bezug auf einen Prozess beschrieben werden, der als ein Flussdiagramm, ein Fließschema, ein Strukturdiagramm oder ein Blockdiagramm dargestellt ist. Obwohl ein Flussdiagramm Betriebsvorgänge als einen sequentiellen Prozess beschreiben kann, können viele dieser Vorgänge in einer anderen Reihenfolge, parallel oder im Wesentlichen gleichzeitig durchgeführt werden. Außerdem kann die Reihenfolge der Vorgänge neu geordnet werden. Ein Prozess kann einem Verfahren, einem Thread, einer Funktion, einer Prozedur, einer Unterroutine, einem Unterprogramm usw. entsprechen. Weiterhin können die hierin offenbarten Verfahren in Hardware, Software oder beiden implementiert sein. Bei Implementierung in Software können die Funktionen als eine oder mehrere Anweisungen oder Code auf computerlesbaren Medien gespeichert oder übertragen werden. Computerlesbare Medien schließen sowohl Computerspeichermedien als auch Kommunikationsmedien, einschließlich aller Medien, die die Übertragung eines Computerprogramms von einem Ort zu einem anderen erleichtern, ein.
-
Jede Bezugnahme auf ein Element hierin unter Verwendung einer Bezeichnung, wie beispielsweise „erste/r/s“, „zweite/r/s“ usw. schränkt die Menge oder Reihenfolge dieser Elemente nicht ein, es sei denn, eine solche Einschränkung wird ausdrücklich angegeben. Vielmehr können diese Bezeichnungen hierin als ein zweckmäßiges Verfahren zum Unterscheiden zwischen zwei oder mehr Elementen oder Instanzen eines Elements verwendet werden. Ein Verweis auf erste und zweite Elemente bedeutet also nicht, dass dort nur zwei Elemente eingesetzt werden dürfen oder dass das erste Element dem zweiten Element in irgendeiner Weise vorhergehen muss. Darüber hinaus kann ein Satz von Elementen, sofern nicht anders angegeben, ein oder mehrere Elemente umfassen.
-
Hierin beschriebene Elemente können mehrere Instanzen desselben Elements enthalten. Diese Elemente können allgemein durch einen numerischen Bezeichner (z. B. 110) und speziell durch den numerischen Bezeichner gefolgt von einem alphabetischen Bezeichner (z. B. 110A) oder einen numerischen Bezeichner mit vorangestelltem „Strich“ (z. B. 110-1) angezeigt werden. Zur Vereinfachung der Beschreibung beginnen die Elementnummernanzeiger größtenteils mit der Nummer der Zeichnung, auf der die Elemente vorgestellt oder am ausführlichsten erörtert werden. So haben beispielsweise Elementidentifizierer in einer 1 meistens das numerische Format 1xx, und Elemente in einer 4 haben meistens das numerische Format 4xx.
-
Wie hierin verwendet, bedeutet der Begriff „im Wesentlichen“ in Bezug auf einen gegebenen Parameter, eine Eigenschaft oder eine Bedingung und schließt in einem für Fachleute verständlichen Ausmaß ein, dass der gegebene Parameter, die gegebene Eigenschaft oder die gegebene Bedingung mit einem kleinen Grad an Varianz erfüllt ist, wie beispielsweise innerhalb akzeptabler Fertigungstoleranzen. Beispielsweise kann in Abhängigkeit von dem bestimmten Parameter, der Eigenschaft oder der Bedingung, der bzw. die im Wesentlichen erfüllt ist, der Parameter, die Eigenschaft oder die Bedingung zu mindestens 90 % erfüllt, zu mindestens 95 % erfüllt oder sogar zu mindestens 99 % erfüllt sein.
-
Wie hierin verwendet, bezeichnet ein Bezug auf einen „kryptographischen Prozess“ die Operationen, einschließlich Berechnungen, die einen Teil oder alle der Protokolle bilden, die für die Durchführung von Ver- und Entschlüsselung, die Auflösung von Schlüsseln, Unterschlüsseln oder die Durchführung anderer Schritte oder Berechnungen relevant sind, die für die Kryptologie relevant sind. Ein kryptographischer Prozess kann von einer Vorrichtung durchgeführt werden, z. B. einem kryptographischen Prozessor oder einem Allzweckprozessor, der einen Teil eines Protokolls basierend auf Firmware oder Software ausführt.
-
Mit dem Verständnis, dass die Berechnungen an einer Vorrichtung durchgeführt werden, einschließlich modularer inverser Berechnungen, kann dies durch Beobachtung der Eigenschaften einer Vorrichtung, die solche Berechnungen durchführt, als nicht einschränkendes Beispiel für den Zeit-/Leistungverbrauch der Vorrichtung offenbart werden. Genauer gesagt ist es möglich, die Eingänge zur Vorrichtung aus der Zeit-/ Leistungssignatur der Vorrichtung während einer Berechnung zu bestimmen, wenn die Beziehung zwischen den Eingängen und den Zeit-/ Leistungssignaturen bekannt ist. Wenn eine Vorrichtung beispielsweise einen privaten Schlüssel zum Entschlüsseln von Daten verwendet, kann die Beobachtung der Zeit-/Leistungssignaturen der Vorrichtung während der Entschlüsselung Informationen über den privaten Schlüssel oder andere kryptographische Parameter offenbaren, die der Vorrichtung zur Verfügung gestellt und für diese Berechnungen verwendet werden.
-
Die verschiedenen hierin beschriebenen Ausführungsformen beziehen sich auf Techniken zur Verschleierung extern beobachtbarer Eigenschaften einer Vorrichtung, einschließlich, aber nicht beschränkt auf Techniken, die auf jede Berechnung angewendet werden können, die das Bestimmen eines größten gemeinsamen Teilers beinhaltet. Diese Techniken können, ohne Einschränkung, die Zeitinformationen und Leistungsverbrauchsinformationen der Vorrichtung, die solche Berechnungen durchführt, verschleiern. Als besonderes Beispiel wird die hierin beschriebene Technik auf den erweiterten Euklidischen Algorithmus des größten gemeinsamen Teilers (XGCD) angewendet.
-
Wie hierin verwendet, bedeutet „Verschleiern von Vorrichtungseigenschaften“ oder ähnliche Begriffe, dass jede extern beobachtbare Eigenschaft der Vorrichtung, einschließlich, aber nicht beschränkt auf die Eigenschaften der Vorrichtung während des Betriebs, undeutlich oder unklar gemacht wird. Solche Eigenschaften können ohne Einschränkung einschließen: Leistungverbrauch, Zeitinformationen, Magnetfeldinformationen usw.; Wärmesignaturinformationen, andere Informationen mit ähnlichem Charakter und Kombinationen davon. Verschleierung bedeutet nicht, dass die Informationen nicht beobachtbar sind, obwohl das Ergebnis dies sein könnte, und soll dazu dienen, solche Informationen weniger nützlich zu machen oder mehr Verarbeitung zu erfordern, um solche Informationen nützlich zu machen.
-
Berechnungen der modularen Inversen werden in der Kryptographie verwendet, einschließlich zur Berechnung privater Schlüssel, Unterschlüssel und öffentlicher Schlüssel. Die Berechnung nutzt die Beziehung aus, dass:
worin „m“ ein Modul und „k“ eine ganze Zahl ist.
-
Und somit A*A-1≡1. Ein oder mehrere private Schlüssel und Unterschlüssel können aus einer Handvoll von Basisschlüsseln unter Verwendung der modularen inversen Beziehungen berechnet werden.
-
XGCD ist eine Technik zum Bestimmen des Inversen von „a mod m“ unter Verwendung des Euklidischen Algorithmus (der für den größten gemeinsamen Teiler löst), gefolgt von einer Rücksubstitution zur Lösung der Bezout Identität. XGCD wird in der Kryptographie und in Verfahren zur Verschlüsselung/Entschlüsselung von öffentlichen und privaten Schlüsseln verwendet.
-
Verschiedene Ausführungsformen beziehen sich auf eine sicherere Technik zur Berechnung der modularen Inversen in einer Ausführungsform unter Verwendung eines sicheren binären XGCD-Algorithmus (SB-XGCD). Die verschiedenen Ausführungsformen bauen auf dem Verständnis auf, dass viele der Techniken zur Ableitung privater Schlüssel aus Leistungs- und Zeitsignaturen auf Beobachtungen über mehrere Iterationen basieren, z. B. eine Vorrichtung, welche die Berechnungen mehrere Male unter Beobachtung durchführt. Dementsprechend verwenden verschiedene Ausführungsformen ein zufälliges Element als Verschleierungsparameter in jeder Berechnung, sodass die Beziehung zwischen aufeinanderfolgenden Iterationen verschleiert wird. Dadurch wird es um Größenordnungen schwieriger, die Eingangswerte aus der Leistungs- und Timingsignatur der Vorrichtung zu bestimmen, welche die Berechnungen durchführt.
-
Eine Ausführungsform einer Technik zur Verwendung von SB-XGCD wird im Folgenden beschrieben (hierin auch als „SB-XGCD-Technik“ bezeichnet). Die SB-XGCD-Technik beginnt mit dem Verständnis der Beziehung GCD(x,y) = GCD(x,y+r*x) = 1. Der Ausdruck erkennt, dass „y+r*x“ die GCD-Berechnung für x und y nicht beeinflussen sollte, wenn x < y. Somit kann mindestens einer der kryptographischen Parameter (im vorliegenden Fall „x“) proportional zur erzeugten Zufallszahl geändert werden. Diese kann in die Bezout Identität substituiert werden, um die in Gl. 1 beschriebene Beziehung zu definieren, die erfüllt werden soll:
- „r“ ist eine Zufallszahl.
- „a“ und „b“ sind ganze Zahlen.
- „x“ und „y“ sind positive ganze Zahlen, wobei x<y, GCD(x,y) = GCD(x,y%x) = 1.
-
In einigen Ausführungsformen kann die Zufallszahl r ein 32-Bit-Wort mit 12-Bit führenden Nullen sein. Die 12-Bit-Nullstellen können im Speicher gespeichert werden, um einen XGCD-Überlauf zu vermeiden. Daher kann der tatsächliche Zufallseffekt in einer solchen Ausführungsform 20 Bit (32 Bit minus 12 Bit) betragen. Natürlich werden auch andere Wortgrößen in Betracht gezogen. Zusätzlich wird auch in Betracht gezogen, dass die Anzahl der als führende Nullen reservierten Bits in Abhängigkeit von den maximalen Krediten/Überträgen angepasst wird, von denen erwartet wird, dass sie einen Überlaufzustand vermeiden.
-
Ein binärer XGCD kann durchgeführt werden, um a und b zu bestimmen, die Gleichung 1 erfüllen. 1. Bei der Durchführung dieser Berechnung auf einem Computer gibt es einige Einschränkungen, von denen eine darin besteht, dass Überläufe auftreten können, die dazu führen, dass a und b negativ sind. Eine Überprüfung kann durchgeführt werden, um zu bestimmen, ob ein Überlauf aufgetreten ist. Gl. 1 wird in Gl. 2 umgeordnet, siehe unten:
-
Eine Überprüfung kann durchgeführt werden, um zu bestimmen, ob b ≥ 0 ist. Wenn b < 0, dann wird Gl. 2 mit den Werten für a und b in Gl. 3 umgeordnet, siehe unten:
-
Dabei sind „m“ und „n“ minimale positive ganze Zahlen, sodass sowohl b+m*y als auch b+n*x positiv sind. Das Bestimmen von m und n ist ein iterativer Prozess, der durchgeführt wird, bis n und m zu einer positiven ganzen Zahl führen, wenn sie zu b addiert werden.
-
Eine weitere Überprüfung wird durchgeführt, um zu bestimmen, ob (a+(b+m*y)*r) ≥ 0. Wenn (a+(b+m*y)*r) < 0, dann wird der linke Ausdruck in Gl. 3 in Gl. 4 umgeordnet, siehe unten:
-
Wobei „w“ eine minimale positive ganze Zahl ist, sodass a+(b+m*y)*r+w*y > 0, Das Bestimmen von w ist auch ein iterativer Prozess, der durchgeführt wird, bis w zu einer positiven ganzen Zahl führt, wenn er zu a addiert wird.
-
Sobald die Bedingungen erfüllt sind, kann Gl. 4 in die modularen inversen Gleichungen 5 und 6 umgeordnet werden:
-
Die beschriebene Technik ist auf jede Berechnung anwendbar, die auf GCD-Berechnungen basiert, wie beispielsweise den Euklidischen Algorithmus.
-
Bei Anwendung dieser Technik auf eine kryptographische Umgebung sind für CRT RSA (Rivest-, Shamir-, Adleman-Algorithmus unter Implementierung des Theorems des Chinesischen Restsatzes) P und Q private Schlüssel, und d
p, d
q, P
-1 und Q
-1 sind Unterschlüssel. Die Gleichungen der modularen Inversen zur Bestimmung dieser Schlüssel können wie folgt aussehen:
-
Für CRT RSA können, als nicht einschränkendes Beispiel, aufgrund von Speichereinschränkungen in einem Chip, die Unterschlüssel dP und dq sowie pinvund qinv möglicherweise nicht vorberechnet und im Speicher gespeichert werden. Es werden nur die Schlüssel p und q gespeichert, und jedes Mal, wenn die Unterschlüssel benötigt werden, werden sie in Echtzeit unter Verwendung der Unterschlüsselberechnung basierend auf p und q berechnet. Daher sind die Zeit- und Leistungssignaturen der Vorrichtung, die diese Berechnung durchführt, beobachtbar, und die Schlüssel p und q, wenn sie als Parameter übergeben werden, sind anfällig dafür, abgeleitet zu werden.
-
1 veranschaulicht ein sicheres System 100, das eine Ausführungsform der vorstehend beschriebenen SB-XGCD-Technik verwendet. In einer Ausführungsform kann das sichere System 100 ein sicherer Krypto-Prozessor sein, wie beispielsweise ein Trusted-Platform-Modul (TPM). Das sichere System 100 schließt einen Prozessor 110 ein, der funktionsfähig mit einer Mathematikmaschine 120, einem Zufallszahlengenerator 130, einer peripheren Schnittstelle und einem Speicher 150 (z. B. Flash-Speicher) gekoppelt ist. In einer Ausführungsform ist der Prozessor 110 ein RISC-Prozessor (Reduced Instruction Set Computer), wie beispielsweise ein ARM®-Prozessor.
-
Der Zufallszahlengenerator 130 kann konfiguriert werden, um eine Zufallszahl zu erzeugen (z. B. eine echte Zufallszahl, eine Pseudozufallszahl usw.). Der Begriff „Zufallszahl“, wie hierin verwendet, kann eine echte Zufallszahl oder eine Pseudozufallszahl sein. Als nicht einschränkendes Beispiel kann der Zufallszahlengenerator 130 ein nicht rekursiver Zufallszahlengenerator auf dem Chip, ein Schieberegister mit linearer Rückkopplung oder eine Zufallszahlengenerierungssoftware sein. Wenn aufgerufen, stellt der Zufallszahlengenerator 130 dem Prozessor 110 eine Zufallszahl bereit.
-
Die Mathematikmaschine 120 kann ein Firmware-Erweiterungsmodul für den Prozessor 110 oder ein separater Spezial-Mikrocontroller sein. Die Mathematikmaschine 120 ist konfiguriert, um Ausführungsformen der hierin beschriebenen SB-XGCD-Technik auszuführen. Die Mathematikmaschine 120 akzeptiert als Parameter p, q und r als Eingänge für Funktionsaufrufe für die SB-XGCD-Technik. Die Mathematikmaschine 120 gibt die Ergebnisse der durchgeführten Berechnungen, die die Unterschlüssel oder andere private Schlüssel einschließen können, an den Prozessor 110 zurück. In einer Ausführungsform können die Ergebnisse in einem gemeinsam verwendeten Speicherplatz bereitgestellt werden, der sowohl für den Prozessor 110 als auch für die Mathematikmaschine 120 zugänglich ist.
-
Die periphere Schnittstelle 140 kann es dem sicheren System 100 ermöglichen, mit einer beliebigen Anzahl von Vorrichtungen zu kommunizieren, die kryptographische Schlüssel verwenden, einschließlich des CRT RSA-Signierens/-Verifizierens 113, das in 2 dargestellt ist.
-
2 veranschaulicht einen Prozessor 110 gemäß einer Ausführungsform der Offenbarung. Der Prozessor 110 ist konfiguriert, um mit einer Vielzahl von kryptographischen Schemata verwendet zu werden, einschließlich eines oder mehrerer digitaler Signaturschemata wie beispielsweise ECD (elliptische Kurve digitale Signatur) Verifizieren/Signieren 111, CRT RSA Verifizieren/Signieren 112, Verschlüsselungs-/Entschlüsselungsschemata AES CFB (Advanced Encryption Standard Cipher Feedback), Chiffrieren/Inverses Chiffrieren 113 und CRT RSA-Verschlüsselung/-Entschlüsselung 114. Jedes dieser Schemata wird als Modul im Prozessor 110 identifiziert. In verschiedenen Ausführungsformen kann der Prozessor 110 in Kombination mit der Mathematikmaschine 120 Unterschlüssel, Signaturen, Ver-/Entschlüsselungsergebnisse und dergleichen bestimmen. Das Füllen der Daten 115 kann das Hinzufügen führender Nullen zu den Parameterwörtern (z. B. die Zufallszahl) einschließen.
-
Der Prozessor 110 kann einen gemeinsam verwendeten Speicher 116 zum Bereitstellen von Operations- und Funktionsdaten einschließen, die für die Mathematikmaschine 120 zugänglich sind. In einer Ausführungsform stellt der Prozessor 110 der Mathematikmaschine 120 eine Adresse im gemeinsam verwendeten Speicher 116 der Daten und des Betriebs bereit. Der Prozessor 110 kann einen weiteren gemeinsam verwendeten Speicher 117 einschließen, der für die Mathematikmaschine 120 zugänglich ist, um dem Prozessor 110 die Ergebnisse der Operationen bereitzustellen. In einer Ausführungsform stellt die Mathematikmaschine 120 dem Prozessor 110 eine Adresse des Ergebnisses der angeforderten Operation im gemeinsam verwendeten Speicher 117 bereit.
-
Ausführungsformen des sicheren Systems 100 können in sicheren kryptographischen Systemen implementiert werden, die den Euklidischen Algorithmus verwenden, um Schlüssel zu erzeugen, z. B. ein Schlüsselanhänger-Token (wie beispielsweise RSA SecurID), Bargeldautomaten, Finanztransaktionen, die Schlüssel, ein Hardware-Schloss, Softwarelizenzen und dergleichen einschließen. In einer Ausführungsform kann das sichere System 100 implementiert werden, um Vorrichtungen wie beispielsweise Druckerpatronen oder Peripheriegeräte für mobile Vorrichtungen als echte und als Nicht-OEM (Erstausrüster) zu authentifizieren.
-
3 veranschaulicht ein Flussdiagramm einer Operation des sicheren Systems 100 von 1 gemäß einer Ausführungsform der Offenbarung. Ausführungsformen können das Erzeugen von Schlüsseln einschließen, die für Ver- und/oder Entschlüsselungsoperationen verwendet werden. Einige Ausführungsformen können auch das Verifizieren einer von einer anderen Vorrichtung empfangenen Signatur einschließen, die bei der Verifizierung hilfreich sein kann, ob ein Verschleierungsparameter von der Mathematikmaschine während der Schlüsselerzeugung verwendet wurde oder nicht. Ein solcher Prozess kann beginnen, wenn der Prozessor 110 eine Anforderung bei Operation 302 erhält. In einigen Ausführungsformen kann die Anforderung eine Verschlüsselungsanforderung, eine Entschlüsselungsanforderung und/oder eine Verifizierungsanforderung sein. Der Prozessor 110 bestimmt die Operationen, die auf die Anforderung bei Operation 304 reagieren, was das Erzeugen eines gespeicherten privaten Schlüssels einschließen kann, um zu bestimmen, ob ein empfangener öffentlicher Schlüssel authentisch ist. Als Teil der auszuführenden Operationen stellt der Prozessor 110 der Mathematikmaschine 120 bei Operation 306 Funktionsdaten und eine angeforderte Operation bereit. Die von der Mathematikmaschine 120 bei Operation 308 empfangenen Funktionsdaten schließen eine zufällig erzeugte Zahl ein, entweder einzeln oder als in das Produkt integrierte Zahl aus der Zufallszahl und einem Schlüssel. Die Mathematikmaschine 120 erzeugt als Reaktion auf die Funktionsdaten den/die privaten Schlüssel, die bei Operation 310 erforderlich sind, und stellt den/die erzeugten Schlüssel dem Prozessor 110 bei Operation 312 bereit. Die privaten Schlüssel werden wie vorstehend beschrieben unter Verwendung von SB-XGCD erzeugt und dienen der Verifizierung der Signatur. Da die Operationsdaten zufällig erzeugte Daten einschließen (z. B. eine Zufallszahl, die vom Zufallszahlengenerator erzeugt wird), wird bei jeder Erzeugung eines privaten Schlüssels unter Verwendung von SB-XGCD eine andere Zufallszahl als eine der Eingänge verwendet. In einigen Ausführungsformen können die zufällig erzeugten Daten von der Mathematikmaschine 120 anstelle des Prozessors 110 erzeugt werden.
-
Der Prozessor 110 empfängt die erzeugten Schlüssel bei Operation 314. Für Operationen, die eine Signaturverifizierung einschließen, kann der Prozessor 110 die extern erkannte Signatur analysieren und interpretieren, um festzustellen, ob sie korrekt/verifiziert ist, wenn sie auf die erzeugten Schlüssel bei Operation 316 reagiert. Die detektierte Signatur kann mit einer gespeicherten Signatur verglichen werden, die möglicherweise aus einer früheren Operation detektiert wurde. Der Prozessor 110 gibt eine Wahr- oder Falschantwort auf seine Interpretation der Signatur bei Operation 318 zurück. Die Tatsache, dass detektierte Signaturen sich im Wesentlichen unterscheiden, kann ein Hinweis darauf sein, dass eine zufällige Variable in die Ver- oder Entschlüsselungsoperationen innerhalb der Mathematikmaschine 120 als Verschleierungsparameter eingefügt wurde.
-
Ein Durchschnittsfachmann wird verstehen, dass der in Verbindung mit 3 beschriebene Prozess lediglich eine Implementierung der hierin beschriebenen Techniken ist und für andere Prozesse verwendet werden könnte, bei denen die Beobachtung externer Eigenschaften einer Vorrichtung Informationen über die Vorrichtungsleistung offenbaren kann, einschließlich, aber nicht beschränkt auf andere kryptographische Prozesse.
-
4A und 4B sind Leistungswellenformen 400, 450, die veranschaulichen, dass sich die Leistungswellenformen zwischen aufeinanderfolgenden Operationen ändern, die auf die zufällig erzeugten Parameter reagieren, die der Mathematikmaschine 120 bereitgestellt werden. Beispielsweise kann die Leistungswellenform 400 durch eine erste Operation erzeugt werden, bei der eine erste Zufallsvariable zu der Operation hinzugefügt wird, und die zweite Leistungswellenform 450 kann durch eine zweite Operation erzeugt werden, bei der eine zweite Zufallsvariable zu der Operation hinzugefügt wird. Folglich können die Berechnungen zur Erzeugung der verschiedenen Leistungswellenformen 400, 450 unterschiedlich sein, obwohl die resultierenden Schlüssel die gleichen sind. Nach der Verschleierung der Eingänge können die detektierten Leistungswellenformen 400, 450 im Wesentlichen unterschiedlich sein - daher beziehen sich die Zeit-/Leistungsinformationen nicht direkt auf die kryptographischen Parameter.
-
Viele der in dieser Spezifikation beschriebenen Funktionseinheiten können als Module, Threads oder andere Segregationen von Programmiercode veranschaulicht, beschrieben oder bezeichnet werden, um deren Implementierungsunabhängigkeit deutlicher hervorzuheben. Module können in der einen oder anderen Form mindestens teilweise in Hardware implementiert sein. Zum Beispiel kann ein Modul als Hardwareschaltung implementiert werden, die benutzerdefinierte VLSI-Schaltungen oder Gate-Arrays, handelsübliche Halbleiter, wie beispielsweise Logikchips, Transistoren oder andere diskrete Komponenten umfasst. Ein Modul kann auch in programmierbaren Hardwarevorrichtungen implementiert sein, wie beispielsweise feldprogrammierbaren Gate-Arrays, programmierbarer Array-Logik, programmierbaren Logikvorrichtungen oder dergleichen. Module können auch unter Verwendung von Software oder Firmware, die auf einer physischen Speichervorrichtung (z. B. einem computerlesbaren Speichermedium) gespeichert ist, im Speicher oder einer Kombination davon zur Ausführung durch verschiedene Arten von Prozessoren implementiert werden.
-
Ein identifiziertes Modul aus ausführbarem Code kann zum Beispiel einen oder mehrere physische oder logische Blöcke von Computeranweisungen umfassen, die zum Beispiel als Thread, Objekt, Prozedur oder Funktion organisiert sein können. Nichtsdestotrotz müssen die ausführbaren Dateien eines identifizierten Moduls nicht physisch zusammen angeordnet sein, sondern können unterschiedliche Anweisungen umfassen, die an verschiedenen Orten gespeichert sind, die, wenn sie logisch zusammengefügt werden, das Modul umfassen und den angegebenen Zweck für das Modul erreichen.
-
Tatsächlich kann ein Modul aus ausführbarem Code eine einzelne Anweisung oder viele Anweisungen sein und kann sogar über mehrere verschiedene Codesegmente, zwischen verschiedenen Programmen und über mehrere Speichervorrichtungen verteilt sein. In ähnlicher Weise können Betriebsdaten hierin innerhalb von Modulen identifiziert und veranschaulicht sein und können in irgendeiner geeigneten Form verkörpert und innerhalb irgendeiner geeigneten Art von Datenstruktur organisiert sein. Die Betriebsdaten können als ein einziger Datensatz gesammelt oder über verschiedene Orte, einschließlich über verschiedene Speichervorrichtungen, verteilt sein und können mindestens teilweise lediglich als elektronische Signale in einem System oder Netzwerk vorhanden sein. Wenn ein Modul oder Abschnitte eines Moduls in Software implementiert sind, werden die Softwareabschnitte auf einem oder mehreren physischen Vorrichtungen gespeichert, die hierin als computerlesbare Medien bezeichnet werden.
-
In einigen Ausführungsformen sind die Softwareabschnitte in einem nichtflüchtigen Zustand gespeichert, sodass die Softwareabschnitte oder Darstellungen davon für einen Zeitraum an demselben physischen Ort verbleiben. Zusätzlich sind in einigen Ausführungsformen die Softwareabschnitte in einer oder mehreren nichtflüchtigen Speichervorrichtungen gespeichert, die Hardwareelemente einschließen, die nicht transitorische Zustände und/oder Signale speichern können, die für die Softwareabschnitte repräsentativ sind, obwohl andere Abschnitte der nicht transitorischen Speichervorrichtungen in der Lage sein können, die Signale zu ändern und/oder zu übertragen. Beispiele für nicht transitorische Speichervorrichtungen sind Flash-Speicher und Direktzugriffsspeicher (RAM). Ein anderes Beispiel einer nicht transitorischen Speichervorrichtung schließt einen Nur-Lese-Speicher (ROM) ein, der für einen Zeitraum Signale und/oder Zustände speichern kann, die für die Softwareabschnitte repräsentativ sind. Die Fähigkeit, die Signale und/oder Zustände zu speichern, wird jedoch nicht durch weitere Funktionalität zum Übertragen von Signalen beeinträchtigt, die den gespeicherten Signalen und/oder Zuständen entsprechen oder diese repräsentieren. Zum Beispiel kann ein Prozessor auf den ROM zugreifen, um Signale zu erhalten, die für die gespeicherten Signale und/oder Zustände repräsentativ sind, um die entsprechenden Softwareanweisungen auszuführen.
-
Zusätzliche nicht einschränkende Ausführungsformen schließen ein:
- Ausführungsform 1. Verfahren zur Kommunikation zwischen einer ersten Vorrichtung und einer zweiten Vorrichtung, wobei das Verfahren umfasst: Erzeugen eines Verschleierungsparameters; Bereitstellen des Verschleierungsparameters von der ersten Vorrichtung zur zweiten Vorrichtung mit einem oder mehreren kryptographischen Parametern; und Empfangen eines ersten Ergebnisses als Reaktion auf einen kryptographischen Prozess unter Verwendung des einen oder der mehreren kryptographischen Parameter und der Verschleierungsparameter als Eingänge.
- Ausführungsform 2. Verfahren nach Ausführungsform 1, wobei das Erzeugen des Verschleierungsparameters das Erzeugen einer Zufallszahl umfasst.
- Ausführungsform 3. Verfahren nach Ausführungsform 2, ferner umfassend das Modifizieren mindestens eines der kryptographischen Parameter proportional zur erzeugten Zufallszahl.
- Ausführungsform 4. Verfahren nach Ausführungsform 3, ferner umfassend das Multiplizieren des mindestens einen kryptographischen Parameters mit der Zufallszahl.
- Ausführungsform 5. Verfahren nach einer der Ausführungsformen 1 bis 4, ferner umfassend: Erzeugen eines zweiten Verschleierungsparameters; Bereitstellen des zweiten Verschleierungsparameters von der ersten Vorrichtung an die zweite Vorrichtung mit dem einen oder mehreren kryptographischen Parametern; und Empfangen eines zweiten Ergebnisses als Reaktion auf einen kryptographischen Prozess, unter Verwendung des einen oder der mehreren kryptographischen Parameter und des Verschleierungsparameters als Eingänge, wobei das erste zweite Ergebnis im Wesentlichen das gleiche wie das erste Ergebnis ist.
- Ausführungsform 6. Verfahren nach Ausführungsform 5, wobei das Erzeugen des zweiten Verschleierungsparameters das Erzeugen einer zweiten Zufallszahl umfasst.
- Ausführungsform 7. Verfahren nach Ausführungsform 5, ferner umfassend: Detektieren einer ersten Signatur, die mit dem ersten kryptographischen Prozess assoziiert ist; Detektieren einer zweiten Signatur, die mit dem zweiten kryptographischen Prozess assoziiert ist; und Bestimmen, dass sich die erste Signatur und die zweite Signatur im Wesentlichen unterscheiden, obwohl das erste Ergebnis und das zweite Ergebnis aus dem kryptographischen Prozess im Wesentlichen gleich sind.
- Ausführungsform 8. Verfahren nach einer der Ausführungsformen 1 bis 7, wobei der kryptographische Prozess Verschlüsselung einschließt.
- Ausführungsform 9. Verfahren nach einer der Ausführungsformen 1 bis 8, wobei der kryptographische Prozess Entschlüsselung einschließt.
- Ausführungsform 10. Verfahren nach einer der Ausführungsformen 1 bis 9, wobei der kryptographische Prozess Auflösung von Schlüsseln einschließt.
- Ausführungsform 11. Verfahren nach einer der Ausführungsformen 1 bis 11, wobei der kryptographische Prozess Auflösung von Unterschlüsseln einschließt.
- Ausführungsform 12. System zur Durchführung eines kryptographischen Prozesses, wobei das System umfasst: einen ersten Prozessor, der konfiguriert ist, um einen ersten kryptographischen Prozess durchzuführen; und einen zweiten Prozessor, der mit dem ersten Prozessor gekoppelt und konfiguriert ist, um den ersten kryptographischen Prozess einzuleiten, indem dem ersten Prozessor ein oder mehrere kryptographische Parameter mit mindestens einigen zufällig erzeugten Elementen bereitgestellt werden, wobei die zufällig erzeugten Elemente eine oder mehrere extern beobachtbare Eigenschaften des ersten Prozessors beeinflussen, während der erste kryptographischen Prozess durchgeführt wird.
- Ausführungsform 13. System nach Ausführungsform 12, wobei die eine oder die mehreren extern beobachtbaren Eigenschaften mindestens eine aus Leistungsverbrauch, Zeitinformationen, Magnetfeldinformationen, Wärme Signaturinformationen oder eine Kombination davon sind.
- Ausführungsform 14. System nach Ausführungsform 12 oder der Ausführungsform 13, wobei der kryptographische Prozess die Berechnung eines größten gemeinsamen Teilers von zwei der einen oder mehreren kryptographischen Parameter einschließt.
- Ausführungsform 15. System nach Ausführungsform 14, wobei der kryptographische Prozess eine Berechnung der modularen Inversen ist.
- Ausführungsform 16. System nach Ausführungsform 15, wobei die Berechnung der modularen Inversen eine Technik auf den erweiterten Euklidischen Algorithmus des größten gemeinsamen Teilers (XGCD) einschließt.
- Ausführungsform 17. System nach Ausführungsform 15, wobei die XGCD-Technik eine sichere binäre XGCD-Technik einschließt.
- Ausführungsform 18. System nach einer der Ausführungsformen 12 bis 17, ferner umfassend einen Zufallszahlengenerator.
- Ausführungsform 19. Kryptographievorrichtung, umfassend: einen ersten Prozessor, der konfiguriert ist, um einen kryptographischen Prozess durchzuführen, der auf einen ersten Satz kryptographischer Parameter reagiert; und einen zweiten Prozessor, der konfiguriert ist, um den kryptographischen Prozess bei dem ersten Prozessor durch Bereitstellen eines zweiten Satzes von kryptographischen Parametern einzuleiten, die nicht direkt mit dem ersten Satz von kryptographischen Parametern verknüpfbar sind.
- Ausführungsform 20. Kryptographievorrichtung nach Ausführungsform 19, ferner umfassend einen Zufallszahlengenerator.
- Ausführungsform 21. Kryptographievorrichtung nach Ausführungsform 20, wobei der zweite Prozessor konfiguriert ist, um den ersten Satz kryptographischer Parameter mit einer Zufallszahl aus dem Zufallszahlengenerator als Verschleierungsparameter in jeder Berechnung zu kombinieren, um den zweiten Satz kryptographischer Parameter zu erzeugen.
-
Während die vorliegende Offenbarung hierin in Bezug auf bestimmte veranschaulichte Ausführungsformen beschrieben wurde, werden Fachleute erkennen und anerkennen, dass die vorliegende Erfindung nicht darauf beschränkt ist. Vielmehr können viele Ergänzungen, Löschungen und Modifikationen an den dargestellten und beschriebenen Ausführungsformen vorgenommen werden, ohne vom Schutzumfang der Erfindung abzuweichen, wie nachfolgend zusammen mit ihren rechtlichen Äquivalenten beansprucht wird. Zusätzlich können Merkmale von einer Ausführungsform mit Merkmalen einer anderen Ausführungsform kombiniert werden, während sie immer noch im Schutzumfang der Erfindung enthalten sind, wie er vom Erfinder in Betracht gezogen wird.