Szyfr VICszyfr 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.

Historia edytuj

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

Algorytm edytuj

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.

Cztery stałe elementy to:
  • Grupa złożona z 6 cyfr (zapamiętywana najprościej – jako data). W tym przykładzie jest to 941903, jako data: 9.4.1903 – dzień urodzin Stanisława Wigury, sławnego polskiego lotnika.
  • Ciąg 20 liter (zapamiętywanych w formie tekstu). W tym przykładzie – 20 pierwszych liter wiersza "O wróbelku", K. I. Gałczyńskiego: Wróbelek jest mała ptaszyna. (W oryginalnej wersji szyfru były to słowa piosenki "Одинокая гармонь" (Samotna harmonia) napisanej do wiersza Michaiła Isakowskiego)
  • Słowo-klucz – podstawa do wypełnienia szachownicy. W tym przykładzie będzie to ESTONIA (w wersji rosyjskiej było to słowo СНЕГОПАД);
  • Jedna krótka liczba, która była indywidualna i wyjątkowa dla każdego agenta. W tym przykładzie będzie to 13 – takiej liczby używał do 1956 roku Reino Häyhänen.
Element zmienny – grupa 5 cyfr, wymyślana jednorazowo do każdego nowego szyfrowanego tekstu i umieszczana w ostatecznej wersji zaszyfrowanej jako jedna z ostatnich 5-cyfrowych grup. Jej lokalizację wyznaczała ostatnia z sześciu stałych cyfr. W tym przykładzie jest to 3 czyli jednorazowa grupa – tu: 27185 – będzie dołączona do depeszy jako trzecia od końca.

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

Tworzenie kluczy i tablic edytuj

VIC był opracowany do szyfrowania tekstów rosyjskich pisanych cyrylicą. W poniższym przykładzie zmodyfikowano niektóre elementy (np. szachownicę z rozwidleniem), żeby umożliwić użycie polskiego alfabetu.

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.

Tabelę zbudowaną z wierszy G-K konstruowano tak, aby można było uzyskać potrzebną liczbę cyfr bez konieczności powtarzania choćby najmniejszej części ciągu. W związku z tym ilość grup tworzonych na podstawie wiersza E zależała od indywidualnej liczby agenta. Ponieważ ilość kolumn w dwóch tablicach wyznaczano dodaniem do tej liczby dwóch liczb z wiersza K, a te mogą mieć najwyższą wartość 8 i 9, to maksymalną ilość kolumn w obu tablicach opisuje wzór:
największa ilość kolumn = (liczba agenta + 8) + (liczba agenta + 9). W przypadku liczby 13 potrzebne będą maksymalnie 43 cyfry. W 1956 roku indywidualną liczbę Häyhänena zmieniono na 20, więc największa potrzebna liczba cyfr wzrosła do 57. W związku z tym w procesie tworzenia grup na podstawie wiersza E dodano jedną grupę, co dawało 60 cyfr[2].

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:

 
Szachownica Häyhänena
  • symbol powtórzenia (używany, aby uniknąć pomyłki przy zapisywaniu lub odczytywaniu ważnych fragmentów tekstu; w przechwyconym przez FBI szyfrogramie użyto go powtarzając oznaczenie punktu kontaktowego);
  • symbol oznaczający słowo numer (w korespondencji między radzieckimi wywiadowcami i centralą w Moskwie powoływano się często na wcześniejsze szyfrogramy podając ich numery[4]; użycie skrótu redukowało liczbę znaków w tekście zaszyfrowanym);
  • symbol L/C oznaczający początek/koniec zapisu cyfr (osoba odszyfrowująca tekst po odczytaniu znaku L/C wiedziała, że następujące po nim cyfry nie są kodami liter, tylko elementami liczby; dopiero następne pojawienie się znacznika L/C oznaczało powrót do zaszyfrowanych liter; żeby uniknąć pomyłek, każdą cyfrę powtarzano trzykrotnie);
  • symbol PT oznaczający początek tekstu (początek każdego szyfrogramu zawierał stałe elementy – np. kolejny numer depeszy – które mogły być wskazówką dla kryptoanalityków; z tego powodu przed rozpoczęciem szyfrowania tekst jawny dzielono w dowolnym miejscu i powstałe dwie części zamieniano miejscami; ukrywano w ten sposób początek wiadomości wewnątrz szyfrogramu oznaczając go właśnie symbolem PT).
  • symbol P/Ł, który (na tej samej zasadzie jak L/C) oznaczał początek użycia alfabetu łacińskiego i miejsce powrotu do cyrylicy; litery alfabetu łacińskiego kodowano wg najprostszej tablicy: A = 01, B = 02, C = 03 itd[2].

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

Szyfrowanie edytuj

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.

 
Tekst jawny przekształcony wstępnie przy pomocy szachownicy
  • Najpierw tekst jawny dzieli się w dowolnym miejscu na dwie części i zamienia je miejscami. Prawdziwy początek tekstu zaznaczany jest symbolem PT. Następnie tak powstały ciąg liter i znaków przy pomocy szachownicy przekształca się w ciąg cyfr. Ilość cyfr tekstu zaszyfrowanego musi być wielokrotnością liczby 5, ponieważ jego ostateczna wersja będzie podzielona na pięciocyfrowe grupy. Jeżeli w wyniku szyfrowania szachownicą powstanie ich za mało, należy na końcu zaszyfrowanego tekstu dodać przypadkowe cyfry, aby osiągnąć wymaganą ilość. W tym przykładzie po zaszyfrowaniu tekstu szachownicą powstają 452 cyfry, więc trzeba dodać 3 cyfry. Znając teraz pełną długość tekstu zaszyfrowanego (455 cyfr), można już utworzyć w ostatecznym kształcie dwa bloki przestawieniowe. Ilość kolumn w tych tablicach była już wyznaczona wcześniej, a teraz można obliczyć ilość wierszy (nagłówkiem każdego bloku będzie wiersz cyfr wyznaczony w pierwszym etapie).
Pierwszy blok ma 20 kolumn, więc 455 cyfr wypełni 23 wiersze – 22 pełne i 15 cyfr w ostatnim (455 : 20 = 22 r 15).
Drugi blok ma 18 kolumn, więc 455 cyfr wypełni 26 wierszy – 25 pełnych i 5 cyfr w ostatnim (455 : 18 = 25 r 5).


 
Wypełniony pierwszy blok przestawień
  • Zaszyfrowany tekst należy teraz wpisać do wierszy pierwszego bloku przestawień (kursywą zapisano trzy dodane na końcu cyfry). Pola zaznaczone na ilustracji krzyżykami pozostają puste po wpisaniu wszystkich cyfr szyfru do tabeli. Następnie przeprowadza się pierwsze mieszanie cyfr szyfru, wypisując cyfry z tabeli kolumnami. Kolejność czytania kolumn wyznaczają liczby w nagłówku.
Powstały nowy ciąg cyfr będzie przepisany do drugiego bloku przestawieniowego, ale po uprzednim przygotowaniu tabeli.


 
Drugi blok przestawieniowy; od lewej: pusty z zaznaczonymi na żółto polami D, po pierwszym etapie wypełniania cyframi i po wpisaniu wszystkich cyfr
  • Mieszanie cyfr szyfru w drugim bloku przestawień przebiegało tak samo, jak w pierwszym – cyfry były wpisywane do bloku wierszami, a odczytywane kolumnami wg kolejności wyznaczonej liczbami w nagłówku. Jednak przed wypełnieniem cyframi tabela była modyfikowana, żeby zwiększyć stopień wymieszania cyfr. Fragmenty tabeli zaznaczano tworząc obszary nazwane przez amerykańskich kryptoanalityków polami D (od ang. disruption)[5].
Sposób wyznaczania tych obszarów był następujący. Pierwszym fragmentem tabeli, który będzie należał do pola D jest komórka leżąca w pierwszym wierszu i w kolumnie oznaczonej liczbą 1 oraz pozostałe komórki tego wiersza leżące na prawo od niej. W każdym następnym wierszu zaznaczany fragment zaczyna się od komórki przesuniętej o jedną kolumnę w prawo w stosunku do leżącego wiersz wyżej. Kiedy taki schodkowany obszar skończy się pojedynczą komórką, pomija się jeden wiersz, a w następnym zaznaczanie pola D zaczyna się od komórki leżącej w kolumnie oznaczonej liczbą 2. Takie zaznaczanie kontynuuje się aż do osiągnięcia ostatniego wiersza.
Kiedy zaznaczone są już wszystkie możliwe pola D, można wpisać cyfry z kolumn pierwszego bloku przestawień. Wpisuje się je do wierszy drugiego bloku, ale najpierw tylko do komórek niezaznaczonych, a kiedy wypełni się wszystkie takie komórki tabeli – do wierszy leżących w polach D.
Pola zaznaczone na ostatniej ilustracji krzyżykami pozostają puste po wpisaniu cyfr szyfru do tabel.


  • Z drugiego bloku przestawieniowego cyfry znowu wypisuje się kolumnami w kolejności wyznaczonej liczbami w nagłówku. Powstały ciąg cyfr dzieli się na pięciocyfrowe grupy. Zgodnie z regułą opisaną na początku, jednorazową grupę użytą do szyfrowania tego tekstu wstawia się jako jedną z grup tekstu zaszyfrowanego (w tym przykładzie jest to grupa 27185 umieszczona jako trzecia od końca). Na początku tekstu umieszczano liczbę informującą o ilości pięciocyfrowych grup.
 
Ostateczna forma tekstu zaszyfrowanego

Rozszyfrowywanie edytuj

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:

  • Otrzymany ciąg cyfr wpisuje się do kolumn 2. bloku przestawieniowego (kolejność wypełniania kolumn określają liczby w nagłówku).
  • Cyfry wypisuje się z drugiego bloku wierszami i przepisuje do kolumn pierwszego bloku (znowu według kolejności wyznaczonej liczbami z nagłówka).
  • Ciąg cyfr, który powstanie przez wypisanie wierszy pierwszego bloku, jest podstawą do przekształcenia cyfr w litery przy pomocy szachownicy.

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.

Podsumowanie edytuj

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.

Przypisy edytuj

  1. Андрей Синельников: Шифры и революционеры России rozdz. Общество «Земля и Воля». [dostęp 2017-01-25]. (ros.).
  2. a b c Андрей Синельников: Шифры советской разведки rozdz. Марк, Вик и пять центов. [dostęp 2016-03-18].
  3. David Kahn: Łamacze kodów. Warszawa: Wydawnictwa Naukowo-Techniczne, 2004, s. 783. ISBN 83-204-2746-0.
  4. Nigel West: Venona. Największa Tajemnica Zimnej Wojny. Warszawa: Bellona, 2006. ISBN 83-11-10561-8.
  5. David Kahn: Number One from Moscow. [dostęp 2017-01-21].
  6. David Kahn: Łamacze kodów. Warszawa: Wydawnictwa Naukowo-Techniczne, 2004, s. 784. ISBN 83-204-2746-0.)

Bibliografia edytuj