Kryptosystem auf Basis der 8-bit-Mikrokontroller-Familie uPSD von STMicroelectronics

Fraktales Verschlüsselungssystem

15. November 2006, 16:17 Uhr | Herbert Golawski
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 2

Implementation des Kryptosystemprototypen auf dem uPSD3234

Die benutzte Version des AES-Rijndael stammt von den Internetseiten der Entwickler [6]. Der Algorithmus wurde vom NIST für die Blocklänge 128 bit und die drei Schlüssellängen 128, 192 und 256 bit als Standardalgorithmus freigegeben [3]. Für den Kryptosystemprototypen auf der uPSD-Entwicklungsplattform wurden beide UART-Ports angepasst. Über den ersten UART-Port lassen sich Testdaten und Kontrollinformationen mit Hilfe eines Standard-Terminalprogramms mit dem Prototypen des Verschlüsselungssystems austauschen. Diese UART-Schnittstelle wurde deshalb um das X-ON/X-OFF-Protokoll erweitert, damit auch größere Datenmengen zwischen Host und dem Kryptosystem übermittelt werden können. Mit dem zweiten UART-Port können bei Bedarf Debug-Informationen mit der Entwicklungsumgebung ausgetauscht oder der Programmfluss gesteuert werden.

Insbesondere zur Kommunikation mit dem Prototypen über UART und für das neue Einmalschlüsselverfahren auf fraktaler Basis wurden API-Funktionen (Application Programming Interface) erweitert. Die Kernalgorithmen des AES-Rijndael wurden unverändert aus dem Originalcode [6] übernommen. Das einzige größere Problem bei der Übernahme der Kernfunktionen des AES-Rijndael aus dem C-Quellcode auf die uPSD-Plattform lässt sich durch Austausch von Variablentypen und eine explizite Typkonversion (Typecast) beheben. Ohne diese Korrektur werden in der Funktion mul() bei der Modulo-Operation auf Bytevariablen beim Überlauf (255 -> 0) um den Wert 1 versetzte Werte in der Substitutionsbox (S-Box) referenziert, die sich wegen der starken Fehlerfortpflanzung in Verschlüsselungsverfahren nachhaltig auf die erzeugten Geheimtextdaten auswirken. Dieser Fehler lässt sich bei einer PC-basierten Programmversion des gleichen Sourcecodes nicht beobachten.

Der Originalcode enthält eine Reihe von Testfunktionen, mit denen Implementationen des AES-Rijndael in unterschiedlichen Systemen auf korrekte Funktion überprüft werden können. Zwei dieser Funktionen der VKKAT (Variable Key Known Answer Test) und der VTKAT (Variable Text Known Answer Test) wurden in das Prototypendesign aufgenommen.

Ohne optimierende Maßnahmen erreicht der Prototyp mit dem uPSD, in Abhängigkeit von der verwendeten Schlüssel- oder Blocklänge, Verarbeitungsgeschwindigkeiten von zirka 100 – 150 Zeichen pro Sekunde.

Erweiterung des AES-Rijndael um ein fraktales Einmalschlüsselverfahren

Im Rahmen der Entwicklung wurde für den Blockverschlüsselungsalgorithmus AES ein neues Einmalschlüsselverfahren auf der Basis von fraktalen Berechnungsmethoden und einem Pseudozufallszahlengenerator auf der uPSD-Plattform implementiert. Ein Einmalschlüssel erhöht die Sicherheit, da anstelle nur eines Schlüssels eine Folge von Schlüsseln bei der Verschlüsselung eingesetzt wird. Damit niemals die gleiche Schlüsselfolge wiederverwendet wird, muss ein sehr grosser Schlüsselraum zur Verfügung stehen. Das vorgeschlagene Einmalschlüsselverfahren eignet sich wegen des zugrundeliegenden großen Schlüsselraumes und der ausgeprägten Parametrisierbarkeit insbesondere auch für Verschlüsselungssysteme, die eine Vielzahl von Nutzern aufweisen und beständig die Sicherheit ihrer Übertragungskanäle überprüfen und dazu die Schlüssel ändern müssen, z.B. PayTV, Video on Demand, Music on Demand.

Der zugrundeliegende Blockverschlüsselungsalgorithmus bleibt unverändert erhalten. Es ist jedoch darauf zu achten, dass das Einmalschlüsselverfahren Angriffen der Kryptoanalyse widersteht, die von eingeschränkten Schlüsselräumen ausgehen. Dazu sollte das Verfahren keinerlei Rückschlüsse auf strukturelle Schlüsselinformationen in den Geheimtextdaten hinterlassen, wenn gezielte Angriffe mit ausgewähltem Klartext erfolgen [8].

Am Beginn einer Verschlüsselung werden initiale Parameter für den Einmalschlüsselgenerator festgelegt und damit die Basis für den Sitzungsschlüssel aufgebaut. Die eingesetzten fraktalen Berechnungen in der komplexen Ebene besitzen die Eigenschaft, sprunghafte Punktfolgen abzubilden, die sich über die gesamte komplexe Ebene erstrecken können und parameterabhängige Konvergenz- bzw. Divergenzeigenschaften besitzen. Außer einzelnen Attraktionspunkten wird kein Punkt in sich selbst überführt, aufeinanderfolgende Punkte einer Berechnung sind demnach einmalig [12].

Diese Eigenschaften macht sich das Einmalschlüsselverfahren zunutze (Bild 3). Ausgehend vom Startwert werden Punktfolgen mit Hilfe von iterierten Funktionensystemen vom Grad n ? 2 – z.B. Mandelbrot- oder Julia-Mengen – bestimmt, bitweise manipuliert und anschließend byteweise als Datenbasis in einem Bytefeld abgelegt. Das Bytefeld enthält somit eine quasizufällige Abfolge von Bytewerten, da der erreichbare Zahlenraum bei der Berechnung von Punktfolgen in der komplexen Ebene mit fraktalen Berechnungsmethoden nur durch numerische Vorgaben begrenzt ist und zusätzlich sitzungsspezifische Parameter bei der Berechnung berücksichtigt werden. Aus dem aktuellen Wert des Pseudozufallszahlengenerators wird eine Selektionsfunktion bestimmt, mit deren Hilfe eine Bytefolge aus dem fraktal berechneten Bytefeld entnommen und zu einem Basisschlüssel für den Blockverschlüsselungsalgorithmus zusammengestellt wird.

Jede neue Sitzung erzeugt für den Einmalschlüssel ein eigenes fraktal berechnetes Bytefeld und initialisiert den Pseudozufallszahlengenerator erneut. Für jeden zu verschlüsselnden Datenblock wird ein eigener Basisschlüssel mit Hilfe einer zufällig gewählten Selektionsfunktion aus dem Bytefeld bestimmt. Das Einmalschlüsselverfahren erzeugt eine Schlüsselfolge, bei der wegen des zugrundeliegenden, großen Schlüsselraumes (Mandelbrot- und Juliamengen) eine Schlüsselfolge – außer zur Entschlüsselung – niemals wiederverwendet werden muss. Ein Angreifer hingegen muss die gesamte Schlüsselfolge einer Sitzung ermitteln, um den gesamten Geheimtext entschlüsseln zu können. Die Kenntnis eines einzelnen Schlüssels aus der Schlüsselfolge erlaubt die Entschlüsselung jeweils nur eines Datenblocks. Durch die einmalige Abfolge von Basisschlüsseln, kombiniert mit einem sicheren Verschlüsselungsalgorithmus, schützt das Verfahren vor Angriffsmethoden der Kryptoanalyse basierend auf einer Mindestmenge von Geheimtextdaten, die mit einem gleichbleibenden Schlüssel bearbeitet wurden.

Erste Prüfungen des Einmalschlüsselverfahrens auf statistische Unabhängigkeit der erzeugten Zahlenfolgen mit dem Testprogramm DIEHARD und der Nist Statistical Testsuite [13, 14] haben ergeben, dass die aktuell eingesetzte Version des Einmalschlüsselverfahrens statistische Abhängigkeiten in den Ausgangsdaten enthält und deshalb unabhängig vom AES-Rijndael-Verschlüsselungsverfahren nicht sicher ist. In Verbindung mit dem Blockverschlüsselungsalgorithmus AES-Rijndael und im sicheren CBC-Modus (Cipher Block Chaining) werden keine statistischen Auffälligkeiten der damit erzeugten Zahlenfolgen beobachtet. Damit ist eine Kombination aus AES-Rijndael und dem vorgestellten Einmalschlüsselverfahren vor einer statistischen Analyse im Rahmen eines kryptografischen Angriffs als sicher zu bewerten.

507ek043_03.jpg
Bild 3. Das Einmalschlüsselverfahren auf fraktaler Berechnungsbasis nutzt ein Fraktales Feld, aus dem per Zufallszahlengenerator der Basisschlüssel gebildet wird.

  1. Fraktales Verschlüsselungssystem
  2. Physikalischer Schutz
  3. Implementation des Kryptosystemprototypen auf dem uPSD3234
  4. Symmetrischer Blockverschlüsselungsalgorithmus AES-Rijndael

Jetzt kostenfreie Newsletter bestellen!