Кpиптогpафия от папиpуса до компьютеpа

       

Шифр Энигмы


В заключение обратимся к шифру того типа, который вырабатывала известная уже машина Энигма инженера Кирха. При его моделировании на ЭВМ можно достичь хорошей устойчивости при сравнительной простоте программы. Напомним, что эта машина представляла собой ряд вращающихся на одной оси барабанов с электрическими контактами, обеспечивающих множество вариантов простой замены, определяемой текущим положением барабанов. В ранних моделях было 5 барабанов, которые перед началом работы устанавливались по кодовому слову, а в ходе шифрования они поворачивались при кодировании очередного символа как в счетчике электроэнергии. Таким образом, получался ключ заведомо более длинный, чем текст сообщения. В чем же была слабость шифра?

     1. Пять барабанов могли обеспечить лишь около
     ста миллионов ключей, что позволяло их за день
     перебрать на ЭВМ. Если использовать не 25 ла-
     тинских символов, а 256 кодов ASCII и увели-
     чить число барабанов, то сложность раскалыва-
     ния шифра существенно возрастет.
     2. Набор барабанов был ограничен и менялся ред-
     ко, что вызвало охоту англичан за их экземпля-
     рами в подводных лодках. ЭВМ может для каж-
     дой шифровки использовать индивидуальные
     барабаны, генерируемые по ключу, а это опять-
     таки резко усложняет вскрытие шифра.
     3. Наконец, можно сделать движение барабанов
     хаотичным по случайной последовательности,
     тоже вырабатываемой по ключу.

Подсчитаем число ключей такого шифра, реализованного программно. Пусть длина периода программного генератора случайных чисел равна 2**24. Восемь барабанов, генерируемые с помощью этого генератора, дадут вместе 2**192 вариантов ключа, а если учесть еще варианты псевдослучайной последовательности, управляющей движением барабанов, то получится внушительная цифра в 2**216 вариантов ключа. Таким образом, довольно просто получить устойчивый шифр даже при использовании программного генератора случайных чисел с периодом малой для криптографии длины. И хотя несомненно, что криптоаналитики наработали массу "домашних заготовок" для атак на такой шифр, но еще князь Владимирко Галицкий знал о том, что "в наше время чудес не бывает", и вскрытие шифра Энигмы будет дорого стоить. Поэтому приведем программу, реализующую описанный подход.

     '----------имитация Энигмы
     DEFINT I-N: DEFSTR S
     CLS : RANDOM12E 231
     DIM s(4, 32) AS STRING * 1
     ns = 4

    


ss = "ААААААААААААААААААААААААААААА'
     PRINT ss
     '-----------ШИФРОВАНИЕ
     x = RND(-231)
     FOR i=0 TO ns
     FOR j=0 TO 32:set(i,j) = CHR$(j):NEXT
     FOR j=0 TO 32:SWAP s(i,j),s(i,32*RND):
     NEXT
     NEXT
     s=""
     FOR i = 1 TO LEN(ss) 'шифрование символа
     k=ASC (MID$ (ss ,i ,1)): IF k>32 THEN k=k-128
     FOR j = 0 TO ns:k=ASC(set(j, k)):NEXT
     IF k < 32 THEN k = k+ 128
     PRINT CHR$ (k); : s = s + CHR$ (k)
     k = ns * RND 'поворот колес
     FOR j=0 TO 31:SWAP s(k,j),s(k,j+1):NEXT
     FOR j=0 TO 32
     s(k,j)=CHR$((ASC(set(k, j)) + 32) MOD 33)
     NEXT
     NEXT
     PRINT
     '----------РАСШИФРОВЫВАНИЕ
     x = RND(-231)
     FOR i=0 TO ns
     FOR j=0 TO 32:s(i,j)=CHR$(j):NEXT
     FOR j=0 TO 32:SWAP s(i,j),s(i,32*RND):NEXT
     FOR j=0 TO 32
     IF ASC (set (i, j)) < 64 THEN
     m =j:n=ASC(s(i, j))
     DO
     k=ASC(s(i,n)):s(i,n)=CHR$(m OR 64)
     m=n: n=k
     LOOP UNTIL m = j
     END IF
     NEXT j
     FOR j=0 TO 32
     s(i,j)=CHR$(ASC(s(i,j)) AND 63)
     NEXT
     NEXT i
     ss = s
     FOR i = 1 TO LEN(ss)
     k=ASC(MID$(ss,i ,1)): IF k>32 THEN k=k-128
     FOR j=ns TO 0 STEP -1
     k=ASC(s(j,k))
     NEXT
     IF k     PRINT CHR$ (k) ;
     k = ns * RND 'поворот колес
     FOR j = 0 TO 31: SWAP s(k,j),s(k,j+1):NEXT
     FOR j = 0 TO 32
     s(k,j)=CHR$((ASC(s(k,j))+32) MOD 33)
     NEXT
     NEXT i
     END
     После работы программы на экране появятся три строки, изображающие: верхняя - исходный текст из букв А, средняя - шифровку и нижняя - расшифрованный текст:



     ААААААААААААААААААААААААААААА
     ВА ЖЖЬИХйЙЩСЛЦВФЭШЬРСОТСЗТЫОБ
     ААААААААААААААААААААААААААААА

Отметим, что для упрощения текста программы ключ задается лишь из 3 бит числом 231 и используются лишь 5 барабанов.
     На самом деле систем шифрования побольше, чем описано. Но практически употребляется лишь похожий на DES алгоритм IDEA ( IDEA - Improved Proposed Encryption Standard - улучшенный стандарт шифрования.) , отличающийся применением ключа длиной 128 бит и смещением операций разных алгебраических групп для блоков длиной 64 бита. Алгоритм IDEA разработан в Цюрихе Джеймсом Мэсси и опубликован в 1990 году. Он выдержал множество атак на него в отличие от алгоритмов FEAL, REDOC-11 и LOKI. IDEA выдержал атаки криптографов многих развитых стран, как Англии, Германии и Израиля. Он считается более стойким, чем традиционный DES, и представляет основу программы шифрования PGP, применяемой пользователями Интернет. Разработчик PGP, Фил Циммерман, сейчас подвергнут в США уголовному преследованию за экспорт криптостойких шифров. Примечательно, что алгоритмы, входящие в PGP, как IDEA и RSA, АНБ ранее объявляло не стойкими криптографически, но, тем не менее, завело дело "Правительство США против Филиппа Циммермана". Приравняв Фила к торговцам оружием и наркотикам, АНБ фактически созналось в очередной лжи - похоже, что PGP с IDEA и RSA оказалась слишком "крепким орешком" для правительственных чиновников.


Содержание раздела