Der Cipher-Block-Chaining ist eine weiter Möglichkeit eine Blockchiffrierung einzusetzen, hier besteht auch das Problem eines Block-Replay Angriffs nicht. Denn der nächste Block der verschlüsselt werden soll hängt vom vorhergehenden Chiffretextblock ab.

Genau genommen sieht es so aus, dass der vorhergehende Chiffretextblock mit dem Klartextblock XOR-Verknüpft wird und dann normal verschlüsselt. Dann wird wieder der so entstandene Chiffreblock mit dem nächsten Klartextblock XOR-Verknüpft und verschlüsselt. Doch davor wird die so enstandene XOR-Verknüpfung in einem Rückkopllungsregister gespeichert.  Die Entschlüsselung läuft ähnlich ab, nur das hier der Chiffretextblock am anfang normal entschlüsselt wird und dann im Rückkopplungsregister gespeichert. Nachdem der nächste Block entschlüsselt wurde wir er mit den Inhalt des Rückkopplungsregister XOR-Verknüpft usw…

CBC Verfahren

CBC Verfahren (hier nur Verschlüsselung)

In der Grafik sieht man auch gleich einen sogennanten Initalisierungsvektor (IV). Dieser wird deswegen am Anfang einer Nachricht verwendet, da zwar identische Klartextblöcke zu verschiedenen Chiffretextblöcken verschlüsselt werden, aber zwei gleiche Nachrichten noch immer den selben Chiffretext besitzen. Dies ist zum Beispiel mei E-Mails der Fall, wo der Kopf von der E-Mail immer der gleiche ist, dies kann einen Kryptanalytiker entscheidene Informationen geben. Deswegen nimmt man einen IV der am Anfang einer Nachricht eingefügt wird, dieser ist üblicherweise ein Zeitstempel kann aber auch einige Zufallsbits enthalten. Bei der Entschlüsselung spielt dieser auch keine Rolle er kann einfach ignoiert weren, da er nur dazu dient eine Nachricht zu initalisieren damit sie nicht wertvolle Informationen zum Beispiel in Form eines immer gleichen Anfangs liefert.

Ein Problem bei der Blockchiffrierung ist die Fehlerfortpflanzung. So wirkt sich ein Fehler im Klartextblock auf den dazugehörigen Chiffretextblock aus und allen nachfolgenden Chiffretextblöcken, an sich kein Problem da bei der Entschlüsselung der Fehler bis zum Ausgansstadium rückgängig gemacht wird und nur diesen Einzelfehler enthält.

Entsteht jedoch im Chiffretextblock ein Fehler, so wirkt es sich auf den Block und auf den nachfolgenden aus. Somit werden zwar zwei Blöcke unbrauchbar dafür erholt sich die Blockchiffrierung wieder und alle nachfolgenden sind wieder brauchbar.

Wird jedoch ein Bit entfenrt oder eingefügt werden alle nachfolgenden Blöcke um ein Bit verschoben und die gesamte Entschlüsselung wird unbrauchbar. Deswegen muss bei einer Blockchiffrierung die im CBC Modus arbeitet sichergestellt werden das die Rahmenstruktur erhalten bleibt oder zumindestens die Blöcke in Einzelteile zersetzt werden das nur das jeweilige Einzelteil komplett unlesbar ist, aber alle anderen intakt.

Daraus ergibt sich aber ein anderes Problem, Mallory kann zwar nicht mitten in dem Chiffretext Blöcke hinzufügen, doch wenn er sie am Ende einer Nachricht einfügt bleibt dies Unbekannt. Dies ist zwar im ersten Moment ziemlich sinnlos, kann aber in manchem Momenten sehr hilfreich sein. Deswegen sollte auch immer im CBC das Ende einer Nachricht in irgendeiner weise gekenzeichnet sein.

leumi

Block Replay

8. Juni 2009

Ein weiteres Problem für eine Blockchiffrierung im ECB-Modus ist das sogennante Block-Replay. Block Replay heist soviel wie Blockrückeinspielung. Darunter versteht man, dass zum Beispile Mallory ein Block abfängt und diesen eventuell später wieder einspielt.

Dies kann bei einem Datentransfer zum Beispiel passieren, er fängt den Datentransfer von 100Euro ab und schickt ihn später wieder an die Bank. Dies kann man verhindern indem man ein Zeitstempel mit anhängt.

Sollte die Bank zum Beispiel ein Zeitstempel verwenden sollte dies auch weiter kein Problem sein. Er kann nämlich eine Überweisung die zum Beispiel aus 16 Blöcken besteht abfangen und bei den richtigen Blöcken seinen Namen und seine Kontonummer einsetzen bzw. ersetzen. Dies ist ein schwerwiegender Fehler im ECB-Mouds, da Mallory Blöcke nach belieben entfernen und einfügen kann.

Es lässt sich zwar mit ständig wechselnden Schlüsseln verhindern, des verhindert aber den Angriff nicht, er muss einfach nur schneller vonstatten gehen.

leumi

Der Electronic-Codebook-Modus (ECB) ist die einfachste Art eine Blockchiffre zu benutzen. Ein Klartextblock wird einfach in einen Chiffretextblock verschlüsselt. Somit wird für den jeweiligen Schlüssel und dem jeweiligen Klartext der selbe Chiffretextblock erstellt, theoretisch wäre es also möglich für einen Kryptanalytiker ein Codebuch zu erstellen was aber bei einer Blockgröße von 64Bit  2^64 Einträge hätte, und somit zuviele um sie zu berrechnen geschwiegen denn zu speichern.

Der Modus hat den Vorteil, dass man den Klartext an jeder x-beliebiger Stelle verschlüsseln kann, ohne die vorhergeenden zu verschlüsseln. Dies ist wichtig für Datenbanken, wo auch zum Beispiel gleichzeitig auf verschiedene Dateien zugegriffen wird.

Ein großes Problem bei diesem Modus ist, dass ein Kryptanaytiker den abgefangenen Chiffretext auf Häufigkeiten hin untersuchen. Da der Klartext immer in den selben Chiffretext überführt wird (vorausgesetzt der Schlüssel bleibt gleich) und so ergeben sich viele Informationen für den Kryptanalytiker womit, wenn er genügend Chiffretext zur Verfügung hat, ein Cyphertext-only Angriff sehr einfach durchfürbar ist. Ein weiteres Problem in diesem Modus sind die Fehler in einem Block. Ist nämlich in einem Block ein Bit fehlerhaft wird der komplette Block unbrauchbar. Noch gravierender ist es wenn ein Bit im Chiffretext verlorgen geht oder einer hinzugefügt wird, dann wird nämlich der komplette Nachfolgende Chiffretext unbrauchbar.

leumi

Heute ein neues Buch bestellt. Kryptografie: Verfahren, Protokolle, Infrastrukturen. Und da viel es mir mal wieder auf: Kryptographie mit [f] geschrieben statt dem üblichen [ph]. Und um der ganzen Verwirrung einen draufzusetzen im Duden nachgeschaut, und siehe da das gleich Spiel. Nur das Hier Krpytogra[f]ie rot unterlegt war. Was soviel heist wie neue Rechtschreibung, trotzdem ist Krpytogra[ph]ie nicht in einer rechteckigen Klammer eingegliedert was wiederum heist es ist keine alte Rechtschreibung…

Letzendlich hab ich ein Blick auf die englische “Version” von Kryptographie geworfen: Cryptographie, und siehe da es ist mit [ph] geschrieben. Ich werde also auch in Zukunft Kryptographie mit [ph] schreiben jedoch füge ich auch überall zu den Schlagwörtern Kryptogra[f]ie hinzu damit nicht jemand verzweifelt nach Kryptographie sucht aber deisen Blog nicht findent ;-)

leumi

Zufallsgeneratoren

4. Juni 2009

In der Kryptographie werden immer wieder Zufallsgeneratoren benötigt. Diese sollen eine möglichst zufällige Sequenz von Zeichen ausgeben. Wiederholt man den Ablauf zur bestimmung von dieser Sequenz ein zweites mal unter den exakt selben Bedingungen sollte niemals das gleiche aufeinanderfolgen.

Solche Zufallsgeneratoren werden zum Beispiel bei der Stromchiffrierung benötigt oder beim One-Time-Pad. Die einfachste und eine relativ zufällige Methode nur Zufallszahlen zu erzeugen ist es, einfach einen Würfel zur Hand zu nehmen und ihn zu Würfeln. Man wird niemals auf eine Periode stoßen, da das Würfeln von so vielen Faktoren abhängt (jede zuckung der Armmuskulatur, jeder noch so kleine Windstoß, veränderung um ein mm der Abwurfhöhe usw…) das es unmöglich ist vorauszusagen welche Zahl als nächstes kommt.

Da wir aber in einer modernen Digitalen Welt leben und nicht 100 Zufallszahlen brauchen sondern tausende pro Sekunde müssen wir mit Computern arbeiten. Diese kennen aber keinen Zufall. Sie haben nur eine Eingabe die sie zu einer Ausgabe verarbeiten, und das immer mit dem gleichen Muster sofern nichts an dennen kaputt ist. Es gibt einfache Funktionsaufrufe zum Beispiel in C/C++ mit rnd(). Doch dieser gibt einen nur Scheinbar zufälligen Wert aus der in Wirklichkeit periodisch ist und vorraussagbar bzw. berechenbar. Diese werden dann auch Pseudo-Zufallsgeneratoren genannt.

Heutzutage werden Millionen in die Entwicklung von Zufallsgeneratoren investiert. Es gibt spezielle Hardware oder auch spezielle Software die Pseudo-Zufallsgeneratoren beinhaltet die eine sehr große Periode besitzen die wohl kaum berechnet werden können.

leumi