Один ключ на двоих

В симметричном шифровании Алиса и Боб используют один и тот же секретный ключ — и для замка, и для отпирания.

Что значит «симметричное»

Все шифры из предыдущего раздела — Цезарь, подстановка, Виженер — симметричные. Это значит, что один и тот же ключ применяется и для шифрования, и для расшифровки. Если Алиса зашифровала сообщение ключом K, то Боб должен знать тот же K, чтобы прочитать.

Аналогия с обычным замком

Представь обычный навесной замок с одним ключом. Алиса запирает им сундук и отправляет Бобу. Чтобы открыть, Бобу нужен такой же ключ. Симметрия — в том, что ключ один и тот же с обеих сторон.

Плюсы симметричного шифрования

  • Скорость. Симметричные алгоритмы очень быстрые — современный компьютер шифрует сотни мегабайт в секунду.
  • Простота. Один ключ, понятная схема.
  • Надёжность. Проверенные алгоритмы (AES) невозможно взломать перебором.

Главная проблема

Как Алисе передать Бобу секретный ключ, если канал связи прослушивает Ева?

Это называется проблемой обмена ключами. Нельзя просто отправить ключ вместе с сообщением — Ева перехватит и то, и другое. Нельзя продиктовать по телефону, если телефон тоже прослушивается. Эта проблема десятилетиями была головной болью криптографов, и решили её только асимметричные шифры (раздел 5).

Симуляция на Python

Покажем суть: один общий ключ, обе стороны им пользуются. Применим простой XOR-шифр (для учёбы, не для реальной защиты):

def encrypt(text, key):
    return bytes(b ^ key for b in text.encode("utf-8"))

def decrypt(data, key):
    return bytes(b ^ key for b in data).decode("utf-8")

shared_key = 77  # один секрет на двоих

ciphertext = encrypt("Atака на рассвете", shared_key)
print("Алиса зашифровала:", list(ciphertext)[:8], "...")
print("Боб расшифровал:", decrypt(ciphertext, shared_key))

Вывод:

Алиса зашифровала: [12, 57, 174, 167, 184, 167, 99, 174] ...
Боб расшифровал: Atака на рассвете

Ключ 77 понадобился обоим. Если Ева его узнает — всё пропало. Поэтому защита ключа важнее самого алгоритма.

Проверьте себя
1. Что характерно для симметричного шифрования?
AДля шифрования и расшифровки используется один и тот же ключ
BКлюч не нужен вообще
CШифрование и расшифровка используют разные ключи
DОно работает только с текстом
2. Как называется главная трудность симметричного шифрования?
AПроблема скорости
BПроблема обмена ключами
CПроблема длины текста
DПроблема алфавита
Поддержать проект