Комментарии 77
Пока это вопрос философский.
вопросы безопасности и приватности
И как в этом вопросе помогает именно блокчейн? Из статьи я не понял, для большинства перечисленных пунктов он не обязателен.
“Я этого не говорил” не прокатит с сообщениями в блокчейне
Возможность «вечного» хранения рассматриваю как угрозу приватности.
- Порядок сообщений, их содержимое, факт написания, источник и получателя, дату и время не исправить
- Доступ к сообщениям с любого устройства в любое время
- Можно не хранить сообщения локально, всегда подгружая из блокчейна
- Криптокошельки и криптосервисы типа анонимного обменника
Блокчейн не творит чудеса. Вероятно, эти задачи можно решить другими способами. Мы рассматривали концепт — альтернативный способ переписки. Получили АДАМАНТ. Кому-то понравилась идея, а кому-то нет. Я считаю, что это первый блин, который комом.
Если квантовые компьютеры не будут тратить время на генерацию x и проверку f(x), весь мир временно сломается.
Мы доказали, что мессенджер на блокчейне может существовать. Ранее была только одна попытка в 2012 году — bitmessage, неудавшаяся из-за большого времени доставки сообщений, нагрузки на процессор и отсутствия мобильных приложений.Bitmessage не использует Blockchain.
Поскольку сообщения таким способом доставляются около 5 секунд — это время появления нового блока сети — мы придумали сокет-подключение клиент-узел и узел-узел. Когда узел получает новую транзакцию, он проверяет ее валидность и передает на другие узлы. Транзакция доступна клиентам-мессенджерам еще до наступления консенсуса и включения в блок. Так мы будем доставлять сообщения мгновенно, как и привычные мессенджеры.
А потестировать ветку с сокетами уже можно: feat-sockets-branch-adamant-im.surge.sh
Количество подтверждений — это сколько блоков прошло после «вашего». Имеет значение при переводах больших сумм, а то, мало ли, сеть «откатится».
И в минимальных требованиях будет ультрабыстрый твердотельник, на много-много терабайт.
А вот владельцам узлов диски пригодятся — все сообщения/транзакции как раз хранят узлы. Но пока это ~10 ГБ. Картинки и файлы хранить в блокчейне не собираемся, есть мысль использовать инфраструктуру специализированных проектов типа FileCoin или Storj.
Удаления сообщений не будет. В этом и смысл использования блокчейна — порядок сообщений, достоверность содержимого, возможность подгрузить их в любой момент с любого устройства.
Адской популярности не предрекаем пока, поэтому узлы сильно не «пухнут». А если такой вопрос встанет, там и подумаем. И еще важный момент: вы видите публичный АДАМАНТ. Но любая организация может поднять «свой АДАМАНТ» и хранить только свои сообщения. — к нам периодически обращаются компании и консультируются по этому поводу.
Как вы проверяете, что собеседник тот, за кого себя выдает? В Briar, например, нужно лично встретиться и сосканировать QR-код.
Briar и Tox — отличные мессенджеры. Сам не пользуюсь, потому что «не прижились».
Встретиться и сосканировать код можно и в АДАМАНТе — мы так и пишем в приветственном сообщении, что это лучший способ обменяться контактами.
Это нужно для поддержания сети — чтобы у держателей узлов-валидаторов был стимул.
И если используется blockchain который вместо транзакций хранит сообщения, файл с блокчейном постоянно растет или предусмотрен tail cut?
На данный момент можно получить 0.1 ADM бесплатно каждому новому аккаунту; купить ADM анонимно на странице покупки токенов, используя DASH, DOGE, BTC, LTC, ETH, LISK; купить ADM на бирже.
Удаления сообщений не будет. В этом и смысл использования блокчейна — порядок сообщений, достоверность содержимого, возможность подгрузить их в любой момент с любого устройства. Адской популярности не предрекаем пока, поэтому узлы сильно не «пухнут». А если такой вопрос встанет, там и подумаем. И еще важный момент: вы видите публичный АДАМАНТ. Но любая организация может поднять «свой АДАМАНТ» и хранить только свои сообщения. — к нам периодически обращаются компании и консультируются по этому поводу. Пока размер блокчейна ~10 ГБ. Картинки и файлы хранить в блокчейне не собираемся, есть мысль использовать инфраструктуру специализированных проектов типа FileCoin или Storj.
Анонимно купить другие криптоволюты тоже нельзя, так что сложно но отследить можно, по крайней мере до счета в платежной системе («анонимный» киви-кошелек). И посмотрел на сайт, там таки есть про анонимность.
>Пока размер блокчейна ~10 ГБ.
блокчейн хранится на всех клиентах или только на «нодах»?
>Адской популярности не предрекаем пока, поэтому узлы сильно не «пухнут». А если такой вопрос встанет, там и подумаем.
Это грустно что «там подумаем», вот разработчики BitCoin тоже думали что пишут Proof-of-Concrt и им никто за пределами лабораторий не будет пользоваться, а в итоге блокчейн до сотен гигабайт вырос и ничего с этим поделать не могут.
Анонимно купить другие криптоволюты тоже нельзя, так что сложно но отследить можно, по крайней мере до счета в платежной системе («анонимный» киви-кошелек). И посмотрел на сайт, там таки есть про анонимность.
«Анонимность» используем для «маркетинга». Мессенджер не анонимный, а псевдонимный. Метаданные какой адрес кому писал — доступны всем. Просто «псевдонимность» не все поймут.
блокчейн хранится на всех клиентах или только на «нодах»
Только на нодах. Клиент может не хранить локально даже свои сообщения, подгружая переписку при входе в аккаунт (по-дефолту так).
Это грустно что «там подумаем», вот разработчики BitCoin тоже думали что пишут Proof-of-Concrt и им никто за пределами лабораторий не будет пользоваться, а в итоге блокчейн до сотен гигабайт вырос и ничего с этим поделать не могут.
Согласен. У нас нет возможности (=денег) сейчас заняться этим вопросом.
DASH, Monero, Zcash, uPlexa и тысячи их.
Люди, которые используют АДАМАНТ нам чаще предъявляют «почему сообщение стоит так дешево, сделайте дороже». Все зависит от целей использования. Если уйдут те, кто использует АДАМАНТ для отправки смайликов, это хорошо — уменьшится нагрузка на сеть.
Видимо, вы не заметили:
github.com/Adamant-im/adamant
ADAMANT is decentralized messaging platform based on Lisk codebase and written in JavaScript.
Хранение сообщений в общей базе это хорошо для возможности вернуть историю и входа с нескольких устройств, но плохо для безопасности из-за увеличения доступа к архиву со 100% узлов.
Постоянное хранение без возможности удалить это удар по безопасности т.к. не позволить стереть опасное перед возможной встречей с мастерами убежать. Не все могут предсказать как их сегодняшнее сообщение скажется на них через 30 лет.
Раз сообщения платные, то нужно их как-то оплачивать соответственно анонимность очень сильно зависит от платежной системы. Кроме того если деньги кончились система бесполезна.
Даже если такое будет возможно, расшифровать «все» не получится, а вот переписку между U123456 и U654321 можно будет. Но это минимальная из бед, которые принесет квантовый компьютер. Все-все-все построено на этой криптографии, и не только «компьютерный мир». Вспомните про закон Яровой и аналоги в других странах — весь трафик хранится, и прочитать в таком случае можно будет не только переписку в блокчейн-мессенджере.
Пока это вопрос философский.
Еще добавлю: я вижу правильный сценарий использования мессенджера в периодической смене адресов, а еще лучше — отдельный адрес для каждого собеседника. У нас есть в проекте сделать в приложениях поддержку мульти-аккаунтов, чтобы удобно было использовать такой сценарий. Я вообще не сильно верю в шифрование в современном мире и даже без кантовых компьютеров. Государства настолько сильны, что расшуфруют все, что им дужно. Да, есть и «цена вопроса». На эту тему как-то писал статью: Secure Messengers Do Not Exist — They’re Impossible medium.com/adamant-im/secure-messengers-do-not-exist-theyre-impossible-7b2680cd3b36
Для получения токенов нужно иметь какую-то другую криптовалюту для обмена. Или приобрести некоторое количество токенов, потом проголосовать за один из форжинг-пулов сети, и он будет регулярно выплачивать вам свою часть добытого.
На данный момент можно получить 0.1 ADM бесплатно каждому новому аккаунту; купить ADM анонимно на странице покупки токенов, используя DASH, DOGE, BTC, LTC, ETH, LISK; купить ADM на бирже. Никаких банковских карт или Яндекс-Денег, которые знают вашу личность.
Проблема вечного архива не в квантовых компьютерах, а в том, что в вашей истории остаётся нечто чего вы хотели бы не хранить на случай если вы не сможете отказать в просьбе показать предыдущие сообщения. Это не обязательно может быть кто-то с паяльником и битой. Вполне возможно иметь секретики и попроще.
В концепции как раз «пишу — значит отвечаю за свои слова» — это для ваших собеседников.
А если кто-то из третьих лиц заставляет вас показать переписку — это не технический вопрос. И дело не в блокчейне. Вы же не думаете, что удаляя сообщения в Телеграме, они действительно удаляются?
Из статьи не понял:
— Механизм заинтересованности нод в участии. За отправку сообщений берутся ADM (о чём тоже стоило бы сказать в статье), но кому они дальше уходят? Кто из узлов сформирует блок? Что, если разные узлы сформировали блок одновременно?
— Откуда клиент при запуске берёт адрес ноды, к которой следует подключиться?
— «Подтверждение доставки сообщений. Не на устройство пользователя, а в сеть» — это как? Транзакция попала в блокчейн? А если клиента угораздило подключиться к злонамеренной ноде, та сказала «всё ок», а на самом деле всё не ок?
— Почему идёт речь про библиотеку NaCl, которая для C/C++, если и клиент, и ноды работают на JS?
— Как будут работать групповые чаты? Там ведь всё должно быть гораздо интереснее, чем просто двумя ключами зашифровать…
Что не понравилось в мессенджере:
— Платность сообщений. Да, очень дёшево (пока текст шлёшь, а не картинки), но надо следить за балансом, как-то его пополнять (а у меня криптовалюты вообще нет), в общем, дополнительный геморрой. Было бы лучше, если бы клиент каким-то образом сам потихонечку «майнил».
— Отсутствие «killer feature» для массового потребителя.
— По мелочи касательно конкретной реализации: windows-клиент представляет собой просто браузерчик, в котором запускается web-клиент. (К тому же, он упорно писал мне «invalid passphrase» на фразу, которую сам же только что сгенерировал; потом я догадался, что так он намекает, что ему доступ в сеть не дали)
Механизм заинтересованности нод в участии. За отправку сообщений берутся ADM (о чём тоже стоило бы сказать в статье), но кому они дальше уходят? Кто из узлов сформирует блок? Что, если разные узлы сформировали блок одновременно?
Это вопросы консенсуса. В блокчейне бывают они разные. У нас вариант Delegated Proof of Stake (dPos) — Fair dPoS. Суть в том, что сеть определяет порядок, кто из делегатов сети формирует следующий блок. А правильность блока определяют не только узлы-делегаты, но и обычные узлы. Если что-то не так с этим блоком, то эстафета переходит к следующему делегату (их 101 активный и остальные запасные). Комиссия за отправку уходит делегатам сети, чтобы мотивировать их поддерживать узлы. Вот где можно посмотреть делегатов: explorer.adamant.im/delegateMonitor
Откуда клиент при запуске берёт адрес ноды, к которой следует подключиться?
В iOS- и Андроид- приложениях есть возможность указать любые ноды, а еще лучше поднять свою: medium.com/adamant-im/how-to-run-your-adamant-node-on-ubuntu-990e391e8fcc. В Web-приложении (+Win, Linux, Mac OS) это сделать в настройках нельзя, из-за CORS. Но можно поднять свой мессенджер на своем домене/IP, и у него уже в настройках указать свою ноду.
«Подтверждение доставки сообщений. Не на устройство пользователя, а в сеть» — это как? Транзакция попала в блокчейн?
Да, транзакция попала в блокчейн. Меня, например, бесит, что никто не знает, доставлено ли СМС или нет… и жмешь «повторить» до посинения. А в нашем примере 2FA 2fa-demo.adamant.im мы точно знаем, что 2FA-код доставлен и его можно извлечь.
А если клиента угораздило подключиться к злонамеренной ноде, та сказала «всё ок», а на самом деле всё не ок?
Блокчейн такого не позволит. Нода говорит «ок», но транзакция не попадет в блок. И отправитель, и получатель об этом знают.
Почему идёт речь про библиотеку NaCl, которая для C/C++, если и клиент, и ноды работают на JS
Есть реализации этой штуки на всех языках программирования.
Как будут работать групповые чаты? Там ведь всё должно быть гораздо интереснее, чем просто двумя ключами зашифровать…
Хороший вопрос. Мы работали над проектом групповых чатов, есть решение. Но до реализации не дошли — нужно много времени (=денег). Возможно изначально сделаем не на уровне блокчейна, а как отдельный сервис. Ваша группа собеседников-участников чата поднимает этот сервис как отдельный адрес U12345. Отправляя в чат с U12345 сообщение, оно транслируется всем участникам. Доступ к сообщениям в групповом чате в таком случае есть у всех участников и у владельца U12345 (это опять же кто-то из участников).
Платность сообщений. Да, очень дёшево (пока текст шлёшь, а не картинки), но надо следить за балансом, как-то его пополнять (а у меня криптовалюты вообще нет), в общем, дополнительный геморрой. Было бы лучше, если бы клиент каким-то образом сам потихонечку «майнил».
Да, без криптовалют получить ADM есть только один сейчас вариант — бесплатные токены. Ну я верю в будущее и распространенность криптовалют.
«Майнил» можно, но не в мессенджере, он-то «легкий» ведь. Узлы могут майнить, если делегатами станут. Но: можно приобрести некоторое количество токенов, потом проголосовать за один из форжинг-пулов сети, и он будет регулярно выплачивать вам свою часть добытого.
Отсутствие «killer feature» для массового потребителя
Не верю в киллер-фичи. Это как вопрос «дорогой, за что ты меня любишь?». Выбор — это всегда совокупность факторов, плюсов и минусов.
По мелочи касательно конкретной реализации: windows-клиент представляет собой просто браузерчик, в котором запускается web-клиент. (К тому же, он упорно писал мне «invalid passphrase» на фразу, которую сам же только что сгенерировал; потом я догадался, что так он намекает, что ему доступ в сеть не дали)
Да, это электрон. У нас нет пока возможности написать отдельное windows-приложение. Но может быть кто-то нам поможет?
Блокчейн такого не позволит. Нода говорит «ок», но транзакция не попадет в блок. И отправитель, и получатель об этом знают.
Можно подробнее? Как клиент понимает, что он подключился к "правильной" ноде, а не к поддельной? Есть какой-то механизм верификации нод?
Еще интересно, как я могу убедится в том, что история сообщений не была изменена? Для этого мне требуется поднять свою ноду?
Еще интересно, как я могу убедится в том, что история сообщений не была изменена? Для этого мне требуется поднять свою ноду?
Блокчейн не позволяет внести изменения в прошлое. Вообще никак. Каждый последующий блок строится на хэше предыдущих. Валидность самого блокчейна можно проверить, установив свою ноду и запустив синхронизацию с нуля — это занимает на данный момент около суток на слабой машине. Каждый блок, каждая транзакция будут проверены.
При отправке сообщения оно отображается в статусе Pending («часы»). Только когда сообщение попадет в блокчейн, статус поменяется на Delivered («галочка»). Если сообщение не попадет в блок в случае «плохой ноды», вместо статуса Delivered будет Error («крестик»). Получатель же видит сообщения только в статусе Delivered и мы у входящих даже галочки не показываем. Сообщение либо есть в блокчейне, либо его нет.
Галочки и крестики — это UI. Меня интересует, что меня защищает от злоумышленника, поднявшего собственную ноду с чуть подправленным кодом, которая перехватывает все мои сообщения (расшифровать я полагаю не может, но даже перехват опасен), а мне сообщает, что все ок.
И перехват ничем не опасен. Более того, все транзакции в блокчейне доступны кому угодно. Ваше сообщение — это транзакция. Если ее получит «плохая нода», и что-то в ней изменит, она не попадет в блокчейн (для этого нужен консенсус многих узлов сети). В худшем случае «плохая нода» не отправит ваше сообщение на другие узлы и оно не будет доставлено. Об этом вас и предупредит UI.
сеть определяет порядок, кто из делегатов сети формирует следующий блокОй, почитал, всё не просто там получается. Т.е. не каждая нода участвует в генерации блокчейна, а только 101 с наибольшим количеством ADM (из изъявивших желание)? Получается, у остальных нодовладельцев финансовой мотивации держать ноду нет?
Есть реализации этой штуки на всех языках программированияВ репозитории ничего сишного не нашёл…
Не верю в киллер-фичиМессенджер — такое ПО, которым не будешь пользоваться в одиночку. И тяжело обосновать постороннему человеку, почему именно в этом мессенджере следует переписываться. Как следствие, мессенджер не выйдет из ниши (утрируя) «нечто для кучки гиков и террористов».
Т.е. не каждая нода участвует в генерации блокчейна, а только 101 с наибольшим количеством ADM (из изъявивших желание)? Получается, у остальных нодовладельцев финансовой мотивации держать ноду нет?
Да, блоки формируют только первые 101 делегатов (но в консенсусе участвуют все ноды). Порядок делегатов в нашем консенсусе Fair dPoS определяется голосованием пользователями с ADM в кошельках. У остальных финансовой мотивации нет, вы правы. Но делегаты могут строить «пулы», распределяя полученные комиссии среди проголосовавших за них пользователей.
В репозитории ничего сишного не нашёл…
Так да, например, Web-мессенджер написан на JS и использует JS-реализацию NaCl:
github.com/Adamant-im/adamant-im/blob/master/src/lib/adamant.js
import nacl from 'tweetnacl/nacl-fast'
Удаления сообщений не будет. В этом и смысл использования блокчейна — порядок сообщений, достоверность содержимого, возможность подгрузить их в любой момент с любого устройства. Адской популярности не предрекаем пока, поэтому узлы сильно не «пухнут». А если такой вопрос встанет, там и подумаем. И еще важный момент: вы видите публичный АДАМАНТ. Но любая организация может поднять «свой АДАМАНТ» и хранить только свои сообщения. — к нам периодически обращаются компании и консультируются по этому поводу. Пока размер блокчейна ~10 ГБ. Картинки и файлы хранить в блокчейне не собираемся, есть мысль использовать инфраструктуру специализированных проектов типа FileCoin или Storj.
Чтобы стать сейчас узлом, создайте виртуалку с 20 GB места. На полгода-год вперед лучше 25 GB. Вот как это сделать: medium.com/adamant-im/how-to-run-your-adamant-node-on-ubuntu-990e391e8fcc
Статистика по узлам: explorer.adamant.im/networkMonitor
Делегаты сети: explorer.adamant.im/delegateMonitor
Ваша нода — или для себя, чтобы на 100% быть уверенным, что ваш IP известен только вашему узлу. Или становитесь делегатом, и получайте комиссии сети.
А ещё если будете добавлять голосовые сообщения и отправку эмодзи, берите, на них, пожалуйста, по десятикратному тарифу.
Эмодзи поддерживаются и не стоят плюсом ничего: medium.com/adamant-im/discover-emotions-adamant-introduces-emoji-5adb7ba438b2. Это ж просто текст.
Да, тоже это не люблю голосовые сообщения. Адски не люблю.
С вечным хранением без удаления это скорее система для организаций, но там нужны групповые чаты… В результате идея интересная, но пока для энтузиастов.
Но селф-киллер-фича — это, безусловно, платные сообщения…
тут вектор атаки может быть направлен вообще на произвольную ноду, работающую под устаревшим ПО, а то и вовсе поднятую специально для этой задачи
Расскажите, пожалуйста, как вы это видите. На ноду не приходит ничего, кроме того, что и так всем доступно — подписанная шифрованная транзакция. Ваше сообщение — это транзакция. Если ее получит «плохая нода», и что-то в ней изменит, она не попадет в блокчейн (для этого нужен консенсус многих узлов сети). В худшем случае «плохая нода» не отправит ваше сообщение на другие узлы и оно не будет доставлено.
однозначно установить факт передачи сообщения конкретному адресату
Однозначно установить факт передачи сообщения от U12345 к U54321?
Мессенджеры на блокчейне уже существуют. Как пример, Crypviser. Есть уже приложения на Android и iOS. Имеется возможность аудио и видео звонков. Чем ваш мессенджер будет отличаться?
А чем конкретно блокчейн помогает в жизни чата? Чем это отличается от шифрованных чатов в том же matrix со своими серверами? Или от шифрования в keybase?
Пока видно только, что вся информация доступна публично и обмен ключами предполагает дополнительный шаг проблем. Нет киллер фичи, кроме платных сообщений (сарказм, так то).
По теме — сколько нод минимум нужно для поднятия своего такого блокчейна внутри организации?
- Порядок сообщений, их содержимое, факт написания, источник и получателя, дату и время не исправить
- Доступ к сообщениям с любого устройства в любое время
- Можно не хранить сообщения локально, всегда подгружая из блокчейна
- Криптокошельки и криптосервисы типа анонимного обменника
Чтобы поднять свой блокчейн, нужно 3 узла. Но желательно больше.
Что касается клиентов-мессенджеров,
в iOS- и Андроид- приложениях есть возможность указать любые узлы, а еще лучше поднять свой. В Web-приложении (+Win, Linux, Mac OS) это сделать в настройках нельзя, из-за политик безопасности. Но можно поднять свой мессенджер на своем домене/IP, и у него уже в настройках указать свой узел.
Как работает децентрализованный мессенджер на блокчейне