Szyfr VIC – szyfr używany w latach 50 XX w. przez siatkę radzieckich szpiegów w Stanach Zjednoczonych Ameryki. Jego nazwa pochodzi od pierwszych liter imienia Victor, które było kryptonimem Reino Häyhänena – szyfranta i radiotelegrafisty siatki szpiegowskiej działającej w USA w latach 1948–1957 pod kierownictwem Williama Fishera ps. Rudolf Abel. W maju 1957 roku R.Häyhänen, zamiast zgodnie z rozkazem PGU KGB wrócić do Moskwy, zgłosił się do Ambasady USA w Paryżu i poprosił o azyl. Poza nazwiskami kilku radzieckich szpiegów działających w USA i Kanadzie, R.Häyhänen wyjawił Amerykanom zasady działania szyfru, o którego istnieniu nie wiedzieli. Okazało się, że użyto go do zaszyfrowania depeszy przechwyconej przez FBI w 1953 roku i mimo wysiłków amerykańskich kryptoanalityków dotąd nieodczytanej.
Opracowując nowe szyfry w latach 20 i 30 XX wieku, radzieccy kryptolodzy oparli się na szyfrze nihilistów[1]. Wykorzystali jego podstawowe funkcje (tj. najpierw zamiana liter tekstu jawnego na cyfry, a potem przekształcenie tego ciągu cyfr w oparciu o klucz), doskonaląc je, co spowodowało znaczne wzmocnienie tworzonych szyfrów. Opracowanych wtedy szyfrów używały w czasie II wojny światowej dwie najsłynniejsze siatki radzieckiego wywiadu pracujące przeciw III Rzeszy – Czerwona Orkiestra i grupa kierowana w Japonii przez Richarda Sorge. Według kryptologów szyfr używany przez Czerwoną Orkiestrę był nieco słabszy od tzw. szyfru Ramsaya używanego przez siatkę R.Sorgego. Jednak szczytowym osiągnięciem ewolucji radzieckich szyfrów był opracowany prawdopodobnie pod koniec lat 40 XX w. szyfr VIC. Był idealnym szyfrem ręcznym – wszystkie elementy potrzebne do jego użycia można było zapamiętać. Nie używano książek kodów lub jednorazowych bloczków szyfrujących, których bezpieczne przechowywanie i zabezpieczenie przed wykryciem było poważnym problemem szpiegów.
Przekształcenie tekstu jawnego w zaszyfrowany jest w tym systemie podzielone na dwa etapy.
Pierwszy etap to tworzenie kluczy i – w oparciu o nie – szachownicy z rozwidleniem i dwóch tablic, w których cyfry szyfru zostaną wymieszane. Aby wyznaczyć klucze, które będą użyte do dalszego szyfrowania potrzebnych jest pięć elementów: cztery stałe i jeden zmienny.
Etap drugi to właściwe szyfrowanie. VIC był połączeniem szyfru podstawieniowego z przestawieniowym. Przy pomocy szachownicy tekst jest zamieniany na ciąg cyfr, który następnie w dwóch tablicach ulega przemieszaniu (przez przestawienie kolumn) usuwającemu wszelkie powiązania między cyframi. Na końcu uzyskany ciąg cyfr był dzielony na pięciocyfrowe grupy, dodawano w ustalonym miejscu grupę jednorazową i całość była zapisywana jako ostateczna wersja tekstu zaszyfrowanego. W tej postaci tekst był nadawany przez radio lub pozostawiany w umówionym miejscu jako zmniejszona fotokopia. Aby zaoszczędzić pracy odbiorcy oraz umożliwić sprawdzenie, czy przekaz został odebrany w całości, jako nagłówek wiadomości podawano ilość 5-cyfrowych grup[2].
Najpierw od wymyślonej grupy cyfr należy odjąć (modulo 10) pierwsze pięć cyfr stałej sześciocyfrowej grupy.
2 | 7 | 1 | 8 | 5 |
9 | 4 | 1 | 9 | 0 |
3 | 3 | 0 | 9 | 5 |
---|
Dwudziestoliterowy tekst jest dzielony na dwie połowy, które zapisuje się obok siebie (w poniższej tabeli – wiersz A). Następnie (dla każdej połowy oddzielnie) należy podpisać litery według ich kolejności w alfabecie kolejnymi liczbami od 1 do 0 (w tym szyfrze wszystkie ciągi cyfr i działania na liczbach są traktowane zgodnie z regułą modulo 10 czyli najniższą z dziesięciu liczb jest 1, a najwyższą 0). Jeżeli jakaś litera się powtarza, w każdym miejscu podpisuje się ją kolejnymi liczbami, zaczynając od lewej strony tekstu (wiersz B). Wynik odejmowania przeprowadzonego na początku wpisywany jest jako pierwsze 5 cyfr lewej połowy następnego wiersza (C), a następne 5 cyfr tworzy się według reguł ciągu Fibonacciego i modulo 10 – odrzucając część dziesiętną wyniku, czyli:
3 + 3 = 6, 3 + 0 = 3, 0 + 9 = 9, 9 + 5 = 14 (14 – 10 = 4), 5 + 6 = 11 (11 – 10 = 1).
W prawej połowie wiersza C wpisuje się po kolei cyfry 1–0. Wiersz D to wynik dodania (modulo 10) cyfr z lewej strony wierszy B i C.
A | W | R | Ó | B | E | L | E | K | J | E | S | T | M | A | Ł | A | P | T | A | S | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
B | 0 | 9 | 8 | 1 | 2 | 7 | 3 | 6 | 5 | 4 | 7 | 9 | 5 | 1 | 4 | 2 | 6 | 0 | 3 | 8 | |
C | 3 | 3 | 0 | 9 | 5 | 6 | 3 | 9 | 4 | 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
D | 3 | 2 | 8 | 0 | 7 | 3 | 6 | 5 | 9 | 5 |
Aby utworzyć następną grupę dziesięciu cyfr (wiersz E), trzeba odszukać w prawej połowie wiersza C kolejne cyfry z wiersza D i zastąpić je cyframi stojącymi nad nimi w wierszu B (czyli 3 –> 5, 2 –> 9 itd.). Wiersz F to opis kolejności występowania cyfr w wierszu E według takiej samej reguły, jak przy tworzeniu wiersza B. Będzie on później użyty jako współrzędne kolumn w tabeli. Następnie zgodnie z regułami ciągu Fibonacciego należy utworzyć pięć grup dziesięciocyfrowych (wiersz G na podstawie wiersza E, dalej H na podstawie G i tak kolejno do K).
E | 5 | 9 | 0 | 8 | 6 | 5 | 2 | 4 | 3 | 4 |
F | 5 | 9 | 0 | 8 | 7 | 6 | 1 | 3 | 2 | 4 |
G | 4 | 9 | 8 | 4 | 1 | 7 | 6 | 7 | 7 | 8 |
H | 3 | 7 | 2 | 5 | 8 | 3 | 3 | 4 | 5 | 1 |
I | 0 | 9 | 7 | 3 | 1 | 6 | 7 | 9 | 6 | 1 |
J | 9 | 6 | 0 | 4 | 7 | 3 | 6 | 5 | 7 | 0 |
K | 5 | 6 | 4 | 1 | 0 | 9 | 1 | 2 | 7 | 5 |
Teraz w oparciu o powstałą tabelę ustala się ilość i współrzędne kolumn dwóch tablic (tzw. bloków przestawieniowych[3]), w których cyfry szyfru zostaną wymieszane. Posłuży do tego indywidualna liczba agenta (w tym przykładzie 13) i dwie cyfry z ostatniego wiersza powyższej tabeli (K) spełniające następujące warunki: mają to być dwie sąsiednie, ostatnie cyfry wiersza, różne i większe od zera. W tym przykładzie będą to cyfry 7 i 5 (ale gdyby ostatnią cyfrą wiersza było 0, to do tworzenia tablic należałoby użyć cyfr 2 i 7).
Ilość wierszy tych tablic będzie zależeć od długości tekstu, ale ilość kolumn jest z góry założona, a określa ją wynik dodania do siebie indywidualnej liczby agenta i dwóch liczb z wiersza K. W tym przykładzie pierwsza tablica będzie miała 13 + 7 = 20, a druga 13 + 5 = 18 kolumn. Aby wypełnić pierwsze wiersze tych tablic, należy potrzebną ilość cyfr (20 + 18 = 38) wypisać z 10-cyfrowych grup G-K. Wypisywanie odbywa się pionowo (kolumnami), a kolejność czytanych kolumn wyznaczają cyfry w wierszu F.
Wypisane w ten sposób kolejne 38 cyfr z grup G-K to:
6 3 7 6 1 7 5 6 7 7 7 4 9 5 2 8 1 1 0 5 4 3 0 9 5 7 3 6 3 9 1 8 1 7 0 4 5 3
Te cyfry należy zapisać jako oddzielne ciągi (pierwszy z 20 i drugi z 18 cyfr), a następnie opisać kolejność cyfr w ciągu cyframi od 1 do 20 (pierwszy) i od 1 do 18 (drugi). Utworzone w ten sposób wiersze będą współrzędnymi kolumn w blokach przestawieniowych. Ostateczny kształt tablice uzyskają, kiedy będzie znana całkowita liczba cyfr tekstu zaszyfrowanego.
6 | 3 | 7 | 6 | 1 | 7 | 5 | 6 | 7 | 7 | 7 | 4 | 9 | 5 | 2 | 8 | 1 | 1 | 0 | 5 | |
1 blok przestawieniowy | 10 | 5 | 13 | 11 | 1 | 14 | 7 | 12 | 15 | 16 | 17 | 6 | 19 | 8 | 4 | 18 | 2 | 3 | 20 | 9 |
4 | 3 | 0 | 9 | 5 | 7 | 3 | 6 | 3 | 9 | 1 | 8 | 1 | 7 | 0 | 4 | 5 | 3 | |
2 blok przestawieniowy | 7 | 3 | 17 | 15 | 9 | 12 | 4 | 11 | 5 | 16 | 1 | 14 | 2 | 13 | 18 | 8 | 10 | 6 |
Teraz na podstawie ostatniej z utworzonych poprzednio 10-cyfrowych grup (K), opisując kolejność cyfr tej grupy cyframi od 1 do 0, tworzy się jeszcze jeden wiersz (L).
K | 5 | 6 | 4 | 1 | 0 | 9 | 1 | 2 | 7 | 5 |
L | 5 | 7 | 4 | 1 | 0 | 9 | 2 | 3 | 8 | 6 |
Cyfry z tego wiersza będą współrzędnymi kolumn szachownicy, która posłuży do szyfrowania tekstu. Jest to szachownica z rozwidleniem, w której dodatkowo skomplikowano proces wypełniania jej literami. Słowo klucz (СНЕГОПАД) składało się z 8 liter, ale w drugim wierszu szachownicy wpisywano tylko 7. Pozostałe litery alfabetu (w tym ostatnią literę słowa-klucza) wpisywano w pola szachownicy kolumnami od lewej z pominięciem kolumn trzeciej i piątej (w oryginalnej szachownicy Häyhänena używano cyrylicy, której ilość liter sprawiała, że ostatnie pole o współrzędnych 22 również zostawało puste). W pustych polach umieszczono kropkę, przecinek oraz kilka symboli używanych w czasie szyfrowania tekstu:
Nie było kodu zastępującego spację. Teksty szyfrowano bez odstępów między wyrazami.
Poniżej szachownica utworzona według elementów tego przykładu (słowo-klucz to ESTONIA).
5 | 7 | 4 | 1 | 0 | 9 | 2 | 3 | 8 | 6 | |
---|---|---|---|---|---|---|---|---|---|---|
E | S | T | O | N | I | A | ||||
3 | Ą | Ć | Ż | F | Ź | J | Ł | Ó | Ś | W |
8 | B | D | . | G | L/C | K | M | P | U | Y |
6 | C | Ę | , | H | PT | L | Ń | R | V | Z |
W tym przykładzie do zaszyfrowania użyty będzie fragment opisu szyfru VIC rozpoczynający tę stronę:
Szyfr używany w latach 50 XX w. przez siatkę radzieckich szpiegów w Stanach Zjednoczonych Ameryki. Uznawany jest za najlepszy w historii szyfr ręczny czyli taki, w którym do szyfrowania nie używano żadnych urządzeń mechanicznych lub elektrycznych. Jego nazwa pochodzi od pierwszych liter imienia Victor, które było kryptonimem Reino Häyhänen.
Osoba, która chciała odczytać tekst utajniony szyfrem VIC, musiała powtórzyć całą procedurę tworzenia kluczy i tablic. Wszystkie potrzebne elementy stałe były znane nadawcy i odbiorcy, a grupę jednorazową odbiorca mógł odszukać w tekście według znanej reguły. Po utworzeniu potrzebnych tablic należało odwrócić wszystkie czynności, jakie przeprowadził szyfrujący:
Z wypełnianiem bloków przekształceń przy rozszyfrowywaniu tekstu wiązało się utrudnienie, z którym nie spotykał się szyfrujący. Na ilustracjach powyżej zaznaczono krzyżykami komórki tabel, które zostają puste po wpisaniu całego ciągu cyfr. Te komórki powodują, że niektóre kolumny są krótsze o jedną, a w drugim bloku nawet o dwie komórki. Przy szyfrowaniu nie miało to znaczenia, ale w czasie odczytywania zaszyfrowanego tekstu należało to uwzględnić, wpisując cyfry do kolumn bloków przekształceń. O ile w pierwszym bloku było to łatwe (znając liczbę cyfr tekstu zaszyfrowanego, można było obliczyć, ile pustych komórek zostanie w ostatnim wierszu), o tyle w drugim bloku – z powodu pól D – trzeba było przed wypełnieniem tabeli policzyć komórki pozostające poza polami D, następnie te zaznaczone i w ten sposób znaleźć komórki, które mają zostać puste.
Szyfr VIC jest uznawany za najlepszy w historii szyfr ręczny, czyli taki, w którym do szyfrowania nie używano urządzeń mechanicznych lub elektrycznych. Znany historyk kryptologii – David Kahn – napisał: W teorii system ten można złamać, jednak w praktyce jest nie do pokonania[6]. Ceną za odporność na złamanie szyfru była jednak niezwykle skomplikowana i czasochłonna procedura szyfrowania i deszyfrowania. Z tego powodu radzieccy szpiedzy nie lubili tego szyfru. Według zeznań R.Häyhänena, nawet szef siatki, William Fisher, w kontaktach z PGU KGB wolał używać jednorazowych bloczków szyfrujących.