Два ключа вместо одного

Главная идея асимметрии: что зашифровано одним ключом, расшифровывается только парным к нему вторым.
Эта идея, опубликованная в 1970-х, перевернула криптографию и сделала возможным безопасный интернет.

Проблема, которую надо было решить

Вспомним беду симметричного шифрования: чтобы переписываться, Алисе и Бобу нужен общий секретный ключ. Но как его передать, если канал прослушивается? Асимметричная криптография решает это элегантно: ключей становится два, и один из них можно вообще не прятать.

Открытый и закрытый ключи

У каждого человека есть пара ключей:

Открытый ключМожно публиковать где угодно. Им шифруют сообщения для тебя.
Закрытый ключХранится в строжайшем секрете. Только им можно расшифровать.

Ключи связаны математически, но зная открытый ключ, вычислить закрытый практически невозможно.

Аналогия с почтовым ящиком

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

Как Алиса пишет Бобу

  1. Боб публикует свой открытый ключ — пусть его видит хоть весь мир.
  2. Алиса шифрует сообщение открытым ключом Боба.
  3. Только Боб своим закрытым ключом может расшифровать.

Заметь: Алисе и Бобу не нужно заранее обмениваться секретом! Ева может видеть открытый ключ и шифр-текст — но без закрытого ключа Боба прочитать ничего не сможет.

Маленькая иллюстрация на числах

Покажем саму идею «легко в одну сторону, трудно обратно» на простом примере: перемножить два числа легко, а разложить результат обратно на множители — сложно.

p = 61
q = 53
n = p * q  # умножить легко
print("Открытое число n =", n)

# А теперь представь, что известно только n.
# Найти исходные p и q (разложить на множители) — трудная задача.
for i in range(2, n):
    if n % i == 0:
        print("Чтобы взломать, врагу пришлось перебрать до делителя", i)
        break

Вывод:

Открытое число n = 3233
Чтобы взломать, врагу пришлось перебрать до делителя 53

Здесь числа крошечные, поэтому делитель нашёлся быстро. Но в настоящем RSA используют числа из сотен цифр — и тогда разложить n обратно не хватит времени всей жизни Вселенной. На этой асимметрии («умножить легко, разложить трудно») и держится защита.

Проверьте себя
1. Каким ключом Алиса шифрует сообщение для Боба?
AСвоим закрытым ключом
BОткрытым ключом Боба
CЗакрытым ключом Боба
DОбщим секретным ключом
2. Почему открытый ключ можно публиковать, не боясь за безопасность?
AОн бесполезен для шифрования
BЗная открытый ключ, вычислить закрытый практически невозможно
CОн меняется каждую секунду
DЕго шифруют отдельно
Поддержать проект