📐 МАТЕМАТИКА

Как работает шифрование, на котором держится весь интернет

Каждый раз, когда ты вводишь пароль или открываешь сайт с замочком в адресной строке, в дело вступает математика, которую невозможно взломать в лоб даже всеми компьютерами планеты. Разбираемся, как это устроено.

Ты заходишь на сайт банка, видишь маленький замочек рядом с адресом и спокойно вводишь пароль. Но между твоим ноутбуком и сервером банка тянутся тысячи километров проводов, через которые проходят чужие роутеры. Почему же твой пароль не может прочитать никто по дороге? Ответ — в одной красивой математической идее.

Сначала был общий секрет

Шифрование придумали задолго до интернета. Идея простая: ты берёшь сообщение и по какому-то правилу превращаешь его в нечитаемую кашу. Тот, кто знает правило, превращает кашу обратно. Это правило и называют ключом.

Самый древний пример — шифр Цезаря. Берёшь каждую букву и сдвигаешь её на несколько позиций по алфавиту. Сдвиг на 3 превращает «А» в «Г», «Б» в «Д» и так далее. Слово «КОД» становится «НСЖ». Чтобы прочитать, нужно знать число сдвига — это и есть ключ. Современные шифры устроены неизмеримо хитрее, но суть та же: одним и тем же ключом и зашифровывают, и расшифровывают. Такое шифрование называют симметричным, потому что обе стороны держат в руках одинаковый секрет.

И вот тут всплывает проблема, которая ломала всю конструкцию веками. Чтобы переписываться тайно, тебе и собеседнику нужно сначала договориться об общем ключе. Но как передать ему ключ, если все каналы прослушиваются? Не можешь же ты зашифровать ключ — для этого нужен ещё один ключ, который тоже надо как-то передать. Получается замкнутый круг.

Гениальный трюк с двумя ключами

В 1970-х математики совершили переворот. Они придумали асимметричное шифрование: вместо одного ключа — целая пара, которая работает как волшебный замок.

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

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

Самое удивительное: зная открытый ключ, ты можешь зашифровать что угодно, но обратно расшифровать не сможешь. Даже сам отправитель не прочитает то, что только что запечатал. Замок защёлкнулся — открыть его способен лишь хозяин закрытого ключа.

Главный фокус: чтобы переписываться тайно, больше не нужно заранее обмениваться секретом. Ты просто берёшь чужой открытый ключ, который висит на виду, и шифруешь им сообщение.

Почему это нельзя взломать перебором

Откуда берётся такая односторонность? Из задач, которые легко решить в одну сторону и чудовищно трудно — в обратную. Классический пример из алгоритма RSA — перемножение простых чисел.

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

Вот аналогия. Размешать ложку сахара в стакане чая — пара секунд. А теперь попробуй вынуть из чая обратно ровно эти кристаллики сахара. Технически молекулы никуда не делись, но собрать их вместе практически нереально. Перемножение чисел — это размешивание, а разложение на множители — попытка достать сахар назад.

Когда числа достаточно большие, перебор всех вариантов занял бы у самых мощных компьютеров мира время, сравнимое с возрастом Вселенной. Шифр не то чтобы невозможно вскрыть в принципе — просто на это не хватит ни времени, ни энергии во всей видимой части космоса. А значит, на практике он надёжен.

Как всё это живёт внутри HTTPS

Теперь самое интересное: в реальном интернете два подхода работают в паре. Дело в том, что асимметричное шифрование надёжное, но медленное — гонять через него гигабайты видео было бы пыткой. А симметричное быстрое, но требует общего секрета. Решение очевидно: возьмём лучшее от обоих.

Когда ты открываешь сайт с замочком (это и есть HTTPS), происходит примерно такой разговор:

  • Твой браузер и сервер здороваются. Сервер присылает свой открытый ключ.
  • Браузер придумывает случайный одноразовый секрет — будущий симметричный ключ — и шифрует его открытым ключом сервера.
  • Этот зашифрованный пакет летит через интернет. Перехватить его может кто угодно, но расшифровать — только сервер своим закрытым ключом.
  • Теперь у обеих сторон есть общий секрет, о котором не знает больше никто. Дальше весь трафик идёт через быстрое симметричное шифрование.

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

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

Так что за крошечной иконкой замка прячется целая башня из математики: простые числа, односторонние функции и пара ключей, которые невозможно разъединить. Каждый раз, когда ты отправляешь сообщение или платишь картой онлайн, эта невидимая конструкция тихо делает свою работу — и держит на себе, без преувеличения, весь современный интернет.

#https#безопасность#криптография#математика#шифрование
Понравилась статья?
В Telegram-канале — лучшее из журнала и анонсы новых учебников.