Перейти к содержимому

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

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

Как работает симметричное шифрование

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

Алгоритмы симметричного шифрования: блочные и поточные

  • Блочные режут данные на блоки фиксированной длины и шифруют блок за блоком. AES (стандарт FIPS 197, 26 ноября 2001 года) работает с блоком в 128 бит и ключом в 128, 192 или 256 бит. В ГОСТ Р 34.12-2015 (на его основе подготовлен межгосударственный ГОСТ 34.12-2018, введённый в России с 1 июня 2019 года) описаны «Кузнечик» (блок 128 бит, ключ 256 бит) и «Магма» (блок 64 бита, ключ 256 бит). Как блоки связывают друг с другом, определяет режим шифрования, это отдельная тема.
  • Поточные смешивают данные с псевдослучайной последовательностью, вырабатываемой из ключа. Пример — ChaCha20 (RFC 8439, 2018). Поточный RC4 из протокола TLS запрещён с 2015 года (RFC 7465).

Плюс всей группы — скорость: так шифруют файлы, диски и трафик. DES с ключом в 56 бит считается устаревшим: в 1998 году его вскрыли за 56 часов.

Главная проблема: как передать ключ

Обе стороны должны иметь один ключ, и передать его надо так, чтобы никто не перехватил. Перехваченный ключ обесценивает всё шифрование. Растёт и число ключей: на n участников приходится n(n − 1)/2 пар. Для 10 человек это 45 ключей, для 100 — 4950, для 1000 — 499 500. Выход нашли в 1976 году Диффи и Хеллман: ключ согласуют асимметричным обменом, а данные шифруют быстрым симметричным шифром. По такой схеме работает HTTPS: в TLS 1.3 ключ согласуют методом (EC)DHE либо берут заранее известный общий ключ, а записи защищают симметричными шифрами.

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

ПризнакСимметричноеАсимметричноеХеширование
КлючиОдин общий секретныйПара: открытый и закрытыйНет
ОбратимостьДа, с ключомДа, с закрытым ключомНет
СкоростьВысокаяНижеВысокая
ЗадачаШифрование данныхОбмен ключами, подписьКонтроль целостности
ПримерыAES, «Кузнечик», ChaCha20RSA, эллиптические кривыеSHA-256, «Стрибог»

Хеш необратим: по значению SHA-256 данные не восстановить, а свойства таких функций описаны в термине про хеш-функцию. От кодирования (Base64, азбука Морзе) шифрование отличается ключом: кодировку снимает любой, кто знает правило, о чём подробно в статье про кодирование информации.

Частые вопросы

Что такое симметричное шифрование простыми словами?

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

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

Из блочных — AES и российские «Кузнечик» с «Магмой» из ГОСТ Р 34.12-2015, из поточных — ChaCha20. Устаревшими считаются DES (ключ 56 бит, вскрыт за 56 часов в 1998 году) и RC4 (запрещён в TLS с 2015 года), поэтому в новых системах их не выбирают.

Чем симметричное шифрование отличается от асимметричного?

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

Можно ли зашифровать QR-код симметричным шифром?

Шифруют не код, а текст до него. Зашифруйте сообщение, запишите шифртекст в QR-код с текстом, а ключ передайте другим путём. Сам QR-код ничего не шифрует, и генератор QRcode.website тоже: шифровать и расшифровывать придётся отдельно.