Күрделі советтік шифр: "VIC" шифры – қағаз бен қаламмен қолданылған, тыңшы "VICTOR" қолданған құпия код. NSA сарапшыларымен зерттелген, ең күрделі шифрлардың бірі.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Күрделі советтік қалам мен қағаз шифры
Complex Soviet pencil and paper cipher
VIC шифры – "VICTOR" шарттық атымен белгілі совет шпионы Рейно Хэйхянен қолданған қалам мен қағаз шифры. Егер бұл шифрға заманауи техникалық атау берілсе, ол "өзгертілген екі реттік транспозициямен супершифрланған екі бөлікті моноалфавиттік ауыстыру" деп аталатын болар еді. Дегенмен, жалпы жіктеу бойынша ол нигилист шифрларының отбасының бір бөлігі болып табылады. Алғаш рет табылған кезде бұл қолмен орындалатын ең күрделі шифр деп есептелді. 1953 жылы Америка Құрама Штаттарының Ұлттық қауіпсіздік агенттігі (NSA) жүргізген алғашқы талдау оның қолмен жасалған шифр екендігін толық нақтыламады, бірақ оны ойық 5 центтік монетаның ішіне (кейін "Қуыс никель ісі" деп белгілі болды) салғандығы, оны қалам мен қағаз көмегімен де шифрлауға болатынын көрсетеді. VIC шифры оның құрылымы туралы қосымша мәліметтер пайда болғанша бұзылмай қалды. Әрине, қазіргі заманғы компьютерлік ағынды шифрлар немесе блок шифрлары сияқты күрделі немесе қауіпсіз болмаса да, іс жүзінде оның қорғауымен жіберілген хабарламалар 1953 жылы табылғаннан бастап 1957 жылы Хэйхяненнің дезертирлік жасағанға дейін, кем дегенде NSA-ның барлық криптоанализ әрекеттеріне қарсы тұрды.
The VIC cipher was a pencil and paper cipher used by the Soviet spy Reino Häyhänen, codenamed "VICTOR". If the cipher were to be given a modern technical name, it would be known as a "straddling bipartite monoalphabetic substitution superenciphered by modified double transposition." However, by general classification it is part of the Nihilist family of ciphers. It was arguably the most complex hand operated cipher ever seen, when it was first discovered. The initial analysis done by the American National Security Agency (NSA) in 1953 did not absolutely conclude that it was a hand cipher, but its placement in a hollowed out 5¢ coin (later known as the Hollow Nickel Case) implied it could be decoded using pencil and paper. The VIC cipher remained unbroken until more information about its structure was available. Although certainly not as complex or secure as modern computer operated stream ciphers or block ciphers, in practice messages protected by it resisted all attempts at cryptanalysis by at least the NSA from its discovery in 1953 until Häyhänen's defection in 1957.
Революциялық серпіліс
VIC шифры нигилистік шифрлар отбасының эволюциялық шыңы болып саналады. VIC шифрында бірнеше маңызды біріктірілген компоненттер бар, оның ішінде mod 10 тізбекті қосу, кідіріссіз Фибоначчи генераторы (жалған кездейсоқ сандар тізбесін жасау үшін қолданылатын рекурсивті формула), қадамдық кесте және бұзылған қос транспозиция. VIC ашылғанға дейін, практикалық тұрғыдан агенттің далалық шифр ретінде қолдана алатын ең күрделі шифр – қос транспозиция ғана деп есептелді.
The VIC cipher can be regarded as the evolutionary pinnacle of the Nihilist cipher family. The VIC cipher has several important integrated components, including mod 10 chain addition, a lagged Fibonacci generator (a recursive formula used to generate a sequence of pseudorandom digits), a straddling checkerboard, and a disrupted double transposition. Until the discovery of VIC, it was generally thought that a double transposition alone was the most complex cipher an agent, as a practical matter, could use as a field cipher.
Тарих
Екінші дүниежүзілік соғыс кезінде бірнеше кеңес тыңшылары Мәскеу орталығына негізгі нигилистік шифрдың эволюциялық жетістіктері болып табылатын екі шифрды қолдана отырып хабарласты. Жапониядағы Ричард Сордж желісінде Макс Клаузен және Швейцариядағы Люси шпиондық желісінде Александр Фут өте күшті нұсқаны қолданды. Rote Kapelle желісі сәл әлсіретілген нұсқаны қолданды. Екі нұсқада да, қарапайым мәтін Polybius квадратының орнына, бірінші кезекте, сандарға айналдырылды. Бұл жай мәтінді сәл қысып, оның бірлік қашықтығын көтереді және радио операторларына хабарларын тез аяқтауға және тез тоқтатуға мүмкіндік береді. Операторды жылдам сөндіру арқылы қарсыластың радиолокаторлары операторды табу қаупін азайтады. Бірлік қашықтығын ұлғайту статистикалық шабуылдарға қарсы күштерді арттырады. Клаузен мен Фут екеуі де өздерінің ашық мәтіндерін ағылшын тілінде жазды және ағылшын тілінің 8 жиі кездесетін әріптерін (шахмат тақтасының жоғарғы қатарын толтыру үшін) "a sin to err" (екінші "r" тастау) деген есте сақтау фразасы арқылы жаттады. Стандартты ағылшынша шашка тақтасында 28 таңбалы слот бар, ал бұл шифрда қосымша екеуі "толық тоқтату" және "сандар ауысуы" болды. Сандар сан ауысуымен жіберілді, содан кейін нақты ашық мәтін цифрлары қайталанған жұптармен, содан кейін тағы бір ауысумен. Содан кейін, негізгі Нихилистікке ұқсас, сандық қосымша қосылды, оны "жабылу" деп атады. Алайда әр жолы әртүрлі қоспа қолданылды, сондықтан қандай қоспа қолданылғанын көрсету үшін жасырын "көрсеткіш топты" енгізу керек болды. Негізгі Нихилисттен айырмашылығы, қоспаны тасымалдаушы емес қосу арқылы қосылды (санды қосу модулі 10), осылайша көп ақпарат ағып кетпейтін біркелкі шығыс пайда болды. Ең бастысы, қосымша сөзді кілт сөз арқылы емес, өндірістік статистика альманахтарынан кездейсоқ жолдарды таңдау арқылы жасалды. Мұндай кітаптар агентті іздестіру кезінде күдік туғызбайтындай (әсіресе агенттердің бүркемесі бизнесмендер болғандықтан) және өте қауіпсіз қоспаны қамтамасыз ететін жоғары энтропиялық тығыздыққа ие деп саналды. Әрине, мұндай кітаптағы цифрлар біркелкі таратылмайды (оларда "0" және "1" артық (Бенфорд заңы) бар, ал ретті сандар біршама ұқсас болуы мүмкін), алайда олардың энтропиясы тығыздығы парольдер мен осыған ұқсас нәрселерге қарағанда әлдеқайда жоғары; қалай болғанда да, іс жүзінде олар ешқашан табысты криптоанализден өтпеген сияқты. Әлсіз нұсқасы роман немесе ұқсас кітаптың мәтінінен қоспаны пайдаланды (кем дегенде бір Rote Kapelle мүшесі шынымен "Жақсы солдат Швейкті" қолданды). Бұл мәтін цифрлық қоспаға айналдырылды. Осы бағыттағы соңғы дамуы - 1950 жылдары Рейно Хайханен қолданған VIC шифры. Бұл кезде көптеген совет агенттері бір реттік тақташаларды қолданды. Алайда, бір реттік тақташаның теориялық кемелділігіне қарамастан, іс жүзінде олар бұзылды, ал VIC бұзылмады. Бір реттік шифрды тек шифрланған беттерді логистикалық проблемаларға байланысты қайта қолданған кезде ғана бұзуға болады, сондықтан ол енді бір рет емес еді.
During World War II, several Soviet spy rings communicated to Moscow Centre using two ciphers which are essentially evolutionary improvements on the basic Nihilist cipher. A very strong version was used by Max Clausen in Richard Sorge's network in Japan, and by Alexander Foote in the Lucy spy ring in Switzerland. A slightly weaker version was used by the Rote Kapelle network. In both versions, the plaintext was first converted to digits by use of a straddling checkerboard rather than a Polybius square. This has the advantage of slightly compressing the plaintext, thus raising its unicity distance and also allowing radio operators to complete their transmissions quicker and shut down sooner. Shutting down sooner reduces the risk of the operator being found by enemy radio direction finders. Increasing the unicity distance increases strength against statistical attacks. Clausen and Foote both wrote their plaintext in English, and memorized the 8 most frequent letters of English (to fill the top row of the checkerboard) through the mnemonic phrase "a sin to err" (dropping the second "r"). The standard English straddling checkerboard has 28 character slots and in this cipher the extra two became "full stop" and "numbers shift". Numbers were sent by a numbers shift, followed by the actual plaintext digits in repeated pairs, followed by another shift. Then, similarly to the basic Nihilist, a digital additive was added in, which was called "closing". However a different additive was used each time, so finally a concealed "indicator group" had to be inserted to indicate what additive was used. Unlike basic Nihilist, the additive was added by non carrying addition (digit wise addition modulo 10), thus producing a more uniform output which doesn't leak as much information. More importantly, the additive was generated not through a keyword, but by selecting lines at random from almanacs of industrial statistics. Such books were deemed dull enough to not arouse suspicion if an agent was searched (particularly as the agents' cover stories were as businessmen), and to have such high entropy density as to provide a very secure additive. Of course the figures from such a book are not actually uniformly distributed (there is an excess of "0" and "1" (see Benford's Law), and sequential numbers are likely to be somewhat similar), but nevertheless they have much higher entropy density than passphrases and the like; at any rate, in practice they seem never to have been successfully cryptanalysed. The weaker version generated the additive from the text of a novel or similar book (at least one Rote Kapelle member actually used The Good Soldier Schweik), This text was converted to a digital additive using a technique similar to a straddling checkerboard. The ultimate development along these lines was the VIC cipher, used in the 1950s by Reino Häyhänen. By this time, most Soviet agents were instead using one time pads. However, despite the theoretical perfection of the one time pad, in practice they were broken, while VIC was not. The one time cipher could however only be broken when cipher pages were re used, due to logistic problems, and therefore was no longer truly one time.
Негізгі механика
Ескерту: Осы бөлім есептеулерді [X-ші қатар] немесе осы сияқты нұсқаулармен байланыстыру арқылы қадағалайды. Бұл ЦРУ архивінің сипаттамасында көрсетілген белгілеулермен үйлесу үшін жасалған.
Note: this section tracks the calculations by referring to [Line X] or similar. This is to align with the notation stated in the CIA archive description.
Хабарлама кілті шығару
[Q жолы]: [K, L, M, N, P жолдарынан алынған] алғашқы "a" цифры (мұнда "a" – [P жолындағы] соңғы тең емес цифрларын жеке нөмірге қосудан алынған бірінші мән), [J жолы арқылы көшірілген кезде]. Бұл көшіру [J жолындағы] цифрлардың астындағы сандар бағанын жазу арқылы жасалады, бастапқыда '1' цифрының астындағы бағаннан, содан кейін '2' цифрының астындағы бағаннан және т.с.с. сандық ретпен, 'a' цифры алынғанша (мысалда, егер 'a' мәні 13 болса, көшіру 13 цифрға дейін жалғасады). Бұл цифрлар бағандық көшірудің кілті ретінде қолданылады. [R жолы]: Келесі "b" цифры (мұнда "b" – [P жолындағы] соңғы тең емес цифрларын жеке нөмірге қосудан алынған екінші мән), [K, L, M, N, P жолдарынан] [J жолы арқылы көшірілгеннен кейін] алынады. Бұл көшіру [Q жолындағы] сияқты орындалады, бірақ бұл көшіру алдыңғысынан жалғасады, яғни [J жолындағы] цифрлардың астындағы бағанның ортасынан басталуы мүмкін, алдыңғы көшіру тоқтаған жерден (мысалда, [R жолы] [J жолындағы] '3' цифрының астындағы бағанның ортасынан басталады). Нәтижеде алынған цифрлар диагональдық көшірудің кілті ретінде қолданылады. [S жолы]: [P жолының] тізбегі, бұл Straddling Checkerboard кілті ретінде қолданылады.
[Line Q]: The first 'a' digits (where 'a' is the first value resulting from the addition of the last non equal digits in [Line P] to the Personal Number) extracted from [Lines K,L,M,N,P] when transposed via [Line J]. This transposition is done by writing out the columns of numbers underneath the digits in [Line J], beginning with the column of numbers underneath the digit ‘1', then the column beneath the digit ‘2’, and so on in numerical order, until 'a' digits have been written out (in the example below, the value of 'a' would be 13, so this transposition would carry on for 13 digits). These digits are used as the key to the Columnar Transposition. [Line R]: The next 'b' digits (where 'b' is the second value resulting from the addition of the last non equal digits in [Line P] to the Personal Number) extracted (after the 'a' digits have been extracted) from [Lines K,L,M,N,P] when transposed via [Line J]. This transposition is done in the same manner as [Line Q], but is carried on from the previous transposition, meaning it may start mid column under the digit of [Line J] where the last transposition left off (in the example below, [Line R] starts mid way through the column underneath the digit '3' in [Line J]). These resulting digits are used to key the Diagonal Transposition. [Line S]: The Sequencing of [Line P], this is used as the key to the Straddling Checkerboard.
Транспозициялар: бағандық транспозиция
Хабар стандартты бағаналық транспозиция арқылы [Q сызығы] бойынша беріледі. (Ескерту: егер хабарламаның кодталған ұзындығы осы сатыда 5-ке бөлінбесе, қосымша сан қосылады).
The message is transposed via standard columnar transposition keyed by [Line Q] above. (Note: if the message encoded length is not a multiple of 5 at this stage, an additional digit is added)
Содан кейін хабарлама [R сызығы] бойынша диагональдық транспозиция арқылы беріледі. Бұл жағдайда "диагональдық" термині үшбұрышты бұзылу аймақтарын қолдану арқылы транспозицияны тәртіпсіз етуді білдіреді.
The message is then transposed via Diagonal Transposition keyed by [Line R] above. The meaning of 'diagonal' in this case is that triangular disruption zones were employed to make the transposition irregular.
Кілттер тобын ендіру
(Шифрланбаған) Кілттік топ шифрмәтіннің "P" топтарына соңынан салынады; мұнда "P" – "Күн" күнтізбеніндегі қолданылмаған алтыншы сан.
The (unencrypted) Keygroup is inserted into the ciphertext 'P' groups from the end; where 'P' is the unused sixth digit of the Date.
Тізбелеу
Бұл жағдайда реттілік – кіріс элементтерін 1-ден 10-ға дейін реттеу (мұнда "0" саны 10-ды білдіреді). Бұл әріптерге (әліпбилік тәртіппен) немесе сандарға (сандық мәні бойынша) қатысты. Егер мәндер тең болса, онда сол жақтағы мән бірінші реттеледі. Мысалы:
Sequencing in this context is ordering the elements of an input from 1 10 (where '0' represents 10). This occurs either to letters (whereby alphabetical order is used), or numbers (where numerical value is used). In the event of equal values, then the leftmost value is sequenced first. For example:
ӘРІПТЕР: "Октопус" сөзі "2163475" болып реттеледі (яғни C=1, бірінші "O"=2, екінші "O"=3)
САНДАР: "90210" саны "34215" болып реттеледі (сандық тәртіппен. Нөл саны реттеу бойынша "10" деп бағаланады).
LETTERS: The word 'Octopus' is sequenced as '2163475' (i. e. C=1, first 'O'=2, second 'O'=3, )
NUMBERS: The number '90210' is sequenced as '34215' (by numerical order. Zero is valued at '10' in terms of ordering)
Сандық кодтау
Кодтау қадамы санның әр цифрын (мысалы, шифрдегі [G жолы]) кілттің тізбегінен (мысалы, [E.2 жолы]) бірімен алмастырады, бұл оның 1-ден 10-ға дейінгі реттілігіндегі орнын көрсетеді. "1234567890" санын ([F.2 жолында көрсетілгендей]) [E.2 жолының] астына жазсақ, 0-ден 9-ға дейінгі әрбір санның үстінде тағы бір сан бар екенін көреміз. Кодтауға тиіс санның әр цифрын кілттің тізбегіндегі үстіндегі санмен ауыстыру керек. Кілт (E.2) 6 0 1 3 5 8 9 4 2 7 Көмекші (F.2) 1 2 3 4 5 6 7 8 9 0 Мысалы, "90210" саны келесідей кодталады; Осылайша, нәтиже "27067" болады.
The encoding step replaces each digit in a number (i. e. [Line G] in the cipher) with one from a key sequence (i. e. [Line E.2]) that represents its position in the 1 10 ordering. It should be seen that by writing out the series '1234567890' (shown as [Line F.2]) underneath [Line. E.2] each value from 0 9 has another above it. Simply replace every digit in the number to be encoded with the one above it in the key sequence. Key (Line E.2) 6 0 1 3 5 8 9 4 2 7Aide (Line F.2) 1 2 3 4 5 6 7 8 9 0
For example, the number '90210' would have encodings as follows;
So the output would be: '27067'.
Криптоанализ
Шифр нақты әлемде қолданылатын қалам мен қағаз шифрлерінің ең күштілерінің бірі болып табылады және сол кезде NSA оны бұза алмады (негізгі алгоритмін анықтау мағынасында). Дегенмен, қазіргі заманғы компьютерлердің пайда болуымен және алгоритмнің жарияланғаннан кейін, бұл шифр күшті деп есептелмейді. Құпия кілттегі энтропияның басым бөлігі 10 таңбалы санға [H сызығы] жинақталатынын көруге болады. Бұл 10 таңбалы сан шамамен 34 бит энтропияны құрайды, ал күнінің соңғы таңбасымен (кілт тобын анықтау үшін қажет) біріктірілгенде, хабарлама кілтінің күші тұрғысынан шамамен 38 бит энтропияға ие болады. 38 бит энтропия қазіргі компьютерлерде бір тәуліктен кем уақытта күшпен бұзу шабуылына (Brute force attack) ұшырайды.
The cipher is one of the strongest pen and paper ciphers actually used in the real world, and was not broken (in terms of determining the underlying algorithm) by the NSA at the time. However, with the advent of modern computing, and public disclosure of the algorithm this would not be considered a strong cipher. It can be observed that the majority of the entropy in the secret key converges to a 10 digit number [Line H]. This 10 digit number is approximately 34 bits of entropy, combined with the last digit of the date (needed to identify where the KeyGroup is) would make about 38 bits of entropy in terms of Message Key strength. 38 bits is subject to a Brute force attack within less than a day on modern computers.