Получить доступ

Чем симметричное шифрование отличается от асимметричного и что такое цифровая подпись?

MiddleБезопасность
Ещё спрашивают так:
  • Что такое открытый и закрытый ключ?
  • Как работает цифровая подпись?
  • Почему TLS использует оба вида шифрования?
Коротко

Симметричное — один общий ключ шифрует и расшифровывает (AES): быстро, но ключ надо как-то передать. Асимметричное — пара ключей: открытый знают все, закрытый — только владелец (RSA, ECC): медленно, но не нужно делиться секретом.

  • Шифрование для получателя — его открытым ключом, расшифровать может только он
  • Подпись — закрытым ключом автора, проверить может любой его открытым ключом
  • На практике гибрид: асимметрия договаривается о ключе, данные шифрует симметрия

А ещё Подпись даёт подлинность и целостность, но не секретность

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Симметричное шифрование. Обе стороны знают один ключ. Алгоритмы — AES (с аппаратным ускорением — гигабайты в секунду), ChaCha20. Режимы важны: современный стандарт — AEAD (AES-GCM, ChaCha20-Poly1305), который шифрует и одновременно защищает от подмены. Проблема — распределение ключей: как договориться о ключе с сервером, которого видишь впервые, если канал прослушивается.

Асимметричное шифрование. У каждого пара: открытый ключ публикуется, закрытый хранится в секрете. Что зашифровано открытым, расшифровывается только закрытым. Алгоритмы — RSA, эллиптические кривые (ECDH, Ed25519). Операции в сотни и тысячи раз медленнее симметричных и ограничены по размеру данных.

Обмен ключами. Протокол Диффи — Хеллмана (сейчас на эллиптических кривых, X25519): стороны обмениваются открытыми значениями и независимо получают одинаковый общий секрет, который по сети не передавался. Из него выводится симметричный ключ сессии.

Цифровая подпись — обратное использование пары: автор вычисляет хеш сообщения и «подписывает» его закрытым ключом; любой проверяет подпись открытым ключом. Это доказывает, что сообщение создал владелец закрытого ключа и оно не менялось. Применения: сертификаты TLS (удостоверяющий центр подписывает сертификат сайта), JWT с RS256/ES256 (сервис авторизации подписывает, остальные проверяют без доступа к секрету), подпись релизов и коммитов, обновлений приложений.

Гибридная схема — так работают TLS, PGP, мессенджеры: асимметричная криптография для обмена ключом и подписи, симметричная — для данных.

Откуда доверие к открытому ключу. Злоумышленник может подсунуть свой открытый ключ (атака «человек посередине»). Поэтому ключ связывают с владельцем: сертификаты и цепочки доверия (PKI), сверка отпечатков (SSH при первом подключении, коды безопасности в мессенджерах).

Практика: не изобретать свою криптографию, брать готовые библиотеки и высокоуровневые API (libsodium, cryptography), хранить ключи в KMS или хранилище секретов, ротировать.

Пример

from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey

private = Ed25519PrivateKey.generate()
public = private.public_key()
sig = private.sign(b"release-1.4.2.tar.gz sha256=…")
public.verify(sig, b"release-1.4.2.tar.gz sha256=…")   # без исключения — подпись верна

Что хотят услышать

  • Один ключ против пары ключей, плюсы и минусы.
  • Кто каким ключом шифрует и кто каким подписывает.
  • Гибридная схема и обмен ключами.
  • Проблема доверия к открытому ключу и сертификаты — плюс.

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

  • «Подпись — это шифрование закрытым ключом» как буквальное описание — для современных схем это не так, это отдельная операция.
  • Считать асимметричное шифрование «более надёжным» и шифровать им данные целиком.

Что спросят дальше

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем