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

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

Простое, но очень стойкое.

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

Принцип работы

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

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

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

Алгоритмы шифрования

Симметричное шифрование в общих чертах работает так:

  1. Берём ключ и данные, которые нужно зашифровать.
  2. С помощью математических функций и преобразований мы соединяем ключ и данные. Например, берём каждый байт сообщения, умножаем на число из ключа и получаем новое число. Так делаем с каждым байтом исходного сообщения и на выходе получаем зашифрованные данные — массив из цифр.
  3. Эти данные можно передавать по любому каналу связи. Даже если их перехватят, то без ключа всё равно не прочитают.
  4. Получатель берёт этот массив из чисел, делит каждое на число из того же ключа и получает исходное сообщение, которое можно прочитать. 

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

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

Простой пример

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

  1. Составляем сообщение на русском языке.
  2. Берём ключ (число) и сдвигаем все символы в сообщении на это число. Например, если ключ равен трём, то А (1-я позиция) сдвигается на три позиции дальше по алфавиту и превращается в Г (4-я позиция), Л превращается в О и так далее. Если при сдвиге мы выходим за границу алфавита, то возвращаемся в начало алфавита и продолжаем отсчёт оттуда.
  3. Таким способом шифруем всё сообщение, буква за буквой.
  4. Отдаём шифровку другу.
  5. Он берёт каждый символ и сдвигает его на три позиции назад по алфавиту. В итоге у него все буквы вернутся на свои места и получится тот текст, который мы отправляли.

Если взять ключ 10 и зашифровать им фразу «Привет, это журнал Код!», то получится так:

Щътлоь, жьш рэъчйх Фшн!

Этот алгоритм слишком прост для современной криптографии, потому что взламывается почти моментально, но для игр в шпионов с детьми — самое то.

👉 Алгоритм из нашего примера называется шифром Цезаря, потому что так римский император шифровал важные сообщения своим генералам.

Плюсы и минусы симметричного шифрования

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

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

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

Почти всё общение в современных мессенджерах построено на симметричном шифровании.

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

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

Любая защищённая линия связи, от правительственной до частной, использует симметричное шифрование.

Что дальше

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

Текст

Миша Полянин


Редактор

Максим Ильяхов


Корректор

Ира Михеева


Иллюстратор

Даня Берковский


Вёрстка

Маша Дронова


Доставка

Олег Вешкурцев

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
medium