Windige Festplattenverschlüsselung

Seite 4: Windige Festplattenverschlüsselung

Inhaltsverzeichnis

Weil die Verschlüsselung Nullen auf Nullen abbildet, hatte ich von Anfang an das Gefühl, sie könnte vielleicht so funktionieren: Jedes Bit im Klartext liefert ein bestimmtes Bitmuster im Chiffrat. Bei mehreren gesetzten Bits im Klartext werden die zugehörigen Bitmuster im Chiffrat per Exklusiv-Oder miteinander verknüpft. (Für Mathematiker: Ich hatte den Verdacht, die Verschlüsselung könnte eine lineare Abbildung sein, wenn man die 64-Bit-Wörter als Elemente eines 64-dimensionalen Vektorraums über dem Körper {0, 1} auffasst.) Ein Blick auf die Chiffrate der Bytefolgen aus 0xFF, 0x55 und 0xAA erhärtet diese Hypothese:

Klartext                  Chiffrat
01 01 01 01 01 01 01 01 80 01 80 01 80 01 80 80
02 02 02 02 02 02 02 02 00 60 00 60 00 60 20 20
04 04 04 04 04 04 04 04 02 02 02 02 02 02 08 08
08 08 08 08 08 08 08 08 5F 93 A7 CA 79 00 02 02
10 10 10 10 10 10 10 10 10 80 10 80 10 80 04 04
20 20 20 20 20 20 20 20 0C 00 0C 00 0C 00 10 10
40 40 40 40 40 40 40 40 40 10 40 10 40 10 40 40
80 80 80 80 80 80 80 80 00 0C 00 0C 00 0C 57 71
-----------------------XOR-----------------------
FF FF FF FF FF FF FF FF 81 6C 79 35 A7 FF A9 8F

Klartext Chiffrat
01 01 01 01 01 01 01 01 80 01 80 01 80 01 80 80
04 04 04 04 04 04 04 04 02 02 02 02 02 02 08 08
10 10 10 10 10 10 10 10 10 80 10 80 10 80 04 04
40 40 40 40 40 40 40 40 40 10 40 10 40 10 40 40
-----------------------XOR-----------------------
55 55 55 55 55 55 55 55 D2 93 D2 93 D2 93 CC CC

Klartext Chiffrat
02 02 02 02 02 02 02 02 00 60 00 60 00 60 20 20
08 08 08 08 08 08 08 08 5F 93 A7 CA 79 00 02 02
20 20 20 20 20 20 20 20 0C 00 0C 00 0C 00 10 10
80 80 80 80 80 80 80 80 00 0C 00 0C 00 0C 57 71
-----------------------XOR-----------------------
AA AA AA AA AA AA AA AA 53 FF AB A6 75 6C 65 43

Diese Rechnung (spaltenweise Exklusiv-Oder) geht tatsächlich für alle Bytes in Klartext und Chiffrat auf. Vermutlich brauche ich also nur ein Bit "durch das 64-Bit-Wort zu schieben" und jeweils zu verschlüsseln, um daraus das komplette Verfahren zu rekonstruieren. Ein weiterer Sektor mit Testdaten liefert die gewünschten Werte:

Klartext Chiffrat
0000000000000001 0000000000000100
0000000000000002 0000000000002000
0000000000000004 0000000000000002
0000000000000008 000000000000937f *
0000000000000010 0000000000000010
0000000000000020 0000000000000008
0000000000000040 0000000000000040
0000000000000080 0000000000000400
0000000000000100 0000000000000080
0000000000000200 0000000000004000
0000000000000400 0000000000000200
0000000000000800 0000000000000020
0000000000001000 0000000000008000
0000000000002000 0000000000000004
0000000000004000 0000000000001000
0000000000008000 0000000000000800
0000000000010000 0000000001000000
0000000000020000 0000000020000000
0000000000040000 0000000000020000
0000000000080000 00000000ca870000 *
0000000000100000 0000000000100000
0000000000200000 0000000000080000
0000000000400000 0000000000400000
0000000000800000 0000000004000000
0000000001000000 0000000000800000
0000000002000000 0000000040000000
0000000004000000 0000000002000000
0000000008000000 0000000000200000
0000000010000000 0000000080000000
0000000020000000 0000000000040000
0000000040000000 0000000010000000
0000000080000000 0000000008000000
0000000100000000 0000010000000000
0000000200000000 0000200000000000
0000000400000000 0000000200000000
0000000800000000 0000005900000000 *
0000001000000000 0000001000000000
0000002000000000 0000000800000000
0000004000000000 0000004000000000
0000008000000000 0000040000000000
0000010000000000 0000008000000000
0000020000000000 0000400000000000
0000040000000000 0000020000000000
0000080000000000 0000002000000000
0000100000000000 0000800000000000
0000200000000000 0000000400000000
0000400000000000 0000100000000000
0000800000000000 0000080000000000
0001000000000000 8000000000000000
0002000000000000 2000000000000000
0004000000000000 0800000000000000
0008000000000000 0200000000000000
0010000000000000 0400000000000000
0020000000000000 1000000000000000
0040000000000000 4000000000000000
0080000000000000 7057000000000000 *
0100000000000000 0080000000000000
0200000000000000 0020000000000000
0400000000000000 0008000000000000
0800000000000000 0002000000000000
1000000000000000 0004000000000000
2000000000000000 0010000000000000
4000000000000000 0040000000000000
8000000000000000 0100000000000000