Випуск P2P-платформи GNUnet 0.13. Просування GNS як інтернет-стандарт

Комітет IETF (Internet Engineering Task Force), що займається розвитком протоколів та архітектури Інтернет, розпочав процес стандартизації системи доменних імен GNS (GNU Name System), що розвивається проектом GNUnet як повністю децентралізована і недоступна для цензури заміна DNS. В теперішню мить опубліковано перший чорновий варіант стандарту, після стабілізації якого буде сформовано RFC, що має статус «Запропонованого стандарту».

ГНС може застосовуватися пліч-о-пліч з DNS і використовуватися в традиційних додатках, таких як web-браузери. Цілісність і незмінність записів забезпечується рахунок використання криптографічних механізмів. На відміну від DNS у GNS замість деревоподібної ієрархії серверів застосовується спрямований граф. Перетворення імен подібно до DNS, але запити та відповіді виконуються зі збереженням конфіденційності - обробний запит вузол не знає кому віддається відповідь, а транзитні вузли та сторонні спостерігачі не можуть розшифрувати запити та відповіді.

DNS-зона в GNS визначається за допомогою зв'язки з відкритого та закритого ключів ECDSA на основі еліптичних кривих Curve25519. Використання Curve25519 сприймається деякими як дуже дивний крок, тому що для ECDSA застосовують інші типи еліптичних кривих, а в парі з Curve25519 зазвичай використовують алгоритм цифрових підписів Ed25519, більш сучасний, безпечніший і швидший, ніж ECDSA. З точки зору криптостійкості також викликає сумнів вибір розміру ключа - 32 байти замість 64 байт, які зазвичай використовуються для Ed25519, а також застосування каскадного симетричне шифрування, використовуючи алгоритми AES і TwoFish в режимі CFB.

Подібний підхід пояснюється необхідністю реалізації ієрархічних ключів, що дозволяють використовувати кореневий відкритий ключ для вилучення дочірнього відкритого ключа, користуючись властивістю лінійності кривої Curve25519. Ця особливість дозволяє отримати дочірні відкриті ключі без знання закритих кореневих ключів. Вказана техніка також застосовується у Bitcoin. 32-байтовий розмір ключа вибраний для того, щоб ключ вміщався в один запис DNS.

Додатково можна відзначити новий випуск фреймворку GNUnet 0.13призначений для побудови захищених децентралізованих P2P-мереж. Створювані за допомогою GNUnet мережі не мають єдиної точки відмови та здатні гарантувати недоторканність приватної інформації користувачів, у тому числі виключити можливі зловживання з боку спецслужб та адміністраторів, які мають доступ до вузлів мережі. Випуск відзначений як значні зміни протоколу, що порушують зворотну сумісність з версіями 0.12.x.

GNUnet підтримує створення P2P-мереж поверх TCP, UDP, HTTP/HTTPS, Bluetooth і WLAN, може працювати в режимі F2F (Friend-to-friend). Підтримується обхід NAT, у тому числі з використанням UPnP та ICMP. Для адресації розміщення даних можливе використання розподіленої хеш таблиці (DHT). Надаються засоби для розгортання mesh-мереж. Для вибіркового надання та відкликання прав доступу застосовується сервіс децентралізованого обміну атрибутами ідентифікації reclaimID, використовує GNS (GNU Name System) та шифрування на основі атрибутів (Attribute-Based Encryption).

Система відрізняється низьким споживанням ресурсів та використанням багатопроцесної архітектури для забезпечення ізоляції між компонентами. Надаються гнучкі засоби для ведення логів та накопичення статистики. Для розробки кінцевих програм GNUnet надає API для мови Сі та біндинги для інших мов програмування. Для спрощення розробки замість потоків пропонується використовувати цикли обробки подій (event loop) та процеси. До складу входить тестова бібліотека для автоматичного розгортання експериментальних мереж, що охоплюють десятки тисяч бенкетів.

Крім GNS на базі технологій GNUnet також розвивається кілька готових програм:

  • Сервіс для анонімного обміну файлами, що не дозволяє проаналізувати інформацію за рахунок передачі даних тільки в зашифрованому вигляді і не дає відстежити, хто розмістив, шукав і скачав файли завдяки використанню протоколу GAP.
  • Система VPN для створення прихованих сервісів у домені «.gnu» та прокидання тунелів IPv4 та IPv6 поверх P2P-мережі. Додатково підтримуються схеми трансляції IPv4-в-IPv6 і IPv6-в-IPv4, а також створення тунелів IPv4-поверх-IPv6 і IPv6-поверх-IPv4.
  • Сервіс GNUnet Conversation для здійснення голосових викликів поверх GNUnet. Для ідентифікації користувачів використовується GNS, вміст голосового трафіку передається у зашифрованому вигляді. Анонімність поки не надається - інші бенкети можуть відстежити з'єднання між двома користувачами та визначити їх IP-адреси.
  • Платформа для побудови децентралізованих соціальних мереж Secushare, що використовує протокол PSYC і підтримка розповсюдження повідомлень у режимі multicast із застосуванням end-to-end шифрування для того, щоб доступ до повідомлень, файлів, чатів та обговорень могли отримати тільки авторизовані користувачі (ті кому повідомлення не адресовані, включаючи адміністраторів вузлів, не зможуть їх прочитати);
  • Система для організації шифрованої електронної пошти pretty Easy privacy, що застосовує GNUnet для захисту метаданих і підтримує різні криптографічні протоколи для верифікації ключів;
  • Платіжна система Майстерня GNU, що надає анонімність для покупців, але яка відстежує транзакції продавців для забезпечення прозорості та надання податкової звітності. Підтримується робота з різними існуючими валютами та електронними грошима, у тому числі з доларами, євро та біткоїнами.

Основні нововведення GNUnet 0.13:

  • Введений до ладу реєстр ВИМОК (GNUnet Assigned Numbers Authority), що відповідає за призначення імен та адрес для GNUnet.
  • Реалізація децентралізованої системи доменних імен GNS приведена у відповідність до специфікацією, запропонованої в IETF. Налагоджено роботу NSS-плагіну «block». Додано нові прапори SUPPLEMENTAL для записів, які не опубліковані під заданою міткою, але повертаються резолвером. В утиліту gnunet-namestore додано висновок попередження при додаванні записів TLSA або SRV поза записом BOX.
  • У механізмі відкликання ключів (GNS/REVOCATION) функція докази виконаної роботи переведено використання алгоритму хешування Argon2.
  • У сервісі децентралізованого обміну атрибутами ідентифікації (RECLAIM) розмір тікету збільшено до 256 біт.
  • Транспортний плагін, який використовує для передачі даних протокол UDP, переміщений до категорії експериментальних через наявність проблем зі стабільністю;
  • Формат файлу ключів та метод серіалізації закритих ключів ECDSA уніфіковано з іншими бібліотеками (старі ключі не працюватимуть).
  • Як реалізацію алгоритмів шифрування на основі еліптичних кривих задіяна бібліотека лібонатрію.
  • Додано можливість складання утиліт з бібліотекою cURL, не пов'язаною з gnutls.
  • Повернено сервер безперервної інтеграції Buildbot.
  • У складальні залежності включені бібліотеки libmicrohttpd, libjansson та libsodium.

Джерело: opennet.ru

Додати коментар або відгук