Об авторе: Moxie Marlinspike — хакер-исследователь, придумавший атаку SSL-stripping (и нашедший ещё полдюжины уязвимостей в SSL), разработчик системы Convergence, призванной заменить списки «доверенных сертификатов», а также со-основатель компании Whisper Systems, купленной Twitter в 2011 году. Также стоит почитать обсуждение на Hacker News.
На этой неделе некая компания под названием Telegram анонсировала «защищённый» мессенджер. Насколько защищённый? Если верить их FAQ, «очень защищённый». Мне стало интересно, и я решил почитать описание их протокола. У меня тут же появились некоторые сомнения и опасения (как мягко сказано! а всего-то полчаса назад было «сначала я подумал, что это Томас Пташек решил постебаться» — прим. пер.) Однако, когда из них попытались вытянуть технические подробности, они начали перечислять учёные степени разработчиков вместо того, чтобы вступить в диалог. Кроме того, они отклонили все мои предложения о сотрудничестве.
Но это ещё не всё. Чтобы успокоить крипто-сообщество, они устроили… конкурс по взлому!
Конкурс сам по себе является плохим знаком (а именно, плохим знаком № 9). Правила составлены таким образом, чтобы одурачить людей, заставив их поверить в безопасность Telegram. Разумеется, они не упустили возможность сослаться на него в своём FAQ как на доказательство абсолютной защищённости протокола. На самом деле конкурс бессмысленен.
Итак, господа разработчики Telegram, у меня тоже есть для вас конкурс. Ниже описан непередаваемо ужасный «защищённый» протокол (который и секунды не продержится в боевых условиях), но который является настолько же «невзламываемым» в условиях вашего конкурса, как и ваш собственный протокол.
Итак, у нас есть протокол, использующий генератор случайных чисел с закладкой, слабую схему с открытым ключом, наихудшую из возможных хеш-функций в качестве функции формирования ключа, а само шифрование происходит с помощью XOR. Если вам понадобится лог трафика переписки Алисы и Боба, он в конце поста.
Условия этого конкурса такие же, как и у Telegram (никакого man-in-the-middle, никакая часть переписки не известна, махинации с трафиком невозможны, и т.д.) Если разработчики Telegram хотят доказать, что их протокол лучше хотя бы этого, я предлагаю им опубликовать расшифрованное сообщение Алисы. А если они не смогут продемонстрировать уязвимость даже в таком насквозь дырявом протоколе, играя по своим же правилам, это докажет, что их правила и конкурс — бред собачий.
Давайте сделаем всё как положено. TextSecure, открытый мессенджер, который мы разрабатываем в Open WhisperSystems, основан на схеме Axolotl ratchet, которая, по нашему мнению, на данный момент должна лежать в основе любого асинхронного мессенджера. Кстати, наш алгоритм используется «под капотом» CyanogenMod. По сути, у нас уже на десять миллионов пользователей больше, чем у Telegram.
Присоединяйтесь к нам. Помогайте с разработкой, дизайном и написанием документации. Также вы можете помочь материально — автор каждого коммита в Github получает долю собранных средств, а вы получаете возможность точно знать, как были потрачены ваши деньги.
На этой неделе некая компания под названием Telegram анонсировала «защищённый» мессенджер. Насколько защищённый? Если верить их FAQ, «очень защищённый». Мне стало интересно, и я решил почитать описание их протокола. У меня тут же появились некоторые сомнения и опасения (как мягко сказано! а всего-то полчаса назад было «сначала я подумал, что это Томас Пташек решил постебаться» — прим. пер.) Однако, когда из них попытались вытянуть технические подробности, они начали перечислять учёные степени разработчиков вместо того, чтобы вступить в диалог. Кроме того, они отклонили все мои предложения о сотрудничестве.
Но это ещё не всё. Чтобы успокоить крипто-сообщество, они устроили… конкурс по взлому!
Ловушка конкурсов по взлому
Конкурс сам по себе является плохим знаком (а именно, плохим знаком № 9). Правила составлены таким образом, чтобы одурачить людей, заставив их поверить в безопасность Telegram. Разумеется, они не упустили возможность сослаться на него в своём FAQ как на доказательство абсолютной защищённости протокола. На самом деле конкурс бессмысленен.
Итак, господа разработчики Telegram, у меня тоже есть для вас конкурс. Ниже описан непередаваемо ужасный «защищённый» протокол (который и секунды не продержится в боевых условиях), но который является настолько же «невзламываемым» в условиях вашего конкурса, как и ваш собственный протокол.
- Алиса генерирует случайное 32-байтное число,
super_secret
, используя Dual_EC_DRBG — генератор случайных чисел с закладкой NSA. - Алиса посылает сообщение Бобу с запросом его публичного ключа.
- Боб шлёт Алисе
bob_public
, 896-битный ключ RSA. Ничего не подписывается и не проверяется. Мы просто надеемся, что никто не додумается до man-in-the-middle. - Алиса шифрует
super_secret
с помощьюbob_public
и посылает Бобу. Реализацию RSA она берёт из учебника — пустое место забивается нулями, а не случайными битами, и e = 65537. - Теперь Боб и Алиса вычисляют
message_key = MD2(super_secret)
(раз уж вам нравятся устаревшие алгоритмы...) - Алиса посылает своё сообщение Бобу, используя XOR в качестве шифра:
ciphertext = message XOR message_key
.
Итак, у нас есть протокол, использующий генератор случайных чисел с закладкой, слабую схему с открытым ключом, наихудшую из возможных хеш-функций в качестве функции формирования ключа, а само шифрование происходит с помощью XOR. Если вам понадобится лог трафика переписки Алисы и Боба, он в конце поста.
Условия этого конкурса такие же, как и у Telegram (никакого man-in-the-middle, никакая часть переписки не известна, махинации с трафиком невозможны, и т.д.) Если разработчики Telegram хотят доказать, что их протокол лучше хотя бы этого, я предлагаю им опубликовать расшифрованное сообщение Алисы. А если они не смогут продемонстрировать уязвимость даже в таком насквозь дырявом протоколе, играя по своим же правилам, это докажет, что их правила и конкурс — бред собачий.
А теперь я обращаюсь ко всем остальным
Давайте сделаем всё как положено. TextSecure, открытый мессенджер, который мы разрабатываем в Open WhisperSystems, основан на схеме Axolotl ratchet, которая, по нашему мнению, на данный момент должна лежать в основе любого асинхронного мессенджера. Кстати, наш алгоритм используется «под капотом» CyanogenMod. По сути, у нас уже на десять миллионов пользователей больше, чем у Telegram.
Присоединяйтесь к нам. Помогайте с разработкой, дизайном и написанием документации. Также вы можете помочь материально — автор каждого коммита в Github получает долю собранных средств, а вы получаете возможность точно знать, как были потрачены ваши деньги.
Лог трафика Алисы и Боба
Alice: 7075 626c 6963 206b 6579 2070 6c7a Bob : 3081 8c30 0d06 092a 8648 86f7 0d01 0101 0500 037b 0030 7802 7100 acc3 ec17 9fea 0d19 b29d f347 cc62 423c 02d9 e49b ba54 b9a7 4cea 7c82 0f99 dcf1 c221 fca2 7882 0b67 4c7e 8d67 b0e5 4a2b 8873 438d ef0b f5d1 6862 fecc ae0d 8736 5e69 cb5e 1346 f612 49d2 e8ce 1463 8be0 8022 8ef2 01d9 6917 6a03 19fc 2a03 ddad aad4 eb28 d655 107c 52bf c1ae e800 a501 0203 0100 01 Alice: 53ce e8e4 f6c4 b330 a6aa 0830 81f2 c5e3 00b2 c3ac 0e54 7cee c9a6 be0e 7a54 9bf0 dbf2 11c2 853a 8443 db72 4dcf 96ad bc9a 9373 5f68 6a33 0f5b ea49 f40b 8324 3f8a 168a 7d78 3e08 85a1 f774 7c6a 10f9 646c a13e d6c3 00b3 670a 2af3 d2d6 b153 20b2 5b1c 2fd1 6599 989a 1938 2c18 1acf 68a5 Alice: 12a6 077f 4625 5523 c23b 2c43 e60f dd39