VIC Chiffre
Kategorisierung: | Klassisch / Substitution und Transposition, Dekodierschablonen |
Siehe auch: | Spionage Chiffren nach dem Straddling Checkerboard-Verfahren, SECOM Chiffre |
Herkunft / Verwendung: |
Die VIC-Chiffre (engl.: VIC cipher) ist eine händische Verschlüsselungsmethode (engl. hand cipher), die mit Papier und Stift vorgenommen werden kann. Sie ist benannt nach dem finnisch-russischen Agenten Reino Häyhänen (Deckname: VICTOR; Abkürzung: VIC) und wurde in den 1950er Jahren von KGB-Agenten benutzt. 1953 fand ein Zeitungsjunge aus Brooklyn zufällig einen ausgehöhlten Nickel (5 US-Cent-Münze) unter seinem Kleingeld, als er ihm herunterfiel und in zwei Teile zersprang. In dem Nickel befand sich ein 8 x 8 mm großer Mikrofilm, auf dem in 21 Zeilen Ziffern in 5er Gruppen angeordnet waren. Der Junge übergab den Nickel der Polizei, die ihn an das FBI weitergab, doch auch dieses war außerstande, den Code zu knacken. Erst 1957, als Reino Häyhänen vom KGB zu den Amerikanern überlief und die Funktionsweise erklärte, konnte das Geheimnis gelüftet werden. Die Story über den aushöhlten Nickel wurde als "Hollow Nickel Case" bekannt und fand sogar in die Filme "The FBI Story" (1959, dt. "Geheimagent des FBI") und "Bridge of Spies - der Unterhändler" (2015, Regie Steven Spielberg) Einzug. Die Chiffre, mit der der Mikrofilm beschrieben wurde, war der VIC Chiffre. Die Funktionsweise des Chiffre wurde im Artikel "Number One From Moscow" durch David Kahn erläutert (freigegeben und veröffentlicht 2007 durch die CIA). In das Verfahren flossen die Schlüssel ein, die jedem sowjetischen Agenten individuell zugewiesen wurden. In Häyhänens Fall waren dies die ersten sieben Buchstaben des russischen Wortes für "Schneefall" ("Snegopad"), Teile des Volksliedes "Das einsame Akkordeon", das Datum des Sieges über Japan im 2. Weltkrieg (3. Sept. 1945) und seine persönlichen Kennzahl / Agentennummer, die 13 (ab 1956 in 20 geändert).1 Das Verfahren, obwohl ein Handverfahren, darf als komplex bezeichnet werden. Um eine Komplexität herauszunehmen und die Chiffre für unseren Sprachraum nutzbar zu machen, wird hier statt des kyrillischen Alphabets das lateinische mit den Buchstaben von A bis Z benutzt. Die restliche Vorgehensweise entspricht dem Original. Es gibt eine Variante der VIC Chiffre, die auch Ziffern und Leerzeichen erlaubt und bei der man sich nur einen Leitsatz merken muss, die SECOM-Chiffre. |
Beschreibung des Verfahrens
Grob gesagt besteht das Verfahren aus folgenden Teilen- Schlüsselberechnungen
- Kodierung durch Straddling Checkerboard
- 1. Transposition: gewöhnlicher Spaltentausch
- 2. Transposition: spezieller Dreiecks-Spaltentausch
- Verstecken der Zufallszahl
- Klartext: zu verschlüssender Text
- Ein Schlüsselwort der Länge 8 mit häufiger benutzten Buchstaben (für das Checkerboard)
- Ein Schlüsselsatz der Mindestlänge 20 (für die Transpositionen)
- Ein gut zu merkendes, aber nicht leicht zu erratenes 6-stelliges Datum
- Die Personalnummer des Agenten (einstellig oder im unteren zweistelligen Bereich)
- Zwei unterschiedliche Ziffern (für Checkerbord-Leerspalten)
- Eine 5-stellige Zufallszahl, die für jeden Spruch anders sein muss und die nicht gemerkt werden braucht
Beispiel
Klartext: | Dies ist ein Beispielklartext der dazu dient die VIC Chiffre auf Kryptografie de naeher zu erklaeren |
Schlüsselwort: | SANDTIER |
Schlüsselsatz: | Da steh ich nun ich armer (Tor und bin so klug als wie zuvor) |
Datum: | 391945 (3. 9. 1945, Sieg über Japan) |
Personalnr.: | 13 |
Ziffern für Leerspalten: | 63 (Spaltenzählung beginnt bei 0, also 4. und 7. Spalte) |
Zufallszahl: | 56349 |
Schlüsselberechnungen
Zuerst werden die ersten fünf Stellen des Datums von der Zufallszahl Ziffer für Ziffer subtrahiert (ohne Übertrag).
56349
- 39194
27255
Das Ergebnis wird durch Kettenaddition auf 10 Stellen erweitert. Kettenaddition meint, dass jeweils 2 Ziffern addiert werden, um eine neue zu generieren (ist das Ergebnis größer 10, werden 10 abgezogen).Aus 27255 wird so 2725599704
27255 zuerst, dann 9 für 2+7, 9 für 7+2, 7 für 2+5, 0 für 5+5.
Dann werden auch die neu gewonnenen Ziffern weiter benutzt und es kommt noch die 4 für 5+9 hinzu.
Danach wird der 20-stellige Schlüsselsatz in zwei Teile zu 10 Zeichen aufgeteilt und jedem Teil die Ziffern 1 bis 0 (0 zuletzt) nach der alphabetischen Sortierung zugewiesen:
DASTEHICHN UNICHARMER
3190457268 0752418639
Das A kommt im Alphabet zuerst, bekommt daher die 1 zugewiesen, danach kommt das C (2) usw. bis zur 0, die zuletzt kommt und auf das T bzw. U fällt.Die Zahl aus der linken Hälfte wird nun mit der Zahl aus der Kettenaddition addiert (wieder ohne Übertrag):
3190457268
+ 2725599704
5815946962
Nun wird die rechte Hälfe dazu benutzt, dieses Ergebnis umzustellen:
1 2 3 4 5 6 7 8 9 0 <-- Reihenfolge
0 7 5 2 4 1 8 6 3 9 <-- neue Ziffer
5 8 1 5 9 4 6 9 6 2 <-- Zwischenergebnis
4 6 0 4 3 2 1 3 1 7 <-- neues Ergebnis
Folgend von 5815946962 wird nun zuerst die 5. Ziffer aus dem Ergebnis der rechten Hälfte 0752418639 genommen, was eine 4 ist, danach die 8. (5815946962) Ziffer aus 0752418639, was eine 6 ergibt usw. bis das neue Ergebnis 4604321317 feststeht.Dieses wird durch Kettenaddition auf 60 Zeichen erweitert:
4604321317
0647534487
6012878253
6130550789
7435057576
1785522237
Die letzten 10 Zeichen werden nach der Wertigkeit aufsteigend (0 wieder zuletzt) sortiert:
1 7 8 5 5 2 2 2 3 7
1 8 0 6 7 2 3 4 5 9
Die 1 in 1785522237 ist die niedrigste Ziffer und bekommt Platz 1, danach folgen die Zweien in 1785522237, die Platz 2 bis 4 belegen, danach folgt die Drei (1785522237) für Platz 5 usw. Das Ergebnis ist schließlich die Positionsfolge 1806723459.Diese Ziffernfolge wird später als Überschriftenzeile für ein Straddling Checkerboard benutzt, wobei die Leerspalten wie im Schlüssel angegeben verteilt werden (diese könnten zwar auch fest oder berechnet werden, sind aber gewollte angebbar, um alle Spielvarianten möglich zu machen).
Als nächstes suchen wir in den 60 Zeichen von hinten nach vorne die zwei Ziffern, die nicht gleich sind, was 3 und 7 sind. Zu diesen zählen wir die Personalnr. 13, so dass wir auf 16 und 20 kommen. Dies werden unsere Breitenwerte für die Transpositionen
X1 = 16
X2 = 20
Nun werden die Zeilen 2 bis 6 der 60 Zeichen nach der 1. Zeile umgestellt:
4604321317
0647534487
6012878253
6130550789
7435057576
1785522237
Dazu wird die niedrigste Ziffer aus der 1. Zeile gesucht, hier die 1 an 9. Stelle und die darunterstehende Spalte notiert. Dementsprechend wird mit den anderen Ziffern aufsteigend fortgefahren, so dass dies zu dem folgendem Ergebnis führt:
48072 85873 37552 58505 42752 06671 72055 60147 73967 41338
Die ersten 16 (X1) Zeichen werden unser 1. Transpositionsschlüssel, die weiteren 20 (X2) Zeichen unser zweiter:
KeyTrans1 = 4807285873375525
KeyTrans2 = 85054275206671720556
Die 6. Stelle des Datum wird die 5er Gruppe von hinten, an dem wir die Zufallszahl verstecken werden. Sollte hier eine 0 stehen, wird die 10. Gruppe von hinten genommen.
GrpHide = 5
Kodierung durch Straddling Checkerboard
Es wird eine Substitutions Tabelle aufgebaut mit der errechneten Überschritenzeile. Die Leerspalten liegen auf den im Schlüssel angegebenen Positionen 3 und 6 (4. und 7. Spalten, da Zählung bei 0 beginnt):
0 1 2 3 4 5 6 7 8 9
1 8 0 6 7 2 3 4 5 9
S A N - D T - I E R
3 B C F G H J K L M O
6 P Q U V W X Y Z . /
Mittels des Straddling Checkerboard Algorithmus (dort nachzulesen) wird der Klartext nun in Ziffern überführt:
D i e s i s t e i n B e i s p i e l k l a r t e x t
7 4 5 1 4 1 2 5 4 0 31 5 4 1 61 4 5 34 33 34 8 9 2 5 62 2
d e r d a z u d i e n t d i e V I C C h i f f r e
7 5 9 7 8 64 60 7 4 5 0 2 7 4 5 66 4 38 38 37 4 30 30 9 5
a u f K r y p t o g r a f i e d e n a e h e r z u
8 60 30 33 9 63 61 2 39 36 9 8 30 4 5 7 5 0 8 5 37 5 9 64 60
e r k l a e r e n
5 9 33 34 8 5 9 5 0
Die ergibt zusammengefasst folgende 112 Ziffern, die um 3 Zufallsziffern erweitert werden, um auf eine durch 5 teilbare Anzahl zu kommen, was wichtig für die 5er-Gruppierung sein wird.
74514 12540 31541 61453 43334 89256 22759 78646 07450 27456 64383 83743 03095 86030 33963 61239 36983 04575 08537 59646 05933 34859 50526
1. Transposition: gewöhnlicher Spaltentausch
mit dieser Ziffernfolge wird jetzt ein gewöhnlicher Spaltentausch (dort nachzulesen) vollführt. Als Schlüssel (Überschrift) wird der zuvor berechnete KeyTrans1 angewandt. Dies führt zu folgender Ziffernfolge:
44833 30127 03750 87765 33944 30471 75539 52343 34955 00155 46232 39624 99501 37408 64403 97312 53688 44568 66213 68005 53683 53559 66946
2. Transposition: spezieller Dreiecks-Spaltentausch
Die nun folgende Transposition ist ein abgewandelter Spaltentausch, bei dem die Tabelle in 2 Schritten gefüllt wird. Dazu wird eine Matrix verwendet, bei denen ein Teil mit X gefüllt ist. Dann wird zuerst der normale Teil der Tabelle und dann der X-Teil der Tabelle aufgefüllt. Der X Teil wird nach einem spezielle Verfahren aufgefüllt, der Dreiecke in die Matrix "malt".
Ausgehend vom oben errechneten Schlüssel für die 2. Transposition "KeyTrans2" wird die niedrigste Ziffer darin gesucht und von dort aus die 1. Zeile bis zum Ende mit X gefüllt. Die nächsten Zeilen wird mit dem X jeweils eine Position weiter rechts begonnen, bis das Dreieck vollendet ist. Dann folgt eine Leerzeile und das Spiel geht mit der nächstniedrigen Ziffer weiter, bis die Matrix genügend groß ist (die Beispielmatrix ist länger als nötig, um die Dreiecke besser zu illustrieren):
85054275206671720556
-------------XXXXXXX
--------------XXXXXX
---------------XXXXX
----------------XXXX
-----------------XXX
------------------XX
-------------------X
--------------------
-----XXXXXXXXXXXXXXX
------XXXXXXXXXXXXXX
-------XXXXXXXXXXXXX
--------XXXXXXXXXXXX
---------XXXXXXXXXXX
...
-------------------X
--------------------
--------XXXXXXXXXXXX
---------XXXXXXXXXXX
...
Entsprechend für 115 Zeichen, die unsere Ziffernfolge aus dem Straddling Checkerboard lang ist:
85054275206671720556
-------------XXXXXXX
--------------XXXXXX
---------------XXXXX
----------------XXXX
-----------------XXX
---------------
Nun wird die Ziffernfolge zuerst in die mit '-' markierten Felder eingetragen
85054275206671720556
4483330127037XXXXXXX
50877653394430XXXXXX
471755398234334XXXXX
9550015546232396XXXX
24995013740864403XXX
973125368844568
und danach erst in die mit X markierten:
85054275206671720556
44833301270376621368
50877653394430005536
47175539523433483535
95500155462323965966
24995013740864403946
973125368844568
Nun werden wieder nach bekanntem Muster der Reihe nach die Spalten ausgelesen
85054275206671720556
44833301270376621368
50877653394430005536
47175539523433483535
95500155462323965966
24995013740864403946
973125368844568
Dies führt zu:
603346 365105 235478 20860 375052 407547 377091 139536 35599 63364 043204 344384 86566 053513 733265 604948 454929 881593 792648 15353
in 5er Gruppen:
60334 63651 05235 47820 86037 50524 07547 37709 11395 36355 99633 64043 20434 43848 65660 53513 73326 56049 48454 92988 15937 92648 15353
Verstecken der Zufallszahl
Zum Schluss wird die Zufallszahl 56349 noch in der 5. Gruppe von hinten versteckt und die Chiffrierung ist abgeschlossen:
60334 63651 05237 47860 86037 50524 07547 37709 11395 36355 99633 64043 20434 43848 65640 53513 73326 56049 48454 56349 92988 15937 92648 15353
Das Dechiffrieren geschieht prinzipiell genauso, nur durch umgekehrtes Anwenden der Verarbeitungsschritte. Dabei können am Ende des dekodierten Klartextes Zufallsbuchstaben auftauchen, die durch das beim Chiffrieren durchgeführte Auffüllen mit Zufallsziffern entstanden waren. Diese werden beim Lesen dann einfach ignoriert.
Code / Chiffre online dekodieren / entschlüsseln bzw. kodieren / verschlüsseln (DeCoder / Encoder / Solver-Tool)
Es sind 5 Schlüsselbestandteile notwendig, die durch Kommata getrennt anzugeben sind:1. Ein Schlüsselwort der Länge 8 mit häufiger benutzten Buchstaben, z. B. "DeinStar"
2. Ein Schlüsselsatz der Mindestlänge 20
3. Ein 6-stelliges Datum
4. Eine Zahl (PersNr.) im einstelligen oder unteren zweistelligen Bereich
5. 2 unterschiedliche Ziffern
Quellen und weiterführende Links
1 Wrixon, Fred B.: Codes, Chiffren & andere Geheimsprachen, Könemann Verlag 2000, S. 280Kahn, David: The Codebreakers - The Story of Secret Writing, Macmillan Verlag 1968, S. 668
Crypto-World 9-10/2013 (tschechisch)