LINUX.ORG.RU
ФорумTalks

Система мгновенных сообщений для параноиков


0

1

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

Суть в том, что система обеспечивает защиту переговоров, но не анонимность (во всяком случае на начальном этапе). Каждый собеседник может теоретически определить IP другого участника разговора (во всяком случае этому не ставится специальных преград), хотя впрочем обычно в ходе самого разговора и так происходит деанонимизация, поэтому это во многих ситуациях не является критическим недостатком. С другой стороны никто из-вне (хакер Вася, провайдер, гугл, спецслужбы) не должен иметь возможности прочесть переписку.

Итак, пока есть такие идеи:

1) Каждый пользователь лично генерирует свой ключ ассиметричного шифрования. Секретный ключ хранит у себя на компьютере и никому не даёт. Открытый ключ даёт каждому с кем хочет пообщаться. Это и есть его username, хотя при желании можно сделать базу соответствия человекопонятных логиков и публичных ключей для удобства поиска. Чтобы послать человеку сообщение необходимо зашифровать его сначала своим секретным ключом (которому соответсвует наш открытый), а потом публичным ключём собеседника и послать любым доступным способом. Собеседник расшифровывает сообщение сначала нашим публичным ключом, потом своим секретным ключом. Таким образом с одной стороны сообщение не сможет прочитать никто кроме получателя, с другой стороны можно быть уверенным, что его послал именно отправитель. Обычно обмен публичными ключами происходит через открытый сервис, но при желании их всегда можно сверить через более безопасный канал (если вам действительно есть что скрывать).

2) Обмен сообщениями должен происходить преимущественно прямыми соединениями между клиентами. В случае если оба они за NAT, то использовать супер-ноды (всё равно никто не сможет прочитать сообщение).

3) В перспективе можно добавить конференции, обмен файлами, аудио- и видеозвонки.

Не следует путать эту систему с полноценными анонимными сетями (I2P, Tor) - в отличии от них я не приследую полную анонимность, зато даю минимальные задержки (если бы не NAT, то вообще равные времени пинга от одного контакта к другому). Это позволяет реализовать пункт 3 не дожидаясь включения в сеть 100500 пиров.

Возможно, это звучит бредово, но мне просто нечего делать. Интересно послушать мнения на этот счёт. Есть шанс, что я действительно что-то сделаю.

★★★★★

Ответ на: комментарий от Tark

Если вы про jabber, то поднимать свой личный Jabber-сервер не каждый будет. К тому же, что делать если оба клиента за NAT? А моя идея в том, чтобы просто запустить 1 программу и без лишних настроек и ожидания иметь полный доступ к сети.

KivApple ★★★★★ ()

Запускать по вебсокету на клиента. Вебсокеты общающихся клиентов обмениваются сообщениями при помощи IPC. Сами вебсокеты запускать через https с шифрованием. И никаких велосипедов городить не придется.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от KivApple

К тому же как я понимаю со звонками у Jabber (тем более поднятого на localhost) будет не очень. Я же хочу повторить архитектуру Skype (разумеется, сначала только для текстовых сообщений) с супер-нодами.

KivApple ★★★★★ ()

ТС изобрел джаббер, OTR, I2P messenger. Только перемешал все в кучу.

vurdalak ★★★★★ ()
Ответ на: комментарий от KivApple

Если оба за NAT использовать сторонний сервер. Суперноды же тоже не просто так появятся.
А jabber сервер поднять никаких проблем. его можно вообще внутрь приложения на том же питоне легко встроить.

Tark ★★ ()
Ответ на: комментарий от Tark

супернода появится как только хотя бы один человек с внешним IP начнёт использовать программу.

KivApple ★★★★★ ()

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

KivApple ★★★★★ ()
Ответ на: комментарий от Tark

Да, ещё при использовании Jabber для контакт-листа из 100 пунктов придётся держать 100 открытых TCP-соединений. В случае использования нового протокола можно вообще обойтись без TCP. Посылать сообщения с помощью UDP (разумеется, с переотправкой в случае неподтверждения приёма). Тогда обмен данными и трата ресурсов будет происходить только при необходимости. Кстати, мобильные клиенты будут очень сильно экономить заряд батареи.

KivApple ★★★★★ ()

А зачем шифровать своим приватным ключом? Достаточно же просто подписать. И вообще, кажется, ты изобрел PGP.

Arrest ()
Ответ на: комментарий от KivApple

Насчет супернод. Это конечно замечательно, но в таком случае не обойтись без централизованного сервера, через который можно будет получать адреса супернод. Что мне лично нравится меньше идеи джаббера.
Насчет UDP. Кривое сообщение это понятно, но например порядок сообщений тоже в принципе не безразличен людям. И после каждой отправки сообщения нужно будет ждать подтверждение получения вручную, что дает больше места для багов. Ну и все-равно придется опрашивать регулярно контакты, чтобы видеть кто онлайн.
П.С.
Не понял что плохого в 100 открытых TCP соединений?

Tark ★★ ()
Ответ на: комментарий от KivApple

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

и не надо, есть плагины для клиентов которые обеспечивают шифрование

true_admin ★★★★★ ()

Мне думается, что Тс не понимает сути криптографии с открытым ключом.

phoenix ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.