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

Создан сверхзащищённый мессенджер без названия. Исходный код уже на GitHub

Время на прочтение2 мин
Количество просмотров47K
Всего голосов 62: ↑28 и ↓34+7
Комментарии88

Комментарии 88

Тип ПК и операционной системы, на которых они должны работать, к настоящему моменту неизвестны.

Можно было бы хоть readme глянуть:

Supported Operating Systems
Source/Destination Computer
Debian 10
PureOS 9.0
*buntu 19.10
Networked Computer
Tails 4.0
Debian 10
PureOS 9.0
*buntu 19.10

Так и про «без названия» лукавство, написано же — Tinfoil Chat.

Интересно, имелся ли в виду намек на «шапочку из фольги» в названии.

Какой же это намёк, это вполне себе популярная ироничная идиома. И сама суть программы и железа отражает её — запредельная паранойя для защиты никому, в общем-то, не нужных секретов.

В таком случае его можно было бы назвать Uncatchable Joe's chat.
Спасибо за поправку, апдейтнем текст.
НЛО прилетело и опубликовало эту надпись здесь
Защищённый мессенджер имеет смысл только в защищённой операционной системе.
НЛО прилетело и опубликовало эту надпись здесь
кубунта сильно защищена?
Возможность запретить доступ приложению к чужой памяти есть из коробки (seccomp + IPC namespace и pivot_root в mount namespace). В Windows аналога нет AFAIK.
НЛО прилетело и опубликовало эту надпись здесь
Доступ к оперативной памяти даёт ядро, с помощью seccomp можно блочить конкретные системные вызовы, в том числе и для приложений с uid 0 (а ещё есть eBPF ...). IPC namespace режет возможность общаться с процессами вне изоляции. pivot_root в отличии от chroot делает невозможным пробраться в файловое дерево хоста c мякоткой в виде /dev, /proc и /run.
НЛО прилетело и опубликовало эту надпись здесь
Я вставляю в firewire/expresscard/thunderbolt(или любой другой, на который хоть одна линия PCIe выведена) разъём модную примочку, и все ваши защиты идут лесом, мне даже операционная система не нужна, железка через DMA высосет всю вашу память.
Безопасен компьютер только тогда когда он: отключен от всего, залит в куб бетона и закинут в Марианскую впадину… ну и то это не абсолютная безопасность…
Оно конечно так, но ситуация с DMA атакой реальна. Атака через firewire так вообще довольно дремучих лет, когда оная варь ещё не на каждой матери встречалась(и уж тем более до тех лет, когда firewire исчезать стала).
Для DMA атаки нужен физический доступ к компу.

Если есть физический доступ — то «уже поздно пить боржоми».
Не совсем.
Если бы не было таких уязвимостей, то можно было бы правдоподобно отрицать наличие противозаконной деятельности (ввести пароль, который открыл бы например садомазо-переписку, вместо переписке о… о том, из-за чего к Вам пришли).
Но разумеется лишь в том случае, если Вы верите в исключительно законные методы дознания и в то, что Ваших гостей интересует именно содержание переписки, а не сам факт ее наличия. Если дело дойдет до терморектального криптоанализа, то и Вам уже будет без разницы (материал подвергнутый ТК не пригоден к восстановлению и должен быть утилизирован, для предотвращения токсичного воздействия на специалистов ТК), и правильный пароль с высокой вероятностью добыть удастся.
Ну я примерно все тоже, только покороче попытался сформулировать :)

IOMMU эффективно множит DMA атаки на ноль

А это если оно включено и правильно сконфигурировано.

Толсто, публикация, как и все остальные в духе лентысру

Мальчик, а зачем тебе сразу три компьютера и что это за странная коробочка такая?
Эх… Во времена моего детства три компьютера позволяли не искать пати в lineage 2.
НЛО прилетело и опубликовало эту надпись здесь
Чувство, когда в твое детстве не было lineage…

Самое главное: где взять сплиттер аппаратный?

Незачем.
С алика заказать и не спалиться при доставке.
НЛО прилетело и опубликовало эту надпись здесь

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

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

если недозагружен, то нагрузят по полной.

Спасибо, более информативно.
Я только одного не понял:
Интерфейс приложения предельно прост и включает окно, разбитое на три области — отправка, получение и командная строка с логом взаимодействия со шлюзом.
Где запущено это приложение?

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

сверхнеуловимый Джо
Уважающие себя носители шапочек из фольги не используют электронные устройства для связи. Более того, они вообще избегают какой-либо связи, если таковая возможна на расстоянии большем чем пара метров и вне прямой видимости.
Палитесь, уважаемый носитель (:
Эти «смайлики наоборот» ещё большее палево =)
чойта? )
Если у Вас предустановленное российское ПО «для улучшения жизни пользователей», то без разницы каким сверхзащищенным мессенджером Вы пользуетесь. Предустановленное ПО само будет посылать буковки с клавиатуры куда надо.
Если у Вас предустановленное российское ПО «для улучшения жизни пользователей», то без разницы каким сверхзащищенным мессенджером Вы пользуетесь. Предустановленное ПО само будет посылать буковки с клавиатуры куда надо.

И пруфы есть?
Рабинович по телефону мамой клянётся, правда, не своей, но… /irony
Два из трех компов не имеют прямого доступа в сеть. Ну максимум что-то может слить тот что отправляет сообщения, но что он сольет? Открытые ключи того кому они предназначаются.

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

Если будет скомпроментировано то устройство которое выводит данные на экран то может использоваться социальная инженерия для того чтобы пользователь сам ввёл данные которые взломают третье.

Как давно и почему?
Достаточно давно. Достаточно иметь первый прокси под контролем.
Неа. Уже на следующем хопе всё маскируется. Первый прокси, кстати — это entry guard, который расположен на вашей машине.
НЛО прилетело и опубликовало эту надпись здесь

В той статье ссылка на блог tor project в котором они предпологают что вычислили следящие узлы и пофиксили баги которые использовались для слежки.

Вы сами читаете что написали, горе-копирайтеры? Помимо упомянутых
мессенджер без названия
(Он называется TFC)
Тип ПК и операционной системы, на которых они должны работать, к настоящему моменту неизвестны.
(Список вам привели)
вы еще даете ссылку на tinfoil.io — портал для Nintendo Switch геймеров.

Когда-то на форуме одной защищённой ос прочитал комментарий, что пора бы уже использовать десяток raspberry pi в связке вместо ноутбука, чтобы перестать беспокоиться о дырах в системах виртуализации. Причём десяток RPi оказался дешевле, чем ноут удовлетворяющий минимальным системным требованиям той ос. В общем, пора ждать стартапа с ноутбуком из 4 малин для этого мессенджера.

Интересно, какая конкретно предлагалась архитектура для десятка этих малин — некий отказоустойчивый кластер с распределением нагрузки или скорее распределение функций?

10 малинок, все с разными ос и софтом от разных производителей, у которых только общий и довольно простой протокол.

Понятно — а дальше что? Все 10 делают одно и то же, и результаты сверяются, вроде набортных вычислительных систем на самолетах? Или все же они выполняют каждая свою функцию?
Да, непросто. Нужно как-то проектировать схему, чтобы она работала безопасно при N недоверенных устройств. Консилиум или кворум слабо прменимы при разной генерации ключей, т.к. там используются ГСЧ, которые точно не совпадут.
Это я про Qubes OS писал. Они разделяют ОС на виртуалки, грубо говоря по виртуалке на каждый сценарий использования + пучок виртуалок для всяких технических штук. Драйвер проприетарный? Выделить ему виртуалку. Нужно примонтировать флешку? Отдельную виртуалку для usb-портов. Отдельная виртуалка для хранения ключей, отдельная виртуалка для подписи сообщений, отдельная виртуалка для загрузки электронной почты, и отдельная виртуалка для чтения PDF файлов, которая самоуничтожается сразу после закрытия файла. Отдельная виртуалка для драйвера сетевой карты, и отдельная виртуалка для фаерволла. Надо отдать должное авторам, они сумели построить эту систему так, что в итоге всем этим можно пользоваться почти не испытывая дискомфорта. Авторы настолько эксперты в безопасности, что знают про 1001 способ взломать всю эту виртуализацию, если в железе что-то не так. А в современных ноутах, где-то чипсет небезопасно разделяет сигналы, где-то процессор не обладает всем набором инструкций, где-то ещё что-то, и получилось так, что ноутбуки, на 100% поддерживающие их ОС в основном стоили от 180 000 р. (кажется это было в 2016). И после очередных найденных уязвимостей железа возник шуточный вопрос, а не дешевле ли всё это сделать на физически разделённых машинах, а не виртуально разделённых машинах?

Немного напоминает подход 20 летней давности "NetTop" — https://www.zdnet.com/article/nsa-attempting-to-design-crack-proof-computer-5000114035/; https://www.vmware.com/pdf/TechTrendNotes.pdf — переместить "air gap" из реального мира в разделение между несколькими виртуалками.


NetTop will run on top of a more secure distribution of Linux that the NSA has developed and an initial version of which it released in December 2000.

2008 год — https://www.nsa.gov/Portals/70/documents/resources/everyone/digital-media-center/publications/the-next-wave/TNW-17-3.pdf#page=10 (стр 10-20)


Providing multiple virtual machines for a user gave us an opportunity to create multiple single security level environments running simultaneously.… First, we treated SELinux as an embedded OS and prohibited the use of any native user applications. VMware was the only application permitted. Our next step in reducing NetTop’s attack surface, was to configure the system to make the SELinux host unreachable from any network connection.… The combination of SELinux’mandatory access controls, VMware’s isolation capabilities, and NetTop’s tightly controlled architecture have proven effective at blocking attacks.
Что-то я не понял про три компьютера, поясните, что бы этот «noname» мессенджер заработал, у меня должно быть в наличии три компьютера, которые должны работать постоянно?
Вообще, при современных системах хранения (1ТБ и выше на MicroSD карте размером с ноготь), можно пойти в сторону одноразовых шифроблокнотов: два физически соединённых устройства совместно генерируют и синхронизируют 1ТБ белого шума, который в дальнейшем используется для обмена сообщениями, фотографиями. Если обмениваться только сообщениями, то такого хватит надолго.
И раньше такое возможно было
Вопрос в физической передаче носителя, это не всегда возможно

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

Можно использовать открытые данные для генерации шифроблокнота.

Тогда секретом будет являться знание источника этих данных, а не сами данные. А это уже уязвимость, т.е. злоумышленник может попробовать проверить все доступные варианты таких данных.

Не только источники но и как они обработаны. Потом задача шифроблокнота вторым слоем скрыть сигнатуры трафика. Чтоб не понятно было ключь к первому слою уже подобран или ещё перебирать надо.


Ну а если ключи скомпроментированы изначально то нужно будет ещё прогнать кучу данных через генератор шифроблокнота с правильными параметрами.

Но не является ли это Security through obscurity? Получается зашифрован сам алгоритм получения ключа, а ключ общедоступен.
А для стеганографии уже использовать надо что-то другое.

При генерации блокнота также должен использоваться одноразовый ключь который уже легче безопасно передать.

Так это будет уже псевдослучайная последовательность, чем это отличается от AES 256? В теории его можно взломать перебором, т.к. размерность ключа много меньше размера зашифрованных сообщений. А если они будут равны, то такой шифр имеет абсолютную стойкость. Могу путать терминологию, но вроде так это формулируется в криптографии.

Допустим для того чтобы получить сегмент который возможно использовался для шифрования нужно прогнать данные через генератор шифроблокнота полностью.


А соответственно для перебора ключа это надо будет сделать для каждого варианта ключа.

НЛО прилетело и опубликовало эту надпись здесь
от этого можно тоже защититься, достаточно выделить какое-то кол-во байт ключа на подпись всего сообщения, вместе с номером индекса
т.е. передавать открытый индекс, сообщение, хэш индекса с солью
Но используя хэши в теории можно столкнуться с коллизиями, тогда защита уже не будет абсолютной, какую даёт шифроблокнот. Он-то точно от перебора защищён, какие-бы компы не были у злоумышленника.

Была такая мысль:

Огромный файл шифроблокнота KEY (размером KEY_SIZE, допустим, 1 ГБ), который тем или иным способом передаётся корреспонденту, пусть даже через открытый канал связи.

В качестве ключа берутся два произвольных числа — S и D, оба меньше KEY_SIZE— которые передаются принимающему любым безопасным способом. Это сделать легко: всего несколько десятков бит.

После чего каждый байт сообщения шифруется/дешифруется как MESSAGE_B[i] = MESSAGE_A[i] XOR (KEY[S + D * i])

Один и тот же файл шифроблокнота можно использовать неоднократно. Ведь каждый раз S и D разные — а это эквивалентно новому шифроблокноту. Значительный размер шифроблокнота исключает возможность нахождения S и D перебором, а использование XOR сильно затрудняет выяснение, какой же из "дешифрованных" файлов "истинный".

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

Я предлагаю изначально зашифровать сам файл шифроблокнота на два слоя потоковым шифром (например RC4). Шифруем файл в прямом направлении и в обратном. Далее можно продолжать его шифровать в прямом и обратном направлении и просто делать XOR с сообщением. Ключ нужен будет только для запуска. В дальнейшем сохраняется состояние шифратора для того чтобы продолжать накладывать новые слои.

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

Представте что известен файл шифроблокнота (он передавался открыто), дешифрованное сообщение и алгоритм шифрования.

Если противнику уже узвестно всё, то что ему ещё нужно-то?

Я думаю на этой основе возможно получить S и D и расшифровать остальные сообщения.

Эмм, часть про "каждый раз S и D разные" от Вас, как мне кажется, ускользнула.

Помните старую хохму про "мне не надо бежать быстрее медведя — мне надо бежать быстрее тебя"? Теоретически, при наличии бесконечного места и бесконечного времени, "взломать" этот "шифр" можно — полным перебором. Но практически ни того, ни другого нет. Задача безопасности в том и заключается, чтобы максимально повысить для противника цену, которую ему придётся заплатить за расшифровку, в идеале — до значения в пол-дофуа.

P.S. А для повышения стойкости имеет смысл предварительно повысить энтропию передаваемого сообщения, зашифровав его любым простейшим шифром, пусть даже с ключом из одних нулей — чтобы в нём не осталось никаких характерных последовательностей, вроде PK в заголовке ZIP-файла.

Интересно для кого оно? Обычному юзеру, коих 99%, оно не нужно. Народ на телеграм не спешит переходить, который кроме шифрования предоставляет тот же, и даже лучше UX чем у вайбера, whatsup. Более того, современная молодежь переписывается в фейсбуке/инстаграмме и даже whatsup знать не знает, а тут предлагают в разы ухудшить UX ради чуть лучше безопасности.
Она может как-то защитить от терморектального криптоанализа?
Если криптоанализатор установлен, то мало что может защитить от начала анализа.
Важен не процесс — важен результат!
Ну, а если серьезно, то как концепт — интересно, но ИМХО совершенно не пригодно для практического применения.
В частности из-за обновлений. И все сводится к тому, что либо нужно подпихнуть зараженное обновление через аналог RFC1149, либо воспользоваться давно известной уязвимостью (они регулярно всплывают), которая не фиксится по причине полной изоляции 2-х ПК от сети.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий