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

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

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

Симметричное шифрование: один общий ключ

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

Проблема одна, зато крупная: как передать общий ключ собеседнику по небезопасному каналу так, чтобы его не перехватили? Это называют проблемой обмена ключами.

Асимметричное шифрование: пара ключей

Здесь у каждого участника два связанных ключа:

  • Открытый (public) — раздаётся всем. Им шифруют сообщение для вас.
  • Закрытый (private) — хранится в секрете. Только им можно расшифровать то, что зашифровано вашим открытым ключом.

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

Минус — асимметричное шифрование значительно медленнее симметричного.

Сравнение

СвойствоСимметричноеАсимметричное
Ключиодин общийпара: открытый + закрытый
Скоростьбыстромедленно
Обмен ключомпроблема: как передать секретоткрытый ключ можно раздавать свободно
ПримерAESRSA, ECC

Гибридная схема: лучшее из обоих

На практике их сочетают. Именно так работает HTTPS:

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

Так решается и проблема обмена ключами (через асимметрию), и проблема скорости (через симметрию).

Никогда не изобретайте крипто сами

Главное правило прикладной криптографии: не пишите алгоритмы шифрования вручную. Это область, где крошечная ошибка ломает всю защиту, а ошибки незаметны. Используйте проверенные библиотеки и стандартные протоколы. Учебные примеры с хэшами в этом курсе — для понимания принципов, а не для реальной защиты данных.

Итог

  • Симметричное шифрование — один общий ключ, быстро, но нужно безопасно его передать.
  • Асимметричное — пара открытый/закрытый, открытый раздаётся всем, медленнее.
  • HTTPS сочетает обе схемы: асимметрией договариваются о ключе, симметрией шифруют данные.
  • Никогда не реализуйте шифрование самостоятельно — берите проверенные библиотеки.
Проверьте себя
1. Чем отличается симметричное шифрование от асимметричного?
AНичем, это синонимы
BВ симметричном один общий ключ, в асимметричном — пара открытый и закрытый
CСимметричное всегда надёжнее
DАсимметричное не использует ключи
2. В чём главная проблема чисто симметричного шифрования?
AОно слишком быстрое
BНужно безопасно передать общий секретный ключ собеседнику
CОно не использует ключи
DЕго невозможно расшифровать
3. Как HTTPS сочетает обе схемы?
AИспользует только симметричное шифрование
BАсимметрией договаривается об общем ключе, затем симметрией шифрует данные
CШифрует всё дважды асимметрично
DНе использует шифрование вовсе
Поддержать проект