ZRTP — криптографічний протокол узгодження ключів шифрування, використовуваний у системах передачі голосу по IP мережам (VoIP). ZRTP описує метод отримання ключів по алгоритму Діффі — Геллмана для організації Secure Real-time Transport Protocol (SRTP). ZRTP здійснює узгодження ключів у тому ж потоці RTP, за яким встановлена аудіо-/відеозв'язок, тобто не потребує окремого каналу зв'язку. Розроблено Філіпом Циммерманом (Phil Zimmermann, автор Pretty Good Privacy), Джоном Калласом (Jon Каллас) і Аланом Джонстоном (Alan Johnston) у 2006 році. Опис протоколу подано у IETF 5 березня 2006 р.

Опис ред.

ZRTP пропонується як спосіб узгодження ключів шифрування з використанням методу Діффі — Геллмана через медіапотік, що встановлюється протоколом RTP (Real-time Transport Protocol), який утворюється після ініціалізації виклику, використовуючи будь-який тип сигналізації, наприклад Session Initiation Protocol (SIP). Під час надсилання дзвінка створюється публічний ID при створенні ключів, якими буде шифруватися медіапотік розмови. Таким чином, ключ дійсний лише протягом однієї розмови, утворюючи таким чином сесію Secure RTP (SRTP). При розриві з'єднання ключ і весь криптографічний контекст знищується, що забезпечує досконалу пряму секретність(PFS). Таким чином, існує потенціал вбудовування цього механізму у вже існуючі програмні VoIP-програмні продукти, шлюзи IP-телефони.

Протокол не вимагає заздалегідь згенерованих ключів або підтримки інфраструктури обміну ключів (PKI), або центру сертифікації (СА). Це позбавляє від складнощів створення структури авторизації, заснованої на довіреній підтримці, яка, наприклад, застосовується в шифруванні SSL. Головна мета організації шифроканалу, чи для голосової сесії чи https-з'єднання з інтернет-банком — уникнути можливості присутності «людини посередині» (man in the middle), забезпечуючи єдиний криптозахист між будь-якими двома точками у світі IP.

ZRTP теоретично може застосовуватися спільно з будь-якими сигнальними протоколами, які використовують RTP для передачі медіапотоку, включаючи SIP, H.323, SCCP, MGCP, Unistim і Jingle, оскільки в теорії ZRTP не залежить від сигналізації, здійснюючи обмін ключів безпосередньо в медіасесії RTP. Таким чином, ZRTP може стати відкритим стандартом де-факто у світі IP-телефонії.

Автентифікація ред.

SAS ред.

Сам по собі алгоритм обміну ключами Діффі — Гелмана не може забезпечити захист від присутності людини посередині (man in the middle). Для аутентифікації ZRTP використовує Short Authentication String (SAS) «короткий рядок аутентифікації», що є скороченим поданням криптографічного хешу отриманих ключів Діффі — Гелмана.

Значення SAS обчислюються на кожній стороні з'єднання, абоненти передають їх один одному голосом для звірки. Якщо значення не збігаються, то з великою впевненістю можна припустити присутність «людини посередині». Використання алгоритму Діффі — Гелмана дає потенційній «людині посередині» всього одну спробу створити правильну SAS при спробі атаки. Оскільки SAS виходить зі старших 32 бітів хешу і має дві форми подання (16-бітну B256 у вигляді пари слів зі списку PGP, і 20-бітну B32 у вигляді чотирьох символів), вона є дуже короткою, ймовірність невиявлення атаки при використанні SAS у форматі B256 дорівнює 1/65536. Застосування SAS у форматі B32 знижує ймовірність невиявлення атаки в 16 разів (порівняно з B256), до 1/1048576.

Безперервність ключового матеріалу ред.

Другим рівнем захисту ZRTP від атаки «людина посередині» є безперервність ключового матеріалу. Хеш ключової інформації попереднього виклику підмішується до параметрів алгоритму Діффі — Геллмана при наступному виклику (між цими ж абонентами), що надає протоколу ZRTP схожість з SSH. Якщо «людини посередині» не було при першому виклику, він виключається із всіх подальших.

Відкритий стандарт ред.

  • Софт-клієнт Twinkle використовує GNU ccRTP і проект GNU ZRTP для використання ZRTP в розробках. Усі перераховані пакети підтримують відкриту ліцензію GPL.
  • Jitsi нині має підтримку ZRTP з використанням зовнішньої бібліотеки ZRTP4J lib.
  • PJSIP — кросплатформовий стек для open source розробок у галузі VoIP, очікується його вихід із повною підтримкою ZRTP в першому кварталі 2009 року. Заявлена підтримка Linux, Windows, OSX, Symbian, Windows Mobile.
  • PhonerLite — ZRTP бібліотека власної розробки.
  • Підтримка ZRTP може бути експериментально додано в Asterisk з допомогою набору патчів [Архівовано 8 квітня 2018 у Wayback Machine.], розроблених у рамках проекту Zfone. При цьому для роботи протоколу використовується libZRTP.
  • Підтримка ZRTP була додана в основний код FreeSWITCH з 5 квітня 2012 [Архівовано 13 квітня 2018 у Wayback Machine.]

Комерційне використання ред.

  • Авторська розробка самого Філіпа Циммермана — Zfone, доступна для Mac OS X, Windows і Linux. Безкоштовна протягом бета-тестування, але планується надалі поширення тільки комерційних копій.
  • KHAMSA SA в якості PrivateGSM — перше впровадження ZRTP по GSM (без використання VoIP) для платформи Symbian OS, відповідно — тільки для смартфонів. Додаткові розширення ZRTP/S дають змогу розширити застосування ZRTP в мережах ISDN, публічних телефонних мережах і супутниковій телефонії. Використовує бібліотеку libZRTP, розроблену Циммерманом.
  • UM Labs випустила шлюз з SIP Security Controller, який забезпечує безпечні зашифровані з'єднання між пристроями, що підтримують ZRTP, мережами VoIP з комерційними або безкоштовними IP-АТС, які не підтримують ZRTP або інший шифрозахист.
  • M5T ZRTP SAFE — окрема незалежна розробка стека ZRTP.

Дивись також ред.

Посилання ред.