-
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, ElGamal-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 Leistungsanalyseangriff, 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 Leistungsanalyseangriff 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.
-
Die Offenlegungsschrift
US 2003/0140240 A1 offenbart ein Kryptographiesystem und ein zugehöriges Datenverschlüsselungsverfahren, bei denen durch eine spezielle Bitlängenverdopplung aus Eingabedaten Zwischendaten derart erzeugt werden, dass für nachfolgende Verschlüsselungsoperationen mit den Zwischendaten ein Hamminggewicht unabhängig von den Eingabedaten und einem benutzten Verschlüsselungsschlüssel konstant gehalten wird.
-
Die Offenlegungsschrift
US 2004/0025032 A1 offenbart ein Kryptographiesystem und ein zugehöriges Datenverschlüsselungsverfahren, bei denen der Verschlüsselungsvorgang abhängig von einer zuvor erzeugten Zufallszahl entweder mit einem normalen Verschlüsselungsalgorithmus oder mit einem inversen Verschlüsselungsalgorithmus hiervon ausgeführt wird, um auf diese Weise zufallsverteilte Leistungscharakteristika der Verschlüsselungsoperation zu erzielen und dadurch die Sicherheit gegenüber Leistungsanalyseangriffen zu verbessern. Alternativ wird vorgeschlagen, die verschiedenen sequentiellen Einzelschritte des Verschlüsselungsalgorithmus für aufeinanderfolgende Runden zufällig permutiert auszuführen oder Zufallsfunktionen in den Verschlüsselungsalgorithmus einzufügen.
-
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 10 und durch ein Verfahren zur Verschlüsselung von Eingabedaten mit den Merkmalen des Patentanspruchs 21. 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 Registergespeicherten 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 32 Bit ist, beträgt die Kapazität oder Größe des Kompensationsregisters 32 Bit und die Hammingdistanz ist daher gleich 32 Bit. In einem anderen Beispiel sollte die Hammingdistanz der im Kompensationsregister gespeicherten Daten gleich 20 Bit sein, wenn die Hammingdistanz der Daten gleich 12 Bit ist, um eine gesamte Hammingdistanz von 32 Bit zu erhalten. Daher bleibt die Hammingdistanz der in einem Gesamtregister von 64 Bit, 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 inveriterte 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 Kampensationsdaten 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 8 Bit und für eine Hammingdistanz von 8 Bit.
-
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 4 Bit und die Hammingdistanz der aktualisierten und im Kompensationsregister 237 gespeicherten Daten (01010110 → 00001100) ist gleich 4 Bit. Daher ist die gesamte Hammingdistanz der aktualisierten und in den Registern 213 und 237 gespeicherten Daten gleich 8 Bit.
-
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 5 Bit und die Hammingdistanz der aktualisierten und im Kompensationsregister 237 gespeicherten Daten (00001100 → 00111000) ist gleich 3 Bit. Daher ist die gesamte Hammingdistanz der aktualisierten und in den Registern 213 und 237 des Kryptografiesystems 200 gespeicherten Daten gleich 8 Bit, 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 8 Bit 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. ~L0 R0 → L1 ~R1 → ~L2 R2 → 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 8 Bit 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 (01100101 → 11100101) gleich 1 Bit, und die Hammingdistanz der aktualisierten und im ersten Kompensationsregister 439 gespeicherten Daten (10011010 → 1100101) ist gleich 7 Bit. Zusätzlich ist die Hammingdistanz der aktualisierten und im zweiten Register 417 gespeicherten Daten (01010110 → 11110011) gleich 4 Bit, und die Hammingdistanz der aktualisierten und im zweiten Kompensationsregister 433 gespeicherten Daten (01010110 → 00001100) ist gleich 4 Bit. Daher ist die gesamte Hammingdistanz der aktualisierten und im ersten Register 413 und im ersten Kompensationsregister 439 gespeicherten Daten gleich 8 Bit, und die gesamte Hammingdistanz der aktualisierten und im zweiten Register 417 und im zweiten Kompensationsregister 433 gespeicherten Daten ist ebenfalls gleich 8 Bit. Daher ist die gesamte Hammingdistanz der aktualisierten und in den Registern 413, 417, 439 und 433 gespeicherten Daten gleich 16 Bit.
-
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 (11100101 → 00110101) gleich 7 Bit, 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 5 Bit, und die Hammingdistanz der aktualisierten und im zweiten Kompensationsregister 433 gespeicherten Daten (00001100 → 00111000) ist gleich 3 Bit. Daher ist die gesamte Hammingdistanz der aktualisierten und im ersten Register 413 und im ersten Kompensationsregister 439 gespeicherten Daten gleich 8 Bit, und die gesamte Hammingdistanz der aktualisierten und im zweiten Register 417 und im zweiten Kompensationsregister 433 gespeicherten Daten ist ebenfalls gleich 8 Bit. Daher ist die gesamte Hammingdistanz der aktualisierten und in den Registern 413, 417, 439 und 433 gespeicherten Daten gleich 16 Bit 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 16 Bit 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. Mach 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.