Стеганография. TrueCrypt
Теги: Безопасность Шифрование
Внимание! Архив. Это не стеганография, да и TrueCrypt уже неактуален давно, но рука не поднимается удалить то, что писал много лет назад.
В настоящее время широко распространены различные методы шифрования и сокрытия конфиденциальной информации. К этому можно отнести и использование шифрованных соединений между сетями (или компьютерами), таких, как VPN, и шифрование отдельных папок и файлов, и простое применение паролей на вход в операционную систему, и устройства потокового шифрования всего жесткого диска, и еще массу разных способов.
Чем изощреннее становится защита, тем хитрее действуют взломщики. Способов взлома зашифрованных документов огромно, большинство людей используют простые пароли или интуитивно понятные способы сокрытия (пароль на архив, например). Но взлом таких документов основан в первую очередь на том, что жертва создает зашифрованный файл (или ставит пароль на папку), доступ к содержимому которого не возможен без ввода пароля. Здесь надо отметить важный момент
- взломщик не может получить доступ к конкретному документу.
А что если взломщик не будет знать – зашифрован документ или нет? Что тогда делать бедному хакеру? Вас спросить об этом? И тут надо отметить друго важный момент:
- надо сделать так, чтобы взломщик не мог узнать, шифруете вы что-либо или нет, иными словами, если не заметно самого зашифрованного сообщения, то и попыток его расшифровать не будет
И вот тут-то мы и поговорим про стеганографию.
СТЕНОГРАФИЯ
1. Слово "стеганография" в переводе с греческого означает "тайнопись" (steganos - секрет, тайна; graphy - запись). Можно сказать, что мы скрываем сам факт наличия секретной информации.
2. Стеганографическая система или стегосистема - совокупность средств и методов, которые используются для формирования скрытого канала передачи информации.
Например, я хочу послать моему приятелю сообщение X, но так, чтобы никто не знал об этом. И допустим, что никто не обратит внимание на то, что я пошлю ему фотографию с последней корпоративной вечеринки (при этом разумеется, фотография подлинная). Вполне возможно, я часто шлю своему приятелю фотки. Дело безобидное… пока я не буду пересылать ему какие-либо секретные сообщения прямо в теле картинок! Выход найден! При этом для успеха необхоимо следующее:
- каждая картинка должна быть действительно картинкой, а не переименованным документом word ;)
- размер картинки с вложенным секретом не должен существенно отличаться от оригинальной картинки. Например, кто обратит внимание на то, что вместо 1 530 455 байт пересланная картинка занимала 1 530 730 байт? Никто.
- оригинал картинки (которая весила 1 530 455 байт) уничтожен. Тогда и сравнить-то никто не сможет
У этого метода есть свои ограничения. Например, размер контейнера (в нашем случае это картинка) должен быть существенно больше самого скрытого сообщения. Это ограничение никак не обойти и его надо просто принять.
Раз уж мы затронули контейнер секретного сообщения, то давайте поговорим о нем подробнее. Контейнеры
Существенное влияние на надежность стегосистемы и возможность обнаружения факта передачи скрытого сообщения оказывает выбор контейнера.
Например, опытный глаз цензора с художественным образованием легко обнаружит изменение цветовой гаммы при внедрении сообщения в репродукцию "Мадонны" Рафаэля или "Черного квадрата" Малевича.
По протяженности контейнеры можно подразделить на два типа: непрерывные (потоковые) и ограниченной (фиксированной) длины. Особенностью потокового контейнера является то, что невозможно определить его начало или конец. Более того, нет возможности узнать заранее, какими будут последующие шумовые биты, что приводит к необходимости включать скрывающие сообщение биты в поток в реальном масштабе времени, а сами скрывающие биты выбираются с помощью специального генератора, задающего расстояние между последовательными битами в потоке.
В непрерывном потоке данных самая большая трудность для получателя - определить, когда начинается скрытое сообщение. При наличии в потоковом контейнере сигналов синхронизации или границ пакета, скрытое сообщение начинается сразу после одного из них. В свою очередь, для отправителя возможны проблемы, если он не уверен в том, что поток контейнера будет достаточно долгим для размещения целого тайного сообщения.
При использовании контейнеров фиксированной длины отправитель заранее знает размер файла и может выбрать скрывающие биты в подходящей псевдослучайной последовательности. С другой стороны, контейнеры фиксированной длины, как это уже отмечалось выше, имеют ограниченный объем и иногда встраиваемое сообщение может не поместиться в файл-контейнер.
Другой недостаток заключается в том, что расстояния между скрывающими битами равномерно распределены между наиболее коротким и наиболее длинным заданными расстояниями, в то время как истинный случайный шум будет иметь экспоненциальное распределение длин интервала. Конечно, можно породить псевдослучайные экспоненциально распределенные числа, но этот путь обычно слишком трудоемок. Однако на практике чаще всего используются именно контейнеры фиксированной длины, как наиболее распространенные и доступные.
Возможны следующие варианты контейнеров:
- Контейнер генерируется самой стегосистемой. Примером может служить программа MandelSteg, в которой в качестве контейнера для встраивания сообщения генерируется фрактал Мандельброта. Такой подход можно назвать конструирующей стеганографией.
- Контейнер выбирается из некоторого множества контейнеров. В этом случае генерируется большое число альтернативных контейнеров, чтобы затем выбрать наиболее подходящий для сокрытия сообщения. Такой подход можно назвать селектирующей стеганографией. В данном случае при выборе оптимального контейнера из множества сгенерированных важнейшим требованием является естественность контейнера. Единственной же проблемой остается то, что даже оптимально организованный контейнер позволяет спрятать незначительное количество данных при очень большом объеме самого контейнера.
- Контейнер поступает извне. В данном случае отсутствует возможность выбора контейнера и для сокрытия сообщения берется первый попавшийся контейнер, не всегда подходящий к встраиваемому сообщению. Назовем это безальтернативной стеганографией.
Методы сокрытия информации
В настоящее время наиболее распространенным, но наименее стойким является метод замены наименьших значащих битов или LSB-метод. Он заключается в использовании погрешности дискретизации, которая всегда существует в оцифрованных изображениях или аудио- и видеофайлах. Данная погрешность равна наименьшему значащему разряду числа, определяющему величину цветовой составляющей элемента изображения (пикселя). Поэтому модификация младших битов в большинстве случаев не вызывает значительной трансформации изображения и не обнаруживается визуально. Более подробно LSB-метод описан в статье В. Н. Кустова и А. А. Федчука "Методы встраивания скрытых сообщений" ("Защита информации. Конфидент", №3, 2000, стр. 34).
Другим популярным методом встраивания сообщений является использование особенностей форматов данных, использующих сжатие с потерей данных (например JPEG). Этот метод (в отличии от LSB) более стоек к геометрическим преобразованиям и обнаружению канала передачи, так как имеется возможность в широком диапазоне варьировать качество сжатого изображения, что делает невозможным определение происхождения искажения. Более подробно этот метод описан в статье С. Ф. Быкова "Алгоритм сжатия JPEG с позиции компьютерной стеганографии" ("Защита информации. Конфидент", №3, 2000, стр. 26).
Для встраивания цифровых водяных знаков используются более сложные методы.
Собственно, мы подошли к моменту, когда теория уже достала. Пора научиться прятать сообщения в контейнеры! Для примера я возьму свободно распространяемую программу TrueCrypt. Сайт программы http://www.truecrypt.org/
TrueCrypt
1. Скачиваем и устанавливаем программу (http://www.truecrypt.org/download/truecrypt-4.2.zip, последняя версия на момент написания статьи, для Win XP,2000,2003)
2. Запускаем
TrueCrypt: главное окно программы
3. Мы должны создать новый том. Нажимаем на Create Volume (Создать том)
TrueCrypt: создаем новый том
4. В появившемся окне TrueCrypt Volume Creation Wizard ничего не меняем, нажимаем Next (Далее)
TrueCrypt: выбираем тип контейнера
Если мы хотим создать контейнер в виде файла, нажимаем Select File (Выбрать файл). Так как пока это то, что нам и надо, то смело жмем кнопку. Откроется новое стандартное окно Windows выбора файла:
5. Окно Выбора файла для открытия (этот файл – наш будущий крипто-контейнер)
TrueCrypt: окно выбора файла для контейнера Если файла не существует, TrueCrypt создаст его.
Итак, находим нужный файл, выделяем его и нажимаем Open (Открыть).
6. Появиться окно Volume Location (Размешение тома)
TrueCrypt: размещение тома
Жмем Next (Далее)
7. В новом окне Encryption Options (Настройки шифрования) выбираем тип шифрования и алгоритм хеширования (для опыта можете оставить все как есть)
TrueCrypt: выбираем тип шифрования и хеширования
Жмем далее.
8. В окне Volume Size (Размер тома) выбираем размер будущего тома.
TrueCrypt: назначаем размер будущего тома
Например, 1 Мб. Next (Далее)
9. Выбираем пароль на доступ к тому. По поводу рекомендаций, какой пароль лучше, я говорить не буду, вы и так это знаете ;) Например, вводим "123".
TrueCrypt: создание пароля на том
Next (Далее)
10. Выбираем файловую систему для нашего тома и форматируем его.
TrueCrypt: выбор файловой системы тома
TrueCrypt: информационное сообщение – том отформатирован
В итоге получили окно Volume Created:
TrueCrypt: том создан
Жмем Exit (Выход)
Поздравляю, вы только что создали контейнер для вашего секретного сообщения (под видом обычного файла). Для использования этого контейнера его надо подключить к системе (примонтировать том или, что тоже самое, поключить логический диск).
11. В главном окне программы TrueCrypt выбираем имя будущего логического диска (в который мы запишем любое нам необходимое письмо нашему другу ;) ) Например, выберем диск M:. При выборе диска вы должны выбрать такое имя, которое не используется в вашей системе, а диск M: с большой долей вероятности вы еще не используете ;)
TrueCrypt: выбираем имя тома, которое будет выглядеть как обычный диск, на который и с которого можно записывать и стирать файлы.
12. После выбора имени диска нажимаем Select File (Выбор файла), и открываем тот файл, который мы уже создали в предидущих шагах.
TrueCrypt: выбор файла-контейнера для подключения
После этого нажимаем Mount (Монтировать или подключить), в открывшемся окне вводим пароль, котоый мы вводили при создании контейнера (например, 123). Если пароль верный, в главном окне программы будет отмечен диск M:, имя файла, тип шифрования… Все, на диск можно записывать файлы
TrueCrypt: с диском M: можно работать также, как и с любым другим, например, с диском C:
После того, как работа с диском будет закончена, нажимаем Dismount (Отмонтировать, Отключить) и все, Файл можно копировать, переносить с компьютера на компьютер, пересылать по почте и т.д. Единственное условие – на другом компьютере тоже должна быть установлена программа TrueCrypt.
Можно добавить, что программа имеет русскую локализацию, но это уже на любителя.
У этой программы есть существенный недостаток: файл как картинку просмотреть уже нельзя, поэтому использовать эту программу можно только тогда, когда визуальное (или аудиоальное) сравнение файлов не будет происходить.
В следующей статье я расскажу вам как скрыть файлы так, чтобы люди и в самом деле думали, что они смотрят просто картинки
Удачи! И, перефразируя телеведущую Анфису Чехову, "какой бы не была передача файлов, главное, чтобы она была безопасной"!
В статье использовались материалы с сайта http://www.truecrypt.org/ и http://www.citforum.ru/.
Авторизуйтесь для добавления комментариев!