Telegram vs ФСБ
Прочитав новость об очередном акте Марлезонского балета «Телеграм vs ФСБ», Штаб Политрука задумался об смысле сего действа ещё раз.
Вооружившись принципом радикального сомнения Декарта, целесообразно задать вопросе - насколько соответствуют действительности утверждения разработчиков Телеграма?
Про ключи и то, что они хранятся на устройствах, по всей видимости, правда - по крайней мере алгоритмы, позволяющие это есть.
А вот про “защищенный от прослушивания” врут, и вот почему.
Все алгоритмы выработки общего секретного ключа основаны на предположении, что два устройства хотя бы на каком-то этапе алгоритма могут обмениваться информацией напрямую, без посредника.
Иначе “человек-в-середине” организует два защищенных от прослушивания канала - между собой и каждым из участников и прекрасно будет читать, слышать и видеть всё, чем обмениваются наивные пользователи.
При этом оператор сотовой связи или провайдер не могут выступить в такой роли - им помешает механизм сертификатов безопасности.
А вот владелецу сервера ничего не может помешать, кроме честности - он и так в середине, так протокол Телеграма устроен.
Так что лукавят хозяева Телеги - или в том, что “подслушать нельзя”, или в том, что делают вид, что не понимают, как подслушать можно.
Вторым вопросом повестки был - для чего вообще используется шифрование и где?
Оказывается, Телеграм не первый программный продукт, массово использующий коммерческое шифрование.
Первым массовым, по всей видимости, был “защищённый HTTP” - то, что каждый из вас имеет возможность наблюдать в адресной строке любимого браузера слева от имени домена в виде оптимистично оформленного значка и всплывающей надписи “соединение защищено”.
Для чего оно нужно?
Во-первых для того, чтобы вы не попали в ловушку коварного хакера вместо, например, своего почтового ящика на незабвенном рамблере. Хакеру для атаки на вас не всегда нужно взламывать ваш компьютер или телефон - между вами и вашей почтой находится множество хитрых закоулков, называемых сетевыми сервисами, где хакер может затаится и оттуда нанести удар.
Особенно много таких закоулков находится в уютных кафешечках с бесплатным вайфаем, где так приятно проявлять свою креативность.
Но если почтовый сервер надёжно, а для хороших серверов это почти всегда так и есть, хранит свой ключ, то защищённый HTTP сумеет вовремя вас предупредить - что-то пошло не так и на другом конце сети находится что угодно, только не ваша почта.
Во-вторых, шифрование нужно, чтобы никто не смог подсмотреть содержимое, например, письма, которое вы получили из банка.
Вам же не нужно, чтобы кто-то лишний был в курсе вашей реальной зарплаты? И опять злодеям не обязательно прокрадываться внутрь вашего ноута, особенно если в нём установлен хороший антивирус - тёмные закоулки сети всё такие же тёмные, как и в предыдущем абзаце.
Работает это всё при помощи асимметричной криптографии - целого класса алгоритмов, в которых ключ для шифрования не совпадает с ключом для расшифровки. Первый называется открытым ключом, второй - закрытым или приватным, потому что открытый ключ можно вычислить по закрытому, а закрытый по открытому - нет. Закрытый ключ хранится на сервере, открытый любым способом сообщается вашему устройству: удобно, надёжно, но - вспоминая известное “удобно, надёжно, дёшево - любые два по вашему выбору!” - дорого.
Поэтому на практике ваше устройство придумывает ещё один ключ, который называется сессионным, пересылает его в зашифрованном виде на сервер и дальше они работают на каком-нибудь старом добром симметричном алгоритме с общим ключом.
Осталась одна “маленькая” проблема - сообщить вашему устройству открытый ключ и, при этом, каким-то образом гарантировать, что этот ключ действительно соответствует закрытому ключу сервера. Для её решения пришлось городить целый огород под названием “инфраструктура сертификатов безопасности”, в которую входят так называемые центры сертификации - по сути это некие сторонние лица, которым доверяет и сервер, и ваше устройство.
Следующий вопрос повестки - что такое оконечное шифрование и почему оно понадобилось?
Из предыдущей части вы узнали, что есть дешевое и быстрое симметричное шифрование на общем ключе, и есть дорогое и медленное асимметричное шифрование на паре - открытый/закрытый - ключей, которое, к тому же, требует доверять какому-то третьему участнику - центру сертификации.
А можно ли обойтись без этих непонятных центров, тем более требующих за свои услуги немалые деньги, и вообще без необходимости доверять кому-то третьему?
Оказывается можно - сама проблема называется “выработка общего секретного ключа”, а наиболее известный алгоритм предложен Диффи и Хеллманом [https://youtu.be/vFjq9pID4-E].
В результате этого алгоритма два устройства напрямую, без помощи стороннего участника, получают возможность обмениваться информацией по защищенному от прослушивания каналу: текстовыми сообщениями, картинками, аудиофайлами и даже аудио и видеопотоками - без разницы, всё зависит лишь от пропускной способности сети, и даже ваш провайдер или оператор сотовой связи, не может узнать ваши секреты.
А значит их не может узнать и ФСБ.
Казалось бы, вопрос можно закрыть, но есть пара нюансов.
И первый из них - Конституция: часть 2 статьи 23 “Каждый имеет право на тайну переписки, телефонных переговоров, почтовых, телеграфных и иных сообщений. Ограничение этого права допускается только на основании судебного решения” и часть 3 статьи 55 “Права и свободы человека и гражданина могут быть ограничены федеральным законом только в той мере, в какой это необходимо в целях защиты основ конституционного строя, нравственности, здоровья, прав и законных интересов других лиц, обеспечения обороны страны и безопасности государства”.
Получается, что с одной стороны оконечное шифрование гарантирует тайну переписки и, потому, законно, а с другой согласно той же Конституции на основании судебного решения, мотивированного федеральным законом, кто-то обязан каким-то образом ограничить право на тайну переписки - то есть предоставить суровым людям в костюмах возможность читать, слышать и видеть вне зависимости от того нравится вам это или нет.
Считаете, что тайна переписки должна быть безусловна - меняйте Конституцию или ищите себе новую.
Не можете ни того, ни другого - исполняйте решение суда.