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 .

  1. Î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.
  2. 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ă:
  3. 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 .
  4. Î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}}}
  5. 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}}}
  6. 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}\ }}
  7. 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 :
  8. 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.
  9. 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.
  10. Î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}
  11. 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
  12. 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. ↑ 1 2 Kahn D. „Numărul unu de la Moscova” . 1993.
  2. Kahn D. The Codebreakers: The Comprehensive History of Secret Communication from Ancient Times to the Internet (Versiune prescurtată). - New American Library, Inc., 1967.
  3. ↑ 1 2 A. V. Sinelnikov. Cifre de informații sovietice . — 2016.

Literatură