Русский
Русский
English
Статистика
Реклама

Matrix

Как криптомессенджер Signal успешно противостоит прослушке со стороны властей США

16.06.2020 10:18:24 | Автор: admin


На фоне событий в США резко выросла популярность защищённого мессенджера Signal c 6000 до 26 000 скачиваний в день. В этой программе реализована стойкая криптография и сквозное шифрование, она распространяется с открытым исходным кодом и работает на известных криптографических протоколах (в отличие от проприетарного MProto).

Но теперь разработчики Signal столкнулись с новой угрозой. Правительство США пытается скомпрометировать защиту мессенджера и опять получить доступ к переписке пользователей. В 2016 году им удалось получить судебную повестку на изъятие переписки одного пользователя, но из-за сквозного шифрования там нечего было изымать.

Единственные данные, которые Signal может предоставить по запросу правительственных служб или по судебной повестке только те данные, которые она хранит о пользователе. Это:

  • дата создания аккаунта в Unix-времени;
  • дата последнего использования в Unix-времени.

И это всё. Никаких контактов, информации о группах и данных из профиля.


Досье пользователя, которое Signal предоставил по судебному запросу. Скриншот из судебных документов

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

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


Кадр из лекции Мокси Марлинспайка на конференции по информационной безопасности Chaos Computer Club в декабре 2019 года с демонстрацией учётных данных его личного аккаунта Signal

Поскольку мы создали Signal, чтобы полностью избежать хранения какой-либо конфиденциальной информации, я могу выйти на сцену перед тысячами людей и публично опубликовать все данные своей учётной записи, не раскрыв при этом ничего, кроме того, как давно у меня установлен Signal (с тех пор, как я последний раз поменял телефон) и последней даты, когда я его использовал (это сегодня, кстати), говорит Мокси Марлинспайк (Moxie Marlinspike), известный хакер, криптоанархист и основной разработчик программы.

Главная слабость Signal и подобных мессенджеров привязка к конкретному номеру телефона. Например, если посторонний присоединиться к некоей группе, то увидит телефонные номера всех участников этой группы. Этот приём использовала полиция Гонконга, чтобы установить личности протестующих в WhatsApp, Signal и Telegram-.

С другой стороны, остальные данные аккаунта злоумышленник не получит даже по судебному запросу.

Если вы попросите генерального директора любой другой крупной коммуникационной платформы публично опубликовать свои учётные данные со своей платформы, он этого не сделает, пишет Мокси. Я их не виню это много данных, которыми неудобно делиться с вами, но это поднимает вопрос о том, насколько комфортно делиться теми же данными с ними [властями].

Любая американская компания обязана выполнять правила американского законодательства и предъявлять данные по судебному запросу, будь то WhatsApp или Signal. Но в случае Signal ей просто нечего будет предъявить.

В некоторых странах после утечек из WhatsApp даже военных и политиков переводят на обязательное использование криптомессенджеров Signal и Wickr. Например, такие правила установлены для бойцов 82-й воздушно-десантной дивизии армии США и для коммуникации членов консервативной партии Великобритании. Так что наличие на телефоне Signal не признак подозрительной активности, а скорее признак наличия здравого смысла.

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

Signal это некоммерческая организация 501(с)(3), поэтому программное обеспечение было и останется свободным и бесплатным. Наша миссия заключается в повышении конфиденциальности в интернете, поэтому мы публикуем нашу технологию и делимся знаниями, чтобы побудить другие компании использовать её в своих собственных продуктах и услугах, пишет Мокси Марлинспайк. Сегодня на протоколе Signal работают некоторые другие мессенджеры, хотя и они и не реализовали строгий отказ от сбора персональной информации о пользователях и продолжают хранить на своих серверах контакты, разговоры, фотографии и прочие данные для каждого аккаунта. Например, WhatsApp тоже использует защищённый протокол Signal, однако передаёт в материнскую компанию Facebook социальный граф пользователя. То же самое относится к коммерческим компаниям Telegram FZ LLC и Telegram Messenger Inc. В случае Signal на сервер передаётся только усечённый хеш каждого телефонного номера из списка контактов. Такой хеш нельзя сбрутить напрямую, хотя и о полной секретности речи не идёт.

Конечно, существуют более защищённые и надёжные мессенджеры со сквозным шифрованием, без указания телефонного номера и других идентификаторов. Например, P2P-система прямого обмена шифрованными сообщениями Matrix с клиентским программным обеспечением типа Riot и другими клиентами.


Интерфейс клиента Riot для пиринговой криптосети Matrix

Но пока эти программы не очень дружественны к пользователям. Например, чтобы в десктопном клиенте Riot отменить отправку подтверждений о прочтении, нужно отредактировать файл конфигурации /etc/riot/config.json.

Подробнее..

Почему я использую Matrix вместо Telegram

23.07.2020 02:15:38 | Автор: admin
Привет, меня зовут Михаил Подивилов. Я специализируюсь на сетевых технологиях и преподаю в Сетевой академии Cisco.

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

Рассказываю, почему я использую Matrix вместо Telegram, как присоединиться к сети Matrix и настроить свой сервер.



Почему я использую Matrix вместо Telegram


На Хабре уже писали про Matrix, но я считаю, что этому протоколу нужна большая огласка: чем больше людей о нём узнает и начнёт его использовать тем лучше как для протокола, так и для айти-тусовки.

Matrix это открытый и децентрализованный протокол мгновенного обмена сообщениями, разрабатываемый энтузиастами из Matrix.org Foundation.

Спецификации протокола, равно как и клиент-серверная часть (Synapse как сервер и Element как клиент) находятся в открытом доступе в отличие от Telegram, который в настоящее время в открытом доступе держит только свой клиент, что вызывает немало вопросов по поводу безопасности использования протокола MTProto.

У протокола существует полноценная реализация федерации, которая позволяет бесшовно общаться, организовывать общие комнаты для общения пользователям разных серверов, совершать видео- и аудиозвонки.

Клиент Element обладает всеми современными функциями, которые присущи другим популярным мессенджерам (за исключением голосовых сообщений).

Чтобы не перечислять все преимущества, выделю некоторые из них, которые склонили меня к использованию этого протокола и мессенджера:

  • Децентрализация возможность поднять свой сервер для подключения к сети Matrix
  • Приватность сквозное шифрование
  • Групповые аудио- и видеозвонки для пользователей с разных серверов
  • Отличное API для ботов
  • Полнофункциональный веб-клиент
  • Консольные клиенты

Почему не Jabber?


Потому что протокол XMPP переполнен многочисленными XEP-ами, которые так и не были никогда не реализованы во многих его клиентах. Например, до сих пор не существует ни одного Jabber-клиента c нормальной синхронизацией истории с сервером.

Почему не Signal?


Потому что Signal не поддерживает децентрализацию.

Почему не Telegram?


Потому что исходные коды протокола MTProto, который используется в Telegram, никогда не были опубликованы.

Конечно, Telegram больше любят за его UI/UX но Element на данный момент почти ничем не уступает Telegram: там есть и мосты, и комнаты, и боты, и даже стикеры а вот людей относительно мало. К сожалению, проекту в действительности не хватает хорошего пиара.

Как подключиться к Matrix через чужой сервер


Это очень просто просто используйте веб-клиент Element или его десктопную версию. Регистрация не займёт у вас больше минуты.

Как подключиться к Matrix через свой сервер


Для этого необходимо настроить свой HomeServer на Synapse официальном сервере Matrix. Ниже я привёл инструкции, как это можно сделать.

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

Я буду объяснять на примере дистрибутива Ubuntu Server 20.04.

Шаг 1. Установка сервера Synapse


Подготавливаем нашу рабочую среду к установке сервера Synapse:

sudo apt install -y lsb-release wget apt-transport-httpssudo wget -qO /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpgecho "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" |    sudo tee /etc/apt/sources.list.d/matrix-org.list

Загружаем непосредственно сам Synapse:

sudo apt updatesudo apt install matrix-synapse-py3

В процессе установки пакета будет запрошено название доменного имени, на котором будет располагаться ваш сервер Synapse. Как правило, это домен вида matrix.example.com, где A-запись поддомена matrix указывает непосредственно на ваш сервер с запущенным Synapse.



После установщик спросит вас, хотите ли вы отправлять анонимную статистику разработчикам.



На этом установка сервера Synapse завершена. Теперь необходимо включить Synapse при загрузке операционной системы:

systemctl start matrix-synapsesystemctl enable matrix-synapse

Мы также можем убедиться, как идут дела у сервера и работает ли он в принципе:

systemctl status matrix-synapsess -plnt




Шаг 2. Настройка сервера Synapse


Используйте текстовый редактор (например, nano или vim) и откройте файл /etc/matrix-synapse/homeserver.yaml для редактирования.

Найдите строку listeners: и приведите секцию в следующий вид:

listeners:  - port: 8008    tls: false    type: http    x_forwarded: true    bind_addresses: ['127.0.0.1']    resources:      - names: [client, federation]        compress: false

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

enable_registration: false

Сгенерируйте случайную строку и поместите её в раздел registration_shared_secret:

registration_shared_secret: ""

После сохранения файла с настройками не забудьте перезапустить Synapse:

systemctl restart matrix-synapse


Шаг 3. Настройка Let's Encrypt


Сертификат необходим в том случае, если ваш сервер не находится за Cloudflare или другим подобным сервисом.

Для начала необходимо установить certbot программу для выпуска сертификатов:

sudo apt install certbot -y


И выпустить сертификат для вашего доменного имени:
certbot certonly --rsa-key-size 2048 --standalone --agree-tos --no-eff-email --email example@example.com -d matrix.example.com


Готово. Ваш сертификат теперь находится по адресу /etc/letsencrypt/live/matrix.example.com/.

Шаг 4. Настройка Nginx в качестве Reverse Proxy



В этой конфигурации мы будем использовать 80 порт для незащищённого соединения, 443 для защищённого и 8448 для подключения к федерации Matrix.

server {    listen 80;    server_name example.com;    return 301 https://$host$request_uri;}server {    listen 443 ssl;    server_name example.com;    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;    location /_matrix {        proxy_pass http://localhost:8008;        proxy_set_header X-Forwarded-For $remote_addr;        # Nginx by default only allows file uploads up to 1M in size        # Increase client_max_body_size to match max_upload_size defined in homeserver.yaml        client_max_body_size 10M;    }}server {    listen 8448 ssl;    server_name example.com;    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;    location / {        proxy_pass http://localhost:8008;        proxy_set_header X-Forwarded-For $remote_addr;    }}


Не забудьте перезагрузить Nginx после внесения изменений в конфигурацию:

systemctl restart nginx


Шаг 5. Регистрация нового пользователя


Теперь зарегистрируйте нового пользователя, под которым вы будете заходить на сервер:

sudo register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008New user localpart [root]: usernamePassword: Confirm password: Make admin [no]: yesSending registration request...Success!

Готово.

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

Давайте поговорим


Вместе с моим коллегой по цеху мы организовали чат для пользователей Хабра, чтобы вы могли проверить протокол Matrix в действии.

Подключайтесь!

Подробнее..

Перевод Свой мессенджер Matrix-synapse в связке с Jitsi-meet. Часть 3

02.04.2021 16:10:53 | Автор: admin

Всем Приветь. Как вы уже обратили внимание, порядок публикации нарушен. Изначально планировалось выпустить эту статью в качестве третьей части цикла, однако она стала второй. Это объясняется тем, что поднять один новый сервер для Matrix дешевле, чем несколько для высоконагруженного сервиса Jitsi-meet. Без паники, все будет. А пока займемся Matrix.

Сразу хочу отметить тот факт, что данный мануал не является полностью моим. Это перевод оригинального мануала разработчиков с моими дополнениями и адаптацией. И вошел он в данную серию статей, ибо связан с jitsi-meet (ну или их можно связать вместе).

Прежде чем мы погрузимся в команды, конфигурацию и "танцы" поговорим немного на тему "а зачем и кому это надо"....

А зачем и кому это надо...

Причин может быть много: от личной паранойи до требований безопасности в компании. Matrix-synapse - это мессенджер, который вы можете не только скачать или открыть в браузере, пройти регистрацию и общаться, но и поднять собственный сервер, установить на него серверную часть matrix, а потом общаться в нем с полной уверенностью, что ваша переписка не только шифруется, но и хранится не у кого-то, а у вас на сервере. Если уж совсем паранойить, то все это можно запихуть в VPN и доступ к серверу будет только у тех, у кого есть подключение к VPN (тут мы такое рассматривать не будем, а настроим только matrix в связке с jitsi).

В прошлой статье мы уже настроили два сервера: jitsi-meet - для видеоконференций и jibri - для записи и/или трансляции этих видеоконференций. Сейчас мы будем расширять наши возможности. Мы поднимем сервер со своим мессенджером и привяжем его к нашему jitsi, дабы совершать видеовызовы через него.

Сервера поднималтут.

Команды, конфигурация и "танцы".

Я все делаю на debian 9, если это противоречит вашим религиозным взглядам, то использованные тут команды подстраивайте под свою ОС. Если вы хотите, то можете поднимать Matrix на том же сервере, где у вас поднят Jitsi-meet или на отдельном: этот мануал подойдет для обоих вариантов.

Начнем мы с того, что создадим DNS записи. Нам понадобится их три: dnsname.com, matrix.dnsname.com и riot.dnsname.com - на IP нашего сервера.

Веб-сервер и SSL

Я использовал nginx для jitsi и не буду отходить от своей традиции и буду настраивать его и для matrix.

Если nginx еще не установлен, то:

# apt update# apt install nginx -y

Если nginx установлен, то создаем конфигурацию (скопируем default и перенастроим):

# cd /etc/nginx/sites-avaliable

Теперь редактируем конфигурацию:

# vim dnsname.com

И меняем следующие директивы:

server_name dnsname.com;...root /var/www/dnsname.com;

Сохраняем и закрываем.

Тоже самое делаем для riot.dnsname.com:

# vim riot.dnsname.comserver_name riot.dnsname.com;  ...  root /var/www/riot.dnsname.com/riot;

Конфигурацию matrix.dnsname.com приводим к следующему виду:

# vim matrix.dnsname.comserver {    # редактируем этот блок       server_name matrix.dnsname.eu;       root /var/www/dnsname.eu;       index index.html;       location / {               proxy_pass http://localhost:8008;       }....

Теперь пора заняться SSL сертификатами. Мы создадим и подпишем бесплатные трехмесячные сертификаты Let's Encrypt. Для этого делаем следующее:

# apt install -y python3-certbot-nginx# certbot --nginx -d dnsname.com -d riot.dnsname.com -d matrix.dnsname.com

Этой же командой спустя три месяца можно продлить сертификаты.

Теперь нужно включить виртуальные хосты и перезагрузить nginx:

# ln -s dnsname.com /etc/nginx/sites-enable/# ln -s matrix.dnsname.com /etc/nginx/sites-enable/# ln -s riot.dnsname.com /etc/nginx/sites-enable/# systemctl restart nginx

Matrix-synapse и Postgresql

Из коробки Matrix использует SQLite - при малом количестве пользователей этого достаточно, однако рекомендуется использовать Postgresql (я настоятельно рекомендую сразу начать использовать Postgresql). Для тех, кто просто хочет "пощупать" Matrix, этот шаг можно пропустить, ну а мы, все же, сразу поставим Postgresql, ибо миграция c SQLite на Postgresql - в некоторых случаях может стать теми еще "танцами". Поехали...

Переходим к установке matrix.

# apt install -y lsb-release wget apt-transport-https# wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg# echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" |    tee /etc/apt/sources.list.d/matrix-org.list# apt update# apt install matrix-synapse-py3 -y

В процессе установки будет запрошено DNS имя - указываем dnsname.com.

Устанавливаем Postgresql, создаем пользователя и БД для matrix-synapse:

# apt install postgresql postgresql-contrib -y# su - postgres# psqlpostgres=# \password postgrespostgres=# \q# createuser --pwprompt synapse_user# psqlpostgres=#CREATE DATABASE synapsepostgres-# ENCODING 'UTF8'postgres-# LC_COLLATE='C'postgres-# LC_CTYPE='C'postgres-# template=template0postgres-# OWNER synapse_user;postgres=# \q# exit
# cp /etc/matrix-synapse/homeserver.yaml /etc/matrix-synapse/homeserver.yaml.back# cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1

Открываем конфигурационный файл Matrix:

# vim /etc/matrix-synapse/homeserver.yaml

Находим строку #servername: "servername" и меняем значение на "dnsname.com", убираем "#", тоже самое делаем со строкой #registration_shared_secret: "UIBfgsjkdfhj3568JHGIUIEBfy3764JH" и вставляем в кавычках ключ, который мы получили ранее. Дальше ищем опцию#enable_registration: false, убираем "#" и меняем false на true

Так же находим блок database снимаем "#" и подставляем свои значения:

database:  name: psycopg2  args:    user: synapse-user    password: password    database: synapse    host: localhost    cp_min: 5    cp_max: 10

А блок database, где прописана SQLite (она ниже) - комментируем (ставим "#").

Далее идем и вставляем строку host synapse synapse_user ::1/128 md5 как у меня:

# vim /etc/postgresql/9.6/main/pg_hba.conf...   # "local" is for Unix domain socket connections only   local   all             all                                     peer   # IPv4 local connections:   host    all             all             127.0.0.1/32            md5   host    synapse         synapse_user    ::1/128                 md5   # IPv6 local connections:   host    all             all             ::1/128                 md5...

Перезапускаем Matrix и Postgresql:

# systemctl restart postgresql# systemctl enable postgresql# systemctl restart matrix-synapse# systemctl enable matrix-synapse

Зарегистрируем пользователя с правами администратора:

# register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008

Будут запрошены данные: логин, пароль и права администратора.

Если у вас уже работает Matrix с SQLite, то можно мигрировать на Postgresql. Для этого нам надо сделать копию homeserver.yaml, сделать две копии homeserver.db (одну мы сохраним для "потомков", ну или если что-то пойдет не туда, а со второй будем работать). Подправить конфиг, мигрировать и перезагрузиться сервисы.

# cp /etc/matrix-synapse/homeserver.yaml /etc/matrix-synapse/homeserver-postgresql.yaml# chown matrix-synapse:nogroup /etc/matrix-synapse/homeserver-postgresql.yaml

Теперь с файлом homeserver-postgresql.yaml надо сделать это.

Останавливаем Matrix:

# systemctl stop matrix-synapse

Далее копируем базы и мигрируем.

# cp /var/lib/matrix-synapse/homeserver.db /etc/matrix-synapse/homeserver.db.snapshot# chown matrix-synapse:nogroup /etc/matrix-synapse/homeserver.db.snapshot# cp /var/lib/matrix-synapse/homeserver.db /tmp/# cd /etc/matrix-synapse/# synapse_port_db --curses --sqlite-database homeserver.db.snapshot --postgres-config /etc/matrix-synapse/homeserver-postgresql.yaml# mv homeserver.yaml homeserver-old-sqlite.yaml# mv homeserver-postgresql.yaml homeserver.yaml# systemctl restart postgresql# systemctl start matrix-synapse

Если остались какие-то вопросы, то можно посмотреть сюда.

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

Теперь мы можем перейти в браузере по адресу https://matrix.dnsname.com и увидеть, что это работает.

Осталось совсем немного и мы сможем погрузиться в мир "черт, как же это все работает....".

Мы уже сделали виртуальный хост riot.dnsname.com и указали директорию /var/www/riot.dnsname.com/riot;, однако такой директории еще нет. Давайте ее создадим и загрузим туда веб-приложение Riot (Element) из git:

# mkdir /var/www/riot.dnsname.com# cd /var/www/riot.dnsname.com# wget https://github.com/vector-im/element-web/releases/download/v1.7.23/element-v1.7.23.tar.gz# apt install -y gnupg# wget https://github.com/vector-im/element-web/releases/download/v1.7.23/element-v1.7.23.tar.gz.asc# gpg --keyserver keyserver.ubuntu.com --search-keys releases@riot.im# wget https://packages.riot.im/riot-release-key.asc# gpg --import riot-release-key.asc# gpg --verify element-v1.7.23.tar.gz.asc# gpg --edit-key 74692659bda3d940# tar -xzvf element-v1.7.23.tar.gz# ln -s element-v1.7.23 riot# chown www-data:www-data -R riot# cd riot# cp config.sample.json config.json

Далее нам надо привести содержимое конфигурационного файла config.json к следующему виду (меняем "base_url": "https://matrix.dnsname.com", "server_name": "dnsname.com", "jitsi": { "preferredDomain": "jitsi.dnsname.com" - последняя настройка свяжет наш matrix и jitsi):

# vim /var/www/riot.dnsname.com/riot/config.json{    "default_server_config": {        "m.homeserver": {            "base_url": "https://matrix.dnsname.com",            "server_name": "dnsname.com"        },        "m.identity_server": {            "base_url": "https://vector.im"        }    },    "disable_custom_urls": false,    "disable_guests": false,    "disable_login_language_selector": false,    "disable_3pid_login": false,    "brand": "Element",    "integrations_ui_url": "https://scalar.vector.im/",    "integrations_rest_url": "https://scalar.vector.im/api",    "integrations_widgets_urls": [        "https://scalar.vector.im/_matrix/integrations/v1",        "https://scalar.vector.im/api",        "https://scalar-staging.vector.im/_matrix/integrations/v1",        "https://scalar-staging.vector.im/api",        "https://scalar-staging.riot.im/scalar/api"    ],    "bug_report_endpoint_url": "https://element.io/bugreports/submit",    "defaultCountryCode": "GB",    "showLabsSettings": false,    "features": {        "feature_new_spinner": false    },    "default_federate": true,    "default_theme": "light",    "roomDirectory": {        "servers": [            "matrix.org"        ]    },    "piwik": {        "url": "https://piwik.riot.im/",        "whitelistedHSUrls": ["https://matrix.org"],        "whitelistedISUrls": ["https://vector.im", "https://matrix.org"],        "siteId": 1    },    "enable_presence_by_hs_url": {        "https://matrix.org": false,        "https://matrix-client.matrix.org": false    },    "settingDefaults": {        "breadcrumbs": true    },    "jitsi": {        "preferredDomain": "jitsi.dnsname.com"    }}

Осталось только перезагрузить службы (или сервер целиком):

# systemctl restart nginx# systemctl restart matrix-synapse

Регистрация и чаты

Осталось понять, как этим пользоваться. Я не буду детально обрисовывать использование, а расскажу, как зарегистрироваться, установить приложение, добавить "друга по переписке". Поехали:

Переходим в браузере на https://riot.dnsname.com

Создаем аккаунт.Создаем аккаунт.Меняем домашний сервер. Придумываем логин и пароль. Дальше надо будет создать ключи шифрования, просто следуйте инструкциям riot.Меняем домашний сервер. Придумываем логин и пароль. Дальше надо будет создать ключи шифрования, просто следуйте инструкциям riot.Искать пользователя надо в данном формате.Искать пользователя надо в данном формате.

Обновление Riot

Периодически тут выкатывают обновления серверной части Riot. Обновиться очень просто. Идем на Гит (ссылка выше) и берем там ссылки необходимой версии релиза, а именно нам нужны element-vx.x.xx.tar.gz и element-vx.x.xx.tar.gz.asc. Далее идем:

# cd /var/www/riot.dnsname.com/# wget https://github.com/vector-im/element-web/releases/download/vx.x.xx/element-vx.x.xx.tar.gz# wget https://github.com/vector-im/element-web/releases/download/vx.x.xx/element-vx.x.xx.tar.gz.asc# gpg --keyserver keyserver.ubuntu.com --search-keys releases@riot.im# wget https://packages.riot.im/riot-release-key.asc# gpg --import riot-release-key.asc# gpg --verify element-vx.x.xx.tar.gz.asc# tar -xzvf element-vx.x.xx.tar.gz# rm riot# ln -s element-vx.x.xx riot# chown www-data:www-data -R riot# cd riot# cp config.sample.json config.json

Теперь надо обновить файл конфигурации как мы делали ранее тут.

Репозиторий с релизами Riot.

Клиентское приложение element.

Подробнее..

Пиринговые мессенджеры враг государства?

24.05.2021 12:21:25 | Автор: admin


В случае полного отключения интернета одна из главных проблем общение с товарищами и родственниками. Опыт Гонконга показывает, что для этого хорошо подходят децентрализованные P2P-мессенджеры, которые работают без интернета, используя mesh-сеть по протоколам Wi-Fi Direct, Bluetooth, Apple Multipeer Connectivity Framework, ANT+, LoRa и др.

Для эффективной коммуникации приложение нужно скачать максимальному количеству человек до начала блокады интернета. Иначе придётся искать файлы после блокады. Человек с нужными файлами станет настоящим авторитетом в офисе или в классе (как это было в Беларуси в августе 2020 года за файлами Psiphon люди реально приезжали из других микрорайонов города).

Вообще, вся история сетей wireless mesh намекает на то, что эта технология крайне не нравится правоохранительным органам.

Mesh-сети


Приложения типа FireChat создают mesh-сеть, используя Bluetooth и прямые подключения через Wi-Fi. Они обеспечивают обмен сообщениями и фотографиями в офлайне между устройствами, находящимися друг от друга на расстоянии примерно до 60 метров.

Все пользователи образуют единую сеть, которая расширяется с ростом количества устройств. На пути к получателю (получателям) сообщения передаются от одного устройства к другому.

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

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

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

Особенно удобно, если каналы или комнаты в мессенджере создаются автоматически и объединяют людей, которые находятся рядом с друг другом (многоквартирный дом, стадион, концертный зал).

Для передачи текстовых сообщений можно приспособить практически любую mesh-сеть, даже сеть из геометок Apple AirTag, которые вообще-то предназначены не для общения людей, а для поиска утерянных вещей. В мае 2021 года хакерам удалось расшифровать трафик AirTag и передать по сети Apple Find My произвольный текст под видом оригинальных зашифрованных сообщений с GPS-координатами. Скорость передачи составила 3байта в секунду. Задержка в сети от 1 до 60 минут.



Подобные mesh-сети есть также у Samsung (Smart Things) и Amazon (Sidewalk) на протоколе LoRa. В принципе, можно использовать эту инфраструктуру для пирингового обмена сообщениями, а также для съёма данных с устройств вне зоны доступа в интернет.

Трагедия FireСhat


FireChat проприетарное приложение от американской компании Open Garden. Эта фирма прекратила дальнейшую разработку, не открыв исходники.

Последняя версия приложения: 9.0.14 (копия на 4pda) вышла полтора года назад (примечание: доступ к сайту 4pda затруднён с территории РФ).


FireChat

Первая версия FireChat появилась в марте 2014 года под iOS, в апреле под Android. Среди сооснователей Open Garden и разработчиков программы Станислав Шалунов и Грег Хазел из компании BitTorrent, где они делали торрент-клиент uTorrent (200 млн пользователей). Там и познакомились.

Вероятно, предприниматели рассчитывали, что FireСhat станет настолько же успешным, как файлоообменные P2P-приложения. Если представить себе эту картину, то весь мир может объединиться в mesh-сеть, а интернет становится практически не нужен! Даже хостинг сайтов теоретически можно размазать в распределённой сети. Такая фантазия.

Очень быстро FireСhat приобрёл популярность в Ираке после того, как местное правительство ввело ограничения на использование интернета, а затем то же самое произошло в Гонконге, во время массовых протестов 2014 года.


Главной проблемой FireСhat во время массовых протестов в Гонконге стала безопасность. Сама архитектура открытой mesh-сети предполагает, что все пользователи приложения светятся как радиомаячки на расстоянии 60 метров, а то и больше. Так что полиции отловить их было очень просто. Наличие программы на телефоне однозначно доказывало вину. Можно предположить, что сотни или тысячи пользователей были арестованы благодаря FireСhat. К тому же, в приложении не использовалось шифрование, так что никакие сообщения не были действительно приватными.

Возможно, критика от специалистов по ИБ повлияла на решение американской компании Open Garden прекратить разработку и не публиковать исходники. Ну или ребята увидели, что всемирная популярность торрентов им не светит, а развитие программы пошло совсем не по тому пути.

Когда появился FireСhat, это была единственная программа такого рода, которая позволяла пользователям создавать mеsh-сети в офлайновом режиме (без интернета) и обмениваться сообщениями1.

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


Фото из статьи FireChat мессенджер, на котором работают протесты в Гонконге, The Guardian

Тем более обидно, если FireСhat создавали специально для Гонконга, как разработку аналогичного приложения Commotion Wireless в 2011 году профинансировал госдепартамент США в преддверии Арабской весны. Хотели как лучше, а получилось как всегда

После FireСhat фирма Open Garden торговала электронными сим-картами (eSIM), продвигала свою криптовалюту, но в последние годы про неё ничего не слышно.

Вообще, приложение FireСhat было не очень качественным. Во-первых, закрытый код. Во-вторых, для регистрации обязательно (!) был нужен доступ в интернет, хотя потом оно работало в офлайне. Короче, странная программа. Может и хорошо, что разработчики её похоронили.

Рация Zello


Близкой по логике функционирования является интернет-рация Zello, которая заблокирована в Российской Федерации в апреле 2017 года.

Радио работает по принципу уоки-токи или push-to-talk. Основное преимущество возможность слушать голосовые сообщения по громкой связи в реал-тайме, вообще не притрагиваясь к смартфону и в то же время быть на связи с большим количеством пользователей.

Хотя здесь передаётся не текст/картинки, а звук, но принцип работы такой же через mesh-сеть, без интернета. Близкие друг к другу пользователи соединяются друг с другом напрямую и передают сообщения дальше, по цепочке. Что важно, здесь используется сквозное шифрование (E2E).

В России приложение получило особую популярность среди дальнобойщиков и других автомобилистов, поскольку очень удобно (и приятно) беседовать с попутчиками, которые едут по той же трассе. Они подскажут о радаре в кустах, о ДТП на дороге и т.д. Репрессии со стороны государства начались после массовых протестов дальнобойщиков в связи с введением обязательной платы миллиардеру Игорю Ротенбергу за проезд тяжёлых грузовиков по дорогам России (система Платон). Координация протестов осуществлялась через Zello, поэтому программу решили заблокировать.

Это был первый прецедент, когда власти попытались сломать мессенджер, работающий по VPN. Понадобился целый год, чтобы заблокировать свыше 4тыс. IP-адресов из облака AWS, что не принесло успеха. Тогда РКН пошёл на шантаж компании Amazon, угрожая заблокировать 26 подсетей AWS, в сумме 13,5млн адресов.

Компания Amazon оказалась не готова к войне и отказалась предоставлять услуги Zello. Лишившийся облачной инфраструктуры сервис было легко заблокировать.

После успеха с блокировкой облачной VPN-инфраструктуры Zello, в 2018 году власти решили, что смогут успешно заблокировать такую же облачную инфраструктуру мессенджера Telegram. Но здесь нашла коса на камень: Павел Дуров инвестировал миллионы долларов в покупку всё новых и новых инстансов AWS, его брат Николай с коллегами запрограммировал систему обхода блокировок через прокси, а компании Amazon и Google выдержали блокировку своих подсетей в РФ. В итоге властям пришлось заблокировать 18 миллионов IP-адресов AWS и Google Cloud, что нарушило работу крупных ритейл-компаний, банков из топ-20, частных клиник и тысяч бизнесов в России. После двух лет выматывающей борьбы государство сдалось: руководителя Роскомнадзора уволили, Telegram разблокировали, а IP-адреса облачных сервисов удалили из чёрного списка.

Криптомессенджер Briar


Четыре года назад, в июле 2017 года, вышла первая публичная бета-версия мессенджера Briar, который работает через Tor или в офлайне, через пиринг. Его разработка продолжалась аж три года. Но продукт вышел на редкость качественный.

Это уже честный опенсорс. Приложение можно собрать из исходников (пошаговая инструкция для Android Studio). Оно доступно в каталогах приложений (например, Google Play) и отлично поддерживается: последняя версия 1.2.20 от 2апреля 2021года. Реализована стойкая криптография, сквозное шифрование.


По умолчанию мессенджер работает через интернет по протоколу Tor (луковичная маршрутизация). В этом случае программа создаёт на устройстве пользователя скрытый сервис Tor и соединяется со скрытыми сервисами Tor других людей из списка контактов. В случае отсутствия интернета она переходит на peer-to-peer коммуникации через Wi-Fi Direct, локальную сеть или Bluetooth.

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

Поддерживает передачу сообщений (но не файлов), приватные группы, блоги/статусы и импорт RSS. Есть несколько полезных функций, таких как блокировка приложения (по PIN-коду).

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



Briar Project некоммерческий проект, который сейчас ведут шесть добровольцев. Код на 97,7% написан на Java (+немного Kotlin, Python и Ruby) и поставляется под GPLv3. Вскоре после первого релиза код прошёл независимый аудит безопасности от компании Cure53. Она известна своим аудитом проектов SecureDrop, Cryptocat и Dovecot. Так что Briar действительно надёжный вариант для пиринговых коммуникаций.

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

Но исходный код открыт, так что теоретически кто угодно может попробовать сделать стороннюю реализацию Briar под iOS, например.


Matrix, Riot, Element


Официальный клиент Element (бывший Riot) для относительно децентрализованной сети Matrix не поддерживает пиринговые коммуникации в офлайн-режиме и формирование mesh-сети.

В последнее время этот клиент получил некоторую известность. Сейчас количество пользователей Matrix/Element сравнимо с Briar или больше. У него есть сквозное шифрование, мосты в IRC, Slack, Telegram, Jitsi Meet и др. Но именно пиринга в офлайне нет.

См. также:


Secure Scuttlebutt p2p социальная сеть, работающая и в офлайне (есть клиент Manyverse для Android и iOS)

P. S. Кроме FireСhat, протестующие в Гонконге использовали малоизвестное мексиканское приложение Bridgefy, которое тоже умеет формировать mesh-сеть и передавать сообщения в офлайне. В октябре 2020 года приложение перешло на криптографический протокол Signal.

1 На самом деле ещё раньше были другие приложения, такие как Serval Mesh от проекта Serval Project или древний Commotion Wireless от Open Technology Initiative (с финансированием госдепа), но все эти разработки давно прекращены [вернуться]




На правах рекламы


Мощные виртуальные серверы на базе процессоров AMD EPYC для любых целей, в том числе для установки VPN.

Присоединяйтесь к нашему чату в Telegram.

Подробнее..

На GitHub предлагают запустить каталог мобильных приложений

08.02.2021 04:16:37 | Автор: admin
В конце января компания Google ни с того ни с сего удалила из каталога Play Store приложение Element (бывший Riot) децентрализованный мессенджер, который работает на федеративной системе серверов Matrix. Кто-то из пользователей пожаловался, что в каком-то канале на каком-то сервере Matrix он увидел неприличный контент и Google просто взяла и удалила программу. Как говорят некоторые комментаторы, это аналогично запрету браузера за то, что в нём открыли неприличный сайт, или запрету почтового клиента за то, что он принял неприличное письмо. К чести Google, она признала ошибку: вице-президент лично извинился перед разработчиками Element, а приложение вернули на место.

Но мы видим, что происходит с другими. Например, Павел Дуров был вынужден удалить ряд российских телеграм-каналов под давлением Apple. Если верить Павлу, без выполнения этого требования Apple блокировала выпуск экстренного обновления Telegram для iOS.

А ведь совсем недавно все крупные интернет-компании объявили бойкот маленькому приложению Parler. Его не только изгнали со всех каталогов, но даже отказали в хостинге на Amazon!

Эти события указывают на усиление цензуры со стороны интернет-гигантов, которые контролируют платформы для распространения мобильных приложений. Напрашивается логичная мысль: а почему бы не запустить свободный каталог мобильных приложений? Например, на базе GitHub.

В нём могут спокойно публиковаться свободные мессенджеры типа Element/Matrix, Parler и Telegram, не опасаясь цензуры со стороны владельца платформы, потому что в последнее время Microsoft как будто более гуманно относится к разработчикам, чем Google и Apple. Такую идею высказал разработчик Рохан Дешмух в своём блоге, и её многие поддержали.


Децентрализация серверов и шифрование трафика тоже эффективное средство против цензуры. Сравнение функционала Matrix и Telegram

GitHub App Store


Потенциальные преимущества GitHub для хостинга мобильных приложений:

  1. Там уже лежит исходный код миллионов приложений. Интеграция APK должна быть тривиальной для реализации.
  2. В отличие от Google, GitHub действительно прислушивается к мнению пользователей.
  3. Они неплохо проявили себя в битве за youtube-dl.
  4. Здесь можно наконец-то сделать достойный каталог приложений для десктопов.
  5. Пользователи могут обсуждать вопросы непосредственно с разработчиками, а не писать комментарии на страницах приложений там очень неудобно поддерживать беседу и отслеживать решение вопросов, по сравнению с GitHub.

Идея спорная, но интересная. На GitHub можно сделать универсальный каталог для всех основных платформ, а также разрешить публикацию приложений с закрытым исходным кодом. Честно говоря, почему бы и нет? Сложно представить, кто для этой роли подходит лучше, чем GitHub.

Впрочем, далеко не факт, что Microsoft разрешит полную свободу на своём хостинге. Это такая же законопослушная американская компания, как Google и Apple.

Но GitHub пока вполне достойно показал себя после поступления запросов DMCA на удаление свободных программ. GitHub помогал разработчикам восстановить форки репозитория youtube-dl, а также успешно противостоял удалению репозиториев Popcorn Time в мае 2020 года.



Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru