Задача: требуется скрыть сам факт передачи важных данных по открытым каналам связи.
Решение: несколько стеганографических утилит, доступных по лицензии GNU GPL и имеющихся в Debian, помогут решить проблему.
Дистрибутив Дебиан - просто энциклопедия самых разнообразных и чрезвычайно полезных утилит манипулирования данными. А уж программ сокрытия данных в нём просто огромное количество. Вот одна из них - небольшая, но весьма навороченная утилита steghide для стеганографического внедрения данных в рисунки или звуковые файлы.
Стеганография - в переводе с греческого дословно означает «тайнопись». Это наука о скрытой передаче информации путём сохранения в тайне самого факта передачи. В отличие от криптографии, которая скрывает содержимое секретного сообщения, стеганография скрывает само его существование.
О программе steghide и пойдёт речь далее.
Установка и работа
Для того, чтобы поставить все стеганографические утилиты, что есть в Дебиан, мне потребовалось 4Мб и несколько секунд ожидания. При помощи друга всех дебианщиков, команды apt-get install, было установлено:outguess - Universal Steganographic tool
Чего с лихвой хватит для любых параноидально одержимых приватностью своих данных граждан.
stegdetect - Detect and extract steganography messages inside JPEG
steghide - A steganography hiding tool
snowdrop - plain text watermarking and watermark recovery
Сокрытие данных
Хотелось бы отметить чрезвычайно подробный и толковый мануал steghide - увлекательнейшее чтиво, где подробно расписываются параметры и рассказывается вкратце, как программа работает и какие алгоритмы использует.
Вдоволь насладившись чтением, приступаем к непосредственно скрыванию своих сокровенных данных в какой-нибудь безобидный рисунок. Например, такой:
Когда я оформлял трудовой контракт, меня попросили написать свою краткую автобиографию - чем не конфиденциальные данные? Файл сохранился, вот его и внедрю в картинку - благо это простой текст, форматирования нет.
Для этого нужно набрать команду:$ steghide embed -ef autobio.txt -cf MacOS.jpg -sf MacOShide.jpg
То есть внедряем файл autobio.txt (ключ -ef, embed file) внутрь рисунка MacOS.jpg (ключ -cf, cover file), в результате чего имеем рисунок со внедрённым стего под названием MacOShide.jpg (ключ -sf, stego file). При этом прогамма спросит дважды пароль:Enter passphrase:
Всё готово, вот в этом рисунке весь мой жизненный путь за четверть века :-)
Re-Enter passphrase:
embedding "autobio.txt" in "MacOS.jpg"... done
writing stego file "MacOShide.jpg"... done
Для того, чтобы снова иметь возможность прочесть скрытый текст, извлекаем его оттуда:$ steghide extract -sf MacOShide.jpg -xf autobio2.txt
То есть извлечь из стего-файла MacOShide.jpg скрытую информацию в файл autobio2.txt (ключ -xf, extract file). Утилита будет лаконична:Enter passphrase:
Готово, файл записан.
wrote extracted data to "autobio2.txt".
Небольшое исследование
Кто умеет читать маны, мог почерпнуть тоже, читая пример в коце man steghide. Но мне стало интересно, насколько изменился рисунок не визуально, а количественно. Для этого люди, занимающиеся обработкой изображений, традиционно применяют среднеквадратическое отклонение между двумя изображениями. Вооружившись исчерпывающий статьёй Финапа [1] и реализовав её в MATLAB, вычисляем разницу:>> kmvRMSandnorm('MacOS.jpg', 'MacOShide.jpg')
Да, ну разумеется, такую разницу в изображении мы не увидим, даже если будем пристально вглядываться: всего отличие всего лишь на 0.32%! Отличия между изображениями можно увидеть, не сильно напрягаясь, где-то при 3-5%.
ans =
0.0032
Ну и разумеется, что контрольная сумма файла изменилась:$ md5sum MacOS.jpg
Так что изменения, конечно, есть, но очень небольшие - на глаз не заметить, так что можно смело переправлять личную информацию по электронной почте, даже если её просматривает злобный админ.
da6d7d25d5560fb22eb9d2f6ca09417f MacOS.jpg
$ md5sum MacOShide.jpg
87a02d9714ed43f49d2aeb37c4e75d94 MacOShide.jpg
Литература
[1] Fienup, J. Invariant error metrics for image reconstruction, Applied Optics, 32, 1997, 36, 8352-57
[2] Стеганография. Прячем секреты Dru Lavigne
Шифрование в Linux: Стеганография
Подписаться на:
Комментарии к сообщению (Atom)
22 комментариев: |высказаться!| RSS-лента дискуссии.|
Интересненько! Дедушка Ленин был бы рад, а то все молоком да на полях...
Надо будет поэкспериментировать с размерами исходных jpg и txt на предмет сколько текста можно впихнуть в картинку. И что будет если jpg с текстом пересохранить, например, gimp'ом?
2 Анонимный пишет...
Надо будет поэкспериментировать с размерами исходных jpg и txt на предмет сколько текста можно впихнуть в картинку.
По идее, чем больше впихнуть в картинку текста, тем заметнее отличие. Но я больше не пробовал...
И что будет если jpg с текстом пересохранить, например, gimp'ом?
Если в ней ничего не менять - по идее, ничего и не произойдёт. Но если сохранить с другим типом сжатия - должно перестать восстанавливаться. Спасибо за идею - надо будет попробовать.
И что будет если jpg с текстом пересохранить, например, gimp'ом?
IMHO, при каждом сохранении jpg-а происходит пересчет, так что скорее всего данные будут потеряны.
а как же ключи шифрования?
и вообще-то, логично было бы указать исходные размеры файлов (графического и текстового) и конечного!
poooch
Статья как всегда интересная. Потешу свою паранойю :)
Очень интересно, спасибо. А если встраивать сообщение в звуковой файл?
Тут спрашивали про изменение размера файлов. Вот пример:
-rw-r--r-- 1 nik nik 88K 2007-05-29 19:37 12hide.jpg
-r--r--r-- 1 nik nik 83K 2007-05-29 19:35 12.jpg
-rw-r--r-- 1 nik nik 59K 2007-05-29 19:39 12out.jpg
12.jpg оригинальный файл, файл 12hide.jpg содержащий послание от steghide подрос на 5 килобайт, а вот 12out.jpg, содержащий то же самое послание но внедренное при помощи outguess уменьшился в размере на 24 килобайта, то есть почти на треть.
Да, ни одно внедрение не было обнаружено программой stegdetect.
Простейшую тулзу писал в универе...текст запихивала в обычный HTML =)
И текста не было видно даже в исходнике - всё дело в волшебных пробелах =)
Кстати не думал об этом. Вернее пару раз мелькала мысль посмотреть, как это работает, но какая-то она вялая была ;)
А ведь я админ. И именно почтовый :)
Все, спасибки за наводку. После мелкософтового семинара поковыряю :)
...
Стоп. Не, не поковыряю. После отпуска поковыряю ;)
2 Дмитрий пишет...
А если встраивать сообщение в звуковой файл?
Можно, только не этой программой :-) Но вообще такие системы есть.
2 Nikolay пишет...
Да, ни одно внедрение не было обнаружено программой stegdetect.
Обнаруживается, только stegdetect нужно поставить дополнительный параметр --с-пристрастием :-))
О наличии стеганограммы оно сообщит - жаль, выудить не может. Почтовым админам, отписывавшимся в комментариях, на заметку ;-)
2 pento пишет...
Простейшую тулзу писал в универе...текст запихивала в обычный HTML
Есть тулзы и покруче - одна из них есть в Дебиане и называется snowdrop. Принцип, насколько я могу понять, тот же. Только с кириллицей не дружит.
Спасибо за отзывы. Планируются ещё несколько постов по сокрытию данных. И про криптографию, конечно, тоже.
Сейчас переполз на Этч и посты будут уже в духе современного состояния софта. Старые посты тоже буду править - вот только жара немного спадёт...
Это что ещё за опция? Я безуспешно пробовал -t o использовать для стеганограммы от outguess, например.
ЗА всю стеганографию не скажу, но по поводу большого количества реализаций недавно было серьезное исследование, в результате которого была выработана четкая методика выявления картинок с текстом.
некоторые картинки можно распаковывать RARом... и получать различные файлы
Если отправлять фото с цифрового фотоаппарата, то лучше всего, чтобы размер фото остался исходным, т.к. фотоаппараты клепают фото одинакового размера. Или я не прав?
В который раз убеждаюсь - насколько хорош Дебиан. Спасибо за статью. Очень интересно.
Да, так вот и знакомимся с софтом, который есть в этом дистре: то в журнале вычитаешь про интересную прогу, то в Инете че-нить найдешь... глядь, а это есть в твоем репозитории. Класс!
Непонятно, тока как могут лоровцы говорить, мол "эта статья - Дешёвая пропаганда Debian'а?" и тому подобное.. :)
Сорри за оффт.
Кошмар, на ЛОР протащили... За что!? :-)
2 Nikolay пишет...
Это что ещё за опция? Я безуспешно пробовал -t o использовать для стеганограммы от outguess, например.
Оно стеганограмму определяет, но не может её выудить. Жаль. Надо этчевскую версию поставить и поглядеть.
2 GQ пишет...
ЗА всю стеганографию не скажу, но по поводу большого количества реализаций недавно было серьезное исследование, в результате которого была выработана четкая методика выявления картинок с текстом.
Любопытно. Вот бы ссылочку кинуть. :-)
2 Анонимный пишет...
В который раз убеждаюсь - насколько хорош Дебиан.
Он не хорош, он "просто работает".
Да, так вот и знакомимся с софтом, который есть в этом дистре: то в журнале вычитаешь про интересную прогу, то в Инете че-нить найдешь... глядь, а это есть в твоем репозитории. Класс!
Именно. Я вот когда прочитал, кто написал foremost - чуть в обморок не упал.
Непонятно, тока как могут лоровцы говорить, мол "эта статья - Дешёвая пропаганда Debian'а?"
Ананимусы на ЛОРе зажигают как всегда. Только сегодня узнал с утра - подумал, что ещё сплю. Оказалось хуже :-)
А результат? хочется увидеть насколько картинка модифицируется, или боитесь за потерю персональных данных? :)
2 axet пишет...
А результат?
Точно такая же картинка на вид. Я ж писал про среднеквадратическое отклонение - ничем его не разглядеть.
боитесь за потерю персональных данных? :)
Именно: у ЛОРовских криптоаналитиков длинные руки :-)
Да надо заливать текст в картинки BMP - там попиксильная информация, а значит, если к примеру, менять один-два бита (лучше младшие) в каждом пикселе (его цвете), то тут никакя прога не вычислит наличие стенограммы - кто его знает, мож исходный файл в фотошопе на цвет подкорректировали.. и визуально такое изменение не определишь, а потом его можно сжать просто заархивировав, размер получится почти как у jpg'а при хорошеим сжатии.
Ногами не пинать плизик :)
А что есть брать rnd-rbg картинку (каждый пиксель случаен) и налеплять на нее данные в base64?
p.s. в свое время почти так со старой работы вынес (правда на ~5 листках по 3 копии) вынес смарт-ключ от их системы но там уже известная картинка (ну блин... просто мне его не давали домой а туда надобыло часто бегать работать)
Интересная мысль про потерю данных при сжатии картинки. Можно все исходящие пикчерсы, прикрепленные к письмам, пережимать... Как один из методов борьбы :)
У меня после внедрения сообщения в файл размер стего-файла оказался меньше исходного. Интересный эффект. Думаю это результат слишком короткого сообщения (всего одна строка).
Отправить комментарий