TCP стеганографія або як приховати передачу даних в інтернеті

TCP стеганографія або як приховати передачу даних в інтернеті

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

Насамперед потрібно визначити що таке стеганографія. Так ось, стеганографія — це наука про приховану передачу повідомлень. Тобто використовуючи її методи, сторони намагаються приховати. сам факт передачі. У цьому полягає відмінність цієї науки від криптографії, яка намагається зробити недоступним для прочитання змісту повідомлення. Варто зазначити, що професійне співтовариство криптографів досить зневажливо ставиться до стеганографії через близькість її ідеології до принципу «Security through obscurity» (не знаю як це правильно звучить російською мовою, щось на зразок «Безпека через незнання»). Цим принципом, наприклад, користуються компанії Skype Inc. - Вихідний код популярної дзвонилки закритий і ніхто до ладу не знає як саме здійснюється шифрування даних. Нещодавно, до речі, про це нарікали в NSA, про що відомий фахівець Брюс Шнайєр написав у себе у блозі.

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

Тут ми впритул підійшли до Transmission Control Protocol (TCP). Пояснювати всі його деталі, зрозуміло, немає сенсу — довго, нудно, ті кому треба й так знають. Коротко можна сказати, що TCP — це протокол транспортного рівня (тобто працює «над» IP і «під» протоколами рівня додатків, наприклад HTTP, FTP чи SMTP), який забезпечує надійну доставку даних від відправника до одержувача. Надійна доставка означає, що якщо якийсь пакет загубився або прийшов зі змінами, TCP подбає про те, щоб переслати цей пакет. Зазначимо, що під змінами в пакеті тут мається на увазі не навмисне спотворення даних, а помилки в передачі, що виникають фізично. Наприклад, поки пакет йшов мідними проводами пару біт змінили своє значення протилежне чи взагалі загубилися серед шуму (до речі для Ethernet значення Bit Error Rate зазвичай приймають рівним порядку 10-8). Втрата пакетів у дорозі також відносно часті явища в інтернеті. Відбуватися вона може, наприклад, через завантаженість маршрутизаторів, яка призводить до переповнення буферів і як наслідок відкидання всіх пакетів, що знову прибувають. Зазвичай частка втрачених пакетів становить близько 0.1%, а при значенні в пару відсотків TCP взагалі перестає нормально працювати - у користувача все моторошно гальмуватиме.

Таким чином ми бачимо, що пересилання (ретрансмісія) пакетів явище для TCP часте і загалом потрібне. Так чому б не використовувати його для потреб стеганографії при тому, що TCP, як уже зазначалося вище, використовується повсюдно (за різними оцінками на сьогоднішній день частка TCP в інтернеті досягає 80-95%). Суть запропонованого методу полягає в тому, щоб у повідомленні, що пересилається, відправляти не те, що було в первинному пакеті, а ті дані, які ми намагаємося приховати. При цьому виявити таку заміну не так просто. Адже треба знати куди дивитися — кількість одночасних TCP з'єднань, що проходять через провайдера, просто величезна. Якщо знати приблизний рівень ретрансмісії в мережі, то можна підлаштувати механізм стеганографічного пересилання так, що ваше з'єднання нічим не відрізнятиметься від інших.

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

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

Джерело: habr.com

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