Как стать автором
Обновить

История о том как абсолютное оружие оказалось никому не нужным

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров18K

Все началось с того что к нам в офис приехал директор иногороднего филиала.

Он подошел ко мне и сказал примерно следующее:

«Я переписываюсь с генеральным директором с помощью mail.ru.

В переписке мы обсуждаем весьма щекотливые вопросы, связанные, например, с …, ну тебе лучше не знать…. Я бы не хотел чтобы эта переписка была доступна третьим лицам.»

Я озаботился вопросом и достаточно быстро выяснил, что стандартом является шифрование с помощью шифра AES и аутентификация с помощью шифра RSA. Все мессенджеры предусматривают регистрацию, имеют свои сервера и хранят историю переписки.

Кроме того, я выяснил, что все существующие средства шифрования, которые доступны официально, должны иметь лицензию ФСБ (Постановление 313 https://base.garant.ru/70 164 728/). Одно из условий выдачи такой лицензии — предоставление ключей для доступа к переписке. (Вспоминаем историю с запретом Telegram в РФ).

То есть, использование любого, существующего легально, мессенджера не дает уверенности в тайне переписки.

Проанализировав ситуацию, я вывел рецепт идеального (защищенного) мессенджера.

Он должен состоять из следующих элементов:

  1. Алгоритм шифрования с абсоютной криптостойкостью.

  2. Надежный способ передачи ключей.

  3. Надежный способ аутентификации (не RSA).

И не иметь своих серверов, не требовать регистрации, не хранить историю переписки.

Далее началась реализация.

Элемент 1. Шифр с абсолютной криптостойкостью.

Бытует мнение что взломать можно любой шифр. Хотя бы теоретически — брутфорсом.

И я почему‑то уверен, что мало кто из читателей этого текста знает что такое алгоритм Вернама. (По крайней мере, я не знал).

Он нигде не рекламируется и упоминается только в учебниках по криптографии, да и то не во всех.

А между тем, этот алгоритм запатентован Гилбертом Вернамом в далеком 1917 году.

В 1946 г. Клод Шеннон (по заказу министерства обороны США) доказал что шифр Вернама обладает абсолютной криптостойкостью.

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

По‑простому, к алгоритму Вернама нельзя применить метод Brute‑force.

Алгоритм Вернама опубликован (https://ru.wikipedia.org/wiki/%D0%A8%D0%B8%D1%84%D1%80_%D0%92%D0%B5%D1%80%D0%BD%D0%B0%D0%BC%D0%B0), его реализация очень проста — бери и делай.

Основная трудность — обеспечить одноразовость и случайность ключей.

Так как в шифре Вернама длина ключа равна длине текста, то нужно сгенерировать достаточно длинную последовательность случайных чисел (чтобы потом от нее отщипывать одноразовые кусочки).

Генерация случайной последовательности — отдельная задача.

Я использовал свой вариант реализации алгоритма Blum‑Blum‑Shub.

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

Поэтому, вторая задача — сделать из псевдослучайной последовательности истинно случайную (или максимально приблизиться к этому).

Эту задачу я тоже решил. Истинно случайную последовательность получаем из каракулей пользователя. А потом перемешиваем ее с псевдослучайной от Blum‑Blum‑Shub. Алгоритм перемешивания взял у Кнута, Дональда нашего.

Полученная таким образом длинная последовательность случайных чисел хранится на устройстве (в зашифрованном виде). Пароль (ключ) на расшифровку вводится при старте приложения — хранится в голове пользователя и кнопки «Забыли пароль?» там нет.

При утере, краже или захвате устройства злоумышленник не сможет воспользоваться вашим мессенджером потому что не знает пароль. Это первый уровень защиты.

Элемент 2. Надежный способ передачи ключей.

Самый надежный способ передачи ключей — личная встреча. Это аксиома. Для шифра Вернама передавать нужно довольно длинную последовательность. Но я придумал способ как сделать это с помощью QRcode. Партнеры встречаются (можно на 5 секунд) — один показывает QRcode на экране, второй — считывает. Все. И далее на обоих устройствах генерируется (идентичная) длинная последовательность.

Элемент 3. Надежный способ аутентификации (не RSA).

Американский институт стандартов (NIST), начиная с 2018 года, провел 4 конкуса на замещение уязвимого и ненадежного алгоритма RSA новым постквантовым алгоритмом.

Но я решал задачу очень узкую, когда два человека очень хотят обеспечить тайну переписки.

И здесь все просто. Этому в СССР учили детей (я застал). В фильме «Неуловимые мстители» есть соответствующий эпизод:

Здрасте! Вам билетёр требуется? — Был нужен, уже взяли. — А может, и я на что сгожусь?

При личной встрече партнеры договариваются о пароле и отзыве. Все. Никаких хитрых алгоритмов не нужно. В начале каждого сеанса связи вы посылаете сообщение‑пароль и ждете сообщение‑отзыв. Это второй уровень защиты.

Собственные сервера нужны мессенджерам для регистрации, хранения истории сообщений и всякой ерунды типа обмена статусами (ну и для сбора метаинформации — кто с кем и сколько раз).

Мне содержать собственные сервера не по карману (и обслуживать замучаешься).

Я использую чужие сервера, например — обычный бесплатный эккаунт DropBox.

Первый абонент создает файл с зашифрованным текстом и кладет его в некий DropBox эккаунт. Второй абонент (по таймеру) опрашивает и читает этот файл к себе на устройство, расшифровывает и предъявляет. Здесь нужно решить проблему синхронизации ключей. Она решается просто — в начале сообщения в незашифрованном виде прописывается номер первого байта ключа (в длинной последовательности) и длина ключа. На приемной стороне это считывается — из длинной поледовательности выкусывается этот кусок и используется для расшифровки.

В принципе, в качестве промежуточного места хранения может быть использован любой сервис хранения файлов (если у него есть соответствующий API).

Зашифрованный файл после этого стирается (чтобы место не занимал), а использованные ключи затираются. Это третий уровень защиты.

Со стороны это выглядит как один человек положил файл в DropBox, а другой прочитал.

Сообщение в незашифрованном виде существует только на экране мобильного устройства.
После перехода на другую страницу оно стирается. История сообщений нигде не хранится.

Никакой регистрации не требуется (данные для доступа в DropBox прописаны в коде).

Первый абонент сам создает новый контакт, где указывает псевдоним для себя и для партнера.

Для этого контакта создается свой QRcode, который показывается партнеру.
Партнер считвыает QRcode и у него появляется новый контакт (с псевдонимом первого абонента).

То есть никакого спама не может быть в принципе. У вас будут только те контакты, которые вы сами создадите.

В результате получаем аналог личной встречи (насколько это технически возможно).

Оставляем за скобками кейлоггеры и прочие видеокамеры за плечом.

Никаких следов не остается (за исключением зашифрованного файла на сервере интернет‑провайдера по закону Яровой).

Текст из одной головы попадает в другую голову. И все.

Криптоаналитик может перехватить все ваши сообщения (запросив их у интернет ‑провайдера), но расшифровать их он не сможет ни сегодня, ни завтра. Не сможет никогда в будущем, независимо от располагаемой компьютерной мощности.

Вот оно — Абсолютное Оружие! (https://rutube.ru/video/23 696bad699fd38 659bc2d66 918ef688/)

(Ну еще нужно было сделать всякие мелочи типа внедрить в приложение подсистему оплаты — она разная у Google и Apple).

Я хотел иметь единый исходный код для всех платформ, поэтому реализовал все на Xamarin (в 2018). Потом переписал все на.NET MAUI.

К слову сказать, единого кода таки не получилось. Android и iOS все‑таки разные.

Далее начался процесс продвижения.

Продавать мобильное приложение можно только через магазины Google и Apple.

Считается, что любое приложение в магазине — это (внезапно) собственность США, и чтобы продавать его на территории РФ нужно получить разрешение на экспорт (из США в РФ). Да, вот так вот.

Получить разрешение нельзя (или очень сложно), потому что сильное шифрование находится в том же разделе закона об экспорте что и оружие.

Ну ладно. Я решил что американского рынка мне должно хватить.

Открыл фирму в Канаде (чтобы американцы не пугались того, что изготовитель русский).

Опубликовал приложение в магазинах Google и Apple (от имени этой фирмы).

И стал присматривать себе уже квартиру в удобном месте и абонемент в массажный салон.

Но ничего не происходило. Вообще.

Денег на рекламу у меня не было.

Был сайт с приличной посещаемостью (англоязычный) — повесил на нем баннер — безрезультатно.

Приложение пролежало в магазинах с 2018 по 2022 год.

За это время несколько раз менялись разные условия и приходилось переписывать большие куски (например, у DropBox были долгоживущие ключи доступа, а потом их отменили и пришлось перегенерировать ключи всякий раз).

Отдельная эпопея — это Push Notifications.
Я потратил весьма много энергии и времени и звоночек стал звонить, но потом решил что это оставляет лишний цифровой след и отказался.

В 2022 году возникли сложности с магазинами.

Кроме этого оказалось, что каждый владелец зарубежной фирмы должен ежегодно предоставлять в налоговую специфический отчет (КИК), который сделать самому нереально, а юридические фирмы берут за него мнэ‑э-э — лучше не знать. А штраф за неподачу в срок — 2 миллиона рублей.

Сугубо не рекомендую открывать зарубежные фирмы (если вы не миллионер и у вас нет своего юридического отдела).

Свою я срочно аннулировал и на этом гештальт был закрыт.

Уфф…


Вероятные причины провала продаж.

  1. Банальная нехватка денег на рекламу.

  2. Это асоциальный мессенджер. Он не предназначен для «поболтать». Он нужен тогда когда нужна замена личной встречи. То есть целевая аудитория специфична.

Разделять секреты с незнакомыми людьми глупо.

Я думаю, что это может быть востребованным у таких категорий людей как

  • близкие родственники (супруги)

  • партнеры по бизнесу

  • босс и подчиненные

  • врачи и клиенты

  • обвиняемые и адвокаты

  • военные (шпионы)

  • обязательно должны заинтересоваться криминальные структуры, но им я не продам технологию.


Что теперь?

Согласно Постановлению 313, я не могу продавать свое решение на территории РФ легально.

Но консультационные услуги оказывать могу.

Если вам очень нужно — вы можете обратиться ко мне — я научу вас как написать код и вы сможете сделать приложение для собственнных нужд (что не запрещено).

При этом у вас будет полная уверенность в том что в коде нет «закладок» (ведь код будете писать вы или ваши доверенные программисты).

Если у вас есть секреты и вы готовы тратить время и деньги на их защиту — обращайтесь.

Почта для заявок: mal0@mail.ru

Теги:
Хабы:
+24
Комментарии136

Публикации