Шифрование слов с помощью цифр. Простейшие методы шифрования текста. Ключ в книге

Архаичные шифраторы канули в Лету, чего нельзя сказать об алгоритмах шифрования. Операции сдвига, замены и перестановки до сих пор применяются в современных алгоритмах, однако с существенной поправкой в стойкости. За многие столетия, прошедшие со времен первого применения этих шифров, криптографы научились оценивать количество информации, энтропию и стойкость, однако так было не всегда. Рассмотрим подробнее, как работают самые популярные шифры в истории криптографии и в чем их недостатки.

В современном обществе, где почти каждый человек имеет электронный девайс (а то и не один), где каждую минуту совершаются операции с электронной валютой, пересылаются конфиденциальные email, подписываются электронные документы, криптография нужна как воздух. Нужна пользователям, чтобы защитить свою приватность. Нужна программистам, чтобы обеспечить безопасность проектируемых систем. Нужна хакерам, чтобы при аудите понимать уязвимые места в системах. Нужна админам, чтобы представлять, чем и как лучше защищать корпоративные данные. Мы не могли обойти стороной такую важную тему и начинаем цикл статей, посвященный введению в криптoграфию. Для новичков - самый простой путь познакомиться с криптой, для профи - хороший повод систематизировать свои знания. Шесть уроков, от самого простого к сложному. Вперед!

Термины

Для начала давай определимся с терминологией:

  • Криптография - это наука о том, как обеспечить секретность сообщения.
  • Криптоанализ - это наука о том, как вскрыть зашифрованное сообщение, не зная ключа.
  • Дешифровка - это процeсс получения открытого текста средствами криптоанализа.
  • Расшифрование - это процесс получения открытого текста с использованием ключа и алгоритма расшифрования, предусмотренного для данного шифра.

В мире криптографии путаться в этих словах - ужасный моветон.

Зачем мне знания о криптографии?

Предположим, криптография очень нужна, но пусть ей займутся дядьки с усами математики. Зачем же мне знания по криптографии?

Если ты обычный пользователь - то как минимум, чтобы обеспечить свою приватность. Сегодня крупным государствам и влиятельным организациям становятся доступны средства тотального надзора за миллионами людей. Поэтому криптография оказывается важнейшим инструментом, обеспечивающим конфиденциальность, доверие, целостность, авторизацию сообщений и электронных платежей. Повсеместное распространение криптографии останется одним из немногих способов защитить пользователя от угроз, нависающих над его конфиденциальной информацией. Зная, как работает тот или иной протокол или шифр, чем он хорош и где его слабые места, ты сможешь оcознанно выбирать инструменты для работы или просто общения в Сети.

Если ты программист или специалист по ИБ, то здесь вообще от криптографии никуда не скрыться. Любой крупный проект требует обеспечения безопасности информации. Неважно, что ты разрабатываешь: контентный сервис, почтовик, мессенджер, соцсеть или просто интернет-магазин, - везде есть критичные данные, которые надо защищать от перехвата или угона БД. Каждая операция должна быть защищена криптографическими протоколами. В этом случае криптография - подходящий инструмент. Если ты еще с ней не столкнулся, будь уверен - это на 100% лишь вопрос времени.

Короче говоря, криптография используется гораздо чаще, чем можно себе представить. Поэтому пора снять завесу тайны с этой науки, познакомиться с наиболее интересными аспектами и использовать ее возможности себе на пользу.

Зачем изучать старые шифры?

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

Люди всегда нуждались в секретной переписке, поэтому шифрование не стояло на месте. С раскрытием одних шифров придумывали другие, более стойкие. На смену бумажным шифрам пришли шифровальные машины, которым не было равных среди людей. Даже опытному математику не удавалось взломать шифр, рассчитанный на роторной машине. С появлением первых компьютеров требования к защите информации возросли многократно.

Зачем же нам знакомиться с такими древними и нестойкими шифрами, если можно сразу прочитать про DES и RSA - и вуаля, почти специалист? Изучение первых шифров поможет лучше понять, зачем нужна та или иная операция в современном алгоритме шифрования. Например, шифр перестановки, один из первых примитивных алгоритмов, не был забыт, и перестановка - одна из часто встречающихся операций в современном шифровании. Таким образом, чтобы лучше осознать, откуда на самом деле растут ноги у современных алгоритмов, нужно оглянуться на несколько тысяч лет назад.

Исторические шифры и первые шифраторы

Согласно источникам, первые способы шифрования текста появились вместе с зарождением письменности. Способы тайного письма применялись древними цивилизациями Индии, Месопотамии и Египта. В письменах Древней Индии упоминаются способы изменения текста, которые использовали не только правители, но и ремесленники, желающие скрыть секрет мастерства. Истоком криптографии считается использование специальных иероглифов в древнеегипетской письменности около четырех тысячелетий назад.

Первым шифром, зародившимся в древних цивилизациях и актуальным, в некотором роде, и по сей день, можно считать шифр замены. Чуть позже был придуман шифр сдвига, который применялся Юлием Цезарем, почему и был назван в его честь.

Помимо шифров, нельзя не упомянуть о приборах для шифрования, которые разрабатывали древние математики. Например, скитала - первый шифратор, разработанный в Спарте. Представлял собой палку, на которую по всей длине наматывалась лента пергамента. Текст наносился вдоль оси палки, после чего пергамент снимался, и получалось шифрованное сообщение. Ключом служил диаметр палки. Однако такой способ шифрования был абсолютно нестойким - автором взлома стал Аристотель. Он наматывал ленту пергамента на конусообразную палку до тех пор, пока не появлялись отрывки читаемого текста.

Также ярким примером из мира древних шифраторов может стать диск Энея - диск с отверстиями по количеству букв в алфавите. Нитка протягивалась последовательно в те отверстия, которые соответствовали буквам сообщения. Получатель вытаскивал нитку, записывал последовательность букв и читал секретное послание. Однако этот шифратор обладал существенным недостатком - достать нитку и разгадать послание мог кто угодно.

Шифр сдвига

Это один из самых первых типов шифра. Процесс шифрования очень прост. Он заключается в замене каждой буквы исходного сообщения на другую, отстоящую от исходной на заданное количество позиций в алфавите. Это количество позиций называется ключом. При ключе, равном трем, этот метод называется шифром Цезаря. Император использовал его для секретной переписки. Для того чтобы зашифровать сообщение, нужно построить таблицу подстановок:

a b c d e f g h i j k l m n o p q r s t u v w x y z
d e f g h i j k l m n o p q r s t u v w x y z a b c

Как видишь, во втором ряду символы алфавита сдвинуты на три позиции «назад». Чтобы зашифровать сообщение, для каждого символа исходного текста нужно взять соответствующий ему символ из таблицы подстановки.

Пример шифра

Исходный текст: Hi, Brut! How are you?
Шифрованный текст: Kl, Euxw! Krz duh brx?

Расшифрование

На этапе расшифрования мы имеем шифрованный текст и ключ, равный трем. Чтобы получить исходный текст, ищем для каждого символа сдвиг на три позиции к началу алфавита. Так, для первого символа K сдвиг три будет означать символ H. Далее посимвольно расшифровываем текст, пока не получаем исходную фразу Hi, Brut! How are you? .

Криптоанализ

Легче всего такой шифр взломать простым перебором всех возможных значений ключа - их всего 25. Здесь все просто, и останавливаться смысла нет.

Другой вариант - использовать частотный анализ текста. Для каждого языка есть статистическая информация о частоте употребления каждой буквы алфавита и наиболее часто встречающихся сочетаний букв. Для английского, например, среднестатистические частоты употребления букв таковы:

e 0,12702 s 0,06327 u 0,02758 p 0,01929 q 0,00095
t 0,09056 h 0,06094 m 0,02406 b 0,01492 z 0,00074
a 0,08167 r 0,05987 w 0,02360 v 0,00978
o 0,07507 d 0,04253 f 0,02228 k 0,00772
i 0,06966 l 0,04025 g 0,02015 j 0,00153
n 0,06749 c 0,02782 y 0,01974 x 0,00150

Что касается двухбуквенных сочетаний (биграмм), то можно заметить следующую тенденцию:

Биграмма Процентное содержание Биграмма Процентное содержание
th 3,15 he 2,51
an 1,72 in 1,69
er 1,54 re 1,48
es 1,45 on 1,45
ea 1,31 ti 1,28
at 1,24 st 1,21
en 1,20 nd 1,18

Идея в том, что в зашифрованном тексте самой часто встречаемой буквой будет не эталонная e, а что-то другое. Соответственно, нам нужно найти самую часто встречаемую букву в нашем шифре. Это и будет зашифрованная е. А дальше нужно подсчитать ее сдвиг от е в таблице подстановок. Полученное значение и есть наш ключ!

Шифр замены

Основной недостаток шифра сдвига заключается в том, что есть всего 25 возможных значений ключа. Даже Цезарь начал подозревать, что его шифр не самая лучшая идея. Поэтому на смену ему пришел шифр замены. Для того чтобы воспользоваться этим алгоритмом, создается таблица с исходным алфавитом и, непосредственно под ним, тот же алфавит, но с переставленными буквами (или любой другой набор знаков):

a b c d e f g h i j k l m n o p q r s t u v w x y z
b e x g w i q v l o u m p j r s t n k h f y z a d c

Пример шифра

Действуем аналогично предыдущему шифру. Для каждого символа исходного текста берем соответствующий ему из таблицы подстановки:

Исходный текст: Hi, Brut! How are you?
Шифрованный текст: Vl, Enfh!Vrz bnw drf?

Расшифрование

При расшифровании заменяем каждый символ шифротекста соответствующим символом из известной нам таблицы подстановки: v => h, l => i и так далее. После чего получаем исходную строку Hi, Brut! How are you? .

Криптоанализ

Криптоанализ этого шифра также выполняется методом частотного анализа текста. Рассмотрим пример:

MRJGRJ LK HVW XBSLHBM RI QNWBH ENLHBLJ , LHK SRMLHLXBM , WXRJRPLX , BJG XRPPWNXLBM XWJHNW . LH LK RJW RI HVW MBNQWKH XLHLWK LJ HVW ZRNMG BJG HVW MBNQWKH XLHD LJ WFNRSW . LHK SRSFMBHLRJ LK BERFH 8 PLMMLRJ . MRJGRJ LK GLYLGWG LJHR KWYWNBM SBNHK : HVW XLHD , ZWKHPLJKHWN , HVW ZWKH WJG , BJG HVW WBKH WJG . HVW VWBNH RI MRJGRJ LK HVW XLHD , LHK ILJBJXLBM BJG EFKLJWKK XWJHNW . JFPWNRFK EBJUK , RIILXWK , BJG ILNPK BNW KLHFBHWG HVWNW , LJXMFGLJQ HVW EBJU RI WJQMBJG , HVW KHRXU WAXVBJQW , BJG HVW RMG EBLMWD . IWZ SWRSMW MLYW VWNW , EFH RYWN B PLMMLRJ SWRSMW XRPW HR HVW XLHD HR ZRNU . HVWNW BNW KRPW IBPRFK BJXLWJH EFLMGLJQK ZLHVLJ HVW XLHD . SWNVBSK HVW PRKH KHNLULJQ RI HVWP LK HVW KH . SBFM \ "K XBHVWGNBM , HVW QNWBHWKH RI WJQMLKV XVFNXVWK . LH ZBK EFLMH LJ HVW 17HV XWJHFND ED KLN XVNLKHRSVWN ZNWJ . HVW HRZWN RI MRJGRJ ZBK IRFJGWG ED OFMLFK XBWKBN BJG LJ 1066 NWEFLMH ED ZLMMLBP HVW XRJTFWNRN . LH ZBK FKWG BK B IRNHNWKK , B NRDBM SBMBXW , BJG B SNLKRJ . JRZ LH LK B PFKWFP .

Частотный анализ букв этого шифра показывает следующее (читай построчно, буквы сортированы по частоте использования):

W -88 , H -74 , L -67 , J -55 , B -54 , K -52 ,

R -51 , N -41 , M -36 , V -35 , X -29 , G -27 ,

F -23 , P -16 , S -16 , I -15 , Z -13 , E -13 ,

D -11 , Q -10 , U -5 , Y -4 , T -1 , O -1 ,

A -1

Вероятно, что W => e, так как это самая часто встречающаяся буква в шифре (смотри таблицу среднестатистических частот использования букв для английского языка в предыдущем шифре).

Дальше пробуем найти наиболее короткое слово, куда входит уже известная нам буква W => e. Видим, что сочетание HVW чаще всего встречается в шифре. Нетрудно догадаться, что, скорее всего, это триграмма the, то есть в тексте мы уже определили три символа. Если посмотреть на промежуточный результат, сомнений не остается:

MRJGRJ LK the XBSLtBM RI QNeBt ENLtBLJ , LtK SRMLtLXBM , eXRJRPLX , BJG XRPPeNXLBM XeJtNe . Lt LK RJe RI the MBNQeKt XLtLeK LJ the ZRNMG BJG the MBNQeKt XLtD LJ eFNRSe . LtK SRSFMBtLRJ LK BERFt 8 PLMMLRJ . MRJGRJ LK GLYLGeG LJtR KeYeNBM SBNtK : the XLtD , ZeKtPLJKteN , the ZeKt eJG , BJG the eBKt eJG . the heBNt RI MRJGRJ LK the XLtD , LtK ILJBJXLBM BJG EFKLJeKK XeJtNe . JFPeNRFK EBJUK , RIILXeK , BJG ILNPK BNe KLtFBteG theNe , LJXMFGLJQ the EBJU RI eJQMBJG , the KtRXU eAXhBJQe , BJG the RMG EBLMeD . IeZ SeRSMe MLYe heNe , EFt RYeN B PLMMLRJ SeRSMe XRPe tR the XLtD tR ZRNU . theNe BNe KRPe IBPRFK BJXLeJt EFLMGLJQK ZLthLJ the XLtD . SeNhBSK the PRKt KtNLULJQ RI theP LK the Kt . SBFM \ "K XBtheGNBM , the QNeBteKt RI eJQMLKh XhFNXheK . Lt ZBK EFLMt LJ the 17th XeJtFND ED KLN XhNLKtRSheN ZNeJ . the tRZeN RI MRJGRJ ZBK IRFJGeG ED OFMLFK XBeKBN BJG LJ 1066 NeEFLMt ED ZLMMLBP the XRJTFeNRN . Lt ZBK FKeG BK B IRNtNeKK , B NRDBM SBMBXe , BJG B SNLKRJ . JRZ Lt LK B PFKeFP .

Отлично, уже известны три буквы. Снова ищем наиболее короткие слова с новыми известными нам подстановками. Сочетание it является частоупотребляемым, и, поскольку буква t уже дешифрована (HVW => the), очевидно, что в нашем тексте L => i (LH => it). После этого обращаемся к поиску биграмм is и to, устанавливаем, что K => s, R => o. Затем обращаем внимание на триграммы ~ing и and. Анализ текста показывает, что BJG, скорее всего, шифротекст от and. После замены всех наиболее часто встречающихся символов получаем текст:

Mondon is the XaSitaM oI QNeat ENitain , its SoMitiXaM , eXonoPiX , and XoPPeNXiaM XentNe . it is one oI the MaNQest Xities in the ZoNMd and the MaNQest XitD in eFNoSe . its SoSFMation is aEoFt 8 PiMMion . Mondon is diYided into seYeNaM SaNts : the XitD , ZestPinsteN , the Zest end , and the east end . the heaNt oI Mondon is the XitD , its IinanXiaM and EFsiness XentNe . nFPeNoFs EanUs , oIIiXes , and IiNPs aNe sitFated theNe , inXMFdinQ the EanU oI enQMand , the stoXU eAXhanQe , and the oMd EaiMeD . IeZ SeoSMe MiYe heNe , EFt oYeN a PiMMion SeoSMe XoPe to the XitD to ZoNU . theNe aNe soPe IaPoFs anXient EFiMdinQs Zithin the XitD . SeNhaSs the Post stNiUinQ oI theP is the st . SaFM \ "s XathedNaM , the QNeatest oI enQMish XhFNXhes . it Zas EFiMt in the 17th XentFND ED siN XhNistoSheN ZNen . the toZeN oI Mondon Zas IoFnded ED OFMiFs XaesaN and in 1066 NeEFiMt ED ZiMMiaP the XonTFeNoN . it Zas Fsed as a IoNtNess , a NoDaM SaMaXe , and a SNison . noZ it is a PFseFP .

London is the capital of Great Britain , its political , economic , and commercial centre . It is one of the largest cities in the world and the largest city in Europe . Its population is about 8 million . London is divided into several parts : the City , Westminster , the West End , and the East End . The heart of London is the City , its financial and business centre . Numerous banks , offices , and firms are situated there , including the Bank of England , the Stock Exchange , and the Old Bailey . Few people live here , but over a million people come to the City to work . There are some famous ancient buildings within the City . Perhaps the most striking of them is the St . Paul "s Cathedral , the greatest of English churches . It was built in the 17th century by Sir Christopher Wren . The Tower of London was founded by Julius Caesar and in 1066 rebuilt by William the Conqueror . It was used as a fortress , a royal palace , and a prison . Now it is a museum .

Как видишь, в этом криптоанализе нашим главным инструментом был статистический анализ частот. Идем дальше!

Шифр Рихарда Зорге

Нельзя рассказывать о шифрах и ни слова не сказать о шпионах. В недалеком прошлом, когда компьютеров еще не было, информацию стремились скрыть в основном разведчики. Наука о шифровании не могла стоять на месте, ведь служба Родине была самым важным и нужным ее предназначением. Кстати, именно советские шифры, разработанные отечественными специалистами, на многие десятилетия вперед определили вектор развития криптографии.

Давай разберем довольно известный шифр Рихарда Зорге - советского разведчика, который был направлен в Японию. Этот шифр продуман до мелочей. Шифрование ведется на английском языке. Первоначально нужно составить следующую таблицу:

S U B W A Y
C D E F G H
I J K L M N
O P Q R T V
X Y Z . /

Сначала записываем в нее слово SUBWAY, выбранное нами. Затем пишем все остальные буквы алфавита по порядку. Слеш означает новое слово (разделитель), а точка обозначает себя. Далее наиболее часто встречающиеся буквы английского алфавита (A , S , I , N , T , O , E , R) нумеруются в порядке появления в таблице:

0) S U B W 5) A Y
C D 3) E F G H
1) I J K L M 7) N
2) O P Q 4) R 6) T V
X Y Z . /

Саму таблицу мы строим по горизонтали, записывая буквы рядами, а нумеруем по вертикали, столбцами. Так улучшаются перемешивающие свойства.

Далее таблица преобразуется к следующему виду: сначала в строку по столбцам записываются наиболее часто встречаемые буквы в порядке нумерации (S, I, E, …). А затем записываются и все остальные буквы, также по столбцам в строки (С, X, U, D, J, …). Такая таблица обеспечит хорошие перемешивающие свойства и в то же время не «испортит» частотный анализ шифротекста:

0 1 2 3 4 5 6 7 8 9
- S I O E R A T N - -
8 C X U D J P Z B K Q
9 . W F L / G M Y H V

Таблица готова. Теперь можно зашифровать сообщение.

Пример шифра

Возьмем исходный текст:

Mr . X will fly tomorrow .

Расставим слеши для разделения слов:

Mr . / X / will / fly / tomorrow .

Разобьем текст на блоки по четыре символа (просто для удобства представления):

Mr . / X / wi ll / f ly / t omor row .

Теперь текст нужно зашифровать по нашей таблице. Алгоритм такой:

  1. Для каждого исходного символа ищем соответствующую ему цифру в первом столбце (для M это будет 9).
  2. Для каждого исходного символа ищем соответствующую ему цифру в первом ряду (для M это будет 6).
  3. Записываем полученные символы один за другим (96). Если вместо символа в первом ряду/столбце стоит прочерк, не пишем ничего:96 4 …
    M R …
  4. Переходим к следующему символу. И так далее.

В итоге у нас получится такой шифротекст:

9649094 81 94 911 93939492 9397946 29624 429190

M R . / X / W I L L / F L Y / T OM OR ROW .

После этого шифротекст заново переразбивается на блоки одинаковой длины по пять символов. Оставшиеся символы, которые придутся на последнюю незавершенную группу из пяти символов, можно просто отбросить. Если у нас останется больше двух символов, то их нужно добить нулями до полной группы из пяти. Если один или два - можно отбросить, они не несут особо много информации, и до них легко догадаются в штабе. В нашем случае лишних символов не осталось.

После перегруппировки у нас получится вот такой шифротекст:

96490 94819 49119 39394 92939 79462 96244 29190

Далее нужно наложить на полученный шифротекст некую гамму. Если упрощенно, то гамма - это последовательность чисел, которая выбирается для сложения с исходным шифротекстом. Например, если у нас есть гамма 1234 5678 9876 , а исходный шифротекст выглядел как 12222 14444 1555 , то конечный шифротекст после наложения гаммы выглядит как их сумма - 1234+12222, 14444+5678, 9876+1555 .

Откуда брать гамму и как незаметно передать ее в штаб? Зорге выбирал гамму из «Немецкого статистического ежегодника». Такое издание не должно было вызвать удивление у японцев, так как Зорге приехал в страну под видом немецкого журналиста. Зорге указывал страницу и столбец, откуда начиналась последовательность, которая была наложена на шифротекст в этом послании. Например, 201-я страница и 43-й столбец. Эти данные он записывал добавочным числом 20143 перед шифротекстом, который, в свою очередь, уже шифровался гаммой.

Конечно, сегодня стоит выбирать более известный источник для гаммы. Подойдут любые распространенные табличные данные, не вызывающие подозрения. Но для знакомства с шифром давай все же использовать аутентичный исходник:).

Предположим, мы выбрали 199-ю страницу и четвертую строку, четвертый столбец. Отсюда и начинается нужная гамма:

324 36 380 230 6683 4358 50 2841

В этом случае, чтобы наложить гамму, нужно сделать:

19946 { 96490 + 324 94819 + 36 49119 + 380 39394 + 230 92939 + 6683 79462 + 4358 96244 + 50 29190 + 2841 }

В итоге полученный шифротекст будет:

19946 96814 94855 49499 39624 99622 83820 96294 32031

Расшифрование

В Москве этот текст расшифровывали с помощью аналогичной таблицы. Первым делом анализировалось первое пятизначное число, и в справочнике находилась указанная последовательность гаммы:

{ 96814 - 324 94855 - 36 49499 - 380 39624 - 230 99622 - 6683 83820 - 4358 96294 Mr . X will fly tomorrow

Криптоанализ

Шифр Зорге так и не был взломан вражескими криптоаналитиками. Множество раз японские спецслужбы перехватывали шифротекст, но он так и останется в виде колонок пятизначных чисел, которые подшивались в дела непойманных шпионов.

Шифр Вернама

Во время Первой мировой войны криптологами активно использовался одноразовый шифр-блокнот, или шифр Вернама. Доказано, что он теоретически абсолютно стойкий, однако ключ key должен быть той же длины, что и передаваемое сообщение. Абсолютная стойкость - это свойство, при котором зашифрованное сообщение не поддается криптоанализу, так как не дает злоумышленнику никакой информации об открытом тексте.

Cуть шифра Вернама крайне проста. Для этого нужно вспомнить операцию «исключающее или» или сложение по модулю 2. Итак, для сообщения plaintext шифротекст будет равен:

-- -- - +

G 11011

Во времена Первой мировой войны двоичные коды для символов задавались в Международном телеграфном алфавите № 2 (International Telegraph Alphabet No. 2, ITA2).

На самом деле, несмотря на свою криптостойкость, этот шифр имеет больше минусов, нежели плюсов:

  • в качестве ключа должна быть абсолютно случайная последовательность - вероятно, придется стоять и подбрасывать кубик, чтобы сгенерировать такую;
  • для передачи необходим защищенный канал - сомнительно, что он всегда имелся под рукой во времена Первой мировой войны;
  • если третья сторона сможет каким-то образом узнать послание, она легко и восстановит ключи, и подменит сообщение;
  • требуется надежное уничтожение страницы блокнота - сжечь ее и съесть пепел, тогда враг точно не узнает, что было зашифровано.

Пример шифра

Исходный текст: HELLO
Ключ: AXHJB

Складываем побитово по модулю 2 и ищем, какой букве соответствует полученный код в телеграфном алфавите:

H⊕A = 10100⊕00011 = 10111 => Q
E⊕X = 00001⊕11101 = 11100 => M
L⊕H = 10010⊕10100 = 00110 => I
L⊕J = 10010⊕01011 = 11001 => B
O⊕B = 11000⊕11001 = 00001 => E

Шифрованный текст: QMIBE

Расшифрование

Расшифрование с помощью ключа выполняется аналогично шифровке:

ciphertext⊕key = plaintext

Криптоанализ

При правильном использовании ключа злоумышленник может только угадать символы. Даже при условии, что у него будет неограниченное количество шифротекстов, но все они будут зашифрованы на различных ключах из разных символов, он будет иметь бесконечное множество вариантов исходного текста. При этом догадываться о значении исходного текста можно лишь по количеству символов.

Криптоанализ шифра Вернама легко возможен в том случае, если при шифровании мы выбрали ключ с повторяющимися символами. Если злоумышленнику удалось заполучить несколько текстов с перекрывающимися ключами, он сможет восстановить исходный текст.

Рассмотрим атаку, которая осуществима, если мы дважды при шифровании используем один и тот же ключ. Она называется атака вставки.

Предположим, нам удалось перехватить зашифрованное сообщение QMIVE. Мы пытаемся взломать шифр и убедили отправителя зашифровать свое сообщение еще раз, но при этом поставить первым символом 1 (конечно, отправитель должен быть безмерным простофилей, чтобы выполнить такое условие, но, предположим, мы умеем убеждать).

Тогда мы получаем шифротекст VDYBJY.

Нам известно, что первый символ 1. Я вычисляю первый символ секретного ключа key:

H⊕D = 10100⊕01001 = 11101 => X

Применяем его к первому тексту и получаем:

M⊕X = 11100⊕11101 = 00001 => E

  • складываем символ открытого текста с символом шифротекста => узнаем символ ключа;
  • складываем символ ключа с соответствующим символом шифротекста => получаем символ открытого текста

Такая последовательность операций повторяется, пока не станут известны все символы открытого текста.

Шифровальные машины

Cо временем шифрование вручную стало казаться долгим и малополезным. Криптографы постоянно шифровали, а криптоаналитики в это время отчаянно пытались взломать шифр. Нужно было ускорять и автоматизировать процесс и усложнять алгоритм. Наиболее подходящим для модификации оказался шифр замены. Если текст, зашифрованный этим способом вручную, можно было без особого труда восстановить, то машина могла проделать эту операцию несколько раз, и восстановить текст становилось очень трудно.

Итак, основным механизмом работы шифратора был диск с нанесенными с двух сторон контактами, соответствующими алфавитам открытого и шифрованного текста. Контакты соединялись между собой по некоторому правилу, называемому коммутацией диска. Эта коммутация определяла замену букв при начальном положении диска. При изменении положения диска коммутация менялась и алфавит для шифрования сдвигался.

Пример работы

Пусть начальное положение диска задает подстановку:

a b c d e f g h i j k l m n o p q r s t u v w x y z
b e x g w i q v l o u m p j r s t n k h f y z a d c

После того как первая буква исходного текста заменена, ротор поворачивается и подстановка сдвигается на один символ:

a b c d e f g h i j k l m n o p q r s t u v w x y z
e x g w i q v l o u m p j r s t n k h f y z a d c b

Вторая буква будет зашифрована согласно новому алфавиту. А после ее замены ротор сдвигается вновь, и так далее по количеству символов в исходном шифруемом сообщении.

Энигма

Первой роторной машиной шифрования была «Энигма», состоявшая на вооружении Германии во время Второй мировой войны. Она имела три ротора, связанных между собой. При повороте первого ротора соединенное с ним кольцо попадает в паз второго диска и толкает его. Аналогично итерации третьего ротора контролируются вторым ротором. В итоге при каждом нажатии на клавишу машины одна и та же буква кодируется совершенно разными значениями.

При шифровании необходимо было учитывать начальное положение роторов, их порядок и положения колец. Для двойной замены букв используется штекерная панель. Рефлектор осуществляет завершающую подстановку для контроля соответствия между операциями зашифрования и расшифрования. Взгляни на конструкцию «Энигмы»:

На рисунке жирной линией выделено, как буква A вводится с клавиатуры, кодируется штекером, проходит через три ротора, заменяется на рефлекторе и выходит зашифрованной буквой D.

«Энигма» долгое время считалась неуязвимой. Немцы ежедневно меняли положение штекеров, диски и их компоновку и положение. Во время военных действий они ежедневно кодировали короткую последовательность букв, которая шифровалась дважды и передавалась в самом начале сообщения. Адресат дешифровал ключ и устанавливал настройки машины согласно этому ключу. Именно это многократное использование одного и того же ключа позволило аналитикам из Блетчли-Парка (главного шифровального подразделения Великобритании) взломать немецкий шифр.

На самом деле механизм «Энигмы» не является стойким, так как штекеры и рефлектор выполняют взаимоисключающие операции. Пользуясь частотным анализом для достаточно большого шифротекста, можно подобрать положение роторов брутфорсом. Именно из-за этих уязвимостей «Энигма» остается лишь экспонатом в музее Блетчли-Парка.

Сигаба

Спустя десять лет американскими военными была разработана роторная шифровальная машина «Сигаба», которая значительно превзошла по характеристикам свою прародительницу. «Сигаба» имеет три блока по пять роторов и печатающий механизм. Шифрование на этой машине использовалось американскими военными и военно-морским флотом вплоть до 1950-х годов, пока ее не сменила более новая модификация KL-7. Как известно, эта роторная машина так и не была взломана.

Purple

Говоря о знаменитых криптографических механизмах, нельзя не упомянуть о японской шифровальной машине Purplе, как ее назвали американцы. Шифрование в Purple также основывалось на движении четырех роторов, а секретный ключ задавался один раз в день. Текст вводился с клавиатуры, при помощи роторов заменялся на шифрованный и выводился напечатанным на бумаге. При расшифровании процесс последовательного прохождения через роторы повторялся в обратном порядке. Такая система является совершенно стойкой. Однако на практике ошибки при выборе ключей привели к тому, что Purple повторила судьбу немецкой «Энигмы». Она была взломана американским отделом криптоаналитиков.

Выводы

Опыт истории криптографии показывает нам значимость выбора секретного ключа и частоты смены ключа. Ошибки в этом тяжелом процессе превращают любую систему шифрования в менее стойкую, чем она могла бы быть. В следующий раз поговорим про распределение ключей.

ссылки:

Это первый урок из цикла «Погружение в крипту». Все уроки цикла в хронологическом порядке:

  • Уроки криптографии. Основные шифры. часть 1. Основы, исторические шифраторы, как работают (и анализируются) шифры сдвига, замены, Рихарда Зорге, шифр Вернама и шифровальные машины (ты здесь)
  • . часть 2. Что это такое, как выполняется распределение ключей и как выбрать криптостойкий ключ
  • Что тaкое сеть Фейстеля, какими бывают отечественные блочные шифры, используемые в современных протоколах, - ГОСТ 28147-89, «Кузнечик»
  • Урок 4. Современные зарубежные шифры . Что такое, как работают и в чем разница между 3DES, AES, Blowfish, IDEA, Threefish от Брюса Шнайдера
  • Урок 5. Электронная подпись . Виды ЭП, как они работают и как их использовать
  • Урок 6. Квантовая криптография . Что это такое, где используется и как помогает в распределении секретных ключей, генерации случайных чисел и электронной подписи

[Всего голосов: 7 Средний: 4.1/5]

Last updated by at Июнь 28, 2016 .

Моих воспоминаний с детских лет + воображения хватило ровно на один квест: десяток заданий, которые не дублируются.
Но детям забава понравилась, они просили еще квесты и пришлось лезть в инет.
В этой статье не будет описания сценария, легенд, оформления. Но будет 13 шифров, чтобы закодировать задания к квесту.

Шифр №1. Картинка

Рисунок или фото, которое напрямую указывает место, где спрятана следующая подсказка, или намек на него: веник +розетка = пылесос
Усложнение: сделайте паззл, разрезав фото на несколько частей.


Шифр 2. Чехарда.

Поменяйте в слове буквы местами: ДИВАН = НИДАВ

Шифр 3. Греческий алфавит.

Закодируйте послание буквами греческого алфавита, а детям выдайте ключ:

Шифр 4. Наоборот.

Пишете задание задом наперед:

  • каждое слово:
    Етищи далк доп йонсос
  • или все предложение, или даже абзац:
    етсем морком момас в - акзаксдоп яащюуделС. итуп монрев ан ыВ

Шифр 5. Зеркально.

(когда я делала квест своим детям, то в самом начале выдала им "волшебный мешочек": там был ключ к "греческому алфавиту", зеркало, "окошки", ручки и листы бумаги, и еще всякая ненужная всячина для запутывания. Находя очередную загадку, они должны были сами сообразить, что из мешочка поможет найти отгадку)

Шифр 6. Ребус.

Слово кодируется в картинках:



Шифр 7. Следующая буква.

Пишем слово, заменяя все буквы в нем на следующие по алфавиту (тогда Я заменяется на А, по кругу). Или предыдущие, или следующие через 5 букв:).

ШКАФ = ЩЛБХ

Шифр 8. Классика в помощь.

Я брала стихотворение (и говорила детям, какое именно) и шифр из 2х цифр: № строки № буквы в строке.

Пример:

Пушкин "Зимний вечер"

Буря мглою небо кроет,
Вихри снежные крутя;
То, как зверь, она завоет,
То заплачет, как дитя,
То по кровле обветшалой
Вдруг соломой зашумит,
То, как путник запоздалый,
К нам в окошко застучит.

21 44 36 32 82 82 44 33 12 23 82 28

прочитали, где подсказка? :)

Шифр 9. Темница.

В решетку 3х3 вписываете буквы:

Тогда слово ОКНО шифруется так:

Шифр 10. Лабиринт.

Моим детям такой шифр пришелся по душе, он непохож на остальные, потому что не столько для мозгов, сколько на внимание.

Итак:

на длинную нитку/веревку цепляете буквы по порядку, как они идут в слове. Затем веревку растягиваете, закручиваете и всячески запутываете между опорами (деревьями, ножками итд). Пройдя по нитке, как по лабиринту, от 1й буквы до последней, дети узнают слово-подсказку.

А представьте, если обмотать таким образом одного из взрослых гостей!
Дети читают - Следующая подсказка на дяде Васе.
И бегут ощупывать дядю Васю. Эх, если он еще и щекотки боится, то весело будет всем!

Шифр 11. Невидимые чернила.

Восковой свечкой пишете слово. Если закрасить лист акварелью, то его можно будет прочитать.
(есть и другие невидимые чернила.. молоко, лимон, еще что-то.. Но у меня в доме оказалась только свечка:))

Шифр 12. Белиберда.

Гласные буквы остаются без изменений, а согласные меняются, согласно ключу.
например:
ОВЕКЬ ЩОМОЗКО
читается как - ОЧЕНЬ ХОЛОДНО, если знать ключ:
Д Л Х Н Ч
З М Щ К В

Шифр 13. Окошки.

Детям понравилось неимоверно! Они потом этими окошками весь день друг другу послания шифровали.
Итак: на одном листе вырезаем окошки, столько, сколько букв в слове. Это трафарет, его прикладываем к чистому листу и "в окошках" пишем слово-подсказку. Затем трафарет убираем и на оставшемся чистом месте листа пишем много разных других ненужных букв. Прочитать шифр можно, если приложить трафарет с окошками.
Дети сначала впали в ступор, когда нашли лист, испещренный буквами. Потом крутили туда-сюда трафарет, его же нужно еще правильной стороной приложить!

Шифр 14. Карта, Билли!

Нарисуйте карту и отметьте (Х) место с кладом.
Когда я делала своим квест первый раз, то решила что карта - это им очень просто, поэтому нужно ее сделать загадочней (потом выяснилось, что детям хватило бы и просто карты, чтобы запутаться и бежать в противоположном направлении)...

Это схема нашей улицы. Подсказки здесь - номера домов (чтоб понять, что это вообще наша улица) и хаски. Такая собака живет у соседа напротив.
Дети не сразу узнали местность, задавали мне наводящие вопросы..
Тогда в квесте участвовало 14 детей, поэтому я их обьединила в 3 команды. У них было 3 варианта этой карты и на каждом помечено свое место. В итоге, каждая команда нашла по одному слову:
"ПОКАЖИТЕ" "СКАЗКУ" "РЕПКА"
Это было следующее задание:). После него остались уморительные фото!
На 9ти летие сына не было времени выдумывать квест и я его купила на сайте MasterFuns .. На свой страх и риск, потому что описание там не очень.
Но нам с детьми понравилось, потому что:
  1. недорого (аналог где-то 4х долларов за комплект)
  2. быстро (заплатила - скачала-распечатала - на все про все минут 15-20)
  3. заданий много, с запасом. Ихотя мне не все загадки понравились, но там было из чего выбрать, и можно было вписать свое задание
  4. все оформлено в одном, монстерском, стиле и это придает празднику эффект. Помимо самих заданий к квесту, в комплект входят: открытка, флажки, украшения для стола, приглашения гостям. И все -в монстрах! :)
  5. помимо 9ти летнего именинника и его друзей, у меня есть еще 5тилетняя дочка. Задания ей не по силам, но для нее и подружки тоже нашлось развлечение - 2 игры с монстрами, которые тоже были в наборе. Фух, в итоге - все довольны!

При шифровании методом подстановки, буквы исходного текста могут заменяться на геометрические фигуры, фигурки людей, животных, любые рисунки, символы, буквы или цифры (группы).

КАЖДАЯ БУКВА КОДИРУЕТСЯ ТОЛЬКО ОДНИМ ЧИСЛОМ

В приложении № 30 показан способ простой подстановки, где для кодирования 33 букв используются 33 числа. Каждая из 33 букв заменяется на одно из чисел: 01, 02, 03, ...,33.

Вариант 1

По этой таблице закодирована шифровка из детской книжки-раскраски. Современная алфавитная позиционная нумерация аналогична числовому соответствию литеры в славянской азбуке. Это простая таблица. Здесь числа, используемые для кодирования, расположены по порядку.

Вариант 2

Здесь числа (двузначные цифровые группы) набраны в лотерейном порядке по принципу случайных чисел.

На случай хищения, утери (компрометации) таблицы, можно усложнить - договориться переставлять местами цифры в каждой группе. Например, А = 05 - в шифровке писать 50.

КАЖДАЯ БУКВА КОДИРУЕТСЯ ДВУМЯ ГРУППАМИ

Общее количество чисел (цифровых групп), используемых для кодирования, в 2 раза больше чем букв.

В таблице № 1 (приложение № 31 )- 49 букв, цифр и знаков + резерв, для кодирования которых используются 100 чисел (групп). Первая и вторая строчки - это двузначные группы, используемые для кодирования. Группы “36” и 63” - резерв. Третья, нижняя, строка - буквы, цифры и знаки препинания. Для кодирования каждой буквы используются то одна, то другая группа (стоящие над буквой), чередуясь попеременно. В этой таблице - группы расположены по порядку номеров. Таблицы такого типа не трудно хранить в памяти.

В таблице № 2 (приложение № 32 ) группы, используемые для кодирования, расположены хаотично. Таблица № 2 состоит из двух таблиц. Левая таблица предназначена для кодирования (кодовая таблица). Правая - для раскодирования (дешифрант). Напротив каждой буквы (в левой таблице) стоят две двузначные группы, которые используются для замены данной буквы чередуясь попеременно. Например, слово “шалаш” будет иметь такой вид: 15 68 06 12 82. Чтобы ввести в заблуждение противника, эту шифрограмму можно записать так: 156 806 128 224 или так: 1568 0612 8276. Для доукомплектования последней группы используем резерв.

ИСПОЛЬЗОВАНИЕ ДЛЯ ЗАМЕНЫ КАЖДОЙ БУКВЫ НЕСКОЛЬКИХ ГРУПП

В процессе шифрования для замены каждой буквы могут использоваться 3, 4 и более групп. Соответственно общее количество групп, используемых для шифрования, может быть в 3, 4 и n раз больше чем букв в алфавите.

КОДИРОВАНИЕ С УСЛОЖНЕНИЕМ .

В отличие от приложения № 30 все числа, используемые здесь для кодирования букв, взяты из таблицы умножения. Слово «ШАЛАШ» закодированное по кодовой таблице, представленной в приложении № 33, будет иметь такой вид: 10 24 40 24 10.


Усложняя с помощью таблицы умножения, заменяем код буквы на множители: вместо «10» пишем «25» или «52» (2´5 = 5´2 = 10), «24» заменяем на «38», «83», «46» или «64» (3´8 = 8´3 = 4´6 = 6´4 = 24) и т. д. После усложнения шифровка будет выглядеть так: 25 38 85 46 52. Таким образом для кодирования каждой буквы будет использоваться не одно число, а несколько (2-4), что сделает шифр более надежным, т. к. в зашифрованном тексте одни и те же числа (группы) будут повторяться реже.

Даже если Вы потеряете такую таблицу, или ее похитят, подсмотрят, скопируют, злоумышленники не смогут этим воспользоваться (расшифровать) т.к. в криптограмме цифровых групп из кодовой таблицы не будет, а будут группы, состоящие из множителей.

Чтобы не привлекать внимание посторонних, шифрограмма может быть замаскирована под арифметические действия первоклассника и записана так:

Классная работа

2´5 = 10, 3´8 = 24, 8´5 = 40, 4´6 = 24, 5´2 = I0

Сообщение можно передавать короткими частями.

Аналогично вышеизложенному, можно использовать «Четырёхзначные математические таблицы» В.М. Брадиса - точные произведения двузначных чисел. Четырёхзначное число раскладывается на 2 двузначных сомножителя.

ДЛЯ ЗАМЕНЫ КАЖДОЙ БУКВЫ ИСПОЛЬЗУЕТСЯ РАЗНОЕ КОЛИЧЕСТВО ГРУПП

Рассмотрим систему шифрования в виде таблицы размером 10‰10 (размеры могут быть другими). Пронумеруем строки и столбцы. Десятые строку и столбец обозначим нулём (нумерацию можно начать не с 1, а с 0). Нумерация может быть буквенной. Причём для нумерации строк и столбцов могут использоваться не одни и те же, а разные буквы. Каждая клетка имеет координаты, состоящие из двух цифр или букв - номер строки и номер столбца. Заполним ячейки таблицы буквами алфавита, необходимыми знаками препинания, цифрами. При этом 100 ячеек распределим пропорционально, в зависимости от частоты употребления букв в русском языке. Несколько клеток оставим пустыми. Пустышки при необходимости будем применять вместо пробелов, для обозначения красной строки, для доукомплектования последних групп (в случае перегруппировки) и в качестве резерва.

В простейшем варианте буквы вписываются в таблицу в алфавитном порядке, а цифры в возрастающей последовательности (такое расположение символов не трудно запомнить). Причём, часто встречающиеся буквы повторяются необходимое количество раз: так буква О займёт 8-9 клеток, буква Е займёт 7-8 клеток, буква А повторяется 6-7 раз, букву И запишем 5-6 раз и т.д. Нумерацию строк и столбцов можно сделать в обратном или случайном порядке.

В усложнённом варианте сначала вписывается какой-нибудь заученный текст (например, стихотворение), затем дописываются буквы алфавита, не вошедшие в этот текст. Сначала вписываются какие-либо запомнившиеся цифры (например, 1945 - год окончания второй мировой войны), потом остальные. Таким образом, расположение знаков в таблице будет условно-случайным, что повышает стойкость шифра. Применяются разные правила заполнения таблицы в удобном для запоминания порядке. В нашем примере в таблицу (приложение № 34 ) в начале записана заученная фраза, за ней - запомнившиеся цифры, потом остальные буквы алфавита, далее следуют знаки препинания и оставшиеся цифры, и, наконец, дописаны необходимое количество раз часто встречающиеся буквы. Нумерация строк и столбцов имеет два варианта (цифровой и буквенный).

В процессе шифрования буква исходного текста отыскивается в таблице и заменяется на двузначную цифровую группу (координаты), в которой одна цифра является номером строки, а другая - номером столбца.

Зашифруем текст (ЛУЧШЕ БОЛЬШОЙ ДОСТАТОК, ЧЕМ МАЛЕНЬКИЙ НЕДОСТАТОК.) и получим криптограмму (17 45 49 40 10 37 13 88 18 40 24 43 39 95 15 12 29 23 96 11 57 49 21 44 89 68 17 77 19 18 87 16 43 80 78 76 97 05 25 69 08 98 11 50). В полученной криптограмме, не смотря на короткий открытый текст, просматриваются повторяющиеся (одинаковые) двузначные группы. Если шифровку перегруппировать в группы по 3, 4 или 5 символов, повторы одинаковых двузначных групп будут незаметны.

Если применить буквенную нумерацию строк и столбцов, шифрограмма будет иметь другой вид: ЛЖ ОД ОИ ОК ЛК НЖ ЛВ ТЗ ЛЗ ОК МГ ОВ НИ УД ЛД ЛБ МИ МВ УЕ ЛА ПЖ ОИ МА ОГ ТИ РЗ ЛЖ СЖ ЛИ ЛЗ ТЖ ЛЕ ОВ ТК СЗ СЕ УЖ ФД МД РИ ФЗ УЗ ЛА ПК. Для усложнения можно в каждой второй группе шифрограммы символы записывать в обратном порядке - сначала номер столбца, а затем номер строки. Или комбинировать - чередовать цифровые и буквенные группы.

Рассматриваемая таблица отличается от постолбцовой таблицы замены, показанной в приложении № 32 , тем, что кроме случайного соответствия символ-двузначная группа, мы имеем неодинаковое (приблизительно пропорциональное частоте употребления) количество заменяющих групп для разных букв, что уменьшает проявление в шифрограмме закономерностей и характеристик исходного текста.

ШИФРОБЛОКНОТ ИЗГОТОВЛЕНИЕ ШИФРОБЛОКНОТА

Возьмите обыкновенный блокнот (записную книжку) с алфавитом. Допишите в него недостающие буквы: Ё, Й, Ъ, Ы, Ь. Также желательно внести в блокнот после букв знаки препинания: точку, запятую, вопросительный знак. Итого в блокноте 36 букв и знаков. При необходимости можно внести - цифры и другие знаки.

Для шифрования используйте 1000 групп, по три цифры в каждой (трехзначные числа): 000, 001, 002, 003 и так далее до 999.

Для простоты распределите трёхзначные группы поровну. 1000: 36 = 27 и 28 в остатке. Для шифрования каждой буквы и знаков препинания используйте по 27 групп. Остальные 28 оставьте в резерве. Для резерва выделите отдельную страницу.

При составлении блокнота трехзначные группы набираются в лотерейном порядке по принципу случайных чисел. Для этого вырежьте из картона небольшие прямоугольные кусочки - 1000 штук. На каждом напишите номер: 000, 001, 002, 003 и т.д. до 999. Сложите их в коробку, перемешайте. Откройте блокнот на странице с буквой -“А”. Возьмите из коробки любой номерок, например, 323. Запишите это число в блокнот на странице с буквой - “А”. Этот номерок положите в другую, пустую, коробку. Возьмите из коробки второй номерок, например, 162. Запишите это число в блокнот, а номерок положите в другую коробку.

Достаньте из коробки очередной, третий, номерок. Запишите следующее число в блокнот, например, 952. И т.д. пока на странице с буквой “А” ни будет записано 27 групп.

323 162 952 338 566 532 959 379 005 837 832 582 035 818 460 615 907 464 814 931 564 690 305 405

336 259 179 286 177 059 236 790 971 113 504 390 910 331 458 422 856 496 025 370 217 232 794 598 724 345 486

Аналогично набираете и вписываете числа (трёхзначные цифровые группы) для других букв и знаков препинания. Оставшиеся 28 групп запишите в резерв.

Для расшифрования на свободных листах вначале блокнота сделайте специальную таблицу - ДЕШИФРАНТ. Дешифрант состоит из двух колонок. Первая колонка - это №№ по порядку, трехзначные группы: 000, 001 , 002, 003 и т.д. до 999. Вторая колонка - буквы и знаки. Сначала впишите в блокнот первую колонку - порядковые номера. Затем заполните вторую колонку - напротив каждого порядкового номера соответствующую букву или знак.

Для этого откройте блокнот на странице с буквой «А». Первая группа здесь - 323. Против порядкового № 323 дешифранта напишите букву «А». Вторая группа - 162. Против порядкового номера 162 в дешифранте напишите букву “А”, и т.д.

Далее, открываете блокнот на странице с буквой - “Б” и в дешифранте против соответствующих групп (порядковых номеров) проставляете букву «Б». Аналогично заполняете вторую колонку дешифранта остальными буквами и знаками препинания. Против групп, попавших в резерв, - пусто (например, № 260).

Шифроблокнот и дешифрант к нему показаны в приложении № 35 .

ШИФРОВАНИЕ ТЕКСТА

Например, нужно зашифровать слово - “БАБА”. Первая буква в тексте - “Б”. Откройте блокнот на странице с буквой “Б”. Первая группа - 336. Напишите ее под (над) первой буквой “Б” в тексте. Смотрите текст дальше, есть ли в тексте еще буквы “Б”. Вторую букву “Б” шифруйте второй группой - 259 и т.д. Каждую букву шифруйте новой группой, пока все буквы “Б” в тексте ни будут зашифрованы. Такая методика исключает повторное использование групп.

Возвращаемся к началу исходного текста. Вторая буква в тексте - “А”. Откройте блокнот на странице с буквой «А». Первая группа здесь - 323. Напишите её под буквой “А”. Следующую букву “А” шифруйте второй группой - 162. И т. д., до тех пор, когда все буквы «А» в тексте будут зашифрованы.

Аналогично шифруйте остальные буквы текста (в приведённом примере их нет). Получилась шифрограмма: 336 323 259 162. Для замены каждой буквы можно использовать любые из 27 групп, предназначенных для данной буквы, в любом порядке, не допуская повторного использования одной и той же группы.

РАСШИФРОВАНИЕ

Для расшифрования криптограммы найдите в дешифранте порядковый № 336. Напротив него стоит буква

- “Б”. Напишите букву “Б” под первой группой шифрограммы. Вторая группа в шифрограмме - 323. Найдите в дешифранте порядковый № 323. Напротив него стоит буква - “А”. Запишите её под второй группой шифрограммы. И т.д.

Получится :

ПРАВИЛА РАБОТЫ

Работа с конфиденциальной информацией и СРШ-ДРК должна проводиться в отсутствии посторонних. При шифровании запрещается повторное использование одной и той же группы. Если текст большой и блокнот не позволяет зашифровать весь текст без повторного использования групп, разбейте его на части и передавайте по частям, как отдельные шифрограммы.

Уничтожайте испорченные листы и черновики, а также утратившие значение шифрограммы и секретные тексты.

Если понадобится внести в блокнот другие знаки или цифры, используйте часть резерва. Цифры можно разместить отдельно после букв в конце блокнота или вместе с буквами в алфавитном порядке: 1 - один - после буквы “О”, 2 - два - после буквы «Д» и т.д. Резервные группы можно применять как знак раздела (для обозначения пробела или красной строки), для доукомплектования последних групп при перегруппировке шифрограммы и в других случаях.

Конечно, изготавливая шифроблокнот, распределять заменяющие элементы (шифрообозначения) для каждой буквы нужно не поровну, а в количестве пропорциональном частоте употребления букв в русском языке. Но равномерное распределение трёхзначных цифровых групп, показанное на примере данного шифроблокнота, даёт возможность более удобного и качественного манёвра изменения ключа. Даёт возможность применить сдвиг на одну или несколько позиций. Алфавит шифроблокнота нумеруется. Нумерация начинается с ноля, т.е. букве «А» присваивается порядковый номер 0, букве «Б» - порядковый номер 1, букве «В» - 2 и т.д. Такая нумерация помогает хорошо ориентироваться и вычислять нужные для замены группы.

Так, например, при сдвиге на три позиции (ключ равен 3) для замены буквы «А» используются группы, предназначенные для буквы «Г» - к порядковому номеру буквы «А» (0) прибавляем значение ключа (3) и получаем порядковый номер буквы «Г» (3). Буква исходного текста «Б» в процессе шифрования заменяется на трёхзначные цифровые группы, предназначенные для буквы «Д» - порядковый номер буквы «Б» (1) складываем со значением ключа (3) и получаем порядковый номер абзаца, соответствующего букве «Д» (4), и т.д.

Можно разбить алфавит попарно и для замены буквы «А» использовать группы, предназначенные для буквы «Б». Для замены буквы «Б» применять группы, предназначенные для буквы «А», и так далее.

Ключ менять по специальному секретному графику (расписанию смены ключа).

Решение задачи определения ключа путем простого перебора всех возможных вариантов, как правило, является непрактичным, за исключением использования очень короткого ключа. Следовательно, если криптоаналитик хочет иметь реальные шансы на вскрытие шифра, он должен отказаться от «лобовых» методов перебора и применить другую стратегию. При раскрытии многих схем шифрования может применяться статистический анализ, использующий частоту появления отдельных символов или их комбинаций. Для усложнения решения задачи вскрытия шифра с использованием статистического анализа К. Шеннон предложил две концепции шифрования, получившие название смешения (confusion ) и диффузии (diffusion ). Смешение – это применение такой подстановки, при которой взаимосвязь между ключом и шифрованным текстом становится как можно более сложной. Применение данной концепции усложняет применение статистического анализа, сужающего область поиска ключа, и дешифрование даже очень короткой последовательности криптограммы требует перебора большого количества ключей. В свою очередь диффузия – это применение таких преобразований, которые сглаживают статистические различия между символами и их комбинациями. В результате использование криптоаналитиком статистического анализа может привести к положительному результату только при перехвате достаточно большого отрезка шифрованного текста.

Реализация целей провозглашаемых данными концепциями достигается путем многократного применения элементарных методов шифрования таких, как метод подстановки, перестановки и скремблирования.

10.4.1. Метод подстановки.

Простейшим и имеющим наибольшую историю является метод подстановки, суть которого заключается в том, что символ исходного текста заменяется другим, выбранным из этого или другого алфавита по правилу, задаваемому ключом шифрования. Местоположение символа в тексте при этом не изменяется. Одним из ранних примеров использования метода постановки является шифр Цезаря , который использовался Гаем Юлием Цезарем во время его Галльских походов. В нем каждая буква открытого текста заменялась другой, взятой из того же алфавита, но циклически сдвинутого на определенное количество символов. Применение данного метода шифрования иллюстрирует пример, представленный на рис.10.3, в котором шифрующее преобразование основано на использовании алфавита с циклическим сдвигом на пять позиций.

Рис. 10.3 , а )

Исходный текст

Криптограмма

Рис. 10.3 , б )

Очевидно, что ключом шифра служит величина циклического сдвига. При выборе другого ключа, чем указано в примере, шифр будет изменяться.

Другим примером классической схемы, основанной на методе подстановки, может служить система шифрования, называемая квадратом Полибиуса . Применительно к русскому алфавиту данная схема может быть описана следующим образом. Первоначально объединяются в одну буквы Е, Ё; И, Й и Ъ, Ь, истинное значение которых в дешифрованном тексте легко восстанавливается из контекста. Затем 30 символов алфавита размещаются в таблицу размером 65, пример заполнения которой представлен на рис. 10.4.

Рис. 10.4.

Шифрование любой буквы открытого текста осуществляется заданием ее адреса (т.е. номера строки и столбца или наоборот) в приведенной таблице. Так, например, слово ЦЕЗАРЬ шифруется с помощью квадрата Полибиуса как 52 21 23 11 41 61. Совершенно ясно, что изменение кода может быть осуществлено в результате перестановок букв в таблице. Следует также заметить, что те, кто посещал экскурсию по казематам Петропавловской крепости, должно быть памятны слова экскурсовода о том, как заключенные перестукивались между собой. Очевидно, что их способ общения полностью подпадает под данный метод шифрования.

Примером полиалфавитного шифра может служить схема, основанная на т.н. прогрессивном ключе Тритемиуса . Основой данного способа шифрования служит таблица, представленная на рис. 10.5, строки которой представляют собой циклически сдвинутые на одну позицию копии исходного алфавита. Так, первая строка имеет нулевой сдвиг, вторая циклически сдвинута на одну позицию влево, третья – на две позиции относительно первой строки и т.д.

Рис. 10.5.

Один из методов шифрования с помощью подобной таблицы состоит в использовании вместо первого символа открытого текста символа из первого циклического сдвига исходного алфавита, стоящего под шифруемым символом, второго символа открытого текста – из строки, соответствующей второму циклическому сдвигу и т.д. Пример шифрования сообщения подобным образом представлен ниже (рис. 10.6).

Открытый текст

Шифрованный текст

Рис. 10.6.

Известны несколько интересных вариантов шифров, основанных на прогрессивном ключе Тритемиуса. В одном из них, называемом методом ключа Вижинера , применяется ключевое слово, которое указывает строки для шифрования и расшифрования каждого последующего символа открытого текста: первая буква ключа указывает строку таблицы на рис. 10.5, с помощью которой шифруется первый символ сообщения, вторая буква ключа определяет строку таблицы, шифрующей второй символ открытого текста и т.д. Пусть в качестве ключа выбрано слово «ТРОМБ», тогда сообщение, зашифрованное с помощью ключа Вижинера, может быть представлено следующим образом (рис. 10.7). Очевидно, что вскрытие ключа возможно осуществить на основе статистического анализа шифрограммы.

Открытый текст

Шифрованный текст

Рис. 10.7.

Разновидностью этого метода является т.н. метод автоматического (открытого ) ключа Вижинера , в котором в качестве образующего ключа используется единственная буква или слово. Этот ключ дает начальную строку или строки для шифрования первого или нескольких первых символов открытого текста аналогично ранее рассмотренному примеру. Затем в качестве ключа для выбора шифрующей строки используются символы открытого текста. В приведенном ниже примере в качестве образующего ключа использована буква «И» (рис. 10.8):

Открытый текст

Шифрованный текст

Рис. 10.8.

Как показывает пример, выбор строк шифрования полностью определяется содержанием открытого текста, т.е. в процесс шифрования вводится обратная связь по открытому тексту.

Еще одной разновидностью метода Вижинера служит метод автоматического (шифрованного ) ключа Вижинера . В нем, подобно шифрованию с открытым ключом, также используется образующий ключ и обратная связь. Отличие состоит в том, что после шифрования с помощью образующего ключа, каждый последующий символ ключа в последовательности берется не из открытого текста, а из получаемой криптограммы. Ниже представлен пример, поясняющий принцип применения данного метода шифрования, в котором, как и ранее, в качестве образующего ключа использована буква «И» (рис. 10.9):

Открытый текст

Шифрованный текст

Рис. 10.9.

Как видно из приведенного примера, хотя каждый последующий символ ключа определяется предшествующим ему символом криптограммы, функционально он зависит от всех предшествующих символов открытого сообщения и образующего ключа. Следовательно, наблюдается эффект рассеивания статистических свойств исходного текста, что затрудняет применение статистического анализа криптоаналитиком. Слабым звеном данного метода является то, что шифрованный текст содержит символы ключа.

По нынешним стандартам шифрование по методу Вижинера не считается защищенным, основным же вкладом является открытие того, что неповторяющиеся ключевые последовательности могут быть образованы с использованием либо самих сообщений, либо функций от сообщений.

Вариантом реализации подстановочной технологии, который в достаточной степени реализует концепцию смешения, служит следующий пример, базирующийся на нелинейном преобразовании. Поток информационных бит предварительно разбивается на блоки длиной m , причем каждый блок представляется одним из различных символов. Затем множество из
символов перемешивается таким образом, чтобы каждый символ заменялся другим символом из этого множества. После операции перемешивания символ вновь превращается вm –битовый блок. Устройство, реализующее описанный алгоритм при
, представлено нарис. 10.10, где в таблице задано правило перемешивания символов множества из
элементов.

Рис. 10.10.

Не составляет труда показать, что существует
различных подстановок или связанных с ними возможных моделей. В связи, с чем при больших значенияхm задача криптоаналитика становится в вычислительном плане практически невозможной. Например, при
число возможных подстановок определяется как
, т.е. представляет собой астрономическое число. Очевидно, что при подобном значенииm данное преобразование с помощью блока подстановки (substitution block , S –блок) можно считать обладающим практической секретностью. Однако его практическая реализация вряд ли возможна, поскольку предполагает существование
соединений.

Убедимся теперь, что S –блок, представленный на рис. 10.10, действительно осуществляет нелинейное преобразование, для чего воспользуемся принципом суперпозиций: преобразование
является линейным, если. Предположим, что
, а
. Тогда, а, откуда следует, чтоS –блок является нелинейным.

10.4.2. Метод перестановки.

При перестановке (или транспозиции ) в соответствии с ключом изменяется порядок следования символов открытого текста, а значение символа при этом сохраняется. Шифры перестановки являются блочными, т. е. исходный текст предварительно разбивается на блоки, в которых и осуществляется заданная ключом перестановка.

Простейшим вариантом реализации данного метода шифрования может служить рассмотренный ранее алгоритм перемежения, суть которого заключается в разбиении потока информационных символов на блоки длиной
, построчной записи его в матрицу памяти размеромстрок истолбцов и считывании по столбцам. Иллюстрацией данному алгоритму служит пример с
на рис. 10.11, в ходе которого производится запись фразыX =«скоро начнется экзаменационная пора». Тогда на выходе устройства перестановки будет получена криптограмма вида

Рис. 10.11.

Рассмотренный вариант метода перестановки может быть усложнен введением ключей
и
, определяющих порядок записи строк и считывания столбцов соответственно, иллюстрацией чему служит таблица на рис. 10.12. Результата преобразования будет иметь следующий вид

Рис. 10.12.

На рис. 10.13 приведен пример бинарной перестановки данных (линейная операция), из которого видно, что данные просто перемешиваются или переставляются. Преобразование осуществляется с помощью блока перестановки (permutation block , P –блок). Технология перестановки, реализуемая этим блоком, имеет один основной недостаток: она уязвима по отношению к обманным сообщениям. Обманное сообщение изображено на рис. 10.13 и заключается в подаче на вход одной единственной единицы при остальных нулях, что позволяет обнаружить одну из внутренних связей. Если криптоаналитику необходимо осуществить анализ подобной схемы с помощью атаки открытого текста, то он отправит последовательность подобных обманных сообщений, смещая при каждой передаче единственную единицу на одну позицию. В результате подобной атаки будут установлены все связи входа и выхода. Данный пример демонстрирует, почему защищенность схемы не должна зависеть от ее архитектуры.

10.4.3. Метод гаммирования .

Попытки приблизиться к совершенной секретности демонстрируют многие современные телекоммуникационные системы, использующие операцию скремблирования. Подскремблированием понимается процесс наложения на коды символов открытого текста кодов случайной последовательности чисел, которую называют также гаммой (по названию буквы  греческого алфавита, используемой в математических формулах для обозначения случайного процесса). Гаммирование относится к поточным методам шифрования, когда следующие друг за другом символы открытого текста последовательно превращаются в символы шифрограммы, что повышает скорость преобразования. Так, например, поток информационных бит поступает на один вход сумматора по модулю 2, изображенного на рис. 10.14, тогда как на второй – скремблирующая двоичная последовательность
. В идеале последовательность
должна быть случайной последовательностью с равновероятными значениями нулей и единиц. Тогда выходной шифрованный поток
будет статистически независимым от информационной последовательности
, а значит, будет выполняться достаточное условие совершенной секретности. В действительности абсолютная случайность
не является необходимой, поскольку в противном случае получатель не сможет восстановить открытый текст. Действительно, восстановление открытого текста на приемной стороне должно производиться по правилу
, так что на приемной стороне должна генерироваться точно такая же скремблирующая последовательность и с той же фазой. Однако вследствие абсолютной случайности
данная процедура становится невозможной.

На практике в качестве скремблирующих широкое применение нашли псевдослучайные последовательности (ПСП), которые могут быть воспроизведены на приемной стороне. В технологии поточного шифрования для формирования ПСП обычно используют генератор на основелинейного регистра сдвига с обратной связью (linear feedback shift register (LFSR)). Типичная структура генератора ПСП, представленная на рис. 10.15, включает регистр сдвига, который состоит из – ичных элементов задержки или разрядов, имеющихвозможных состояний и хранящих некоторый элемент поля
в течение тактового интервала, схема обратной связи, включающей умножители элементов (состояний), хранящихся в разрядах, на константы, и сумматоров. Формирование ПСП описывается рекуррентным соотношением вида

где коэффициенты
– фиксированные константы, принадлежащие
, согласно которому каждый следующий элемент последовательности вычисляется на основанииn предшествующих.

Поскольку число различных состояний регистра конечно (не более ) неизбежна ситуация, когда после некоторого числа тактов состояние повторится в виде одного из ранее случившихся. Однако, стартуя с некоторой начальной загрузки, т.е. фиксированного состояния, схема на рис. 10.15 сформирует только единственную последовательность, определяемую упомянутой рекурсией. Следовательно, повторение состояния регистра ведет к повторению всех последующих генерируемых символов, означающее, что любая ПСП периодична. Более того, в случае нулевого состояния регистра (наличия нулей во всех разрядах) всегда будет формироваться бесконечная вырожденная последовательность, состоящая только из одних нулей. Очевидно, что подобный случай абсолютно бесперспективен, так что нулевое состояние регистра должно быть исключено. В результате остается не более
допустимых состояний регистра, что ограничивает максимально возможный период последовательности величиной, не большей
.

Пример 10.4.1. На рис. 10.16, a , представлена реализация генератора на основе регистра сдвига с линейной обратной связью, формирующего двоичную псевдослучайную последовательность периода
. Отметим, что в случае двоичной ПСП умножение на единицу эквивалентно простому соединению выхода разряда с сумматором. Рис. 10.16,b , иллюстрирует следующие друг за другом содержания регистра (состояния разрядов), а также состояния выхода обратной связи (точка ОС на схеме) при подаче тактовых импульсов. Последовательность считывается в виде последовательных состояний крайнего правого разряда. Считывание состояний других разрядов приводит к копиям той же самой последовательности, сдвинутой на один или два такта.

На первый взгляд можно предположить, что использование ПСП большого периода может обеспечить достаточно высокую защищенность. Так, например, в сотовой системе мобильной связи стандарта IS-95 в качестве скремблирующей используется ПСП периода
в числе элементарных чипов. При чиповой скорости 1.228810 6 симв/сек ее период составляет:

Следовательно, можно предполагать, что поскольку последовательность не повторяется в течение такого длительного периода, то она может рассматриваться случайной и обеспечивать совершенную секретность. Однако существует коренное отличие псевдослучайной последовательности от действительно случайной последовательности: псевдослучайная последовательность формируется согласно некоторому алгоритму. Таким образом, если известен алгоритм, то будет известна и сама последовательность. В результате этой особенности схема шифрования, использующая линейный регистр сдвига с обратной связью, оказывается уязвимой к атаке известного открытого текста.

Для определения отводов обратной связи, начального состояния регистра и всей последовательности криптоаналитику достаточно иметь всего
бит открытого текста и соответствующий им шифрованный текст. Очевидно, что величина 2n значительно меньше периода ПСП, равного
. Проиллюстрируем упомянутую уязвимость на примере.

Пример 10.4.2. Пусть в качестве скремблирующей используется ПСП периода
, генерируемая с помощью рекурсии вида

при начальном состоянии регистра 0001. В результате будет сформирована последовательность . Предположим, что криптоаналитику, которому ничего неизвестно о структуре обратной связи генератора ПСП, удалось получить
бит криптограммы и ее открытого эквивалента:

Тогда, сложив обе последовательности по модулю 2, криптоаналитик получает в свое распоряжение фрагмент скремблирующей последовательности, который показывает состояние регистра сдвига в различные моменты времени. Так, например, первые четыре бита ключевой последовательности отвечают состоянию регистра в некоторый момент времени . Если теперь сдвигать окно, выделяющее четверку битов на одну позицию вправо, то будут получены состояния регистра сдвига в последовательные моменты времени
. Учитывая линейную структуру схемы обратной связи, можно записать, что

где символ ПСП, который вырабатывается схемой обратной связи и подается на вход первого разряда регистра, а
определяет отсутствие или наличиеi –го соединения между выходом разряда регистра сдвига и сумматором, т.е. схему обратной связи.

Анализируя состояния регистра сдвига в четыре последовательные момента времени можно составить следующую систему четырех уравнений с четырьмя неизвестными:

Решение данной системы уравнений дает следующие значения коэффициентов:

Таким образом, определив схему соединений обратной связи линейного регистра и зная его состояние в момент времени , криптоаналитик способен воспроизвести скремблирующую последовательность в произвольный момент времени, а значит, способен дешифровать перехваченную криптограмму.

Обобщив рассмотренный пример на случай произвольного регистра сдвига памяти n , исходное уравнение может быть представлено в виде

,

а система уравнений записана в следующей матричной форме

,

где
, а
.

Можно показать, что столбцы матрицы линейно независимы и, значит, существует обратная матрица
. Следовательно

.

Обращение матрицы требует порядка операций, так что при
имеем
, что для компьютера со скоростью работы одна операция за 1мкс потребует 1 сек на обращение матрицы. Очевидно, что слабость регистра сдвига обусловлена линейностью обратной связи.

Чтобы затруднить аналитику вычисление элементов ПСП при сопоставлении фрагментов открытого текста и шифровки, применяется обратная связь по выходу и шифротексту. На рис. 10.17 поясняется принцип введения обратной связи по шифротексту.

Рис. 10.17. Поточное шифрование с обратной связью.

Сначала передается преамбула, в которой содержится информация о параметрах генерируемой ПСП, в том числе и о значении начальной фазы Z 00 . По каждым n сформированным символам шифрограммы вычисляется и устанавливается в генераторе новое значение фазы
. Обратная связь делает метод гаммирования чувствительным к искажениям криптограммы. Так, из-за помех в канале связи могут исказиться некоторые принятые символы, что приведет к вычислению ошибочного значения фазы ПСП и затруднит дальнейшую расшифровку, но после полученияn правильных символов шифрованного текста система восстанавливается. В то же время такое искажение можно объяснить попыткой злоумышленника навязать ложные данные.

Обычные шифры из детективных романов часто устроены так: каждая буква сообщения заменяется каким-нибудь определённым значком или другой буквой. Подобные шифры очень ненадёжны, и вот почему. Буквы в текстах на русском языке (да и на любом языке вообще) встречаются неравномерно. Например, буква «О» в русских текстах встречается чаще всех других букв, а буква «Ъ» - реже всего. У каждой буквы есть своя примерная частота появления в тексте (смотри таблицу на поле справа).

Сочетания букв тоже встречаются неравномерно (например, «ьь» вообще не встречается). Конечно, все эти частоты зависят от конкретного текста - скажем, в биологической статье о жужелицах буква «ж» явно будет встречаться чаще, чем обычно. Но приведённая таблица вполне годится как ориентир.

Так вот, описанный способ шифровки не изменяет частот - просто теперь с аналогичной частотой будет появляться не сама буква, а заменяющий её значок. Высчитав частоту появления каждого значка в шифровке и сравнив полученные данные с таблицей частот, мы можем сделать предположения, какой букве какой значок соответствует. Далее пробуем заменять значки один за одним на буквы, проверяя свои догадки, корректируя их и делая новые, и постепенно расшифровываем текст. Если он не слишком короткий, мы с большой вероятностью его полностью расшифруем (хотя это может оказаться не совсем простым делом). Кстати, намного чаще любой буквы встречается пробел, разделяющий слова. Поэтому если пробел используется в шифровке и тоже заменён на какой-то значок, мы разгадаем его в первую очередь.

Совершенный шифр

Опишем теперь шифр, который принципиально не поддается расшифровке без знания ключа. Сопоставим каждой букве русского алфавита свою последовательность из 0 и 1 длины 5 (пятизначный двоичный код), например: А - 00000, Б - 00001, В - 00010 и так далее (или в каком-то другом порядке). Если буквы Е и Ё кодировать одинаково, то последовательностей как раз хватит (их 32, а в алфавите 33 буквы).

Заменим в тексте каждую букву на её двоичный код, получим последовательность из 0 и 1 (двоичный текст). Это пока ещё не шифровка - мы бы легко разгадали, какая буква на какую последовательность заменена (тем же методом, что и в случае замены букв на значки).

Чтобы зашифровать полученный двоичный текст, нам потребуется ещё ключ - случайная последовательность из 0 и 1 такой же длины. Этот ключ должен быть и у отправителя шифрованного сообщения, и у адресата.

Для зашифровки просто складываем две последовательности нулей и единиц - двоичный текст сообщения и ключ: первую цифру с первой, вторую со второй, и так далее. Но складываем по особым правилам:

0 + 0 = 0, 1 + 0 = 1, 0 + 1 = 1, 1 + 1 = 0

(в математике это называется сложением по модулю 2).

Полученная последовательность и будет зашифрованным сообщением. Чтобы расшифровать её, надо просто... снова прибавить к ней ключ! Тогда мы как бы прибавим к исходной последовательности ключ два раза. А по нашим правилам, прибавляя две одинаковые цифры мы ничего не меняем, то есть мы вернёмся к исходному двоичному тексту. Схематически процесс шифрования и дешифрования можно описать так:

текст + ключ = шифровка;

шифровка + ключ = текст + ключ + ключ = текст.

Ясно, что расшифровать сообщение, не зная ключа, невозможно. Нам как бы дана сумма двух чисел, и нельзя восстановить одно из слагаемых, ничего не зная про другое. Имея на руках лишь шифровку, мы знаем только, что исходный текст может быть абсолютно любым текстом соответствующей длины. Ведь по любому такому тексту можно изготовить ключ, который приведёт ровно к той же самой шифровке!

Недостаток описанного способа в том, что каждый текст требует нового ключа такой же длины - если повторять ключи, появляется возможность расшифровки. Например, мы могли бы попробовать вместо длинного ключа использовать ключ всего из пяти символов, скажем 11010. Разбиваем двоичный текст на пятёрки цифр и прибавляем к каждой пятёрке 11010. Фактически, мы просто заменяем каждую пятёрку цифр на какую-то другую фиксированную пятёрку. В этом случае расшифровать исходный текст так же легко, как если бы мы просто заменили его двоичным кодом, не прибавляя никакого ключа. Использовать длинные ключи, но всё же существенно более короткие, чем текст, тоже опасно - есть метод определения длины ключа, а после того как длина ключа установлена, можно применить частотный анализ.

Поэтому надо заготовить ключ огромной длины заранее и лишь указывать, например, в начале шифровки, какое место ключа используется. При этом очень важно, чтобы ключ был случайной последовательностью из 0 и 1. Например, последовательности 11111111111111111 и 010101010101010 не случайные. Кстати, придумать случайную последовательность не так-то просто. Трудно даже (но возможно) дать чёткое определение, какие последовательности могут считаться случайными.

Немного истории и литературы

Подобный шифр использовал Макс Кристиансен-Клаузен, шифровальщик выдающегося советского разведчика Рихарда Зорге. Наиболее часто употребляемые буквы английского алфавита s, i, o, e, r, a, t, n заменялись цифрами от 0 до 7, а остальные буквы - числами от 80 до 99 (чтобы не возникало путаницы, когда числа записывались подряд). Ключом служили старые выпуски «Статистического ежегодника Германского рейха» с множеством числовых данных. Ключ записывали под текстом и прибавляли, причём если сумма двух цифр превышала 10, то записывалась только её последняя цифра. Например, вместо 7 + 5 писали 2, отбрасывая десяток (в математике это называется сложением по модулю 10). Восстанавливали исходное сообщение, «вычитая» ключ из шифровки. Когда выходило отрицательное число, как, скажем, при вычитании 5 из 2, было ясно, что надо вычитать из числа на 10 больше, то есть из 12 - вот и получали 7.

Японские тайные службы перехватили много радиограмм Зорге, но ни одной не сумели расшифровать. Более полный рассказ об этом читайте в замечательной книге Юлиуса Мадера «Репортаж о докторе Зорге».

А герой приключенческих романов Юлиана Семёнова «Семнадцать мгновений весны» и «Приказано выжить» разведчик Штирлиц, больше известный нам по знамениту кинофильму, использовал в качестве ключа художественную книгу Монтеня. При этом осмысленный текст сообщения«складывался» с осмысленным же (и значит, не случайным!) текстом ключа. Когда германским контрразведчикам стало известно предполагаемое содержание одной из шифровок, в частности - некоторые слова, которые там могли встречаться, - они попробовали их подставить в разные места шифровки и посмотреть, какой получается ключ. Попав в нужное место, они открывали кусочек ключа, в котором угадывались части осмысленных слов. Восстанавливая эти слова, они раскрывали и новый кусочек шифровки, и так постепенно расшифровали её.

Шифры с открытым ключом

Начиная с 1977 года, стали появляться новые шифры, основанные на глубоких математических идеях, высказанных американскими математиками Диффи и Хеллманом за два года до этого. Представьте себе, что два бизнесмена хотят переписываться друг с другом, надёжно шифруя сообщения, но забыли договориться о ключе. Они находятся в разных странах, всё их общение может прослушиваться конкурентами. Как тут быть? Оказывается, выходы есть. Опишем один из них, но без подробностей, только сам принцип.

Придуман способ шифровки, для которого надо знать лишь произведение pq двух каких-то простых чисел p и q , а сами числа p и q знать не нужно. А вот для расшифровки сообщения обязательно иметь в распоряжении и число p , и число q . «Ну и что тут такого?», - спросите вы. А вот что. Дело в том, что эти простые числа можно взять очень большими. И тут мы сталкиваемся с таким явлением: современные компьютерные мощности огромны, но всё же ограничены. Скажем, компьютер может за разумное время разложить на простые множители 200-значное число, но раскладывание 300-значных чисел ему уже не под силу (любому из известных алгоритмов потребуются многие годы). Всегда есть какая-то подобная граница. А выяснить про число, простое оно или нет, компьютеры могут очень быстро для гораздо более длинных чисел. Так вот, первый из компаньонов может с помощью компьютера найти какие-нибудь два, скажем, 400-значных простых числа p и q , перемножить их и открыто переслать результат второму (а сами числа p и q хранить в тайне). Получив произведение pq , тот зашифрует своё сообщение и отправит обратно первому. И первый его легко расшифрует - он-то знает оба числа p и q . А вот всяким там подслушивателям для расшифровки придётся сначала разложить на множители произведение pq , в котором 800 знаков - а с этим не справится ни один современный компьютер! Этот метод шифровки называется RSA, по первым буквам фамилий его создателей - Ривеста, Шамира и Адлемана.

Конечно, с развитием компьютерных технологий появляется возможность расшифровывать старые сообщения. Первая шифровка авторов RSA, опубликованная ими в 1977 году как вызов всем дешифровальщикам мира, продержалась 17 лет. Также есть опасность, что будет найден новый, быстрый алгоритм разложения чисел на простые множители. Но есть математическая гипотеза, что все такие алгоритмы работают принципиально не быстрее, чем уже известные.

А у вас получится?

Перед вами текст, который получен из хорошо известного заменой каждой буквы на какую-то другую. Расшифруйте его.

Атокг ацынг цлекытуы цлауенг ьи Чолсв, и уими Чолси уманлоти ки эекпв нипеме вматыфюеме, цаткзме утоь чтиьиме, жна ни ацынг ьималчити, андоти атокы д уналакв е, мокыы омв ки чатадо тхс, боцквти:

– Пиё д уимам сото в Укоркаё палатодз, ка ак дцатко садаток е свмион, жна твжбо омв кечсо е щзнг ко марон. Цлежекаё ро дуомв аупатпе ьолпити, жна уесын в коча д уолсйо е д чтиьв. Еш киса вситенг, екижо ак кепачси ко щвсон жотадопам, е Укоркиы палатоди уашликен кис кем удаф дтиунг.

– Ка ко цамаробг те нз Чолсо пип-кещвсг вкежнаренг янв дтиунг?

– Уетгкоо, жом аки оунг, ы ко мачв ох усотинг. Ко десебг лиьдо, пип дотепи ох уети? Ко десебг, жна оё утврин е тфсе е реданкзо? Досг аки щауиы ащабти цатудони! Ко в киу ьикеминг оё уетв! Уети - д ох метам, кодеккам сонупам уолсожпо. Оуте аки уими ко умарон цлакепквнг д жолначе Укоркаё палатодз е еьдтожг еь уолсйи Пиы аупатпе, на мз е цасидка оё ко цамаром! Д сдвш метыш ануфси кижекионуы уис Укоркаё палатодз. Анкоуе нвси содажпв, уцвуне в щатгбача пвуни, цаплзнача плиукзме ычасиме, е, ко мобпиы, даьдлиюиёуы ащлинка!

У янеме утадиме эекпи цасуисети Чолсв ки уцекв атокы, е нан щлауетуы щоринг уа дуош кач.

 

Пожалуйста, поделитесь этим материалом в социальных сетях, если он оказался полезен!