Lib.ru/Современная:
[Регистрация]
[Найти]
[Рейтинги]
[Обсуждения]
[Новинки]
[Помощь]
Сказал ли кто-то "мяу"?
Шифр должен напоминать все что
угодно, за исключением шифра.
Ст.Лем. Рукопись, найденная в ванне
Редко удается наблюдать такое единодушие - все популярные статьи на эту тему начинаются одинаково, с одного и того же примера. Ну как если бы любая статья по физике начиналась с первого закона Ньютона. Дело, видимо, в том, что стеганография - область науки и техники - очень молода. Впрочем, все еще хуже - пример, с которого начинаются все статьи, некорректен.
Стандартное начало и немного истории
Все знают, что такое кодирование. Я хочу что-то сказать другому так, чтобы меня не поняли - даже если услышат. Стеганография служит почти той же цели, но она - метод, с помощью которого скрывается не содержание сообщения, а сам факт передачи чего-то секретного. Я хочу сказать что-то другому и понимаю, что услышат, но хочу, чтобы услышали поздравление с днем рождения, а не заказ на наплечные ракеты и сведения об охране аэропорта.
Знаменитый же исторический пример таков: берете раба и обриваете ему голову, пишете на бритом черепе сообщение, ждете, пока отрастут волосы, посылаете раба к получателю сообщения, получатель зовет имеющего допуск брадобрея... Можно, конечно, брадобрея и без допуска, но тогда потребуется еще один узкий специалист - с удавкой. Применяли древние и другие способы. Так, согласно легендам из ленинского цикла, В.И., сидя в тюрьме, писал статьи в "Искру" молоком, вместо того чтобы оценить заботу царского правительства о его здоровье и это молоко пить. В литературе можно найти еще много методов. Например, Геродот упоминает такой: воск соскабливают с дощечки, письмо пишут прямо на дереве, затем дощечку покрывают воском заново и на нем изображают что-то вроде "тетя прибывает Пирей первого апреля, везет два ящика фиников, встречайте пятью носильщиками". В Китае письма писали на полосках шелка, полоски сворачивали в шарики, покрывали опять же воском и скармливали посыльным. Видно, что большинство примеров - хоть они и приводятся в каждой статье - некорректны: скрывается сам факт сообщения, а не его "действительное" содержание.
Исторически стеганография сначала применялась вместо криптографии, чтобы получатель не занимался расшифровкой самого сообщения. Но она может применяться не вместо собственно шифрования, а вместе с ним. Впервые стали использовать шифрование и стеганографию вместе в XV веке. Сделал это немецкий богослов и историк, аббат Иоганн Гейденберг (1462 - 1516), принявший имя Тритемиус (от города Тритенгейма, где он родился). Этот человек вообще весьма серьезно занимался криптографией и стеганографией и описал много различных методов скрытой передачи сообщений в книге "Steganographia". Родись он на пять веков позже, - был бы у нас не один Винер, а два.
Прошло двести лет, и дело криптографии взяло в свои крепкие руки государство: XVII - XVIII века известны как эра "черных кабинетов", специальных государственных органов по перехвату, перлюстрации и дешифрованию переписки. В штат черных кабинетов помимо криптографов входили и химики - большие специалисты по невидимым чернилам. В книжках и в интернете можно найти много рецептов симпатических чернил, но читатель "Химии и жизни" должен сам придумать новые.
Химия - химией, но в данном случае важна психология, а с ее точки зрения стеганография сильно отличается от криптографии. Представьте себе группу борцов за что-то, которые готовят теракт на сотню жертв. Что произойдет, если у властей возникнет подозрение? В демократической стране начнется длинная история с получением судебного предписания, прокурорского разрешения и чего-то там еще. А в стране попроще приедут четверо, положат отправителя и получателя сообщений на пол, и... и, глядишь, не будет теракта и жертв. Поэтому во многих случаях важно зашифровать сообщение так, чтобы не был очевиден сам факт наличия шифра. Этим мрачным примером список ситуаций, когда нужна стеганография, к счастью, не исчерпывается.
Для чего это нужно
Первая область применения - защита конфиденциальной информации от несанкционированного доступа. Заметьте: не от чтения, а от доступа. Ведь заметив подозрительный обмен кодированной информацией, я могу ему помешать, даже если не могу ее расшифровать - например, изъяв или исказив сообщение. Более того, возможна ситуация, когда мой противник не хочет мешать, но хочет знать, что А и Б не просто сидят на трубе, а что-то замышляют. И это довольно распространенная ситуация. Страна X знает, что дипломат страны Y - шпион. Но не "берет" его, потому что в ответ страна Y вышлет ее разведчика, а тот пока что передает более ценную информацию. Но ситуация может измениться - вот тут мы и созовем пресс-конференцию, и такое на стол положим, и сразу всех нон-гратами объявим_ Если же Y применял стеганографию, то X не увидит "кодированности" в его сообщениях.
Другая ситуация - защита авторского права: в ту или иную информацию встраивается сообщение: "Эта ложка украдена в отеле Ритц". Подобная метка может стоять на музыке, на картинках, на программном обеспечении. Причем уже созданы программы, которые путешествуют по интернету и разыскивают ваше несанкционированно размещенное - проще сказать, ворованное - творчество. Естественно, уже созданы и программы, стирающие "водяные знаки".
Как это сделать, или Прячем лист в лесу
Для сокрытия информации надо использовать какую-то другую информацию, причем большого объема и с высокой избыточностью. Ведь нам придется что-то в ней менять, когда мы будем прятать там свою. Кроме того, это должна быть информация, которая выглядит естественно при передаче по интернету. Эти два требования немедленно указывают на две с половиной возможности - музыку, картинки и, в меньшей степени, текстовые файлы.
Первый способ сокрытия называется "метод наименее значащего бита". Этот метод используется и для графической, и для звуковой стеганографии. Цифровые картинки состоят из отдельных точек, так называемых пикселов. Для описания цвета каждого пиксела отводится определенный объем. Причем, как правило, избыточный - кто же это различает миллионы цветов? Тренированный профессионал, полиграфист высокого класса или специалист по тканям - несколько сотен, а мы с вами и того меньше. Значит, можно чуть-чуть изменить цвет, "поправив" некоторые биты в описании, по сути дела - записав в них свою информацию. В разных графических форматах это делается по-разному, в зависимости от того, как именно кодируется цвет. Вот самый простой пример - если цвет кодируется просто последовательностью нулей и единиц, то программа-стеганограф тоже должна записать файл-сообщение нулями и единицами, и она размещает эти биты поверх тех битов описания, которые меньше всего влияют на цвет. Если ноль или единица файла-сообщения волею случая совпадают с нулем или единицей графического файла, то никаких изменений не происходит. Если же они не совпадают, программа-стеганограф спокойно записывает последний бит так, как ей нужно.
Конечно, после этого вся запись меняет свое значение, но поскольку изменяется только наименее значащий бит, то номер цвета изменяется лишь на единицу и оттенок пиксела меняется незначительно, так что заметить его на глаз невозможно. Кроме того, если сообщение, которое прячет стеганограф, маленькое, то вовсе не обязательно изменять каждый байт картинки - вполне достаточно может оказаться каждого десятого или даже каждого сотого байта. Такое изменение картинки не углядит и горный орел. Более умные программы могут прятать информацию не где попало, а на тех участках рисунка, где изменения менее заметны - не на сплошном черном и не на сплошном белом. И лучше вообще не на однотонном.
В звуковых файлах данные прячут точно так же, как и в графике. Опять используется метод наименее значащего бита, и возникающие при этом изменения звука на слух практически не различимы. В крайнем случае, скорее встанет вопрос о качестве самой записи, а не о том, что эта запись была обработана стеганографом. Опять же, умная программа будет прятать сообщение не в скрипке пиано, а в хэви-метал. Причем в такое место записи, в котором от звукового давления, как говорила одна моя знакомая, "чувствуешь, как диафрагма ходит".
А как спрятать информацию в тексте? Прежде всего можно использовать собенности компьютерного формата - например, свободные места на диске (файл занимает целое число секторов, и обычно остается "кусочек"). Можно смещать определенным образом слова, предложения и абзацы. Можно части сообщения приписывать "белый" цвет - тот, кто об этом не знает, ничего не увидит. Это совсем детский способ, но вот серьезнее: сделать нечто подобное акростиху, размещая на определенных местах в тексте буквы, составляющие сообщение. При наличии мощного словаря синонимов и при отсутствии требований к точности смысла метод вполне эффективен. Можно, впрочем, пойти по более скромному пути и выбирать слова определенной длины.
Прием против лома
Какие же есть средства обнаружения стеганограмм? Изменения младших бит несложно обнаружить в очень темных и очень ярких областях картинок. Более тонкий способ - анализ спектра младших бит. Подобные программы сравнивают вычисленные показания с прогнозируемыми теорией вероятности для настоящих шумов квантования в целом и для данной картинки в частности. Есть свои особенности и у сканеров, и при вычислениях они тоже должны учитываться. На интуитивном уровне эта фраза вам еще понятна, но интуиция не заменяет знания, поэтому здесь - граница нашей статьи.
Методы взлома, а точнее, раскрытия данных, спрятанных стеганографией, - так называемый стеганоанализ - тема, естественно, еще более сложная. Но есть в ней понятный кусочек - как и в случае с шифровками, может возникнуть задача испортить стеганографированное сообщение, не зная его содержания и даже не будучи уверенным в его наличии. Делается это предельно просто: в те самые младшие биты, которые использовались для стеганографии, записывается что угодно, случайные нули и единицы. Если картинка не содержала скрытого сообщения, то видимых искажений не появится, а если в картинке было скрыто сообщение, то оно будет испорчено. Разумеется, наши конспираторы А и Б, обнаружив этот факт, придумают, что им делать. Вы ведь уже придумали, не так ли?
Еще один аспект
"Человек отличается от известного животного тем, что иногда поднимает глаза к небу". Сделаем это и мы - и увидим неожиданный аспект в проблеме стеганографии. Вот что пишет Станислав Лем по поводу связи с иными цивилизациями: "Проблема радиоконтактов имеет и любопытный информационный аспект. Дело в том, что чем полнее используется при передаче пропускная способность информационного канала, то есть чем в большей степени устраняется избыточность сообщения, тем больше оно становится похожим на шум, и тот, кто принимает, не зная системы кодирования, оказывается перед огромными трудностями - трудностями, касающимися не только декодирования приходящей информации, но даже и опознавания ее как информации вообще в отличие от шума, создаваемого космическим "фоном". Поэтому не исключено, что уже сейчас наши радиотелескопы принимают в виде шумов фрагменты "межзвездных разговоров", которые ведут "сверхцивилизации".
Связаться с программистом сайта.