[Из песочницы] Объяснение HTTPS на почтовых голубях
Криптография — сложная штука для понимания. Она состоит математических теорем, доказательств, что повышает порог входа. Но даже если вы используете её в своём проекте, не обязательно вникать в эти алгоритмы, главное понимать принципы работы.
Перевод статьи: medium.freecodecamp.org/https-explained-with-carrier-pigeons-7029d2193351
Если вы открыли эту статью с целью создать следующий HTTPS протокол, вы зашли не туда. Этой статьи будет не достаточно. В ней описаны принципы работы HTTPS на пальцах или по аналогии с почтовыми голубями.
Алиса, Боб и… голуби?
Любая активность в интернете (чтение статей, online покупки или загрузка фото котиков) происходит с помощью отправки и получения данных с сервера.
Представим это вместо электронных сигналов, данные переносят почтовые голуби. И они точно знаю куда им надо лететь. Разница только в скорости передачи.
Представим что есть Алиса, Боб и они решили на початится.
Первое сообщение
Если Алиса решила написать сообщение Бобу, то она прикрепляет сообщение к ножке почтового голубя и отправляет Бобу. Боб получает сообщение, читает его. Как бы всё круто. Так работает HTTP. Написали сообщение, отправили, адресат получил.
Но представим ситуацию, Света перехватывает голубя Алисы, меняет сообщение и отправляет его Бобу. У Боба нет механизма узнать, было ли сообщение перехвачено и изменено.
Это явный минус HTTP. Его можно перехватить и изменить в процессе передачи.
Секретный код
Но что если Алиса и Боб узнали про перехваты и решили защититься с помощью секретного кода. Они условились, что будут сдвигать каждую букву из сообщения на три позиции. К примеру А → Г, В → E. Тогда сообщение «Я тебя люблю» превратится в «В хздв обдоб».
Теперь даже если сообщение будет перехвачено Светой, то она не поймёт что в нём написано и не знает смещения, чтобы расшифровать. В тоже же время Боб знает и сможет расшифровать его.
Круто!
Вот такой метод шифрования называется симметричным, потому что сообщение можно зашифровать и расшифровать. А метод шифрования сдвигом еще называют Шифром Цезаря.
В реальной жизни, принцип шифрования тот же, только более сложный алгоритмы.
Как передать ключ?
Симметричное шифрование — крутая и защищённая штука, если ключ шифрования знаю только отправитель или получатель. В нашем случае Алиса и Боб.
В шифре, которой выбрали Алиса и Боб, ключ это смещение букв. Ключ может быть равен и трём и десяти и двадцати.
Проблема в том, что Алиса и Боб должны договорится о ключе при личной встрече. А если её не было, посылать ключ с голубем не безопасно. Света может поймать этого голубя, узнать ключ и в последующей переписке расшифровывать, менять сообщение, заново шифровать его и отправлять Бобу.
Вот такой метод перехвата, дешифровки, чтения, изменения, и отправки вновь зашифрованного сообщения называется Man in the Middle Attack или атака «Человек посередине».
Голуби и шкатулки
Боб и Алиса придумали новую и более лучшую систему.
- Когда Алиса хочет отправить сообщение, она отправляет пустого голубя без сообщения. Чтобы Боб узнал о начале переписки.
- Боб отправляет в ответ настоящий ключ и шкатулку
- Алиса пишет сообщение, кладёт в шкатулку, закрывает ключом и отправляет только шкатулку
- Боб открывает шкатулку своим дубликатом ключа.
При условии, что ключ от шкатулки подделать сложно и мастер Светы будет делать дубликат недели, а переписка частая и каждый раз новые ключи, то перехват сообщений становится бессмысленным.
Но проблема осталась. Света может просто раздолбать шкатулку, посмотреть сообщение и отправить новое сообщение в новой шкатулке.
Как обезопасить шкатулку?
Для защиты от подделок шкатулок, Боб и Алиса договорились их подписывать и ставить на них печать. Проблема только в том, что Алиса и Боб никогда не виделись и не знаю печатей и подписей друг друга. Тогда они обратились в Ивану.
Иван — это очень уважаемый авторитетный, честный мужик. Он получает деньги за установку свой печати и подписи на шкатулки. Он только лично, при адресате ставит печать, лично убеждаясь, что Боб этот Боб, а Алиса это Алиса. Он бережет свой авторитет и на уговоры Светы поставить печать, что шкатулка как бы от Алисы, откажется. В реальной жизни Иван называется Certification Authority или Центр сертификации.
Теперь Алиса и Боб переписываются таким образом:
- Алиса отправляет пустого голубя
- Боб в ответ отправляет ключ и подписанную шкатулку Иваном
- В ответ Алиса пишет на листочке бумаги ключ для шифрования сообщений, закрывает его ключом и отправляет Бобу.
- Боб проверяет печать и подпись Боба
- Дальше они отправляют сообщения без шкатулок, просто шифруя сообщения
- Время от времени меняю ключи, с помощью шкатулок
Даже если Света перехватила первую шкатулку, она не может её открыть. Если она её сломает, то не сможет её подписать. Если не узнает код, не сможет расшифровать сообщение.
Таким образом работает HTTPS. Принцип тот же, сложнее алгоритмы шифрования и данные передаются быстрее.