Ricochet - анонімний бессерверный протокол передачі миттєвих повідомлень

Переклад вступної частини і введення в технічний опис проекту з відкритим вихідним кодом Ricochet github).

Анонімна бессерверная система передачі миттєвих повідомлень, яка просто працює

Ricochet — це експеримент з альтернативним методом передачі миттєвих повідомлень, який не довіряє нікому не розкриває вашу особистість, список контактів і спілкування.

— можна спілкуватися без розкриття особистості або ip-адреси.
— ніхто не може з'ясувати, з ким ви спілкуєтеся або коли ви спілкуєтеся (ніяких мета-даних)
— ніяких серверів, які можна було б зламати, або операторів, яких можна було б змусити видати інформацію про вас
— крос-платформний і простий навіть для звичайних користувачів

Примітка: проект нещодавно був перейменований з Torsion.

Як це працює

Ricochet — система передачі миттєвих повідомлень peer-to-peer, заснована на використанні прихованих сервісів Tor. Ваш логін — адресу вашого прихованого сервісу, а ваш контакт з'єднується з вами (без участі серверів-посередників) через Tor. Система взаємодії влаштована так, що дуже складно встановити вашу особистість, виходячи з вашої адреси.

Ricochet не пов'язаний і не узгоджений з розробниками The Tor Project.

Експеримент

Проект експериментальний. Ніхто не проводив формальний аудит коду. Безпека і анонімність — це складні теми, і вам потрібно самостійно оцінювати ризики можливості бути розкритим при використанні будь-якого програмного забезпечення. Не рекомендуємо покладатися на Ricochet в плані безпеки і не довіряти Ricochet більше, ніж необхідно. Хоча я, як розробник, впевнений, що мій проект дає вам більше приватності, ніж який-небудь інший аналогічний.

Завантажити

Ricochet доступний для Windows, OS X 10.7 і вище), також є generic Linux binary package. Інформація про релізах і журнал релізів доступні на відповідних сторінках.

Також вони доступні на сайті проекту.

Бінарники підписані через PGP 9032 CAE4 CBFA 933A 5A21 45D5 FF97 C53F 183C 045D.

Адреса автора: ricochet:rs7ce36jsj24ogfw або john.brooks@dereferenced.net.

Tor: як працює протокол прихованих сервісів

Tor дає користувачам можливість приховувати їх місцезнаходження, надаючи при цьому різні види сервісів, від веб-публікацій до системи миттєвих повідомлень. Використовуючи точки зустрічей Tor («rendezvous points»), інші користувачі можуть приєднуватися до прихованих сервісів, причому ніхто з них не буде знати особистість іншого.

Прихований сервіс повинен повідомити про своє існування по мережі Tor, перш ніж до нього вийде приєднатися. Сервіс випадковим чином вибирає ретранслятори, будує до них ланцюжки, і робить їх своїми точками «знайомства», надаючи їм свій публічний ключ. На картинках зелені лінії — це ланцюжки, а не прямі з'єднання. При використанні повноцінних ланцюжків Tor дуже складно прив'язати точку знайомства до ip-адресою прихованого сервісу. Хоча публічний ключ доступний багатьом, ip-адресу прихованого сервісу не повинна розголошуватися.
image

Крок другий: прихований сервіс збирає свій дескриптор, що містить публічний ключ і коротку інформацію про кожній точці знайомства, і підписує цей приватним ключем. Він закачує дескриптор у розподільну таблицю хешей. Клієнти знайдуть дескриптор за запитом XYZ.onion, де XYZ — 16-символьне ім'я, створене на основі публічного ключа. Після цього прихований сервіс запущений.

Використання автосгенерированного імені сервісу може здатися непрактичним, але воно служить важливій меті: кожен,- включаючи точки знайомства, директорія розподіленої таблиці хешей, і звичайно, клієнти,- може підтвердити, що він спілкується з потрібним прихованим сервісом. Є думка, що з трьох пунктів — «децентралізований, безпечний і має сенс для людини» зазвичай можна вибрати не більше двох.
image

Крок три: клієнт, який побажав з'єднатися з прихованим сервісом, повинен дізнатися його onion-адресу. Після цього йому потрібно завантажити дескриптор з розподіленої хеш-таблиці. Якщо там є дескриптор для XYZ.onion (і якщо сервіс в онлайні, не покинута і не зробив помилки в своєму імені), клієнтові стає відомий набір точок знайомства і правильний публічний ключ. В цей час клієнт теж створює ланцюжок до іншого випадково обраному ретранслятора і робить його точкою зустрічі, передаючи йому одноразовий секретний ключ.
image

Крок чотири: коли дескриптор існує і точка зустрічі підготовлена, клієнт збирає вступне повідомлення (шифроване з публічним ключем прихованого сервісу), що включає адресу точки зустрічі і одноразовий секретний ключ. Клієнт відправляє його однією з точок знайомства з запитом про передачу його прихованого сервісу. Знову-таки спілкування відбувається через ланцюжок Tor, ніхто не може зв'язати відправку вступного повідомлення з ip-адресою клієнта, і той залишається анонімним.
image

Крок п'ять: прихований сервіс розшифровує вступне повідомлення і з'ясовує адресу точки зустрічі і секретний ключ. Він створює ланцюжок до точки зустрічі і відправляє одноразовий секретний ключ у вітальному повідомленні.
image

На останньому кроці точка зустрічі повідомляє клієнта про успішне з'єднанні. Після цього клієнт і прихований сервіс використовують ланцюжка, побудовані до точки зустрічі, для зв'язку один з одним. Точка просто транслює зашифровані повідомлення туди і назад.

Загалом, повністю з'єднання між клієнтом і прихованим сервісом складається з 6 ретрансляторів: 3 обрані клієнтом (один з них — точка зустрічі), а інші три обрані прихованим сервісом.
image

Технічні зауваження по дизайну Ricochet

Цілі проекту
Створити систему миттєвих повідомлень з наступними властивостями:

— користувачі не ідентифікуються за контактами або адресами
— спілкування має перевірку автентичності і проходить в приватному режимі
— ніхто не має доступу до списку контактів, історії повідомлень або інших метаданих
— чинить опір цензурі та відстеження на рівні локальної мережі
— пручається використання чорних списків або DOS
— доступна і зрозуміла для звичайних користувачів
— надійність та інтерактивність порівнянна з традиційними IM

Введення
Особистість кожного користувача представлена прихованим сервісом і його точкою зв'язку. Ця інформація поширюється як id для зв'язку у вигляді ricochet:qjj5g7bxwcvs3d7i. У цьому вигляді вона унікальна і достатня для з'єднання з сервісом.

Перебуваючи в онлайні, користувач поширює інформацію про своєму прихованому сервісі у вигляді id, що містить onion-адресу, і приймає двосторонні анонімні сполуки, які ідентифікуються як відомі контакти, або використовуються для отримання запитів на спілкування.

Відомі контакти використовують спеціальний протокол для передачі повідомлень через встановлені з'єднання.

Запит контакту
Як у класичних системах миттєвих повідомлень, ви можете відправити запит на додавання користувача в свій список контактів, використовуючи його id. Перед тим, як ви зможете надсилати або отримувати повідомлення, цей запит повинен бути прийнятий.

Запит відправляється шляхом з'єднання з сервісом, при якому повідомляється, що з'єднання встановлено для запиту контакту і надається різна інформація, в тому числі id відправника запиту. Відправник, перебуваючи в онлайні, періодично намагається встановити зв'язок.

Запит включає в себе:

— ім'я прихованого сервісу одержувача
— випадковий cookie, створений на початку з'єднання одержувачем
— випадковий секретний ключ, який використовує одержувач для підтвердження з'єднань
— повний публічний ключ, пов'язаний з прихованим сервісом і підтверджує особу відправника
— можливо, прізвисько і коротке вітальне повідомлення
— підпис цієї інформації RSA за допомогою того ж публічного ключа

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

Одержувач може прийняти або відхилити запит. Відхилений публічний ключ можна додати в чорний список і в майбутньому відхиляти автоматично

З'єднання між контактами
Перебуваючи в онлайні, сервіс періодично пробує зв'язок з кожним з контактів. У разі успіху підключення залишається відкритим і контакт вважається знаходяться в онлайні. На кожен з контактів потрібно одне з'єднання, неважливо, хто саме з двох контактів був його ініціатором.

Шар прихованого сервісу зручний тим, що надає конфіденційність, ефемерність, і підтвердження тому протокол додатки виходить дуже простим. Клієнтська частина з'єднання підтверджується попередньо розповсюдженим випадковим ключем, створеним відразу після запиту контакту.

Для спілкування використовується простий бінарний протокол команда-відповідь. Він намагається додати надійності в нестабільні з'єднання. Для простоти і повного контролю над процесом, щоб виключати можливість атак на безпеку і анонімність спілкування, використовується оригінальний протокол, а не один з готових варіантів (зразок XMPP).

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

Інтерфейс і стабільність
Інтерфейс — важлива і часто недооцінена частину безпеки і анонімності. Менш підковані в технічних аспектах користувачі повинні без зусиль розуміти, як користуватися програмою і що потрібно робити, щоб залишатися в безпеці.

Інтерфейс Ricochet намагається бути простим і зрозумілим для тих, хто використовував інші менеджери миттєвих повідомлень. Розуміння Tor і мережевих концепцій не потрібно. Має бути просто використовувати його правильним чином, складно порушувати правила безпеки, і можливо для IT-фахівців розширювати можливості програми

Майбутнє розвиток
Описаний тут протокол близький до наипростейшему варіанту. Більш просунуті протоколи можуть допускати передачу файлів, потокове аудіо і відео. Більш просунуте використання прихованих сервісів може зменшити ризики при відкритті сервісу з публічним доступом. Також можна використовувати розділені сервіси або більш складно налаштовані сервіси для запобігання атак. Природно, вітаються ідеї і допомогу у розвитку проекту.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.