Симметричное и асимметричное шифрование
Шифрование делает данные нечитаемыми для всех, у кого нет ключа. Ключи бывают двух фундаментально разных схем.
Шифрование — обратимое преобразование данных в нечитаемый вид с помощью ключа, так что без ключа восстановить исходные данные нельзя.
Симметричное шифрование: один общий ключ
В симметричной схеме один и тот же ключ и шифрует, и расшифровывает. Как обычный замок, к которому у обеих сторон одинаковый ключ. Это быстро и хорошо для больших объёмов данных. Современный стандарт — AES.
Проблема одна, зато крупная: как передать общий ключ собеседнику по небезопасному каналу так, чтобы его не перехватили? Это называют проблемой обмена ключами.
Асимметричное шифрование: пара ключей
Здесь у каждого участника два связанных ключа:
- Открытый (public) — раздаётся всем. Им шифруют сообщение для вас.
- Закрытый (private) — хранится в секрете. Только им можно расшифровать то, что зашифровано вашим открытым ключом.
Аналогия: открытый ключ — это открытый почтовый ящик с прорезью. Бросить письмо может любой, а достать — только владелец с ключом от ящика. Так можно получать секретные сообщения, ни с кем заранее не обмениваясь секретным ключом. Известные алгоритмы — RSA и схемы на эллиптических кривых.
Минус — асимметричное шифрование значительно медленнее симметричного.
Сравнение
| Свойство | Симметричное | Асимметричное |
| Ключи | один общий | пара: открытый + закрытый |
| Скорость | быстро | медленно |
| Обмен ключом | проблема: как передать секрет | открытый ключ можно раздавать свободно |
| Пример | AES | RSA, ECC |
Гибридная схема: лучшее из обоих
На практике их сочетают. Именно так работает HTTPS:
- Стороны используют асимметричное шифрование, чтобы безопасно договориться об общем секретном ключе.
- Затем переключаются на симметричное шифрование этим ключом для быстрой передачи всех данных.
Так решается и проблема обмена ключами (через асимметрию), и проблема скорости (через симметрию).
Никогда не изобретайте крипто сами
Главное правило прикладной криптографии: не пишите алгоритмы шифрования вручную. Это область, где крошечная ошибка ломает всю защиту, а ошибки незаметны. Используйте проверенные библиотеки и стандартные протоколы. Учебные примеры с хэшами в этом курсе — для понимания принципов, а не для реальной защиты данных.
Итог
- Симметричное шифрование — один общий ключ, быстро, но нужно безопасно его передать.
- Асимметричное — пара открытый/закрытый, открытый раздаётся всем, медленнее.
- HTTPS сочетает обе схемы: асимметрией договариваются о ключе, симметрией шифруют данные.
- Никогда не реализуйте шифрование самостоятельно — берите проверенные библиотеки.