Об ассиметричном шифровании, проблеме двух генералов, а также достоинствах и недостатках https
Большинство современных мессенджеров как одно из своих достоинств предлагают end-to-end шифрование своих звонков. Эта особенность подается как абсолютная гарантия от подслушивания вашего разговора третьим лицом (man in the middle, MITM).
Например, когда Telegram только появился, в нем не было звонков, но одним из элементов его маркетинговой кампании было end-to-end шифрование переписки. Собственно, поводом для первой блокировки Telegram в России в 2018-2020 годах был отказ Павла Дурова выдать ключи шифрования российским властям. Причем его основным аргументом было то, что ключей шифрования от end-to-end переписок у него нет и быть не может.
Дуров лукавил. В Телеграме end-to-end шифрованием защищены только секретные чаты. Все остальное в telegram-е хранится на его серверах в незашифрованном виде – иначе бы вы никогда не получили бы всю историю своих переписок при входе с любого устройства, где установлен Telegram.
Но в этой статье речь пойдет не об этом. Все дело в том, что само по себе end-to-end шифрование – это в конечном счете такое же лукавство.
«Но как так-то!» - ответят мне знающие люди. “End-to-end шифрование – это асимметричное шифрование, при котором секретные ключи не передаются. А значит его нельзя взломать».
Да, асимметричное шифрование. Да, секретные ключи не передаются. Но нет, это ничего не меняет. Сейчас я это докажу.
Начну я с краткого объяснения, что такое асимметричное шифрование. Сразу скажу – я изложу его максимально коротко и просто, но основную идею сохраню.
Итак, у нас есть две стороны коммуникации – А и Б.
Каждая сторона коммуникации генерирует две пары ключей – секретный и публичный. Получаются ключи Ас и Ап, Бс и Бп.
Далее А и Б обмениваются публичными ключами Ап и Бп. Секретными Ключами Ас и Бс они не обмениваются никогда.
А дальше начинается самое интересное. А шифрует свое сообщение ключом Бп и передает его стороне Б. А сторона Б расшифровывает его ключом Бс.
Как это происходит? Если не вдаваться в детали, то каждый публичный ключ генерируется на основе секретного. И с помощью специальной математики их математические отношения таковы, что то, что зашифровано публичным ключом, может быть легко расшифровано секретным ключом. А вот обратное неверно. Поэтому шифрование называется асимметричным.
Часть приводят такую метафору – публичный ключ это замок, а секретный ключ это собственно… ключ. Вы можете передать замок кому угодно и он запрет им чемодан с секретным письмом. А вот открыть этот чемодан сможете только вы – ключ ведь у вас.
И вот, казалось бы, идеальное решение. Ключ расшифровки не передается, а значит и расшифровать не может никто, кроме того, кто получил послание.
Но есть одна проблема. И эта проблема… нерешаема. Эту проблемы вы наверняка слышали хотя бы по названию. Это – проблема двух генералов.
В чем собственно суть. Допустим, два генерала одной армии штурмуют замок. Замок находится на возвышении, генералы со своими войсками – в низинах. Генералы друг друга не видят.
Чтобы победить врага, генералам надо атаковать одновременно. Но чтобы атаковать одновременно, каждому надо убедиться, что другой готов к атаке.
Проблема в том что единственная дорога, по которой можно послать гонца – пролегает мимо вражеского замка.
И вот тут начинается главная проблема. Гонца можно послать, но что если он будет убит? Или подкуплен и сообщит ложную информацию. Или взят в плен, выдаст свою цель, и враг пошлет своего шпиона, переодетого в одежду гонца, который сообщит ложную информацию. В конце концов, что делать, если он просто забудет, что его просили передать?
В общем виде эту проблему можно сформулировать так: «Могут ли две стороны коммуникации послать сообщение через не доверенную среду и иметь гарантию, что сообщение не будет послушано или изменено?».
И ответ на этот вопрос известен. Вот ответ: «Нельзя. Вообще».
Для любой гарантии целостности и конфиденциальности сообщения нужно передать еще сообщение. Но оно будет передано через эту самую не доверенную среду, а значит будет столь же ненадежно, как и первое.
Ну хорошо, но разве асимметричное шифрование не решило эту проблему? Сообщение передается, но расшифровать его не могут?
Нет, оно не решило.
Дело в том, что первым шагом асимметричного шифрования является обмен публичными ключами. Которые передаются через ту же самую не доверенную среду. Передаются в незашифрованном виде.
И если злоумышленник перехватит публичные ключи и заменит их своими – то все остальное уже дело техники. Он просто постоянно будет расшифровывать и зашифровать сообщения, а пользователи будут думать, что все надежно зашифровано.
Я вас, наверное, уже сильно напугал. Но нет, я всего лишь начал.
В попытка решить нерешаемую проблему двух генералов мировая криптография придумала концепцию сертификатов. Да-да, тех самых https-сертификатов, без которых сейчас браузеры отказываются нормально открывать сайты.
В чем суть сертификатов? Во-первых, суть в том, что доступ в https сайтам шифруется тем самым асимметричным шифрованием. Которое, как мы выяснили, уже не так надежно, как все наивно думают.
Поэтому решили поступать хитрее. Существуют так называемые «центры сертификации». Это организации, которые генерируют свою пару публичного и секретного ключа. Первый распространяется публично – и является тем самым корневым сертификатом. А на основе последнего центр сертификации генерирует по запросу владельца сайта пару ключей, соответствующих домену этого сайта. И соотношение между корневыми и производными ключами таковы, что корневой сертификат может подтвердить сертификат конкретного сайта. А значит если злоумышенник перехватит сертификат сайта, то браузер пользователя это сможет обнаружить.
Но… вы уже догадались? А почему мы доверяем создателю корневого сертификата? И погодите, откуда вообще корневой сертификат взялся у вас на компьютере? Что-то вы не помните, как его устанавливали…
А вы его и не устанавливали. Вы устанавливали операционную систему.
Дело в том, что у создателя каждой операционной системы есть договоренность с центрами сертификации, которым он хочет доверять. И корневые сертификаты попросту устанавливаются при установке операционной системы, а потом дополняются с ее обновлениями.
Ну да, вы все правильно поняли. Ваш компьютер доверяет неизвестной вам организации, потому что операционная система так решила.
И да, сразу скажу, вы вполне можете установить на операционную систему свой корневой сертификат. Установить – можете. С удалением есть проблемы. На десктопных операционных системах вы в принципе можете удалить встроенный корневой сертификат. А вот на мобильных – не обязательно. На моем смартфоне от Xiaomi, кажется, нельзя удалять корневые сертификаты, если вы сами их не установили. Думаю, на iPhone то же самое.
Но это еще не самое страшное. Самое страшное начинается тогда, если канал связи, которым вы пользуетесь, аффилирован с создателем корневого сертификата, который установлен в вашей операционной системе. И тогда этот владелец канал связи может сгенерировать пару публичного и секретного ключа для любого сайта, и подменять этот сайт на свой. А ваш браузер вам подтвердит, что сертификат действительный!
То есть создается не просто небезопасная ситуация. Создается иллюзия безопасности.
И хорошие новости тут только в том, что… А стоп, их нет. Проблема двух генералов нерешаемая. Ваши коммуникации всегда ненадежны.
Интернет - по определению не доверенная среда. Ваши сообщения идут сложным маршрутом, который вы никак не контролируете.
Так что если хотите надежности – встречайтесь в надежном месте и обменивайтесь паролями.
А еще, наверное, никогда не выходите в интернет.
Комментарии (43)

anonymous
10.11.2025 18:53
muxa_ru
10.11.2025 18:53Вы же доверяете свои деньги банкам, паспортные данные работодателю, визу пограничникам и т.д.
Нет, не доверяем.
Мы их вынужденно передаём.

emeykey
10.11.2025 18:53Если вас кто-то вынуждает положить деньги на счёт, советую вам позвонить 112 или 911, так быть не должно. В других же случаях вы можете не класть все накопления в банк, а хранить дома. А если хотите пользоваться банковской картой, то можно раз в неделю закидывать необходимую суммы на расходы.

askv
10.11.2025 18:53Наличка = хранение денег в Центральном банке, не решает вопрос. От денег можно избавиться только купив вечные ценности — тушёнку, сало, и т.д.

emeykey
10.11.2025 18:53Выберите другой способ хранения, в золоте, в технике, в бейсбольных карточках, картинах, крипте.
Я не совсем понимаю ваш ответ, что значит "От денег можно избавиться только купив вечные ценности — тушёнку, сало, и т.д.", мы разве обсуждали избавление от денег? Нет, мы обсуждали их безопасное хранение.
askv
10.11.2025 18:53У Вас не получится безопасно хранить деньги, когда правительство в любой момент может провести реформу и всё отменить. Что Вы с этими фантиками и металлическими кружочками делать будете? Мы уже это проходили...

RoasterToaster
10.11.2025 18:53Дома нас вынуждают не хранить деньги а. Инфляция Б. домушники. Поэтому банк это из двух зол, но тем не менее вынужденная мера.
Если бы у всех дома был а. Волшебный сейф, б. Инфляция была бы 0, то банковского потребительского сектора вообще бы не существовало в привычном сегодняшнем виде. Было бы что о вроде советских кооперативов для целевого накопления

askv
10.11.2025 18:53Наличные деньги не решают проблему, т.к. они эквивалентны деньгам на счёте в Центральном банке. Банки были бы, т.к. большинство хотело бы ещё чуток подзаработать.

RoasterToaster
10.11.2025 18:53Помню, как на первых айфонах руководство с негодованием отвергало сохранение контактов в облаке. С тех пор нас шаг за шагом вынудили передать все что у нас есть:)

askv
10.11.2025 18:53Можете покупать на каждую з/п что-то материальное и хранить в своём бункере. Только жить Вы при этом будете хуже, чем тот, кто инвестирует деньги в том числе через банки.

mSnus
10.11.2025 18:53Да где вы видели, чтобы правительство заставляло пользователей устанавливать сгенерированный правительственным сервисом корневой сертификат и при этом контролировало провайдеров! Не может быть такого /s

askharitonov
10.11.2025 18:53Здесь двоякая ситуация: с одной стороны, государственный сертификат даёт государству техническую возможность перехватывать информацию, с другой стороны, он необходим для предотвращения ситуаций, когда множество государственных сайтов оказываются недоступны для простых пользователей из-за отзыва их сертификатов иностранными удостоверяющими центрами.
Но есть компромиссный вариант: устанавливать сертификат, предлагаемый государством, в отдельном профиле браузера, предназначенном для работы с Госуслугами, банками и т.д. В результате можно основной профиль использовать не опасаясь того, что товарищ майор всё читает, и, с другой стороны, ряд важных сайтов оказываются в отдельном профиле браузера, что делает работу с ними более безопасной.

askv
10.11.2025 18:53В таких случаях в голове звучит мелодия: и треснул мир напополам, дымит разлом...

VelocidadAbsurda
10.11.2025 18:53Некоторые мессенджеры данную проблему осознают и предлагают сверить ключи тем или иным способом по стороннему каналу: некие последовательности смайликов в звонках Telegram, которые можно назвать голосом (предполагаю, такое представление хешей ключей), сравнение QR-кодов или циферок в Signal (циферки, опять же, можно зачитать без личных встреч голосом). Да, голос будет передаваться по, возможно, скомпрометированному каналу, но тут злоумышленнику нужно быть готовым в случайно выбранный пользователями момент сверки ключей завернуть обе стороны разговора в какой-нибудь синтезирующий голос ИИ, который правильными голосами продиктует обеим сторонам подменённые цифры - на практике выглядит не очень реально. А если ещё добавить варианты "созвонились не в тех же мессенджерах, а по сотовой связи/по телефонам друзей/где-то запостили", задача злоумышленника разрастается до неохватной.

Gorthauer87
10.11.2025 18:53Какая то манипуляция с выводами. e2e само по себе не панацея, но есть fingerprint, есть возможность обменяться ключами при личном контакте без mitm. Matrix такое умеет. То есть, статья делает необоснованное обобщение. Минусовать такое от греха подальше надо.

emeykey
10.11.2025 18:53Да, статья вообще прикол. Тут даже не берётся в расчёт то, что всех этих ключей миллионы и они меняются, никак не получится отслеживать все, на это не хватит ресурсов и сил, даже если очень сильно захотеть. А вот конкретно каких-то людей, в теории, можно отследить и "взломать", но дело в том, что если вас уже знают и хотят от вас что-то, то им уже не нужны будут ключи, вы их сами отдадите :)

askv
10.11.2025 18:53
На самом-самом деле его секреты нафиг никому не нужны. И кстати, такой ключ за 5 баксов ещё надо поискать.

linux-over
10.11.2025 18:53такую же статью бы о биометрии.
ведь биометрия - это по сути пароли "plain/text", да ещё и возможные к снятию с тела принудительно

seepeeyou
10.11.2025 18:53От проблемы необходимости использовать небезопасную среду для передачи нужных для безопасной коммуникации данных каким-то образом автор перепрыгнул к сайтам и их сертификатам, попутно "сверкнув" аббревиатурой HTTPS.

RoasterToaster
10.11.2025 18:53Квантовая криптография решит эту проблему?

NekitGeek
10.11.2025 18:53То есть строить оптическую линию к другу и ставить туда квантовые девайсы чтобы никто не мог перехватить ключ, прочитав фотоны света?

useribs
10.11.2025 18:53Шта. Еще деды изобрели не только шифрование сообщения, но и подпись его закрытым ключем, подлинность можно проверить соответствующим публичным ключем, потом уже расшифровывать. Один раз обменяться по доверенному каналу как-то надо, да, условно как это и сделано в "secret chat" - убедитесь что видите одни и те же emoji ).

askv
10.11.2025 18:53Дуров лукавил. В Телеграме end-to-end шифрованием защищены только секретные чаты. Все остальное в telegram-е хранится на его серверах в незашифрованном виде – иначе бы вы никогда не получили бы всю историю своих переписок при входе с любого устройства, где установлен Telegram.
Это НИКОГДА не скрывалось, всегда было прямо написано в документации. Никакого лукавства. Другое дело, что технически, думаю, можно чатики хранить на серверах в зашифрованном виде. Но просто он не хотел на это тратиться.
На моем смартфоне от Xiaomi, кажется, нельзя удалять корневые сертификаты, если вы сами их не установили. Думаю, на iPhone то же самое.
Думаю, что они нужны для нужд самой ОС. Необязательно их удалять. В браузере можно посмотреть путь подписей сертификата. Можно отвергать те, которым не доверяешь, в том числе автоматически.
Так что если хотите надежности – встречайтесь в надежном месте и обменивайтесь паролями.
Скорее ключами.
В целом статья банальна, это всё давно известно. Рассуждения из серии «если я выйду на улицу, то меня могут увидеть»...

MAXH0
10.11.2025 18:53Проблема двух генералов решается через совместный контекст... Один генерал орет другому и в крепости это слышат. Но понять о чем они говорят понять не могут. Еще русские партизаны так немцев бесили. "Помнишь, когда у твоего кума днюха? Вот в этот день и вдарим..."

codecity
10.11.2025 18:53совместный контекст
По сути это и есть секретный ключ, который уже знают стороны.

Biga
10.11.2025 18:53В современных банковских приложениях ввод кода из смс, присланного банком, считается цифровой подписью. А вы нам голову морочите вашей заумью. Не мешайте деградировать.

askharitonov
10.11.2025 18:53Причём код может быть четырёхзначным, т.е. вероятность просто угадать его с первой попытки — 0.01%
Alex-ZiX
Понятно, что никому в этом мире доверять нельзя на 100%. Но на 99% вполне можно. Вы же доверяете свои деньги банкам, паспортные данные работодателю, визу пограничникам и т.д. Вопрос никогда не стоял как абсолютная безопасность. Вопрос стоял как уровень доверия. Вряд ли издателям корневых сертификатов есть дело до мелкого сайта в далёкой холодной стране. Им репутация важнее. Если она пострадает, это будет для них очень дорого. Потому, как ни крути, кому то в жизни доверять прийдётся.
А если уж вы параноик, то вам и переписываться не с кем. Вдруг вы всё сами наглухо зашифровали, а собеседник на том конце забыл свой телефон на столе, не заблокировал его и с вами кто-то переписывается от его имени?