Стеганография в xxi веке. цели. практическое применение. актуальность

Кодировки

В 1840-х годах, с изобретением телеграфа, появилась потребность однозначно и просто передавать человеческие символы нечеловеческими мерами — электрическими импульсами. Сэмюел Морзе придумал использовать для этого чередование коротких и длинных сигналов так, чтобы на том конце провода эти сигналы можно было однозначно соотнести с буквой или символом. Например, буква S кодировалась в его системе тремя короткими сигналами: , а буква O — тремя длинными: . Зная это, можно представить, как выглядит сигнал SOS: .

Азбука за многие годы претепевала разные модификации: добавлялись отдельные символы и целые алфавиты, изменялся порядок, но основная идея оставалась всё той же. А когда появились компьютеры, люди не стали придумывать ничего нового совсем: взяли морзянку — и просто заменили «точки» и «тире» на нули и единицы. Именно так появились первые кодировочные таблицы, ASCII у них и КОИ (код обмена информацией) у нас.

ASCII до сих пор используется во многих местах, например, в адресах сайтов, во многих простых компьютерных программах (особенно тех, что написаны на Си), не работающих с текстом, и сетевых протоколах за счёт того, что эта кодировка очень простая. Настолько простая, что её можно выучить наизусть:

Левые четыре столбца и самая верхняя строчка — это те самые ноли и единицы, которым соответствует символ на пересечении строки и столбцов.

DeEgger Embedder

DeEgger Embedder — еще одна маленькая программа для стеганографии. В ней реализован уже больший набор функций, но его использование требует установки .NET Framework 3.5. Помимо редко используемых сегодня картинок BMP, программа поддерживает в качестве контейнеров PNG, JPG, видеофайлы AVI и музыкальные MP3. Утилита ведет подробный лог своих действий, который отображается прямо в главном окне.

Делаем пасхальные яйца!

Кнопка запуска алгоритма называется Combine, а не Encrypt, что более точно отражает процесс внедрения файлов. Извлекаются скрываемые файлы (стегосообщения) из мультимедийных контейнеров нажатием единственной кнопки Extract. Никакой защиты пин-кодом здесь нет.

Комбайн и экстракт

Зато программа может обрабатывать несколько файлов сразу. Можно поместить несколько сообщений в один контейнер или одно в разные контейнеры.

Записываем несколько файлов в один контейнер

После обработки в DeEgger утилиты для сравнения изображений считают идентичными исходный и конечный файлы BMP. Реально же это пустой и заполненный контейнер в терминологии стеганографии.

Мнимая идентичность

Сделаем побайтное сравнение. Знакомая картина? Так же как и Anubis, утилита DeEgger Embedder дописала стегосообщение в конец файла-контейнера. В картинке user.bmp много однотонных областей, поэтому такой аппендикс выглядит особенно заметно.

Те же пасхальные яйца, вид в коде

На первый взгляд, здесь нет явных указателей, по которым можно сделать поиск файлов, содержащих определенную строку. Однако приглядимся внимательнее. Для этого сделаем еще один контейнер с другим сообщением и сравним уже два заполненных контейнера между собой.

Находим указатель внедренного файла

Вот одинаковый участок в шестнадцатеричном виде: .

Как видишь, несмотря на поддержку большего числа форматов, DeEgger недалеко ушел от Anubis. Скрываемые файлы так же записываются в конец файла-контейнера и имеют характерный вид, по которому их легко обнаружить.

Контрмеры и обнаружение

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

В вычислениях обнаружение стеганографически закодированных пакетов называется стеганализом. Однако самый простой способ обнаружить измененные файлы — это сравнить их с известными оригиналами. Например, чтобы обнаружить информацию, перемещаемую через графику на веб-сайте, аналитик может поддерживать известные чистые копии материалов, а затем сравнивать их с текущим содержимым сайта. Различия, если носитель один и тот же, составляют полезную нагрузку. В общем, использование чрезвычайно высокой степени сжатия делает стеганографию трудной, но не невозможной. Ошибки сжатия позволяют скрыть данные, но высокое сжатие уменьшает объем данных, доступных для хранения полезной нагрузки, повышая плотность кодирования, что облегчает обнаружение (в крайних случаях, даже при случайном наблюдении).

Существует множество базовых тестов, которые могут быть выполнены для определения того, существует ли секретное сообщение. Этот процесс не связан с извлечением сообщения, это другой процесс и отдельный шаг. Самыми основными подходами стеганализа являются визуальные или звуковые атаки, структурные атаки и статистические атаки. Эти подходы пытаются обнаружить использованные стеганографические алгоритмы. Эти алгоритмы варьируются от простых до очень сложных, причем ранние алгоритмы гораздо легче обнаружить из-за присутствующих статистических аномалий. Размер скрытого сообщения является фактором, определяющим сложность его обнаружения. Общий размер объекта обложки также играет важную роль. Если объект-укрытие маленький, а сообщение большое, это может исказить статистику и упростить обнаружение. Более крупный объект обложки с небольшим сообщением снижает статистику и дает больше шансов остаться незамеченным.

Стеганализ, нацеленный на конкретный алгоритм, имеет гораздо больший успех, поскольку он может выявить оставленные аномалии. Это связано с тем, что анализ может выполнять целевой поиск для выявления известных тенденций, поскольку он знает о поведении, которое он обычно проявляет. При анализе изображения наименее значимые биты многих изображений на самом деле не случайны. Сенсор камеры, особенно сенсоры нижнего уровня, не самого лучшего качества и может вносить некоторые случайные биты. На это также может повлиять сжатие файла изображения. Секретные сообщения могут быть введены в наименее значимые биты изображения, а затем скрыты. Инструмент стеганографии можно использовать для маскировки секретного сообщения в наименее значимых битах, но он может ввести случайную область, которая слишком идеальна. Эта область идеальной рандомизации выделяется и может быть обнаружена путем сравнения младших значащих бит с младшими значащими битами на изображении, которое не было сжато.

Однако, как правило, существует множество методов, уметь скрывать сообщения в данных с помощью стеганографических методов. По определению, они не очевидны, когда пользователи используют стандартные приложения, но некоторые могут быть обнаружены специальными инструментами. Другие, однако, устойчивы к обнаружению — или, скорее, невозможно надежно отличить данные, содержащие скрытое сообщение, от данных, содержащих просто шум, — даже когда выполняется самый сложный анализ. Стеганография используется для сокрытия и проведения более эффективных кибератак, называемых Stegware. Термин Stegware впервые был введен в 2017 году для описания любой вредоносной операции с использованием стеганографии как средства скрытия атаки. Обнаружение стеганографии является сложной задачей и поэтому не является адекватной защитой. Следовательно, единственный способ нейтрализовать угрозу — это преобразовать данные таким образом, чтобы уничтожить все скрытые сообщения, и этот процесс называется Удаление угрозы содержимого.

RARJPEG

Скрывать одни файлы внутри других можно и безо всяких стеганографических утилит. Конечно, это будет не аккуратное «растворение» по алгоритму LSB, а простое слияние, однако у этого известного в узких кругах метода есть и свои преимущества. Во-первых, он доступен без дополнительных инструментов. Во-вторых, позволяет легко передать любой файл, загрузив его как графический на какой-нибудь сайт (например, хостинг картинок или, чаще, имиджборд).

Смысл метода в том, что графические файлы (в частности, JPEG) начинают интерпретироваться сразу с заголовка, в то время как архивы считываются только с метки начала архива. Сама метка может располагаться внутри файла где угодно, так как, помимо обычных архивов, есть многотомные и самораспаковывающиеся.

В качестве эксперимента упакуем все программы из сегодняшнего обзора в архив ZIP и добавим этот архив к файлу Wallpaper.jpg, создав новую картинку: Wallpaper-x.jpg. Просто запустим консоль Windows и напишем:

Дописываем ZIP к JPG

На выходе получится объединенный файл . Его можно просмотреть как картинку или же открыть любым архиватором, который поддерживает формат ZIP. Если изменить расширение файла на ZIP, то он откроется файловым менеджером как каталог. Можно даже обойтись без переименования, а сразу использовать архивный плагин через команду быстрой распаковки (например, {ALT}+{F9} в Total Commander). Все файлы из такой «картинки» будут извлечены без проблем.

Описанный трюк известен давно и работает также с некоторыми другими форматами файлов (как графических, так и архивов), однако наибольшую популярность получило сочетание RAR + JPEG.

Начало архива ZIP внутри картинки и имя первого архивного файла 

Из командной строки

Тулза Типы файлов Описание Сокрытие Извлечение
PNG Может использоваться
не только для сокрытия
данных, но и для водяных
знаков. Использует
RandomLSB — улучшенный
алгоритм LSB с записью
в Random Least Significant
Bit. Поддерживает шифрование.
Имеет также GUI.
openstego embed
-mf secret.txt -cf
cover.png -p
password -sf
stego.png
openstego extract
-sf openstego.png
-p abcd -xf
output.txt
PNG Работает не только с
классическим LSB. Имеет
гибкую настройку. Может
использоваться как
модуль Python. Самая
привлекательная
(как по мне).
stegano-lsb
hide —input cover.jpg
-f secret.txt -e
UTF-8 —output
stego.png
stegano-lsb reveal
-i stego.png -e UTF-8
-o output.txt
PNG, JPG Простенькая тулза.
Плохо справляется с
большим сообщением.
(Точнее вообще никак)
Поддерживает шифрование.
cloackedpixel hide
cover.jpg secret.txt
password
cloackedpixel extract
cover.jpg-stego.png
output.txt password
PNG, BMP Небольшая программа на
Python c читабельным кодом.
LSBSteg encode
-i cover.png -o
stego.png -f
secret.txt
LSBSteg decode
-i stego.png -o
output.txt

One encoding to rule them all

Выше мы говорили о том, что когда-то для каждого языка была отдельная кодировочная таблица. Одни и те же байты могли быть прочтены по-разному в зависимости от того, какая таблица была выбрана в программе. И если таблица у читателя не совпадала с таблицей у писателя, получалось плохо:

Муки выбора пытались переложить на компьютер, но автоопределение кодировки не всегда работало корректно, порождая порой ещё большие казусы.

Проблема, наконец, разрешилась, когда придумали кодировку «Юникод». В ней символы кодируются не одним байтом, а двумя, тремя или даже четыремя, что позволяет вместить в одну таблицу буквально все символы, известные человечеству:

Возможностей для стеганографии Юникод даёт столько, что их все не описать: ; цифры, похожие на цифры, но не совсем; ; похожие друг на друга буквы из разных алфавитов; эмодзи, ……

Anubis

Анубис — супергерой древних египтян. Человек-шакал, в честь которого спустя шесть тысяч лет назвали бесплатную программу. Ее первая и, к сожалению, последняя версия была написана в 2014 году на Java. Поэтому утилита получилась кросс-платформенной, но требующей установки JRE, а также (в случае с Windows 10) виртуальной машины DOS — NTVDM.

Принести Анубису Джаву!
Другие статьи в выпуске:

Xakep #215. Второй фактор

  • Содержание выпуска
  • Подписка на «Хакер»-60%

Основное окно программы выглядит максимально аскетично. Нажимаем Encrypt и в открывающейся вкладке указываем необходимые действия: какой файл поместить внутрь какого и где сохранить результат. Гарантированно работает только сокрытие текстовых файлов внутри картинок формата BMP. Несколько таких уже есть в Windows 10 — это иконки пользователей. Было бы занятно спрятать в user.bmp список паролей или еще какую-нибудь конфиденциальную инфу. Давно подмечено, что лучшие тайники стоят на видном месте.

Прячем TXT в BMP

Дополнительно можно защитить полученный файл пин-кодом — тогда он потребуется для обратного преобразования. Утилита некорректно обрабатывает строку с указанием места результирующего файла. Он может быть сохранен на уровень выше заданного или вообще в исходном каталоге.

Сравнение пустого и наполненного контейнера

Как видно из побайтного сравнения исходного файла BMP с содержащим скрытый текст, программа работает очень примитивно. Она просто дописывает данные в конец файла. Данные зашифрованы, но снабжены характерными указателями: , , . Простым поиском файлов, содержащих такие строки, легко найти все стегоконтейнеры. Такую утилиту можно использовать в качестве иллюстрации простейшего метода стеганографии, но для серьезных задач она совершенно не подходит.

Приложения

Использование в современных принтерах

Некоторые современные компьютерные принтеры используют стеганографию, в том числе цветные лазерные принтеры Hewlett-Packard и Xerox. Принтеры добавляют к каждой странице крошечные желтые точки. Едва заметные точки содержат закодированные серийные номера принтеров, а также отметки даты и времени.

Пример из современной практики

Чем больше сообщение обложки (в двоичных данных, количество бит ) относительно скрытого сообщения, тем проще скрыть скрытое сообщение (аналогично, чем больше «стог сена», тем легче спрятать «иголку»). Поэтому цифровые изображения, содержащие много данных, иногда используются для сокрытия сообщений в Интернете и на других цифровых носителях связи. Неясно, насколько распространена такая практика.

Например, 24-битное растровое изображение использует 8 бит для представления каждого из трех значений цвета (красного, зеленого и синего) каждого пикселя. Один только синий цвет имеет 2 разных уровня интенсивности синего. Разница между 11111111 и 11111110 в значении интенсивности синего цвета, вероятно, не будет обнаружена человеческим глазом. Следовательно, младший значащий бит можно более или менее необнаружимо использовать для чего-то еще, кроме информации о цвете. Если это повторить также для зеленого и красного элементов каждого пикселя, можно закодировать одну букву текста ASCII для каждых трех пикселей.

. Говоря несколько более формально, цель для того, чтобы сделать стеганографическое кодирование трудным для, является обеспечением того, чтобы обнаружение несущей (исходный сигнал) из-за введения полезной нагрузки (сигнала для скрытого внедрения) визуально (и в идеале статистически) были незначительны. Эти изменения неотличимы от минимального уровня шума несущей. Все носители могут быть носителями, но лучше подходят носители с большим объемом избыточной или сжимаемой информации.

С точки зрения зрения теоретической информации, это означает, что канал должен иметь большую емкость, чем «поверхностный» сигнал. требуется. Должна быть избыточность. Для цифрового изображения это может быть шум от изображения элемента; для цифрового звука это может быть шум от техники записи или усилителя оборудования. Как правило, электроника, оцифровывающая аналоговый сигнал, страдает от нескольких источников шума, таких как тепловой шум, фликкер-шум и дробовой шум.. Шум обеспечивает разнообразие захваченной цифровой информации, чтобы его можно было использовать в качестве шумового прикрытия для скрытых данных. Кроме того, схемы сжатия с потерями (такие как JPEG ) всегда вносят некоторую ошибку в распакованные данные, и это также можно использовать для стеганографического использования.

Хотя стеганография и цифровые водяные знаки кажутся похожими, это не так. В стеганографии скрытое сообщение должно оставаться нетронутым, пока не достигнет места назначения. Стеганография может проверить свое сообщение для цифровых водяных знаков, в котором сообщается, что его источником можно было отследить или просто представителем (Coded Anti-Piracy ) или даже даже просто для идентификации изображения (как в созвездии EURion ). В таком случае метод сокрытия сообщения должен быть надежным, чтобы предотвратить подделку. Однако для цифровых водяных знаков иногда требуется хрупкий водяной знак, который можно легко изменить, чтобы проверить, не было ли подделано изображение. Это различие между стеганографией и цифровыми водяными знаками.

Предполагаемое использование спецслужбами

В 2010 году Федеральное бюро расследований заявило, что российская служба внешней разведки использует специализированное программное обеспечение для стеганографии для встраивания зашифрованные текстовые сообщениями внутри файлов изображений для связи с «нелегальными агентами» (агентами без дипломатического прикрытия), находящимися за границей.

Онлайн-вызов

Головоломки, представленные Cicada 3301, включают стеганографию с криптографией и другими методами решения с 2012 года. Со временем появляется все больше побуждений, включая стеганографию. присутствовал в играх альтернативной реальности.

Сообщения включают стеганографию и другие методы решения с 1981 года.

От фараонов до наших дней

Если считать, что история развивается по спирали, то современная жизнь, похоже, вышла на тот же виток, что и Древний Египет. Люди снова поклоняются кошкам и хранят их изображения повсюду. Параллельно возрождается культ тайного знания — одни прячут информацию, другие ищут способы получить ее. Так что идеальный способ скрыть секретные данные — это смешать их с тривиальным контентом вроде фотографий кошек.

По одной из версий, криптография зародилась как раз в Древнем Египте. Ее дочка — стеганография, или «тайнопись», появилась уже ближе к расцвету Римской империи. Отдельные приемы тайного письма практиковались еще до нашей эры, но в самостоятельную прикладную дисциплину стеганография оформилась лишь к XVI веку.

Современная стеганография — цифровая и компьютерная. Последнюю можно разделить на три больших направления. Первое — это собственно тайнопись, или методы сокрытия одних файлов (которые принято называть сообщением) внутри других («контейнера»). После заполнения сообщением контейнер внешне меняется незаметно и полностью сохраняет свою функциональность.

Второе направление изучает методы добавления к сообщению скрытых или стеганографических меток (stegomarks). Это незаметные без специальной обработки метки, идентичные для всех файлов одного человека или устройства. Например, такие стегометки записываются в цифровые фотографии для того, чтобы можно было доказать их авторство. Крэкеры иногда оставляют стегометки в лицензионных ключах. Они зашиты на уровне алгоритма генерации, а потому сохраняются при попытке изменить интерфейс кейгена и выдать его за свой.

Использует ли твой любимый онлайновый сервис стегометки? Это легко проверить. Достаточно купить два экземпляра одного и того же произведения с разных аккаунтов и сделать побайтное сравнение файлов. Разница между ними и покажет скрытые метки. Если же файлы скачались идентичные (и их хеши полностью совпадают), то стегометок внутри нет.

О каждом из этих направлений написано множество книг и статей, но до сих пор нет единой терминологии. Одни авторы дробят перечисленные ветви на десятки более мелких, а другие не видят принципиальной разницы и между крупными. Для кого-то есть тонкая грань между скрытым хранением и скрытой передачей данных, а для других это лишь частности.

Не будем вдаваться в полемику, гораздо интереснее попробовать стеганографию в деле. Для начала рассмотрим поближе ее основное применение — сокрытие данных. Из полусотни утилит для маскировки одних файлов внутри других мы отобрали всего семь. В обзор вошли только те, которые гарантированно работают в Windows 10.

Для теста мы возьмем картинку с обоями для рабочего стола. За этой растительностью можно уместить много интересного.

Стеганография в теории

Прежде всего предлагаю рассмотреть основные алгоритмы, которые используются для стеганографии.

Методы типа LSB (Least Significiant Bit, наименьший значащий бит) и аналогичные. Их суть заключается в замене последних значащих битов в контейнере (изображения, аудио или видеозаписи) на биты скрываемого сообщения. Возьмем в качестве примера графический файл. Наглядно это выглядит следующим образом: мы меняем младшие биты в коде цвета пикселя на картинке. Если считать, что код цвета имеет 32-битное значение, то замена 0 на 1 или наоборот не приведет к сколько-нибудь существенному искажению картинки, ощутимому для органов восприятия человека. А между тем в этих битах для большой картинки можно что-то спрятать.

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

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

Стоит отметить, что методы LSB являются неустойчивыми к разного рода «шуму»

Например, в случае если на передаваемый контент накладываются какие-либо «мусорные» биты, это искажает как исходный контент, так и (что для нас особенно важно) скрытое сообщение. Иногда оно даже становится нечитаемым

Аналогичная методика используется и для других форматов.

Еще один метод заключается в так называемом впаивании скрытой информации. В данном случае происходит наложение скрываемого изображения (звука, иногда текста) поверх оригинала. Простейший пример — надпись белым цветом на белом же фоне в PDF-документе. Злоумышленники обычно не используют данный метод по причине относительной простоты обнаружения автоматическими методами. Однако данный метод зачастую применяется при создании «водяных знаков» для защиты авторства контента. В этом случае данные знаки, как правило, не скрываются.

И третий метод — использование особенностей форматов файлов. К примеру, это может быть запись информации в метаданные, используемые данным форматом файла, или в различные другие, не используемые зарезервированные поля. Например, это может быть документ Microsoft Word, внутри которого будет спрятана информация, никак не отображаемая при открытии данного документа.

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

Еще один способ сокрытия информации применим только к аудиофайлам — это эхо-метод. Он использует неравномерные промежутки между эхо-сигналами для кодирования последовательности значений. В общем случае возможно создание условий, при которых данные сигналы будут незаметны для человеческого восприятия. Эхо-сигнал характеризуется тремя параметрами: начальной амплитудой, степенью затухания и задержкой. При достижении некоего порога между сигналом и эхом они смешиваются. В этой точке человеческое ухо не может уже отличить эти два сигнала. Для обозначения логического нуля и единицы используется две различных задержки. Они обе должны быть меньше, чем порог чувствительности уха слушателя к получаемому эху.

Однако на практике этот метод тоже не слишком надежен, так как не всегда можно точно определить, когда был передан ноль, а когда единица, и в результате велика вероятность искажения скрытых данных.

Другой вариант использования стеганографии в аудиофайлах — фазовое кодирование (phase coding). Происходит замена исходного звукового элемента на относительную фазу, которая и является секретным сообщением. Фаза подряд идущих элементов должна быть добавлена таким образом, чтобы сохранить относительную фазу между исходными элементами, в противном случае возникнет искажение, заметное для человеческого уха.

На сегодняшний день фазовое кодирование является одним из самых эффективных методов скрытия информации.

Текст богатый и бедный

Текстовый файл — это просто набор байтов. Когда вы открываете его, компьютер читает эти байты, поглядывая в кодировочную таблицу, и отображает соответствующие символы. В нём не хранится никаких сведений о том, каким шрифтом и цветом эти символы будут отображаться, он не может хранить изображения. Посмотрите на «Блокнот» в Windows:

Этот формат называется plain text (англ. «простой текст»), он до неприличия прост и стар как мир, а ещё он открывается, редактируется и выглядит примерно одинаково буквально на любом компьютере. Более того, из определения простого текста можно сделать вывод, что любой файл — текстовый. И это правда, но об этом — в следующем параграфе.

Но просто текста часто бывает недостаточно. Чтобы подготовить, например, реферат, вы, скорее всего, воспользуетесь текстовым процессором вроде Word. Word дополняет простой текст дополнительной информацией, благодаря которой появляются стили и объекты вроде картинок и таблиц. Такой формат называется rich text (англ. «богатый текст») и мало чего общего имеет с обычными текстовыми файлами — «вордовские» документы не открыть без особой программы. Да и вообще, эти документы имеют больше общего с zip-архивами, чем с простым текстом.

Зачем?

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

Таким образом, картины Серова или сонаты Бетховена могут стать инструментом для передачи сообщений, из-за которых, как вам кажется, вы можете привлечь к себе ненужное внимание государства. Со стороны это будет выглядеть как обсуждение произведений искусства

И только вы знаете, что можно увидеть или услышать по ту сторону бит.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Работатека
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: