VIC Chiffre

Kategorisierung:Klassisch / Substitution und Transposition
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, 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 Für die Verschlüsselung wird benötigt: Das Verfahren lässt sich am besten anhand eines Beispieles erklären.

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. 7451412540315416145343334892562275978646074502745664383837430309586030339636123936983045750853759646059333485950526

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: 4483330127037508776533944304717553952343349550015546232396249950137408644039731253688445686621368005536835355966946

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 44833301270376671368 50877653394430005536 47175539823433483535 95500155462323965966 24995013740864403945 973125368844568 Nun werden wieder nach bekanntem Muster der Reihe nach die Spalten ausgelesen 85054275206671720556 44833301270376671368 50877653394430005536 47175539823433483535 95500155462323965966 24995013740864403945 973125368844568 Dies führt zu: 6033463651052374786086037505240754737709113953635599633640432043443848656405351373326560494845492988159379264815353 in 5er Gruppen: 60334 63651 05237 47860 86037 50524 07547 37709 11395 36355 99633 64043 20434 43848 65640 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. 280
Kahn, David: The Codebreakers - The Story of Secret Writing, Macmillan Verlag 1968, S. 668