Симметричное шифрование. Обе стороны знают один ключ. Алгоритмы — AES (с аппаратным ускорением — гигабайты в секунду), ChaCha20. Режимы важны: современный стандарт — AEAD (AES-GCM, ChaCha20-Poly1305), который шифрует и одновременно защищает от подмены. Проблема — распределение ключей: как договориться о ключе с сервером, которого видишь впервые, если канал прослушивается.
Асимметричное шифрование. У каждого пара: открытый ключ публикуется, закрытый хранится в секрете. Что зашифровано открытым, расшифровывается только закрытым. Алгоритмы — RSA, эллиптические кривые (ECDH, Ed25519). Операции в сотни и тысячи раз медленнее симметричных и ограничены по размеру данных.
Обмен ключами. Протокол Диффи — Хеллмана (сейчас на эллиптических кривых, X25519): стороны обмениваются открытыми значениями и независимо получают одинаковый общий секрет, который по сети не передавался. Из него выводится симметричный ключ сессии.
Цифровая подпись — обратное использование пары: автор вычисляет хеш сообщения и «подписывает» его закрытым ключом; любой проверяет подпись открытым ключом. Это доказывает, что сообщение создал владелец закрытого ключа и оно не менялось. Применения: сертификаты TLS (удостоверяющий центр подписывает сертификат сайта), JWT с RS256/ES256 (сервис авторизации подписывает, остальные проверяют без доступа к секрету), подпись релизов и коммитов, обновлений приложений.
Гибридная схема — так работают TLS, PGP, мессенджеры: асимметричная криптография для обмена ключом и подписи, симметричная — для данных.
Откуда доверие к открытому ключу. Злоумышленник может подсунуть свой открытый ключ (атака «человек посередине»). Поэтому ключ связывают с владельцем: сертификаты и цепочки доверия (PKI), сверка отпечатков (SSH при первом подключении, коды безопасности в мессенджерах).
Практика: не изобретать свою криптографию, брать готовые библиотеки и высокоуровневые API (libsodium, cryptography), хранить ключи в KMS или хранилище секретов, ротировать.