Введение в криптографию. Книги. Скачать книги DJVU, PDF бесплатно. Бесплатная электронная библиотека В.В. Ященко, Введение в криптографию

Книги. Скачать книги DJVU, PDF бесплатно. Бесплатная электронная библиотека
В.В. Ященко, Введение в криптографию

Вы можете (программа отметит желтым цветом)
Вы можете посмотреть список книг по высшей математике с сортировкой по алфавиту.
Вы можете посмотреть список книг по высшей физике с сортировкой по алфавиту.

• Бесплатно скачать книгу , объем 1.69 Мб, формат.djvu
Издание второе под ред. Ященко В.В., сентябрь 1999 года

Уважаемые дамы и господа!! Для того, чтобы без "глюков" скачать файлы электронных публикаций, нажмите на подчеркнутую ссылку с файлом ПРАВОЙ кнопкой мыши , выберите команду "Save target as ..." ("Сохранить объект как..." ) и сохраните файл электронной публикации на локальный компьютер. Электронные публикации обычно представлены в форматах Adobe PDF и DJVU.

Глава 1. Основные понятия криптографии
1. Введение
2. Предмет криптографии
3. Математические основы
4. Новые направления
5. Заключение

Глава 2. Криптография и теория сложности
1. Введение
2. Криптография и гипотеза
3. Односторонние функции
4. Псевдослучайные генераторы
5. Доказательства с нулевым разглашением

Глава 3. Криптографические протоколы
1. Введение
2. Целостность. Протоколы аутентификации и электронной подписи
3. Неотслеживаемость. Электронные деньги
4. Протоколы типа "подбрасывание монеты по телефону"
5. Еще раз о разделении секрета
6. Поиграем в "кубнки". Протоколы голосования
7. За пределами стандартных предположений. Конфиденциальная передача сообщений
8. Вместо заключения

Глава 4. Алгоритмические проблемы теории чисел
1. Введение
2. Система шифрования RSA
3. Сложность теоретико-числовых алгоритмов
4. Как отличить составное число от простого
5. Как строить большие простые числа
6. Как проверить большое число на простоту
7. Как раскладывают составные числа на множители
8. Дискретное логарифмирование
9. Заключение

Глава 5. Математика разделения секрета
1. Введение
2. Разделение секрета для произвольных структур доступа
3. Линейное разделение секрета
4. Идеальное разделение секрета и матроиды

Глава 6. Компьютер и криптография
1. Вместо введения
2. Немного теории
3. Как зашифровать файл?
4. Поучимся на чужих ошибках
5. Вместо заключения

Глава 7. Олимпиады по криптографии для школьников
1. Введение
2. Шифры замены
3. Шифры перестановки
4. Многоалфавитные шифры замены с периодическим ключом
5. Условия задач олимпиад по математике и криптографии
6. Указания и решения

Приложение: отрывок из статьи К. Шеннона "Теория связи в секретных системах"

Краткая аннотация книги

Под общ. ред. В.В.Ященко. Авторский коллектив: В. В. Ященко (редактор, глава 1), Н. П. Варновский (главы 2, 3), Ю. В. Нестеренко (глава 4), Г. А. Кабатянский (глава 5), П. Н. Девянин, В. Г. Проскурин, А. В. Черемушкин (глава 6), П. А. Гырдымов, А. Ю. Зубов, А. В. Зязин, В. Н. Овчинников (глава 7).

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

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

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

Популярное изложение научных основ криптографии (речь идет только о "негосударственной" криптографии; разделы криптографии, связанные с государственной безопасностью, должны оставаться секретными) - цель настоящей книги. Ее можно использовать и в качестве учебного пособия. На русском языке аналогичных книг пока нет. Материалы ряда глав публиковались авторами ранее в других изданиях (глава 1 - в книге С. А. Дориченко, В. В. Ященко, "25 этюдов о шифрах", М.: ТЕИС, 1994; главы 1,2,4,5 - в журнале "Математическое просвещение", третья серия, выпуск 2, М.: МЦНМО, 1998; глава 7 - в газете "Информатика" (еженедельное приложение к газете "Первое сентября"), N 4, январь 1998). При подготовке настоящего издания эти материалы были переработаны и дополнены. Изложение материала рассчитано на читателя с математическим складом ума.

В основном главы не зависят друг от друга (это достигнуто за счет некоторых повторов) и их можно читать в произвольном порядке. Главу 1 - вводную - рекомендуется прочитать всем, поскольку в ней на популярном уровне разъясняются все основные понятия современной криптографии: шифр, ключ, стойкость, электронная цифровая подпись, криптографический протокол и др. В других главах часть материала повторяется, но уже более углубленно. В главах 2, 3, 4, 5 используются некоторые сведения из высшей математики, известные ученикам математических классов и студентам. Глава 6 ориентирована на знатоков компьютерных технологий. Глава 7 содержит материалы олимпиад по криптографии для школьников и поэтому для ее чтения никаких знаний, выходящих за пределы школьной программы, не требуется.

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

Криптография была поставлена на научную основу во многом благодаря работам выдающегося американского ученого Клода Шеннона. Его доклад "Математическая теория криптографии" был подготовлен в секретном варианте в 1945 г., рассекречен и опубликован в 1948 г., переведен на русский язык в 1963 г. Поскольку "Работы по теории информации и кибернетике" (1963 г.) К. Шеннона стали библиографической редкостью, мы включили в приложение основную часть статьи К. Шеннона "Теория связи в секретных системах". Эту основополагающую работу рекомендуется прочитать всем интересующимся криптографией.

Для профессионального понимания криптографических алгоритмов и умения оценивать их сильные и слабые стороны необходима уже серьезная математическая подготовка (на уровне математических факультетов университетов). Это объясняется тем, что современная криптография основана на глубоких результатах таких разделов математики, как теория сложности вычислений, теория чисел, алгебра, теория информации и др. Желающим серьезно изучать криптографию можно порекомендовать обзорную монографию "Криптография в банковском деле" Анохина М. И., Варновского Н. П., Сидельникова В. М., Ященко В. В., М.: МИФИ, 1997.

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

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

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

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

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

В настоящее время в связи с широким распространением компьютеров известно много тонких методов "запрятывания" защищаемой информации внутри больших объемов информации, хранящейся в компьютере. Наглядный пример эапрятывания текстового файла в графический можно найти в Интернете; он же приведен в журнале "Компьютерра", N48 (225) от 1 декабря 1997 г., на стр. 62. (Следует отметить, что авторы статьи в журнале ошибочно относят стеганографию к криптографии. Конечно, с помощью стеганографии можно прятать и предварительно зашифрованные тексты, но, вообще говоря, стеганография и криптография - принципиально различные направления в теории и практике зашиты информации.)

3. Разработкой методов преобразования (шифрования) информации с целью ее защиты от незаконных пользователей занимается криптография. Такие методы и способы преобразования информации называются шифрами.

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

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

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

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

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

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

,
С 2017 года возобновляем мобильную версию веб-сайта для мобильных телефонов (сокращенный текстовый дизайн, технология WAP) - верхняя кнопка в левом верхнем углу веб-страницы. Если у Вас нет доступа в Интернет через персональный компьютер или интернет-терминал, Вы можете воспользоваться Вашим мобильным телефоном для посещения нашего веб-сайта (сокращенный дизайн) и при необходимости сохранить данные с веб-сайта в память Вашего мобильного телефона. Сохраняйте книги и статьи на Ваш мобильный телефон (мобильный интернет) и скачивайте их с Вашего телефона на компьютер. Удобное скачивание книг через мобильный телефон (в память телефона) и на Ваш компьютер через мобильный интерфейс. Быстрый Интернет без излишних тэгов, бесплатно (по цене услуг Интернет) и без паролей. Материал приведен для ознакомления. Прямые ссылки на файлы книг и статей на веб-сайте и их продажи третьими лицами запрещены.

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

Введение в криптографию и шифрование, часть первая. Лекция в Яндексе

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


Мы впервые публикуем эту лекцию вместе с расшифровкой. Начнём с первой части. Под катом вы найдёте текст и часть слайдов.


Я когда-то читал в МГУ лекции по крипте, и они занимали у меня по полгода. Я попытаюсь вам всё рассказать за два с половиной часа. Никогда этого не делал. Вот и попробуем.

Кто понимает, что такое DES? AES? TLS? Биноминальное отображение?

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

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

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

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

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

Современные и коммерчески доступные системы шифрования - все или почти все или лучшие из них - построены из компонент, устройство и принцип работы которых хорошо известны. Единственная секретная вещь в них - ключ шифрования. Есть только одно известное мне значимое исключение - набор секретных криптографических протоколов для всевозможных государственных организаций. В США это называется NSA suite B, а в России это всякие странные секретные алгоритмы шифрования, которые до определенной степени используются военными и государственными органами.

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

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

Первый криптографический примитив - симметричные шифры.


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


Какие здесь важные нюансы? В большинстве распространенных алгоритмов симметричного шифрования, с которыми можно столкнуться, размер шифротекста всегда равен размеру открытого текста. Современные алгоритмы шифрования оперируют размерами ключей. Размер ключей измеряется в битах. Современный размер - от 128 до 256 бит для алгоритмов симметричного шифрования. Об остальном, в том числе о размере блока, мы поговорим позже.


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

Как вы считаете, с точки зрения размера ключа насколько это сложный алгоритм? Сколько вариантов ключей существует? Порядок факториала длины алфавита. Мы берем таблицу. Как мы ее строим? Допустим, есть таблица на 26 символов. Букву А можем заменить на любой из них, букву Б - на любой из оставшихся 25, С - на любой из оставшихся 24… Получаем 26*25*24*… - то есть факториал от 26. Факториал размерности алфавита.

Если взять log 2 26!, это будет очень много. Думаю, вы точно получите в районе 100 бит длины ключа, а то и поболее. Оказалось, что с точки зрения формального представления стойкости указанный алгоритм шифрования - довольно неплохой. 100 бит - приемлемо. При этом все, наверное, в детстве или юности, когда сталкивались с кодировками, видели, что такие алгоритмы дешифруются тривиально. Проблем с расшифровкой нет.

Долго существовали всякие алгоритмы подстановки в разных конструкциях. Одним из них, еще более примитивным, является шифр Цезаря, где таблица формируется не случайной перестановкой символов, а сдвигом на три символа: А меняется на D, B на Е и т. д. Понятно, что шифр Цезаря вместе со всеми его вариантами перебрать очень легко: в отличие от табличной подстановки, в ключе Цезаря всего 25 вариантов при 26 буквах в алфавите - не считая тривиального шифрования самого в себя. И его как раз можно перебрать полным перебором. Здесь есть некоторая сложность.

Почему шифр табличной подстановки такой простой? Откуда возникает проблема, при которой мы можем легко, даже не зная ничего про криптографию, расшифровать табличную подстановку? Дело в частотном анализе. Есть самые распространенные буквы - какая-нибудь И или Е. Их распространенность велика, гласные встречаются намного чаще, чем согласные, и существуют негативные пары, никогда не встречающиеся в естественных языках, - что-то вроде ЬЪ. Я даже давал студентам задание сделать автоматический дешифратор шифра подстановки, и, в принципе, многие справлялись.

В чем проблема? Надо статистику распределения букв исказить, чтобы распространенные буквы не так светились в зашифрованном тексте. Очевидный способ: давайте будем шифровать самые часто встречающиеся буквы не в один символ, а в пять разных, например. Если буква встречается в среднем в пять раз чаще, то давайте по очереди - сначала в первый символ будем зашифровывать, потом во второй, в третий и т. д. Далее у нас получится маппинг букв не 1 к 1, а, условно, 26 к 50. Статистика, таким образом, нарушится. Перед нами первый пример полиалфавитного шифра, который как-то работал. Однако с ним есть довольно много проблем, а главное, очень неудобно работать с таблицей.

Берем в качестве ключа слово ВАСЯ. Берем сообщение МАША. Задействуем шифр Цезаря, но отсчитывая от этих букв. Например, В - третья буква в алфавите. Мы должны сдвинуть на три буквы соответствующую букву в открытом тексте. М сдвигается в П. А в А. Ш - на 16, перескочим букву А, получим, условно, Д. Я сдвинет А в Я. ПАДЯ.

Что удобно в получившемся шифре? Здесь было две одинаковых буквы, но в результате они зашифровались в разные. Это классно, потому что размывает статистику. Метод хорошо работал, пока где-то в XIX веке, буквально недавно на фоне истории криптографии, не придумали, как его ломать. Если посмотреть на сообщение из нескольких десятков слов, а ключ довольно короткий, то вся конструкция выглядит как несколько шифров Цезаря. Мы говорим: окей, давайте каждую четвертую букву - первую, пятую, девятую - рассматривать как шифр Цезаря. И поищем среди них статистические закономерности. Мы обязательно их найдем. Потом возьмем вторую, шестую, десятую и так далее. Опять найдем. Тем самым мы восстановим ключ. Единственная проблема - понять, какой он длины. Это не очень сложно, ну какой он может быть длины? Ну 4, ну 10 символов. Перебрать 6 вариантов от 4 до 10 не очень сложно. Простая атака - она была доступна и без компьютеров, просто за счет ручки и листа бумаги.

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

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

Возьмем два сообщения: МАША, зашифрованная ключом ВАСЯ, и другое слово, у которого ключ тоже был ВАСЯ, - ВЕРА. Получим примерно следующее: ЗЕШЯ. Сложим два полученных сообщения, причем так, чтобы два ключа взаимно удалились. В итоге получим лишь разницу между осмысленным шифротекстом и осмысленным шифротекстом. На XOR это делается удобнее, чем на сложении по длине алфавита, но разницы практически никакой.

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

Помимо шифров подстановки, были еще шифры перестановки. С ними тоже все довольно просто. Берем сообщение ВАСЯИ, записываем его в блок какой-то длины, например в ДИДОМ, и считываем результат так же.

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

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

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


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

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

Из этой истории есть одно занятное исключение - шифроблокноты. Речь идет о настоящей шпионской истории про настоящий шпионаж. Некие люди, которым нужна абсолютно устойчивая коммуникация, генерируют случайные числа - например, буквальным бросанием кубика или буквальным выниманием шаров из барабана, как в лото. Создают два листа, где печатают эти случайные числа. Один лист отдают получателю, а второй оставляют у отправителя. При желании пообщаться они используют этот поток случайных чисел в качестве ключевого потока. Нет, история взята не из совсем далекого прошлого. У меня есть настоящий радиоперехват от 15 октября 2014 года: 7 2 6, 7 2 6, 7 2 6. Это позывной. 4 8 3, 4 8 3, 4 8 3. Это номер шифроблокнота. 5 0, 5 0, 5 0. Это количество слов. 8 4 4 7 9 8 4 4 7 9 2 0 5 1 4 2 0 5 1 4 и т. д. 50 таких числовых групп. Не знаю где, где-то не в России сидел какой-нибудь человек с ручкой и карандашом у обычного радиоприемника и записывал эти цифры. Записав их, он достал похожую штуку, сложил их по модулю 10 и получил свое сообщение. Другими словами, это реально работает, и подобное сообщение нельзя взломать. Если действительно были сгенерированы хорошие случайные числа и он впоследстии сжег бумажку с ключом, то осуществить взлом нельзя никак, совсем.

Но тут есть довольно много проблем. Первая - как нагенерировать по-настоящему хорошие случайные числа. Мир вокруг нас детерминирован, и если мы говорим про компьютеры, они детерминированы полностью.

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


Самый исторически распространенный алгоритм подобного рода называется RC4. Он был разработан Роном Ривестом лет 25 назад и активно использовался очень долго, был самым распространенным алгоритмом для TLS, всех его различных вариантов, включая HTTPS. Но в последнее время RC4 начал показывать свой возраст. Для него существует некоторое количество атак. Он активно используется в WEP. Была одна хорошая лекция Антона , история, которая показывает: плохое применение пристойного даже по нынешним меркам алгоритма шифрования приводит к тому, что компрометируется вся система.

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

Большое достоинство RC4 - в том, что он целиком внутрибайтовый, а значит, его программная реализация работает довольно быстро - сильно быстрее, в разы, если не в десятки раз быстрее, чем сравнимый и существовавший примерно в одно время с ним шифр DES. Поэтому RC4 и получил такое распространение. Он долго был коммерческим секретом компании RSA, но потом, где-то в районе 90-х годов, некие люди анонимно опубликовали исходники его устройства в списке рассылки cypherpunks. В результате возникло много драмы, были крики, мол, как же так, какие-то неприличные люди украли интеллектуальную собственность компании RSA и опубликовали ее. RSA начала грозить всем патентами, всевозможными юридическими преследованиями. Чтобы их избежать, все реализации алгоритма, которые находятся в опенсорсе, называются не RC4, а ARC4 или ARCFOUR. А - alleged. Речь идет о шифре, который на всех тестовых кейсах совпадает с RC4, но технически вроде как им не является.

Если вы конфигурируете какой-нибудь SSH или OpenSSL, вы в нем не найдете упоминания RC4, а найдете ARC4 или что-то подобное. Несложная конструкция, он уже старенький, на него сейчас есть атаки, и он не очень рекомендуется к использованию.


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

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

Salsa20 устроен так, чтобы он всегда выполнялся за константное одинаковое время. Внутри он состоит всего из трех примитивов: это сдвиг на константное время, а также сложение по модулю 2 и по модулю 32, 32-битных слов. Скорость Salsa20 еще выше, чем у RC4. Он пока что не получил такого широкого распространения в общепринятой криптографии - у нас нет cipher suite для TLS, использующих Salsa20, - но все равно потихоньку становится мейнстримом. Указанный шифр стал одним из победителей конкурса eSTREAM по выбору лучшего поточного шифра. Их там было четыре, и Salsa - один из них. Он потихоньку начинает появляться во всяких опенсорс-продуктах. Возможно, скоро - может, через пару лет - появятся даже cipher suite в TLS с Salsa20. Мне он очень нравится.

На него имеется некоторое количество криптоанализа, есть даже атаки. Снаружи он выглядит как поточный, генерируя на основе ключа последовательность почти произвольной длины, 2 64 . Зато внутри он работает как блочный. В алгоритме есть место, куда можно подставить номер блока, и он выдаст указанный блок.

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

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

В Salsa указанная проблема решена, поскольку в нем на вход поступает в том числе и номер блока, который надо сгенерировать. Дальше к номеру блока 20 раз применяется алгоритм. 20 раундов - и мы получаем 512 бит выходного потока.

Самая успешная атака - в 8 раундов. Сам он 256-битный, а сложность атаки в 8 раундов - 250 или 251 бит. Считается, что он очень устойчивый, хороший. Публичный криптоанализ на него есть. Несмотря на всю одиозность личности Берштайна в этом аспекте, мне кажется, что штука хорошая и у нее большее будущее.

Исторически поточных шифров было много. Они первые не только в коммерческом шифровании, но и в военном. Там использовалось то, что называлось линейными регистрами сдвига.

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

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

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

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

Размер блока в современных шифрах - как правило, 128 бит. Бывают разные вариации, но как правило, речь идет про 128 или 256 бит, не больше и не меньше. Размер ключа - точно такой же, как для поточных алгоритмов: 128 или 256 бит в современных реализациях, от и до.

Из всех широко распространенных блочных шифров сейчас можно назвать два - DES и AES. DES очень старый шифр, ровесник RC4. У DES сейчас размер блока - 64 бита, а размер ключа - 56 бит. Создан он был в компании IBM под именем Люцифер. Когда в IBM его дизайном занимался Хорст Фейстель, они предложили выбрать 128 бит в качестве размера блока. А размер ключа был изменяемый, от 124 до 192 бит.

Когда DES начал проходит стандартизацию, его подали на проверку в том числе и в АНБ. Оттуда он вернулся с уменьшенным до 64 бит размером блока и уменьшенным до 56 бит размером ключа.


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

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

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


У нее есть несколько интересных достоинств. Первое важное достоинство: функция F может быть любой. Она не должна обладать свойствами обратимости, она может и не быть линейной или нелинейной. Все равно шифр остается симметричным.

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

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

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

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

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

И наконец, окончательная перестановка P. Она опять перемешивает 32 бита между собой. Все очень несложно, раундовая функция максимально простая.

Самое интересное ее свойство заключается в указанных S-боксах: задумано очень сложное превращение 6 бит в 4. Если посмотреть на всю конструкцию, видно, что она состоит из XOR и пары перестановок. Если бы S-боксы были простыми, весь DES фактически представлял бы собой некоторый набор линейных преобразований. Его можно было бы представить как матрицу, на которую мы умножаем наш открытый текст, получая шифротекст. И тогда атака на DES была бы тривиальной: требовалось бы просто подобрать матрицу.

Вся нелинейность сосредоточена в S-боксах, подобранных специальным образом. Существуют разные анекдоты о том, как именно они подбирались. В частности, примерно через 10 лет после того, как DES был опубликован и стандартизован, криптографы нашли новый тип атак - дифференциальный криптоанализ. Суть атаки очень простая: мы делаем мелкие изменения в открытом тексте - меняя, к примеру, значение одного бита с 0 на 1 - и смотрим, что происходит с шифротекстом. Выяснилось, что в идеальном шифре изменение одного бита с 0 на 1 должно приводить к изменению ровно половины бит шифротекста. Выяснилось, что DES, хоть он и был сделан перед тем, как открыли дифференциальный криптоанализ, оказался устойчивым к этому типу атак. В итоге в свое время возникла очередная волна паранойи: мол, АНБ еще за 10 лет до открытых криптографов знало про существование дифференциального криптоанализа, и вы представляете себе, что оно может знать сейчас.

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

56 бит сейчас уже можно просто перебрать на кластере машин общего назначения - может, даже на одном. И это плохо. Что можно предпринять?

Просто сдвинуть размер ключа нельзя: вся конструкция завязана на его длину. Triple DES. Очевидный ответ был таким: давайте мы будем шифровать наш блок несколько раз, устроим несколько последовательных шифрований. И здесь всё не слишком тривиально.

Допустим, мы берем и шифруем два раза. Для начала нужно доказать, что для шифрований k1 и k2 на двух разных ключах не существует такого шифрования на ключе k3, что выполнение двух указанных функций окажется одинаковым. Здесь вступает в силу свойство, что DES не является группой. Тому существует доказательство, пусть и не очень тривиальное.

Окей, 56 бит. Давайте возьмем два - k1 и k2. 56 + 56 = 112 бит. 112 бит даже по нынешним меркам - вполне приемлемая длина ключа. Можно считать нормальным всё, что превышает 100 бит. Так почему нельзя использовать два шифрования, 112 бит?

Одно шифрование DES состоит из 16 раундов. Сеть применяется 16 раз. Изменения слева направо происходят 16 раз. И он - не группа. Есть доказательство того, что не существует такого ключа k3, которым мы могли бы расшифровать текст, последовательно зашифрованный выбранными нами ключами k1 и k2.

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

Эффективная стойкость алгоритма - не 112 бит, а 57, если у нас достаточно памяти. Нужно довольно много памяти, но тем не менее. Поэтому решили - так работать нельзя, давайте будем шифровать три раза: k1, k2, k3. Конструкция называется Triple DES. Технически она может быть устроена по-разному. Поскольку в DES шифрование и дешифрование - одно и то же, реальные алгоритмы иногда выглядят так: зашифровать, расшифровать и снова расшифровать - чтобы выполнять операции в аппаратных реализациях было проще.

Наша обратная реализация Triple DES превратится в аппаратную реализацию DES. Это может быть очень удобно в разных ситуациях для задачи обратной совместимости.

Где применялся DES? Вообще везде. Его до сих пор иногда можно пронаблюдать для TLS, существуют cipher suite для TLS, использующие Triple DES и DES. Но там он активно отмирает, поскольку речь идет про софт. Софт легко апдейтится.

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

Однажды DES стал показывать свой возраст, с ним стало тяжело, и люди решили придумать нечто поновее. Американская контора по стандартизации, которая называется NIST, сказала: давайте проведем конкурс и выберем новый классный шифр. Им стал AES.

DES расшифровывается как digital encrypted standard. AES - advanced encrypted standard. Размер блока в AES - 128 бит, а не 64. Это важно с точки зрения криптографии. Размер ключа у AES - 128, 192 или 256 бит. В AES не используется сеть Фейстеля, но он тоже многораундовый, в нем тоже несколько раз повторяются относительно примитивные операции. Для 128 бит используется 10 раундов, для 256 - 14.

Сейчас покажу, как устроен каждый раунд. Первый и последний раунды чуть отличаются от стандартной схемы - тому есть причины.

Как и в DES, в каждом раунде AES есть свои раундовые ключи. Все они генерируются из ключа шифрования для алгоритма. В этом месте AES работает так же, как DES. Берется 128-битный ключ, из него генерируется 10 подключей для 10 раундов. Каждый подключ, как и в DES, применяется на каждом конкретном раунде.

Каждый раунд состоит из четырех довольно простых операций. Первый раунд - подстановка по специальной таблице.

В AES мы строим байтовую матрицу размером 4 на 4. Каждый элемент матрицы - байт. Всего получается 16 байт или 128 бит. Они и составляют блок AES целиком.

Вторая операция - побайтовый сдвиг.

Устроен он несложно, примитивно. Мы берем матрицу 4 на 4. Первый ряд остается без изменений, второй ряд сдвигается на 1 байт влево, третий - на 2 байта, четвертый - на 3, циклично.

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

Четвертая, вновь очень простая операция - XOR каждого байта в каждой колонке с соответствующим байтом ключа. Получается результат.

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

Мы повторяем 4 описанных шага 10 раз, и на выходе из 128-битного блока снова получаем 128-битный блок.

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

Производители современных процессоров, Intel и AMD, уже разработали ассемблерные инструкции для реализации AES внутри чипа, потому что стандарт довольно несложный. Как итог - AES еще быстрее. Если через DES на современной машинке мы можем зашифровать, например, 1-2 гигабита, то 10-гигабитный AES-шифратор находится рядом и коммерчески доступен обычным компаниям.

Блочный алгоритм шифрует блок в блок. Он берет блок на 128 или 64 бита и превращает его в блок на 128 или 64 бита.

А что мы будем делать, если потребуется больше, чем 16 байт?

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

Да, очевидно, побьем всё на блоки по 16 байт и зашифруем. Такое шифрование называется ECB - electronic code boot, когда каждый из блоков по 16 байт в случае AES или по 8 байт в случае DES шифруется независимо.


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


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

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


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

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

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

Однако у CBC есть несколько проблем.

О размере блока. Представьте: мы начали шифровать и, допустим, у нас DES. Если бы DES был идеальным алгоритмом шифрования, выход DES выглядел бы как равномерно распределенные случайные числа длиной 64 бита. Какова вероятность, что в выборке из равномерно распределенных случайных чисел длиной 64 бита два числа совпадут для одной операции? 1/(2 64). А если мы сравниваем три числа? Давайте пока прервемся.

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

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

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

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

Итак, Алиса хочет отправить сообщение Бобу...

Симметричное шифрование

Итак, Алиса хочет отправить сообщение Бобу, но так, чтобы любопытная Ева не могла ознакомиться с его содержимым. Где и как будет передаваться сообщение - Алиса не знает, но знает, что Ева - особа крайне любопытная и при случае обязательно сунет нос в их с Бобом переписку.

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

Привет Боб

в последовательность чисел:

3/9 1/8 5/1 7/1 2/2 6/3 4/3 1/5 1/13

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

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

Ключ - основа секретности любого криптографического алгоритма и должен сохраняться в тайне.

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

Итак, Алиса успешно зашифровала сообщение и отправила его Бобу. Но возникает новая сложность - каким образом передать Бобу ключ?

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

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

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

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

Алгоритм Диффи-Хеллмана

Передача ключа по незащищенному каналу была большой проблемой криптографии в XX веке. Действительно, возникал некий, неразрешимый на первый взгляд, парадокс: для защиты открытого канала стороны должны прежде обменяться секретной информацией, которую нельзя передавать по открытым каналам. Однако в 1976 году Уитфилдом Диффи и Мартином Хеллманом, а также независимо от них Ральфом Мерклом был предложен алгоритм, получивший впоследствии название алгоритм (протокол) Диффи-Хеллмана .

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

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

Итак, Алиса хочет послать сообщение Бобу...

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

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

В случае с вычислениями по модулю это потребует практически полного перебора всех возможных исходных значений, что способно занять очень много времени, особенно если исходные данные 1024 и 2048-битные числа.

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

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

Кроме очевидных достоинств, алгоритм Диффи-Хеллмана имеет и существенные недостатки, один из которых - отсутствие взаимной аутентификации сторон, т.е. у Алисы нет уверенности, что промежуточный цвет прислал ей именно Боб и наоборот. Это делает возможными атаки типа "человек посередине" о которых мы поговорим позже.

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

Асимметричное шифрование

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

Вернемся к нашим героям.

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

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

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

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

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

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

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

Атака "Человек посередине"

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

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

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

В данном случае мы показали классический пример атаки на RSA, но точно таким же образом Мэллори может осуществить атаку и на алгоритм Диффи-Хеллмана.

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

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

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

Удостоверяющий центр

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

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

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

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

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

Также Алиса может выпустить и передать Бобу сертификат своего удостоверяющего центра (CA, Certification authority ), который содержит открытый ключ, позволяющий проверить подлинность любого выпущенного Алисой при помощи данного удостоверяющего центра сертификата. Здесь возникает еще один интересный момент. Сертификат CA не содержит секретных сведений, но его не следует передавать по незащищенным каналам, а также следует хранить его так, чтобы избежать доступа к нему третьих лиц.

Почему так? Весь вопрос в доверии, если Боб доверяет Алисе, то он доверяет ее УЦ, а установив сертификат УЦ он автоматически будет доверять любому выпущенному Алисой сертификату. Поэтому если Мэллори подменит сертификат "по дороге" или сделает это позже, в незащищенном хранилище, то Боб станет автоматически доверять сертификатам Мэллори, думая, что это сертификаты Алисы.

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

А как быть если стороны не знают друг друга? Скажем Боб хочет приобрести что-то в интернет магазине Алисы, про которую он читал много хороших отзывов, но он не знает Алису лично и не имеет возможности с ней встретиться, чтобы проверить подлинность сертификата. Да и Алиса вряд ли будет иметь столько свободного времени, чтобы иметь возможность лично знакомиться с каждым своим покупателем.

Как же быть? Выход прост: потребуется третья сторона, чей авторитет неоспорим и которая может выступить гарантом подлинности, скажем, нотариус.

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

Если сертификат не содержит подписи Трента, то Боб не может проверить, принадлежит данный сертификат Алисе, либо это проделки Мэллори и поэтому, при невозможности точно проверить подлинность, такие (самоподписанные) сертификаты следует отклонять.

Может ли Мэллори подписать свой сертификат у Трента? Вполне, но она сможет подписать его только от своего имени и представиться Алисой у нее уже не получится.

В современной инфраструктуре открытых ключей (PKI, Public Key Infrastructure ) роль нотариуса Трента исполняют доверенные корневые центры сертификации, сертификаты которых поставляются в составе операционной системы и располагаются в защищенном хранилище.

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

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

Соединение с сайтом, использующим DV-сертификат выглядит следующим образом, а в поле Субъект сертификата находится только доменное имя:

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

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

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

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

Внешне соединение с таким сайтом ничем не отличается от сайта с DV-сертификатом, но поле Субъект содержит дополнительные сведения о владельце.

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

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

EV - Extended Validation - сертификат с расширенной проверкой, выдается только компаниям и только после ряда дополнительных проверок. В частности, проверяется не только факт существования компании, но и соответствие указанных сведений действительности, например, проверяется наличие компании по указанному адресу, принадлежность компании указанных телефонов и возможность по ним связаться и т.д., и т.п.

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

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

Однако не следует впадать в эйфорию и читать EV-сертификат залогом добросовестности компании или высокого качества ее работы, он всего лишь подтверждает, что компания не только существует, но и ведет свою деятельность по указанным координатам, ни больше, ни меньше. Так наличие у Почты России DV-сертификата нисколько не уменьшит уровень доверия к ним, ровно как наличие у ООО "Рога и копыта" сертификата уровня EV доверия к ним не повысит.

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

  • Теги:

Please enable JavaScript to view the

12.1. Введение. К истории стеганографии и криптографии.

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

Размышляя над задачей ТП, нетрудно прийти к выводу, что есть три возможности:

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

Прокомментируем эти три возможности.

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

Стеганография как наука сейчас находится в состоянии подъема, связанного с процессом стремительного развития Интернета. В переводе с греческого «стеганография» буквально означает «тайнопись» (steganos - тайна; graphy - писать). Целью стеганографии является сокрытие передачи информации; она не может заменить криптографию, но вместе с ней позволяет осуществлять максимально безопасную передачу сообщений.

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

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

Главная особенность компьютерной тайнописи - сокрытие файла- сообщения внутри файла-контейнера. В роли контейнера обычно выступают широко распространенные файлы графических форматов BMP, GIF, JPEG или звуковых WAV, хотя возможны и иные - все зависит от конкретной реализации. Современные компьютерные стеганографические системы используют в основном LSB-метод, или метод замены наименее значащего бита. Суть этого метода состоит в подмене значения бита наименьшей значимости. Предположим, мы хотим сокрыть сообщение внутри контейнера, в роли которого выступает черно-белая фотография. В стандартном восьмибитовом цифровом изображении значение яркости меняется от 0 до 255, изменение значения последнего бита может увеличить или уменьшить значение яркости на единицу. Таким образом, среднее изменение яркости пиксела не превысит одного процента. Добавим, что незначительному изменению подвергаются далеко не все элементы изображения, а значит, оно не будет внешне отличаться от оригинала. Из сказанного следует, что визуально отличить изменение файла-контейнера труднее, если он представляет собой изображение с равномерным контрастным шумом. Описанный выше метод применяют и для сокрытия сообщений в файлах звуковых форматов, при этом изменение оригинала-контейнера на слух практически неразличимо, а качественным контейнером может считаться файл с большими фоновыми шумами.

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

Несмотря на относительную молодость направления компьютерной стеганографии, с помощью поисковых систем в Интернете можно найти достаточное количество как профессиональных, так и любительских программ для тайнописи. Одним из наиболее удачных является пакет Steganos Security Suite 4. Эта программа является мощным набором утилит для обеспечения конфиденциальности информации. В ее состав входят средства для защиты дисков и доступа к компьютеру в целом, шифровки почтовых сообщений, обеспечения безопасности работы в Интернет, профессиональная утилита для гарантированно невосстановимого удаления файлов и, конечно же, качественная стенографическая система. Для интересующих нас целей предназначена утилита Steganos File Manager. С ее помощью возможно выбрать файл-контейнер из уже существующих на диске пользователя либо с помощью сканера или микрофона самостоятельно создать файл подходящего формата. Программа может не только надежно упрятать сообщение в выбранный контейнер, но и создать саморас- паковывающийся архив.

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

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

3. Разработкой методов преобразования (шифрования) информации с целью ее защиты от незаконных пользователей занимается криптография. Такие методы и способы преобразования информации называются шифрами.

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

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

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

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

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

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

История криптографии связана с большим количеством дипломатических и военных тайн и поэтому окутана туманом легенд. Свои след в истории криптографии оставили многие хорошо известные исторические личности. Приведем несколько наиболее ярких примеров. Первые сведения об использовании шифров в военном деле связаны с именем спартанского полководца Лисандра (шифр «Сцитала»). Цезарь использовал в переписке шифр, который вошел в историю как «шифр Цезаря». В древней Греции был изобретен вид шифра, который в дальнейшем стал называться «квадрат Политая». Одну из первых книг по криптографии написал аббат И. Трителий (1462-1516), живший в Германии. В 1566 году известный математик Д. Кардано опубликовал работу с описанием изобретенной им системы шифрования («решетка Кардано»). Франция XVI века оставила в истории криптографии шифры короля Генриха IV и Ришелье. Имелось и много российских шифров, в том числе и «цифирная азбука» 1700 года, автором которой был Петр Великий.

Некоторые сведения о свойствах шифров и их применении можно найти и в художественной литературе, особенно в приключенческой, детективной и военной. Хорошее подробное объяснение особенностей одного из простейших шифров - шифра замены и методов его вскрытия содержится в двух известных рассказах: «Золотой жук» Э. По и «Пляшущие человечки» А. Конан Дойла.

Рассмотрим два примера.

Исторический процесс развития средств и методов защиты информации выработал три основных способа защиты.

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

Второй способ защиты информации – стеганография. Применение стеганографии обеспечивает сокрытие от противника самого факта передачи информации. Стеганографическая защита информации обеспечивается различными способами, например:

Использованием «невидимых» носителей информации (микропленок);

Применением симпатических чернил, которые становятся видимыми при соответствующей химической обработки носителя информации;

Маскированием секретной информации обычным посланием и т.д.

В современной стеганографии имеется достаточно широкий спектр методов защиты информации .

Третий, наиболее надежный и распространенный способ защиты информации – криптографический. Именно криптографическим методам защиты информации и посвящено данное учебное пособие.

1.1. Основные понятия и определения криптографии

Рассмотрим основные понятия, принятые в криптографии , и вначале определим, что такое криптография.

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

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



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

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

Классификация криптосистем представлена на рис. 1.1.

Рис. 1.1. Классификация криптосистем

Более полная классификация криптосистем приведена, например в .

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

Рис. 1.2. Упрощенная структурная схема симметричной криптосистемы

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

По виду криптографического преобразования – на шифры перестановки, шифры замены и композиционные шифры;

По конструктивным принципам – на поточные криптосистемы и блочные криптосистемы.

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

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

Рис. 1.3. Упрощенная структурная схема асимметричной криптосистемы

1.2. Из истории криптографии

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

В криптографии с древних времен использовались два вида шифров: замены (подстановки) и перестановки. Историческим примером шифра замены является шифр Цезаря (I век до н.э.), описанный историком Древнего Рима Светонием. Гай Юлий Цезарь использовал в своей переписке шифр собственного изобретения. Применительно к русскому языку он состоит в следующем. Выписывается алфавит, а затем под ним выписывается тот же алфавит, но с циклическим сдвигом на три буквы влево:

А Б В Г Д Е Э Ю Я
Г Д Е Ё Ж З А Б В

Зашифрование заключается в выборе буквы из первой строки и замену ее на букву второй строки, расшифрование представляет собой обратную операцию. Например, РИМ – УЛП. Ключом шифра Цезаря является величина циклического сдвига. Гай Юлий Цезарь всю жизнь использовал один и тот же ключ – сдвиг на 3 буквы. Приемник Юлия Цезаря – Цезарь Август использовал тот же шифр, но со сдвигом на одну букву. Светоний не приводит фактов дешифрования шифра Цезаря, однако в те времена, когда царила всеобщая неграмотность, даже обычное открытое послание могло остаться непрочитанным.

Одним из первых физических приборов, реализующих шифр перестановки является скитала . Он был изобретен в древней Спарте (V век до н.э.). Кроме Древней Греции прибор скитала использовался широко и в Древнем Риме. Скитала (в переводе - «жезл») представляет собой цилиндр заданного диаметра. На цилиндр наматывался ремень из пергамента, на который наносился текст сообщения вдоль оси цилиндра. Затем ремень сматывался и отправлялся получателю сообщения. Последний, имея аналогичный цилиндр, расшифровывал сообщение. Ключом шифра является диаметр скитала. Изобретение дешифровального устройства приписывается Аристотелю. Он предложил использовать для дешифрования конусообразное «копье», на которое наматывался перехваченный ремень, до тех пор, пока не появлялся осмысленный текст.

Одним из первых исторических имен, которое упоминается в связи с криптографией, это имя Энея - легендарного полководца, защитника Трои. В области тайнописи Энею принадлежат два изобретения. Первое из них – так называемый диск Энея . Его принцип прост. На диске размером 10-15 см и толщиной 1-2 см высверливались отверстия по числу букв алфавита. В центре диска закреплена катушка с нитью. При зашифровании нитка последовательно протягивалась через отверстия соответствующие буквам послания. Диск отсылался получателю, который вытягивал нитку из отверстий и получал сообщение в обратном порядке. Другим устройством является линейка Энея . Здесь вместо диска использовалась линейка с числом отверстий, равным числу букв в алфавите. Буквы по отверстиям располагались в произвольном порядке. К линейке прикреплялась катушка с нитью. При шифровании нить протягивалась через отверстие, соответствующее букве шифруемого послания, при этом на нити в месте прохождения отверстия завязывался узелок. Таким образом, зашифрованное послание представляло собой нить с узелками, в которой каждой букве ставилось в соответствие расстояние между узелками нити. Ключом шифра являлся порядок следования букв по отверстиям линейки. Аналогичное линейке Энея кипу (узелковое письмо) получило широкое распространение у индейцев Центральной Америки.

Еще оно изобретение древних греков – квадрат Полибия (Полибий – греческий государственный деятель, полководец, историк III века до н.э):

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

Применительно к современному латинскому алфавиту шифрование по этому квадрату заключалось в следующем. Шифруемая буква заменялась на координаты квадрата, в котором она записана. Так буква R заменяется на DB. При расшифровании каждая пара букв определяет соответствующую букву сообщения. Например, TABLE – DDAAABCAAE. Ключом этого шифра является сам квадрат. Усложненный вариант квадрата Полибия заключается в произвольном порядке записи букв в квадрате. При этом для запоминания такого произвольного порядка использовался лозунг, который представлял собой слово, записываемое без повтора букв в квадрат, а оставшиеся клетки квадрата заполнялись по порядку их следования остальными буквами алфавита. Например, THE APPLE соответствует THEAPL.

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

Во времена средневековья европейская криптография приобрела сомнительную славу, отголоски которой слышаться и в наши дни. Дело в том, что криптографию стали отождествлять с черной магией, астрологией, алхимией, к шифрованию призывались мистические силы. Для шифрования сообщений рекомендовалось использовать «магические квадраты» . Магия этих квадратов заключалась в том, что сумма чисел по строкам, столбцам и полным диагоналям равнялась одному числу. Шифрование по «магическому квадрату» заключалось в следующем. Буквы сообщения вписывались в квадрат согласно записанным в них числам, а в пустые клетки вставлялись произвольные буквы. Шифртекст выписывался в оговоренном заранее порядке. Например, сообщение ПРИЕЗЖАЮ СЕГОДНЯ зашифрованное с помощь «магического квадрата»:

16У 13Д
10Е 11Г
12О
15Я 14Н

имеет вид УИРДЗЕГЮСЖАОЕЯНП. Данный шифр – обычный шифр перестановки, однако считалось, что особую стойкость ему придает волшебство «магического квадрата».

В XV веке аббат Тритемий сделал два новаторских предложения в области криптографии: он предложил шифр «Аве Мария» и шифр, основанный на периодически сдвигаемом ключе. Наиболее серьезное предложение Тритемия, дошедшее до наших дней, заключается в придуманной им таблице:

A B C D W X Y Z
B C D E X Y Z A
C D E F Y Z A B
Y Z A B U V W X
Z A B C V W X Y

Первая буква текста шифруется по первой строке, вторая буква по второй строке и так далее. Первая строка одновременно является строкой букв открытого текста. Например, FIGHT – FJIKX. В первоначальном варианте в шифре Тритемия отсутствовал ключ. Секретом являлся сам способ шифрования. Дальнейшее усложнение шифра шло двумя путями: введением произвольного порядка расположения букв в таблице; усложнением порядка выбора строк таблицы при шифровании. Следует сказать, что шифр Цезаря является частным случаем шифра Тритемия.

Шифр «Аве Мария» основан на принципе замены букв шифруемого текста на целые слова, из которых составлялись внешне невинные сообщения. Например, Н – «Я», «ЗДЕСЬ»; Е – «ЖДУ», «БУДУ»; Т – «ДОМА», «ВЕЧЕРОМ». Тогда открытому сообщению НЕТ могут соответствовать послания «Я ЖДУ ДОМА», «ЗДЕСЬ БУДУ ВЕЧЕРОМ».

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

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

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

Например, APPLE соответствует криптограмме вида:

: . . . :

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

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

В XVI веке заметный вклад в развитие криптографии внесли Матео Ардженти, Жовани Батиста Белазо, Джовани Батиста Порта, Кордано и др. Матео Ардженти был криптографом папы римского, именно ему принадлежит идея использования слова-лозунга для придания алфавиту легко запоминаемого смешанного вида. Ардженти также предложил вставлять в шифртекст большое количество букв «пустышек», устранять пунктуацию, не вставлять в шифртекст открытые слова («клер»), заменять буквы шифртекста на цифры. Белазо и Порта развили идеи Ардженти в своих трудах «Шифр сеньора Белазо» и «О тайной переписке».

Существенный вклад в развитие криптографии внес математик, врач и философ Кордано. Предложенный им шифр вошел в историю под названием «решетка Кордано». «Решетка Кордано» - это шифр перестановки, суть которого заключается в следующем. Брался лист плотного материала (картон, пергамент), представляющий собой квадрат в котором вырезаны «окна». При шифровании квадрат накладывался на лист бумаги и сообщение вписывалось в «окна», затем квадрат поворачивался на 90 градусов и сообщение продолжали записывать в «окна» повернутого квадрата. Такая процедура продолжалась до полного поворота квадрата на 360 градусов. Главное требование «решетки Кордано» - при всех поворотах «окна» не должны попадать на дно и тоже место, а при полном повороте квадрата все места в шифртексте оказываются занятыми. Шифртекст считывался по строкам из полученной таблицы. Предложенный Кордано шифр лежит в основе знаменитого шифра Ришелье , в котором шифрованный текст внешне имел вид обычного послания. Накладывая на лист с таким посланием прямоугольник прорезанными с окнами можно было прочесть сообщение. Шифр Ришелье не относиться ни к шифрам замены, ни к шифрам перестановки, он представлял собой стеганографический способ защиты информации. Такого рода шифром пользовался русский писатель и государственный деятель А.С. Грибоедов будучи послом в Персии.

Кордано выдвинул, но не успел целиком реализовать идею «самоключа». Суть ее заключается в использовании в качестве ключа части открытого сообщения.

Познакомившись в трудами Тритемия, Белазо, Кордано и Альберти французский государственный деятель Блез де Виженер разработал собственный шифр, который получил название шифр Виженера . Суть шифра заключалась в том, что выбирался секретное слово, которое являлось ключом шифра. Это слово выписывалось под открытым сообщением периодически. Верхняя буква открытого текста соответствовала столбцу таблицы Тритемия, а нижняя буква ключа – строке таблицы Тритемия, буква, стоящая на пересечение строки и столбца являлась буквой шифртекста. Шифр Виженера представляет собой шифр замены. В последующем этот шифр был несколько упрощен для практического использования начальником первого в Германии государственного дешифровального отдела графом Гронсфельдом. Шифр Виженера и шифр Гронсфельда являются по сути дела родоначальниками широко используемого в настоящее время шифра гаммирования. Шифр Виженера использовался в различных вариантах вплоть до XIX века. Одним из наиболее известных модификаций шифра Виженера является шифр английского адмирала Бофора. Достоинство шифра Бофора заключается в том, что правило зашифрования сообщений и их расшифрования совпадают.

Широкое развитие криптографии в XVI веке было связано в развитие естественных наук, математики. В это же время в Европе появляются первые специальные органы дипломатической службы, которые занимались вопросами шифрования собственной корреспонденции и дешифрования перехваченной корреспонденции. XVII-XVIII века вошли в историю криптографии как эра «черных кабинетов». «Черные кабинеты» - специальный государственный орган по перехвату, перлюстрации и дешифрованию переписки, в первую очередь дипломатической. В штат «черных кабинетов» входили дешифровальщики, агенты по перехвату почты, писцы-копировальщики, переводчики, специалисты по подделке печатей, химики, специалисты по подделке почерков и т.д. Эти специалисты ценились весьма высоко и находились под особым покровительством властей, предательство очень сурово наказывалось.

В XIX веке появляются первые механические шифровальные устройства. Наиболее известными являются изобретения полковника американской армии Д. Уодсворта и английского инженера Ч. Уитстона. Устройство Уодсворта (1817 г.) представляло механический шифратор основными элементами которого были два шифровальных диска, на торце дного располагались буквы английского алфавита, а на торце второго буквы и цифры от 2 до 8. Литеры на втором диске били съемные, что позволяло менять алфавит шифрованного текста. Диски помещались в футляр с прорезанными в нем окнами. При вращении первого диска в верхнем окне выставлялась буква открытого сообщения. Диски были соединены шестеренчатой передачей, поэтому в нижнем окне появлялась соответствующая буква шифртекста. Устройство было снабжено специальной кнопкой для разъединения дисков. Это требовалось для того, чтобы обеспечивать установку устройства в заданное начальное положение. В устройстве Уодсворта просматриваются идеи Альберти, Тритемия, Виженера. Несмотря на то, что устройство было достаточно громоздким, к тому же в это время господствовали «ручные» шифры, которые не требовали специальных приспособлений, оно послужило толчком к развитию механических устройств для шифрования и расшифрования сообщений.

Интересное предложение по созданию механического устройства шифрования сделал Ч. Уитстон во второй половине XX века. В устройстве Уитстона просматриваются идеи Альберти, а также Уодсворта. Внешне устройство Уитстона напоминает диск Альберти, однако в нем реализована парадоксальная идея – алфавит открытого текста содержит большее количество знаков, чем шифрованного. Проблема неоднозначности в определении букв открытого сообщения решена Уитстоном блестяще. На рис. 1.4 представлен внешний вид устройства Уитстона.

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

Рис. 1.4. Внешний вид устройства Ч. Уитстона

В начале шифрования большая (длинная) стрелка указывает на знак "+". Малая стрелка, связанная с большой резьбовой шестеренкой, ставилась в то же положение, т.е. "часы" показывали "12.00". Набор букв открытого текста производился поворотом большой стрелки по направлению движения часовой. После такого поворота малая стрелка указывает знак шифрованного текста. Таким образом, при полном повороте большого диска малый диск смещался на единицу по отношению к исходному взаимному состоянию двух дисков, что приводило к сдвиговому изменению алфавита шифрованного текста по отношению к алфавиту открытого текста. По окончании каждого слова большая стрелка становилась на знак "+", буква, на которую при этом указывала короткая стрелка, записывалась как знак шифрованного текста. Во избежание неоднозначности расшифрования, удвоение букв в открытом тексте не допускается. Повторную букву следует либо пропустить, либо ставить вместо нее какую-нибудь редкую букву, например Q. Например, слово THE APPLE при шифровании записывается как +THE+APLE+ или +THE+APQLE+.

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

В начале XX века значительный вклад в развитие криптографии внес американец Г. Вернам. В 1917 году он, будучи сотрудником телеграфной компании, предложил идею автоматического шифрования телеграфных сообщений, суть которой заключается в следующем. Открытый текст представляется в коде Бодо (в виде пятизначных "импульсных комбинаций"). В этом коде, например, буква "А" имела вид (+ + - - -). На бумаге знак "+" означал отверстие, а знак "-" - его отсутствие. При считывании с ленты пятерка металлических щупов "опознавала" отверстия (при наличии отверстия щуп замыкал электрическую цепь). В линию связи посылались импульсы тока. Вернам предложил электромеханически покоординатно складировать импульсы знаков секретного текста с импульсами секретного ключа, представляющего из себя хаотический набор букв того же самого алфавита. Сложение, по современной терминологии, осуществлялось по модулю 2. Г. Вернам создал устройство, производящее операции шифрования автоматически, без участия шифровальщика, тем самым было положено начало так называемому "линейному шифрованию", когда процессы шифрования и передачи сообщения происходят одновременно. До той поры шифрование было предварительным, поэтому линейное шифрование существенно повышало оперативность связи. Шифр Вернама обладает исключительной криптографической стойкостью. В то же время очевиден и недостаток этой системы шифрования - ключ должна иметь ту же длину, что и открытый текст. Для расшифрования на приемном конце связи туда нужно передать (по тайным, защищенным каналам) ключ достаточной длины. При практической реализации это порождает проблемы, причем весьма существенные, что и предопределило скромное распространение шифров Вернама. Сам Вернам не был математиком-криптографом, тем не менее, он настаивал на том, что ключ шифра не должен повторяться при шифровании, и в этом, как показала история криптографии, он был прав. Его идеи породили новые подходы к надежной защите информации при передаче больших объемов сообщений.

Первая половина XX века стала «золотым веком» электромеханических шифровальных машин . Наибольшую известность получило семейство немецких электромеханических шифровальных машин Enigma. Различные модификации этой шифровальной машины использовались германскими войсками с конца 1923 года вплоть до 1945 года. В 1943 году союзникам по антигитлеровской коалиции удалось «взломать» машину Enigma, что сыграло большую роль в победе во Второй мировой войне. Для передачи наиболее секретных сообщений во время Второй мировой войне немцами использовалась шифровальная машина Lorenz. В американской армии с 1923 по 1943 год использовалась механическое устройство для шифрования М-94. В основу этого устройства положен диск Альберти. Для защиты дипломатической переписки в США использовалась машина Хеберна MarkII. Шведский криптограф Б. Хагелин разработал для французской секретной полиции шифровальное устройство СD-57, а для французских спецслужб – шифровальную машину М-209. Модификация этой машины использовалась также и американскими военными во Второй мировой войне. С 1939 года по 1952 год японцы использовали шифровальную машину для защиты дипломатической переписки под названием «Тип 97» и ее модификацию. В США эти машины получили красочное обозначение «Пурпурный код» и «Красный код». В СССР перед войной и в годы Великой Отечественной войны широко использовалась малогабаритная дисковая кодировочная машина К-37 «Кристалл». Только в 1940 году было выпущено 100 комплектов этой машины. После войны были подведены итоги эксплуатации К-37 и проводилась работа по ее дальнейшему совершенствованию.