This page is an archived copy on Gagin.ru personal site



3Internet --- ежемесячное приложение к сети
АрхивРеклама в журналеКнига отзывов
SearchВыходные данныеОбратная связь



Технология



Стеганозавр,
или Тайнопись на компьютере


Максим ТИГУЛЕВ
makst@uc.ru

Греки, Ленин и стеганография

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

"КОМПАНИЯ "ЛЮЦИФЕР" ИСПОЛЬЗУЕТ ЕДКИЙ НАТР, ТЯЖЕЛЫЕ ГРУЗИЛА, ОСТРОГУ ТРЕХЗУБУЮ, ОБВЕТШАЛЫЙ ВАТНИК".

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

Стеганография известна еще со времен Геродота. В Древней Греции послания писались острыми палочками на дощечках, покрытых воском. В одной из историй Демерат хотел послать в Спарту сообщение об угрозе нападения Ксерксов. Тогда он соскоблил воск с дощечки, написал послание непосредственно на дереве, затем вновь покрыл ее воском.

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

К стеганографии также относится написание текстов невидимыми чернилами, проявляющимися при нагревании. Помните дедушку Ленина, который в тюрьме писал статьи в "Искру" молоком между строк книги? Еще "чернильница" у него была из хлеба, и он ее быстро съедал, когда надзиратель подходил к двери камеры. Прямо детективная была история! В качестве чернил также могли использоваться соки, уксус и даже моча (а запах!). По мере совершенствования техники обнаружения тайнописи появились и специальные химические соединения. Но это было до компьютеров.

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

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


Информация:

Программа: S-Tools (Steganography Tools).

Статус: freeware (бесплатная программа)

Операционная система: Windows 95

Автор: Andrew Brown

Размер: 270 кб

URL: ftp://ftp.clark.net/pub/phoenix/steg/s-tools4.zip
ftp://ftp.bogus.net/pub/mirrors/ftp.giga.or.at/stego/s-tools4.zip

Программа: JSTEG

Статус: freeware (бесплатная программа)

Операционная система: DOS

Автор: Derek Upham

Размер: 472 кб

URL: www.rit.edu/~pdw5973/files/jsteg.zip


Игрушка с сильной криптографией

Picture 1
Рисунок 1.
Сначала поговорим о приложении S-tools (Steganography Tools). Оно прячет информацию в графических файлах форматов BMP и GIF, а также в звуковых файлах формата WAV. Внешне работа с программой выглядит так. После распаковки архива запускаем файл s-tools.exe, затем Windows Explorer (Проводник). Последний понадобится, так как S-tools использует технологию drag and drop, соответственно окна не должны полностью перекрываться. Перетаскиваем мышью файл в окно программы S-tools, он отображается в окне либо как есть (для картинки), либо в виде линии, изображающей уровни сигнала (для звука). На рисунке в качестве примера взят любимый звук Microsoft (Copyright Brian Eno) [рис.1]. В правом нижнем углу окна S-tools появится информация о размере данных, которые можно спрятать в этом файле. Перетаскиваем в окно с картинкой либо уровнем сигнала любой файл, предназначенный для скрытия, размером не более указанного. После проверки размера данных программа запросит пароль, набрав который можно будет восстановить информацию. Затем начнется скрытие, время которого зависит от размера данных (наблюдать за процессом можно в окне Action). Когда все будет готово, появится окно Hidden data [рис.2]. Сохранить результат можно, щелкнув в окне правой кнопкой мыши и выбрав пункт "Save as...", введя имя файла и нажав ОК. Для восстановления послания необходимо перетащить картинку либо звук в окно S-tools, щелкнуть на изображении правой кнопкой и выбрать пункт "Reveal...". Вас пропросят ввести пароль, после чего если спрятанные данные есть, то начнется их восстановление, за процессом которого можно наблюдать в окне Action, либо если данных нет, то ничего и не произойдет, не ждите.

Picture 2
Рисунок 2.
Очень хочется прокомментировать результаты экспериментов с графикой и звуком. При использовании 24-битной графики результат смотрится весьма эффектно: в картинку размером 640х480 я затолкал около 110 кб информации -- и видимых изменений не произошло! Работа с форматом GIF меня не вполне удовлетворила. Хотя при существенно меньших размерах файла в картинку помещается столько же информации, сколько и в предыдущем случае, 32 цвета смотрятся настолько убого, что еще неизвестно, что вызовет большее подозрение противника -- передача красивого и большого изображения или маленького и страшного, тем более, что применение режима True Color давно не экзотика, а повседневность. Кстати, в связи с этим возникла мысль: а не являются ли спамеры, отправляющие в группы новостей alt.binaries.] множество мелких картинок очень низкого качества, секретными агентами, обменивающимися информацией?

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

Но не тут то было. На помощь приходит комбинирование стеганографии с криптографией. S-tools работает следующим образом: скрываемые данные сначала сжимаются (степень сжатия можно программно регулировать из меню File/Properties), затем шифруются по алгоритму (IDEA, DES или MDC) со 128 битным ключом, полученным из введенного пароля, после чего распределяются по графическому или звуковому файлу в последовательности, определяемой генератором псевдослучайных чисел, начальное значение которого также связано с тем же паролем. (Ух! Ничего себе игрушечка, аж дух захватывает!)

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

Откуда есть пошла скрытопись

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

Пусть имеется число 180, в двоичном коде оно выглядит так: 10110100. Давайте спрячем его в последовательности из восьми байт, приведенной в первой колонке таблицы. Для этого заменим в двоичном представлении чисел последовательности (вторая колонка) младшие биты (выделены красным) битами нашего числа. Получим третью колонку таблицы, десятичное представление чисел которой запишем в четвертой колонке. [таб.1]

Таблица 1.
Исходные значения (десятичные) Двоичное представление Последовательность после замены Десятичные значения после замены
135 10000111 10000111 135
121 01111001 01111000 120
120 01111000 01111001 121
107 01101011 01101011 107
143 10001111 10001110 142
98 01100010 01100011 99
103 01100111 01100110 102
102 01100110 01100110 102

Как видно из полученного результата, изменение значений последовательности не превышает единицы. Если взять 24- битное кодирование цветов (для хранения каждого элемента используется три байта), то объем информации, который можно "запрятать" в картинку: (640х480х3)/8 = 115200 байт. Правда, объем самого изображения в формате BMP велик (921600 байт), что, по мнению автора программы, само по себе может привлечь внимание противника. Но, очевидно, сжимать изображение каким-либо методом, вносящим потери, нельзя, так как информация будет безвозвратно утеряна -- возможно лишь запаковать его архиватором. Такая же схема применяется и для звука. Для изображений формата GIF (число цветов в которых принципиально не может превышать 256) программа предлагает либо преобразовать его в 24-битное, либо уменьшить число цветов до 32. В последнем случае "размазывание" данных будет сделано по трем младшим битам каждого байта, но, как я уже говорил, качество 32-цветной картинки явно неудовлетворительное.

Вышеперечисленные недостатки не способствуют широкому применению этой программы, которая годится лишь для игры или для секретных спамеров. Кстати, хотите поиграть в шпионов? Зайдите на мою страницу www.uc.ru/~shelter/ и попробуйте прочесть послание, спрятанное в находящихся там картинках.

JPEG + STEG = JSTEG

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

Вот между этими стадиями и происходит вставка наших секретных данных. Образец программы для DOS, называемой JSTEG и реализующей этот алгоритм, можно достать по указанному выше адресу. В архиве находятся два исполнимых файла cjpeg.exe и djpeg.exe. Первый позволяет создать файл в формате JPG и вставить в него секретную информацию, второй -- распаковать файл и извлечь данные. В качестве исходного файла используется формат PPM (многие программы умеют сохранять в нем изображения -- например, Lview -- www.lview.com). Простейшая командная строка для запуска:

cjpeg.exe -steg file.txt img.ppm img.jpg

Здесь file.txt -- секретная информация, подлежащая запрятыванию -- файл может быть и не текстовым, img.ppm -- исходная картинка, img.jpg -- результат.

Для распаковки используется следующее "заклинание":

djpeg.exe -steg file.txt img.jpg img.ppm

Здесь file.txt -- файл, куда будет помещена секретная информация, вытащенная из картинки, img.jpg -- картинка с секретом, img.ppm -- распакованное изображение (его можно выбросить, если картинка вам не понравилась).

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

Если нельзя, но очень надо...

В заключение вопрос: а надо ли нам все это и насколько серьезно применение таких методов скрытия информации? Да, штука забавная, "размазать" по картинке несколько десятков килобайт данных, да чтобы их можно было восстановить, да чтобы картинка не портилась -- это интересно, причем в чем-то она перекликается с идеей цифровой подписи для документов или водяного знака для изображений (digital watermark). Однако же идея цифровых водяных знаков проработана гораздо лучше, они не исчезают даже при сканировании изображений (чего никак нельзя сказать про стеганографическую информацию) Практическое применение? С одной стороны, такая штука вроде как и не нужна. После появления программы PGP вести секретную переписку можно легко и непринужденно, не прибегая к экзотическому упрятыванию информации. К тому же нетрудно подсчитать, что полезных данных в приходящем мусоре (коим может считаться картинка-контейнер) содержится лишь 12%.

Однако, Указом президента Российской Федерации # 334 от 3 апреля 1995 г. запрещено применение криптографии в любом виде без лицензии ФАПСИ, то есть запрещается использовать даже ZIP с паролем, не говоря уже о более сильных средствах. Подробнее о юридических аспектах криптографии, а также о проблемах защиты личной информации в Сети и не только можно прочитать здесь: www.geocities.com/SiliconValley/Vista/6001/legal.htm.

Так что посмотрите, поразвлекайтесь, заходите в гости на www.uc.ru/~shelter/, посмотрите картинки, попробуйте прочитать послания, спрятанные в них, а потом выбросьте это из головы.



3 FAQСледующий материалКнига отзывов
К оглавлениюПредыдущий материалОбратная связь

Журнал "Интернет". Регистрационное свидетельство Госкомпечати РФ N. 016370 от 16.07.1997 г. Распространяется через сети розничной торговли, через компьютерные сети, а также путем подписки. Мнение редакции по тем или иным вопросам может не всегда совпадать с мнениями авторов. Редакция не несет ответственности за содержание рекламных материалов. Перепечтка или копирование запрещены, при цитировании ссылка на журнал "Интернет" обязательна.
Copyright © 1997-1998 Журнал "Internet"
Copyright © 1997-1998 Netskate
Netskate E-mail: imag@netskate.ru
Телефон: 245-45-84