Код
#статьи

Шифры и коды: 7 популярных методов шифрования

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

Иллюстрация: Оля Ежак для Skillbox Media

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

Содержание

Как устроено шифрование

Чтобы воспользоваться шифром, вам понадобятся:

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

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

Чем шифр отличается от кода

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

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

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

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

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

Реплика криптекса из фильма «Код да Винчи»
Кадр: Алексей Якушечкин / YouTube

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

Какие бывают методы шифрования

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


Шифр Цезаря: шифрует по буквам алфавита

Шифр Цезаря — это один из самых простых и старейших методов шифрования. Он был назван в честь римского императора Юлия Цезаря, который использовал его для секретной переписки.

Как работает шифр. Шифр Цезаря представляет собой моноалфавитный шифр подстановки, где каждая буква в тексте сдвигается на фиксированное количество позиций по алфавиту. Например, если сдвиг равен 3, то буква «А» становится «Г», «Б» — «Д» и так далее.

Инфографика: Оля Ежак для Skillbox Media

Пример шифрования. Допустим, нам нужно зашифровать слово «Привет» с использованием сдвига на три позиции:

  • П → переходим на три буквы вправо: П → Р → С → Т
  • Р: Р → С → Т → У
  • И: И → Й → К → Л
  • В: В → Г → Д → Е
  • Е: Е → Ж → З → И
  • Т: Т → У → Ф → Х

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

Шифр Виженера: шифрует с помощью ключа

Шифр Виженера — это полиалфавитный шифр, который развивает идеи шифра Цезаря. Его изобрёл французский дипломат Блез де Виженер в XVI веке. Он считается одним из первых методов шифрования, устойчивых к частотному анализу.

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

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

Пример шифрования. Зашифруем слово SKILLBOX с ключом KEY:

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

  • Оригинальный текст: SKILLBOX.
  • Ключевое слово: KEYKEYKE.

2. Теперь шифруем каждую букву, складывая позиции букв исходного текста и ключевого слова по алфавиту. После с помощью нахождения остатка от деления узнаём порядковый номер буквы в алфавите и подставляем новую букву. Помним, что всего в английском алфавите 26 букв, а для шифрования будем использовать алфавит, в котором A = 0, B = 1, …, Z = 25.

  • S (18) + K (10) = 28 % 26 = 2 → C
  • K (10) + E (4) = 14 % 26 = 14 → O
  • I (8) + Y (24) = 32 % 26 = 6 → G
  • L (11) + K (10) = 21 % 26 = 21 → V
  • L (11) + E (4) = 15 % 26 = 15 → P
  • B (1) + Y (24) = 25 % 26 = 25 → Z
  • O (14) + K (10) = 24 % 26 = 24 → Y
  • X (23) + E (4) = 27 % 26 = 1 → B

Зашифрованное сообщение: COGVPZYB.

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

Шифр Атбаш: шифрует в обратном порядке

Шифр Атбаш — это древний шифр замены, который использовался в еврейских текстах. Он является одним из простейших примеров моноалфавитного шифра.

Как работает шифр. Шифр Атбаш основан на инверсии алфавита: первая буква заменяется последней, вторая — предпоследней и так далее. В английском алфавите A меняется на Z, B на Y и так далее. В русском алфавите из шифра обычно исключают букву Ё, как мы и сделаем в примере ниже.

Пример шифрования. Зашифруем слово «привет»:

  • П → Р
  • Р → П
  • И → Ч
  • В → Э
  • Е → Ъ
  • Т → Н

Зашифрованное сообщение: РПЧЭЪН.

Шифр Плейфера: шифрует с помощью матрицы

Шифр Плейфера — это один из первых примеров биграммного шифра (шифрования парами букв), который был разработан в 1854 году Чарльзом Уитстоном, но известен под именем его популяризатора, барона Плейфера.

Как работает шифр. Шифр использует матрицу 5×5, заполненную ключевым словом и остальными буквами алфавита (буквы I и J объединяются). Сообщение делится на пары, и каждая пара шифруется в зависимости от положения букв в матрице.

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

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

Слово, которое хотим зашифровать, делим на биграммы: SKILLBOX = SK, IL, LB, OX. После этого заменяем исходные биграммы на новые, следуя правилам:

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

Например:

  • SK → PA (разные строки и столбцы);
  • IL → LM (одна строка);
  • LB → OE (разные строки и столбцы);
  • OX → NZ (разные строки и столбцы).

Зашифрованное сообщение: PALMOENZ.

Шифр Вернама: шифрует с помощью чисел

Шифр Вернама — это один из немногих шифров, который является абсолютно стойким к дешифровке. Этот шифр был разработан Гилбертом Вернамом в 1917 году.

Как работает шифр. Шифр Вернама использует одноразовый ключ, который равен по длине сообщению. Для шифрования используется операция побитового исключающего ИЛИ (XOR) между битами сообщения и ключа. При условии, что ключ используется только один раз и генерируется случайно, шифр Вернама является неуязвимым.

🛠️ Технические детали

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

Пример шифрования

Возьмём слово «ПРИВЕТ» и представим его в двоичном коде, используя кодировку UTF-8 (важно помнить, что двоичное представление букв алфавита зависит от регистра):

  • П = 11010000 10011111
  • Р = 11010000 10100000
  • И = 11010000 10011000
  • В = 11010000 10010010
  • Е = 11010000 10010101
  • Т = 11010000 10100010

Для шифрования требуется случайный ключ той же длины в двоичном виде. Для примера в качестве ключа возьмём комбинацию 01101010 10110101. Затем применим операцию XOR к каждому символу слова «ПРИВЕТ». Можно воспользоваться калькулятором, чтобы ускорить вычисления.

Результат XOR для первой пары:

11010000 10011111 XOR 01101010 10110101 = 10111010 00101010

Шифр RSA: шифрует с помощью факторизации

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

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

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

Пример шифрования. Допустим, у нас есть открытый ключ (e, n) = (3, 33) и закрытый ключ (d, n) = (7, 33). Теперь зашифруем сообщение с помощью операций возведения в степень и нахождения остатка от деления.

Сообщение = 7.

Шифрование: 73 % 33 = 343 % 33 = 13.

Зашифрованное сообщение: 13.

Расшифрование: 137 % 33 = 62 748 517 % 33 = 7.

Шифр DES (Data Encryption Standard): шифрует с помощью 56-битного ключа

Шифр DES — это симметричный алгоритм блочного шифрования, который был стандартом для защиты данных в США с 1977 по 2001 год. DES использует 56-битный ключ для шифрования данных блоками по 64 бита.

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

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

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

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

Зачем нужны шифры

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

Шифры позволяют:

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

Самое главное

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

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь работать с нейросетями — бесплатно!
Большая конференция по ИИ: пять экспертов и 10 нейросетей. Освойте нейросети — работа с ними становится обязательным навыком. Нажмите на баннер, чтобы узнать подробности.
Смотреть программу
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована