Перейти к содержанию
Innovialabs

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

Основы3 мин

Коротко

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

Короткий ответ

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

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

Сравнение

Симметричное (AES)Асимметричное (RSA, ECC)
КлючиОдин общий секретПара: открытый и закрытый
СкоростьОчень быстрое, подходит для больших объёмовЗаметно медленнее, используется для небольших данных
Главная сложностьКак безопасно передать ключКак убедиться, что открытый ключ принадлежит нужному человеку
Типичное применениеШифрование трафика, дисков, файлов, базОбмен ключами, цифровые подписи, сертификаты

У ECC ключи короче, чем у RSA при сопоставимой стойкости, поэтому эллиптические кривые сейчас часто выбирают для новых систем и мобильных устройств.

Почему их используют вместе

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

Поэтому почти везде работает гибридная схема:

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

Цифровая подпись

Асимметричные ключи умеют работать и «наоборот». Владелец подписывает данные закрытым ключом, а любой может проверить подпись открытым ключом.

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

  • авторство — данные подписал владелец закрытого ключа;
  • целостность — после подписи в данных не изменилось ни одного бита.

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

Хеширование — это не шифрование

Хеш-функция (например, SHA-256) превращает любые данные в короткий «отпечаток» фиксированной длины. Это как мясорубка: из фарша не собрать обратно кусок мяса.

ШифрованиеХеширование
ОбратимостьМожно расшифровать, зная ключНеобратимо
КлючНуженНе нужен
ЗачемСкрыть данные и потом прочитатьПроверить целостность или сравнить, не храня оригинал

Пароли пользователей нужно хешировать, а не шифровать: сайту не нужно знать пароль, достаточно проверить, совпадает ли хеш. Для паролей используют специальные медленные алгоритмы с «солью» — Argon2, bcrypt, scrypt, — а не быстрые вроде SHA-256 или устаревшего MD5.

Где это работает каждый день

  • HTTPS. Браузер проверяет сертификат сайта по цифровой подписи, затем стороны с помощью асимметричного обмена ключами (обычно на эллиптических кривых) договариваются о сессионном ключе, и дальше трафик шифруется симметрично — например, AES.
  • Мессенджеры со сквозным шифрованием. Устройства собеседников обмениваются открытыми ключами и выводят общие секреты, а сами сообщения шифруются симметрично. Ключи регулярно обновляются, чтобы утечка одного не раскрыла всю переписку.
  • Хранение данных. Шифрование дисков на ноутбуках и телефонах, бэкапов и полей в базе данных — это AES или аналоги. Главный вопрос здесь — где хранить ключ, чтобы он не лежал рядом с данными.
  • SSH и вход по ключам. Сервер проверяет, что у вас есть закрытый ключ, не требуя его передачи.

Частые ошибки

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

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

Оба надёжны при правильных алгоритмах и длине ключей. Они решают разные задачи, поэтому их не выбирают «вместо», а используют вместе.

Поможем с этим

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

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.