Как дешифровать простейшую криптограмму? | Мир вокруг нас
А однажды решение этой задачи понадобилось мне на практике. Мой компьютер отказывался загружаться, выдавая какое-то сообщение в другой кодировке, так что прочесть можно было лишь слово Windows. Чтобы понять, что происходит, надо было дешифровать сообщение безо всяких подручных средств (компьютер-то был один и он не загружался!). Через 5 минут сообщение было прочитано и компьютер заработал.
Так что навык этот может пригодиться в самых неожиданных жизненных ситуациях, далёких от шпионажа, детективных историй, заговоров и банковского дела. Короче говоря, от всего, чем занимается древняя наука криптография. Например, он поможет разобрать письмо с неразборчивым почерком.
Простейший шифр представляет собой замену каждой буквы алфавита определённым символом, в том числе и другой буквой алфавита. При этом сохраняется порядок следования букв, интервалы между словами, а между набором символов и алфавитом устанавливается взаимно-однозначное соответствие (ключ к шифру).
При дешифровке в отсутствие ключа крайне желательно иметь хоть какую-то информацию о содержании сообщения — имя отправителя или адресата, место отправления или назначения, имена, явки, пароли… Это позволяет получить хотя бы небольшой кусок ключа — соответствие нескольких букв и знаков шифра. Сообщение может начинаться с приветствия, а заканчиваться подписью. Пробуем сопоставить последнее слово с именем отправителя, а первое — со стандартными приветствиями типа «Привет», «Здравствуйте» и т. п.
Далее следует провести частотно-предложный анализ. Частотный анализ заключается в том, что мы ранжируем символы шифра по частоте появления в тексте. Наиболее часто встречающиеся буквы алфавита — «о», «в», «а», «е», «н», «и» и т. д. Скорее всего лидеры по частотам — именно эти буквы. А предложный анализ заключается в том, что слова из одной, двух и трёх букв скорее всего являются предлогами, частицами или союзами — «в», «на», «не» и т. д.
Теперь переходим к частотно-предложному анализу: смотрим, какие из наиболее часто встречающихся символов выпадают на самые короткие слова, и сопоставляем их с предлогами, частицами и союзами.
Кстати, стоит обратить внимание и на наиболее редко встречающиеся символы. Возможно, это редкие буквы русского языка — «ь», «ъ», «щ», «ф», «ю», «э» и т. п. Некоторые шифровщики игнорируют букву «ё», заменяя её на «е». Тогда слово из двух одинаковых символов стопроцентно будет «её».
Анализируя трёхбуквенные слова, обратите внимание на те, у которых первая буква совпадает с последней. Это с высокой степенью вероятности «оно», «или», «ага», «ого» или «ещё». Для однобуквенных слов выбор тоже невелик: «а», «в», «ж», «и», «к», «о», «с», «у», «я».
Чем больше мы раскрываем элементов ключа, тем легче идёт дальнейший процесс дешифровки.
Если в качестве символов выступают буквы алфавита, то код может являться так называемым Кодом Цезаря. Код Цезаря получается смещением всех букв на определённое количество позиций. Например, вместо А ставится Г, вместо Б — Д, и т. д. Концовка замыкается: вместо Э — А, вместо Ю — Б, вместо Я — В.
- Кстати, при попытке прочтения страницы в Интернете, написанной в кодировке КОИ-8 с настройками браузера Win1251, мы имеем как раз этот случай, правда, количество позиций смещения различно для первой и для второй половины алфавита.
Если вы обнаружите, что использован Код Цезаря, значит, задача ваша упрощается во много раз! Действительно, вам достаточно дешифровать лишь две буквы, что даст вам величину и направление смещения, а дальше весь ключ раскрывается сам.
Облегчают вашу жизнь и знаки препинания, если они оставлены не зашифрованными. Обратите внимание на выделенные запятыми вводные слова, на кавычки (там наверняка какое-то название, имя собственное, которое вы можете знать), на дефисы в сочетании с короткими словами («кое-что», «как-нибудь» и т. п.).
Код может быть усложнён добавлением «мусора». Например, читать надо каждое 5-е слово или каждый раз пропускать на одно слово больше. Мусорные слова можно выделить по невозможным сочетаниям букв, например «щщ» или «аь». Впрочем, мусорные слова могут быть и вполне легальными, тогда надо исходить только из смысла фразы. Придётся пройтись по всем последовательностям: через слово, задом наперёд и т. д.
Если в слове вы раскрыли несколько букв, можно воспользоваться программой для решения кроссвордов. Такая возможность есть, например, в электронной игре «Эрудит». Программа выдаст вам список возможных слов с этими буквами на заданных местах. Конечно, использование компьютера намного облегчает работу, даже если у вас нет специальных программ-дешифровщиков. Вы можете пользоваться глобальной заменой символов в тексте, откатывать изменения и многое другое.
Если прояснился какой-либо фрагмент текста, вы уже можете определиться с предметной областью шифровки и сделать целенаправленный поиск среди оставшихся частей специализированных терминов из этой области. Например, если вы нашли слово «логарифм», ищите «экспонента», «интеграл» и т. п.
Желаю вам успеха в нелёгком, но безумно интересном деле дешифровки текстов.
Гтждп гбн епвспдп!
Уроки криптографии. Основные шифры. часть 1
Архаичные шифраторы канули в Лету, чего нельзя сказать об алгоритмах шифрования. Операции сдвига, замены и перестановки до сих пор применяются в современных алгоритмах, однако с существенной поправкой в стойкости. За многие столетия, прошедшие со времен первого применения этих шифров, криптографы научились оценивать количество информации, энтропию и стойкость, однако так было не всегда. Рассмотрим подробнее, как работают самые популярные шифры в истории криптографии и в чем их недостатки.
В современном обществе, где почти каждый человек имеет электронный девайс (а то и не один), где каждую минуту совершаются операции с электронной валютой, пересылаются конфиденциальные 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.
Теперь текст нужно зашифровать по нашей таблице. Алгоритм такой:
- Для каждого исходного символа ищем соответствующую ему цифру в первом столбце (для M это будет 9).
- Для каждого исходного символа ищем соответствующую ему цифру в первом ряду (для M это будет 6).
- Записываем полученные символы один за другим (
96). Если вместо символа в первом ряду/столбце стоит прочерк, не пишем ничего:96 4 …
M R … - Переходим к следующему символу. И так далее.
В итоге у нас получится такой шифротекст:
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-50 32031-2841}Полученный шифротекст анализировали согласно таблице. Благодаря конструкции таблицы каждое число имеет строго одно значение в буквах:
96490 94819 49119 39394 92939 79462 96244 29190 Mr. /X/ wil l/ fly /to morr ow.
Получили исходный текст:
Mr. X will fly tomorrow
Криптоанализ
Шифр Зорге так и не был взломан вражескими криптоаналитиками. Множество раз японские спецслужбы перехватывали шифротекст, но он так и останется в виде колонок пятизначных чисел, которые подшивались в дела непойманных шпионов.
Шифр Вернама
Во время Первой мировой войны криптологами активно использовался одноразовый шифр-блокнот, или шифр Вернама. Доказано, что он теоретически абсолютно стойкий, однако ключ key должен быть той же длины, что и передаваемое сообщение. Абсолютная стойкость — это свойство, при котором зашифрованное сообщение не поддается криптоанализу, так как не дает злоумышленнику никакой информации об открытом тексте.
Cуть шифра Вернама крайне проста. Для этого нужно вспомнить операцию «исключающее или» или сложение по модулю 2. Итак, для сообщения plaintext шифротекст будет равен:
plaintext⊕key = ciphertext
Для практического примера нужно каждый символ исходного текста перевести в двоичный код и проксорить (сложить по модулю 2) с соответствующим символом ключа. Далее перевести полученный символ шифротекста в буквенный формат согласно таблице.
A 00011 B 11001 ----- + G 11011
Во времена Первой мировой войны двоичные коды для символов задавались в Международном телеграфном алфавите № 2 (International Telegraph Alphabet No. 2, ITA2).
На самом деле, несмотря на свою криптостойкость, этот шифр имеет больше минусов, нежели плюсов:
- в качестве ключа должна быть абсолютно случайная последовательность — вероятно, придется стоять и подбрасывать кубик, чтобы сгенерировать такую;
- для передачи необходим защищенный канал — сомнительно, что он всегда имелся под рукой во времена Первой мировой войны;
- если третья сторона сможет каким-то образом узнать послание, она легко и восстановит ключи, и подменит сообщение;
- требуется надежное уничтожение страницы блокнота — сжечь ее и съесть пепел, тогда враг точно не узнает, что было зашифровано.
Пример шифра
Исходный текст: HELLO
Ключ: AXHJB
Складываем побитово по модулю 2 и ищем, какой букве соответствует полученный код в телеграфном алфавите:
H⊕A = 10100⊕00011 = 10111 => QE⊕X = 00001⊕11101 = 11100 => ML⊕H = 10010⊕10100 = 00110 => IL⊕J = 10010⊕01011 = 11001 => BO⊕B = 11000⊕11001 = 00001 => E
Шифрованный текст: QMIBE
Расшифрование
Расшифрование с помощью ключа выполняется аналогично шифровке:
ciphertext⊕key = plaintext
Криптоанализ
При правильном использовании ключа злоумышленник может только угадать символы. Даже при условии, что у него будет неограниченное количество шифротекстов, но все они будут зашифрованы на различных ключах из разных символов, он будет иметь бесконечное множество вариантов исходного текста. При этом догадываться о значении исходного текста можно лишь по количеству символов.
Криптоанализ шифра Вернама легко возможен в том случае, если при шифровании мы выбрали ключ с повторяющимися символами. Если злоумышленнику удалось заполучить несколько текстов с перекрывающимися ключами, он сможет восстановить исходный текст.
Рассмотрим атаку, которая осуществима, если мы дважды при шифровании используем один и тот же ключ. Она называется атака вставки.
Предположим, нам удалось перехватить зашифрованное сообщение QMIVE. Мы пытаемся взломать шифр и убедили отправителя зашифровать свое сообщение еще раз, но при этом поставить первым символом 1 (конечно, отправитель должен быть безмерным простофилей, чтобы выполнить такое условие, но, предположим, мы умеем убеждать).
Тогда мы получаем шифротекст VDYBJY.
Нам известно, что первый символ 1. Я вычисляю первый символ секретного ключа key:
V⊕1 = 11110⊕11101 = 00011 => A
Далее. Нам известно, что первый шифротекст зашифрован этим же ключом. Тогда мы можем вычислить первый символ открытого текста:
Q⊕A = 10111⊕00011 = 10100 => H
Дальше нам нужно найти второй символ ключа. Для этого мы берем второй шифротекст, и, так как нам известен второй символ открытого текста, вычисляем второй символ ключа:
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 повторила судьбу немецкой «Энигмы». Она была взломана американским отделом криптоаналитиков.
Шифровальная машина Purple
Выводы
Опыт истории криптографии показывает нам значимость выбора секретного ключа и частоты смены ключа. Ошибки в этом тяжелом процессе превращают любую систему шифрования в менее стойкую, чем она могла бы быть. В следующий раз поговорим про распределение ключей.
ссылки:
Это первый урок из цикла «Погружение в крипту». Все уроки цикла в хронологическом порядке:
- Уроки криптографии. Основные шифры. часть 1. Основы, исторические шифраторы, как работают (и анализируются) шифры сдвига, замены, Рихарда Зорге, шифр Вернама и шифровальные машины (ты здесь)
- Распределение ключей. часть 2. Что это такое, как выполняется распределение ключей и как выбрать криптостойкий ключ
- Урок 3. Современные отечественные шифры. Что тaкое сеть Фейстеля, какими бывают отечественные блочные шифры, используемые в современных протоколах, — ГОСТ 28147—89, «Кузнечик»
- Урок 4. Современные зарубежные шифры. Что такое, как работают и в чем разница между 3DES, AES, Blowfish, IDEA, Threefish от Брюса Шнайдера
- Урок 5. Электронная подпись. Виды ЭП, как они работают и как их использовать
- Урок 6. Квантовая криптография. Что это такое, где используется и как помогает в распределении секретных ключей, генерации случайных чисел и электронной подписи
Click to rate this post!
[Total: 13 Average: 4.3]
Статистические техники криптоанализа / Хабр
Введение
Криптоанализ — наука о том, как расшифровывать зашифрованную информацию, не имея в распоряжении ключа для расшифровки. Криптоанализом так же называется сам процесс дешифровки.
Чаще всего под криптоанализом понимается выяснение ключа шифрования, так как имея ключ криптоаналитик может расшифровать любое сообщение. Однако криптоанализ может заключаться и в анализе криптосистемы, а не только зашифрованного ею открытого сообщения, и включает также методы выявления уязвимости зашифровывающих алгоритмов.
Статистический криптоанализ — это один из методов криптоанализа. Как и в любой задаче, связанной с математической статистикой, вводится понятие статистики — некоторой величины, которая вычисляется на основе выборки или, в случае криптоанализа, — на основе криптограммы. В идеальном случае статистика должна быть простой в вычислении и использовании, а так же не сильно меняться от сообщения к сообщению, если эти сообщения зашифрованы одним и тем же ключом.
Цель статистического криптоанализа — расшифровать конечное сообщение, используя вычисленную статистику. В этой статье представлен обзор нескольких методов статистического криптоанализа от самых простых, до используемых в современных взломах.
Частотный анализ
Простые шифры
Частотный анализ использует гипотезу о том, что символы или последовательности символов в тексте имеют некоторое вероятностное распределение, которое сохраняется при шифровании и дешифровании.
Этот метод один из самых простых и позволяет атаковать шифры простой замены, в которых символы в сообщении заменяются на другие согласно некоторому простому правилу соответствия.
Однако такой метод совершенно не работает, например, на шифрах перестановки. В них буквы или последовательности в сообщении просто меняются местами, но их количество всегда остается постоянным, как в анаграммах, поэтому ломаются все методы, основанные на вычислении частот появления символов.
Для полиалфавитных шифров — шифров, в которых циклически применяются простые шифры замены — подсчет символов так же не будет эффективен, поскольку для кодировки каждого символа используется разный алфавит. Число алфавитов и их распределение так же неизвестно.
Шифр Виженера
Один из наиболее известных примеров полиалфавитных шифров — шифр Виженера. Он довольно прост в понимании и построении, однако после его создания еще 300 лет не находилось способа взлома этого шифра.
Пусть исходный текст это: МИНДАЛЬВАНГОГ
Составляется таблица шифров Цезаря по числу букв в используемом алфавите. Так, в русском алфавите 33 буквы. Значит, таблица Виженера (квадрат Виженера) будет размером 33х33, каждая i-ая строчка в ней будет представлять собой алфавит, смещенный на i символов.
Выбирается ключевое слово. Например, МАСЛО. Символы в ключевом слове повторяются, пока длина не достигнет длины шифруемого текста: МАСЛОМАСЛОМАС.
Символы зашифрованного текста определяются по квадрату Виженера: столбец соответствует символу в исходном тексте, а строка — символу в ключе. Зашифрованное сообщение: ЩЙЯРПШЭФМЬРПХ.
Этот шифр действительно труднее взломать, однако выделяющиеся особенности у него все же есть. На выходе все же не получается добиться равномерного распределения символов (чего хотелось бы в идеале), а значит потенциальный злоумышленник может найти взаимосвязь между зашифрованным сообщением и ключом. Главная проблема в шифре Виженера — это повторение ключа.
Взлом этого шифра разбивается на два этапа:
Поиск длины ключа. Постепенно берутся различные образцы из текста: сначала сам текст, потом текст из каждой второй буквы, потом из каждой третьей и так далее. В некоторый момент можно будет отвергнуть гипотезу о равномерном распределении букв в таком тексте — тогда длина ключа считается найденной.
Взлом нескольких шифров Цезаря, которые уже легко взламываются.
Поиск длины ключа — самая нетривиальная здесь часть. Введем индекс совпадений сообщения m:
где n — количество символов в алфавите и
p_i — частота появления i-го символа в сообщении. Эмпирически были найдены индексы совпадений для текстов на разных языков. Оказывается, что индекс совпадений для абсолютно случайного текста гораздо ниже, чем для осмысленного текста. С помощью этой эвристики и находится длина ключа.
Другой вариант — применить критерий хи-квадрат для проверки гипотезы о распределении букв в сообщении. Тексты, получаемые выкидыванием некоторых символов, все равно остаются выборкой из соответствующего распределения. Тогда в критерии хи-квадрат вероятности появления символов можно выбрать используя частотные таблицы языка.
Статистические атаки насыщения
Не только простейшие шифры подвержены статистическим методам криптоанализа. Например, статистические атаки насыщения направлены на блочные шифры, которые в настоящее время широко использутся в криптографических протоколах. Проиллюстрировать принцип таких атак удобно на блочном шифре PRESENT.
PRESENT
PRESENT — блочный шифр на основе SP-сети с размером блока 64 бита, длиной ключа 80 или 128 бит и количеством раундов 32. Каждый раунд состоит в операции XOR с текущим ключом, далее происходит рассеивание — пропускание через S-блоки, а затем полученные блоки перемешиваются.
Предложенная атака основывается на уязвимости шифра на этапе перемешивания. Как показано на изображении, из входных битов 5, 6, 9 и 10 s-блоков половина соединений идет в те же самые блоки. И это только один пример подобной слабости. Значит, фиксируя 16 битов на входе 5, 6, 9 и 10 s-блоков, можно определить 8 входных битов для этих блоков на следующем раунде.
Предполагая ключ на данном шаге, криптоаналитик может по выбранном распределению выбранных 8 битов на входе определить распределение тех же 8 битов на выходе. Проделав эту процедуру для каждого ключа, можно понять все возможные распределения выбранных 8 выходных битов 5, 6, 9 и 10 s-блоков на каждом слое, применяя алгоритм итеративно.
Когда криптоаналитик знает для каждого ключа, как распределены выбранные 8 битов на каждом слое, он может сравнить полученные распределения с теми, которые получаются в реальной системе. Для этого нужен доступ к алгоритму шифрования и большое количество текстов для шифрования. Из всех возможных ключей выбирается тот, который минимизирует расстояние между теоретическим и экспериментальным распределениями.
Линейный криптоанализ
Еще один метод взлома блочных шифров — линейный криптоанализ. Он является одним из самых распространенных подходов. Анализ основывается на построении соотношений между открытым текстом P, ключом K и зашифрованным сообщением C, а затем их использовании для нахождения ключа.
Соотношения в алгоритме — это уравнения следующего вида:
Вероятность выполнения этого соотношения для произвольно выбранных битов примерно равна 0.5. Цель линейного криптоанализа — найти такие наборы битов, что эта вероятность сильно отличается от 0.5 в одну или другую сторону. Вероятности подсчитываются путем полного перебора всех возможных значений входов для S-блока.
Ключ находится следующим образом:
Для каждого возможного набора битов ключа проверяется, на скольких парах текст-шифротекст выполняется найденное соотношением. Выбирается тот набор битов, для которого отклонение числа пар от половины всех пар наибольшее.
Линейный криптоанализ оказался очень мощным инструментом и может применять не только к блочным, но и к потоковым шифрам.
Заключение
В данной статье были рассмотрены наиболее известные техники статистического криптоанализа от простейшего частотного анализа до современных методов взлома блочных шифров. Сложность современных шифров все увеличивается, но статистика помогает найти в них уязвимости, поэтому методы криптоанализа все еще находят свое применение, несмотря на высказывания о его конце.
Классический криптоанализ / Хабр
На протяжении многих веков люди придумывали хитроумные способы сокрытия информации — шифры, в то время как другие люди придумывали еще более хитроумные способы вскрытия информации — методы взлома.
В этом топике я хочу кратко пройтись по наиболее известным классическим методам шифрования и описать технику взлома каждого из них.
Шифр Цезаря
Самый легкий и один из самых известных классических шифров — шифр Цезаря отлично подойдет на роль аперитива.
Шифр Цезаря относится к группе так называемых одноалфавитных шифров подстановки. При использовании шифров этой группы «каждый символ открытого текста заменяется на некоторый, фиксированный при данном ключе символ того же алфавита» wiki.
Способы выбора ключей могут быть различны. В шифре Цезаря ключом служит произвольное число k, выбранное в интервале от 1 до 25. Каждая буква открытого текста заменяется буквой, стоящей на k знаков дальше нее в алфавите. К примеру, пусть ключом будет число 3. Тогда буква A английского алфавита будет заменена буквой D, буква B — буквой E и так далее.
Для наглядности зашифруем слово HABRAHABR шифром Цезаря с ключом k=7. Построим таблицу подстановок:
| 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 |
| h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z | a | b | c | d | e | f | g |
И заменив каждую букву в тексте получим: C(‘HABRAHABR’, 7) = ‘OHIYHOHIY’.
При расшифровке каждая буква заменяется буквой, стоящей в алфавите на k знаков раньше: D(‘OHIYHOHIY’, 7) = ‘HABRAHABR’.
Криптоанализ шифра Цезаря
Малое пространство ключей (всего 25 вариантов) делает брут-форс самым эффективным и простым вариантом атаки.
Для вскрытия необходимо каждую букву шифртекста заменить буквой, стоящей на один знак левее в алфавите. Если в результате этого не удалось получить читаемое сообщение, то необходимо повторить действие, но уже сместив буквы на два знака левее. И так далее, пока в результате не получится читаемый текст.
Аффиный шифр
Рассмотрим немного более интересный одноалфавитный шифр подстановки под названием аффиный шифр. Он тоже реализует простую подстановку, но обеспечивает немного большее пространство ключей по сравнению с шифром Цезаря. В аффинном шифре каждой букве алфавита размера m ставится в соответствие число из диапазона 0… m-1. Затем при помощи специальной формулы, вычисляется новое число, которое заменит старое в шифртексте.
Процесс шифрования можно описать следующей формулой:
,
где x — номер шифруемой буквы в алфавите; m — размер алфавита; a, b — ключ шифрования.
Для расшифровки вычисляется другая функция:
,
где a-1 — число обратное a по модулю m. Это значит, что для корректной расшифровки число a должно быть взаимно простым с m.
С учетом этого ограничения вычислим пространство ключей аффиного шифра на примере английского алфавита. Так как английский алфавит содержит 26 букв, то в качестве a может быть выбрано только взаимно простое с 26 число. Таких чисел всего двенадцать: 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23 и 25. Число b в свою очередь может принимать любое значение в интервале от 0 до 25, что в итоге дает нам 12*26 = 312 вариантов возможных ключей.
Криптоанализ аффиного шифра
Очевидно, что и в случае аффиного шифра простейшим способом взлома оказывается перебор всех возможных ключей. Но в результате перебора получится 312 различных текстов. Проанализировать такое количество сообщений можно и в ручную, но лучше автоматизировать этот процесс, используя такую характеристику как частота появления букв.
Давно известно, что буквы в естественных языках распределены не равномерно. К примеру, частоты появления букв английского языка в текстах имеют следующие значения:
Т.е. в английском тексте наиболее встречающимися буквами будут E, T, A. В то время как самыми редкими буквами являются J, Q, Z. Следовательно, посчитав частоту появления каждой буквы в тексте мы можем определить насколько частотная характеристика текста соответствует английскому языку.
Для этого необходимо вычислить значение:
,
где ni — частота i-й буквы алфавита в естественном языке. И fi — частота i-й буквы в шифртексте.
Чем больше значение χ, тем больше вероятность того, что текст написан на естественном языке.
Таким образом, для взлома аффиного шифра достаточно перебрать 312 возможных ключей и вычислить значение χ для полученного в результате расшифровки текста. Текст, для которого значение χ окажется максимальным, с большой долей вероятности и является зашифрованным сообщением.
Разумеется следует учитывать, что метод не всегда работает с короткими сообщениями, в которых частотные характеристики могут сильно отличатся от характеристик естественного языка.
Шифр простой замены
Очередной шифр, относящийся к группе одноалфавитных шифров подстановки. Ключом шифра служит перемешанный произвольным образом алфавит. Например, ключом может быть следующая последовательность букв: XFQABOLYWJGPMRVIHUSDZKNTEC.
При шифровании каждая буква в тексте заменяется по следующему правилу. Первая буква алфавита замещается первой буквой ключа, вторая буква алфавита — второй буквой ключа и так далее. В нашем примере буква A будет заменена на X, буква B на F.
При расшифровке буква сперва ищется в ключе и затем заменяется буквой стоящей в алфавите на той же позиции.
Криптоанализ шифра простой замены
Пространство ключей шифра простой замены огромно и равно количеству перестановок используемого алфавита. Так для английского языка это число составляет 26! = 288. Разумеется наивный перебор всех возможных ключей дело безнадежное и для взлома потребуется более утонченная техника, такая как поиск восхождением к вершине:
- Выбирается случайная последовательность букв — основной ключ. Шифртекст расшифровывается с помощью основного ключа. Для получившегося текста вычисляется коэффициент, характеризующий вероятность принадлежности к естественному языку.
- Основной ключ подвергается небольшим изменениям (перестановка двух произвольно выбранных букв). Производится расшифровка и вычисляется коэффициент полученного текста.
- Если коэффициент выше сохраненного значения, то основной ключ заменяется на модифицированный вариант.
- Шаги 2-3 повторяются пока коэффициент не станет постоянным.
Для вычисления коэффициента используется еще одна характеристика естественного языка — частота встречаемости триграмм.
Чем ближе текст к английскому языку тем чаще в нем будут встречаться такие триграммы как THE, AND, ING. Суммируя частоты появления в естественном языке всех триграмм, встреченных в тексте получим коэффициент, который с большой долей вероятности определит текст, написанный на естественном языке.
Шифр Полибия
Еще один шифр подстановки. Ключом шифра является квадрат размером 5*5 (для английского языка), содержащий все буквы алфавита, кроме J.
При шифровании каждая буква исходного текста замещается парой символов, представляющих номер строки и номер столбца, в которых расположена замещаемая буква. Буква a будет замещена в шифртексте парой BB, буква b — парой EB и так далее. Так как ключ не содержит букву J, перед шифрованием в исходном тексте J следует заменить на I.
Например, зашифруем слово HABRAHABR. C(‘HABRAHABR’) = ‘AB BB EB DA BB AB BB EB DA’.
Криптоанализ шифра Полибия
Шифр имеет большое пространство ключей (25! = 283 для английского языка). Однако единственное отличие квадрата Полибия от предыдущего шифра заключается в том, что буква исходного текста замещается двумя символами.
Поэтому для атаки можно использовать методику, применяемую при взломе шифра простой замены — поиск восхождением к вершине.
В качестве основного ключа выбирается случайный квадрат размером 5*5. В ходе каждой итерации ключ подвергается незначительным изменениям и проверяется насколько распределение триграмм в тексте, полученном в результате расшифровки, соответствует распределению в естественном языке.
Перестановочный шифр
Помимо шифров подстановки, широкое распространение также получили перестановочные шифры. В качестве примера опишем Шифр вертикальной перестановки.
В процессе шифрования сообщение записывается в виде таблицы. Количество колонок таблицы определяется размером ключа. Например, зашифруем сообщение WE ARE DISCOVERED. FLEE AT ONCE с помощью ключа 632415.
Так как ключ содержит 6 цифр дополним сообщение до длины кратной 6 произвольно выбранными буквами QKJEU и запишем сообщение в таблицу, содержащую 6 колонок, слева направо:
Для получения шифртекста выпишем каждую колонку из таблицы в порядке, определяемом ключом: EVLNE ACDTK ESEAQ ROFOJ DEECU WIREE.
При расшифровке текст записывается в таблицу по колонкам сверху вниз в порядке, определяемом ключом.
Криптоанализ перестановочного шифра
Лучшим способом атаки шифра вертикальной перестановки будет полный перебор всех возможных ключей малой длины (до 9 включительно — около 400 000 вариантов). В случае, если перебор не дал желаемых результатов, можно воспользоваться поиском восхождением к вершине.
Для каждого возможного значения длины осуществляется поиск наиболее правдоподобного ключа. Для оценки правдоподобности лучше использовать частоту появления триграмм. В результате возвращается ключ, обеспечивающий наиболее близкий к естественному языку текст расшифрованного сообщения.
Шифр Плейфера
Шифр Плейфера — подстановочный шифр, реализующий замену биграмм. Для шифрования необходим ключ, представляющий собой таблицу букв размером 5*5 (без буквы J).
Процесс шифрования сводится к поиску биграммы в таблице и замене ее на пару букв, образующих с исходной биграммой прямоугольник.
Рассмотрим, в качестве примера следующую таблицу, образующую ключ шифра Плейфера:
Зашифруем пару ‘WN’. Буква W расположена в первой строке и первой колонке. А буква N находится во второй строке и третьей колонке. Эти буквы образуют прямоугольник с углами W-E-S-N. Следовательно, при шифровании биграмма WN преобразовывается в биграмму ES.
В случае, если буквы расположены в одной строке или колонке, результатом шифрования является биграмма расположенная на одну позицию правее/ниже. Например, биграмма NG преобразовывается в биграмму GP.
Криптоанализ шифра Плейфера
Так как ключ шифра Плейфера представляет собой таблицу, содержащую 25 букв английского алфавита, можно ошибочно предположить, что метод поиска восхождением к вершине — лучший способ взлома данного шифра. К сожалению, этот метод не будет работать. Достигнув определенного уровня соответствия текста, алгоритм застрянет в точке локального максимума и не сможет продолжить поиск.
Чтобы успешно взломать шифр Плейфера лучше воспользоваться алгоритмом имитации отжига.
Отличие алгоритма имитации отжига от поиска восхождением к вершине заключается в том, что последний на пути к правильному решению никогда не принимает в качестве возможного решения более слабые варианты. В то время как алгоритм имитации отжига периодически откатывается назад к менее вероятным решениям, что увеличивает шансы на конечный успех.
Суть алгоритма сводится к следующим действиям:
- Выбирается случайная последовательность букв — основной-ключ. Шифртекст расшифровывается с помощью основного ключа. Для получившегося текста вычисляется коэффициент, характеризующий вероятность принадлежности к естественному языку.
- Основной ключ подвергается небольшим изменениям (перестановка двух произвольно выбранных букв, перестановка столбцов или строк). Производится расшифровка и вычисляется коэффициент полученного текста.
- Если коэффициент выше сохраненного значения, то основной ключ заменяется на модифицированный вариант.
- В противном случае замена основного ключа на модифицированный происходит с вероятностью, напрямую зависящей от разницы коэффициентов основного и модифицированного ключей.
- Шаги 2-4 повторяются около 50 000 раз.
Алгоритм периодически замещает основной ключ, ключом с худшими характеристиками. При этом вероятность замены зависит от разницы характеристик, что не позволяет алгоритму принимать плохие варианты слишком часто.
Для расчета коэффициентов, определяющих принадлежность текста к естественному языку лучше всего использовать частоты появления триграмм.
Шифр Виженера
Шифр Виженера относится к группе полиалфавитных шифров подстановки. Это значит, что в зависимости от ключа одна и та же буква открытого текста может быть зашифрована в разные символы. Такая техника шифрования скрывает все частотные характеристики текста и затрудняет криптоанализ.
Шифр Виженера представляет собой последовательность нескольких шифров Цезаря с различными ключами.
Продемонстрируем, в качестве примера, шифрование слова HABRAHABR с помощью ключа 123. Запишем ключ под исходным текстом, повторив его требуемое количество раз:
Цифры ключа определяют на сколько позиций необходимо сдвинуть букву в алфавите для получения шифртекста. Букву H необходимо сместить на одну позицию — в результате получается буква I, букву A на 2 позиции — буква C, и так далее. Осуществив все подстановки, получим в результате шифртекст: ICESCKBDU.
Криптоанализ шифра Виженера
Первая задача, стоящая при криптоанализе шифра Виженера заключается в нахождении длины, использованного при шифровании, ключа.
Для этого можно воспользоваться индексом совпадений.
Индекс совпадений — число, характеризующее вероятность того, что две произвольно выбранные из текста буквы окажутся одинаковы.
Для любого текста индекс совпадений вычисляется по формуле:
,
где fi — количество появлений i-й буквы алфавита в тексте, а n — количество букв в тексте.
Для английского языка индекс совпадений имеет значение 0.0667, в то время как для случайного набора букв этот показатель равен 0.038.
Более того, для текста зашифрованного с помощью одноалфавитной подстановки, индекс совпадений также равен 0.0667. Это объясняется тем, что количество различных букв в тексте остается неизменным.
Это свойство используется для нахождения длины ключа шифра Виженера. Из шифртекста по очереди выбираются каждая вторая буквы и для полученного текста считается индекс совпадений. Если результат примерно соответствует индексу совпадений естественного языка, значит длина ключа равна двум. В противном случае из шифртекста выбирается каждая третья буква и опять считается индекс совпадений. Процесс повторяется пока высокое значение индекса совпадений не укажет на длину ключа.
Успешность метода объясняется тем, что если длина ключа угадана верно, то выбранные буквы образуют шифртекст, зашифрованный простым шифром Цезаря. И индекс совпадений должен быть приблизительно соответствовать индексу совпадений естественного языка.
После того как длина ключа будет найдена взлом сводится к вскрытию нескольких шифров Цезаря. Для этого можно использовать способ, описанный в первом разделе данного топика.
P.S.
Исходники всех вышеописанных шифров и атак на них можно посмотреть на GitHub.
Ссылки
1. Криптоанализ классических шифров на сайте practicalcryptography.com.
2. Частотные характеристики английского языка на сайте practicalcryptography.com
3. Описание алгоритма имитации отжига на wikipedia
4. Описание поиска восхождением к вершине на wikipedia
Элементарные шифры на понятном языке / Хабр
Привет, Хабр!Все мы довольно часто слышим такие слова и словосочетания, как «шифрование данных», «секретные шифры», «криптозащита», «шифрование», но далеко не все понимают, о чем конкретно идет речь. В этом посте разберемся, что из себя представляет шифрование и рассмотрим элементарные шифры с тем расчетом, чтобы даже далекие от IT люди поняли суть этого явления.
Прежде всего, разберемся в терминологии.
Шифрование – это такое преобразование исходного сообщения, которое не позволит всяким нехорошим людям прочитать данные, если они это сообщение перехватят. Делается это преобразование по специальным математическим и логическим алгоритмам, некоторые из которых мы рассмотрим ниже.
Исходное сообщение – это, собственно, то, что мы хотим зашифровать. Классический пример — текст.
Шифрованное сообщение – это сообщение, прошедшее процесс шифрования.
Шифр — это сам алгоритм, по которому мы преобразовываем сообщение.
Ключ — это компонент, на основе которого можно произвести шифрование или дешифрование.
Алфавит – это перечень всех возможных символов в исходном и зашифрованном сообщении. Включая цифры, знаки препинания, пробелы, отдельно строчные и заглавные буквы и т.д.
Теперь, когда мы говорим на более-менее одном языке, разберем простые шифры.
Самый-самый простой шифр. Его суть – переворот алфавита с ног на голову.
Например, есть у нас алфавит, который полностью соответствует обычной латинице.
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Для реализации шифра Атбаша просто инвертируем его. «А» станет «Z», «B» превратится в «Y» и наоборот. На выходе получим такую картину:
И теперь пишем нужное сообшение на исходном алфавите и алфавите шифра
Исходное сообщение: I love habr
Зашифрованное: r olev szyi
Тут добавляется еще один параметр — примитивный ключ в виде числа от 1 до 25 (для латиницы). На практике, ключ будет от 4 до 10.
Опять же, для наглядности, возьмем латиницу
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И теперь сместим вправо или влево каждую букву на ключевое число значений.
Например, ключ у нас будет 4 и смещение вправо.
Исходный алфавит: 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
Зашифрованный: w x y z a b c d e f g h i j k l m n o p q r s t u v
Пробуем написать сообщение:
hello worldШифруем его и получаем следующий несвязный текст:
dahhk sknhzШифр Вернама (XOR-шифр)
Простейший шифр на основе бинарной логики, который обладает абсолютной криптографической стойкостью. Без знания ключа, расшифровать его невозможно (доказано Клодом Шенноном).
Исходный алфавит — все та же латиница.
Сообщение разбиваем на отдельные символы и каждый символ представляем в бинарном виде.
Классики криптографии предлагают пятизначный код бодо для каждой буквы. Мы же попробуем изменить этот шифр для кодирования в 8 бит/символ на примере ASCII-таблицы. Каждую букву представим в виде бинарного кода.
Теперь вспомним курс электроники и элемент «Исключающее ИЛИ», также известный как XOR.
XOR принимает сигналы (0 или 1 каждый), проводит над ними логическую операцию и выдает один сигнал, исходя из входных значений.
Если все сигналы равны между собой (0-0 или 1-1 или 0-0-0 и т.д.), то на выходе получаем 0.
Если сигналы не равны (0-1 или 1-0 или 1-0-0 и т.д.), то на выходе получаем 1.
Теперь для шифровки сообщения, введем сам текст для шифровки и ключ такой же длины. Переведем каждую букву в ее бинарный код и выполним формулу сообщение XOR ключ
Например:
сообщение: LONDON
ключ: SYSTEM
Переведем их в бинарный код и выполним XOR:
01001100 01001111 01001110 01000100 01001111 01001110
01010011 01011001 01010011 01010100 01000101 01001101
_______________________________________________________
00011111 00010110 00011101 00010000 00001010 00000011В данном конкретном примере на месте результирующих символов мы увидим только пустое место, ведь все символы попали в первые 32 служебных символа. Однако, если перевести полученный результат в числа, то получим следующую картину:
31 22 29 16 10 3. С виду — совершенно несвязный набор чисел, но мы-то знаем.
Шифр кодового слова
Принцип шифрования примерно такой же, как у шифра цезаря. Только в этом случае мы сдвигаем алфавит не на определенное число позиций, а на кодовое слово.
Например, возьмем для разнообразия, кириллический алфавит.
абвгдеёжзийклмнопрстуфхцчшщъыьэюяПридумаем кодовое слово. Например, «Лукоморье». Выдернем из него все повторяющиеся символы. На выходе получаем слово «Лукомрье».
Теперь вписываем данное слово в начале алфавита, а остальные символы оставляем без изменений.
абвгдеёжзийклмнопрстуфхцчшщъыьэюя
лукомрьеабвгдёжзийнпстфхцчшщъыэюя
И теперь запишем любое сообщение и зашифруем его.
"Златая цепь на дубе том"Получим в итоге следующий нечитаемый бред:
"Адлпля хриы жл мсур пиё"Шифр Плейфера
Классический шифр Плейфера предполагает в основе матрицу 5х5, заполненную символами латинского алфавита (i и j пишутся в одну клетку), кодовое слово и дальнейшую манипуляцию над ними.
Пусть кодовое слово у нас будет «HELLO».
Сначала поступаем как с предыдущим шифром, т.е. уберем повторы и запишем слово в начале алфавита.
Теперь возьмем любое сообщение. Например, «I LOVE HABR AND GITHUB».
Разобьем его на биграммы, т.е. на пары символов, не учитывая пробелы.
IL OV EH AB RA ND GI TH UB.Если бы сообщение было из нечетного количества символов, или в биграмме были бы два одинаковых символа (LL, например), то на место недостающего или повторившегося символа ставится символ X.
Шифрование выполняется по нескольким несложным правилам:
1) Если символы биграммы находятся в матрице на одной строке — смещаем их вправо на одну позицию. Если символ был крайним в ряду — он становится первым.
Например, EH становится LE.
2) Если символы биграммы находятся в одном столбце, то они смещаются на одну позицию вниз. Если символ находился в самом низу столбца, то он принимает значение самого верхнего.
Например, если бы у нас была биграмма LX, то она стала бы DL.
3) Если символы не находятся ни на одной строке, ни на одном столбце, то строим прямоугольник, где наши символы — края диагонали. И меняем углы местами.
Например, биграмма RA.
По этим правилам, шифруем все сообщение.
IL OV EH AB RA ND GI TH UB.
KO HY LE HG EU MF BP QO QGЕсли убрать пробелы, то получим следующее зашифрованное сообщение:
KOHYLEHGEUMFBPQOQGПоздравляю. После прочтения этой статьи вы хотя бы примерно понимаете, что такое шифрование и знаете как использовать некоторые примитивные шифры и можете приступать к изучению несколько более сложных образцов шифров, о которых мы поговорим позднее.
Спасибо за внимание.
Взламываем шифры: криптография за 60 минут
Криптография для новичков, где все разжевано и разложено по полочкам. Вы познакомитесь с шифрами, их особенностями и криптоанализом – атакой на шифротекст.
Это, если хотите, школьная программа криптографии, первый класс. Шифр Цезаря научились вскрывать еще в IX веке, поэтому сегодня он почти бесполезен, но как база – урок просто отличный. Начинается терминологией и подробным объяснением того, что из себя представляет и как работает ключ. Далее затрагивается шифр Цезаря, принципы его работы, а также способ быстрой дешифровки.
https://www.youtube.com/watch?v=gF_YRW9-eLY
Этот урок тоже начинается короткой терминологией и объяснением разницы между закрытым текстом и шифром. Автор всегда ссылается на достоверные источники. Курс плавно перетекает в возможность шифровать цифрами и подробным описанием того, как это делается.
https://www.youtube.com/watch?v=bDHYdwqpmuM
Если вы посмотрели оба урока, считайте, что основы криптографии вы уже поняли.
А вот здесь начинается интересное. Автор не зацикливается только на шифровании, но и объясняет тонкости атак на подобные тексты. Он приводит много примеров, что хорошо сказывается на понимании. Затрагиваются преимущество перевода шифротекста в числа и умение анализировать полученную «картинку». Это полезно, если вы планируете разрабатывать приложения, рассчитанные на вскрытие шифротекста, ведь чтобы передать логическое решение будущей программе, сперва нужно самостоятельно к этому решению прийти.
https://www.youtube.com/watch?v=PgqL_GTqtwA
Примеры уроков хорошо визуализированы, демонстрируется поэтапное выполнение, поэтому проблем с пониманием быть не должно.
Еще один способ анализа с применением диаграммы частоты по алфавиту. Перечисляются слабые и сильные стороны частотного анализа, рассказывается, в каких случаях он будет по-настоящему мощным инструментом, а в каких – бесполезным. Снова приводятся визуализированные примеры с применением метода, так что под конец урока вы обязательно поймете принцип работы частотного анализа.
https://www.youtube.com/watch?v=5bM93uVmehw
До этого затрагивались только моноалфавитные шифры и соответствующие типы замены. А вот пятый урок открывает новый раздел в криптографии под названием «Полиалфавитные шифры». Введение ознаменовано набором терминов и примеров, которые помогают разобраться во «множественном» шифровании. Затрагивается и шифр Гронсфельда, который также применяет ключ, как и шифр Цезаря, но делает это иначе. Полиалфавитные шифры намного эффективнее, ведь такой текст сложнее вскрыть. Почему? Смотрите в видеоуроке.
https://www.youtube.com/watch?v=S8Coc22uNdg
Здесь расписывается самый популярный полиалфавитные шифр – шифр Виженера. Разобравшись с ним, можете считать, что криптография вам далась, и можно смело переходить к реализации знаний в своих приложениях.
Да, этот шифр по сей день терзает умы многих криптоаналитиков, ведь здесь используется далеко не простой ключ и такой же нелегкий способ подбора символов. Конкретно этот урок не научит вскрывать подобный шифротекст, но хорошо объяснит суть.
https://www.youtube.com/watch?v=oPTWao7j4Uk
Даже шифр Виженера не так «зубаст», как может показаться. Существует метод индекса совпадений, который работает не с самим зашифрованным словом, а именно с ключом, и от этого уже плавно двигается в сторону разгадки. Здесь уже применяются сложные формулы и вычисления, поэтому рекомендуем внимательно следить за решением задачи.
https://www.youtube.com/watch?v=xWA2FJ74TBg
Автокорреляционный метод более простой, но точно так же напичканный формулами, в которые придется вникнуть. В этом уроке объясняется лишь альтернативный поиск длины ключа, а все остальное, что касается вскрытия, – как и в предыдущем уроке.
https://www.youtube.com/watch?v=cl3G-4Gyf2A
Ссылка на канал.
Cipher Identifier (онлайн-инструмент) | Boxentriq
Застряли с шифром или криптограммой? Этот инструмент поможет вам определить тип шифра, а также даст вам информация о возможных полезных инструментах для ее решения.
Этот инструмент использует технологию искусственного интеллекта / машинного обучения для распознавания более 25 распространенных типов и кодировок шифров, включая: Caesar Cipher, Vigenère Cipher (включая вариант autokey), Beaufort Cipher (включая вариант autokey), Playfair Cipher, Двухквадратный / двойной шифр Playfair, столбчатый шифр транспонирования, двунаправленный шифр, четырехквадратный шифр, шифр Атбаш и многое другое!
Вы должны ввести сообщение.
Удалить пробелы Только буквы Обеспечить регресс ВЕРХНИЙ ниже 5 групп Отменить
Анализировать текст Копировать Вставить Параметры текста …
Примечание. Для получения точных результатов ваш зашифрованный текст должен содержать не менее 25 символов.
Результаты анализа
Вероятно, ваш зашифрованный текст имеет следующий тип:
Примечание. Длина зашифрованного текста не превышает 25 символов. Результаты менее надежны.
Для дальнейшего анализа текста и статистики щелкните здесь.
Цезарь Шифр
Шифр Цезаря, также известный как шифр сдвига, является одним из старейших и самых известных шифров в истории.Несмотря на то, что он обманчиво прост, он исторически использовался для получения важных секретов и до сих пор популярен среди головоломок. В шифре Цезаря каждая буква сдвигается на фиксированное количество шагов в алфавите.
Моноалфавитный шифр замещения
Моноалфавитный шифр замещения — один из самых популярных шифров среди создателей головоломок. Каждая буква заменяется другой буквой в алфавите.Если он содержит границы слов (пробелы и знаки препинания), он называется аристократом. Более сложный вариант, без границ слов, называется Патристократ.
Шифр Атбаша
Atbash Cipher — это действительно простой шифр подстановки, который иногда называют зеркальным кодом. Считается, что это первый использованный шифр. Чтобы использовать Atbash, вы просто меняете алфавит, так что A становится Z, B становится Y и так далее.
Шифр Виженера
Шифр Виженера был изобретен в середине 16 века и с тех пор пользуется популярностью в сообществе криптографии и взломщика кодов. Несмотря на то, что он был назван шифром Виженера в честь Блеза де Виженера, на самом деле он был разработан Джован Баттиста Беллазо. Шифр Виженера является усовершенствованием шифра Цезаря, в котором используется последовательность сдвигов вместо применения одного и того же сдвига к каждой букве.
Вариант шифра Виженера, в котором для описания последовательности сдвигов используются числа вместо букв, называется шифром Гронсфельда. Шифры Гронсфельда также могут быть решены с помощью инструмента Виженера.
Vigenère Autokey Cipher
Автоключ Виженера — более безопасный вариант обычного шифра Виженера.Он шифрует первые буквы так же, как и обычный шифр Виженера, но после того, как все буквы в ключе были использованы, последовательность не повторяется. Вместо этого он начинает использовать буквы из открытого текста в качестве ключа.
Шифр Бофорта
Шифр Бофорта назван в честь сэра Фрэнсиса Бофорта. Он похож на шифр Виженера, но использует другую «tabula recta». Письмо в виде открытого текста вычитаются из ключевой буквы, а не прибавляются.Шифр Бофорта является взаимным (алгоритмы шифрования и дешифрования одинаковы).
Шифр Autokey по Бофорту
Этот шифр похож на шифр Виженера с автоключом, хотя он вычитает буквы, а не добавляет их. Шифр автоключа Бофорта не взаимный.
Шифр Playfair
Шифр Playfair был изобретен в 1854 году Чарльзом Уитстоном, но назван в честь лорда Playfair, который активно продвигал использование шифра.Это шифр полиграфической подстановки, который шифрует пару букв вместо отдельных букв.
Шифр транспонирования столбцов
В шифре с транспонированием по столбцам сообщение записывается в сетку из строк одинаковой длины, а затем считывается столбец за столбцом. Столбцы выбираются в скремблированном порядке, определяемом ключом шифрования.
Шифр Railfence
Шифр ограждения представляет собой простую форму транспозиционного шифра, в котором текст написан зигзагообразно.Затем он зачитывается строка за строкой сверху.
Неизвестный шифр транспозиции
Существует множество различных вариантов шифра транспозиции, где текст написан по определенному шаблону. Многие можно решить вручную бумагой и ручкой. Одним из наиболее сложных вариантов является шифр двойной транспозиции, который эквивалентен применению двух столбчатых транспозиционные шифры.
Бифид-шифр
Шифр Bifid был изобретен французским криптографом-любителем Феликсом Деластелем около 1901 года и считается важным изобретение в криптологии.Он использует комбинацию квадрата Полибия и транспонирования дробных букв для шифрования Сообщения.
Двухквадратный горизонтальный шифр
Шифр с двумя квадратами также называется «двойной Playfair». Он сильнее обычного шифра Playfair, но все же проще использовать, чем четырехквадратный шифр. В зависимости от ориентации квадратов, горизонтальной или вертикальной, шифр ведет себя немного иначе.
Вертикальный двухквадратный шифр
Шифр с двумя квадратами также называется «двойной Playfair». Он сильнее обычного шифра Playfair, но все же проще использовать, чем четырехквадратный шифр. В зависимости от ориентации квадратов, горизонтальной или вертикальной, шифр ведет себя немного иначе.
Четырехквадратный шифр
Шифр с четырьмя квадратами был изобретен французским криптографом-любителем Феликсом Деластелем.Это шифр орграфа, где каждый пара букв в зашифрованном тексте зависит от пары букв в открытом тексте. Он использует четыре квадрата 5×5 для перевода каждый орграф.
Base64
Base64 — еще один фаворит среди создателей головоломок. В основном его можно использовать для кодирования чего угодно в печатные символы ASCII. Не редко будет содержимое требует дальнейшего декодирования.
Base64 легко распознать.Он состоит из букв (примерно 50% прописных и 50% строчных), а также цифр и часто равные символы (=) в конце.
Код Морзе
Код Морзе — это высоконадежный метод связи, который можно передавать разными способами даже в сложных и шумных условиях. Тот делает его особенно полезным для головоломок, где иногда не совсем очевидно, что код является азбукой Морзе.
Код Морзе можно распознать по типичной схеме: небольшие группы коротких и длинных сигналов. Эти сигналы могут быть реальными тонами или другие средства, такие как линии, цвета, буквы или символы.
Шестнадцатеричные коды
Шестнадцатеричные коды могут представлять ASCII, UTF-8 или более сложные схемы кодирования. Они также могут представлять выходные данные хеш-функций. или современные криптоалгоритмы, такие как RSA, AES и т. д.
В шестнадцатеричных кодах используются только цифры 0–9 и буквы A – F.
Двоичные коды
Двоичные коды могут представлять ASCII, UTF-8 или более сложные схемы кодирования. Они также могут представлять выходные данные хеш-функций. или современные криптоалгоритмы, такие как RSA, AES и т. д.
В двоичных кодах используются только цифры 0–1.
Восьмеричные коды
Восьмеричные коды могут представлять A1Z26, ASCII или более сложные схемы кодирования.Они также могут представлять выходные данные хеш-функций. или современные криптоалгоритмы, такие как RSA, AES и т. д., даже если они обычно представлены в шестнадцатеричном или двоичном формате.
В восьмеричных кодах используются только цифры 0-7.
Десятичные коды
Десятичные коды могут представлять A1Z26, ASCII или более сложные схемы кодирования. Они также могут представлять выходные данные хеш-функций. или современные криптоалгоритмы, такие как RSA, AES и т. д., даже если они обычно представлены в шестнадцатеричном или двоичном формате.
В десятичных кодах используются только цифры 0–9.
Шифр ADFGX и ADFGVX
Шифр ADFGVX использовался немецкой армией во время Первой мировой войны. Он был изобретен лейтенантом Фрицем Небелем и является дробным. шифр транспозиции, который сочетает в себе квадрат Полибия с столбчатым транспонированием. Название происходит от шести возможных букв: A, D, F, G, V и X. Это было усовершенствование более раннего шифра ADFGX.
Обычный текст
Секретные сообщения могут быть скрыты в открытом тексте или в чем-то похожем на открытый текст с использованием методов стеганографии. Несколько из наиболее распространенными методами стеганиграфии являются так называемый нулевой шифр и шифр Бекона. Другие возможности заключаются в том, что текст загадка или с помощью анаграмм.
Другие шифры
Чтобы узнать больше о вашем шифре, рекомендуются следующие инструменты:
Неизвестный формат
- Если ваш шифр состоит из строк и точек, это может быть шифр Pigpen.
- Если в вашем шифре есть руны, вы можете перевести их здесь.
- Если ваш шифр содержит жестко записанные символы людей в различных положениях, это может быть шифр танцующих мужчин.
- Если ваш шифр имеет комбинации цветов, это может быть шестнадцатеричный код.
| Аффинное | Похож на кесарево сечение, но также добавляет множитель для дальнейшего шифрования букв. |
| Атбаш | Очень упрощенный шифр, в котором вы меняете A на Z, B на Y и так далее. |
| Бэконский | Используется для скрытия сообщения в другом сообщении с использованием других шрифтов или других отличительных характеристик. |
| Base64 | Обычно это используется, чтобы сделать двоичные данные безопасными для передачи строго в виде текста. |
| Бифид | Разбивает информацию для каждой буквы и раскладывает ее в закодированном сообщении. Простой и достаточно надежный карандаш и бумажный шифр. |
| Кесарево смещение | Если ROT13 был основан на добавлении 13 к буквам, шифр Цезаря позволяет добавлять произвольное значение. Опять же, вы можете сделать это с помощью решателя криптограмм, но вы можете довольно легко прокручивать значения N с помощью этого инструмента. |
| Цезарь с ключом | Подобно шифру Цезаря, но вы сначала изменяете закодированный алфавит словом или фразой. |
| Перенос столбцов | Напишите сообщение в виде длинного столбца, а затем поменяйте столбцы местами.Прочтите сообщение по столбцам. Простой шифр, но тот, что изображен на скульптуре Криптоса в штаб-квартире ЦРУ. |
| Двойное транспонирование | Потому что два лучше, чем один. Используется армией США во время Второй мировой войны. |
| Решатель криптограмм | Это поможет вам разгадывать простые шифры; методы, при которых вы заменяете букву X буквой Y. |
| Gronsfeld | То же самое, что и шифр Виженера, но вместо ключевого слова в нем используются числа. |
| Код Морзе | Однажды использовавшаяся для передачи сообщений по всему миру, эта система все еще может использоваться в определенных ситуациях для эффективной отправки сообщений, когда альтернативные носители недоступны. |
| Буквенные номера | Замените каждую букву номером ее позиции в алфавите. Простой метод замены, который обычно первым учат детей, и который по-прежнему является эффективным способом скрыть ваше сообщение. |
| Одноразовая прокладка | Практически не поддающийся взлому шифр, который в значительной степени полагается на случайный источник ключа шифрования. |
| Playfair | Этот шифр использует пары букв и сетку 5×5 для кодирования сообщения. Это довольно хорошо для кода стиля карандаша и бумаги. |
| Ограждение | Слегка сложный, где вы выравниваете буквы в разных строках, а затем сжимаете буквы вместе, чтобы создать свой зашифрованный текст. |
| ROT13 | Популярный метод сокрытия текста, чтобы его могли прочитать только люди, которые потратили время на его расшифровку. Вы меняете буквы местами; A становится N, а N становится A. Это было довольно популярно в системах досок объявлений и в группах новостей Usenet. Вы также можете сделать это с помощью решателя криптограмм, если вы сделаете A = N, B = O, C = P и т. Д. |
| Повернуть | Это действует так, как будто вы пишете буквы в прямоугольной сетке, а затем поворачиваете сетку влево или вправо на 90 °. |
| Пропустить | Чтобы расшифровать это, вы считаете N символов, записываете букву, отсчитываете N символов вперед, записываете букву и т. Д. Это используется для раздела 3 Kryptos. |
| Замена | Замените ваши простые текстовые буквы другими буквами, изображениями или кодами. Включает в себя два распространенных шифра «свиной свинью» и шифр Шерлока Холмса «Танцующие человечки». |
| Убчи | Шифр транспонирования с двойным столбцом, который использует тот же ключ, но добавляет несколько символов заполнения.Используется немцами в Первой мировой войне. |
| Виженере | Специальный шифр, в некоторой степени основанный на кесаревом сечении, но вы меняете значение N с каждой буквой, и все это основано на парольной фразе. Довольно надежный шифр для новичков, который легко можно сделать на бумаге. |
| Keyed Vigenere | Этот модифицированный шифр использует неправильный алфавит. Используются два ключа. Один создает алфавит, второй — кодовую фразу кодирования.Это было создано, чтобы помочь расшифровать скульптуру Криптоса. |
| Vigenere Autokey | Вместо того, чтобы повторять пароль, используемый для шифрования текста, он использует пароль один раз, а затем открытый текст. Взломать его сложнее, чем если бы вы просто использовали пароль для шифрования своего сообщения. |
Шифрование и дешифрование документов
Открытый и закрытый ключ имеют определенную роль, когда шифрование и дешифрование документов.Открытый ключ можно рассматривать как открытый сейф. Когда корреспондент шифрует документ с помощью общедоступной ключ, этот документ помещается в сейф, сейф закрывается и Кодовый замок крутился несколько раз. Соответствующий закрытый ключ — это комбинация, которая может снова откройте сейф и заберите документ. Другими словами, только лицо, владеющее закрытым ключом может восстановить документ, зашифрованный с помощью связанного открытого ключа.
Процедура шифрования и дешифрования документов просто с этой ментальной моделью.Если вы хотите зашифровать сообщение Алисе, вы зашифруете его. используя открытый ключ Алисы, и она расшифровывает его своим закрытым ключом. Если Алиса хочет отправить вам сообщение, она шифрует его, используя ваш открытый ключ, и вы расшифровываете его своим ключом.
Для шифрования документа опция —encrypt используется. У вас должны быть открытые ключи предполагаемых получателей. Программное обеспечение ожидает, что имя документа будет зашифровано на входе или, если опущено при стандартном вводе. Зашифрованный результат помещается на стандартный вывод или как указано с помощью опция —output.Документ сжат для дополнительной безопасности в дополнение к шифрование.
alice% gpg --output doc.gpg --encrypt --recipient [email protected] doc |
Для расшифровки сообщения опция —decrypt используется. Вам нужен закрытый ключ, которым было зашифровано сообщение. Как и в процессе шифрования, документ для дешифрования ввод, и расшифрованный результат выводится.
blake% gpg --output doc --decrypt doc.gpg Вам понадобится кодовая фраза, чтобы разблокировать секретный ключ для пользователь: "Блейк (Палач) |
Документы также можно зашифровать без использования криптографии с открытым ключом. Вместо этого для шифрования документа используется только симметричный шифр. Ключ, используемый для управления симметричным шифром, является производным от парольной фразы. поставляется, когда документ зашифрован, и в целях безопасности он не должна быть той же парольной фразой, которую вы используете для защиты своего закрытого ключа. Симметричное шифрование полезно для защиты документов, когда пароль не нужно сообщать другим.Документ можно зашифровать симметричным шифром с помощью — симметричный вариант.
alice% gpg --output doc.gpg --symmetric doc Введите кодовую фразу: |
Учебное пособие по криптографии: Криптоанализ, RC4, CrypTool
- Home
Testing
- Back
- Agile Testing
- База данных Agile Testing
- Bugumber Jmeter
- JIRA
- Назад
- JUnit
- LoadRunner
- Ручное тестирование
- Мобильное тестирование
- Mantis
- Почтальон
- QTP 9013
- Центр качества SAP
- QTP
- SAP
- Тестирование
- Selenium
- SoapUI
- Управление тестированием
- TestLink
SAP
9 0458- Назад
- ABAP
- APO
- Начинающий
- Basis
- BODS
- BI
- BPC
- CO
- CRAN
- 9013 9013
- CRAN
- 9013
- MM
- QM
- Заработная плата
- Назад
- PI / PO
- PP
- SD
- SAPUI5
- Безопасность
- Менеджер решений
- SAP Tutor
- Назад
- Apache
- AngularJS
- ASP.Нетто
- C
- C #
- C ++
- CodeIgniter
- СУБД
- JavaScript
- Назад
- Java
- JSP
- Kotlin
- Linux
- Linux
- Kotlin
- MS SQL
- Мария Linux. js
- Perl
- Назад
- PHP
- PL / SQL
- PostgreSQL
- Python
- ReactJS
- Ruby & Rails
- Scala Назад
- SQL Server
- SQL SQL Server
- UML
- VB.Net
- VBScript
- Веб-службы
- WPF
Обязательно изучите!
- Назад
- Бухгалтерский учет
- Алгоритмы
- Android
- Блокчейн
- Бизнес-аналитик
- Создание веб-сайта
- Облачные вычисления
- COBOL
Шифрование и дешифрование в Python
В этом посте я обсуждаю, как зашифровать и расшифровать сообщения в Python с использованием симметричного шифрования.Я продемонстрирую, как создавать ключи, сохранять ключи и как шифровать сообщения и текст.
Используя модуль криптографии в Python, мы будем использовать реализацию AES под названием Fernet для шифрования данных. Я также покажу вам, как хранить ключи в безопасности и как использовать эти методы для файлов.
Установка криптографии
Поскольку в Python нет ничего, что могло бы шифровать файлы, нам нужно будет использовать сторонний модуль.
PyCrypto довольно популярен, но, поскольку он не предлагает встроенных колес, если у вас не установлены инструменты сборки Microsoft Visual C ++, вам будет предложено установить его.Вместо того, чтобы устанавливать дополнительные инструменты только для этого, я буду использовать модуль криптографии. Чтобы установить это, выполните:
python -m pip установить криптографию
Чтобы убедиться, что он установлен правильно, откройте IDLE и выполните:
Если ошибок не было, значит, он установлен правильно.
Что такое симметричное шифрование?
Симметричное шифрование — это когда для шифрования и дешифрования сообщения используется ключ, поэтому любой, кто его зашифровал, может его расшифровать.Единственный способ расшифровать сообщение — узнать, что было использовано для его шифрования; вроде как пароль.
Чтобы использовать симметричное шифрование, мы будем использовать класс Fernet, который является реализацией AES
.Ищете руководство по асимметричному шифрованию? Я написал один из них и для Python.
Получение ключа
Есть два основных способа получить ключ: мы можем либо сгенерировать новый, либо использовать тот, который был сгенерирован ранее. Эти ключи должны быть в определенном формате, поэтому убедитесь, что это правильно.
Чтобы сгенерировать новый случайный ключ, мы можем просто использовать
из cryptography.fernet import Fernet
ключ = Fernet.generate_key ()
Переменная key теперь будет иметь значение ключа в кодировке base64, безопасного для URL. При использовании этих ключей для шифрования убедитесь, что они в безопасности, если вы потеряете их, вы не сможете расшифровать свое сообщение.
Этот ключ будет иметь тип байтов, поэтому, если вам нужна строка, вы можете вызвать key.decode () для преобразования из UTF-8 в строковый тип Pythons.
Хранение ключей
Один из способов сохранить ключи в безопасности — это хранить их в файле. Для этого мы можем просто создать / перезаписать файл и поместить в него ключ.
file = open ('key.key', 'wb') # Открыть файл как wb для записи байтов
file.write (key) # Ключ все еще тип байтов
file.close ()
Обязательно храните эти файлы и не передавайте их никому, кому вы не доверяете. Любой, у кого есть эти ключи, может расшифровать все прошлые сообщения, зашифрованные этим ключом.
Ключи для чтения
Если вы ранее сохранили свой ключ, используя метод, который я показал, вы можете прочитать ключ обратно, используя следующий код.
file = open ('key.key', 'rb') # Открыть файл как wb для чтения байтов
key = file.read () # Ключ будет типа байтов
file.close ()
Теперь ключ будет считан в переменную ключ и будет иметь тип байтов.
Создание ключа из пароля
Если вы хотите использовать в качестве ключа строку, которую может ввести пользователь, или какую-либо другую форму ввода, вы можете создать k
Как зашифровать / расшифровать файлы с помощью GPG — Linux Hint
В наши дни недостаточно установить надежный пароль на экране блокировки Windows или Linux, потому что эти меры безопасности можно легко обойти с помощью некоторых инструментов или загрузочных дисков восстановления.Поэтому важно обеспечить безопасность важных файлов с помощью шифрования. Существует множество стандартов и инструментов симметричного и асимметричного шифрования, позволяющих защитить паролем ваши важные документы и файлы.GPG (Gnu Privacy Guard) — это реализация асимметричного протокола шифрования Open PGP (Pretty Good Privacy) с открытым исходным кодом. Он генерирует пару ключей из открытого и закрытого ключей для шифрования и дешифрования ваших файлов. Открытые ключи обычно используются для шифрования файла и не могут быть расшифрованы.С другой стороны, закрытые ключи могут расшифровывать только зашифрованные файлы. Закрытые ключи также зашифрованы симметричным шифрованием для обеспечения их безопасности.
Использование
Если вы являетесь пользователем Kali или Parrot Security OS, то, скорее всего, будет предварительно установлен «gpg». Если вы используете какой-либо другой дистрибутив, вы можете установить его, набрав
пользователь @ пользователь: ~ $ sudo apt-get update && sudo apt-get upgrade -y
пользователь @ пользователь: ~ $ sudo apt-get install gpg -y
Теперь сгенерируйте пару ключей
пользователь @ пользователь: ~ $ sudo su
root @ пользователь: ~ $ gpg —full-gen-key
Вам будет предложено выбрать тип ключа, вы можете выбрать все, что хотите.Затем он попросит вас ввести размер, чем длиннее вы вводите, тем больше времени потребуется на создание ключей, но тогда сгенерированные ключи будут более безопасными, чем другие. Вы также можете установить срок действия ключей и их описание в комментариях.
После этих запросов он попросит вас ввести кодовую фразу. Эта кодовая фраза будет использоваться для шифрования ваших закрытых ключей с использованием симметричного шифрования, поэтому даже если ваши закрытые ключи украдены, никто не сможет использовать их для расшифровки ваших файлов.
Вам будет предложено повторно ввести парольную фразу, а затем после нажатия клавиши ввода потребуется некоторое время для создания пары ключей.
Шифрование
Теперь пара открытого и закрытого ключей создана, и вы можете использовать ее для шифрования и дешифрования файлов. Мы создадим тестовый файл для шифрования и дешифрования с помощью gpg.
root @ user: ~ # mkdir gpg
root @ user: ~ / gpg # cd gpg /
root @ user: ~ / gpg # nano secret.txt
Теперь введите что-нибудь в текстовый файл
root @ пользователь: ~ / gpg # cat secret.txt
Теперь зашифруйте файл secret.txt, указав адрес электронной почты пользователя в сгенерированной паре ключей.Введите следующее, в моем примере
root @ user: ~ / gpg # gpg -r [email protected] -e secret.txt
root @ user: ~ / gpg # ls -la
В папке будет создан зашифрованный файл с расширением «.gpg». Этот файл зашифрован и защищен вашим открытым ключом вашей пары ключей. Теперь этот файл можно расшифровать только с помощью вашего закрытого ключа.
root @ пользователь: ~ / gpg # ls -la
root @ user: ~ / gpg # cat secret.txt.gpg
Как видите, этот зашифрованный файл представляет собой совершенно новую измененную версию исходного файла, которую невозможно восстановить без помощи закрытого ключа.
Расшифровка
Теперь удалите исходный файл secret.txt, а затем расшифруйте файл gpg с помощью закрытого ключа
root @ user: ~ / gpg # rm secret.txt
root @ user: ~ / gpg # gpg -d secret.