Протоколи забезпечення безпеки сервісу «миттєвих повідомлень»

Базова архітектура IM сервісів
Сервіс миттєвого обміну повідомленнями або сервіс миттєвих повідомлень (англ. Instant messaging, IM) - служби миттєвих повідомлень (Instant Messaging Service, IMS), програми онлайн-консультанти (OnlineSaler) і програми-клієнти (Instant Messenger, IM) для обміну повідомленнями в реальному часі через Інтернет.
В функцій IM входять:
Постановка завдання захисту інформації
Метою даної статті є вивчення сучасних протоколів забезпечення безпеки сервісу "миттєвих повідомлень".
Для досягнення поставленої задачі були визначені наступні підзадачі:
- Розглянути принцип роботи сервісу "миттєвих повідомлень";
- Розглянути протоколи забезпечення безпеки "миттєвих повідомлень".
Історія розвитку

Логотип XMPP Standards Foundation
Принцип роботи сервісу миттєвих повідомлень

Спілкування ведеться одночасно між двома співрозмовниками, в той же час інші користувачі їх контакт-листа або просто інші учасники мережі можуть також відправляти повідомлення, які будуть відображатися у вікнах чату програмного клієнта.
У ряді програм (наприклад, Skype) допускаються розраховані на багато користувачів чати. Режим перегляду інших елементів інтерфейсу розрізняються в різних клієнтів, але, як правило, в списку замість номера контакту може показуватися або ім'я, присвоєне співрозмовнику користувачем IM-клієнта або нік, який сам користувач вказав при реєстрації або зміну особистих даних.
Після закінчення бесіди користувач може закривати активне вікно чату, а також виходити з мережі. Сервер автоматично змінює статус в контакт-листах інших учасників, але продовжує приймати текстові повідомлення.
Як правило, месенджери не працюють самостійно, а підключаються до центрального комп'ютера мережі обміну повідомленнями, званому сервером. Тому месенджери і називають клієнтами (клієнтськими програмами). Термін є поняттям з клієнт-серверних технологій.
Широкому колу користувачів відомо кілька популярних мереж (і клієнтів) обміну повідомленнями, таких як IRC. Skype. ooVoo. AIM. ICQ. MSN. Yahoo !. Jitsi. XMPP. Кожна з цих мереж розроблена окремою групою розробників, має окремі сервери і протоколи, відрізняється своїми правилами та особливостями. Між різними мережами зазвичай немає прямого зв'язку (тільки в XMPP існує поняття мережевого транспорту), таким чином, користувач мережі Skype не може зв'язатися з користувачем мережі ICQ, однак ніщо не заважає бути одночасно користувачем декількох мереж.
Більшість IM-мереж використовують закриті протоколи, тому альтернативні клієнти теоретично можуть володітиме меншою кількістю базових функцій, ніж офіційні, хоча на практиці частіше буває навпаки. Однак при змінах протоколу на стороні сервера мережі альтернативні клієнти можуть раптово перестати працювати.
Протокол Extensible Messaging and Presence Protocol (XMPP)
На відміну від комерційних систем миттєвого обміну повідомленнями, таких як AIM. ICQ і Yahoo !. XMPP є децентралізованою, що розширюється і відкритою системою. Будь-який бажаючий може відкрити свій сервер миттєвого обміну повідомленнями, реєструвати на ньому користувачів і взаємодіяти з іншими серверами XMPP. На основі протоколу XMPP вже відкрито безліч приватних і корпоративних серверів XMPP. Серед них є досить великі проекти, такі як Facebook. Google Talk. Одноклассники.ru. QIP. LiveJournal, Juick і ін.
опис протоколу

Схема пристрою роботи XMPP
Сімейство протоколів XMPP прийнято як стандарт RFC 3920. 3921.
Для даного протоколу за замовчуванням використовується порт 5222, також можливе використання порт 80 і / або 443, при виникненні проблем з брандмауером.
переваги протоколу
- Децентралізація: Архітектура мережі XMPP схожа з електронною поштою. Можна створити свій власний XMPP-сервер і немає якогось певного центрального сервера [11].
- Відкритий стандарт: Існує безліч реалізацій серверів і клієнтів, а також бібліотек з відкритим вихідним кодом [11].
- Безпека: XMPP сервери можуть бути ізольовані від публічних мереж XMPP (наприклад, у внутрішній мережі компанії) і добре захищені (завдяки використанню SASL і TLS) вбудованими в ядро XMPP специфікаціями. Для підтримки використання шифрування каналу XMPP Standards Foundation також використовував допоміжний certification authority в xmpp.net, забезпечуючи цифрові сертифікати для адміністраторів XMPP серверів за сприяння StartCom Certification Authority (який є основним хранителем сертифікатів для всіх допоміжних). Багато реалізації серверів використовують SSL при обміні між клієнтом і сервером, і чимало клієнтів підтримують шифрування за допомогою PGP / GPG всередині протоколу [11].
- Гнучкість: що настроюється функціональність може бути надбудована поверх XMPP; для підтримки можливості взаємодії різних мереж стандартні розширення підтримуються XMPP Software Foundation. Додатки XMPP в доповнення до функціональності клієнта мережевого спілкування включають в себе адміністрування мережі, розподіл ресурсів, утиліти для спільної роботи, обмін файлами, ігри і моніторинг віддалених систем [11].
Слабкі сторони протоколу
Протокол Off-the-Record Messaging (OTR)
Off-the-Record Messaging (OTR) - це криптографічний протокол який забезпечує шифрування даних при використанні сервісу миттєвих повідомлень. OTR використовує комбінацію AES з 128-бітовим ключем, Diffie-Hellman key exchange зі тисячу п'ятсот тридцять шість-бітовим ключем і SHA-1. На додаток до аутентифікації і шифрування, OTR забезпечує вперед йде безпеку.
Угода щодо ключів
Для передачі повідомлень з використанням OTR учасники протоколу повинні встановити загальний секретний ключ. Для цього використовується протокол аутентифицированного розподілу ключів (англ. Authenticated Key Exchange), заснований на протоколі Діффі - Хеллмана [3].
На початку протоколу учасники A і B вибирають просте число і генератор групи. A вибирає випадкове число і відправляє B результат обчислення. B вибирає випадкове число і відправляє A результат обчислення. Потім учасники використовують загальний ефемерний ключ. де - криптографічний хеш-функція SHA-1 [1].
Спроба оновити ключі
Для забезпечення perfect forward secrecy користувачі постійно оновлюють ключ під час обміну повідомленнями [1] [3]. При передачі першого повідомлення одна зі сторін (наприклад, сторона A) шифрує повідомлення за допомогою функції шифрування з ключем. вибирає випадкове число і передає B пару значень. Для шифрування наступного повідомлення використовується ключ. Надалі при передачі кожного повідомлення A змінює число. а B змінює число. і ключ оновлюється.
На практиці повідомлення доходять не миттєво, тому після відправки повідомлення від A до B і поновлення ключа на стороні A, A все ще може отримати повідомлення від B, зашифроване старим ключем. Учасник A може бути впевнений в тому, що B оновив ключ, тільки тоді, коли отримає від B повідомлення, зашифроване новим ключем. Тому A зберігає достатню кількість старих ключів, щоб мати можливість розшифрувати всі повідомлення, які ще не дійшли. Для того, щоб ключі все ж оновлювалися досить часто, сторона, у якої немає повідомлень для відправки, час від часу передає порожні повідомлення [1].
аутентифікація ключів
Аутентифікація кожного ефемерних ключів, за винятком. здійснюється разом з аутентифікацією повідомлень [1]. Для аутентифікації ключа використовуються довготривалі ключі. У першій версії OTR використовувалася небезпечна схема аутентифікації, яка була згодом змінена [3].
Оригінальна версія протоколу
У першій версії протоколу OTR для аутентифікації ключа сторони підписують відповідні повідомлення [1]. Також в цих повідомленнях сторони передають один одному свої відкриті ключі, як показано на схему нижче.
Тут і - цифровий підпис, і - відкриті ключі сторін A і B відповідно.
Дана версія протоколу містить уразливість [2] [3]. Сторона E може виконати аутентифікацію одночасно зі сторонами A і B, при цьому видавши себе однією із сторін (наприклад, B) за іншу сторону (наприклад, A), як показано далі.
Більш безпечні протоколи, такі як SKEME. розглядалися при реалізації першої версії протоколу OTR, але замість цього був реалізований власний протокол [1].
Друга версія протоколу
Варіант протоколу SIGMA, званий SIGMA-R, працює наступним чином [2].
Тут A і B - ідентифікатори, і - цифрові підписи, і - відкриті ключі сторін A і B відповідно, а H - криптографічний хеш-функція.
аутентифікація повідомлень
На відміну від таких систем як PGP, OTR не використовує цифрові підписи для аутентифікації повідомлень, так як вони не надають можливість отрицаемой аутентифікації. Замість цього використовується HMAC.
Для аутентифікації повідомлень використовується ключ K, отриманий хешированием ключа, використовуваного для шифрування повідомлення.
Коли сторона A передає повідомлення M іншій стороні B, разом з повідомленням вона передає обчислене за допомогою загального ключа значення HMAC (M, K). Сторона B, отримавши повідомлення, може також обчислити HMAC (M, K). Якщо воно збігається з отриманим значенням, то сторона B знає, що повідомлення було передано або стороною A, якою стороною B, але так як сторона B знає, що вона повідомлення не надсилала, то вона може бути впевнена, що повідомлення дійсно було відправлено стороною A . У той же час використання HMAC забезпечує зарепечують: навіть розкривши ключ K, B не може довести третій стороні, що повідомлення було відправлено стороною A. повідомлення також могло бути підроблено стороною B і будь-якою стороною, яка знає ключ K.
шифрування повідомлень
Для шифрування повідомлень використовується алгоритм AES в режимі лічильника [2]. Використання, побудованого таким чином, поточного шифру забезпечує спірне шифрування (англ. Malleable encryption). Це означає, що будь-який, хто перехопить повідомлення, зможе вибірково змінити будь-які біти в повідомленні. Зокрема, якщо повідомлення стало відомо, його можна змінити на будь-яке інше повідомлення такої ж довжини [1].
Спірне шифрування потрібно для забезпечення зарепечують шифрування [2]. Завдяки спірного шифрування учасники протоколу OTR можуть стверджувати, що будь-яка з переданих повідомлень було змінено третьою стороною.
Огляд безпеки сервісів миттєвих повідомлень
Open Source ліцензія
Опис табличних критеріїв
Наведена вище таблиця дає огляд клієнтам миттєвих повідомлень, які посилають зашифровані повідомлення. Розглянемо кілька критеріїв.
практичне завдання
Доступно для скачування додаток, яке демонструє роботу Socialist Millionaire Protocol (SMP), який використовується в протоколі Off-The-Record Messaging (OTR) для перевірки автентичності протилежного боку, знаючи якийсь загальний секрет. Даний протокол дозволяє упевнитися в тому, що учасники знають якусь загальну інформацію (пароль, відповідь на питання відомий тільки їм) НЕ розголошуючи її безпосередньо.
Вихідний код демонстраційної програми: File: SMP.zip
Виконувані файли демонстраційної програми: File: SMP (.exe) .zip