Хотите дальше читать devby? 📝
Support us

Стеганография как способ скрытия информации

Оставить комментарий
Стеганография как способ скрытия информации
Лет восемь назад (был на втором курсе) мой научный руководитель предложил мне в качестве темы курсовой исследование и реализацию стеганографических методов. Тема тогда была намного более новая, чем сейчас. Как-то вспомнилось - решил написать заметку. Итак... Стеганография - это наука, изучающая способы скрытой передачи информации путем скрытия самого факта передачи. Наука - абсолютно не новая по своей идее, но с изобретением цифровых способов реализации алгоритмов, применяемых в ней, ее развитие вышло на существенно новый уровень. Ввиду серьезности возможных последствий результатов применения стеганографических методов в реальной жизни и наличия людей, жаждущих острых ощущений, сразу хочу написать disclaimer :) Автор не несет никакой ответственности за возможное (злонамеренное) использование каких бы то ни было методов стеганографии и их реализаций третьими лицами и рассматривает данный материал исключительно с образовательной и исследовательской точек зрения. Вся информация получена из открытых источников и собственных наблюдений и опытов. Как мы выяснили, стеганография преследует своей целью обеспечение сокрытия и защиты информации от несанкционированного доступа. Похожие цели ставит перед собой и криптография. Существенным отличием является то, что задача криптографии - предотвратить несанкционированный доступ к информации путем двустороннего применения математических алгоритмов к данным (шифрование). Основная задача стеганографии - именно скрытие факта наличия конфиденциальной информации. Сложность алгоритмов может быть разной и влияет (в случае конечного множества принимаемых значений из области определения) на время поиска решения, которое в идеале сводится к бесконечному. На практике, естественно, применяются ключи шифрования конечной длины, что подразумевает наличие конечного множества возможных вариантов для перебора или подбора значений... Это очень обширная тема. Целью статьи не является подробное освещение особенностей алгоритмов шифрования. Скажу только (в качестве примера), что на рубеже XXI века по не до конца подтвержденным данным китайские математики смогли доказать возможность уменьшения вариантов для перебора в алгоритме SHA-1 (на основе получения хэша) с примерно 80 порядка до 63, т.е. на 17(!) порядков сразу. SHA-1 считается очень стойким алгоритмом и применяется, опять-таки - по неподтвержденным данным, правительством США как один из основных алгоритмов шифрования... (информация из открытых источников) Также, на проходившей в конце апреля—начале мая конференции Eurocrypt 2009, была продемонстрирована серьезная системная уязвимость алгоритма SHA-1, способная скомпрометировать использующие его приложения. Незадолго до опубликования отчета на Eurocrypt Национальный институт стандартов США (NIST) распорядился к 2010 году прекратить использование SHA-1 в правительственных учреждениях. Не далее, как в ноябре 2008 года, Stéphane Manuel опубликовал наличие уязвимости, снижающей сложность до 57 порядков. А уже на Eurocrypt 2009 была продемонстрирована уязвимость с возможностью уменьшения количества вариантов "всего" до 52 порядков!. Для современных суперкомпьютеров это действительно практически пустяки, чтобы считать такой алгоритм надежным... Хотя еще совсем недавно он считался крайне надежным. Однако, я отвлекся. Вернемся к возможности применения стеганографии. Каким же образом можно скрыть сам факт наличия информации? Необходимо поместить ее в такой контейнер, который бы не вызвал подозрения... Однако любое размещение _дополнительной_ информации в какой-либо контейнер влечет за собой модификацию контейнера, что уже само по себе подозрительно. Однако, и данная задача нашла решение :) На сегодняшний день наиболее интересным вариантом, с точки зрения скрытия информации, является использование медиа-файлов как контейнеров. Возникает вопрос: а как это работает? Для ответа необходимо разобраться со структурой медиа-форматов. Основные - это графика, звук и видео... Начнем с графики. Известно, что изображения состоят из пикселей, каждый из которых описывается компонентами цвета (тот же RGB, например) и описанием канала. Каждый параметр обычно изменяется в пределах определенного диапазона. Самый простой формат - BMP. Например, 24-битный BMP предоставляет нам три используемых байта на пиксел для описания цвета. Теперь зададим себе вопрос: что будет, если мы изменим каждый (или некоторые) компонент цвета на 1. Человек заметит это? Определенно, может и заметить, но только на однородной по цвету картинке. А если это натуральная фотография с большим количеством деталей (например, трава, пейзаж и тд), то человек просто не в состоянии обратить внимание на измененный пиксел. Тем более, в случае, когда он и не подозревает об этом. Таким образом, изменение всего лишь 1 бита (естественно, младшего) на компонент в картинке размером 1024х768 дает нам битовое пространство в 1024х768х3= ~2.36 миллиона битов! = ~ 300 килобайт(!) информации на файл. Т.е, грубо говоря, 1/8 размера файла. Заметьте, и это - без изменения исходного размера файла, который, к тому же, может быть просмотрен любой программой как обычная картинка. Данная техника получила незатейливое название "изменение младших битов" и основана на том, что при незначительном изменении параметров в медиа-форматах органы чувств человека не могут отличить измененный контейнер от исходного. Более того, при выборе достаточно пестрой картинки и изменении двух младших битов на компонент, мы сможем удвоить объем скрываемой информации. Очевидно, что даже 300 КБ - это очень немало. Кстати, может случиться так, что при изменении даже двух битов их значения совпадут с исходными после наложения... Т.е. изменения вообще не будет, но благодаря "контракту" при записи мы сожем извлечь информацию. Выполняя курсовую в то далекое время, автору статьи :) удалось-таки реализовать свой мини-вариант файловой системы с поддержкой иерархии каталогов, атрибутами файлов, шифрованием с хэшированием и контролем доступа на таком битовом пространстве. И, естественно, "вьювер-интегратор" для всего этого хозяйства. Может возникнуть вопрос, а зачем применять еще и шифрование? Просто мы рассматривали вариант, когда _человек_ не видит разницы в контейнере... Но то - глаз, а что нам скажут математики? А они скажут, что есть возможность попытаться использовать эвристические алгоритмы для поиска информации. Конечно, для этого необходимо сначала отыскать подозрительный контейнер. Против этого приема тоже есть выход - замести следы. Можно использовать неявный контракт в формате записи и записывать биты сохраняемых данных не в прямом порядке, а по какому-либо алгоритму. Конечно, использование BMP в современном мире уже подозрительно само по себе, но при изучении других форматов техника будет не очень сильно отличаться по своему принципу. В зависимости от сложности формата будет отличаться только максимальный объем "полезной нагрузки". Теперь далее... Звук... Ухо плохо воспринимает высокие частоты, а после 20 кГц - и вовсе никак... Между тем, многие форматы сохраняют звук в более широком диапазоне, который не всегда доступен на слух. То есть - вуаля - может использоваться в тех же целях. Мы можем изменить немало битов в звуковых данных - и это будет практически неотличимо от других "шумов". Все дело - в контракте! Мы-то знаем, как извлечь данные из такого "шума". Так как звуковые файлы имеют гораздо больший размер, то в них можно единовременно сохранить намного больше информации. Может дойти до парадокса, что в картинке мы можем сохранить другую картинку, в звуке - другой звук... Объем-то позволяет (без изменения размера исходного файла!). Наверное, многие догадались, что нас ждет с видео, где количество шума может быть еще бОльшим. Правильно: можно использовать как минимум ключевые кадры в качестве контейнеров. Поле для деятельности в случаях использования звука и видео намного более широкое, чем с графикой. Ведь в видео есть еще и звуковая дорожка! Да и обнаружить такую информацию будет намного сложнее. Да, есть еще один способ. Это скрытие текста в тексте. Т.е. когда по определенному алгоритму из текста-контейнера (может быть что угодно, любой связный текст) извлекаются символы для составления скрываемого сообщения. Но этот способ требует поистине творческого подхода при низкой отдаче. Поэтому развития, естественно, в цифровом мире не получил. При наличии таких-то собратьев, как графика, звук и видео. Замечу, что все виды контейнеров предполагается возможным использовать по их прямому назначению: картинки - смотреть, звук - слушать и т.д. И, напоследок, хотелось бы рассказать о том, какое продолжение получает стеганография. В статье нигде не упоминалось, но данный вид скрытия информации может быть и полезным в широком смысле. Один из таких вариантов - это цифровая авторская подпись. Стоит отметить, что после модификации контейнера вероятность потери данных при пересохранении файла-контейнера достаточно велика. Однако, потенциально автор может доказать авторство своей работы, скрыв свою подпись внутри самой работы. Как обычно, человеческий разум не знает предела... появились методы, которые позволяют восстановить скрытую информацию в графике даже после ее распечатки и (!) последующего сканирования. На этом завершаю свой "обзор" методов стеганографии... Хотя, поле для мыслей и применений в этой области действительно большое.
Помогаете devby = помогаете ИТ-комьюнити.

Засапортить сейчас.

Хотите сообщить важную новость? Пишите в Telegram-бот

Главные события и полезные ссылки в нашем Telegram-канале

Обсуждение
Комментируйте без ограничений

Релоцировались? Теперь вы можете комментировать без верификации аккаунта.

Комментариев пока нет.