12 шифров, изменивших мир
История криптографии ведет свое начало с античных времен. В каждую эпоху были свои открытия, определившие развитие методов защиты секретных сообщений от посторонних глаз.
Гай Юлий Цезарь применял для передачи военных приказов и дипломатических сообщений систему тайнописи, получившую название «шифр Цезаря». Технически это сдвиговый шифр или шифр простой замены. В нем каждая буква исходного слова заменяется другой буквой, находящейся от нее в алфавите дальше на N символов. В классическом варианте N равнялось трем, поэтому латинская А заменялась на D, B — на E и так далее.
Например, подпись «Gaius Iulius Caesar» в зашифрованном виде выглядела как «Jdlxv Lxolxv Fdhvdu». Для кириллического алфавита выполняется аналогичный сдвиг на три буквы вправо: А → Г, Б → Д … Я → В (алфавит замыкается). Таким образом, «Гай Юлий Цезарь» превращается в «Ёгм Болм Щзкгуя», а «Криптонит» в «Нултхсрлх». Конечно, N может быть любым целым числом, и даже отрицательным (тогда сдвиг выполняется влево).
Для удобства шифрования таких сообщений был изготовлен диск, а точнее — два диска разного диаметра, закрепленных на одной оси. Каждый из них был разделен на 26 секторов по числу латинских букв. На обоих дисках буквы записаны как в алфавите и по одной в каждом секторе. Зная ключ, достаточно было сдвинуть на это значение диски относительно друг друга, чтобы прочитать зашифрованное сообщение, или написать свое. Например, если ключ равен трем, то диски вращаются до тех пор, пока напротив A не появится литера D.
По современной классификации это шифр маршрутной перестановки. Перестановка символов открытого текста выполнялась с помощью ленты, намотанной на палочку известной длины и диаметра (скиталу).
Использование шифра древней Спарты заключалось в том, что текст сообщения записывали на пергаментной ленте, которая была намотана по спирали на цилиндрическую палочку. Когда палочка заканчивалась, ее поворачивали вокруг оси и продолжали писать текст. Для расшифрования требовалась палочка такого же диаметра.
Слабость данного метода шифрования заключается в том, что длина исходного текста и зашифрованного сообщения получаются одинаковыми. Более того, частота встречаемости букв тоже остается прежней, а меняется только их порядок.
Это древнерусский шифр простой замены, существовавший в моно- и полиалфавитном варианте со времен татаро-монгольского ига. Он применялся для секретной переписки в основном в среде духовенства.
Моноалфавитная разновидность была основана на замене одних согласных букв на другие по секретной таблице. Она называлась простой литореей или тарабарской грамотой. Такой вид тайнописи применялся для шифрования сообщений низкого и среднего уровня секретности.
Более сложный полиалфавитный вариант включал в себя также замены некоторых букв на символы латинского и греческого алфавита, групповые подстановки и сдвиг. Он именовался мудрой литореей и применялся для шифрования особо секретных сведений.
В 1550 году итальянский математик Джероламо Кардано предложил использовать для шифрования прямоугольный трафарет в виде таблицы, часть ячеек которой вырезана. Секретное сообщение вписывалось в пустые ячейки, затем трафарет убирался, а оставшееся место заполнялось для маскировки произвольным «безобидным» текстом. Таким образом, секретное сообщение «растворялось» в обычной с виду переписке, а сам факт шифрования скрывался.
Сложность была в том, что маскирующий текст нужно было каждый раз придумывать, подгоняя его с учетом позиций символов секретного текста.
На протяжении XVI — XIX веков на основе простой и симметрично-поворотной решетки Кардано были разработаны различные варианты транспозиционного шифра. Поворотная решетка представляла собой симметричный (квадратный) трафарет, который можно было применять в процессе написания одного сообщения несколько раз, просто поворачивая его вокруг центра. В результате получалась таблица с буквами, которая выглядела бессмысленно. Факт шифрования становился очевидным, но устранялась необходимость каждый раз выдумывать маскирующий текст.
В XVI веке французский дипломат Блез де Виженер предложил использовать полиалфавитный сдвиговый алгоритм шифрования. Он представлял собой последовательное применение шифра Цезаря к каждой букве открытого текста, но с различными значениями сдвига. Величина сдвига определялась ключевой последовательностью (чаще всего — секретным словом или фразой): «A» — сдвиг на 0; «B» — сдвиг на 1; C — сдвиг на 2 и т.д. Ключевая последовательность повторялась до тех пор, пока ее размер не совпадал с размером открытого текста.
Этот биграммный шифр замены был изобретён в 1854 году английским физиком Чарльзом Уитстоном и рекомендован для использования британскими вооруженными силами лордом Лайоном Плейфером, в честь которого и был назван.
Шифр Плейфера использует матрицу 5х5 для латинского алфавита (обычно «I» и «J» объединяются в одну ячейку), в которую записывается ключевое слово, а затем оставшиеся буквы алфавита. При шифровании открытый текст разбивается на пары символов (биграммы), которые заменяются с помощью матрицы по некоторому правилу. Поскольку шифруются не отдельные буквы, а биграммы, то для латинского алфавита получаем 26 х 26 = 676 возможных биграмм.
В 1917 году американским инженером Гилбертом Вернамом был предложен способ шифрования телетайпа (текста записанного на перфоленту с помощью пятизначного кода Бодо). Сообщение и ключ разбивались на отдельные символы, и каждый символ представлялся в бинарном виде. После чего символы открытого текста складывались с помощью логической операции XOR с символами ключа.
Например, букву «А» (10000) складываем с символом «O» (11100) и получаем символ шифртекста I (01100). Владимир Котельников и Клод Шеннон независимо доказали теоретическую невозможность взломать шифр Вернама для случая, когда ключ является случайной непредсказуемой последовательностью, длина которой равна длине открытого текста, и применяемой однократно (не используемой для шифрования других сообщений). Поэтому данный шифр ещё называют «одноразовый блокнот» (OTP — one time pad).
Асимметричный алгоритм шифрования (также называемый «алгоритм шифрования с открытым ключом»), предложенный в 70-х годах XX века. Название RSA происходит от первых букв фамилий его авторов: Rivest, Shamir и Adleman. Принцип RSA может использоваться как для шифрования, так и для создания электронной подписи. Стойкость RSA основана на сложности задачи разложения на множители больших целых чисел. RSA был самым популярным алгоритмом шифрования с открытым ключом в конце XX века и успешно использовался более трех десятилетий. В настоящее время из-за большого числа ограничений на используемые параметры, определяемых найденными уязвимостями, алгоритм RSA используется крайне редко.
В 1998 году два бельгийский криптографа Винсент Рэймен и Йоан Дэймен предложили блочный алгоритм симметричного шифрования на основе SP-сети, получивший название «Рейндэл» — по первым буквам фамилий разработчиков. В 2002 году этот алгоритм победил на конкурсе NIST и стал новым национальным стандартом шифрования США —AES.
Если информационный блок представить в виде двумерного массива байт, то каждая итерация AES может быть представлена как последовательное преобразование отдельных ячеек, строк и столбцов массива. Таким образом, алгоритм AES основан на чередовании наложений ключа, байтовых подстановок, перестановок и линейных преобразований.
Длина блока в алгоритме AES составляет 128 бит, а количество итераций зависит от длины ключа, которая может выбираться из нескольких стандартных значений: 128, 192 или 256 бит.
Поточный алгоритм шифрования, разработанный в Швеции в 2009 году. Алгоритм представляет собой линейный регистр сдвига из 16 элементов, выход которого подается на блок усложнения. В результате на основе 128-битного ключа и 128-битного начального вектора алгоритм вырабатывает 32-х битную последовательность, которая побитно складывается по модулю 2 (XOR) с открытым текстом. Несмотря на название, алгоритм Snow 3G используется для шифрования трафика в радиоинтерфейсе мобильных сетей связи как 3-го, так и 4-го поколений (3G/UMTS и 4G/LTE).
Российский блочный алгоритм симметричного шифрования на основе сети Фейстеля. В виде более общей конструкции он был принят как советский ГОСТ 28147-89. Длина шифруемого блока у «Магмы» составляет 64 бита, а длина ключа шифрования — 256 бит.
Из исходного 256-битного ключа выбираются отдельные отрезки для серии повторяющихся действий (итераций). На каждой итерации блок разделяется на две 32-битные части, одна из которых преобразуется с помощью 4-битных подстановок, циклического сдвига и сложения по модулю 2³² с ключом итерации.
После определения значений всех параметров алгоритм «Магма» стал стандартом Российской Федерации (ГОСТ Р 34.12-2015), а затем и межгосударственным стандартом (ГОСТ 34.12-2018). Несмотря на почтенный возраст, «Магма» остается стойким алгоритмом шифрования, который эффективен, в том числе, и на устройствах со скромными вычислительными ресурсами.
Российский алгоритм симметричного шифрования на основе SP-сети. Длина шифруемого блока составляет 128 бит, а длина ключа шифрования — 256 бит. Каждая итерация алгоритма состоит из операции наложения итерационного ключа (покоординатного сложения по модулю 2), применения блока подстановок (нелинейные преобразования, действующие на двоичные 8-битные векторы) и линейного преобразования. Последнее реализуется линейным регистром сдвига. Данная особенность позволяет разрабатывать эффективные реализации для различных платформ.
Современные алгоритмы шифрования имеют мало общего с древними методами тайнописи, но без такого исторического наследия развитие криптографии было бы невозможно. В настоящее время криптография используется повсеместно — от оплаты проезда и защиты данных на смартфоне до правительственной и военной связи. Помимо постоянной разработки более стойких алгоритмов шифрования, развиваются принципиально новые направления: электронная подпись, постквантовая криптография и цифровые фиатные деньги.
Источник:
22 комментария
2 года назад
"Из исходного 256-битного ключа выбираются отдельные отрезки для серии повторяющихся действий (итераций). На каждой итерации блок разделяется на две 32-битные части, одна из которых преобразуется с помощью 4-битных подстановок, циклического сдвига и сложения по модулю 2 с ключом итерации." Что это значит?
Удалить комментарий?
Удалить Отмена2 года назад
Удалить комментарий?
Удалить Отмена2 года назад
Удалить комментарий?
Удалить Отмена2 года назад
Удалить комментарий?
Удалить Отмена