Cod VIC
Cifrul VIK , cunoscut și sub numele de cifrul Abel , este un cifr folosit de spionul sovietic Reino Heihanen .
Istorie
Cifrul a fost folosit de locotenent-colonelul KGB Reino Heihanen, care a lucrat în serviciile secrete sovietice ilegale în Statele Unite între 1952 și 1957. Din 1954, Heihanen a fost asistentul lui Rudolf Abel , un proeminent agent de informații sovietic. Heihanen se ascundea în Statele Unite sub numele civil Victor, care a dat numele cifrului.
Unul dintre documentele care a folosit acest cifru a fost un text tipărit pe un microfilm care a fost descoperit accidental în 1953 în interiorul unui nichel . Eșantionul a fost livrat de urgență FBI, dar toate încercările de a descifra singur mesajul au fost în zadar. Agențiile guvernamentale americane au fost forțate să recunoască cifrul, care nu era supus criptoanalizei , „cel mai elegant și mai complex dintre toate cifrurile care erau în domeniul public”. [unu]
Structura cifrului
Caracteristici
Cifrul VIC aparține familiei nihiliste de cifruri. [2] Poate fi descris ca „ un cifr monoalfabetic de substituție , îmbunătățit printr-o permutare dublă modificată ”. [1] Cifrul s-a bazat pe principiile de rearanjare a caracterelor și înlocuirea lor cu altele și a folosit, de asemenea, 4 chei și a început cu o procedură complexă de obținere a unei secvențe numerice pseudoaleatoare , ceea ce a făcut-o una dintre cele mai dificile dintre toate cunoscute. „cifre manuale” din secolul al XX-lea . [3]
Algoritm de criptare
Această secțiune discută despre procesul de criptare folosind exemplul unui mesaj trimis pe un nichel. [3]
Textul mesajului original
1. Felicitări pentru sosirea în siguranță. Confirmăm primirea scrisorii dumneavoastră la adresa „B” Repet „B” și citind scrisoarea nr. 1.
2. Pentru a organiza o copertă, am instruit să vă predăm trei mii de localnici. Înainte de a le investi în orice afacere, consultați-ne, raportând caracteristicile acestui caz.
3. La cererea dvs., vom preda separat reteta de realizare a filmului soft si stiri impreuna cu o scrisoare catre mama.
4. Cântarele vă vor fi trimise devreme. Criptați litere scurte și faceți mai multe cu inserții. Toate datele despre tine, locul de muncă, adresa etc. nu poate fi transmis într-o singură criptare. Transferați inserțiile separat.
5. Coletul a fost predat personal soției mele. Totul este bine cu familia. Vă dorim succes.
Salutare de la camarazi. Nr. 1/03 decembrie.
Cifrul a folosit 4 chei simultan : un număr cheie din șase cifre, 20 de litere ale frazei cheie, 7 litere ale cuvântului cheie și un mic număr personal al agentului. În mesajul menționat, a fost folosită ca primă cheie o dată semnificativă - 3 septembrie 1945 - ziua victoriei Uniunii Sovietice asupra Japoniei - scrisă sub forma: 391945 . Cheia de text a fost aleasă din cântecul lui M. Isakovsky „Lonely Accordion” :
Totul a înghețat din nou până în zori -
Ușa nu scârțâie, focul nu izbucnește.
Tot ce poți auzi este un acordeon hoinărind pe strada Lonely
.
Cuvântul de cod a fost cuvântul „NOWFALL” . Numărul personal al lui Vic era 13 .
În plus, pentru fiecare cifr a fost ales un „indicator” aleatoriu de cinci cifre al cifrului. În exemplul dat, acest număr este 20818 .
- În primul rând, primele cinci cifre ale tastei numerice au fost scăzute modulo 10 din cifrele indicatorului:
−
2
0
opt
unu
opt
3
9
unu
9
patru
_
9
unu
7
2
patru
(
mod
zece
)
{\displaystyle {\begin{matrix}-{\begin{matrix}2\ 0\ 8\ 1\ 8\\{\underline {3\ 9\ 1\ 9\ 4}}\\\end{matrix}} \\\ \ \ 9\ 1\ 7\ 2\ 4\end{matrix}}{\pmod {10}}}
A șasea cifră a tastei numerice este folosită chiar la sfârșitul algoritmului.
- Apoi, a fost luată o cheie de text, împărțită în două jumătăți, iar literele din interiorul fiecărei jumătăți au fost numerotate în ordine alfabetică:
- La a treia etapă, grupul de cifre de cinci cifre obținut la paragraful 1 a fost completat cu un grup de zece cifre prin metoda lanțului de adăugare : ultimele cinci cifre au fost obținute prin adăugarea cifrelor adiacente ale numărului scris modulo 10, și anume: a fost calculată suma următoarei perechi de cifre, rezultatul modulo 10 a fost scris la sfârșitul secvenței, trecut la următoarea pereche și așa mai departe: . Numărul primit este 9172408964 .

- În continuare, cifrele corespunzătoare ale numărului rezultat și prima jumătate a secvenței obținute la paragraful 2 au fost însumate:
+
7
patru
2
0
unu
5
6
3
9
opt
9
unu
7
2
patru
0
opt
9
6
patru
_
6
5
9
2
5
5
patru
2
5
2
(
mod
zece
)
{\displaystyle {\begin{matrix}+{\begin{matrix}7\ 4\ 2\ 0\ 1\ 5\ 6\ 3\ 9\ 8\\{\underline {9\ 1\ 7\ 2\ 4 \ 0\ 8\ 9\ 6\ 4}}\end{matrix}}\\\ \ \ 6\ 5\ 9\ 2\ 5\ 5\ 4\ 2\ 5\ 2\end{matrix}}{\ pmod {10}}}

- A fost creată o regulă de recodificare folosind a doua parte a secvenței obținute în paragraful 2 ca imagini pentru numerele 1,2,3…,9,0:
unu
2
3
patru
5
6
7
opt
9
0
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
6
opt
7
unu
9
5
patru
0
3
2
{\displaystyle {\begin{matrix}1&2&3&4&5&6&7&8&9&0\\\downarrow &\downarrow &\downarrow &\downarrow &\downarrow &\downarrow &\downarrow &\downarrow &\downarrow &\downarrow &\\6&8&7&1&9&5&4&0&end{&\\\ matrice}}}

- Aplicând regula obținută, am recodat rezultatul obținut la pasul al patrulea:
6
5
9
2
5
5
patru
2
5
2
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
5
9
3
opt
9
9
unu
opt
9
opt
{\displaystyle {\begin{matrix}6&5&9&2&5&5&4&2&5&2\\\downarrow &\downarrow &\downarrow &\downarrow &\downarrow &\downarrow &\downarrow &\downarrow &\downarrow &\downarrow &\\5&9&3&8&9&9&1&8&9&8}\ }}

- Utilizând metoda lanțului de umplutură menționată la paragraful 3, pentru secvența de zece cifre rezultată, au fost generate următoarele 50 de cifre pseudoaleatoare :
- Ultimele 10 cifre primite au fost numerotate în ordine crescătoare (0 a venit după 9) cu numerele 1,2 ... 9,0 și aceleași numere - în următoarea ordine:Cele 10 cifre obținute în final au fost folosite pentru a construi un cifr pătrat :A fost desenat un tabel cu 4 rânduri și 10 coloane, primele 7 litere ale cuvântului cod au fost scrise în prima linie, restul literelor alfabetului rus, un punct, o virgulă, precum și unele simboluri au fost scrise în ordine verticală: "p / l" - trecerea la alfabetul latin, "n / c" - începutul textului digital, "n / t" - începutul textului criptat, "pvt" - repetarea textului precedent text. Cele 10 cifre primite au servit drept numere de coloană, prima coloană a rămas fără număr, restul de 3 numere primite corespunzând ultimelor 3 cifre ale numărului. Corespondența a fost stabilită astfel: fiecare literă a fost înlocuită cu un număr format dintr-un număr de rând și un număr de coloană. Caracterele primului rând care nu aveau număr au fost înlocuite cu numărul coloanei.
- Punctele 1-8 descriu doar pregătirea pentru criptare. Aceeași criptare a textului apare în următoarele patru paragrafe. Toate calculele anterioare au fost necesare doar pentru a obține tabelul de conversie în text digital, prezentat în paragraful 8, sau mai degrabă, secvența numerică scrisă mai sus și în stânga acestui tabel. Utilizarea unui astfel de sistem complex a fost justificată, deoarece toate cele patru chei utilizate în cifru au rămas neschimbate atunci când comunicau cu un agent. Și numai utilizarea unui „indicator” aleatoriu de cinci cifre a făcut posibilă schimbarea tabelului de conversie dincolo de recunoaștere. Folosind tabelul obținut prin tasta „NĂPĂDE”, textul a fost tradus în formă numerică:Conversia textului în formă numericăRecodificarea avea caracteristici interesante: numerele, pe lângă faptul că erau separate prin codul „n/c”, erau prezentate în formă codificată prin repetarea lor triplă; ghilimelele au fost scrise ca două virgule. În plus, procesul de recodare a început aleatoriu cu cuvântul „acoperire”, în timp ce începutul mesajului este indicat prin codul „n/t”. La final se adaugă 3 cifre nesemnificative până la un multiplu de cinci din numărul total de cifre.
- În cifrul VIC s-au folosit două permutări succesive, pentru implementarea fiecăreia dintre care s-a alcătuit câte un tabel. Pentru a determina dimensiunea meselor a fost folosit numărul personal al agentului. În plus, ultimele două cifre inegale ( 4 și 1 ) au fost luate din secvența pseudo-aleatorie de 50 de cifre obținută la articolul 7. Însumând aceste cifre cu numărul de agent, am obținut, respectiv, numărul de coloane din primul și al doilea tabel: . De asemenea, a fost necesar să se selecteze un set de chei de numere , care au fost atribuite fiecărei coloane de două tabele, adică, în acest caz, a trebuit selectat un total de 31 de numere. Cifrele au fost extrase din același tabel de la punctul 7. Să o reproducem din nou adăugând o a doua linie, plasând numerele de serie ale cifrelor cheie date în primul rând (operație similară cu cea efectuată la paragraful 8):
Numerele au fost selectate de sus în jos de-a lungul verticalelor; coloanele selectate urmate după numerotarea dată în al doilea rând. Ca rezultat, a fost obținută o secvență de 31 de numere pseudoaleatoare:
9
6
0
3
3
unu
opt
3
6
6
patru
6
9
0
patru
7
5
3
0
2
7
patru
3
0
patru
2
opt
7
7
unu
2
{\displaystyle 9\ 6\ 0\ 3\ 3\ 1\ 8\ 3\ 6\ 6\ 4\ 6\ 9\ 0\ 4\ 7\ 5\ 3\ 0\ 2\ 7\ 4\ 3\ 0 \ 4\ 2\ 8\ 7\ 7\ 1\ 2}

- A fost înregistrat primul tabel cu 17 coloane, primele 17 dintre cifrele cheie primite și numerele lor de serie au fost situate în cele două rânduri de sus, apoi codul numeric obținut la paragraful 9 a fost scris de-a lungul liniilor orizontale:Primul tabel de permutareSimilar paragrafului 10, coloanele părții principale a tabelului au fost scrise în ordinea numerotării din al doilea rând al tabelului:Rezultatul primei permutări
65730
94337
57918
93912
33454
79336
09626
19501
25307
11389
39831
27711
22124
67057
18113
69528
25846
62487
14525
19541
59657
49882
53977
55521
12020
22616
19691
39210
50224
19061
15015
85111
16771
66813
26469
24410
13061
79325
69169
36190
37853
81829
12416
70771
26347
31641
18190
58767
26821
07219
87801
55852
16927
93461
17925
60061
39822
18702
55133
51295
91830
31616
00124
04173
12730
22194
70117
97051
79172
09917
64726
29717
64102
11544
95219
37741
30511
66516
99557
15416
95676
56980
15856
70225
18606
34127
31225
69809
83128
21126
06292
37794
12197
07819
88905
23574
27822
93667
51381
22871
22721
14616
02102
79589
15076
12839
68815
85113
92076
16299
51385
50029
69000
99173
75061
38422
73611
33394
29221
11693
87051
94122
09761
14517
17023
75574
13191
70751
19127
59011
21067
11215
92161
24149
11316
90666
62820
21503
18146
55162
64262
80016
59256
93006
01166
81349
12714
85268
85671
93721
60921
43689
53044
81554
79513
14822
96519
82092
01166
18974
21279
68401
71492
87172
16657
77796
50716
16161
22032
91749
95102
03521
91561
22679
62982
79566
89671
08561
73352
96829
17607
92209
60569
21508
32391
18551
38533
65545
74181
55386
86641
11121
36411
10154
26496
32273
42349
03091
29316
31287
51622
09150
32227
68367
69665
18322
{\ Displaystyle {\ Begin {Matrix} 65730 \ 94337 \ 57918 \ 93912 \ 33454 \ 79336 \ 09626 \ 19501 \ 25307 \ 11389 \\ 39831 \ 27711 \ 22124 \ 67057 \ 18113 \ 69528 \ 25846 \ 67057 \ 18113 \ 69528 \ 25846 \ 67057 \ 18113 \ 69528 \ 25846 \ 67057 \ 1452221 \59657\ 49882\ 53977\ 55521\ 12020\ 22616\ 19691\ 39210\ 50224\ 19061\\15015\ 85111\ 16771\ 66813\ 26469\ 24410\ 13061\ 79325\ 69169\ 36190\\37853\ 81829\ 12416\ 70771 \ 26347\ 31641\ 18190\ 58767\ 26821\ 07219\\87801\ 55852\ 16927\ 93461\ 17925\ 60061\ 39822\ 18702\ 55133\ 51295\\91830\ 31616\ 00124\ 04173\ 12730\ 22194\ 70117\ 97051 \ 79172\ 09917\\64726\ 29717\ 64102\ 11544\ 95219\ 37741\ 30511\ 66516\ 99557\ 15416\\95676\ 56980\ 15856\ 70225\ 18606\ 34127\ 31225\ 69809\ 83128\ 21126\\06292\ 37794 \ 12197 \ 07819 \ 88905 \ 23574 \ 27822 \ 93667 \ 51381 \ 22871 \\ 22721 \ 14616 \ 02102 \ 79589 \ 15076 \ 12839 \ 68815 \ 85113 \ 92076 \ 16299 \ 7501 \ 50029 \ 69000 \ 16299 \ 7501 38422 \ 73611 \ 33394 \ 29221 \ 11693 \\ 87051 \ 94122 \ 09761 \ 14517 \ 17023 \ 75574 \ 13191 \ 70751 \ 19127 \ 59011 \\ 21067 \ 11215 \ 92161 \ 24149 \ \ \ \ 11067 \ 11215 \ 92161 \ 24149 \ \ \ \ \ 11067 \ 11215 \ 92161 \ 24149 \ \\ 1131 6 \ 55162 \\ 64262 \ 80016 \ 59256 \ 93006 \ 01166 \ 81349 \ 12714 \ 85268 \ 85671 \ 93721 \\ 60921 \ 43689 \ 53044 \ 81554 \ 79513 \ 14822 \ 96519 \ 82092 \ 011 \ 71492 \ 87172 \ 16657 \ 77796 \ 50716 \ 16161 \ 22032 \ 91749 \\ 95102 \ 03521 \ 91561 \ 22679 \ 62982 \ 79566 \ 89671 \ 08561 \ 73352 \ 96829 \ 38533\ 65545\ 74181\ 55386\\86641\ 11121\ 36411\ 10154\ 26496\ 32273\ 42349\ 03091\ 29316\ 36411\ 10154\ 26496\ 32273\ 42349\ 03091\ 29316\ 36411\ 10154\ 26496\ 32273\ 42349\ 03091\ 29316\\ 36411\ 26411\ 26411\ 26411\ 26411\ 26411\ 26411\ 26416
- A doua permutare a fost neuniformă. Pentru implementarea lui a fost alcătuit un al doilea tabel, în acest caz format din 14 rânduri. Primele două rânduri conțineau ultimele 14 cifre de cod și numerele acestora. Numărul de linii rămase a fost selectat suficient pentru a găzdui toate cifrele textului. Pentru a găzdui 1030 de cifre, sunt necesare 74 de linii. Apoi, în partea principală a tabelului, s-au pictat regiuni triunghiulare: regiunea k s-a sprijinit cu colțul din stânga sus pe linia cu numărul (în funcție de numerotarea din a doua linie) k, colțul din dreapta jos s-a sprijinit pe margine din tabel:Al doilea tabel de permutareTextul primit la paragraful 11 a fost scris în tabel rând cu rând, iar la început zona gri a tabelului a fost complet completată, apoi zona galbenă până când au fost folosite toate numerele. După asemănarea paragrafului 11, textul tabelului principal a fost scris în coloane, conform numerotării din al doilea rând, în tabel:Rezultatul celei de-a doua permutări
207
14546
36056
64211
08919
18710
71187
71215
02906
66036
10922
11375
61238
65634
39175
37378
31013
22596
19291
17463
23551
88527
10130
01767
12336
16669
97846
76559
50062
91171
72332
19262
69849
90251
11576
46121
24666
05902
19229
56150
23521
51911
78912
32939
31966
12096
12060
89748
25362
43167
99841
78271
31194
26838
77221
58343
61164
14349
01241
26269
71578
31734
27562
51236
12982
18089
66218
22577
09454
81216
71953
26986
89779
54197
11990
23881
48884
22165
62992
36449
41742
30267
77614
31565
30902
85812
16112
93312
71220
60369
12872
12458
19081
97117
70107
06391
71114
19459
59586
80317
07522
76509
11111
36990
32666
04411
51532
91184
23162
82011
19185
56110
28876
76718
03563
28222
31674
39023
07623
93513
97175
29816
95761
69483
32951
97686
34992
61109
95090
24092
71008
90061
14790
15154
14655
29011
57206
77195
01256
69250
62901
39179
71229
23299
84164
45900
42227
65853
17591
60182
06315
65812
01378
14566
87719
92507
79517
99651
82155
58118
67197
30015
70687
36201
56531
56721
26306
87185
91796
51341
07796
76655
62716
33588
21932
16224
87721
85519
23191
20665
45140
66098
60959
71521
02334
21212
51110
85227
98768
11125
05321
53152
14191
12166
12715
03116
43041
74822
72759
29130
21947
15764
96851
20818
22370
11391
83520
62297
{\displaystyle {\begin{matrix}{\color {Red}207}\\\\14546\ 36056\ 64211\ 08919\ 18710\ 71187\ 71215\ 02906\ 66036\ 10923\\ 10923\\\ 08919\ 18710\ 71187\ 71215\ 02906\ 66036\ 10923\\ 37378 \ 31013 \ 22596 \ 19291 \ 17463 \ 23551 \\ 88527 \ 10130 \ 01767 \ 12336 \ 16669 \ 97846 \ 76559 \ 50062 \ 91171 \ 72332 \ \ 19262 \ 69849 \ 90251 56150 \ 23521 \\ 51911 \ 78912 \ 32939 \ 31966 \ 12096 \ 12060 \ 89748 \ 25362 \ 43167 \ 99841 \\ 78271 \ 31194 \ 26838 \ 7721 \ 51236\ 12982\ 18089\ 66218\ 22577\ 09454\ 81216\ 71953\\26986\ 89779\ 54197\ 11990\ 23881\ 48884\ 22165\ 62992\ 36449\ 41742\\30267\ 77614\ 31565\ 30902\ 85812\ 16112 \ 93312 \ 71220 \ 60369 \ 12872 \\ 12458 \ 19081 \ 97117 \ 70107 \ 06391 \ 71114 \ 19459 \ 59586 \ 80317 \ 07522 \\ 76509 \ 11111 \ 36990 \ 3266 \ 04411 \ 51532 \ 91184 \ 3266 \ 04411 \ 51532 \ 91184 \ 3266 \ 04411 \ 51532 \ 91184 \ 3266 \ 04411 \ 51532 \ 91184 \ 3266 \ 04411 \\56110\ 28876\ 76718\ 03563\ 28222\ 31674\ 39023\ 07623\ 93513\ 97175\\29816\ 95761\ 69483\ 32951\ 97686\ 34992\ 61109\ 95090\ 24092\ 71008\\90061\ 14790\ 15154\ 14655\ 29011\ 5720 6\ 77195\ 01256\ 69250\ 62901\\39179\ 71229\ 23299\ 84164\ 45900\ 42227\ 65853\ 17591\ 60182\ 06315\\65812\ 01378\ 14566\ 87719\ 92507\ 79517\ 99651\ 82155\ 58118\ 67197 \\ 30015 \ 70687 \ 36201 \ 56531 \ 56721 \ 26306 \ 87185 \ 91796 \ 51341 \ 07796 \\ 76655 \ 62716 \ 33588 \ 21932 \ 16224 \ 87721 \ 85519 \ 23191 \ 2065 \ 87721 \ 85519 \ 23191 \ 2065 \ 8721 \ 02334\ 21212\ 51110\ 85227\ 98768\ 11125\ 05321\\53152\ 14191\ 12166\ 12715\ 03116\ 43041\ 74822\ 72759\ 29130ed\ 21947\\15764\8\8 22370\ 11391\ 83520\ 62297\ sfârşit{matrice}}}
Textul a fost împărțit în grupuri de cinci cifre, iar numărul lor a fost indicat în partea de sus. Au fost 206 grupuri corespunzătoare textului cifrat, dar numărul 20818 a fost inserat pe locul cinci de la sfârșit - un indicator aleatoriu folosit în paragraful 1. Numărul 5 , care determină plasarea grupului inserat, este ultima cifră a tastei numerice care nu a fost folosită înainte. A fost textul descris în ultimul tabel care a fost descoperit în interiorul unei monede de nichel în vara anului 1953.
Note
- ↑ 1 2 Kahn D. „Numărul unu de la Moscova” . 1993.
- ↑ Kahn D. The Codebreakers: The Comprehensive History of Secret Communication from Ancient Times to the Internet (Versiune prescurtată). - New American Library, Inc., 1967.
- ↑ 1 2 A. V. Sinelnikov. Cifre de informații sovietice . — 2016.
Literatură