Цифрова стеганографія програми та способи реалізації

Цифрова стеганографія

Можливість приховувати одні дані в інших може дозволити зловмиснику потай вкрасти масу конфіденційної інформації.

  • Стеганографія, а не стенографія
  • Стеганографія: Трохи теорії
  • Стеганографія на практиці
  • Програми для стеганографії
  • ImageSpyer G2
  • StegoTC G2 TC
  • RedJPEG
  • DarkCryptTC ​​та Проект «Зоря»
  • Стеганографія своїми руками
  • Проблема приховування даних хвилює людство з давніх часів. Для захисту інформації зазвичай використовуються шифри. Надійність їх може бути різною, але до того моменту, коли ворогові все ж таки вдасться його зламати, інформація буде вже старою.

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

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

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

    Стеганографія, а не стенографія

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

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

    Стеганографія: Трохи теорії

    Насамперед пропоную розглянути основні алгоритми, які використовуються для стеганографії.

    Розглянемо невеликий приклад. Допустимо, є 8-бітове зображення в градаціях сірого. 00h (00000000Ь) позначає чорний колір, FFh (11111111Ь) - білий. Усього є 256 градацій ( ). Також припустимо, що повідомлення складається з 1 байти - наприклад, 01101011Ь. При використанні двох молодших біт в описах пікселів нам знадобиться 4 пікселі. Допустимо, вони чорного кольору. Тоді пікселі, що містять прихованеповідомлення, виглядатимуть наступним чином: 00000001 00000010 00000010 00000011. Тоді колір пікселів зміниться: першого – на 1/255, другого та третього – на 2/255 та четвертого – на 3/255. Такі градації, мало того, що непомітні для людини можуть взагалі не відобразитися при використанні низькоякісних пристроїв виведення.

    стеганографія
    Цифрова стеганографія

    Варто зазначити, що методи LSB є нестійкими до різного роду шуму. Наприклад, якщо на переданий контент накладаються будь-які «сміттєві» біти, це спотворює як вихідний контент, так і (що для нас особливо важливо) приховане повідомлення. Іноді воно навіть стає нечитаним. Аналогічна методика використовується і інших форматів.

    І третій метод – використання особливостей форматів файлів. Наприклад, це може бути запис інформації метадані, використовувані даним форматом файлу, або різні інші, не використовувані зарезервовані поля. Наприклад, це може бути документ Microsoft Word, всередині якого буде схована інформація, що ніяк не відображається під час відкриття цього документа.

    Аудіо стеганографія

    Ще один спосіб приховування інформації застосовується тільки до аудіофайлів - це луна-метод. Він використовує нерівномірні проміжки між ехо-сигналами для кодування послідовності значень. У випадку можливе створення умов, у яких дані сигнали будуть непомітні для людського сприйняття. Ехо-сигнал характеризується трьома параметрами: початковою амплітудою, ступенем згасання та затримкою. При досягненні якогось порога між сигналом та луною вони змішуються. У цій точці людське вухо не може вже відрізнити ці два сигнали. Для позначення логічного нуля та одиниці використовується дві різні затримки. Вони обидві повинні бути меншими, ніж порігчутливості вуха слухача до одержуваного луни.

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

    Інший варіант використання стеганографії в аудіофайлі - фазове кодування (phase coding). Відбувається заміна вихідного звукового елемента на відносну фазу, яка є секретним повідомленням. Фаза підряд елементів, що йдуть, повинна бути додана таким чином, щоб зберегти відносну фазу між вихідними елементами, в іншому випадку виникне спотворення, помітне для людського вуха.

    На сьогоднішній день фазове кодування є одним із найефективніших методів приховування інформації.

    Стеганографія на практиці

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

    Програми для стеганографії

    Як файл для зберігання даних я використовував зображення 1680х1050, збережене у різних форматах: ВМР, PNG, JPEG. Документом, що приховується, виступав текстовий файл розміром близько 40 Кб. Всі описані програми впоралися з завданням: текстовий файл був успішно збережений і потім витягнутий з вихідного файлу. При цьому скільки помітних спотворень картинки виявлено не було. Подані далі утиліти можна завантажити із сайту.

    Автором усіх розглянутих у цьому огляді програм є Олександр М'ясников.

    ImageSpyer G2

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

    цифрова
    ImageSpyer G2

    Утиліта сумісна з Windows 8. Як вихідні графічні файли можуть використовуватися формати ВМР, JPEG, WMF, EMF, TIFF.

    Завантажити безкоштовно ImageSpyer G2, ви можете за цим посиланням.

    StegoTC G2 TC

    Стеганографічний архіваторний плагін (wcx) для Total Comander дозволяє приховувати дані в будь-якому зображенні, при цьому підтримуються формати ВМР, TIFF та PNG.

    Скачати безкоштовно StegoTC G2, ви можете за цим посиланням.

    способи
    RedJPEG

    Професійна розширена версія RedJPEG ХТ доповнена маскуванням факту впровадження та посиленою процедурою ініціалізації потокового шифру на основі характеристик зображення. Включено х86 та х86-64 зборки.

    Також є RedJPEG ХТ for ТС WCX плагін Total Comanderг, що володіє аналогічним функціоналом.

    Завантажити безкоштовно RedJPEG, ви можете за цим посиланням.

    DarkCryptTC ​​та Проект «Зоря»

    Цю програму можна назвати найбільш потужним стеганографічним рішенням. Вона підтримує більше сотні різних симетричних та асиметричних криптоалгоритмів. Включає підтримку власної системи плагінів, призначеної для блокових шифрів (BlockAPI), текстову, аудіо та графічну стеганографію (включаючи реальну стеганографію JPEG), потужний генератор паролів та систему знищення інформації та ключів.

    стеганографія
    DarkCryptTC ​​та Проект «Зоря»

    Список форматів, що підтримуються, справді вражає: *.txt, *.html, *.xml, *.docx, *. odt, *.bmp, *jpg, *.tiff, *.png, *.jp2, *.psd, tga, *.mng, *.wav, *.ехе, *.dll.

    Набір програм для стеганографії не дуже великий, але цілком достатній для того, щоб ефективно приховувати інформацію у файлах різних форматів.

    Завантажити безкоштовно DarkCryptTC, ви можете за цим посиланням.

    Також, на нашому сайті представлені інші матеріали щодо Стеганографії. Для пошуку всіх програм та книг, зробіть пошук за словом «Стеганографія»

    Стеганографія своїми руками

    Для тих, хто добре знайомий з програмуванням, зокрема, з Visual Studio і C#, можу порекомендувати також досить цікавий сайт, в якому можна знайти вихідні тексти стеганографічних утиліт для різних форматів даних: для роботи з графічними форматами та приховування інформації, наприклад , у ZIP-архівах. Загальний принцип такого перетворення полягає у використанні заголовків файлів, що архівуються. Фрагмент вихідного коду для роботи з ZIP-архівами виглядає так:

    private void ZipFiles(string destinationFileName, ↵ string password) FileStream outputFileStream = ↵ new FileStream(destinationFileName, ↵ FileMode.Create); ZipOutputStream zipStream = ↵ new ZipOutputStream(outputFileStream); bool isCrypted = false; if (password != null && password.Length > 0) < //encrypt the zip file, if password is given zipStream.Password = password; isCrypted = true; > foreach(ListViewItem viewItem in lvAll.Items) inputStream = новий FileStream(viewItem.Text, ↵ FileMode.Open); zipEntry = новий ICSharpCode.SharpZipLib.Zip.ZipEntry( ↵ Path.GetFileName(viewItem.Text)); zipEntry.IsVisible = viewItem.Checked; zipEntry.IsCrypted = isCrypted; zipEntry.CompressionMethod = ↵ CompressionMethod.Deflated; zipStream.PutNextEntry(zipEntry); CopyStream(inputStream, zipStream); inputStream.Close(); zipStream.CloseEntry(); > zipStream.Finish(); zipStream.Close(); >

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