Все началось с того что к нам в офис приехал директор иногороднего филиала.
Он подошел ко мне и сказал примерно следующее:
«Я переписываюсь с генеральным директором с помощью mail.ru.
В переписке мы обсуждаем весьма щекотливые вопросы, связанные, например, с …, ну тебе лучше не знать…. Я бы не хотел чтобы эта переписка была доступна третьим лицам.»
Я озаботился вопросом и достаточно быстро выяснил, что стандартом является шифрование с помощью шифра AES и аутентификация с помощью шифра RSA. Все мессенджеры предусматривают регистрацию, имеют свои сервера и хранят историю переписки.
Кроме того, я выяснил, что все существующие средства шифрования, которые доступны официально, должны иметь лицензию ФСБ (Постановление 313 https://base.garant.ru/70 164 728/). Одно из условий выдачи такой лицензии — предоставление ключей для доступа к переписке. (Вспоминаем историю с запретом Telegram в РФ).
То есть, использование любого, существующего легально, мессенджера не дает уверенности в тайне переписки.
Проанализировав ситуацию, я вывел рецепт идеального (защищенного) мессенджера.
Он должен состоять из следующих элементов:
Алгоритм шифрования с абсоютной криптостойкостью.
Надежный способ передачи ключей.
Надежный способ аутентификации (не 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 миллиона рублей.
Сугубо не рекомендую открывать зарубежные фирмы (если вы не миллионер и у вас нет своего юридического отдела).
Свою я срочно аннулировал и на этом гештальт был закрыт.
Уфф…
Вероятные причины провала продаж.
Банальная нехватка денег на рекламу.
Это асоциальный мессенджер. Он не предназначен для «поболтать». Он нужен тогда когда нужна замена личной встречи. То есть целевая аудитория специфична.
Разделять секреты с незнакомыми людьми глупо.
Я думаю, что это может быть востребованным у таких категорий людей как
близкие родственники (супруги)
партнеры по бизнесу
босс и подчиненные
врачи и клиенты
обвиняемые и адвокаты
военные (шпионы)
обязательно должны заинтересоваться криминальные структуры, но им я не продам технологию.
Что теперь?
Согласно Постановлению 313, я не могу продавать свое решение на территории РФ легально.
Но консультационные услуги оказывать могу.
Если вам очень нужно — вы можете обратиться ко мне — я научу вас как написать код и вы сможете сделать приложение для собственнных нужд (что не запрещено).
При этом у вас будет полная уверенность в том что в коде нет «закладок» (ведь код будете писать вы или ваши доверенные программисты).
Если у вас есть секреты и вы готовы тратить время и деньги на их защиту — обращайтесь.
Почта для заявок: mal0@mail.ru
Комментарии (127)
OldFisher
11.06.2025 05:47Абсолютный шифр - это OTP (одноразовый блокнот). Автор почти переизобрёл его, но не до конца (что характерно, схема управления ключами вышла как раз такая, как надо). Учите основы криптографии, мальчики и девочки, не пытайтесь изобрести всё с нуля, не будьте такими же заносчивыми, как Эдгар Аллан По. И что важно - не пренебрегайте анализом стойкости ваших изобретений к дифференциальным атакам, атакам с известным текстом и известным ключом, а также другим достижениям криптоаналитической мысли.
aax
11.06.2025 05:47Спарведливости ради - в данном конкретном случае атаки с известным текстом ничего не дадут. Никакие ключи по каналу передачи самого шифрованного сообщения тоже не передаются.
Wizard_of_light
11.06.2025 05:47один показывает QRcode на экране, второй – считывает. Все. И далее на обоих устройствах генерируется (идентичная) длинная последовательность.
Как я понимаю в этот момент на Вернаме можно уже ставить крест, вместо случайного одноразового блокнота имеем псевдослучайный, вопрос криптостойкости генерирующего алгоритма повисает в воздухе.
aax
11.06.2025 05:47один показывает QRcode на экране, второй – считывает.
Если "устройства" это смартфоны уважаемых и эффективных топ-менеджеров(а на практике так и будет!), то можно рыдать и смеяться одновременно - очередная авторская версия бронированных ворот посреди пустыни.
Тем более, что далее автор видит свой криптостойкий месседжер, как приложение под массовые смартфоны.
Wizard_of_light
11.06.2025 05:47Да, если всё это происходит на стандартном смартфоне, то всё ещё печальнее, вопрос стойкости алгоритма генерации там даже не в первой половине списка вопросов...
CrazyOpossum
11.06.2025 05:47Автор изобрёл rc4, но с сомнительной стойкостью.
DarkMike
11.06.2025 05:47А вот не надо было изобретать велосипед. ГОСТ или AES вполне подойдут. Наверное их могут взомать соответственно ФСБ и ЦРУ. Но сомневаюсь, что кто-либо еще. Так что если автор в РФ - AES вполне хватит :)
Удостоверение второй стороны? Сертификаты и надежный ЦС
Все уже придумано до нас :)
mozg37
11.06.2025 05:47Криптопаяльник откроет любые ключи
PerroSalchicha
11.06.2025 05:47Кроме тех, которые исследуемая хитрая задница не знает.
WASD1
11.06.2025 05:47В KPI товарища констебля сохранность хитрой задницы не входит ни с каким весом.
Поэтому на месте задницы - лучше знать.
DarkMike
11.06.2025 05:47Хорошо быть не следующим в криптографии (это про автора). Можно открывать много нового и изобретать супер варианты. Но есть у автора ключевая фраза (то, что находится в QR-коде) и алгоритм получения последовательности для шифра. А это значит, что длина ключа у нас не равна последовательности, а равна длине ключевой фразы. А значит у нас тут не совершенный шифр, а просто один из. И уже можно на него продумывать разные атаки. Упс
P.S. Совершенный шифр - такой шифр, в котором для любого шифрованного сообщения и любого исходного текста существует ключ, при котором исходный текст преобразуется в шифрованное сообщение. Т.е. если перед вами зашифрованное сообщение, то расшифроватся оно может вообще в любой текст, что делает подбор ключа просто бессмысленнымDarkTiger
11.06.2025 05:47P.S. Совершенный шифр - такой шифр, в котором для любого шифрованного сообщения и любого исходного текста существует ключ, при котором исходный текст преобразуется в шифрованное сообщение.
XOR и ключ с длиной, больше или равной размеру сообщения? :) На все остальное можно придумывать различные атаки.
DarkMike
11.06.2025 05:47Ну как вам сказать... Это определение совершенного шифра. Мне лично известен только этот вариант :) Но я не криптограф, может и другие есть. Но вероятней всего там тоже есть какие-либо подводные камни - иначе зачем нужны AES и другие?
mimicria
11.06.2025 05:47Хех, основная проблема шифра Вернама - длина случайной маски равна длине сообщения.
Самый надежный способ передачи ключей – личная встреча.
Если Боб и Алиса лично встречаются, нет смысла шифрования: вместо маски шифра просто передаёте сообщение.
randomsimplenumber
11.06.2025 05:47Так то при личной встрече можно нагенерить пару Гб случайных ключей, для текстовых сообщений этого хватит лет на 500.
randomsimplenumber
11.06.2025 05:47а, точно. Кому нужен абсолютно секретный мессенджер на 2 абонента ;) а если абонентов 200 - собрать их для обмена ключами то ещё развлечение.
mimicria
11.06.2025 05:47А как сохранить в тайне эту пару Гб случайных ключей?
А как синхронизировать смещение для каждого нового сообщения?
konst90
11.06.2025 05:47А как синхронизировать смещение для каждого нового сообщения?
Да это как раз не проблема. Открытым текстом пишем - читай с такого-то символа ключа. Надо только проверять, что этот блок ключа ещё не использовался.
mimicria
11.06.2025 05:47Это не проблема при использовании истинно случайной последовательности (как должно быть у Вернама) и надёжного хранения её в секрете. Но автор предлагает алгоритмически её генерировать, что уже делает последовательность псевдослучайной и повторяемой. А где есть повторяемость и открытым текстом даётся смещение, там будет и главная дыра.
randomsimplenumber
11.06.2025 05:47Ну, псевдослучайная. Ну повторится через миллиард лет - сильно легче стало? ;)
konst90
11.06.2025 05:47Проблема не в том, когда она повторится. А в том, что размер ключа уменьшается с длины сообщения до содержимого QR-кода, и весь смысл Вернама пропадает.
randomsimplenumber
11.06.2025 05:47В qr код помещается 7000 цифр. Этого достаточно для seed-последовательности. А без знания последовательности псевдослучайность ключа ничего не даст.
Тут другой вопрос интересный, как генерируется эта последовательность. Если тоже псевдослучайных генератором, у которого seed зависит, например, от серийного номера и от времени.. Или просто известен кому надо .
kamaz1
11.06.2025 05:47А в чем проблема псевдослучайности на телефоне? Мне кажется там достаточно датчиков с которых можно снимать показания, для генерации не абсолютно, но достаточно случайных чисел.
randomsimplenumber
11.06.2025 05:47Вот именно. Емнип, в openssl был баг с ослаблением гпсч. Это в проекте с открытым кодом А что может быть наверчено в смартфоне?
pavel_kudinov
11.06.2025 05:47в определениях теории шифрования - генерация этой псевдослучайной последовательности по seed - становится частью алгоритма шифрования. который может быть сам по себе скомпрометирован
шифр Вернама не взламываем, даже если алгоритм шифрования известен. Ваш алгоритм взламываем, если злоумышленнику становится известен алгоритм генерации псевдослучайной последовательности
в случае перехваченного seed - тривально
в случае не перехваченного seed - ваш алгоритм превращается в задачу взлома ключа, который теперь не вся последовательность, а этот самый seed. что скорее всего будет работать хуже чем стандартный AES, по причине что никто серьёзно не исследовал такой механизм на устойчивость ко всяким там частотным, rainbow и тп атакам
с энтропией обычный XOR Вернама + псевдослучайная последовательность от сида напортачит точно гораздо сильнее, чем нормальный AES. а да, и ещё вам нужно где-то найти генератор псевдослучайных чисел который на вход такой длинный seed принимает. это не тривиальная задача так-то, существующие псевдослучайные алгоритмы на гораздо более короткий seed заточены
в любом случае - вы точно сломали исходный смысл шифра Вернама
по хорошему, последовательность для шифра Вернама должна быть не псевдо случайной, а использовать источник истинной энтропии, потому что любые псевдослучайные генераторы ровно так же уязвимы, как и раундовые системы шифрования. они детерменированно крутят хешики в цикле со сдвигамиJBFW
11.06.2025 05:47счетчик Гейгера с нормализацией по фону - вполне может таким быть. Среднеожидаемое количество импульсов оценить можно, но попадание импульса в конкретный момент времени - случайная величина.
pavel_kudinov
11.06.2025 05:47да, и не только такой вариант. аппаратные генераторы истинной энтропии вполне себе существуют. правда все довольно сильно ограничены по объёму энтропии которую они могут генерировать в единицу времени, и это чаще всего сильно меньше чем скорость с которой /dev/random на гора руду выдаёт
а для Вернама с учётом потребностей шифрования мультимедийной информации чаще всего катают на флешки/блюреи ключи в десятки гигабайт и передают физически
randomsimplenumber
11.06.2025 05:47в случае перехваченного seed - тривально
Конечно. Но в предложенной схеме seed торчит наружу только в qr коде, а мы его никому кроме того кому нужно не показываем.
А сделать генератор с длииинным seed вопрос чисто технический. Теория для подбора коеффициентов в полином есть. Другое дело, что особого смысла в этом нет. Даже 256 бит ключ брутфорсом не подбирается
pavel_kudinov
11.06.2025 05:47Конечно. Но в предложенной схеме seed торчит наружу только в qr коде, а мы его никому кроме того кому нужно не показываем.
да, но вы зачем-то сломали при этом нормальное шифрование, заменив его на Вернам+ГСПЧ по сиду. хотите хоть какой-то доказанной безопасности - передавайте через QR вместо сида нормальный ключ шифрования от нормального алгоритма
А сделать генератор с длииинным seed вопрос чисто технический. Теория для подбора коеффициентов в полином есть
не криптостойкий ГСПЧ в теории будет ломаться не брутфорсом а частотным анализом. существующие алгоритмы ГСПЧ с длинным seed являются не криптостойкими
вывод: использовать для шифрования нужно не самоделку из XOR+ГСПЧ+seed, а либо настоящий шифр Вернама, либо нормальный алгоритм шифрования сделанный под конкретную длину ключа
на применении самоделок в шифровании как раз и протекают от большого ума, если настоящим профи вдруг нужно будет реально ваш шифр крипто анализировать
randomsimplenumber
11.06.2025 05:47Да я так то и не возражаю. Готовых криптосхем придумано достаточно, средний мимокрокодил лучше не сделает. Просто автор предложил меняться ключами через qr-код, и были сомнения, хватит ли емкости. Хватит. Можно ещё позвать Диффи и Хелмана, тогда если кто-то сфотографирует обмен ключами - это ему ничего не даст.
pavel_kudinov
11.06.2025 05:47ну корень квадратный из 1024 битного ключа это 32
значит qr с размерами от 32x32 квадратика уже вполне подойдет
а они и побольше бывают
Wesha
11.06.2025 05:47размер ключа уменьшается с длины сообщения до содержимого QR‑кода, и весь смысл Вернама пропадает.
Берём файл, заполненный случайным шумом, размером пару терабайт. Файл есть у Алисы и Боба, и его нету у тащмёра. Алиса передаёт Бобу: в QR‑коде: «стартовый оффсет в файле 12 345 678, шаг 23 456». Боб берёт из файла, начиная с 12 345 678-го, каждый 23 456-байт. Как там «размер ключа», сильно уменьшился?
Ansud
11.06.2025 05:47А файл тоже qr кодом передавать?
Wesha
11.06.2025 05:47Да хоть по RFC 1149!
Ansud
11.06.2025 05:47А нафига тогда QR код вообще? Если у обоих есть файлик, то начинайте с нуля. Все дополнительные телодвижения никакой секурити не улучшат (а то и ухудшат).
Wesha
11.06.2025 05:47Если у обоих есть файлик, то начинайте с нуля.
А головой подумать?
Если начинать с нуля, то если тащмаёр наложит потные волосатые лапы на зашифрованный файлик и тот самый многогиговый файл, то расшифровать будет тривиально. А чтобы найти заранее неизвестные (тащмаёру) стартовое смещение и шаг, ему придётся сдлелать в среднем
(длина многогигового файла^2)/2
попыток.
Ansud
11.06.2025 05:47Если у тщмаера есть файлик, то вам не поможет примерно ничего. Перебрать все возможные смещения сильно проще, чем вы думаете.
pavel_kudinov
11.06.2025 05:47если файл полностью случаен и не скомпрометирован - qr код дающий случайный оффсет и шаг вообще ничего не меняет, его можно исключить из схемы
стартуйте с нулевого байта с шагом 1
повторное использование нельзя делать по тем же битам хоть и с другим шагом, поэтому следующий сеанс должен начинаться строго с позиции на которой завершился предыдущий (ну или правее)
qr код в лучшем случае ничего не изменит, в худшем можно напортачить с повторными использованиями
Wesha
11.06.2025 05:47Однако в случае последующей компрометации файла оффсет и шаг позволяют сильно увеличить пространство перебора для атакующего.
pavel_kudinov
11.06.2025 05:47в случае компроментации файла, там задача уже не к перебору сводится
по нему будет составляться некое подобие rainbow таблицы под все оффсеты и шаги, и искаться частотные аномалии в корреляции с этими таблицами на существующих зашифрованных данных
учитывая что у вас шифрование не раундовое а XOR от Вернама, в комбинации с rainbow таблицами общий шифр будет шикарно протекать по частотностям
p.s. но даже без rainbow (которые нужны для раундовости, как во взломе md5, например), если конкретно - пространство перебора при неизвестном seed в случае брутфорса сводится к поиску двух констант как понимаю - оффсет и шаг. перемножение этих двух чисел вроде как сильно меньше выходит, чем длинна нормального ключа шифрования. а файл просто помещается в оперативку и используется как справочник при взятии XOR итоговых проб от данных
konst90
11.06.2025 05:47Наоборот, теперь у вас ключ длиной в пару терабайт, который надо заранее передать Бобу.
Wesha
11.06.2025 05:47Ну так в том-то и ЩАСТЬЕ, что его можно передать сильно заранее — а без того оффсета/шага он сам по себе бесполезен.
pavel_kudinov
11.06.2025 05:47шаг и оффсет легко подбираемы если файл известен а итоговый алгоритм - не раундовый XOR Вернама. выше описал
DarkMike
11.06.2025 05:47Смысл то как раз есть. Сегодня Боб уезжает за границу и ему нужно будет там получать сообщение от Алисы. Вот сегодня он забирает у Алисы шифрблокнот, а сообщения будет получать уже потом. Может и по открытой связи :)) Хрюкостяг!
randomsimplenumber
11.06.2025 05:47Надежный способ аутентификации (не RSA).
С каких пор RSA это способ аутентификации?
eimrine
11.06.2025 05:47Перечисление кому пригодится это ПО, а кому вы его "не продадите" выглядит как-то неправильно. Вспоминается история какого-то популярного проекта который Ричард Столлманн отказался причислить к свободному ПО (FOSS) потому что там была фраза с примерным значением "это ПО не может быть использовано для злых целей". Сапожник вроде как не должен интересоваться тем что выше сапога.
xi-tauw
11.06.2025 05:47Восхитительная статья. Как человек не понял половину алгоритмов, зато изолентой их примотал друг к другу. Суметь накосячить чуть ли не каждом месте приложения это однозначно нужен талант.
aax
11.06.2025 05:47Партнеры встречаются (можно на 5 секунд) – один показывает QRcode на экране, второй – считывает. Все. И далее на обоих устройствах генерируется (идентичная) длинная последовательность.
Если "устройства" это смартфоны уважаемых эффективных топ-менеджеров(а на практике так и будет!), то можно рыдать и смеяться одновременно. Тем более, что далее автор видит свой криптостойкий месседжер, как приложение под массовые смартфоны(ха-ха-ха).
randomsimplenumber
11.06.2025 05:47А что не так? клиенты с деньгами. Зовите чуваков из маркетинга, пусть объяснят, за что деньги платят
kinall
11.06.2025 05:47Ошибка криптофаната: думать, что "никто не прочитает" в требованиях - это буквально "никто". А фактически это значит "сисадмин конкурентов", "жена" или "тот чел, которого надо втихаря уволить". Защита от ФСБ, ЦРУ и Моссада не нужна почти никому (а кому нужна, те сами её обеспечивают).
Отсюда вытекает дичайшее переусложнение UX, потому что нельзя сделать И удобно, И секурно одновременно. А пользователи не понимают, почему они должны так страдать только ради того, чтобы конкурент Карэн не узнал, что они собираются закупать кабачки не по 12, а по 15 вопреки их картельному сговору.
p07a1330
11.06.2025 05:47Загляните ко мне в профиль.
Там есть статья, двухлетней давности, описывающая в точности ту идею, которую вы озвучиваете
С небольшим теориетическим обоснованием и открытыми исходниками. Я ничего не продаю, любой пользователь гитхаба может скачать, собрать и поиграться. Так что "научу вас как написать код" не сильно актуально, очень сомневаюсь, что вы кому-то это продадите
Но из полезного - в комментах аудитория подняла все те проблемы, почему это не нужно массовому пользователю и никогда не станет популярным продуктом - неудобно и избыточено
Zolg
11.06.2025 05:47Любой, начиная с самого бестолкового любителя и заканчивая лучшим криптографом, может создать алгоритм, который он сам не в состоянии взломать.
(c) Брюс Шнайдер
А по факту все очень печально с шифрованием у вас -
алгоритм Вернамаодноразовый блокнот криптостоек ровно настолько, насколько случайна гамма-последовательность. У вас ее случайность гарантированно не больше количества битиков в qr коде. В итоге вместо абсолютно криптостойкой системы получаем велосипедный потоковый шифр с крайне сомнительным характеристиками
DaneSoul
11.06.2025 05:47Вероятные причины провала продаж.
3 причина - По какой причине потенциальный клиент должен Вам доверять?
Были уже прецеденты с спец. защищенным телефоном для криминала, который как потом оказалось разработали и распространили специально чтобы собрать информацию и потом провести массовые аресты.
Сюда же можно вспомнить и недавно нашумевшую во всех смыслах операцию с "горячими" пейджерами.
Oieth
11.06.2025 05:47Простите, а что конкретно гарантирует, что после обмена QR-ключами, снегенированные ключи доступа не были скомпрометированы? Или что к абоненту на другом конце "провода" не подключен терморектальный криптоанализатор и он не по собственной воле предоставляет свой правильный отзыв?
Oieth
11.06.2025 05:47обязательно должны заинтересоваться криминальные структуры, но им я не продам технологию
Приходит к вам такой джентельмен и говорит: "Здравствуйте. Я криминальная структура. Ищу мессенжер, устойчивый к взлому."
brotchen
11.06.2025 05:47Такому джентельмену нужно непременно отказать, потому что если джентельмен окажется в погонах, согласие станет пунктом обвинения (история AN0M). Так что автор всё правильно декларирует.
Quintanar
11.06.2025 05:47Вообще, стоит держаться подальше от таких "технологий". Кто бы ей не заинтересовался, вряд ли это будет корпоративный жирный клиент. И криминал, наверно, не самый плохой вариант.
vsradkevich
11.06.2025 05:47В «Криптономиконе» герои тоже переписывались через открытые каналы связи, но передавали зашифрованные сообщения с помощью GPG. Вообще раньше многие так и делали — хоть на заборе пиши, если у тебя ключ от GPG...
Kassatsier
11.06.2025 05:47Так как в шифре Вернама длина ключа равна длине текста, то нужно сгенерировать достаточно длинную последовательность случайных чисел (чтобы потом от нее отщипывать одноразовые кусочки).
То есть обмен возможен относительно короткими текстами? Если прикладываешь файлы хотя на несколько Мб, то и ключ получится огромный.
konst90
11.06.2025 05:47В наше время хранить огромный (гигабайты) ключ можно на флешке размером с ноготь, так что конкретно это - не то чтобы большая проблема.
mimicria
11.06.2025 05:47А флешку каждому новому корреспонденту голубями отправлять будете? Если масштабировать эти одноразовые блокноты на Х людей, то проблема распространения ключей станет не такой тривиальной, как встретиться и КуАр кодом светануть. Это я ещё не упоминаю про ключи парно-выборочной связи.
ManulVRN
11.06.2025 05:47Есть такой фильм, "Zero dark thirty" (в переводе назвали "Цель номер один"), об охоте на Бин Ладена. Кстати, рекомендую, как я понимаю, работа спецслужб показана относительно реалистично. Так вот, ЦРУ обнаруживает, что человек, которого считают персональным связным Бин Ладена, регулярно бывает в некоем доме в Пакистане. За домом устанавливают наблюдение и идентифицируют всех, кто в нем проживает, кроме одного мужчины. Этот мужчина никогда не выходит на открытое пространство (гуляет только под навесом), весь мусор, который хотя бы потенциально может содержать образцы ДНК, утилизируется на территории усадьбы, на канализацию поставлен специальный фильтр, после которого не остается достаточно клеток эпителия (пардон за подробности), пригодных для выделения ДНК и т.д. После полугода усилий ЦРУ констатирует, что установить личность этого человека невозможно, но! Сам факт экстраординарных мер безопасности указывает на важность этого человека. В итоге организуется рейд SEAL.
К чему это я? А! Если вами интересуются спецслужбы, то сам факт использования невскрываемой криптографии будет подозрительным и может привести к использованию нетехнических (хехе) мер получения информации. Если же вам достаточно защиты от обычных посторонних, то большинство мессенджеров и так вам ее предоставят.
Oieth
11.06.2025 05:47Просто нужно было после фильтрации подмешивать клетки эпителия другого человека)
Wesha
11.06.2025 05:47на канализацию поставлен специальный фильтр, после которого не остается достаточно клеток эпителия
А вот с этого момента поподробнее, пожалуйста. Демон Максвелла, что ли?
QuarkDoe
11.06.2025 05:47Непонятно, чем автора не устроило банальное асимметричное шифрование из того же openssl или там GnuPG, а обменяться открытыми ключами можно было бы так же через QR-код.
И гонять сообщения хоть через ту же банальную почту.
Ну как говорится, если вами заинтересуются люди из соответствующих служб, то никакое шифрование не поможет, если у них будет подход к тушке.
Gutt
11.06.2025 05:47Партнеры встречаются (можно на 5 секунд) – один показывает QRcode на экране, второй – считывает. Все. И далее на обоих устройствах генерируется (идентичная) длинная последовательность.
Надеюсь, содержимое QR-кода и алгоритм генерации псевдослучайного ключа -- это не всё, что нужно для его генерации? Иначе вы фактически уменьшаете ключевое пространство до числа различных QR-кодов данной длины.
randomsimplenumber
11.06.2025 05:47Это всё равно значительно больше, чем длина любого используемого сейчас ключа.
pavel_kudinov
11.06.2025 05:47а не подскажете алгоритм генерации псевдослучайного ключа который у вас на вход такой длинный seed принимает?
а вы в курсе, что все существующие алгоритмы ГСПЧ протекают на определенных порядковых уровнях анализа истинности их энтропии?
https://ru.wikipedia.org/wiki/Тестирование_псевдослучайных_последовательностей
и что никакие алгоритмы ГСПЧ ключи длиннее чем используемые для шифрования в нормальных алгоритмах шифрования уж точно прожевать не смогутunC0Rr
11.06.2025 05:47а не подскажете алгоритм генерации псевдослучайного ключа который у вас на вход такой длинный seed принимает?
Генератор фибоначчи с запаздыванием может принимать сид любой длины, если подстраивать параметры генератора под эту длину.
pavel_kudinov
11.06.2025 05:47imho метод Фибоначчи с запаздыванием не является криптографически стойким ГСЧ, он применим для статистических исследований, но не для криптографии
https://ru.wikipedia.org/wiki/Метод_Фибоначчи_с_запаздываниями
https://ru.wikipedia.org/wiki/Криптографически_стойкий_генератор_псевдослучайных_чисел
pavel_kudinov
11.06.2025 05:47а да, и чтобы он хорошо работал вам нужно подобрать магические числа под вашу длину ключа, что не тривиально для не эксперта в теории чисел
unC0Rr
11.06.2025 05:47На самом деле достаточно всего нескольких наборов таких чисел. Например, ключ длиной 70 тысяч символов, а у тебя есть хорошие числа на запаздывание в миллион. Создаёшь буфер на миллион, заполняешь нулями, в конце сид, или просто циклично сидом. Вырабатываешь несколько миллионов чисел для перетряски, и вуаля, можно пользоваться.
pavel_kudinov
11.06.2025 05:47а мужики то не знают. sarcasm
думаю вы слишком поверхностно к криптографической стойкости относитесь. дело не в длине ключа а в том как сделать, чтобы псевдослучайные последовательности были апериодическими
именно поэтому у реальных алгоритмов шифрования ограничена длина ключа. потому что дальнейшее увеличение длины ключа не ведёт к увеличению криптографической стойкости, апериодичность начинает протекать
Zolg
11.06.2025 05:47Во-первых стоит избегать излишних обобщений типа "любого используемого".
Во-вторых сравнивать длины ключей нормальных алгоритмов, разработанных с учётом противодействия различным методам криптоанализа (и в последствии подвергнутым анализу большим количеством исследователей, не все из которых обязаны и желают хранить секретность) с длиной ключа наколенного хрен-пойми-чего с хрен-пойми-каким использованием этого ключевого материала, рождённым автором с минимальными познаниями в криптографии, (но очень большим апломбом) конечно можно. Но особого практического смысла не имеет.
randomsimplenumber
11.06.2025 05:47Уговорили ;) Берите из qr кода 256 бит, остальное можно пустить на рисунок в коде ;)
Gutt
11.06.2025 05:47Это всё равно значительно больше, чем длина любого используемого сейчас ключа.
А QR-код истинно случайный, получен чтением какого-то шума?
avost
11.06.2025 05:47Если это был стёб, то браво - было смешно читать и горько, что столько народа на него повелось.
Если не стёб, то по-прежнему смешно, но горько теперь дважды..
Mox
11.06.2025 05:47Мне кажется надо дальше общаться с клиентами, чтобы это продавать.
Как минимум - откуда доверие что какая-то контора говорит что это безопасно? Мне кажется тут помогли бы исходники на github. И то - нужна какая-то система верификации что приложение собрано из этих исходников.
d7s2di
11.06.2025 05:47Много лет использую связку mutt+gnupg, а какой там e-mail провайдер - дело десятое, хоть тот же б-го мерзкий мейлру. Gnupg/pgp поддерживают практически все вменяемые почтовоые клиенты, на том же ведре прекрасно работает К9.
Проблема в том, что большинство людей пока жареный петух в зад не клюнет, не задумаются. А действия, сложнее ввода номера телефона считаются лютым красноглазием.
Clock_Source
11.06.2025 05:47Лет десять моя почта автоматически подписывается gpg, и за это время отправлено 0 шифрованных писем. Большинству людей это не нужно. Основной риск для большинства - то что респондент опубликует переписку или процитирует немногим конкретным людям. И как вы догадываетесь - алгоритм шифрования тут сбоку.
rickets
11.06.2025 05:47наивно было полагать, что такое хоть кому-то понадобится, ладно бы у автора были связи в правительстве, то можно было бы подумать и продвигать свой стартап именно в госструктурах, а так автор чисто деньги потратил
FreeNickname
11.06.2025 05:47Уважаемый автор, если Вы серьёзно, то я Вам очень рекомендую хотя бы Стэнфордский курс Cryptography I для начала на coursera прослушать. Боюсь, пока что Ваша статья выглядит как антиреклама Ваших консультационных услуг.
RulenBagdasis
11.06.2025 05:47И я почему‑то уверен, что мало кто из читателей этого текста знает что такое алгоритм Вернама. (По крайней мере, я не знал).
Большинство читателей знают про одноразовый блокнот, чем, по сути, оно и является.
MaFrance351
11.06.2025 05:47Да и среди читателей хаба "Криптография" наоборот, уверен, единицы не знают, что это такое и как оно работает...
Vasjen
11.06.2025 05:47До последнего думал, что это какой-то прикол, такая комедизиация очевидного под видом истории. Но, судя по комментария и профилю, автор на полностью серьезных щах все это и делал, 4 года поддерживал приложение в маркете и серьезно рекламирует свои услуги. Сильно!
Я думаю в любом учебнике по криптографии должно быть расписано, почему же этот шифр Вернама не используется нигде, несмотря на его криптографическую стойкость. Сейчас про это знает любая нейронка и может более подробно рассказать.
DarkMike
11.06.2025 05:47Ну может и используется. В случае гос. тайны можно и с шифр блокнотами морочиться наверное. Но естественно в бизнесе/быту это не реально. Вообще изобретение своего надежного алгоритма не проф. криптографом конечно теоретически возможно. Примерно так же как встретить динозавра. Но скорее окажется, что профессионалы это вскроют легко, т.к. существенные моменты учтены не были. Потому, как про них не знали
Kahelman
11.06.2025 05:47«Поэтому, вторая задача — сделать из псевдослучайной последовательности истинно случайную (или максимально приблизиться к этому).
Эту задачу я тоже решил.»Вы батенька на Нобелевку замахнулись, напишите другу нашему Кнуту, а то он лох три Рома написал а нормальный алгоритм генерации случайных чисел не придумал. Вот лошара …
sic
11.06.2025 05:47Ваша ошибка в том, что перед попыткой продать идею, ну точнее даже уже решение на базе идеи, не утрудились исследовать потенциальную ЦА. А её просто нет. Мессенжер где можно общаться только с лично знакомыми не нужен в принципе почти никому. Если перед людьми ставится задача обеспечения секретности переписки, то обычно им уже и выдают сертифицированные инструменты, это обеспечивающие. Причём шаг вправо шаг влево - расстрел. Если это какие-то доморощенные шифропанки, то и для них уже есть десятки готовых открытых и довольно массовых решений, и доверять анонимусу они не будут.
Ну а через дропбокс что-то свое делать это уже верный и отчетливый шаг к провалу. У дропбокса немало историй связанных с проблемами безопасности, а для средне искушеннного пользователя это автоматически означает, что все из них присутствуют и в вашем продукте. Поднять свой сервер, все таки на день два задача.
Мне кажется, даже, что история немного выдуманная, я бы на подобную идею никогда бы больше недели не потратил, а Вы аж американскую фирму под это регистрировали и чего-то ждали.
DarkMike
11.06.2025 05:47Вообще сейчас существуют мессенджеры с открытым исходным кодом, криптостойкими алгоритмами e2e шифрования и как собственными серверами, так и существующими сторонними. Пример matrix/element. Бери и пользуйся. Да, возможно спец. службы смогут прочитать это (а может и нет, фактов прочтения нету). Но только они. А в случае их интереса мессенджер не спасет. Так что изобретение, по передаче файлов через дропбокс в принципе взлететь не могло :)
Wandy
11.06.2025 05:47Я как-то сделал свой мессенджер на Вернаме. Но блокнот передавался по nfc. Про проблему передачи шифроблокнотов хорошо написано у Масленникова в «Криптографии и свободе».
supercat1337
11.06.2025 05:47А можно вкратце основной вывод? Там что-то ещё есть кроме проблемы предварительного обмена ключами, огромного размера ключей, невозможности повторного использования и отсутствия аутентификации?
ogun
11.06.2025 05:47Предполагаемую ЦА можно поделить на 2 большие категории: любители и профи. Для первых такая секретность избыточна, подойдёт и любое шифрование на AES с последующей отправкой по любому каналу. Для вторых недостаточна: никак не исследовались атаки по побочным каналам - автор ошибочно считает среду смартфона доверенной. Можно посмотреть, как заморачиваются люди, чтобы сделать хороший крипто кошелек. Потом хорошо бы это отдать другим людям на проверку, что все сделано правильно. В результате можем получить защищённость ниже, чем у имеющихся решений. Тут можно вспомнить недавнюю историю по квантовому распределению ключей с китайского спутника: математически доказанный стойкий алгоритм, но утечка по побочному каналу все усилия множит на ноль.
PerroSalchicha
11.06.2025 05:47Предполагаемую ЦА можно поделить на 2 большие категории: любители и профи
На три. Ещё есть... ну пусть будут "энтузиасты". Это такая достаточно заметная промежуточная группа, которая, с одной стороны, по факту имеет те же самые потребности, что и любители, но с другой стороны, исключительно по причине "я хочу иметь the best" выдвигает достаточно высокие требования как профи, а с третьей стороны, не имеет достаточно квалификации, чтобы осознать, зачем им это надо, а также отличить качественную реализацию от фейковой.
supercat1337
11.06.2025 05:47Я так и не понял почему не придерживаться стандартной схемы: обмен ключами, создание общего ключа. Если rsa не нравится, то постквантовый kyber. Если доверия нет к aes 256 gcm, то взять 512 битную версию. Если есть сомнение в том, что есть какой-то способ по части текста узнать весь текст, то можно маску на текст наложить или кодировать особым способом содержимое перед шифрованием.
konst90
А всё просто. Процентам так девяносто девяти людей подобный месседжер не нужен - слишком сложно, Телеграма/Сигнала/Протонмейла или что там сейчас в тренде достаточно.
А если вы военный или шпион, то ваше ведомство напишет свою реализацию, а не будет доверять чужой. Задача-то элементарная, Вернам всё сделал ещё сто лет назад.
ncix
Иными словами, потенциальный рынок - ~80млн человек?
konst90
Теоретически, сынок, мы миллионеры...
PerroSalchicha
А для оставшегося 1%, которым всё-таки нужен защищённый мессенджер, нужно, чтобы хранилась история сообщений, нужно, чтобы не было головоломки с генерацией пар ключей, и многим ещё и важно, чтобы был некий доверенный разработчик приложения, а не ноунейм, который опубликовал какое-то никому не известное приложение, и предлагает доверить ему свои самые секретные переписки, обещая, что честно-честно они попадут только к нужному получателю.
Это серьёзно сужает тот круг в 80 млн человек до пары десятков ближайших друзей и родственников разработчика.
NutsUnderline
история знает уже такие случаи неоднократно, в них причем фигурировали как то криминал и какой то ФБР. еще и деньги большие платили.
vadimr
Основная проблема-то здесь не в приложении, а в инфраструктуре распространения ключей. Военные и шпионы делают это очень непросто.
Если даже скромные северокорейцы умеют сохранять скриншоты смартфонов, принадлежащих населению, то почему автор считает, что его куаркоды на экране будут секретом от правительства США, ума не приложу.
JBFW
"беззлобие, хрюкостяг, пупсолёт, НЖМТ-1221..."
konst90
Так это не ключ, это сообщение. А ключ (равный длине сообщения) надо передать тайно.
Kwisatz
Не обязательно, можно запомнить на очень долгое время список книг, и алгоритм выбора страницы и строки.
InsaneLesha2
И? Набор книг и алгоритм - ключ.
Беззлобие - всё еще является сообщением.
konst90
А с книгой мы не влетим в частотный анализ? Если злоумышленник знает, что мы используем Вернама с ключом из книги, то он сможет вскрыть ключ?
Wesha
А мы книгу можнем прогнать через какой-нибудь (заранее оговорённый, пусть даже не самый мощный) алгоритм шифрования (скажем, какой-нибудь RSA) — получившийся шифротекст будет не сильно отличаться от случайного шума.
randomsimplenumber
Можно сразу взять г(п)сч.
С шифрованием всё не очевидно. Казалось бы, xor с шумом и будет вам щасьтье. А вот и нет. В букваре есть пример с картинкой в формате BMP, которую вот так зашифровали. Деталей действительно не видно, а контуры четко поосматриваются. Вносите корреляционный анализ ;)
psynix
НЖМТ-1221 это модель ключевого носителя с полки 3
artptr86
Да зачем куаркоды? Правительство сразу файл ключа заберёт.
randomsimplenumber
Почему сразу заберёт? Наоборот, выдаст.