PatentDe  


Dokumentenidentifikation DE102005056814A1 13.07.2006
Titel Kryptografiesystem und Datenverschlüsselungsverfahren
Anmelder Samsung Electronics Co., Ltd., Suwon, Kyonggi, KR
Erfinder Hwang, Joon-ho, Seoul, KR
Vertreter Patentanwälte Ruff, Wilhelm, Beier, Dauster & Partner, 70174 Stuttgart
DE-Anmeldedatum 24.11.2005
DE-Aktenzeichen 102005056814
Offenlegungstag 13.07.2006
Veröffentlichungstag im Patentblatt 13.07.2006
IPC-Hauptklasse H04L 9/28(2006.01)A, F, I, 20060320, B, H, DE
Zusammenfassung Die Erfindung bezieht sich auf ein Kryptografiesystem mit einer Verschlüsselungseinheit (210), die verschlüsselte Daten gemäß einem Verschlüsselungsalgorithmus, der eine wiederholte Rundenstruktur aufweist, in jeder vorgegebenen Runde aktualisiert und speichert und die verschlüsselten Daten nach Ausführung der Verschlüsselung für eine vorgegebene Anzahl von Runden ausgibt, und auf ein korrespondierendes Verfahren zur Verschlüsselung von Eingabedaten.
Erfindungsgemäß umfasst das Kryptografiesystem eine Kompensationseinheit (230), welche Kompensationsdaten so erzeugt und speichert, dass eine Summe einer Hammingdistanz für die aktualisierten und gespeicherten verschlüsselten Daten und einer Hammingdistanz für die Kompensationsdaten auf einem konstanten Wert gehalten wird.
Verwendung z. B. für gesicherte Datenübertragungen in elektronischen Datenverarbeitungssystemen.

Beschreibung[de]

Die Erfindung betrifft ein Kryptografiesystem und ein Verfahren zur Verschlüsselung von Eingabedaten.

Im Allgemeinen kann ein Kryptografiesystem mit öffentlichem Schlüssel basierend auf theoretischer Sicherheit unter Verwendung von Primfaktorberechnung oder diskreter Algebra implementiert werden. Kryptografiesysteme mit öffentlichem Schlüssel können beispielsweise Schemata anwenden, welche einen Verschlüsselungsschlüssel benutzen, der typischerweise schwierig zu faktorisieren ist. Beispielhafte Schemata, welche einen bestimmten, unter Einsatz von diskreter Algebra schwierig zu lösenden Verschlüsselungsschlüssel verwenden, umfassen das Rivest-Shamir-Adelman-Schema (RSA-Schema), das Diffie-Hellman-Schema, EIGamal-Schema usw. Da Kryptografiesysteme mit öffentlichem Schlüssel, welche diese mathematischen Schwierigkeiten handhaben, einen Vorgang mit einer Bitanzahl ausführen, die größer als 512 Bit ist, können die aus dem Stand der Technik bekannten Kryptografiesysteme, welche solche Schemata verwenden, eine sogenannte wiederholte Rundenstruktur aufweisen.

Neuerdings wurden Blockkryptografiesysteme verwendet, welche eine wiederholte Rundenstruktur aufweisen, wobei unter einer Runde eine vorgegebene Verschlüsselungsverarbeitungsiteration für zu verschlüsselnde Daten verstanden werden kann. Ein Blockkryptografiesystem ist eine Kryptografiesystem mit einem nichtöffentlichen Schlüssel (symmetrischen Schlüssel), welches Daten durch Aufteilen der Daten in Blöcke einer vorgebbaren Größe verschlüsselt. Nach Erzeugung einer Mehrzahl von Teilrundenschlüsseln unter Verwendung eines vorgegebenen Verschlüsselungsschlüssels verschlüsselt das Blockkryptografiesystem mit der wiederholten Rundenstruktur die Daten wiederholend unter Verwendung jedes der Teilrundenschlüssel.

Blockkryptografiesysteme können unter Verwendung eines vorgegebenen Verschlüsselungsalgorithmus implementiert werden. Im Wesentlichen können verwendete Verschlüsselungsalgorithmen beispielsweise durch bekannte Verschlüsselungsstandards definiert werden. Typische Blockverschlüsselungsalgorithmen umfassen den Datenverschlüsselungsstandard (DES), welcher in den Vereinigten Staaten verwendet wird, den internationalen Datenverschlüsselungsstandard (IDEA), welcher in Europa verwendet wird, den SEED, welcher in Korea verwendet wird, usw. Alle standardisierten Verschlüsselungsalgorithmen sind veröffentlicht und Anwender können Verschlüsselungssysteme unter Verwendung der von diesen veröffentlichten Standards zur Verfügung gestellten Verschlüsselungsalgorithmen implementieren.

1 zeigt ein bekanntes Kryptografiesystem 100 mit einer wiederholenden Rundenstruktur. Dieses Kryptografiesystem 100 kann typischerweise eine Eingabeeinheit 110, ein Register 120, eine Verschlüsselungsschaltung 135, eine Ausgabeeinheit 150 und einen Rundenzähler 160 umfassen. Die Eingabeeinheit 110 empfängt in jeder Runde zu verschlüsselnde Daten, d.h. die Eingabeeinheit 110 empfängt während einer ersten Runde zu verschlüsselnde Daten und in nachfolgenden Runden werden die während der vorherigen Runde verschlüsselten Daten empfangen.

Das Register 120 speichert die Daten, welche von der Eingabeeinheit 110 in Reaktion auf ein Taktsignal ausgegeben werden. Während der ersten Runde werden die zu verschlüsselnden Daten im Register 120 gespeichert und in den nachfolgenden Runden werden die in einer vorherigen Runde verschlüsselten Daten aktualisiert und im Register 120 gespeichert. Die Verschlüsselungsschaltung 135 verschlüsselt die im Register 120 gespeicherten Daten unter Verwendung eines vorgegebenen Verschlüsselungsschlüssels (KEY). Die Verschlüsselungsschaltung 135 umfasst eine Rundenschlüsselgeneratorschaltung 130 und eine Verschlüsselungsfunktionsschaltung 140.

Die Rundenschlüsselgeneratorschaltung 130 erzeugt unter Verwendung des vorgegebenen Schlüssels KEY einen Rundenschlüssel (RKEY), welcher zur Verschlüsselung in jeder Runde verwendet wird. Die Verschlüsselungsfunktionsschaltung 140 implementiert eine Verschlüsselungsfunktion, welche Teil eines vorgegebenen Verschlüsselungsalgorithmus ist. Die Verschlüsselungsfunktionsschaltung 140 verschlüsselt die im Register 120 gespeicherten Daten basierend auf der vorgegebenen Verschlüsselungsfunktion unter Verwendung des Rundenschlüssels RKEY.

Während einer letzten Runde gibt die Ausgabeeinheit 150 die durch die Verschlüsselungsfunktionsschaltung 140 verschlüsselten Daten aus. Während vorheriger Runden überträgt die Ausgabeeinheit 150 die von der Verschlüsselungsfunktionsschaltung 140 verschlüsselten Daten zur Eingabeeinheit 110. Der Rundenzähler 160 zählt die Anzahl der ausgeführten Runden und überträgt einen Zählerstand als Steuersignal an die Eingabeeinheit 110 und die Ausgabeeinheit 150. Der Rundenzähler 160 kann in Reaktion auf die von der Ausgabeeinheit 150 ausgegebenen verschlüsselten Daten zurückgesetzt werden. Der Rundenzähler 160 kann in Reaktion auf die Eingabe von zu verschlüsselnden Daten mit dem Zählen beginnen. Der Rundenzähler 160 kann den Zählerstand in Reaktion auf die von der Ausgabeeinheit 150 übertragenen verschlüsselten Daten erhöhen.

Wie oben ausgeführt, basiert das bekannte Kryptografiesystem mit öffentlichem Schlüssel auf theoretischer Sicherheit, welche diskrete Algebra, Primzahlenfaktorisierung usw. verwendet. Das bekannte Blockkryptografiesystem implementiert die Verschlüsselung basierend auf theoretischer Sicherheit wie Shannons Theorie (Diffusion und Konfusion). Neuerdings wurden jedoch Angriffe entwickelt, welche Kryptografiesysteme durch Ausnutzen von Nebeninformationen des Kryptografiesystems bedrohen, unabhängig von der verwendeten theoretischen Sicherheit.

Diese Angriffe, welche Kryptografiesysteme durch Ausnutzen von Nebeninformationen bedrohen, werden als Seitenkanalangriffe bezeichnet. Ein Seitenkanalangriff umfasst einen Timingangriff, welcher eine Betriebsvorgangszeitdauer ausnutzt, einen Leistungsanalyseangrift, welcher das Maß an Leistungsverbrauch ausnutzt, und einen Fehlerangriff, welcher einen bewussten Fehler verwendet. Der Leistungsanalyseangriff kann beispielsweise ein Kryptografiesystem, welches für eine intelligente Karte (Smartcard) verwendet wird, mit relativ niedrigem Aufwand und geringen Kosten angreifen und weist daher ein wesentliches Bedrohungspotential für die Sicherheit auf.

Der Energieanalyseangriff ist beispielsweise als einfacher Leistungsanalyseangriff (SPA) oder als differenzieller Leistungsanalyseangriff (DPA) bekannt. Der SPA-Angriff leitet geheime Informationen einfach durch Analysieren eines Leistungssignals während des Betriebs eines Kryptografiesystems ab. Der DPA-Angriff leitet geheime Informationen durch Analysieren einer merklichen Anzahl von Leistungssignalen ab, welche sich auf den gleichen Geheimschlüssel beziehen. Diese Analyse kann unter Verwendung einer statistischen Eigenschaft ausgeführt werden.

Mehrere Technologien wurden vorgeschlagen, um ein Kryptografiesystem zu entwickeln, das gegen Leistungsanalyseangriffe gesichert ist. Diese Technologien umfassen im Wesentlichen ein Verfahren oder einen Prozess, das bzw. der beispielsweise die Signalgröße reduziert, Rauschen einbringt oder einen zufälligen Takt oder eine zufällige Ausführungsreihenfolge anwendet. Wenn jedoch ausreichende Abtastwerte von zu analysierenden Leistungssignalen vorhanden sind, scheidet eine Zufallkomponente aus. Entsprechend sind die vorgeschlagenen herkömmlichen Technologien nicht vollständig gegen Leistungsanalyseangriffe gesichert.

Gemäß einem anderen Vorschlag wurde eine Maskierungstechnik entwickelt, welche sich von den Technologien unterscheidet, die eine Zufallskomponente verwenden. Bei der Maskierungstechnik wird ein interner Vorgang durch Maskieren von Eingabedaten mit Zufallsdaten und anschließendem Entfernen der Maskierung durchgeführt. Die Maskierungstechnik weist eine Struktur auf, welche im Allgemeinen gegen SPA-Angriffe und DPA-Angriffe gesichert ist. Ist der interne Vorgang jedoch nichtlinear, dann ist eine zusätzliche komplizierte Schaltung erforderlich und Maskierungsschaltungen, welche für jeden Verschlüsselungsalgorithmus geeignet sind, sollten entwickelt werden.

Zusätzlich kann der Leistungsanalyseangriff verwendet werden, um durch Messen des Leistungsverbrauchs einer logischen Schaltung, wie einer S-Box in einem Blockkryptografiesystem, eine Korrelation mit geheimen Informationen zu bestimmen. Die S-Box, welche eine nichtlineare Substitutionsfunktion darstellt, verwendet einen Algorithmus, um Eingabedaten in andere Daten zu konvertieren und die anderen Daten auszugeben. Da es jedoch schwierig ist, den Energieverbrauch der S-Box praktisch zu messen, kann der Energieverbrauch nicht für den Leistungsanalyseangrift verwendet werden.

Andererseits ist es einfacher, den Energieverbrauch aufgrund eines Schaltstromes in einem Register zu messen, in welchem codierte Daten in jeder Runde aktualisiert und gespeichert werden, als den Energieverbrauch der S-Box zu messen. Daher wird eine Messung des Energieverbrauchs des Registers häufig als repräsentativ für eine Messung von Veränderungen der durch das Kryptografiesystem verbrauchten Energie verwendet.

Unter Bezugnahme auf 1 werden die im Register 120 während einer vorherigen Runde gespeicherten Daten in einer folgenden Runde in neue verschlüsselte Daten aktualisiert. Der Leistungsanalyseangriff wird unter Verwendung des Stroms durchgeführt, welcher sich mit der Aktualisierung der Daten im Register 120 ändert. Dabei weist der Schaltstrom in einem Register eine hohe Korrelation mit einer Hammingdistanz von Datenbits auf. Die Hammingdistanz zeigt die Anzahl von Bits der aktualisierten Daten an, welche andere Werte als die vorherigen Daten aufweisen. Wenn ein im Register gespeicherter Wert beispielsweise von 1100 auf 1010 aktualisiert wird, ist die Anzahl der Bits, welche andere Werte als die Bits der vorherigen Daten aufweisen, gleich 2. Daher ist die Hammingdistanz gleich 2.

Entsprechend steigt der Energieverbrauch umso stärker an, je mehr Bits bei der Aktualisierung der im Register gespeicherten Daten ihren Wert ändern. In anderen Worten ausgedrückt, mit der Zunahme der Hammingdistanz nimmt auch der Energieverbrauch zu. Daher umfasst ein Leistungsanalyseangriff einen Angriff auf ein Kryptografiesystem unter Verwendung der Veränderungen des Energieverbrauchs eines Registers.

Der Erfindung liegt als technisches Problem die Bereitstellung eines Kryptografiesystems und eines Datenverschlüsselungsverfahrens zugrunde, welche in der Lage sind, die oben erwähnten Unzulänglichkeiten des Standes der Technik wenigstens teilweise zu vermeiden und welche insbesondere einen verbesserten Schutz gegen Leistungsanalyseangriffe bieten.

Die Erfindung löst dieses Problem durch Bereitstellung eines Kryptografiesystems mit den Merkmalen des Patentanspruchs 1 oder 12 und durch ein Verfahren zur Verschlüsselung von Eingabedaten mit den Merkmalen des Patentanspruchs 24. Vorteilhafte Weiterbildungen der Erfindung sind in den abhängigen Ansprüchen angegeben.

Die so charakterisierte Erfindung ermöglicht, dass die Hammingdistanz bei der Aktualisierung von in einem Register gespeicherten Daten konstant bleibt und daher der Energieverbrauch im Wesentlichen konstant gehalten werden kann. Dies ermöglicht einen verbesserten Schutz vor Leistungsanalyseangriffen.

Vorteilhafte, nachfolgend beschriebene Ausführungsformen der Erfindung sowie das zu deren besserem Verständnis oben erläuterte, herkömmliche Ausführungsbeispiel sind in den Zeichnungen dargestellt. Es zeigen:

1 ein Blockdiagramm eines bekannten Kryptografiesystems mit einer wiederholten Rundenstruktur,

2 ein Blockdiagramm eines erfindungsgemäßen Kryptografiesystems mit wiederholter Rundenstruktur,

3 eine Tabelle mit Datenwerten, welche in einem Register des Kryptografiesystems gemäß 2 gespeichert sind,

4 ein Blockdiagramm eines erfindungsgemäßen Kryptografiesystems mit einer Feistelstruktur,

5 eine Tabelle mit Datenwerten, welche im Kryptografiesystem gemäß 4 gespeichert sind, und

6 ein Flussdiagramm eines erfindungsgemäßen Verfahrens zur Verschlüsselung von Eingabedaten.

Wie nachfolgend detaillierter beschrieben wird, betreffen Ausführungsbeispiele der Erfindung ein kryptografisches Verfahren und ein Kryptografiesystem, welche besser gegen Seitenkanalangriffe geschützt sind. Ein beispielhaftes Kryptografiesystem weist eine wiederholende Rundenstruktur auf und kann die Hammingdistanz durch Erzeugen von Kompensationsdaten konstant halten. Die Kompensationsdaten können eine Stromänderung kompensieren, welche aufgrund einer Änderung der Hammingdistanz der verschlüsselten Daten entsteht, wenn die verschlüsselten Daten in jeder Runde und/oder Verschlüsselungsverarbeitungsiteration aktualisiert und gespeichert werden.

Wie nachfolgend beschrieben wird, kann die beispielhafte Methodik zur Implementierung eines Kryptografiesystems, das gegen einen Leistungsanalyseangriff gesichert ist, eine statistische Korrelation zwischen der Hammingdistanz und dem Energieverbrauch anwenden. Die Hammingdistanz wird konstant gehalten, wenn in einem Register gespeicherte Daten aktualisiert werden. Es kann beispielsweise ein separates Kompensationsregister verwendet werden, um die Stromdifferenz zu kompensieren, welche erzeugt wird, wenn die im Register gespeicherten Daten aktualisiert werden, wodurch ein konstanter Stromfluss durch das gesamte System ermöglicht wird.

In den nachfolgenden Ausführungsformen der Erfindung kann ein Kompensationsregister verwendet werden, das die gleiche Größe bzw. Kapazität wie ein typisches Register im bekannten Kryptografiesystem aufweist, d.h. ein Systemregister. Zudem kann die Hammingdistanz gleich der Hälfte der Summe der kombinierten Speicherkapazität oder Größe des Systemregisters und des Kompensationsregisters sein.

Wenn die Kapazität des Systemregisters beispielsweise 32Bit ist, beträgt die Kapazität oder Größe des Kompensationsregisters 32Bit und die Hammingdistanz ist daher gleich 32Bit. In einem anderen Beispiel sollte die Hammingdistanz der im Kompensationsregister gespeicherten Daten gleich 20Bit sein, wenn die Hammingdistanz der Daten gleich 12Bit ist, um eine gesamte Hammingdistanz von 32Bit zu erhalten. Daher bleibt die Hammingdistanz der in einem Gesamtregister von 64Bit, welches die Kapazität oder Größe des Systemregisters und des Kompensationsregisters kombiniert, aktualisierten und gespeicherten Daten des Kryptografiesystems unverändert.

2 zeigt ein erfindungsgemäßes Kryptografiesystem 200 mit einer wiederholten Rundenstruktur. Das Kryptografiesystem 200 umfasst eine Verschlüsselungseinheit 210 und eine Kompensationseinheit 230. Die Verschlüsselungseinheit 210 verschlüsselt während jeder vorgegebenen Runde oder Prozessiteration Daten unter Verwendung eines vorgegebenen Verschlüsselungsalgorithmus. Die verschlüsselten Daten können während jeder Runde aktualisiert und gespeichert werden. Die Kompensationseinheit 230 erzeugt und speichert Kompensationsdaten zum Kompensieren der in jeder Runde durch die Verschlüsselungseinheit 210 zu aktualisierenden und zu speichernden verschlüsselten Daten.

In einem Beispiel können die Kompensationsdaten einen Wert derart aufweisen, dass die Summe der Hammingdistanz der verschlüsselten Daten und der Hammingdistanz der Kompensationsdaten einen vorgegebenen Wert beibehält. Zudem können die Kompensationsdaten und die verschlüsselten Daten in Synchronisation mit einem Taktsignal gespeichert werden.

Die Verschlüsselungseinheit 210 gemäß 2 entspricht der Verschlüsselungseinheit gemäß 1. Da die Funktionsweise von jedem der Elemente der Verschlüsselungseinheit 210 identisch mit der Funktionsweise der korrespondierenden Elemente des herkömmlichen Verschlüsselungssystems 100 gemäß 1 ist, wird hier aus Verkürzungsgründen auf eine wiederholte Funktionsbeschreibung verzichtet.

Die Kompensationseinheit 230 umfasst eine Kompensationsdatengeneratoreinheit 232 und ein Kompensationsregister 237. Die Kompensationsdatengeneratoreinheit 232 kann konfiguriert sein, um Kompensationsdaten für die verschlüsselten Daten zu erzeugen, welche in jeder Runde aktualisiert und gespeichert werden. Die Kompensationsdaten können alternierend die Werte der aktualisierten Daten, welche in einem Register 231 gespeichert sind, und einen invertierten Wert der während jeder nachfolgenden Runde aktualisierten und im Register 231 gespeicherten Daten aufweisen. Die Kompensationsdaten können als zu verschlüsselnde Daten initialisiert werden.

In einem Beispiel, wenn das beispielhafte Kryptografiesystem 200 ein 8-Bit-Register umfasst und wenn die Hammingdistanz der Daten, welche nach einer Verschlüsselung während einer ersten Runde aktualisiert und gespeichert werden, als n repräsentiert wird, entspricht die Hammingdistanz der Kompensationsdaten einem Wert von (8-n). Zusätzlich können die Kompensationsdaten invertierte Werte der verschlüsselten Daten aufweisen.

In einem Beispiel, wenn die Hammingdistanz der Daten, welche nach einer Verschlüsselung während einer nachfolgenden Runde aktualisiert und gespeichert werden, einem Wert m entspricht, entspricht die Hammingdistanz der Kompensationsdaten einem Wert von (8-m). Hierbei können, da die Kompensationsdaten der vorherigen Runde invertierte Werte der Daten aufweisen, welche während der vorherigen Runde verschlüsselt wurden, die Kompensationsdaten zweifach invertierte Werte der verschlüsselten Daten aufweisen oder in anderen Worten ausgedrückt die gleichen Werte wie die verschlüsselten Daten aufweisen.

Daher können, wenn die Werte der Daten, welche nach einer Verschlüsselung während einer i-ten Runde aktualisiert und gespeichert werden, als Ri bezeichnet werden, die in der Verschlüsselungseinheit 210 gespeicherten Werte der aktualisierten Daten gemäß dem Ausdruck (1) dargestellt werden: R0 → R1 → R2 → R3 → R4 →...(1)

Korrespondierend mit diesen Daten können die aktualisierten und gespeicherten Kompensationsdaten durch den Ausdruck (2) dargestellt werden. Im Ausdruck (2) bezeichnet „~R1" den invertierten Wert von R1. R0 → ~R1 → R2 → ~R3 → R4 →...(2)

Wenn die aktualisierten und in der Verschlüsselungseinheit 210 gespeicherten Daten x Bit umfassen, umfassen die Kompensationsdaten x Bit und die Hammingdistanz wird auf x Bit gehalten. Daher ist der während der Aktualisierung und Speicherung der Daten im Kryptografiesystem 200 erzeugte Strom konstant, so dass das Kryptografiesystem 200 beispielsweise gegen einen Leistungsanalyseangriff geschützt ist.

Unter weiterer Bezugnahme auf 2 kann das Kompensationsregister 237 die in Reaktion auf das Taktsignal erzeugten Kompensationsdaten speichern. Um die konstante Hammingdistanz zu beizubehalten, können die Kompensationsdaten gleichzeitig mit der Speicherung der verschlüsselten Daten im Register 213 im Kompensationsregister 237 gespeichert werden.

Die Kompensationsdatengeneratoreinheit 232 umfasst eine Invertereinheit 231, eine erste Auswahlschaltung 233 und eine zweite Auswahlschaltung 235. Die Invertereinheit 231 invertiert die von einer Ausgabeeinheit 219, z.B. einem Multiplexer, der Verschlüsselungseinheit 210 während jeder Runde übertragenen Daten. Die erste Auswahlschaltung 233 kann alternierend die von der Ausgabeeinheit 219 der Verschlüsselungseinheit 210 übertragenen Daten oder die Ausgabe der Invertereinheit 231 auswählen. In einem Beispiel wählt die erste Auswahlschaltung 233 während ungerader Runden die Ausgabe der Invertereinheit 231 aus und wählt während gerader Runden die von der Ausgabeeinheit 219 der Verschlüsselungseinheit 210 übertragenen Daten aus.

Die zweite Auswahlschaltung 235 wählt die Ausgabe der ersten Schaltung 233 oder die zu verschlüsselnden Daten aus. Das Kompensationsregister 237 kann mit den ursprünglichen Daten initialisiert werden, welche noch nicht verschlüsselt sind. Daher wählt die zweite Auswahlschaltung 235 die zu verschlüsselnden Daten nur während der ersten Runde aus und wählt während jeder nachfolgenden Runde die Ausgabe der ersten Auswahlschaltung 233 aus.

3 zeigt eine Tabelle mit Datenwerten, welche im Register des Kryptografiesystems 200 gemäß 2 gespeichert sind. Die in der Tabelle gemäß 3 dargestellten beispielhaften Werte sind für eine beispielhafte Kapazität oder Größe des Registers 213 und des Kompensationsregisters 237 von jeweils 8Bit und für eine Hammingdistanz von 8Bit.

Zur Darstellung eines beispielhaftern Verschlüsselungsablaufs werden das Register 213 und das Kompensationsregister 237 mit dem zu verschlüsselnden Datenwert (01010110) initialisiert. Während einer ersten Runde wird, wenn die vorher im Register 213 gespeicherten Daten unter Verwendung eines vorgegebenen Verschlüsselungsalgorithmus verschlüsselt werden, was zu einem beispielhaften Wert von 11110011 führt, der verschlüsselte Wert (11110011) aktualisiert und im Register 213 gespeichert. Hierbei wird der invertierte Wert (00001100) der verschlüsselten Daten im Kompensationsregister 237 gespeichert.

Zu diesem Zeitpunkt ist die Hammingdistanz der aktualisierten und im Register 213 gespeicherten Daten (01010110→11110011) gleich 4Bit und die Hammingdistanz der aktualisierten und im Kompensationsregister 237 gespeicherten Daten (01010110→00001100) ist gleich 4Bit. Daher ist die gesamte Hammingdistanz der aktualisierten und in den Registern 213 und 237 gespeicherten Daten gleich 8Bit.

Während einer zweiten Runde werden die im Register 213 gespeicherten Daten (11110011) unter Verwendung des vorgegebenen Verschlüsselungsalgorithmus verschlüsselt, was zu einem Wert von 00111000 führt, und der verschlüsselte Wert (00111000) wird aktualisiert und im Register 213 gespeichert. Hierbei wird der zweimal invertierte Wert der verschlüsselten Daten, das ist der verschlüsselte Datenwert (00111000), im Kompensationsregister 237 gespeichert.

Zu diesem Zeitpunkt ist die Hammingdistanz der aktualisierten und im Register 213 gespeicherten Daten (11110011→00111000) gleich 5Bit und die Hammingdistanz der aktualisierten und im Kompensationsregister 237 gespeicherten Daten (00001100→00111000) ist gleich 3Bit. Daher ist die gesamte Hammingdistanz der aktualisierten und in den Registern 213 und 237 des Kryptografiesystems 200 gespeicherten Daten gleich 8Bit, was mit der Hammingdistanz der in der ersten Runde aktualisierten und gespeicherten Daten identisch ist.

Danach haben die aktualisierten, im Kompensationsregister 237 gespeicherten Daten alternierend den gleichen Wert wie die aktualisierten, im Register 213 gespeicherten Daten und wie der invertierte Wert der aktualisierten, im Register 213 gespeicherten Daten. Somit kann die Hammingdistanz der aktualisierten, in den Registern 213 und 237 gespeicherten Daten konstant bei 8Bit gehalten werden.

4 zeigt ein Blockdiagramm eines Kryptografiesystems 400 mit einer Feistelstruktur gemäß einem Ausführungsbeispiel der Erfindung. Das Kryptografiesystem 400 benutzt einen Blockverschlüsselungsalgorithmus mit einer Feistelstruktur. In einem Verschlüsselungsalgorithmus mit einer Feistelstruktur werden Daten durch eine Aufteilung in zwei Blöcke verschlüsselt.

Ein Blockverschlüsselungsalgorithmus mit einer Feistelstruktur, nachfolgend auch als Feistelverschlüsselungsalgorithmus bezeichnet, ist allgemein bekannt. Typische Standards des Feistelverschlüsselungsalgorithmus sind ein DES-Verschlüsselungsalgorithmus und ein SEED-Verschlüsselungsalgorithmus. Der DES-Verschlüsselungsalgorithmus und der SEED-Verschlüsselungsalgorithmus weisen beide eine 16-Runden-Feistelstruktur auf.

Unter Bezugnahme auf 4 umfasst das Kryptografiesystem 400 eine Verschlüsselungseinheit 410 und eine Kompensationseinheit 430. Daten werden nach einer Aufteilung in einen ersten Block und einen zweiten Block verschlüsselt. Die Verschlüsselungseinheit 210 aktualisiert und speichert die in den ersten und zweiten Block aufgeteilten Daten, welche während jeder Runde verschlüsselt werden. Die Kompensationseinheit 430 erzeugt und speichert erste Kompensationsdaten zum Kompensieren der Daten des ersten Blocks und zweite Kompensationsdaten zum Kompensieren der Daten des zweiten Blocks. Die ersten und zweiten Kompensationsdaten können während jeder Runde aktualisiert und gespeichert werden.

Die ersten Kompensationsdaten können Werte zum Beibehalten der Summe der verschlüsselten Daten des ersten Blocks und der Hammingdistanz der ersten Kompensationsdaten auf einem konstanten Wert aufweisen. Zudem können die zweiten Kompensationsdaten Werte zum Beibehalten der Summe der verschlüsselten Daten des zweiten Blocks und der Hammingdistanz der zweiten Kompensationsdaten auf einem konstanten Wert aufweisen. Zudem können die ersten Kompensationsdaten und die verschlüsselten Daten des ersten Blocks gleichzeitig in Reaktion auf ein Taktsignal gespeichert werden. Die zweiten Kompensationsdaten und die verschlüsselten Daten des zweiten Blocks können ebenfalls gleichzeitig in Reaktion auf das Taktsignal gespeichert werden.

Wie aus 4 ersichtlich ist, umfasst die Verschlüsselungseinheit 410 eine erste Eingabeeinheit 411 und eine zweite Eingabeeinheit 415 zur Eingabe von in jeder Runde zu verschlüsselnden Daten des ersten und zweiten Blocks. In einem Beispiel geben die erste und zweite Eingabeeinheit 411, 415 den ersten und zweiten Block der zu verschlüsselnden Daten während einer ersten Runde ein und geben Daten von jedem Block während den nachfolgenden Runden ein, welche während der vorherigen Runde verschlüsselt wurden.

Die Verschlüsselungseinheit 410 umfasst ein erstes Register 413 und ein zweites Register 417 zum Speichern von Daten, welche von der ersten Eingabeeinheit 411 bzw. der zweiten Eingabeeinheit 415 in Reaktion auf das Taktsignal eingegeben werden. Während der ersten Runde werden der erste Block und der zweite Block der zu verschlüsselnden Daten im ersten Register 413 bzw. im zweiten Register 417 gespeichert und während den nachfolgenden Runden werden die in der vorherigen Runde verschlüsselten Daten des ersten und zweiten Blocks aktualisiert und im ersten und zweiten Register 413 und 417 gespeichert. Wie aus 4 ersichtlich ist, können die Eingabeeinheiten 411 und 415 als Multiplexer ausgeführt werden.

Die Verschlüsselungseinheit 410 umfasst eine Verschlüsselungsschaltung 420, die eine Rundenschlüsselgeneratorschaltung 419, eine F-Funktionsschaltung 421 und eine erste Exklusiv-ODER-Schaltung 423 aufweist. Im vorliegenden Ausführungsbeispiel ist der Verschlüsselungsalgorithmus als Feistelverschlüsselungsalgorithmus ausgeführt. Die Implementierung des Feistelverschlüsselungsalgorithmus ist dem Fachmann bekannt, so dass hier aus Verkürzungsgründen auf eine detaillierte Beschreibung verzichtet wird. Der Feistelverschlüsselungsalgorithmus ist jedoch nur ein Beispiel und es können andere Verschlüsselungsalgorithmen durch die beispielhafte Verschlüsselungsschaltung 420 implementiert werden, wie dem Fachmann verständlich ist.

Unter Verwendung eines vorgegebenen Schlüssels (KEY) erzeugt die Rundenschlüsselgeneratorschaltung 419 einen Rundenschlüssel (RKEY), welcher zur Verschlüsselung in jeder Runde verwendet werden kann. Die F-Funktionsschaltung 421 ist ausgeführt, um eine eindeutige Funktion für den Feistelverschlüsselungsalgorithmus zu implementieren. In einem Beispiel können, wenn der Rundenschlüssel RKEY in einer i-ten Runde des Feistelverschlüsselungsalgorithmus den Wert Ki aufweist, die im ersten Register 413 bzw. im zweiten Register 417 zu speichernden Werte Li und Ri durch die nachfolgenden Gleichungen (3) und (4) definiert werden: Ri = L(i-1)XOR f(R(i-1), K(i-1))(3) Li = R(i-1)(4)

In den Ausdrücken (3) und (4) repräsentieren „L(i-1)" und „R(i-1)" die Werte von während einer vorherigen Runde ((i-1)-ten Runde) aktualisierten und im ersten Register 413 bzw. im zweiten Register 417 gespeicherten Daten, und „f(R(i-1), K(i-1)" repräsentiert eine eindeutige F-Funktion, welche für den Feistelverschlüsselungsalgorithmus verwendet wird.

Die F-Funktionsschaltung 421 kann unter Verwendung des Rundenschlüssels RKEY einen vorgegebenen F-Funktionsvorgang mit den im zweiten Register 417 gespeicherten Daten ausführen. Die erste Exklusiv-ODER-Verknüpfungsschaltung 423 kann eine Exklusiv-ODER-Verknüpfung mit den im ersten Register 413 gespeicherten Daten und einer Ausgabe der F-Funktionsschaltung 421 ausführen und das Ergebnis an eine zweite Ausgabeeinheit 427 ausgeben, welche beispielsweise als Demultiplexer ausgeführt sein kann.

Die Verschlüsselungsschaltung 420 gibt die im zweiten Register 417 gespeicherten Daten an eine erste Ausgabeeinheit 425 aus, welche beispielsweise als Demultiplexer ausgeführt sein kann. Während einer letzten Runde kann die erste Ausgabeeinheit 425 die verschlüsselten Daten des ersten Blocks ausgeben und die zweite Ausgabeeinheit 427 kann die verschlüsselten Daten des zweiten Blocks ausgeben. In den vorherigen Runden kann die erste Ausgabeeinheit 425 die verschlüsselten Daten des ersten Blocks an die erste Eingabeeinheit 411 übertragen, und die zweite Ausgabeeinheit 427 kann die verschlüsselten Daten des zweiten Blocks an die zweite Eingabeeinheit 415 übertragen.

Die Verschlüsselungseinheit 410 umfasst einen Rundenzähler 429. Der Rundenzähler 429 zählt die Rundenanzahl und kann den Zählwert als Steuersignal an die erste und zweite Eingabeeinheit 411 und 415, die erste und zweite Ausgabeeinheit 425 und 427 und die Kompensationseinheit 430 ausgeben. Der Rundenzähler 429 kann in Reaktion auf die verschlüsselten Daten, welche von der ersten und zweiten Ausgabeeinheit 427 ausgegeben werden, zurückgesetzt werden. Der Rundenzähler 429 kann in Reaktion auf den Empfang der zu verschlüsselnden Daten mit dem Zählen beginnen. Der Rundenzähler 429 zählt in Reaktion auf die verschlüsselten Daten, welche von der ersten und zweiten Ausgabeeinheit 425 und 427 übertragen werden.

Die Kompensationseinheit 430 umfasst eine erste und zweite Kompensationsdatengeneratoreinheit 434 und 432 zum Erzeugen von ersten und zweiten Kompensationsdaten zum Kompensieren der verschlüsselten Daten des ersten und zweiten Blocks, welche in jeder Runde aktualisiert und gespeichert werden. Die ersten und zweiten Kompensationsdaten können alternierend die Werte der aktualisierten Daten, welche im ersten bzw. zweiten Register 413 und 417 gespeichert sind, und den invertierten Wert der aktualisierten Daten aufweisen.

In der i-ten Runde werden, wenn der Rundenschlüssel RKEY den Wert Ki aufweist und die ersten Kompensationsdaten einen Wert CLi und die zweiten Kompensationsdaten einen Wert Cri aufweisen, die Werte CLi und CRi durch die nachfolgenden Gleichungen (5) und (6) erzeugt: CRi = CL(i-1)XOR f(R(i-1), K(i-1)), und CR0 = R0(5) CLi = CR(i-1), und CL0 = ~L0(6)

Die Kompensationseinheit 430 umfasst ein erstes Kompensationsregister 439 und ein zweites Kompensationsregister 433. In den Gleichungen (5) und (6) repräsentieren „CL(i-1)" und „CR(i-1)" die Werte von während einer vorherigen Runde ((i-1)-ten Runde) im ersten Kompensationsregister 439 bzw. im zweiten Kompensationsregister 433 gespeicherten Daten. Der Ausdruck „f(R(i-1), K(i-1)" repräsentiert eine eindeutige F-Funktion, welche für den Feistelverschlüsselungsalgorithmus verwendet wird. Zudem kann das erste Kompensationsregister 439 mit einem invertierten Wert (~L0) der Daten des ersten Blocks initialisiert werden, und das zweite Kompensationsregister 433 kann mit einem Wert (R0) der zur Verschlüsselung gedachten Daten des zweiten Blocks initialisiert werden.

Wie oben ausgeführt ist, können im Kryptografiesystem mit Feistelstruktur die Werte Li und Ri, welche aktualisiert und im ersten Register 413 bzw. im zweiten Register 417 gespeichert werden, durch den Ausdruck (7) dargestellt werden. L0 R0→L1 R1→L2 R2→L3 R3→L4 R4→...(7)

Zusätzlich können die Werte CLi und CRi, welche aktualisiert und im ersten Kompensationsregister 439 bzw. im zweiten Kompensationsregister 433 gespeichert werden, durch den Ausdruck (8) dargestellt werden. ~L0R0 → L1 ~R1 → ~L2R2 → L3 ~R3 → ~L4 R4 →...(8)

In anderen Worten ausgedrückt, im beispielhaften Kryptografiesystem 400 kann die Hammingdistanz der aktualisierten und in den Registern 413, 417, 439 und 433 gespeicherten Daten während jeder Runde konstant gehalten werden.

Das erste und zweite Kompensationsregister 439 und 433 speichern daher die ersten und zweiten Kompensationsdaten, welche in Reaktion auf das Taktsignal erzeugt werden. Um die konstante Hammingdistanz aufrechtzuerhalten, können die verschlüsselten Daten des ersten und zweiten Blocks und die ersten und zweiten Kompensationsdaten gleichzeitig im ersten und zweiten Register 413 und 417 bzw. im ersten und zweiten Kompensationsregister 439 und 433 in Reaktion auf das Taktsignal gespeichert werden.

Die erste Kompensationsdatengeneratoreinheit 434 umfasst eine Invertereinheit 435 und eine erste Auswahlschaltung 437. Die Invertereinheit 435 invertiert den ersten Block der zu verschlüsselnden Daten. Die erste Auswahlschaltung 437 wählt entweder die Ausgabe der Invertereinheit 433 oder die Ausgabe des zweiten Kompensationsregisters 433 aus. Das erste Kompensationsregister 439 kann mit dem invertierten Wert des ersten Blocks der ursprünglichen zu verschlüsselnden Daten initialisiert werden. Daher wählt die erste Auswahlschaltung 437 die Ausgabe der Invertereinheit 435 nur während der ersten Runde aus und wählt während jeder nachfolgenden Runde die Ausgabe des zweiten Kompensationsregisters 433 aus.

Die zweite Kompensationsdatengeneratoreinheit 432 umfasst eine zweite Auswahleinheit 431 und eine zweite Exklusiv-ODER-Schaltung 441. Die zweite Auswahleinheit 431 wählt basierend auf der Rundenzahl entweder den zweiten Block der zu verschlüsselnden Daten oder die Ausgabe der zweiten Exklusiv-ODER-Schaltung 441 aus. Das zweite Kompensationsregister 433 kann mit dem Wert des zweiten Blocks der ursprünglichen zu verschlüsselnden Daten initialisiert werden. Daher wählt die zweite Auswahleinheit den zweiten Block der zu verschlüsselnden Daten nur während der ersten Runde aus und wählt während allen nachfolgenden Runden die Ausgabe der zweiten Exklusiv-ODER-Schaltung 441 aus. Die zweite Exklusiv-ODER-Schaltung 441 kann eine Exklusiv-ODER-Verknüpfung mit den im ersten Kompensationsregister 439 gespeicherten Daten und der Ausgabe der F-Funktionsschaltung 421 ausführen und das Ergebnis als die zweiten Kompensationsdaten ausgeben.

5 zeigt eine Tabelle mit Datenwerten, welche im Kryptografiesystem 400 gemäß 4 gespeichert sind. Zur Erklärung der 5 wird angenommen, dass die Größe des ersten und zweiten Registers 413 und 417 und des ersten und zweiten Kompensationsregisters 439 und 433 jeweils 8Bit ist und die Hammingdistanz für das Gesamtsystem gleich 16 ist.

Unter Bezugnahme auf 5 kann das erste Register 413 mit dem zu verschlüsselnden Datenwert (01100101) initialisiert werden, das erste Kompensationsregister 439 kann mit dem invertierten Datenwert (10011010) des ersten Registers 413 initialisiert werden, und das zweite Register 417 und das zweite Kompensationsregister 433 können mit dem zu verschlüsselnden Datenwert (01010110) initialisiert werden. Während der ersten Runde werden, wenn durch Verschlüsseln der im ersten Register 413 und im zweiten Register 417 gespeicherten Daten unter Verwendung des Feistelverschlüsselungsalgorithmus die Datenwerte „11100101" bzw. „11110011" erzeugt werden, die verschlüsselten Datenwerte (11100101 und 11110011) aktualisiert und im ersten bzw. zweiten Register gespeichert. Hierbei wird ein Wert durch zweimaliges Invertierten des verschlüsselten Werts erzeugt. In anderen Worten ausgedrückt, der Wert der verschlüsselten, im ersten Register 413 gespeicherten Daten (11100101) wird im ersten Kompensationsregister 439 gespeichert, und der invertiere Wert (00001100) der verschlüsselten, im zweiten Register 417 gespeicherten Daten wird im zweiten Kompensationsregister 433 gespeichert.

Zu diesem Zeitpunkt ist die Hammingdistanz der aktualisierten und im ersten Register 413 gespeicherten Daten (0110010111100101) gleich 1 Bit, und die Hammingdistanz der aktualisierten und im ersten Kompensationsregister 439 gespeicherten Daten (1001101011100101) ist gleich 7Bit. Zusätzlich ist die. Hammingdistanz der aktualisierten und im zweiten Register 417 gespeicherten Daten (01010110→11110011) gleich 4Bit, und die Hammingdistanz der aktualisierten und im zweiten Kompensationsregister 433 gespeicherten Daten (0101011000001100) ist gleich 4Bit. Daher ist die gesamte Hammingdistanz der aktualisierten und im ersten Register 413 und im ersten Kompensationsregister 439 gespeicherten Daten gleich 8Bit, und die gesamte Hammingdistanz der aktualisierten und im zweiten Register 417 und im zweiten Kompensationsregister 433 gespeicherten Daten ist ebenfalls gleich 8Bit. Daher ist die gesamte Hammingdistanz der aktualisierten und in den Registern 413, 417, 439 und 433 gespeicherten Daten gleich 16Bit.

Während der zweiten Runde werden, wenn durch Verschlüsseln der im ersten und im zweiten Register 413 und 417 gespeicherten Daten (11100101 und 11110011) unter Verwendung des Feistelverschlüsselungsalgorithmus die Datenwerte „00111010" bzw. „100111000" erzeugt werden, die verschlüsselten Datenwerte (00111010 und 00111000) aktualisiert und im ersten bzw. zweiten Register 413 und 417 gespeichert. Hierbei wird ein Wert durch dreimaliges Invertieren der verschlüsselten, im ersten Register 413 gespeicherten Daten erzeugt. In anderen Worten ausgedrückt, der invertierte Wert (11000101) der verschlüsselten, im ersten Register 413 gespeicherten Daten wird im ersten Kompensationsregister 439 gespeichert, und ein Wert, welcher durch zweimaliges Invertieren der verschlüsselten Daten erzeugt wird, d.h. der Wert (00111000) der verschlüsselten, im zweiten Register 417 gespeicherten Daten, wird im zweiten Kompensationsregister 433 gespeichert.

Zu diesem Zeitpunkt ist die Hammingdistanz der aktualisierten und im ersten Register 413 gespeicherten Daten (1110010100110101) gleich 7Bit, und die Hammingdistanz der aktualisierten und im ersten Kompensationsregister 439 gespeicherten Daten (11100101→11000101) ist gleich 1 Bit. Zudem ist die Hammingdistanz der aktualisierten und im zweiten Register 417 gespeicherten Daten (11110011→00111000) gleich 5Bit, und die Hammingdistanz der aktualisierten und im zweiten Kompensationsregister 433 gespeicherten Daten (00001100→00111000) ist gleich 3Bit. Daher ist die gesamte Hammingdistanz der aktualisierten und im ersten Register 413 und im ersten Kompensationsregister 439 gespeicherten Daten gleich 8Bit, und die gesamte Hammingdistanz der aktualisierten und im zweiten Register 417 und im zweiten Kompensationsregister 433 gespeicherten Daten ist ebenfalls gleich 8Bit. Daher ist die gesamte Hammingdistanz der aktualisierten und in den Registern 413, 417, 439 und 433 gespeicherten Daten gleich 16Bit und ist zur Hammingdistanz der in der ersten Runde aktualisierten und gespeicherten Daten identisch.

Während jeder nachfolgenden Runde weisen die aktualisierten und im ersten Kompensationsregister 439 und im zweiten Kompensationsregister 433 gespeicherten Daten alternierend die Werte der im ersten Register 413 und im zweiten Register 417 gespeicherten Daten und den invertierten Wert der im ersten und zweiten Register 413 und 417 gespeicherten Daten auf. Daher wird die gesamte Hammingdistanz der aktualisierten und in den Registern 413, 417, 439 und 433 gespeicherten Daten konstant auf 16Bit gehalten.

6 zeigt ein Flussdiagramm eines Ausführungsbeispiels eines erfindungsgemäßen Verfahrens zum Verschlüsseln von Eingabedaten. Wie aus 6 ersichtlich ist, wird nach der Eingabe von zu verschlüsselnden Eingabedaten im Schritt S601 die Rundenanzahl im Schritt S603 auf 1 gesetzt und die Eingabedaten werden im Schritt S605 in Reaktion auf ein Taktsignal gleichzeitig in einem Register und einem Kompensationsregister gespeichert. Die im Register gespeicherten Daten können im Schritt S607 unter Verwendung eines vorgegebenen Verschlüsselungsalgorithmus verschlüsselt werden.

Nach der Verschlüsselung der Daten wird im Vorgang S609 bestimmt, ob die Rundenanzahl mit einer vorgegebenen Rundenanzahl identisch ist. Ist die Rundenzahl mit der vorgegebenen Rundenzahl identisch, dann werden die verschlüsselten Daten im Schritt S611 ausgegeben, da die Datenverschlüsselung gemäß dem vorgegebenen Verschlüsselungsalgorithmus abgeschlossen ist. Ist die Rundenanzahl jedoch nicht mit der vorgegebenen Rundenanzahl identisch, dann wird die Datenverschlüsselung in einer nachfolgenden Runde ausgeführt. Um die Verschlüsselung in der nachfolgenden Runde auszuführen, werden im Schritt S613 Kompensationsdaten für die verschlüsselten Daten erzeugt.

Nach dem Erzeugen der Kompensationsdaten und in Reaktion auf ein Taktsignal werden die Kompensationsdaten im Schritt S615 gleichzeitig mit der Speicherung der verschlüsselten Daten in einem Register im Kompensationsregister gespeichert. Nach dem Speichern der verschlüsselten Daten im Register wird im Schritt S617 die Rundenanzahl um 1 erhöht, so dass zur Ausführung der Verschlüsselung in der nachfolgenden Runde zum Schritt S607 zurückgesprungen wird.

Obwohl die beispielhafte, durch eine oder mehrere Komponenten des oben beschriebenen beispielhaften Systems implementierte Methodik oben im Wesentlichen durch Hardware beschrieben wurde, kann diese ebenso in Software in Form eines Computerprogramms ausgeführt werden. Ein Programm in Übereinstimmung mit den erfindungsgemäßen Ausführungsbeispielen kann beispielsweise ein Computerprogrammprodukt sein, welches einen Computer veranlasst, ein oben beschriebenes Verfahren zur Verschlüsselung von Eingabedaten durch Implementieren eines vorgegebenen Verschlüsselungsalgorithmus mit einer wiederholten Rundenstruktur auszuführen.

Das Computerprogrammprodukt kann ein computerlesbares Medium mit darin enthaltener Computerprogrammlogik oder Codeteilen umfassen, welche einen Prozessor des Systems freigeben, um eine oder mehrere Funktionen gemäß der oben beschriebenen beispielhaften Methodik auszuführen. Die Computerprogrammlogik kann den Prozessor veranlassen, das beispielhafte Verfahren oder eine oder mehrere Funktionen des hier beschriebenen beispielhaften Verfahrens auszuführen.

Das computerlesbare Speichermedium kein ein eingebautes Medium sein, welches innerhalb eines Computerhauptgehäuses installiert ist, oder ein entfernbares Medium sein, welches so angeordnet ist, dass es vom Computerhauptgehäuse getrennt werden kann. Beispiele für das eingebaute Medium umfassen wiederbeschreibbare nichtflüchtige Speicher, wie RAM, ROM, Flashspeicher und Festplatten, sind aber nicht auf diese eingeschränkt. Beispiele für ein entfernbares Medium umfassen optische Speichermedien wie CD-ROMs und DVDs, magneto-optische Speichermedien wie MOs, magnetische Speichermedien wie Floppy-Disks (Trademark), Cassettenbänder und entfernbare Festplatten, Medien mit einem eingebauten wiederbeschreibbaren nichtflüchtigen Speicher, wie Speicherkarten, und Medien mit eingebautem ROM, wie ROM-Cassetten, sind aber nicht auf diese eingeschränkt.

Diese Programme können auch in Form eines extern angelegten Übertragungssignals und/oder eines Computerdatensignals in einer Trägerwelle zur Verfügung gestellt werden. Das Computerdatensignal, das eine oder mehrere Anweisungen oder Funktionen der beispielhaften Methodik ausführt, kann von einer Trägerwelle zur Übertragung und/oder zum Empfang durch eine Einheit getragen werden, welche die Anweisungen oder Funktionen der beispielhaften Methodik ausführt. Die Funktionen oder Anweisungen des beispielhaften Verfahrens können beispielsweise durch Verarbeiten von einem oder mehreren Codesegmenten der Trägerwelle in einem Computer implementiert werden, welcher eine oder mehrere Komponenten des beispielhaften Systems gemäß 2 und/oder 4 steuert, wobei Anweisungen oder Funktionen zum Verschlüsseln von Daten und zum Erzeugen von Kompensationsdaten gemäß dem in den 2, 4 oder 6 dargestellten beispielhaften Verfahren ausgeführt werden.

Zudem können solche Programme, wenn sie auf einem computerlesbaren Speichermedium aufgenommen sind, einfach gespeichert und verteilt werden. Das Speichermedium kann, wenn es von einem Computer gelesen wird, in Übereinstimmung mit den hier beschriebenen beispielhaften Verfahren die Verarbeitung von Multimediadatensignalen freigeben, um ein Kopieren dieser Signale zu verhindern, die Zuordnung von Multimediadatensignalen innerhalb eines Gerätes durchführen, welches konfiguriert ist, um die Signale zu verarbeiten, und/oder die Reduzierung einer Kommunikationslast in einem Gerät durchführen, welches zum Verarbeiten von Mehrfachmultimediadatensignalen konfiguriert ist.

Daher können die beispielhaften Kryptografiesysteme und Verfahren gegen einfache Leistungsanalyseangriffe und differenzierte Leistungsanalyseangriffe gesichert werden, welche geheime Informationen durch Messen des Energieverbrauchs eines Kryptografiesystems ableiten. Zudem können die hier beschriebenen beispielhaften Kryptografiesysteme und Verfahren ein Informationsleck verhindern, welches durch Veränderungen der Hammingdistanz von verschlüsselten Daten verursacht wird, die aktualisiert und in einem Register gespeichert werden. Die Ausführungsbeispiele können daher beispielsweise in beliebigen Kryptografiesystemen mit einer wiederholenden Rundenstruktur angewendet werden, obwohl die Ausführungsbeispiele nicht auf wiederholende Rundenkryptografiesysteme und/oder Verfahren eingeschränkt sind.

Daher stellen die Ausführungsbeispiele ein Kryptografiesystem und Verfahren zur Verfügung, welche so konfiguriert werden können, dass eine konstante Hammingdistanz durch Aktualisierung und Speicherung von Kompensationsdaten gleichzeitig mit der Aktualisierung und Speicherung der verschlüsselten Daten während einer vorgegebenen Runde oder Prozessiteration beibehalten wird, wodurch eine Stromänderung verhindert wird, welche durch Änderungen der Hammingdistanz erzeugt wird. Zudem können die beispielhaften Kryptografiesysteme und Verfahren auf ein Standardkryptografiesystem, wie ein DES-Kryptografiesystem oder ein SEED-Kryptografiesystem, angewendet werden, welche beispielsweise einen Blockverschlüsselungsalgorithmus mit einer Feistelstruktur verwenden.

Die somit beschriebenen beispielhaften Ausführungsformen der Erfindung können selbstverständlich auf viele verschiedene Weisen variiert werden. So können beispielsweise die Funktionsblöcke der 2, 4 und 6, welche das beispielhafte System und/oder Verfahren beschreiben, in Hardware und/oder Software implementiert werden. Die Hardware-/Softwareimplementierungen können eine Kombination von Prozessoren und Produktionsartikel umfassen. Zudem können die Produktionsartikel weiter Speichermedien und ausführbare Computerprogramme umfassen. Die ausführbaren Computerprogramme können die Anweisungen zum Ausführen der beschriebenen Vorgänge oder Funktionen umfassen. Zudem können die computerausführbaren Programme auch als Teil von extern angelegten Ausbreitungssignalen zur Verfügung gestellt werden.


Anspruch[de]
  1. Kryptografiesystem zur Verschlüsselung von Eingabedaten gemäß einem Verschlüsselungsalgorithmus, der eine wiederholte Rundenstruktur aufweist, mit

    – einer Verschlüsselungseinheit (210), die verschlüsselte Daten gemäß dem Verschlüsselungsalgorithmus in jeder vorgegebenen Runde aktualisiert und speichert und die verschlüsselten Daten nach Ausführung der Verschlüsselung für eine vorgegebene Anzahl von Runden ausgibt, gekennzeichnet durch

    – eine Kompensationseinheit (230), die Kompensationsdaten so erzeugt und speichert, dass eine Summe einer Hammingdistanz für die aktualisierten und gespeicherten verschlüsselten Daten und einer Hammingdistanz für die Kompensationsdaten auf einem konstanten Wert gehalten wird.
  2. Kryptografiesystem nach Anspruch 1, wobei die Verschlüsselungseinheit umfasst:

    – eine Eingabeeinheit, welche basierend auf der auszuführenden Rundenanzahl zu verschlüsselnde Daten empfängt,

    – ein Register, welches in Reaktion auf ein Taktsignal Daten speichert, welche von der Eingabeeinheit ausgegeben werden,

    – eine Verschlüsselungsschaltung, welche die gespeicherten Daten gemäß dem Verschlüsselungsalgorithmus verschlüsselt, und

    – eine Ausgabeeinheit, welche die verschlüsselten Daten basierend auf der ausgeführten Rundenanzahl ausgibt.
  3. Kryptografiesystem nach Anspruch 2, wobei die Eingabeeinheit die Eingabedaten empfängt, wenn die Anzahl der ausgeführten Runden 0 ist, und die verschlüsselten Daten empfängt, wenn die Anzahl der ausgeführten Runden größer als 0 ist.
  4. Krptografiesystem nach Anspruch 2 oder 3, wobei die Ausgabeeinheit die verschlüsselten Daten ausgibt, wenn die Anzahl der ausgeführten Runden identisch mit der vorgegebenen Rundenanzahl ist und sonst die verschlüsselten Daten zur Eingabeeinheit und zur Kompensationseinheit überträgt, wenn die Rundenanzahl niedriger als die vorgegebene Rundenanzahl ist.
  5. Kryptografiesystem nach einem der Ansprüche 1 bis 4, wobei die Kompensationseinheit umfasst:

    – eine Kompensationsdatengeneratoreinheit, welche die Kompensationsdaten basierend auf der ausgeführten Rundenanzahl erzeugt, und

    – ein Kompensationsregister, welches in Reaktion auf ein Taktsignal die Kompensationsdaten speichert.
  6. Kryptografiesystem nach Anspruch 5, wobei die Kompensationsdatengeneratoreinheit umfasst:

    – eine Invertereinheit, welche die verschlüsselten Daten invertiert,

    – eine erste Auswahleinheit, welche die verschlüsselten Daten oder die invertierten Daten der verschlüsselten Daten basierend auf der ausgeführten Rundenanzahl auswählt und ausgibt, und

    – eine zweite Auswahleinheit, welche die von der ersten Auswahleinheit ausgegebenen Daten oder die Eingabedaten basierend auf der ausgeführten Rundenanzahl auswählt und ausgibt.
  7. Kryptografiesystem nach Anspruch 6, wobei die erste Auswahleinheit die verschlüsselten Daten auswählt, wenn die Anzahl der ausgeführten Runden ungerade ist, und sonst die invertierten Daten auswählt, wenn die Anzahl der ausgeführten Runden gerade ist.
  8. Kryptografiesystem nach Anspruch 6 oder 7, wobei die zweite Auswahleinheit die Eingabedaten auswählt, wenn die Anzahl der ausgeführten Runden 0 ist, und sonst die von der ersten Auswahleinheit ausgegebenen Daten auswählt, wenn die Anzahl der ausgeführten Runden größer als 0 ist.
  9. Kryptografiesystem nach einem der Ansprüche 1 bis 8, wobei der Verschlüsselungsalgorithmus als Datenverschlüsselungsstandard(DES)-Verschlüsselungsalgorithmus ausgeführt ist.
  10. Kryptografiesystem nach einem der Ansprüche 1 bis 9, wobei die Kompensationsdaten alternierend den gleichen Wert wie die in jeder Runde aktualisierten und gespeicherten Daten oder eines invertierten Wertes der in jeder Runde aktualisierten und gespeicherten Daten aufweisen.
  11. Kryptografiesystem nach einem der Ansprüche 1 bis 10, wobei die Kompensationsdaten die aktualisierten und gespeicherten Daten kompensieren und auf Werte derart gesetzt werden, dass die Summe in jeder Runde auf dem konstanten Wert gehalten wird.
  12. Kryptografiesystem zur Verschlüsselung von Eingabedaten durch Aufteilen der Eingabedaten in einen ersten Block und einen zweiten Block gemäß einem Verschlüsselungsalgorithmus, der eine wiederholte Rundenstruktur aufweist, mit

    – einer Verschlüsselungseinheit (410), die in jeder Runde jeweils Daten des ersten und zweiten Blocks aktualisiert und speichert, die gemäß dem Verschlüsselungsalgorithmus verschlüsselt werden, und die verschlüsselten Daten nach Ausführung der Verschlüsselung für eine vorgegebene Anzahl von Runden ausgibt,

    gekennzeichnet durch

    – eine Kompensationseinheit (430), die erste und zweite Kompensationsdaten so erzeugt und speichert, dass die Summe einer Hammingdistanz für die aktualisierten und gespeicherten Daten des ersten Blocks und die ersten Kompensationsdaten auf einem konstanten Wert gehalten wird, und die Summe der Hammingdistanz für die aktualisierten und gespeicherten Daten des zweiten Blocks und die zweiten Kompensationsdaten auf einem konstanten Wert gehalten wird.
  13. Kryptografiesystem nach Anspruch 12, wobei die Verschlüsselungseinheitumfasst:

    – eine erste Eingabeeinheit, welche basierend auf der ausgeführten Rundenanzahl zu verschlüsselnde Daten des ersten Blocks empfängt,

    – eine zweite Eingabeeinheit, welche basierend auf der ausgeführten Rundenanzahl zu verschlüsselnde Daten des zweiten Blocks empfängt,

    – ein erstes Register, welches basierend auf einem Taktsignal Daten speichert, die von der ersten Eingabeeinheit ausgegeben werden,

    – ein zweites Register, welches basierend auf dem Taktsignal Daten speichert, die von der zweiten Eingabeeinheit ausgegeben werden,

    – eine Verschlüsselungsschaltung, welche die im ersten und zweiten Register gespeicherten Daten gemäß dem Verschlüsselungsalgorithmus verschlüsselt,

    – eine erste Ausgabeeinheit, welche verschlüsselte Daten des ersten Blocks basierend auf der ausgeführten Rundenanzahl ausgibt, und

    – eine zweite Ausgabeeinheit, welche verschlüsselte Daten des zweiten Blocks basierend auf der ausgeführten Rundenanzahl ausgibt.
  14. Kryptografiesystem nach Anspruch 13, wobei

    – die erste Eingabeeinheit den ersten Block der Eingabedaten empfängt, wenn die Anzahl der ausgeführten Runden 0 ist, und die verschlüsselten Daten des ersten Blocks empfängt, wenn die Anzahl der ausgeführten Runden größer als 0 ist, und

    – die zweite Eingabeeinheit den zweiten Block der Eingabedaten empfängt, wenn die Anzahl der ausgeführten Runden 0 ist, und die verschlüsselten Daten des zweiten Blocks empfängt, wenn die Anzahl der ausgeführten Runden größer als 0 ist.
  15. Kryptografiesystem nach Anspruch 13 oder 14, wobei

    – die erste Ausgabeeinheit die verschlüsselten Daten des ersten Blocks ausgibt, wenn die Anzahl der ausgeführten Runden identisch mit der vorgegebenen Rundenanzahl ist, und die verschlüsselten Daten des ersten Blocks zur ersten Eingabeeinheit und zur Kompensationseinheit überträgt, wenn die ausgeführte Rundenanzahl niedriger als die vorgegebene Rundenanzahl ist, und

    – die zweite Ausgabeeinheit die verschlüsselten Daten des zweiten Blocks ausgibt, wenn die Anzahl der ausgeführten Runden identisch mit der vorgegebenen Rundenanzahl ist, und die verschlüsselten Daten des zweiten Blocks zur zweiten Eingabeeinheit und zur Kompensationseinheit überträgt, wenn die ausgeführte Rundenanzahl niedriger als die vorgegebene Rundenanzahl ist.
  16. Kryptografiesystem nach einem der Ansprüche 12 bis 15, wobei die Kompensationseinheit umfasst:

    – eine erste Kompensationsdatengeneratoreinheit, welche die ersten Kompensationsdaten basierend auf der ausgeführten Rundenanzahl erzeugt,

    – eine zweite Kompensationsdatengeneratoreinheit, welche die zweiten Kompensationsdaten basierend auf der ausgeführten Rundenanzahl erzeugt,

    – ein erstes Kompensationsregister, welches basierend auf einem Taktsignal die ersten Kompensationsdaten speichert, und

    – ein zweites Kompensationsregister, welches basierend auf dem Taktsignal die zweiten Kompensationsdaten speichert.
  17. Kryptografiesystem nach Anspruch 16, wobei die erste Kompensationsdatengeneratoreinheit umfasst:

    – eine Invertereinheit, welche den ersten Block der Eingabedaten invertiert, und

    – eine erste Auswahleinheit, welche die im zweiten Kompensationsregister gespeicherten Daten oder die von der Invertereinheit ausgegebenen Daten basierend auf der ausgeführten Rundenanzahl auswählt und ausgibt.
  18. Kryptografiesystem nach Anspruch 17, wobei die erste Auswahlschaltung die von der Invertereinheit ausgegebenen Daten auswählt, wenn die Anzahl der ausgeführten Runden 0 ist, und sonst die im zweiten Kompensationsregister gespeicherten Daten auswählt, wenn die Anzahl der ausgeführten Runden größer als 0 ist.
  19. Kryptografiesystem nach einem der Ansprüche 16 bis 18, wobei die zweite Kompensationsdatengeneratoreinheitumfasst:

    – eine Exklusiv-ODER-Schaltung, welche eine Exklusiv-ODER-Verknüpfung mit der Ausgabe des ersten Kompensationsregisters und vorgegebenen Daten ausführt, die für den gegebenen Verschlüsselungsalgorithmus benutzt werden, und

    – eine zweite Auswahleinheit, welche die Eingabedaten des zweiten Blocks oder die von der Exklusiv-ODER-Schaltung ausgegebenen Daten basierend auf der ausgeführten Rundenanzahl auswählt und ausgibt.
  20. Kryptografiesystem nach Anspruch 19, wobei die zweite Auswahleinheit den zweiten Block der verschlüsselten Daten auswählt, wenn die Anzahl der ausgeführten Runden 0 ist, und sonst die Daten von der ersten Exklusiv-ODER-Schaltung auswählt, wenn die Anzahl der ausgeführten Runden größer als 0 ist.
  21. Kryptografiesystem nach einem der Ansprüche 12 bis 20, wobei der Verschlüsselungsalgorithmus als Feistelverschlüsselungsalgorithmus ausgeführt ist.
  22. Kryptografiesystem nach einem der Ansprüche 12 bis 21, wobei

    – die ersten Kompensationsdaten alternierend den gleichen Wert wie die Daten des ersten Blocks oder einen invertierten Wert der Daten des ersten Blocks in aufeinander folgenden Runden aufweisen und

    – die zweiten Kompensationsdaten alternierend den gleichen Wert wie die Daten des zweiten Blocks oder einen invertierten Wert der Daten des zweiten Blocks in aufeinander folgenden Runden aufweisen.
  23. Kryptografiesystem nach einem der Ansprüche 12 bis 22, wobei

    – die ersten Kompensationsdaten die aktualisierten und gespeicherten Daten des ersten Blocks kompensieren und die zweiten Kompensationsdaten die aktualisierten und gespeicherten Daten des zweiten Blocks kompensieren, und

    – die ersten Kompensationsdaten und die zweiten Kompensationsdaten auf Werte derart gesetzt sind, dass die Summe in jeder Runde auf dem konstanten Wert gehalten wird.
  24. Verfahren zur Verschlüsselung von Eingabedaten gemäß einem Verschlüsselungsalgorithmus mit einer wiederholten Rundenstruktur, bei dem

    – gespeicherte Daten gemäß dem Verschlüsselungsalgorithmus in jeder Runde verschlüsselt werden, gekennzeichnet durch folgende Schritte:

    – Erzeugen von Kompensationsdaten derart, dass eine Summe einer Hammingdistanz für die verschlüsselten Daten und die Kompensationsdaten auf einem konstanten Wert gehalten wird, und

    – gleichzeitiges Speichern der Kompensationsdaten und der verschlüsselten Daten basierend auf einem Taktsignal.
  25. Verfahren nach Anspruch 24, wobei die Kompensationsdaten in aufeinander folgenden Runden alternierend den gleichen Wert wie die verschlüsselten Daten oder einen invertierten Wert der verschlüsselten Daten aufweisen.
  26. Verfahren nach Anspruch 24 oder 25, wobei der Verschlüsselungsalgorithmus als ein DES-Verschlüsselungsalgorithmus oder als ein Feistelverschlüsselungsalgorithmus ausgeführt wird.
Es folgen 6 Blatt Zeichnungen






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com