Пару недель назад состоялось значимое событие в сфере безопасности — состоялся релиз клиента Antidote для мобильных устройств от Apple.
Как это происходило и какие перспективы — рассмотрим в посте.
Что интересно — автор данного приложения dvor (так, что по сути это еще и качественное импортозамещение)
Tox — протокол для защищенного обмена сообщений который не идет ни на какие компромиссы его плюсы:
1) Шифрование используется всегда и для всего
2) Шифрование End2End (по сравнению с телеграм)
3) Для регистрации не нужно указывать телефонный номер (да и вообще понятие регистрация отсутствует)
4) Сеть Tox полностью распределенная и в ней не никакого центрального сервера
5) Исходный код ядра и клиента открыт
За созданием данного клиента я слежу достаточно давно — это же первый клиент для сети TOX под iOS. А движение в сторону iOS — еще одна платформа на которой доступен Tox.
Функциональность
Реализованы следующие функции:
— Чат
— Аудио вызовы
— Видео вызовы
— Передача файлов
Что пока отсутствует:
— Групповой чат
— Оффлайн сообщения
> App Store
> Github
Клиент для OS X
Если у вас есть желание написать клиент для OS X это можно сделать на swift используя готовую библиотеку, свяжитесь с автором Antidote для этого:
В принципе под macOS нужно написать только UI, вся бизнес-логика в кросс?-платформенной библиотеке.
Если есть желающие покодить на Swift — пишите на d@dvor.me
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (82)
zhovner
24.11.2016 15:13А контакт-лист все так же нужно заново заполнять?
shifttstas
24.11.2016 15:15Если имеется ввиду умеет ли он подсасывать контакты на основе номера телефона — нет. и моё лично имхо это баг, но некоторые разработчики со мной не согласны и считают это фичей и данью безопастности
zhovner
24.11.2016 15:26Нет, я не про синхронизацию по номеру телефона. Допустим я пользуюсь qTox на десктопе. Как мне перенести контакт-лист на телефон?
dvor
24.11.2016 15:56Сейчас можно экспортировать профайл с десктопа и отправить его на телефон. При изменении контакт-листа процедуру повторить.
Поддержку нескольких девайсов пилят-пилят, но никак не допилят. Насколько я понимаю, она запланирована на релиз ядра 0.2.0, который планируется в марте.zhovner
24.11.2016 16:03При изменении контакт-листа процедуру повторить.
Это же боль. Я согласен носить с собой приватный ключ и импортировать его в каждое устройство, но переносить руками контакты это выше моих сил.dvor
24.11.2016 16:07+3Да, боль, как и отсутствие оффлайн сообщений и пуш нотификаций для мобильного клиента.
Я с надеждой смотрю в светлое будущее, где все это будет реализовано (ну и стараюсь по мере своих сил его приближать).zhovner
24.11.2016 16:16Спасибо за Вашу работу. Сложно представить как будут работать push-уведомления в такой архитектуре.
shifttstas
24.11.2016 16:22+1Приложение может постоянно сидеть в фоне и при получении сообщения отправлять Push — это энергозатратно но должно работать
zhovner
24.11.2016 16:30Приложение может постоянно сидеть в фоне
Насколько мне известно iOS не позволяет такого из коробки, и со временем все равно засуспендит приложение.
Наверное можно было бы ввести такую сущность как федеративный сервер, в виде запущенного на десктопе клиента, который бы занимался всеми уведомлениями.shifttstas
24.11.2016 16:32есть такая штука как «фоновое обновление» и наскоклько я помню — это фактически демон который будет делать что ему заблагорасудится на фоне и по событию может обновлять контент в пиложении или прислать Push, dvor это так, да?)
dvor
24.11.2016 16:34iOS сама решает, когда и кого запускать. Она может это делать всего несколько раз в день, что не сильно удобно.
shifttstas
24.11.2016 16:39а если использовать пермишены на геолокацию но фактически её не использовать? или есть шанс быть не опубликованным в App Store?
Marwin
24.11.2016 23:41ну там не шанс, а 101% отказа. Проходили…
shifttstas
25.11.2016 00:03и как обошли?
Marwin
25.11.2016 00:10ну таки объяснили через многабукаф, что геолокация в нашей проге используется для таргетирования маркетинга, а еще напрямую влияет на прохождение заданий для получения бонусов. Просто тестерам с виду это было неочевидно. Поэтому, собственно, мы не обходили, но это к вопросу о том, что без доказательств нужности фишка вряд ли прокатит.
shifttstas
25.11.2016 00:22Гм ок, в случае с этим месенджером можно придумать всевдо функцию которой нужны постоянно координаты и попробовать это обосновать?
А если voip флаг ставить оно точно в фоне работать не будет?
dvor
24.11.2016 16:33Один из вариантов, если кратко:
— оффлайн сообщения хранятся в DHT сети
— другой клиент с помощью пуш-нотификации пингует мобильное устройство
— мобильный клиент запускается в фоне, забирает сообщения из хранилища, расшифровывает, показывает и засыпает.
Появляется зависимость от пуш-сервера, но без нее никуда. Сама нотификация не содержит в себе никакой информации, и в идеале сервер не должен знать, кто и кому отправил пуш.
Также мобильное приложение может время от времени запускаться в фоне и получать все оффлайн сообщения.ukt
25.11.2016 00:23Можно сделать шифрованный пакет, и отправить его кому то из активных в листе.
Если и этот кто то будет уходить в оффлайн — по алгоритму выше.
Если этот кто то последний — пакеты схороняются, до выхода в онлайн.
SamoilowAlex
24.11.2016 17:05Приватный ключ зашифрован, подними свое облако(или используй имеющиеся) и синхронизируй ключ между всеми девайсами.
DaylightIsBurning
24.11.2016 18:01Поддержку нескольких девайсов пилят-пилят, но никак не допилят.
Только это меня и останавливает на данный момент от полного перехода на Tox
thousandsofthem
25.11.2016 00:23Поддержку нескольких девайсов пилят-пилят
Вот этого не хватает в опросе. Поддержка нескольких устройств и синхронизация между ними
SamoilowAlex
24.11.2016 15:59+1Очень просто. Переносишь *.tox файл и скармливаешь его клиенту, там будет весь твой ростер. И это не баг — а особенность распределенной сети, привязка к телефону тут не нужна(и в принципе не возможна, разве как ненужный довесок) никаким боком.
shifttstas
24.11.2016 16:02-2Ну и сразу на публику вынесу моё мнение как можно в Tox сделать авто добавление на основе номера телефона — аналогичное другим мессенджерам, но что бы не тратить деньги на рассылку SMS и не рассказывать оператору что мы используем Tox:
Можно привязывать TOX ID к telegram id или айдишникам других мессенжеров которые уже знают номер — получается перекрестная подпись и если мы уверены в источнике данных — мессенджере — мы сможет автоматически добавить пользователей в адресную книгу (конечно по желанию а не всегда и не принудительно)SamoilowAlex
24.11.2016 16:17+5Знаешь, разработчики правы, что не прислушиваются к твоим советам. Мы говорим про распределенном и полностью независимом im, а ты предлагаешь все привязать к телефону или id другого мессенджера, не надо так делать.
shifttstas
24.11.2016 16:24+2Есть альтарнативный вариант — как сделано в twister — blockchain based регистрация, для неё нужно много памяти, но тогда будет единый реестр id=key или name=key и авто добавления номера всё равно не получится.
На мой взгляд — отсутствие авто добавление контактов по телефону — один из тормозов из-за которых не получится приобщить к клиенту домохозяекSamoilowAlex
24.11.2016 16:37отсутствие авто добавление контактов по телефону
Вы просто не понимаете суть tox, любая привязка к чему угодно(будь то email или телефон) мгновенно убьет идею децентрализованного обособленного и анонимного общения.
Ну и как откоментировали ниже, у tox есть более важные проблемы, такие как мультилогин.shifttstas
24.11.2016 16:40Так никто не говорит всех обязать делать привязку, речь о том, что бы дать такую возможность тем кто хочет == обычному обывателю
SamoilowAlex
24.11.2016 16:46+1«Обычному пользователю» tox не нужен, ему вообще наплевать, что за протокол и как он работает. Если ему реально понадобится с кем-то связаться, то он хоть tox осилит, хоть «xmpp over tor with gnupg».
shifttstas
24.11.2016 16:50Не согласен — на волне хайпа насчет шифрования и безопастности Telegram собрал себе значительную аудиторию.
Волны хайпа по мессенджерам происходят очень часто — например в %Название страны% заблокировали %Название мессенджера% а тут СМИ пишут, что Tox невозможно заблокировать — вот и пару миллионов пользователей.SamoilowAlex
24.11.2016 17:00У Дурова есть деньги на pr и форсинг своего поделия. Те-же боты, блин да их в любом открытом im можно сделать, групповые чаты тоже почти везде есть, каналы — это те-же групповые чаты с «оратором» и скрытым списком пользователей — ничего нового он не изобрел, просто хорошо пропиарил свое поделие.
И кстати, что там за e2e никто не знает т.к. сервер закрыт, а в клиенте оно реализовано через блоб. Даже в десктопной версии шифрование не замутили.zhovner
24.11.2016 17:14а в клиенте оно реализовано через блоб
Вы ошибаетесь. Вот описание https://core.telegram.org/api/end-to-end и вот, например, альтернативный клиент реализующий e2e шифрование https://github.com/vysheng/tg
При этом вы насчет закрытой серверной архитектуры, это отстой.SamoilowAlex
24.11.2016 17:25Это просто описание, в коде того-же мобильного клиента все e2e функции вынесены в блоб, что там происходит на самом деле — непонятно, может он втихаря ключи сливает на сервер?
zhovner
24.11.2016 19:19Кстати, dvor, быть может вы предложите свою помощь и подпишите бинарники десктопных клиентов своим сертификатом? А то они все ругаются на отсутствие подписи в макосе.
shifttstas
24.11.2016 19:31Мне кажется, после реализации синхронизации контактов между разными клиентами можно dvor просить выпустить OS X клиент и может быть даже за $ что бы мотивация не пропадала
dvor
24.11.2016 19:36В принципе под macOS нужно написать только UI, вся бизнес-логика в
кросс?-платформенной библиотеке.
Если есть желающие покодить на Swift — пишите на d@dvor.me. :-)
lieff
24.11.2016 17:06Насколько я понимаю, надежность телеграма = надежности SS7, на который атака крайне дешева. И из-за перевыпуска симок с тем же номером надежной эту схему сделать невозможно. У токса есть поддержка красивых имен вроде name@registrant, но его надежность = надежности registrant.
Можете сделать аналогичный сервис соответствия для телефона и ввести поддержку в клиентах, вот только зачем такой ненадежный элемент как SS7 вводить в надежный мессенджер? Не проще ли взять любой другой не надежный?zhovner
24.11.2016 17:15Для защиты от атак на телефон есть опциональный второй фактор, который позволяет добавить пароль к SMS аутентификации.
lieff
24.11.2016 17:21Вы не поняли, двухфакторка телеграм не спасает https://habrahabr.ru/company/pt/blog/283052/
Принципиальный момент — перевыпуск симпок на тот же номер. Это вынужнает делать процедуру пересоздания аккаунта при наличии доступа к номеру.
Вот купил я sim, а на нем уже чужой акк телеграма. И что делать? А вот она спасительная процедура, дающая перерегать акк при одном только доступе к SS7 без всяких паролей.
Телефон принципиально не надежный ID.gbg
24.11.2016 19:30Второй фактор — это текстовый пароль, а не код, рассылаемый по SMS
lieff
25.11.2016 01:29-1Еще раз: двухфакторная авторизация предотвращает несанкционарованный доступ к аккаунту, но не предотвращает то о чем пишу я. В телеграме есть процедура пересоздания акаунта без паролей и убрать ее нельзя, иначе если я приобрел сим на которой уже есть чужой акк, я не смогу зарагистрировать свой. То что операторы перевыпйскают симы на тот же номер (переиспользуют просроченный) все портит, это принципиальный момент.
varnav
25.11.2016 11:57на волне хайпа насчет шифрования и безопастности Telegram собрал себе значительную аудиторию.
при этом не имея E2E шифрования по умолчанию
wrewolf
24.11.2016 17:01ну в общем это сейчас реализуемо через привязку к ДНС, придумать как опционально можно помимо ключа вписывать телефон наверное.
SBKarr
24.11.2016 22:20Помоему, самое нужное — не привязка контакта к телефону, а возможность отправить приглашение на регистрацию, при использовании приглашения контакт сразу добавляется в клиент отправителя. Но это требует централизованного сервера и отправки приглашения по незащищённому каналу…
Вообще нужно бы делать две версии клиента: одну параноидальную, а вторую для массового пользователя с каким-то объёмом допущений и компромиссов. К сожалению, сообщество разработчиков tox и аналогичных проектов не желает обсуждать компромиссы в большинстве своём.shifttstas
25.11.2016 00:05Кстати да, было бы хорошо если Antidote умел бы генерировать и обрабатывать tox:// ссылки dvor
wrewolf
24.11.2016 16:30+1Оно до сих пор не умеет 2+ клиента в онлайне одновременно держать?
DaylightIsBurning
24.11.2016 18:13+1Мне кажется, если бы они эту фишку допилили — проблема с отсутсвием оффлайн сообщений в значительной мере снизилась бы. Отправляемые сообщения автоматом синхронизировались бы между клиентами на разных девайсах и шансы «пересечения» онлайнов отправителя и получателя выросли бы.
wrewolf
24.11.2016 18:46+2Ну гики так вообще бы подняли себе 24х7 ноды и не парились, благо за клиентом дело бы не встало.
shifttstas
24.11.2016 16:45Добавил (поздновато) опрос — будет интересно посмотреть на результаты
xforce
24.11.2016 16:55+2В нем явно нехватает пунктов для тех, кто уже активно пользуется. Ну и мне мультилогина в нем нехватает. Что в опросе, что в TOX.
wrewolf
24.11.2016 17:001 часть опроса надо делать не радио, а чекбоксами, не хватает всего, кроме привязки к телефону
SamoilowAlex
24.11.2016 17:12Групповые чаты в tox есть(по крайней мене на десктопных клиентах), но у них есть свой недостаток — при выходе из чата пользователя выкидывает и надо что-бы один из участников снова его приглашал.
dvor
24.11.2016 17:29+1worldmind
24.11.2016 19:59Это то чего мне реально не хватает из заявленной функциональности, правда с клиентами проблема, последний раз когда тестил парочку, всё было печально, сейчас точно помню что видеозвонок в qtox не удавалось сделать — тормозилось, судя по всему из-за того что он слал видео в каком-то бешенном разрешении, а сменить не давал — не сохранял сделанные настройки, я в каком-то тикете отписывался, но новостей с тех пор не видел.
И вроде что-то ещё не работало, причём то, что работало в предыдущих тестах.
ildarz
24.11.2016 17:29Да, не хочу зависеть от ценрального сервера/закрытого исходного кода
Нет, меня не волнуют проблемы безопастности мессенджеров
:/. «Вы уже перестали пить коньяк по утрам?» (с)
worldmind
24.11.2016 20:08Смотрю тут многие про безопасность пишут, к сожалению большей части человеков это пофигу, они скорее магнитолу выберут чем подушку безопасности.
Есть другой момент — независимость от центральных узлов и поставщика, вспоминаю как ICQ воевала с альтернативными клиентами ломая протокол, вспоминаю периодические глюки скайпа и понимаю, что лучше бы не было необходимости к каких-то коммерческих компаниях, каких-то узлах авторизации и т.п
Плюс открытость и свобода, например скайп совсем не эталон — и тормозной и юзабилити бывает хромает, но сделать ничего нельзя.
Ну и политика у корпораций мутная, помню мне понадобилось поставить скайп на относительно старую убунту, так оказалось что пакета в сети нигде не сохранилось, а сами скайповцы на форуме у себя написали, что никому старых пакетов не дадут.
Vindicar
24.11.2016 21:50Поправьте голосование на многовариантное — меня, например, огорчает как отсутствие оффлайн сообщений (или хотя бы внятного мультилогина а-ля Jabber для постоянно висящего онлайн клиента), так и групчатов.
А так, жду когда допилят плагин под Миранду…shifttstas
25.11.2016 00:06-1так тут надо преоритет расставить что реализовывать/в какую сторону пинать разработчиков ядра
Lofer
25.11.2016 00:06Как только появится система, которая «просто безопастно работает» — бизнес будет ее использовать.
Работники «бизнеса» будут вынуждены ее использовать в работе. Дальше подтянется и переписка типа «купи молоко домой», Как только выяснится, что любовнице удобно пересылать «части тела» другу, то она с другом поставит сепбе такую софтинку. так постепенно и войдет в нормальную жизнь :) примерно как со скайпом было в самом начале. А что безопастность будет «бонусом» и частним лицам… они не будут задумываться об этом :)
Что касается наркоторговцев и прочих террористов — им вполне по силам нанять какую фирму, что в «слепую» им допишет грамотно софт. Используют же iPad для минометов — тоже самое.varnav
25.11.2016 12:09Есть древнейшая система безопасных чатов — это Jabber + PGP
Lofer
25.11.2016 12:40ключевое слово «просто»:
- Просто скачать.
- просто запустить и зарегистрировать себя.
- просто найти и внести в список «друга-подругу»
- просто позвонить голосом
- просто поделиться «экраном»
- просто переслать файл с «очень прикольным-секртным»
Halt
25.11.2016 07:34+1В опросе не хватает пункта «качество кода ядра не соответствует моим представлениям о безопасности».
Sjam
25.11.2016 12:40Как вариант можно использовать ботов для хранения истории переписки, и возможно, синхронизации контактов.
Разработка поддержки так называемых multidevices ведется, которые как раз и должны были бы решить вопрос с переносом профилей между устройствами и их синхронизацией.
К сожалению, процесс крайне длительный.
Также есть чат-боты где собираются разработчики и не только. К примеру такой бот
ToxID: 12EDB939AA529641CE53830B518D6EB30241868EE0E5023C46A372363CAEC91C2C948AEFE4EB или kalina@toxme.io
shifttstas
25.11.2016 13:00Боты для этого — плохая идея, вполне можно синхронизировать данные своих контактов через них самих — что бы они хранили копию и выдавали её по требованию (DHT+шифрование) получится вполне надёжно
Sjam
25.11.2016 15:09Здесь есть проблема в протоколе токса. В сети не может работать более одного профиля одновременно. Более того, сама DHT не предполагает хранение какой-либо дополнительной информации, т.е. файлов или данных кроме хешей. Это значит что запрашивая у DHT данные профиля, сам профиль где-то должен «лежать» и быть доступным.
shifttstas
25.11.2016 15:31Это проблема решена в Bitmessage и Twister оба работают на модифицированных DHT/Blockchain
По сути, временное хранение это либо DHT сеть для друзей либо Blockchain с временем жизни
Lofer
25.11.2016 15:20Все логично.
Нет контакта — нет утечки информации на «третью сторону».
Проще сделать «отложенную доставку». Если нету «контакта» сейчас, поместить в очередь отправки.
Появился контакт в течении часа… двух — отправить без подтверждения.
Если больше — попросить подтверждение вроде «актуальна информаци? повторить отправку ?»
QuickJoey
не исправляйте.
shifttstas
^___^
Поправил…