Математика — Попаданцев.нет http://popadancev.net.s3-website-us-east-1.amazonaws.com база данных в помощь начинающему попаданцу Mon, 29 Aug 2016 16:38:28 +0000 ru-RU hourly 1 https://wordpress.org/?v=6.0.3 Rasterschlüssel 44 http://popadancev.net.s3-website-us-east-1.amazonaws.com/rasterschlussel-44/ http://popadancev.net.s3-website-us-east-1.amazonaws.com/rasterschlussel-44/#comments Fri, 19 Aug 2016 22:46:37 +0000 http://popadancev.net.s3-website-us-east-1.amazonaws.com/?p=6208 Одноразовый шифроблокнот, будучи идеальным шифром, который никто и никогда не сможет взломать — это очень хорошо, но весьма трудоемко и в докомпьютерную эпоху крайне избыточно. Однако чем его заменить?

Напомню, что если вам в голову пришла идея придумать свой шифр и вы не являетесь профессиональным криптографом, то это плохая идея. Вашу гениальную шифровку с [...]]]> Одноразовый шифроблокнот, будучи идеальным шифром, который никто и никогда не сможет взломать — это очень хорошо, но весьма трудоемко и в докомпьютерную эпоху крайне избыточно. Однако чем его заменить?

Напомню, что если вам в голову пришла идея придумать свой шифр и вы не являетесь профессиональным криптографом, то это плохая идея. Вашу гениальную шифровку с большой вероятностью вскроет какой-нибудь клерк из «черных кабинетов» или средневековый математик (напомню, частотный анализ текста в реальной истории — это 9 век). Вдобавок большинство известных и популярных шифров из категории «карандаш и бумага» не менее трудоемки, чем тот же одноразовый шифроблокнот…

Однако шифр, удовлетворяющий одновременно требованиям и к стойкости в докомпьютерную эпоху и к простоте использования существует. Во время второй мировой войны он стал большой проблемой для союзников. Шифр, который вскрывался с большим трудом и только при наличии не менее 40 символов уже известного текста в шифровке. Шифр, требовавший всего лишь заполнить клетки специальной таблицы по горизонтали и прочитать по вертикали, без каких либо расчетов. Знакомьтесь: Rasterschlüssel 44.

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

Во-первых, имеется решетка из белых и черных квадратов, 24 строки на 25 колонок. В каждой строке в случайном порядке расположены 10 белых квадратов и 15 черных. Колонки и строки решетки обозначаются случайными и уникальными для каждой строки и колонки двухсимвольными обозначениями: aa, ab, ac, ad, ae, ba, bb и т.д., кроме того, колонки пронумерованы в случайном порядке:

Во-вторых, к каждой решетке прилагается небольшая таблица для кодирования/декодирования этих обозначений, тоже из случайных наборов букв:

Цифры и пунктуация записываются словами. Сообщение должно быть не короче 60 символов и не длиннее 200. Если оно длиннее, то его надо разбить на две шифровки. Если сообщение короче 60 символов, то до него и после надо добавить случайных слов. Чтобы отличить случайные слова от шифровки, надо повторить последние две буквы в «заголовке» и первые две в «хвосте». Например: «поведениеторговлляяотступлениеввосемнадцатьнольнольллиимонад».

Берем тонкий лист бумаги и накладываем на решетку. Черные квадраты просвечивают сквозь бумагу, так, что видно, где надо писать. Вначале надо выбрать стартовую колонку и строку, ее надо выбрать случайным образом, после чего зачеркнуть на решетке (не на верхнем листе бумаги) их обозначения одной чертой наискосок. Если она зачеркнута один раз, то можно второй раз по другой диагонали, если колонка или строка зачеркнута уже крестиком, то ее использовать в качестве начальной НЕЛЬЗЯ. Далее надо
случайно выбрать колонку, с которой начнется шифровка, ее надо зачеркнуть крестиком, использовать ее потом в качестве начальной тоже НЕЛЬЗЯ.

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

Если мы начинаем писать открытый текст начиная с колонки bb и строки ae, то закодировать их данной таблицей можно например так: tuzd (два разных символа выбрали из колонки «b», один из колонки «a», один из колонки «e». Шифровать по вертикали мы начнем с колонки ee, это можно закодировать например как ny. Время 17:21, используется таблица номер 64: «1721-64-tuzd-ny». Это начало шифровки.

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

Затем списывается шифровка по вертикали, следуя нумерации колонок (если мы начали списывать шифр с колонки 23, то следующая колонка шифра 24, потом 25, потом 1,2 и т.д.). Используя решетку на иллюстрации списываем по вертикали начиная с 19 колонки dian, далее с 20й колонки m, с 21й колонки rq, с 22 tvfn и т.п.:

1721-64-tuzd-ny
dianm rqtvf nnris …

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

Любопытно, что данный шифр нельзя взять в лоб даже современными вычислительными мощностями. Он конечно не годится в качестве серьезного шифра на сегодняшний день, т.к. у него имеются определенные слабости, которые в принципе можно использовать — при наличии компьютера. Ну или при наличии 40 символов уже известного текста. Или если немцы сделают типичную ошибку, когда текст не удастся расшифровать, а передающая сторона тот же самый текст зашифрует еще раз той же решеткой. А решетку полагалось менять каждый день, ага. Как следствие, союзники расшифровывали только радиообмен полиции Берлина, чтобы понимать происходящее в самом конце войны.

А теперь самое интересное: в применении шифра немцы сильно налажали. Они сделали всего лишь 36 штампов для строк и просто их переставляли местами… Но даже в таком кастрированном варианте шифр оказался значительно более стоек, чем применявшиеся для серьезной переписки Энигма и Лоренц. Дело в том, что немцы еще до войны в борьбе за расово чистую математику фактически уничтожили свою математическую школу. Кто-то сбежал, кто-то попал в лагеря, кто-то просто перестал работать и у них не осталось серьезных математиков, способных указать на ошибки, не говоря уже о том, чтобы придумать что-либо свое — ведь даже этот шифр немцы получили в качестве трофея!

История же появления этого шифра у немцев не менее интересна и поучительна — шифр изобрел британский криптограф Джон Тилтман (впоследствии взломавший шифр немецкой машины Lorenz SZ, что позволило читать общение Гитлера с его генералами). Шифр был внедрен под названием «Cysquare» и британцы его попытались использовать. Все было бы замечательно, но исполнение подкачало. Вместо тонкой, полупрозрачной бумаги предлагалось писать карандашом сразу на решетке, а потом стирать ластиком и так много, много раз. В полевых условиях в Африке белые клетки быстро становились черными и шифровальщики наотрез отказались пользоваться этим шифром. А потом Роммель захватил вместе с трофеями и шифровки с инструкциями, в результате чего у немцев появился серьезный шифр. Который они так и не оценили по большому счету, да и внедрили к самому концу обеда.

]]> http://popadancev.net.s3-website-us-east-1.amazonaws.com/rasterschlussel-44/feed/ 41
Одноразовый шифроблокнот http://popadancev.net.s3-website-us-east-1.amazonaws.com/odnorazovyj-shifrobloknot/ http://popadancev.net.s3-website-us-east-1.amazonaws.com/odnorazovyj-shifrobloknot/#comments Tue, 17 Nov 2015 13:30:48 +0000 http://popadancev.net.s3-website-us-east-1.amazonaws.com/?p=5606 Несколько лет назад одного британского айтишника надолго посадили за сотрудничество с террористами, с которыми он переписывался посредством самопального шифра, запрограммированного в Экселе. Несмотря на то, что ему вполне была доступна современная криптография, некомпетентность его подвела и легко вскрытая правоохранительными органами переписка была использована против него же в суде. Oops…

В криптографии есть несколько эмпирических [...]]]> Несколько лет назад одного британского айтишника надолго посадили за сотрудничество с террористами, с которыми он переписывался посредством самопального шифра, запрограммированного в Экселе. Несмотря на то, что ему вполне была доступна современная криптография, некомпетентность его подвела и легко вскрытая правоохранительными органами переписка была использована против него же в суде. Oops…

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

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


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

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

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

Вначале надо превратить ваш текст в цифры. Для этого используется сжимающая таблица (straddling checkerboard). В каком-то смысле это аналог алгоритмов, лежащих в основе zip, rar и т.п., только таблица сжатия у нас фиксированная. Нет, вы конечно можете и просто сопоставить буквам цифры по принципу А=1, Б=2 и т.д, но из-за избыточности языка вы будете вынуждены потом шифровать где-то на треть больше. Просидев несколько часов с карандашом за тупой арифметикой, вы быстро оцените достоинства сжимающей таблицы…

Для создания сжимающей таблицы запоминаем: А И ТЕСНО. Тут задействовано семь самых часто встречающихся букв в русском языке. Для английского берем скажем AT ONE SIR (в английском языке меньше букв и можно обойтись только двумя доп. строками) и т.п. Составляем таблицу, в первой строке которой идут часто встречающиеся символы, а в остальных остатки алфавита. Обратите внимание, что в первой строке не задействованы цифры 8, 9 и 0, и они же обозначают, что буква (реже встречающаяся) кодируется не одной цифрой, а двумя. Итак, для кодирования буквы ищем ее, если она находится в первой строке, то мы выбираем номер ее колонки (например Т=3), если она в остальных колонках, то мы вначале выбираем номер ее строки, а потом номер колонки, например Б=81, а ?=07:

    1   2   3   4   5   6   7   8   9   0
    А   И   Т   Е   С   Н   О
8   Б   В   Г   Д   Ж   З   К   Л   М   П
9   Р   У   Ф   Х   Ц   Ч   Ш   Щ   Ъ   Ы
0   Ь   Э   Ю   Я   .   ,   ?

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

ПОБЕГ ЗАВТРА

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

80781 48386 18239 11000

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

Но ПОКА ЧТО это еще не шифр! Закодированный вышеприведенным способом текст уже заметно сложнее взять в лоб простым частотным анализом, но все равно на шифр оно никак не тянет. Теперь выдираем страницу из одноразового шифроблокнота, приведенного на иллюстрации и начинаем с ней работать. Внимание! Никогда нельзя в шифровке указывать номер страницы шифроблокнота, чтобы не дать возможность проанализировать последовательность шифровок или угадать время ее отправки (что может оказаться не менее критичным, чем ее содержимое)! Вместо этого для идентификации страницы используется первая группа, ее не следует использовать для шифрования, а записать как есть. Под цифрами шифровки записываем цифры одноразового кода начиная со второй группы, после чего складываем цифры в каждой колонке, всегда отбрасывая возникающий перенос:

        80781 48386 18239 11000
+
  14358 89753 24133 40169 26799
=
  14358 69434 62419 58398 37799

Вот это уже и есть шифровка:

14358 69434 62419 58398 37799

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

Ну, а теперь самое главное (и самое трудоемкое): как сгенерировать достаточное количество случайных чисел. Ведь одноразовый шифроблокнот предполагает уничтожение каждой страницы после расшифровки, и для передачи определенного объема текста надо такое же количество случайных данных! Это и является вторым недостатком одноразового шифроблокнота: создание шифроблокнотов занятие длительное и трудоемкое, причем надо суметь создать реально случайную последовательность. Первое, что приходит в голову, это взять кости и накидать набор чисел, вот только на обычных игральных костях всего лишь цифры от 1 до шести, а кидать пару костей и складывать цифры нельзя, т.к. распределение суммы уже подчиняется вполне понятной закономерности и у вас выйдет не совсем случайная последовательность цифр. Можно конечно попробовать сделать кость на d10, как на иллюстрации справа, но попробуйте ее выточить напильником с достаточной точностью!

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

 11 = 0    21 = 6    31 = 2   41 = 8   51 = 4
 12 = 1    22 = 7    32 = 3   42 = 9   52 = 5
 13 = 2    23 = 8    33 = 4   43 = 0   53 = 6
 14 = 3    24 = 9    34 = 5   44 = 1   54 = 7
 15 = 4    25 = 0    35 = 6   45 = 2   55 = 8
 16 = 5    26 = 1    36 = 7   46 = 3   56 = 9

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

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

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

]]> http://popadancev.net.s3-website-us-east-1.amazonaws.com/odnorazovyj-shifrobloknot/feed/ 107
Квантовый компьютер http://popadancev.net.s3-website-us-east-1.amazonaws.com/kvantovyj-kompyuter/ http://popadancev.net.s3-website-us-east-1.amazonaws.com/kvantovyj-kompyuter/#comments Sun, 05 Jan 2014 23:51:54 +0000 http://popadancev.net.s3-website-us-east-1.amazonaws.com/?p=3878 С одной стороны — предсказание будущего дело неблагодарное и редко у кого получающееся. С другой стороны — попаданцы из будущего все же попадаются, хотя бывает что сами попаданцы оказываются в будущем (хоть часто в альтернативном).

Однако, я тут задался вопросом — а вот если вы оказались в будущем, то что из него вести? Ну, кроме [...]]]> С одной стороны — предсказание будущего дело неблагодарное и редко у кого получающееся.
С другой стороны — попаданцы из будущего все же попадаются, хотя бывает что сами попаданцы оказываются в будущем (хоть часто в альтернативном).

Однако, я тут задался вопросом — а вот если вы оказались в будущем, то что из него вести? Ну, кроме учебника истории и сборника спортивных рекордов…

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

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

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

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

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

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

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

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

]]> http://popadancev.net.s3-website-us-east-1.amazonaws.com/kvantovyj-kompyuter/feed/ 47
Шифр для попаданца http://popadancev.net.s3-website-us-east-1.amazonaws.com/shifr-dlya-popadanca/ http://popadancev.net.s3-website-us-east-1.amazonaws.com/shifr-dlya-popadanca/#comments Sat, 24 Nov 2012 16:28:50 +0000 http://popadancev.net.s3-website-us-east-1.amazonaws.com/?p=1113 Крушение Римской империи заморозило прогресс криптографии. Шифры раннего средневековья так же примитивны, как и античные и легко взламываются любым любителем.

Ситуация меняется только в XV веке, начиная с работ Леона Баттисты Альберти и Иоганна Тритемия. Начинается использование шифров, позволяющих делать сложные замены серий букв на другие серии. При этом резко увеличивается количество возможных комбинаций, а [...]]]> Крушение Римской империи заморозило прогресс криптографии. Шифры раннего средневековья так же примитивны, как и античные и легко взламываются любым любителем.

Ситуация меняется только в XV веке, начиная с работ Леона Баттисты Альберти и Иоганна Тритемия. Начинается использование шифров, позволяющих делать сложные замены серий букв на другие серии. При этом резко увеличивается количество возможных комбинаций, а значит, и сложность шифра. К сожалению, все шифры, разработанные до 1929 года неустойчивы к взлому частотным анализом. В этом году классическая работа Лестера Хилла позволила создать первый устойчивый шифр. Однако устойчивые алгоритмы слишком сложны для ручного шифрования, и с тех пор по сей день шифрование и дешифрование делаются машинным способом. Устройство шифровальных машинок и алгоритмы компьютерного шифрования мы рассматривать не будем по причине их невоспроизводимости примитивными технологиями попаданца.

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

шифр ПлейфераПримером простого и устойчивого по меркам античности шифра будет шифр Плейфера, биграммный шифр замены. Берем квадрат Полибия, составленный с помощью кодового слова, берем буквы попарно. Если обе буквы одинаковы, заменяем вторую на условленную (например, Х, если обе Х — Я). Строим прямоугольник, симметричный относительно центра квадрата Полибия, углами которого будут наши буквы. Две буквы, расположенные в других углах, записываем в шифровку. Благодаря тому, что буквы заменяются попарно, количество возможных комбинаций составляет 600—900 вариантов. Слишком много для блестящих умов античности.

В позднем средневековье лучше использовать шифр Виженера. Посмотрим на описание шифра из Википедии.

Tabula Recta
В шифре Цезаря каждая буква алфавита сдвигается на несколько строк; например, в шифре Цезаря при сдвиге +3, A стало бы D, B стало бы E и так далее. Шифр Виженера состоит из последовательности нескольких шифров Цезаря с различными значениями сдвига. Для зашифровывания может использоваться таблица алфавитов, называемая «tabula recta» или «квадрат/таблица Виженера». Применительно к латинскому алфавиту таблица Виженера составляется из строк по 26 символов, причём каждая следующая строка сдвигается на несколько позиций. Таким образом, в таблице получается 26 различных шифров Цезаря. На разных этапах кодировки шифр Виженера использует различные алфавиты из этой таблицы. На каждом этапе шифрования используются различные алфавиты, выбираемые в зависимости от символа ключевого слова. Например, предположим, что исходный текст имеет вид:

ATTACKATDAWN

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

LEMONLEMONLE

Первый символ исходного текста A зашифрован последовательностью L, которая является первым символом ключа. Первый символ L шифрованного текста находится на пересечении строки L и столбца A в таблице Виженера. Точно так же для второго символа исходного текста используется второй символ ключа; то есть второй символ шифрованного текста X получается на пересечении строки E и столбца T. Остальная часть исходного текста шифруется подобным способом.

Исходный текст:
ATTACKATDAWN
Ключ:
LEMONLEMONLE
Зашифрованный текст:
LXFOPVEFRNHR

Как взламывается такой шифр?

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

  1. поиск длины ключа;
  2. криптоанализ.

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

Ключ:
ABCDAB CD ABCDA BCD ABCDABCDABCD
Исходный текст:
CRYPTO IS SHORT FOR CRYPTOGRAPHY
Шифрованный текст:
CSASTP KV SIQUT GQU CSASTPIUAQJB

Вы видите повторы последовательности CSASTP через 16 символов. Следовательно, длина ключа это делитель 16 — 2, 4, 16. Если найти еще несколько повторяющихся последовательностей, длина ключа будет известна. Можете попробовать самостоятельно определить длину ключа этой шифровки DYDUXRMHTVDVNQDQNWDYDUXRMHARTJGWNQD. Касиски полностью взломал шифр в XIX веке, хотя известны случаи взлома этого шифра некоторыми опытными криптоаналитиками ещё в XVI веке.

Опишем простой метод увеличить длину ключа. Берем кодовое слово и разбиваем его на отрезки, длиной в разные простые числа (3, 5, 7 и т. д.). Циклически записываем каждую последовательность и складываем строки.

Ключ: thatbigpassword
Разбиваем на 3, 5, 7 букв: tha tbigp assword
Записываем циклически:
thathathathathathathathathathathathathathathathathatha
tbigptbigptbigptbigptbigptbigptbigptbigptbigptbigptbig
asswordasswordasswordasswordasswordasswordasswordasswo
Складываем:
nbbwllxpycxptqpgbfoowuiygpsfnigfwrztnidxsecgikwzdwmnmu

Благодаря тому, что мы используем простые числа, ключ будет повторяться циклически с периодом, равным произведению чисел. Мы превратили 15-буквенный ключ в 3*5*7 = 105-буквенный, 26-буквенный в 1155-буквенный! Этот алгоритм достаточно устойчив к ручным методам взлома.

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

Если не требуется абсолютная секретность, то можно использовать примитивную шифровальную машинку. Берем 33 диска с алфавитом, написанным на краю диска в случайном порядке. Каждый диск обозначен своей буквой. Такое же оборудование должен иметь получатель. Надеваем на ось по порядку не меньше 10 дисков по буквам кодовой фразы. Поворачивая диски, составляем сообщение. Выбираем случайную горизонтальную строку и записываем ее в шифровку. При расшифровке исполнитель должен надеть диски по порядку, набрать шифрованную фразу и, поворачивая машинку, найти осмысленную последовательность. Такой метод шифрования имеет стойкость метода Виженера без алгоритма удлинения кодовой фразы, но намного проще в применении и обучении.
Простейшая шифровальная машинка
Если у вас имеется ноутбук и знания основ программирования, то успех гарантирован. Даже если на ноутбуке нет среды программирования, вы можете найти интерпретатор (в Windows это интерпретаторы Visual Basic’a и Java — WSCRIPT.EXE, CSCRIPT.EXE, в современных nix-овых системах практически всегда есть интерпретатор языка Питон), примеры скриптов (*.vbs, *.js в Windows). Вы сможете мгновенно делать частотный анализ текста и перебирать миллионы вариантов кода в секунду. При достаточной длине сообщения ни один практически применимый ручной метод шифрования не устоит перед компьютерной атакой.

]]> http://popadancev.net.s3-website-us-east-1.amazonaws.com/shifr-dlya-popadanca/feed/ 87
Основы криптографии и шифры античности http://popadancev.net.s3-website-us-east-1.amazonaws.com/kriptografiya/ http://popadancev.net.s3-website-us-east-1.amazonaws.com/kriptografiya/#comments Sat, 24 Nov 2012 15:55:10 +0000 http://popadancev.net.s3-website-us-east-1.amazonaws.com/?p=1097 Часто можно встретить утверждение, что современный человек нисколько не отличается от человека, жившего тысячи лет назад. Но, если не сводить все к простейшим эмоциям и рефлексам, легко заметить огромную разницу. Современный человек живет в чудовищно информационно насыщенной среде. В античности и Средневековье чтение про себя было настолько редким делом, что к людям, умеющим это, относились [...]]]> Часто можно встретить утверждение, что современный человек нисколько не отличается от человека, жившего тысячи лет назад. Но, если не сводить все к простейшим эмоциям и рефлексам, легко заметить огромную разницу. Современный человек живет в чудовищно информационно насыщенной среде. В античности и Средневековье чтение про себя было настолько редким делом, что к людям, умеющим это, относились примерно так же, как мы сейчас относимся к людям-счётчикам, способным за секунды перемножать в уме многозначные числа. Сенека сетовал на то, что редкий человек способен одолеть чтение сотни книг. Опросы самых разных племён и малых народов, существующих в «безписьменной» культуре, показывают чрезвычайно низкую способность к абстрагированию и чистой логике.

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

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

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

Мы также не будем затрагивать стеганографию — методы сокрытия сообщения. Документы на шёлке или тонкой бумаге, спрятанные в одежде, нитки с узлами, завязанными через определённые промежутки, микропечать и прочее. Отдельно стоит упомянуть метод решётки Кардано. Берём лист бумаги и делаем в нем несколько прорезей — получаем трафарет. Вписываем слова секретного сообщения в прорези и убираем трафарет. Заполняем свободное место текстом так, чтобы слова секретного сообщения не выделялись на общем фоне. Таким методом пользовался, в частности, Грибоедов во время службы послом в Персии. Этот способ требует определённых литературных способностей исполнителя (биографы Грибоедова легко замечали изменение стиля в письмах, содержащих шифровки) и охраны трафарета. Его преимущества весьма велики: секретное сообщение спрятано в обычном, не существует надёжного способа взлома, при переписывании вручную секретное сообщение теряется, и расшифровка делается невозможной.

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

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

В Средневековье также использовались анаграммы — бессистемные перестановки букв короткой фразы. Так Галилео Галилей зашифровал латинскую фразу «Altissimum planetam tergeminum observavi» («Высочайшую планету тройною наблюдал»), случайно переставив буквы следующим образом: «Smaismrmielmepoetaleu mibuvnenugttaviras», закрепив свою заявку на открытие спутников Сатурна. Этот метод не позволяет передавать секретные сообщения из-за отсутствия алгоритма.

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

В классических требованиях к шифру, составленных Огюстом Керкгоффсом, можно хорошо увидеть философию шифрования, делающую её методы такими удобными для сокрытия информации:

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

Если вы можете гарантировать физическую защиту ключа, то лучше использовать максимально длинные, рандомизированные последовательности. Если длина ключа равна длине сообщения и ключ получен случайным образом, то достаточно просто циклически сложить сообщение и ключ (т. е. взять позицию буквы сообщения в алфавите и отсчитать количество позиций буквы ключа, если дошли до конца алфавита, начать сначала). Взлом такого сообщения невозможен даже теоретически. Если же ключ очень короток (2—4 символа), то даже ручной перебор позволяет взломать код. Далее мы предполагаем использование короткого (7—20 букв) ключа.

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

Шифры, использовавшиеся в античном мире, отличаются крайней примитивностью.

Иудейский атбаш или шифр Цезаря — буквы заменяются на букву, находящуюся на определённое количество позиций справа в алфавите. Например, замена на 3 позиции — А меняем на Г, Б меняем на Д, В на Е и так далее. Поскольку количество возможных сдвигов равно длине алфавита, этот шифр взламывается простым перебором сдвигов меньше, чем за полчаса.

Шифр перестановки, использовавшийся Цезарем, дает хороший пример примитивности античных шифров. Прочитайте сами: ыветидивеонтеркесеинещбоос.

Скитала использовалась спартанцами. Полоска с текстом спирально наматывалась на палку определённой толщины и читалась по длине палки. Этот метод легко взломал Аристотель, просто намотав полоску на конусообразную палку.

Скитала

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

Квадрат Полибия

Линейка Энея представляла собой устройство, имевшее отверстия, количество которых равнялось количеству букв алфавита. Каждое отверстие обозначалось своей буквой; буквы по отверстиям располагались в произвольном порядке. К линейке была прикреплена катушка с намотанной на неё ниткой. Рядом с катушкой имелась прорезь. При шифровании нить протягивалась через прорезь, а затем через отверстие, соответствующее первой букве шифруемого текста, при этом на нити завязывался узелок в месте прохождения её через отверстие (при этом направление, прорезь слева или справа от предыдущей можно кодировать формой или размером узелка); затем нить возвращалась в прорезь, и аналогично зашифровывалась вторая буква текста и т. д. После окончания шифрования нить извлекалась и передавалась получателю сообщения. Измерив расстояния между узелками можно восстановить расположение прорезей. Сделаем линейку по восстановленному образцу и подпишем прорези произвольными буквами. У нас в руках сообщение, зашифрованное обычным однобуквенным шифром замены. Он легко взламывается анализом частоты букв. Думаю, главной сложностью при взломе этого шифра у древнегреческих ученых было изготовление линейки. Ну, не любят философы работать руками.

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

]]>
http://popadancev.net.s3-website-us-east-1.amazonaws.com/kriptografiya/feed/ 33
Счеты http://popadancev.net.s3-website-us-east-1.amazonaws.com/schety/ http://popadancev.net.s3-website-us-east-1.amazonaws.com/schety/#comments Thu, 26 Jul 2012 13:03:10 +0000 http://popadancev.net.s3-website-us-east-1.amazonaws.com/?p=146 Огромным шагом вперед будет ввести простые советские счеты. Вот на слегка изогнутых проволочках с двумя темными костяшками в середине ряда. Как же так, спросите вы, ведь абак (аналог счетов с камешками в углублениях) был известен еще в Вавилоне 4.5 тысячи лет назад. Ну и какое такое новшество будет у счетов?

Ну, во-первых счеты конструктивно куда [...]]]> Огромным шагом вперед будет ввести простые советские счеты. Вот на слегка изогнутых проволочках с двумя темными костяшками в середине ряда.

Как же так, спросите вы, ведь абак  (аналог счетов с камешками в углублениях) был известен еще в Вавилоне 4.5 тысячи лет назад. Ну и какое такое новшество будет у счетов?

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

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

]]> http://popadancev.net.s3-website-us-east-1.amazonaws.com/schety/feed/ 29
Арабские цифры, использование ноля http://popadancev.net.s3-website-us-east-1.amazonaws.com/arabskie-cifry-ispolzovanie-nulya/ http://popadancev.net.s3-website-us-east-1.amazonaws.com/arabskie-cifry-ispolzovanie-nulya/#comments Thu, 26 Jul 2012 12:30:03 +0000 http://popadancev.net.s3-website-us-east-1.amazonaws.com/?p=139 Для попаданца в древние времена введение десятичной системы вычисления — очень здравая идея. Можно, конечно и восьмеричную систему (или 12-ричную, как сделал какой-то гад в Шумере), но есть очень немного людей, способных на такую экзотику. Поэтому десять пальцев — десять цифр.

Это введение не даст мгновенного результата или заметной пользы попаданцу. Но без него [...]]]> Для попаданца в древние времена введение десятичной системы вычисления — очень здравая идея. Можно, конечно и восьмеричную систему (или 12-ричную, как сделал какой-то гад в Шумере), но есть очень немного людей,  способных на такую экзотику. Поэтому десять пальцев — десять цифр.

Это введение не даст мгновенного результата или заметной пользы попаданцу. Но без него — просто никак. Системы вычисления с нулем хороши тем, что удобно проводить вычисления — в столбик. Вот кто-нибудь пробовал провести деление в римских цифрах? Это, наверное, только Архимед мог, но я сомневаюсь и в нем. Да интеграл по объему взять легче!

Вводить десятичную систему следует не в среде ученых и не среди строителей, хотя и тем и тем это очень пригодилось бы. Вводить следует с купцов. В отличие от остальных — они ухватятся за такое обеими руками. Просто потому, что двойную бухгалтерию, похоже, придумали еще до Древнего Египта. А как вести двойную бухгалтерию, если и в нормальной перемножить два числа — задача на два часа? Поэтому для купца десятичная система  — это экономия средств, а для ученого — покушение на его статус, чувствуете разницу? И вообще — говорят, считать деньги полезно для организма…

Период введения — очень широк. Начиная с периода того же Шумера — и до 11 века в Европе, когда наконец эта система через арабов дошла до нас из Индии.

]]> http://popadancev.net.s3-website-us-east-1.amazonaws.com/arabskie-cifry-ispolzovanie-nulya/feed/ 29