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