-
Die Erfindung betrifft ein symmetrisches Verfahren zum blockweisen Verschlüsseln von Daten mit, verglichen zu herkömmlichen Verfahren wie DES oder AES, variabler und weitaus größerer Blocklänge. Das Verfahren, welches auf einem handelsüblichen Universalcomputer lauffähig ist, wird in folgenden Schritten ausgeführt:
- – Ableitung des Internen Zustands des Verfahrens vom Schlüssel,
- – Pseudozufällige Permutation von Klartextdatenbits oder von Gruppen einzelner Klartextdatenbits in Abhängigkeit zur ursprünglichen Größe des Klartext-Datenblocks und zum Schlüssel,
- – Partitionierung großer Klartextdatenblöcke in Blöcke unterschiedlicher Größe, wobei die Blockgrößen in Abhängigkeit zur ursprünglichen Größe des jeweiligen Klartextdatenblocks und zum Schlüssel pseudozufällig bestimmt werden,
- – Verschlüsselung jedes einzelnen partitionierten Datenblocks mit den folgenden Schritten:
– Ausführung einer ersten Luby-Rackoff Runde mit einem vorzugsweise langen linken binären String und einem kurzen rechten binären String,
– Ausführung einer zweiten Luby-Rackoff Runde mit einem vorzugsweise kurzen linken binären String und einem langen rechten binären String,
– Ausführung einer dritten Luby-Rackoff Runde mit einem vorzugsweise langen linken binären String und einem kurzen rechten binären String.
-
Symmetrische Verschlüsselungsverfahren sind Systeme, bei denen sowohl der Sender einer Nachricht als auch der Empfänger denselben Schlüssel verwenden. Der Schlüssel muss vor Beginn der Kommunikation vereinbart worden sein, beispielsweise mittels eines asymmetrischen Verfahrens wie dem Diffie-Hellman-Schlüsseltausch oder dem RSA Algorithmus. Zu den bekannten klassischen symmetrischen Verfahren zählt der Cäsar-Chiffre, DES (Data Encryption Standard), AES (Advanced Encryption Standard), jedoch auch das One-Time-Pad, welches das bislang einzige informationstheoretisch beweisbar sichere Verschüsselungsverfahren darstellt. Eine Vielzahl der modernen und als sicher angesehenen Verfahren basieren auf dem in den 1970'er Jahren von Horst Feistel bei IBM entwickelten Substitutions-Permutations-Netzwerk, welches als Feistelchiffre bekannt ist. Luby and Rackoff konnten 1988 mathematisch beweisen, dass ein Feistelnetzwerk mit drei Runden unter Verwendung dreier nichtlinearer Rundenfunktionen sicher ist.
-
Beim klassischen Feistelchiffre werden Klartextblöcke in zwei gleich große Teilblöcke zerlegt. Die Größe der Klartextblöcke kann im Prinzip frei gewählt werden. Üblich sind Größen von 64 und 128 Bit. Blöcke mit mindestens dieser Größe verhindern sehr effektiv klassische Codebuchattacken. Jeder der Blöcke wird in zwei gleich große Hälften (L0 und R0) geteilt und in n Runden mit verschiedenen Schlüsseln, welche in der Regel von einem Schlüssel abgeleitet sind, verschlüsselt. Am Ende werden die resultierenden Hälften wieder zusammengesetzt. Folgende Rundenformel wird in Runde i der insgesamt n Runden angewandt: Li = Ri–1; Ri = Li-1 ⊕ f(Ri-1, Ki);
-
f ist die sogenannte Rundenfunktion und Ki der jeweilige Rundenschlüssel. Der Chiffretext wird aus der Zusammenführung der geordneten Bitgruppen Ln·Rn nach n Runden gebildet. Die Entschlüsselung erfolgt durch Anwendung der Rundenformeln in umgekehrter Reihenfolge. Die einzelnen Rundenfunktionen müssen hierzu nicht umkehrbar sein.
-
Es sind auch sogenannte nicht balancierte Feistelnetzwerke bekannt, bei denen entweder die beiden Hälften L und R nicht gleich groß sind oder aus einem Block für die Rundenfunktion mehr als zwei Teile gebildet werden. Der Beweis der Sicherheit durch Luby und Rackoff wurde speziell für balancierte Feistelnetzwerke erbracht. Ist beispielsweise der linke String Li-1 sehr lang, während der rechte String Ri-1 nur wenige m Bit umfasst, so ist die Rundenfunktion f(Ri-1, Ki) fast ausschließlich vom Rundenschlüssel Ki abhängig und, aufgrund seiner Länge, nur in geringem Maße vom rechten String Ri-1. Die Angriffsicherheit eines nicht balancierten Feistelnetzwerks errechnet sich aus dem generalisierten Beweis von Luby und Rackoff. Die Angriffsicherheit ist direkt proportional zum Faktor 2m. m ist dabei die Länge der kürzeren der beiden geordneten Bitgruppen L und R in Bit. Nicht balancierte Feistelnetzwerke werden daher eher selten beim Design von Verschlüsselungsalgorithmen verwendet, denn die Angriffssicherheit ist dem generalisierten Beweis von Luby und Rackoff zufolge nur bei balancierten Feistelnetzwerken optimal.
-
Einer der entscheidenden Vorteile von Feistelchiffren ist die Eigenschaft, dass alle Datenbits innerhalb eines Blocks des Chiffretexts von allen Datenbits im Klartextblock abhängig sind. Horst Feistel prägte hierfür den Begriff der „Vollständigkeit”. Heute ist die wünschenswerte Eigenschaft eines Verschlüsselungsalgorithmus, dass eine kleine Änderung im Klartext und nicht nur im Schlüssel zu einer drastischen Änderung im Chiffretext führt, generalisiert als „Striktes Avalanche Kriterium (strict avalanche criterium SAC)” bekannt. Das SAC wird erfüllt, wenn sich bei Veränderung eines einzigen Bits im Klartext die Hälfte der Bits im Chiffretext ändern. Verschlüsselungsverfahren mit kurzer Blocklänge weisen dabei naturgemäß den Nachteil auf, dass sich aufgrund der beschränkten Blocklänge nur eine geringe Anzahl Bits im Chiffretext ändern kann. Bei einem im CBC-Modus betriebenen Blockverschlüsselungsalgorithmus sind Chiffretextblöcke lediglich von allen zuvor verschlüsselten Klartextblöcken abhängig, jedoch nicht auch umgekehrt zuvor verschlüsselte Blöcke von später verschlüsselten Klartextblöcken. Beim Cipher Block Chaining (CBC) wird jeder Klartextblock zunächst mit dem jeweils zuvor verschlüsselten Block bitweise exklusiv- oder verknüpft. Die hohe Qualität der Verschlüsselung eines Blockverschlüsselungsalgorithmus mit großer Blocklänge lässt sich, bezogen auf das SAC, weder mit Cipher Block Chaining noch mit einem anderen auf Blockverschlüsselungsalgorithmen mit kurzer Blocklänge anwendbaren Betriebsmodus erreichen. Bei synchronen Stromverschlüsselungsalgorithmen gibt es konstruktionsbedingt sogar überhaupt keine Abhängigkeit von Bitgruppen im Klartext untereinander.
-
Die durchschnittliche Blocklänge der weltweit übertragenen oder gespeicherten Klartexte ließe die Verwendung vergleichsweise großer Blocklängen für Blockverschlüsselungsalgorithmen zu. Die maximale Paketgröße eines Protokolls (MTU) in der Vermittlungsschicht (Schicht 3) des OSI-Modells, welche ohne Fragmentierung in den Rahmen der Sicherungsschicht (Schicht 2) übertragen werden kann, beträgt bei Ethernet 1500 Byte, bei PPPoE 1492 Byte und bei Gigabit Ethernet sogar 9000 Byte. MTU steht für „Maximum Transmission Unit”. Anstatt 8 Byte große Blöcke wie im Falle von DES oder 16 Byte-Blöcke wie bei AES, Twofish, IDEA, RC6, Magenta oder Serpent der Reihe nach zu verschlüsseln, spricht prinzipiell nichts dagegen, beispielsweise 256 Byte oder 1024 Byte auf einmal zu verschlüsseln und dadurch das Strikte Avalanche Kriterium (SAC) erheblich besser zu erfüllen. Der inhärente Nachteil derartiger Designs ist jedoch, dass wegen der heute üblichen festen Blocklänge von Blockverschlüsselungsverfahren im Durchschnitt mehr Daten zu übertragen sind. Endet der letzte Klartextdatenrahmen beispielsweise mit Byte Nummer 513, so muss bei einer Blocklänge von 512 Byte der letzte Klartextdatenblock mit 510 Byte aufgefüllt werden. In der Folge werden somit 510 Byte zu viel übertragen. Blöcke variabler Länge oder die heute üblichen kurzen Blöcke schaffen Abhilfe. Eine völlig variable Länge des Klartextdatenstroms bei unveränderter Länge des resultierenden Chiffretexts ist bislang nur mit Stromchiffrierungsverfahren wie ARCFOUR realisiert worden. Derartige Verfahren werden heute beispielsweise in WLAN Routern zur Verschlüsselung von Ethernet Datenpaketen verwendet. Blockverschlüsselungsalgorithmen mit konfigurierbarer, und damit mit in engen Grenzen variabler Blocklänge, sind zwar bekannt, jedoch verfügen alle weit verbreiteten Verfahren wie AES, DES, Twofish, IDEA, RC6, Magenta und Serpent über unveränderliche Blocklängen, können jedoch teilweise mit variabler Schlüssellänge operieren.
-
Die bekannten konfigurierbaren Blockverschlüsselungsverfahren können lediglich derart konfiguriert werden, dass sich die eingestellte Blocklänge im Rahmen von Zweierpotenzen wie 64, 128, 256, 512 oder 1024 Bit bewegt. Mit steigender Größe der gewählten Blocklänge rückt naturgemäß die Problematik in den Vordergrund, dass nicht völlig mit Nutzdaten gefüllte Klartextdatenblöcke mit Fülldaten ergänzt werden müssen und daraus übermäßiger Datenverkehr resultiert oder dass verschlüsselte Dateien signifikant länger als die entsprechenden Klartextdateien werden.
-
Angriffe auf ein Blockverschlüsselungsverfahren können naturgemäß lediglich über die bekannten Eigenschaften des Verfahrens geführt werden. Die feste Blocklänge, wie sie bei der überwiegenden Mehrzahl der bekannten Verfahren üblich ist, hilft beim systematischen Sammeln von Daten für statistische Untersuchungen über den gesamten Schlüsselraum. Auch ist eine konfigurierbare Blocklänge für Blockverschlüsselungsverfahren kein unüberwindbares Hindernis für eine erfolgreiche Kryptanalyse. Der Analyseaufwand steigt nicht zwangsläufig mit der Zahl der vom Verfahren unterstützten Blocklängen, wenn die maßgeblichen Eigenschaften des Algorithmus über unterschiedliche Blocklängen hinweg unverändert bleiben.
-
Alle bekannten Blockverschlüsselungsverfahren weisen entweder den Nachteil auf, dass die Blocklänge wesentlich kürzer als die durchschnittliche Länge der mit ihnen verschlüsselten Klartexte ist und dass die Blocklänge feststeht oder bestenfalls konfigurierbar ist. Hierdurch ist die Möglichkeit zum Angriff auf Implementierungen bekannter Verfahren gegeben. Konstante Startsequenzen (Header) in TCP- oder UDP-Datenpaketen können hierdurch beispielsweise die Verwendung eines konstanten Schlüssels und wiederkehrenden Klartext verraten. Durchschnittliche Klartexte stellen beispielsweise UDP- oder TCP Datenpakete dar, die beispielsweise WLAN Router vor dem Versenden mit einem symmetrischen Verschlüsselungsverfahren verschlüsseln. Häufig sind derartige Pakete länger als 4000 Bit (500 Byte). Bilddateien, Musikdateien, als auch Textdokumente sind selten kürzer als 80000 Bit (10000 Byte). Die mit weitem Abstand populärsten Blockverschlüsselungsverfahren verschlüsseln jedoch bestenfalls 128 Bit auf einmal. Die erhebliche Diskrepanz zwischen der Blocklänge populärer Blockverschlüsselungsverfahren und der über die vergangenen Jahrzehnte angestiegenen Paketgröße üblicher Klartexte verdeutlicht dass das Strikte Avalanche Kriterium (SAC) über die Gesamtlänge typischer Klartextpakete heute in steigendem Maße unzureichend erfüllt wird. Das folgende Beispiel eines konstanten Headers in Datenpaketen verdeutlicht, dass das SAC durch Vergrößerung der Blocklänge eindeutig besser erfüllt wird. Wird ein TCP Datenpaket ohne Partitionierung als Ganzes, zusammen mit konstantem Header, Blockzähler und allen Nutzdaten mit einem Feistelchiffre verschlüsselt, sinkt die Wahrscheinlichkeit für das Auftreten wiederkehrender Chiffretexte erheblich. Blockzähler sind bei den meisten Internetprotokollen ein fester Bestandteil.
-
Der im Patentanspruch 1 angegebenen Erfindung liegt das Problem eines Blockdatenverschlüsselungsverfahrens zugrunde, bei dem
- – Klartextblöcke in einem weiten Bereich in ihrer Größe variieren können,
- – Chiffretextblöcke weder kleiner noch größer als die korrespondierenden Klartextblöcke sind,
- – der Interne Zustand des Verfahrens vom Schlüssel abgeleitet wird,
- – Pseudozufällige Permutation von Klartextdatenbits oder von Gruppen einzelner Klartextdatenbits in Abhängigkeit zur ursprünglichen Größe des Klartextdatenblocks und zum Schlüssel durchgeführt wird,
- – große Klartextdatenblöcke in Blöcke unterschiedlicher Größe partitioniert werden, wobei die Blockgrößen in Abhängigkeit zur ursprünglichen Größe der Klartextdatenblöcke und zum Schlüssel pseudozufällig bestimmt werden,
- – jeder einzelne partitionierte Datenblock mit den folgenden Schritten verschlüsselt wird:
– Ausführung einer ersten Luby-Rackoff Runde mit einem vorzugsweise langen linken binären String und einem kurzen rechten binären String,
– Ausführung einer zweiten Luby-Rackoff Runde mit einem vorzugsweise kurzen linken binären String und einem langen rechten binären String,
– Ausführung einer dritten Luby-Rackoff Runde mit einem vorzugsweise langen linken binären String und einem kurzen rechten binären String.
-
Hierdurch treten die vorstehend geschilderten Nachteile nicht auf.
-
Dieses Problem wird durch die im Patentanspruch 1 aufgeführten Merkmale gelöst.
-
Ein erfindungsgemäßes Blockdatenverschlüsselungsverfahren mit variabler Blocklänge erzeugt zunächst aus dem Schlüssel alle für den Betrieb des Verfahrens benötigten Rundenschlüssel und initialisiert alle Variablen, die für den Betrieb von Pseudozufallszahlengeneratoren benötigt werden, sowie Permutationstabellen. Der gesamte Interne Zustand des Verfahrens wird alleine durch den Schlüssel bestimmt. Zu diesem Zweck können beispielsweise Kompressionsfunktionen wie MD5, SHA-1 oder Whirlpool, als auch Pseudozufallszahlengeneratoren oder beliebige Kombinationen dafür geeigneter nichtlinearer und nicht umkehrbarer Funktionen eingesetzt werden. Für viele Applikationen ist es keineswegs störend, wenn die Ausführung des gesamten Verfahrensschritts erheblichen Rechenaufwand erfordert. Beispielsweise wird es den Teilnehmern eines verschlüsselten Telefongesprächs nicht einmal auffallen, wenn beim Aufbau der Verbindung der erste Verfahrensschritt mehrere zehn Millionen Maschineninstruktionen umfasst und somit länger als 0,1 oder 0,3 Sekunden dauert. Für einen Angreifer ist dieser, verglichen zu herkömmlichen Blockverschlüsselungsverfahren, etwa 10.000 .. 100.000 fache Zeitaufwand ein spürbares Hindernis. Das Durchprobieren einer Vielzahl möglicher Schlüsselkombinationen (Brute Force Attack) ist bei einem herkömmlichen Blockverschlüsselungsverfahren aufgrund der um viele Zehnerpotenzen geringeren Zahl an Rechenoperationen jedenfalls schneller und mit weniger Materialeinsatz und Energieaufwand zu bewerkstelligen als bei einem erfindungsgemäßen Verfahren.
-
In einem zweiten Verfahrensschritt werden Bytes, Wörter, Doppelwörter oder geordnete Gruppen von Klartextbits vorzugsweise einer Größe permutiert, die auf handelsüblichen Mikroprozessoren minimalen Rechenaufwand erfordert. Dem aktuellen Stand der Technik entsprechend sind dies 32 oder 64 Bit. Die Permutation kann durch Vertauschen geordneter Bitgruppen mittels Tabelle oder über eine andere dazu geeignete Datenstruktur oder einen geeigneten Algorithmus wie dem „Fisher-Yates Shuffle” erfolgen. Der Prozessschritt dient dazu, dass neue und nicht vorhersagbare Gruppenzugehörigkeiten von Klartextbits entstehen. Überdies wird effektiv verhindert, dass die Asymmetrie der nachgeschalteten nicht balancierten Feistelnetzwerke eine nennenswerte Angriffsfläche bietet. Dieser Prozessschritt kann alternativ auch als letzter Prozessschritt ausgeführt werden. Er ist dann jedoch nicht mehr effektiv wirksam für die Verschleierung der Asymmetrie der nachgeschalteten nicht balancierten Feistelnetzwerke. Die Operation ist sowohl vom Schlüssel als auch von der jeweiligen Blocklänge des Klartexts abhängig. Hierdurch wird das Verfahren zusätzlich gegen Angriffe gehärtet.
-
In einem dritten Verfahrensschritt werden große Klartextdatenblöcke in kleinere Blöcke, welche von den nachgeordneten Verfahrensschritten mit den zur Verfügung stehenden Ressourcen verarbeitet werden können, zerlegt. Die hierbei resultierenden Blockgrößen variieren dabei in einem weiten Bereich und werden quasizufällig aus dem Schlüssel, sowie der Länge des ursprünglichen Klartexts berechnet. Klartextdatenblöcke bis zu einer idealerweise konfigurierbaren Schwelle sollen jedoch nicht partitioniert werden. Wenn beispielsweise die meisten während einer Internettelefoniesitzung übertragenen Klartextdatenblöcke nicht länger als die MTU-Größe im Bereich eines Kilobyte sind und ein erfindungsgemäßes Blockdatenverschlüsselungsverfahren mit den vorhandenen Ressourcen derart große Blöcke auf allen gewünschten Zielsystemen ohne Partitionierung verarbeiten kann, wird das SAC weitaus besser erfüllt als dies mit partitionierten Blöcken überhaupt möglich wäre. Sprachdatenpakete einer Internettelefoniesitzung variieren beispielsweise ohnehin naturgemäß deutlich in ihrer Länge und sie enthalten einen Blockzähler, sodass Angreifer weder Pakete von immer gleicher Größe, noch bekannten Klar- oder Chiffretext erhalten.
-
Ist es jedoch erforderlich, eine sehr lange Datei auf einem PC oder auf einem anderen Universalcomputer zu verschlüsseln, stehen heute grundsätzlich ausreichend Ressourcen für ein erfindungsgemäßes Blockdatenverschlüsselungsverfahren zur Verfügung, um 10 Kbyte oder 100 Kbyte auf einmal zu verschlüsseln. Aufgrund der Eigenschaft eines erfindungsgemäßen Blockdatenverschlüsselungsverfahrens, dass die Länge des Klartexts und der Schlüssel über eine nichtlineare, nicht umkehrbare Funktion die Blockaufteilung bestimmt, ist ein Angreifer noch nicht einmal in der Lage, Annahmen über die tatsächliche Länge von Chiffretextblöcken zu treffen. Es besteht die Möglichkeit, die Partitionierung über eine berechnete Tabelle vorab festzulegen oder vor jedem Verschlüsselungsschritt in einer Schleife die Länge des nächsten Chiffretextblocks festzulegen und die Länge des noch verbleibenden Klartexts durch Subtraktion vom vorherigen Wert mit der Länge des nächsten Chiffretextblocks zu errechnen und danach zu speichern. Eine vorteilhafte Ausführungsform eines erfindungsgemäßen Blockdatenverschlüsselungsverfahrens ist derart ausgeführt, dass bei der Berechnung aller Blocklängen oder der Längen der letzten Blöcke kleine Werte nicht auftreten können.
-
In einer Schleife erfolgt sukzessive in den folgenden Prozessschritten die Überführung der einzelnen partitionierten Klartextblöcke in Chiffretextblöcke. Hierzu sind mindestens drei Schritte erforderlich.
-
Das nicht balancierte Feistelnetzwerk wird vorzugsweise durch eine erste Luby-Rackoff Runde mit einem langen linken binären String und einem kurzen rechten binären String, gefolgt von einer zweiten Luby-Rackoff Runde mit einem kurzen linken binären String und einem langen rechten binären String, welche schließlich von einer dritten Luby-Rackoff Runde mit einem langen linken binären String und einem kurzen rechten binären String abgeschlossen wird, realisiert.
-
Mathematisch kann die gesamte Operation wie folgt beschrieben werden: ψ(f1, f2, f3,)(L·R) = [R ⊕ f2(L ⊕ f1(R))]·[L ⊕ f1(R) ⊕ f3(R ⊕ f2(L ⊕ f1(R)))] mit
- L, R:
- linker und rechter binärer String (Bitstring).
- ⊕:
- Bitweise exklusiv- oder (XOR) Funktion.
- a·b:
- Verkettung zweier geordneter Bitgruppen (Bitstrings) a und b.
- f1, f2, f3:
- Nichtlineare, nicht umkehrbare Rundenfunktionen. Der Schlüssel K bestimmt die Pseudozufallszahlensequenz der Rundenfunktionen und ist aus Gründen der Vereinfachung der Darstellung aus der Formel weggelassen worden.
- ψ(f1, f2, f3)(L·R):
- Transformation der Verkettung des linken und rechten Bitstrings L und R.
-
Die Länge des linken Bitstrings L kann nahezu beliebig gewählt werden. Hierzu ist jedoch unabdingbar, dass die Rundenfunktion f1 beliebig lange Bitstrings generieren kann. f1 kann beispielsweise eine Hashfunktion sein. In diesem Fall ist es sogar möglich, dass der rechte Bitstring R nahezu beliebige Länge aufweist. Es ist somit immer möglich, den linken Bitstring L bitweise mit f1(R) exklusiv- oder zu verknüpfen. Analog zu f1 können auch f2 und f3 derart ausgeführt sein, dass auch diese Rundenfunktionen Bitstrings beliebiger Länge komprimieren können. Der jeweils resultierende Hash kann beispielsweise durch zyklische Rückführung auf den Eingang der Rundenfunktion eine nahezu beliebig lange Pseudozufallszahlenfolge sein. Eine derart realisierte Luby-Rackoff Konstruktion kann sowohl kurze als auch lange Klartextblöcke in Chiffretextblöcke überführen, ohne dass Chiffretextblöcke länger als die zugeordneten Klartextblöcke werden. Es macht jedoch umgekehrt keinen Sinn, Blöcke mit weniger als 64 Bit Länge zu verschlüsseln. Zu groß wäre die Gefahr, dass beispielsweise eine Codebuchattacke erfolgreich geführt werden könnte. Daher sollte eine Mindestlänge für die Klartextblöcke eingehalten werden. Die Obergrenze für Klartextblöcke wird nur durch den verfügbaren Arbeitsspeicher des Zielsystems bestimmt.
-
Es ist sinnvoll, den rechten Bitstring R mit fester Länge vorzugeben und dafür den linken Bitstring L in einem weiten Bereich variabel zu halten. In diesem Fall kann sowohl die Rundenfunktion f1, als auch f3 als Pseudozufallszahlengenerator ausgeführt werden, welche den jeweils rechten Bitstring R als Parameter verwenden. Wird zusätzlich die Rundenfunktion f2 als Hashfunktion ausgeführt, so maximiert sich die Arbeitsgeschwindigkeit des Verfahrens. Die Rundenfunktionen f1 und f3 können aufgrund der geringen Anzahl an Parametern besonders schnell initialisiert werden und lange Zufallszahlensequenzen erzeugen, welche mit dem jeweils linken Bitstring L logisch verknüpft werden. Die Rundenfunktion f2 kann als klassische Hashfunktion mit begrenzter Resultatlänge derart optimiert werden, dass auch große Datenmengen schnell komprimiert werden können. Bekannte Hashfunktionen wie SHA-256 oder Whirlpool eignen sich beispielsweise für die Implementierung der Rundenfunktion f2.
-
Die Entschlüsselung erfolgt durch Anwendung der Rundenformeln in umgekehrter Reihenfolge. Der Permutationsverfahrensschritt wird dabei zuletzt ausgeführt.
-
Die Partitionierung zu großer Klartextdatenblöcke, als auch die Ableitung des Internen Zustands des Blockverschlüsselungsverfahrens vom Schlüssel, sowie die meisten oder möglicherweise alle anderen Verfahrensschritte erfordern dass Pseudozufallszahlen in Abhängigkeit vom Schlüssel effizient generiert werden können.
EP 1 069 508 B1 lehrt wie komplexe Pseudozufallszahlengeneratoren aus Passwörtern durch Aneinanderreihung von Pseudozufallszahlengeneratorprimitiven kompiliert werden können. Hierbei teilen sich eine Reihe nacheinander ausgeführter Pseudozufallszahlengeneratorprimitive einen gemeinsamen Internen Zustand und verändern diesen während der Ausführung. Alternativ können anstelle des Kompilierprozesses auch Pseudozufallszahlengeneratorprimitive durch einen Interpreter nacheinander aufgerufen werden. Die Sequenz kann beispielsweise sehr effizient durch Aufruf von Funktionszeigern, welche in einem Array gespeichert sind, von allen universellen Mikroprozessoren ausgeführt werden. Anstelle des üblicherweise starren Aufbaus von Verschlüsselungsverfahren bietet die hierdurch realisierte polymorphe Konstruktion von Pseudozufallszahlengeneratoren die Möglichkeit, häufig verwendete Funktionsblöcke eines Verschlüsselungsverfahrens im Rahmen einer im wesentlichen festgelegten Struktur in Abhängigkeit des jeweils verwendeten Schlüssels völlig variabel zu gestalten. Angreifer finden infolgedessen zwar einen prinzipiell bekannten Aufbau vor, werden jedoch mit einer großen Anzahl Möglichkeiten unterschiedlicher Ausprägungen von Unterfunktionen konfrontiert, die gleichermaßen wahrscheinlich sind und vom Schlüssel abhängen. Im Gegensatz zu unveränderlichen Algorithmen mit starrem Aufbau wie AES oder DES, die heute besonders weit verbreitet sind, ist die Wahrscheinlichkeit gering, dass durch intensive Kryptanalyse konstante, vom Schlüssel unabhängige Schwächen gefunden werden. Ein erfindungsgemäßes Verfahren lasst sich besonders vorteilhaft unter Verwendung der in
EP 1 069 508 B1 beschriebenen polymorphen Pseudozufallszahlengeneratoren realisieren. Nicht nur die Blocklänge, sondern auch Teile des Blockverschlüsselungsverfahrens selbst werden durch den Schlüssel bestimmt. Ein Minimum vorhersagbarer Eigenschaften wird bei einem derart besonders vorteilhaft ausgeführten erfindungsgemäßen Verfahren erzielt. Im Gegensatz dazu sind bei heute häufig verwendeten Blockverschlüsselungsverfahren wie beispielsweise AES sowohl die Blocklänge, als auch das komplette Verfahren festgeschrieben.
-
Weitere Merkmale, Einzelheiten und Vorteile der Erfindung ergeben sich aus der beigefügten zeichnerischen Darstellung und nachfolgenden Beschreibung eines erfindungsgemäßen Blockdatenverschlüsselungsverfahrens. In der Zeichnung zeigt:
-
1 die schematische Darstellung einer Ausführungsform eines erfindungsgemäßen Blockdatenverschlüsselungsverfahrens
-
In dem Prinzipbild gemäß 1 ist ein mit dem Bezugszeichen 1 bezeichnetes Blockdatenverschlüsselungsverfahren dargestellt.
-
Das Blockdatenverschlüsselungsverfahren 1 weist einen Verfahrensschritt 2 auf, in dem das Verfahren 1 mit dem Schlüssel 100 initialisiert wird. Dabei werden alle Variablen des Verfahrens 1 vom Schlüssel 100 abgeleitet. Im nächsten Verfahrensschritt 11 wird zur Steigerung der Immunität vor linearer Kryptanalyse der Klartextdatenblock 3 permutiert. Dies wird beispielsweise durch eine pseudozufällige Vertauschung von Bitgruppen im Permutationsverfahrensschritt 11 realisiert. Für den Fall dass der Klartextdatenblock 3 größer als die maximal vom Verfahren 1 unterstützte Blocklänge ist, unterteilt das Verfahren 1 im Verfahrensschritt 4 den permutierten Klartextdatenblock 3 in Teilblöcke. Einer der Teilblöcke ist mit dem Bezugszeichen 31 stellvertretend für alle weiteren Teilblöcke versehen. Ein Klartextdatenblock 3 kann in unterschiedlich viele Teilblöcke 31 mit unterschiedlichen Blocklängen vom Partitionierungsverfahrensschritt 4 pseudozufällig in Abhängigkeit vom Schlüssel 100 und von der Länge des Klartextdatenblocks 3 unterteilt werden. Jeder der derart unterteilten Teilblöcke 31 wird in den restlichen Verfahrensschritten verschlüsselt. Der linke Teil variabler Länge 32 des Teilblocks 31 und der rechte Teil fester Länge 33 des Teilblocks 31 wird in gegenseitiger Abhängigkeit zueinander in der Luby-Rackoff Konstruktion 6 in den Chiffretextblock 51 überführt. In jeder der drei Runden der Luby-Rackoff Konstruktion 6 werden die in den Rundenfunktionen 8, 9, 10 generierten Pseudozufallszahlen mit den jeweils in den Runden zu verarbeitenden Datenströmen exklusiv- oder kombiniert 7. Alternativ zu bitweise exklusiv- oder Operationen 7 können auch Additions- oder Subtraktionsoperationen verwendet werden. Kombinationen aus Bitrotationsoperationen mit Additions-, Subtraktions- und bitweise exklusiv- oder Operationen sind überdies möglich. Bei der Entschlüsselung der Daten muss jedoch die jeweils komplementäre Operation ausgeführt werden. Bei vorteilhafter Ausführung wird die jeweils verwendete Operation 7 pseudozufällig gewählt.
-
Die Rundenfunktionen mit kurzem rechtsseitigen Bitstring Ri, Ti 8, 10 bestehen vorzugsweise aus mehreren verschiedenen nichtlinearen Funktionen f11, f12, f13 für die erste Rundenfunktion 8, sowie f31, f32, f33 für die dritte Rundenfunktion 10. Aufgrund der Eigenschaft dass f11, f12, f13, sowie f31, f32, f33 mit wenigen Datenbits initialisiert werden, jedoch häufig große Datenmengen errechnen müssen, können beispielsweise bei Realisierung mit Pseudozufallszahlengeneratoren mehrere Threads die Funktionen f11, f12, f13 und f31, f32, f33 für die erste und dritte Rundenfunktion 8 und 10 parallel ausführen. Beim Verschlüsseln großer Klartextdatenblöcke 3 kann dadurch Rechenzeit eingespart werden. Ebenso ist es möglich, die logischen Kombinationsschritte 7 auf mehrere Threads aufzuteilen. Durch Parallelisieren von Verfahrensschritten können mehrere Prozessorkerne simultan genutzt werden. Moderne Mikroprozessoren für den Einsatz in Universalrechnern wie PCs und Servern verfügen heute in der Regel über mindestens zwei Prozessorkerne, die wiederum meist über einen dedizierten Cachespeicher für Instruktionen und Daten verfügen und dadurch weitgehend ohne Belastung des Daten- und Adressbusses parallel zu den anderen Prozessorkernen arbeiten. Keiner der Verfahrensschritte 2, 4, 11, 7, 8, 9 und 10 erfordert jedoch die Ausführung des Verfahrens 1 auf Prozessoren mit mehr als einem Kern. Der Verfahrensschritt 2, in dem das Verfahren 1 mit dem Schlüssel 100 initialisiert wird, wird überdies besonders vorteilhaft ausgelegt, wenn alle Operationen sequentiell ablaufen müssen und infolgedessen keine Parallelisierung möglich ist. In diesem Fall kann ein Angreifer nicht zeitsparend Operationen parallel ausführen. Die Pseudozufallszahlengenerierung für die zweite Luby-Rackoff Runde 9 kann ebenfalls parallelisiert werden. Die Rundenfunktion f2 kann entsprechend der zeichnerischen Darstellung 9 durch eine einzige Hashfunktion realisiert werden oder alternativ durch mehrere parallel ausgeführte Hashfunktionen zeitsparend den aufgeteilten rechtsseitigen Bitstring Si komprimieren.
-
Nach einmaliger oder gegebenenfalls wiederholter Ausführung der Luby-Rackoff Konstruktion 6 werden die errechneten Chiffretextblöcke 51 gespeichert. Nachdem der komplette Klartextdatenblock 3 in den Chiffretextdatenblock 5 überführt ist, endet das Verfahren 1.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- EP 1069508 B1 [0024, 0024]