Исследование стеганографических алгоритмов защиты информации

 











Курсовая работа

на тему:


Исследование стеганографических алгоритмов защиты информации

Введение


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

Выходом из этой ситуация является использование стеганографии.

Стеганография - (от греческого скрытый, буквально «тайнопись») - это наука о скрытой передаче информации путём сохранения в тайне самого факта передачи.

В отличие от криптографии, которая скрывает содержимое секретного сообщения, стеганография скрывает само его существование. Стеганографию обычно используют совместно с методами криптографии, таким образом, дополняя её.

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

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

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


1. Анализ алгоритмов стегонаграфической защиты информации


.1 Терминология


В 1996 году на конференции Information Hiding: First Information Workshop была принята единая терминология:

-Стеганографическая система (стегосистема) - объединение методов и средств используемых для создания скрытого канала для передачи информации. При построении такой системы условились о том, что:

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

2)При обнаружении противником наличия скрытого сообщения он не должен смочь извлечь сообщение до тех пор пока он не будет владеть ключом.

)Противник не имеет технических и прочих преимуществ.

-Сообщение - это термин, используемый для общего названия передаваемой скрытой информации, будь то лист с надписями молоком, голова раба или цифровой файл.

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

-Стеганографический канал (стегоканал) - канал передачи стегоконтейнера.

-Ключ (стегоключ) - секретный ключ, нужный для сокрытия стегоконтейнера. Ключи в стегосистемах бывают двух типов: секретные и открытые. Если стегосистема использует секретный ключ, то он должен быть создан или до начала обмена сообщениями, или передан по защищённому каналу. Стегосистема, использующая открытый ключ, должна быть устроена таким образом, чтобы было невозможно получить из него закрытый ключ. В этом случае открытый ключ мы можем передавать по незащищённому каналу.


.2 Направления стеганографии


В конце 90-х годов выделилось несколько направлений стеганографии:

-классическая стеганография;

-компьютерная стеганография;

-цифровая стеганография.

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

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

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

Одним из наиболее распространенных методов классической стеганографии является использование симпатических (невидимых) чернил. Текст, записанный такими чернилами, проявляется только при определенных условиях (нагрев, освещение, химический проявитель и т. д.) Изобретенные еще в I веке н. э. Филоном Александрийским, они продолжали использоваться как в средневековье, так и в новейшее время, например, в письмах русских революционеров из тюрем. В советской школьной программе в курсе литературы изучался рассказ о том, как Владимир Ленин писал молоком на бумаге между строк. Молоко проявлялось при нагреве над пламенем.

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

Во время Второй мировой войны активно использовались микроточки - микроскопические фотоснимки, вклеиваемые в текст писем, телеграмм.

Также существует ряд альтернативных методов сокрытия информации:

-запись на боковой стороне колоды карт, расположенных в условленном порядке;

-запись внутри вареного яйца;

-«жаргонные шифры», где слова имеют другое обусловленное значение;

-трафареты, которые, будучи положенными на текст, оставляют видимыми только значащие буквы;

-узелки на нитках и т. д.


.3 Компьютерная стеганография


Компьютерная стеганография - направление классической стеганографии, основанное на особенностях компьютерной платформы.

Примеры - стеганографическая файловая система StegFS для Linux, скрытие данных в неиспользуемых областях форматов файлов, подмена символов в названиях файлов, текстовая стеганография и т. д.

Приведём некоторые примеры:

-Использование зарезервированных полей компьютерных форматов файлов - суть метода состоит в том, что часть поля расширений, не заполненная информацией о расширении, по умолчанию заполняется нулями. Соответственно мы можем использовать эту «нулевую» часть для записи своих данных. Недостатком этого метода является низкая степень скрытности и малый объем передаваемой информации.

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

-Метод использования особых свойств полей форматов, которые не отображаются на экране - этот метод основан на специальных «невидимых» полях для получения сносок, указателей. К примеру, написание черным шрифтом на черном фоне. Недостатки: маленькая производительность, небольшой объём передаваемой информации.

-Использование особенностей файловых систем - при хранении на жестком диске файл всегда (не считая некоторых ФС, например, ReiserFS) занимает целое число кластеров (минимальных адресуемых объемов информации). К примеру, в ранее широко используемой файловой системе FAT32 (использовалась в Windows98/Me/2000) стандартный размер кластера - 4 Кб. Соответственно для хранения 1 Кб информации на диске выделяется 4 Кб информации, из которых 1Кб нужен для хранения сохраняемого файла, а остальные 3 ни на что не используются - соответственно их можно использовать для хранения информации. Недостаток данного метода: лёгкость обнаружения.

1.4 Цифровая стеганография


Цифровая стеганография - направление классической стеганографии, основанное на сокрытии или внедрении дополнительной информации в цифровые объекты, вызывая при этом некоторые искажения этих объектов. Но, как правило, данные объекты являются мультимедиа-объектами (изображения, видео, аудио, текстуры 3D-объектов) и внесение искажений, которые находятся ниже порога чувствительности среднестатистического человека, не приводит к заметным изменениям этих объектов. Кроме того, в оцифрованных объектах, изначально имеющих аналоговую природу, всегда присутствует шум квантования; далее, при воспроизведении этих объектов появляется дополнительный аналоговый шум и нелинейные искажения аппаратуры, все это способствует большей незаметности сокрытой информации.

Из рамок цифровой стеганографии вышло наиболее востребованное легальное направление - встраивание цифровых водяных знаков (ЦВЗ) (watermarking), являющееся основой для систем защиты авторских прав и DRM (Digital rights management) систем. Методы этого направления настроены на встраивание скрытых маркеров, устойчивых к различным преобразованиям контейнера (атакам).

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

Например, разработки Digimarc в виде плагинов к редактору Adobe Photoshop позволяют встроить в само изображение информацию об авторе. Однако такая метка неустойчива, впрочем как и абсолютное их большинство. Программа Stirmark, разработчиком которой является ученый Fabien Petitcolas, с успехом атакует подобные системы, разрушая стеговложения.

Все алгоритмы встраивания скрытой информации можно разделить на несколько подгрупп:

-Работающие с самим цифровым сигналом. Например, метод LSB.

-«Впаивание» скрытой информации. В данном случае происходит наложение скрываемого изображения (звука, иногда текста) поверх оригинала. Часто используется для встраивания ЦВЗ.

-Использование особенностей форматов файлов. Сюда можно отнести запись информации в метаданные или в различные другие не используемые зарезервированные поля файла.

По способу встраивания информации стегоалгоритмы можно разделить на линейные (аддитивные), нелинейные и другие. Алгоритмы аддитивного внедрения информации заключаются в линейной модификации исходного изображения, а ее извлечение в декодере производится корреляционными методами. При этом ЦВЗ обычно складывается с изображением-контейнером, либо «вплавляется» (fusion) в него. В нелинейных методах встраивания информации используется скалярное либо векторное квантование. Среди других методов определенный интерес представляют методы, использующие идеи фрактального кодирования изображений. К аддитивным алгоритмам можно отнести:

-А17 (Cox)

-А18 (Barni)

-L18D (Lange)

-А21 (J. Kim).

-А25 (С. Podilchuk).

Метод LSB(Least Significant Bit, наименьший значащий бит) - суть этого метода заключается в замене последних значащих битов в контейнере (изображения, аудио или видеозаписи) на биты скрываемого сообщения. Разница между пустым и заполненным контейнерами должна быть не ощутима для органов восприятия человека.

Суть метода заключается в следующем: Допустим, имеется 8-битное изображение в градациях серого. 00h (00000000b) обозначает черный цвет, FFh (11111111b) - белый. Всего имеется 256 градаций (28). Также предположим, что сообщение состоит из 1 байта - например, 01101011b. При использовании 2 младших бит в описаниях пикселей, нам потребуется 4 пикселя. Допустим, они черного цвета. Тогда пиксели, содержащие скрытое сообщение, будут выглядеть следующим образом: 00000001 0000001000000010 00000011. Тогда цвет пикселей изменится: первого - на 1/255, второго и третьего - на 2/255 и четвертого - на 3/255. Такие градации, мало того что незаметны для человека, могут вообще не отобразиться при использовании низкокачественных устройств вывода.

Методы LSB являются неустойчивыми ко всем видам атак и могут быть использованы только при отсутствии шума в канале передачи данных.

Обнаружение LSB-кодированного стего осуществляется по аномальным характеристикам распределения значений диапазона младших битов отсчётов цифрового сигнала.

Все методы LSB являются, как правило, аддитивными (A17, L18D).

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

Эхо-методы

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

Эхо-методы устойчивы к амплитудным и частотным атакам, но неустойчивы к атакам по времени.

Фазовое кодирование

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

Метод расширенного спектра

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


.5 Стеганография и цифровые водяные знаки


Цифровые водяные знаки (ЦВЗ) используются для защиты от копирования, сохранения авторских прав. Невидимые водяные знаки считываются специальным устройством, которое может подтвердить либо опровергнуть корректность. ЦВЗ могут содержать различные данные: авторские права, идентификационный номер, управляющую информацию. Наиболее удобными для защиты с помощью ЦВЗ являются неподвижные изображения, аудио и видео файлы.

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

Основные требования, предъявляемые к водяным знакам: надёжность и устойчивость к искажениям, незаметности, робастности к обработке сигналов (робастность - способность системы к восстановлению после воздействия на нее внешних/внутренних искажений, в том числе умышленных). ЦВЗ имеют небольшой объём, но для выполнения указанных выше требований, при их встраивании используются более сложные методы, чем для встраивания обычных заголовков или сообщений. Такие задачи выполняют специальные стегосистемы.

Перед помещением ЦВЗ в контейнер, водяной знак нужно преобразовать к подходящему виду. К примеру, если в качестве контейнера используется изображение, то и ЦВЗ должны быть представлена как двумерный битовый массив.

Для повышения устойчивости к искажениям часто применяют помехоустойчивое кодирование или используют широкополосные сигналы. Начальную обработку скрытого сообщения делает прекодер. Важная предварительная обработка ЦВЗ - вычисление его обобщенного Фурье-преобразования. Это повышает помехоустойчивость. Первичную обработку часто производят с использованием ключа - для повышения секретности. Потом водяной знак «укладывается» в контейнер (например, путем изменения младших значащих бит). Здесь используются особенности восприятия изображений человеком. Широко известно, что изображения имеют огромную психовизуальную избыточность. Глаза человека подобны низкочастотному фильтру, который пропускает мелкие элементы изображения. Наименее заметны искажения в высокочастотной области изображений. Внедрение ЦВЗ также должно учитывать свойства восприятия человека.

Во многих стегосистемах для записи и считывания ЦВЗ используется ключ. Он может предназначаться для ограниченного круга пользователей или же быть секретным. Например, ключ нужен в DVD-плейерах для возможности прочтения ими содержащихся на дисках ЦВЗ. Как известно, не существует таких стегосистем, в которых бы при считывании водяного знака требовалась другая информация, нежели при его записи. В стегодетекторе происходит обнаружение ЦВЗ в защищённом им файле, который, возможно, мог быть изменён. Эти изменения могут быть связаны с воздействиями ошибок в канале связи, либо преднамеренными помехами. В большинстве моделей стегосистем сигнал-контейнер можно рассмотреть как аддитивный шум. При этом задача обнаружения и считывания стегосообщения уже не представляет сложности, но не учитывает двух факторов: неслучайности сигнала контейнера и запросов по сохранению его качества. Учет этих параметров позволит строить более качественные стегосистемы. Для обнаружения факта существования водяного знака и его считывания используются специальные устройства - стегодетекторы. Для вынесения решения о наличии или отсутствии водяного знака используют, к примеру, расстояние по Хэммингу, взаимокорреляцию между полученным сигналом и его оригиналом. В случае отсутствия исходного сигнала в дело вступают более изощренные статистические методы, которые основаны на построении моделей исследуемого класса сигналов.

1.6 Сводная характеристика методов стеганографической защиты


В настоящее время методы компьютерной стеганографии развиваются по двум основным направлениям:

1)Методы, основанные на использовании специальных свойств компьютерных форматов;

2)Методы, основанные на избыточности аудио и визуальной информации.


Таблица 1.1 - Сравнительные характеристики стеганографических методов.

Стеганографические методыКраткая характеристика методовНедостаткиПреимущества1. Методы использования специальных свойств компьютерных форматов данных1.1. Методы использования зарезервированных для расширения полей компьютерных форматов данныхПоля расширения имеются во многих мультимедийных форматах, они заполняются нулевой информацией и не учитываются программойНизкая степень скрытности, передача небольших ограниченных объемов информацииПростота использования1.2. Методы специального форматирования текстовых файлов:1.2.1. Методы использования известного смещения слов, предложений, абзацевМетоды основаны на изменении положения строк и расстановки слов в предложении, что обеспечивается вставкой дополнительных пробелов между словами1. Слабая производи-тельность метода, передача небольших объемов информации 2. Низкая степень скрытностиПростота использования. Имеется опубликованное программное обеспечение реализации данного метода1.2.2. Методы выбора определенных позиций букв (нулевой шифр)Акростих - частный случай этого метода (например, начальные буквы каждой строки образуют сообщение)1. Слабая производи-тельность метода, передача небольших объемов информации 2. Низкая степень скрытностиПростота использования. Имеется опубликованное программное обеспечение реализации данного метода1.2.3. Методы использования специальных свойств полей форматов, не отображаемых на экранеМетоды основаны на использовании специальных "невидимых", скрытых полей для организации сносок и ссылок (например, использование черного шрифта на черном фоне)1.3. Методы скрытия в неиспользуемых местах гибких дисковИнформация записывается в обычно неиспользуемых местах ГМД (например, в нулевой дорожке)1. Слабая производительность метода, передача небольших объемов информации 2. Низкая степень скрытностиПростота использования. Имеется опубликованное программное обеспечение реализации данного метода1.4. Методы использования имитирующих функций (mimic-function)Метод основан на генерации текстов и является обобщением акростиха. Для тайного сообщения генерируется осмысленный текст, скрывающий само сообщение1. Слабая производительность метода, передача небольших объемов информации 2. Низкая степень скрытностиРезультирующий текст не является подозрительным для систем мониторинга сети1.5. Методы удаления идентифицирующего файл заголовкаСкрываемое сообщение шифруется и у результата удаляется идентифицирующий заголовок, оставляя только шифрованные данные. Получатель заранее знает о передаче сообщения и имеет недостающий заголовокПроблема скрытия решается только частично. Необходимо заранее передать часть информации получателюПростота реализации. Многие средства (White Noise Storm, S-Tools), обеспечивают реализацию этого метода 2. Методы использования избыточности аудио и визуальной информации2.1. Методы использования избыточности цифровых фотографии, цифрового звука и цифрового видеоМладшие разряды цифровых отсчетов содержат очень мало полезной информации. Их заполнение дополнительной информацией практически не влияет на качество восприятия, что и дает возможность скрытия конфиденциальной информацииЗа счет введения дополнительной информации искажаются статистические характеристики цифровых потоков. Для снижения компрометирующих признаков требуется коррекция статистических характеристикВозможность скрытой передачи большого объема информации. Возможность защиты авторского права, скрытого изображения товарной марки, регистрационных номеров и т.п.

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

Цифровые фотографии, цифровая музыка, цифровое видео - представляются матрицами чисел, которые кодируют интенсивность в дискретные моменты в пространстве и/или во времени.

Цифровая фотография - это матрица чисел, представляющих интенсивность света в определенный момент времени.

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

Графические цветные файлы со схемой смешения RGB кодируют каждую точку рисунка тремя байтами. Каждая такая точка состоит из аддитивных составляющих: красного, зеленого, синего. Изменение каждого из трех наименее значимых бит приводит к изменению менее 1% интенсивности данной точки. Это позволяет скрывать в стандартной графической картинке объемом 800 Кбайт около 100 Кбайт информации, что не заметно при просмотре изображения.

Другой пример. Только одна секунда оцифрованного звука с частотой дискретизации 44100 Гц и уровнем отсчета 8 бит в стерео режиме позволяет скрыть за счет замены наименее значимых младших разрядов на скрываемое сообщение около 10 Кбайт информации. При этом изменение значений отсчетов составляет менее 1%. Такое изменение практически не обнаруживается при прослушивании файла большинством людей.

2. Реализация алгоритма стеганографической защиты


2.1 Особенности реализации алгоритма


Для реализации выберем два алгоритма стеганографической - первый алгоритм LSB, а второй - алгоритм, основанный на использовании резервных полей.

Алгоритм замены младших значащих битов будет производить изменение битов непосредственно самого рисунка, при этом заменяться будут три младших бита.

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

Сохранить измененное изображение можно только в формате BMP, т.к. сохранение в других форматах сжимает тем или иным образом изображение, что неизбежно повлечёт повреждение сообщения.

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

Программа в качестве исходного изображения может использовать изображение формата JPEG или BMP, но конечное изображение будет храниться исключительно в BMP формате.

Для использования резервных полей файла JPEG воспользуемся набором сторонних библиотек CCR.Exif-1.1.2. Сообщение будет храниться в открытом виде в поле комментариев к файлу - такая примитивная вставка может обмануть как машину, ищущую нужную информацию по определённым критериям, так и человека, который с большой долей вероятности, при поверхностном просмотре файла не обратит внимание на содержание поля комментариев.


2.2 Рабочая документация программного продукта


Разработанная программа реализует алгоритм LSB и алгоритм использования резервных полей.

Системные требования

Системные требования:

-Тип ЭВМ: IBM PC-совместимые ПК.

-ОС: Windows 9X/NT/2000/XP/Vista/Windows 7.

-Размер ОЗУ: 64 Mб

-Размер видео памяти: 32 Mб

-Свободное место на HDD: 2 Мб

-Процессор Pentium III 1ГГц и выше.

Установка программы не требуется - для начала работы с программой необходимо запустить файл Stego.exe.

Заключение


В ходе курсовой работу были рассмотрены и изучены алгоритмы стеганографической защиты, а также рассмотрены их достоинства и недостатки.

Написанная программа реализует стеганографические алгоритмы, которые позволяют срыть сам факт передачи информации, хотя информация передаётся в открытом виде.

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

-Работающие с самим цифровым сигналом. Например, метод LSB, который был реализован в программе.

-«Впаивание» скрытой информации. В данном случае происходит наложение скрываемого изображения (звука, иногда текста) поверх оригинала. Часто используется для встраивания ЦВЗ.

-Использование особенностей форматов файлов.

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

Список литературы


1.Конахович Г. Ф., Пузыренко А. Ю. Компьютерная стеганография. Теория и практика. - К.: МК-Пресс, 2006. - 288 с

2.Быков С. Ф. Алгоритм сжатия JPEG с позиции компьютерной стеганографии Защита информации. Конфидент. - СПб.: 2000, № 3

.Грибунин В. Г., Оков И. Н., Туринцев И. В. Цифровая стеганография. - М.: Солон-Пресс, 2002. - 272 с

4.Schneier B (1996) Applied Cryptography. John Wiley and Sons, Indianapolis, IN

.Chandramouli, R. and N. Memon, 2001. Analysis of LSB based image steganography techniques. Proc. of ICIP, Thessaloniki, Greece.

6.Dumitrescu, S., W. Xiaolin and Z. Wang, 2003. Detection of LSB steganography via sample pair analysis. In: LNCS, Vol. 2578, Springer-Verlag, New York, pp: 355-372.

.Juan José Roque, Jesús María Minguet. SLSB: Improving the Steganographic Algorithm LSB, Universidad Nacional de Educación a Distancia (Spain)

8.С. Панасенко, "Алгоритмы шифрования". - СПб.: 2009.

.Жельников В. Кpиптогpафия от папиpуса до компьютеpа. - М.: ABF, 1996. - 335 с.

10.David Kahn The Codebreakers - The Story of Secret Writing. - New York: Charles Scribner's Sons, 1967. - 473 с

Приложение 1

frmIzoInfo: TfrmIzoInfo= 0= 0= #1057#1087#1088#1103#1090#1072#1090#1100' '#1089#1086#1086#1073#1097#1077#1085#1080#1077' '#1074' '#1080#1085#1092#1086#1088#1084#1072#1094#1080#1080' '#1082' '#1092#1072#1081#1083#1091= 206= 473= clBtnFace.Charset = DEFAULT_CHARSET.Color = clWindowText.Height = -11.Name = 'Tahoma'.Style = []= False= poDesktopCenter= FormCreate= FormShow= 96= 13Label1: TLabel= 8= 44= 200= 21= #1057#1086#1086#1073#1097#1077#1085#1080#1077' '#1076#1083#1103' '#1089#1086#1082#1088#1099#1090#1080#1103':'.Charset = ANSI_CHARSET.Color = clWindowText.Height = -16.Name = 'Palatino Linotype'.Style = [fsBold, fsItalic]= FalseLabel2: TLabel= 8= 1= 107= 21= #1055#1091#1090#1100' '#1082' '#1092#1072#1081#1083#1091.Charset = RUSSIAN_CHARSET.Color = clWindowText.Height = -16.Name = 'Palatino Linotype'.Style = [fsBold, fsItalic]= FalseedIsxodDir: TEdit= 8= 24= 441= 21= 0bbOpenIsxod: TBitBtn= 444= 24= 21= 21= True.Data = {

D4202000000000000420000002800000010000000100000000100

E0000202E00000000000000000000007C0000E003

F000000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FBB7BFF7FFF7FFFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F977FA76E42666A318E2DAFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FBC7FED76A0764062606A60450000

C31BD77FF7FFF7FFF7FFF7FDE7F307BA376806EE176A26A235A227F2031

FF7FFF7FFF7F557BC676A072C076E276E276A26E0356037B6066

FF7FFF7F787BEA76A076E076027B027BE276E27AA26E435EA36AA072

FFF7FFF7FDD7FA476A076E276027B027B027BE276027BC272425E8462C076ABD7BFF7FDD7FC376E076027B027B027B027B227F227F4266635E6356C36E

ECF66FF7FDD7FC376C076027B027B027B227F027B826A43626362835EE372A435EDE7BBC7BC376C076E276027B227FC2724366445EA366C26E027BE27AA606AAD66BC7FC372C076E276227FA26E235A8562A46AE276027BE276C276

BA072255EBC7FC372A072027BC072025E465AA366027F017BA072A072E172

A65667977BC7FC376C072806E456A465E8362E276C076406AED72077B606AABC7BFF7FDB7F80724066F06EDE7B4F7B8072606E64665673FF7FFD7F977BFFF7FFF7FFD7FED763673FF7FFF7FDC7F0D7BCD6EBC7BFF7FFF7FFF7FFF7FFFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFFF7FFF7F}= False= 1= bbOpenIsxodClickmmMessage: TMemo= 8= 68= 458= 89.Charset = RUSSIAN_CHARSET.Color = clWindowText.Height = -13.Name = 'Times New Roman'.Style = []= False= ssBoth= 2butStartStego: TButton= 248= 163= 218= 27= #1057#1087#1088#1103#1090#1072#1090#1100' '#1089#1086#1086#1073#1097#1077#1085#1080#1077.Charset = RUSSIAN_CHARSET.Color = clWindowText.Height = -16.Name = 'Palatino Linotype'.Style = [fsBold, fsItalic]= False= 3= butStartStegoClickdiagOpenPict: TOpenPictureDialog= 'JPEG Image File (*.jpg)|*.jpg'= 272= 65528

unInfoIzo;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ExtDlgs, Buttons, CCR.Exif.JPEGUtils, CCR.Exif; стенография компьютерный скрытый информация

TfrmIzoInfo = class(TForm)

edIsxodDir: TEdit;: TBitBtn;: TOpenPictureDialog;: TMemo;: TLabel;: TButton;: TLabel;FormCreate(Sender: TObject);FormShow(Sender: TObject);bbOpenIsxodClick(Sender: TObject);butStartStegoClick(Sender: TObject);

{ Private declarations }

{ Public declarations };: TfrmIzoInfo;

{$R *.dfm}TfrmIzoInfo.bbOpenIsxodClick(Sender: TObject);.FileName:='';.Execute();diagOpenPict.FileName<>'' then.Text:=diagOpenPict.FileName;;TfrmIzoInfo.butStartStegoClick(Sender: TObject);Jpeg_im: TJpegImageEx;frmIzoInfo.Tag=0 then_im:= TJpegImageEx.Create;_im.LoadFromFile(edIsxodDir.Text);_im.ExifData.Comments := mmMessage.Text;_im.SaveToFile(edIsxodDir.Text);(Application.Handle, 'Файл успешно перезаписан', 'Ok', MB_OK or MB_ICONINFORMATION);_im.Free;;_im:= TJpegImageEx.Create;_im.LoadFromFile(edIsxodDir.Text);.Text:=Jpeg_im.ExifData.Comments;_im.Free;;;TfrmIzoInfo.FormCreate(Sender: TObject);.InitialDir:=ExtractFilePath(Application.ExeName);;TfrmIzoInfo.FormShow(Sender: TObject);.Lines.Clear;.Text:='';;.frmIzo: TfrmIzo= 0= 0= bsDialog= #1057#1087#1088#1103#1090#1072#1090#1100' '#1074' '#1080#1079#1086#1073#1088#1072#1078#1077#1085#1080#1080= 439= 473= clBtnFace.Charset = DEFAULT_CHARSET.Color = clWindowText.Height = -11.Name = 'Tahoma'.Style = []= False= poDesktopCenter= FormCreate= FormShow= 96= 13imIsxodIzo: TImage= 8= 35= 200= 200= TrueimStegoIzo: TImage= 264= 35= 200= 200= TrueLabel1: TLabel= 8= 236= 200= 21= #1057#1086#1086#1073#1097#1077#1085#1080#1077' '#1076#1083#1103' '#1089#1086#1082#1088#1099#1090#1080#1103':'.Charset = ANSI_CHARSET.Color = clWindowText.Height = -16.Name = 'Palatino Linotype'.Style = [fsBold, fsItalic]= FalsebutSravn: TButton= 248= 386= 218= 47= #1055#1086#1082#1072#1079#1072#1090#1100' '#1080#1079#1086#1073#1088#1072#1078#1077#1085#1080#1103' '#1087#1088#1080' '#1088#1077#1072#1083#1100#1085#1086#1084' '#1084#1072#1089#1096#1090#1072#1073#1077.Charset = RUSSIAN_CHARSET.Color = clWindowText.Height = -16.Name = 'Palatino Linotype'.Style = [fsBold, fsItalic]= False= 0= True= butSravnClickmmMessage: TMemo= 8= 260= 458= 89.Charset = RUSSIAN_CHARSET.Color = clWindowText.Height = -13.Name = 'Times New Roman'.Style = []= False= ssBoth= 1butStartStego: TButton= 248= 355= 218= 27= #1057#1087#1088#1103#1090#1072#1090#1100' '#1089#1086#1086#1073#1097#1077#1085#1080#1077.Charset = RUSSIAN_CHARSET.Color = clWindowText.Height = -16.Name = 'Palatino Linotype'.Style = [fsBold, fsItalic]= False= 2= butStartStegoClickedIsxodDir: TEdit= 8= 8= 185= 21= 3= edIsxodDirDblClickbbOpenIsxod: TBitBtn= 192= 8= 21= 21= True.Data = {

D4202000000000000420000002800000010000000100000000100

E0000202E00000000000000000000007C0000E003

F000000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FBB7BFF7FFF7FFFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F977FA76E42666A318E2DAFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FBC7FED76A0764062606A60450000

C31BD77FF7FFF7FFF7FFF7FDE7F307BA376806EE176A26A235A227F2031

FF7FFF7FFF7F557BC676A072C076E276E276A26E0356037B6066

FF7FFF7F787BEA76A076E076027B027BE276E27AA26E435EA36AA072

FFF7FFF7FDD7FA476A076E276027B027B027BE276027BC272425E8462C076ABD7BFF7FDD7FC376E076027B027B027B027B227F227F4266635E6356C36E

ECF66FF7FDD7FC376C076027B027B027B227F027B826A43626362835EE372A435EDE7BBC7BC376C076E276027B227FC2724366445EA366C26E027BE27AA606AAD66BC7FC372C076E276227FA26E235A8562A46AE276027BE276C276

BA072255EBC7FC372A072027BC072025E465AA366027F017BA072A072E172

A65667977BC7FC376C072806E456A465E8362E276C076406AED72077B606AABC7BFF7FDB7F80724066F06EDE7B4F7B8072606E64665673FF7FFD7F977BFFF7FFF7FFD7FED763673FF7FFF7FDC7F0D7BCD6EBC7BFF7FFF7FFF7FFF7FFFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFFF7FFF7F}= False= 4= bbOpenIsxodClickedStegoDir: TEdit= 261= 8= 188= 21= 5= edStegoDirDblClickbbOpenStego: TBitBtn= 445= 8= 21= 21= True.Data = {

D4202000000000000420000002800000010000000100000000100

E0000202E00000000000000000000007C0000E003

F000000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FBB7BFF7FFF7FFFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F977FA76E42666A318E2DAFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FBC7FED76A0764062606A60450000

C31BD77FF7FFF7FFF7FFF7FDE7F307BA376806EE176A26A235A227F2031

FF7FFF7FFF7F557BC676A072C076E276E276A26E0356037B6066

FF7FFF7F787BEA76A076E076027B027BE276E27AA26E435EA36AA072

FFF7FFF7FDD7FA476A076E276027B027B027BE276027BC272425E8462C076ABD7BFF7FDD7FC376E076027B027B027B027B227F227F4266635E6356C36E

ECF66FF7FDD7FC376C076027B027B027B227F027B826A43626362835EE372A435EDE7BBC7BC376C076E276027B227FC2724366445EA366C26E027BE27AA606AAD66BC7FC372C076E276227FA26E235A8562A46AE276027BE276C276

BA072255EBC7FC372A072027BC072025E465AA366027F017BA072A072E172

A65667977BC7FC376C072806E456A465E8362E276C076406AED72077B606AABC7BFF7FDB7F80724066F06EDE7B4F7B8072606E64665673FF7FFD7F977BFFF7FFF7FFD7FED763673FF7FFF7FDC7F0D7BCD6EBC7BFF7FFF7FFF7FFF7FFFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFFF7FFF7F}= False= 6= bbOpenStegoClickdiagOpenPict: TOpenPictureDialog=

'All (*.jpg;*.bmp)|*.jpg;*.bmp|JPEG Image File (*.jpg)|*.jpg|Bitm' +

'aps (*.bmp)|*.bmp'= 224= 8diagSavePict: TSavePictureDialog= '.bmp'= 'Bitmaps (*.bmp)|*.bmp'= 224= 56

unIzo;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ExtCtrls, Mask, Buttons, ExtDlgs, JPEG, unSravnenie;= class(TForm): TImage;: TImage;: TButton;: TLabel;: TMemo;: TButton;: TOpenPictureDialog;: TEdit;: TBitBtn;: TEdit;: TBitBtn;: TSavePictureDialog;FormCreate(Sender: TObject);edIsxodDirDblClick(Sender: TObject);edStegoDirDblClick(Sender: TObject);bbOpenIsxodClick(Sender: TObject);bbOpenStegoClick(Sender: TObject);FormShow(Sender: TObject);butStartStegoClick(Sender: TObject);butSravnClick(Sender: TObject);

{ Private declarations }

{ Public declarations };: TfrmIzo;:boolean;

{$R *.dfm}TfrmIzo.bbOpenIsxodClick(Sender: TObject);pict_jpg:TJPEGImage;.FileName:='';.Execute();diagOpenPict.FileName<>'' then.Text:=diagOpenPict.FileName;copy(diagOpenPict.FileName, length(diagOpenPict.FileName)-3,4)='.jpg' then_jpg:=TJPEGImage.Create;_jpg.LoadFromFile(diagOpenPict.FileName);.Picture.Assign(pict_jpg);(pict_jpg);.Picture.LoadFromFile(diagOpenPict.FileName);;;TfrmIzo.bbOpenStegoClick(Sender: TObject);.FileName:='';.Execute();diagSavePict.FileName<>'' then.Text:=diagSavePict.FileName;;TfrmIzo.butSravnClick(Sender: TObject);stego=false then exit;.imIsxod.Picture:=imIsxodIzo.Picture;.imStego.Picture:=imStegoIzo.Picture;.ShowModal;;TfrmIzo.butStartStegoClick(Sender: TObject);i,j,l,ns,nb:integer;_jpg:TJPEGImage;_bmp:TBitmap;_word:word;

//q:int64;:TStream;edIsxodDir.Text='' then(Application.Handle,'Не указан путь исходного изображения.', 'Error', MB_OK or MB_ICONERROR);;;edStegoDir.Text='' then(Application.Handle,'Не указан путь конечного изображения.', 'Error', MB_OK or MB_ICONERROR);;;

//showmessage(copy(diagOpenPict.FileName, length(diagOpenPict.FileName)-3,4));copy(diagOpenPict.FileName, length(diagOpenPict.FileName)-3,4)='.jpg' then_jpg:=TJPEGImage.Create;_jpg.LoadFromFile(diagOpenPict.FileName);_bmp:=TBitmap.Create;_bmp.Assign(pict_jpg);(pict_jpg);_bmp:=TBitmap.Create;_bmp.LoadFromFile(diagOpenPict.FileName);;

{if pict_bmp.Width*pict_bmp.Height*sizeof(integer)<length(Text)*2 then(Application.Handle,'Данное сообщение невозможно спрятать в этом изображении.', 'Error', MB_OK or MB_ICONERROR);;;}:=0;:=1;:=0;_word:=ord(mmMessage.Text[ns]);

//showmessage(IntToHex(sim_word,4));:=TMemoryStream.Create;.Lines.SaveToStream(data);.Seek(0,soFromBeginning);.Read(sim_word,2);(pict_bmp.Width*pict_bmp.Height-2)*sizeof(integer)<(data.Size+8) then(Application.Handle,'Данное сообщение невозможно спрятать в этом изображении.', 'Error', MB_OK or MB_ICONERROR);(pict_bmp);(data);;;i:=0 to pict_bmp.Width-1 doj:=0 to pict_bmp.Height-1 do(data.Position=data.Size)and(l mod 16=0) then break;(l mod 16=0)and(l<>0) then:=ns+1;.Read(sim_word,2);:=0;;

//showmessage(inttostr(ord(mmMessage.Text[ns]))+' '+chr(ord(mmMessage.Text[ns])));(sim_word and (1 shl nb))<>0 then_bmp.Canvas.Pixels[i,j]:=pict_bmp.Canvas.Pixels[i,j] or (1 shl 0)_bmp.Canvas.Pixels[i,j]:=pict_bmp.Canvas.Pixels[i,j] and not (1 shl 0);:=l+1;:=nb+1;(data.Position=data.Size)and(l mod 16=0) then break;(l mod 16=0)and(l<>0) then:=ns+1;.Read(sim_word,2);:=0;;(sim_word and (1 shl nb))<>0 then_bmp.Canvas.Pixels[i,j]:=pict_bmp.Canvas.Pixels[i,j] or (1 shl 1)_bmp.Canvas.Pixels[i,j]:=pict_bmp.Canvas.Pixels[i,j] and not (1 shl 1);:=l+1;:=nb+1;(data.Position=data.Size)and(l mod 16=0) then break;(l mod 16=0)and(l<>0) then:=ns+1;.Read(sim_word,2);:=0;;(sim_word and (1 shl nb))<>0 then_bmp.Canvas.Pixels[i,j]:=pict_bmp.Canvas.Pixels[i,j] or (1 shl 2)_bmp.Canvas.Pixels[i,j]:=pict_bmp.Canvas.Pixels[i,j] and not (1 shl 2);:=l+1;:=nb+1;;;i:=0 to 31 do(data.Size and (1 shl i))<>0 then_bmp.Canvas.Pixels[pict_bmp.Width-1,pict_bmp.Height-2]:=pict_bmp.Canvas.Pixels[pict_bmp.Width-1,pict_bmp.Height-2] or (1 shl i)_bmp.Canvas.Pixels[pict_bmp.Width-1,pict_bmp.Height-2]:=pict_bmp.Canvas.Pixels[pict_bmp.Width-1,pict_bmp.Height-2] and not (1 shl i);:=i+32;(data.Size and (1 shl j))<>0 then_bmp.Canvas.Pixels[pict_bmp.Width-1,pict_bmp.Height-1]:=pict_bmp.Canvas.Pixels[pict_bmp.Width-1,pict_bmp.Height-1] or (1 shl i)_bmp.Canvas.Pixels[pict_bmp.Width-1,pict_bmp.Height-1]:=pict_bmp.Canvas.Pixels[pict_bmp.Width-1,pict_bmp.Height-1] and not (1 shl i);;_bmp.SaveToFile(edStegoDir.Text);.Picture.Assign(pict_bmp);(pict_bmp);(data);:=true;;TfrmIzo.edIsxodDirDblClick(Sender: TObject);.Click;;TfrmIzo.edStegoDirDblClick(Sender: TObject);.Click;;TfrmIzo.FormCreate(Sender: TObject);.InitialDir:=ExtractFilePath(Application.ExeName);.InitialDir:=ExtractFilePath(Application.ExeName);

//diredIsxod.;TfrmIzo.FormShow(Sender: TObject);.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'Question.bmp');.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'Question.bmp');.Text:='';.Text:='';.Lines.Clear;:=false;;.frmIzvlechMessage: TfrmIzvlechMessage= 0= 0= bsDialog= #1048#1079#1074#1083#1077#1095#1100' '#1089#1086#1086#1073#1097#1077#1085#1080#1077' '#1080#1079' '#1080#1079#1086#1073#1088#1072#1078#1077#1085#1080#1103= 388= 428= clBtnFace.Charset = DEFAULT_CHARSET.Color = clWindowText.Height = -11.Name = 'Tahoma'.Style = []= False= FormShow= 96= 13imIsxodIzo: TImage= 8= 35= 402= 200= TrueLabel1: TLabel= 8= 236= 183= 21= #1048#1079#1074#1083#1077#1095#1105#1085#1085#1086#1077' '#1089#1086#1086#1073#1097#1077#1085#1080#1077':'.Charset = ANSI_CHARSET.Color = clWindowText.Height = -16.Name = 'Palatino Linotype'.Style = [fsBold, fsItalic]= FalseedIsxodDir: TEdit= 8= 8= 385= 21= 0mmMessage: TMemo= 8= 260= 402= 89.Charset = RUSSIAN_CHARSET.Color = clWindowText.Height = -13.Name = 'Times New Roman'.Style = []= False= ssBoth= 1butStartStego: TButton= 266= 355= 154= 27= #1048#1079#1074#1083#1077#1095#1100' '#1089#1086#1086#1073#1097#1077#1085#1080#1077.Charset = RUSSIAN_CHARSET.Color = clWindowText.Height = -16.Name = 'Palatino Linotype'.Style = [fsBold, fsItalic]= False= 2= butStartStegoClickbbOpenIsxod: TBitBtn= 389= 8= 21= 21= True.Data = {

D4202000000000000420000002800000010000000100000000100

E0000202E00000000000000000000007C0000E003

F000000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FBB7BFF7FFF7FFFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F977FA76E42666A318E2DAFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FBC7FED76A0764062606A60450000

C31BD77FF7FFF7FFF7FFF7FDE7F307BA376806EE176A26A235A227F2031

FF7FFF7FFF7F557BC676A072C076E276E276A26E0356037B6066

FF7FFF7F787BEA76A076E076027B027BE276E27AA26E435EA36AA072

FFF7FFF7FDD7FA476A076E276027B027B027BE276027BC272425E8462C076ABD7BFF7FDD7FC376E076027B027B027B027B227F227F4266635E6356C36E

ECF66FF7FDD7FC376C076027B027B027B227F027B826A43626362835EE372A435EDE7BBC7BC376C076E276027B227FC2724366445EA366C26E027BE27AA606AAD66BC7FC372C076E276227FA26E235A8562A46AE276027BE276C276

BA072255EBC7FC372A072027BC072025E465AA366027F017BA072A072E172

A65667977BC7FC376C072806E456A465E8362E276C076406AED72077B606AABC7BFF7FDB7F80724066F06EDE7B4F7B8072606E64665673FF7FFD7F977BFFF7FFF7FFD7FED763673FF7FFF7FDC7F0D7BCD6EBC7BFF7FFF7FFF7FFF7FFFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFFF7FFF7F}= False= 3= bbOpenIsxodClickdiagOpenPict: TOpenPictureDialog= 'Bitmaps (*.bmp)|*.bmp'= 208= 232

unIzvlechMessage;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, JPEG, ExtDlgs, ExtCtrls, Buttons, StdCtrls;= class(TForm): TEdit;: TImage;: TOpenPictureDialog;: TLabel;: TMemo;: TButton;: TBitBtn;bbOpenIsxodClick(Sender: TObject);butStartStegoClick(Sender: TObject);FormShow(Sender: TObject);

{ Private declarations }

{ Public declarations };: TfrmIzvlechMessage;

{$R *.dfm}TfrmIzvlechMessage.bbOpenIsxodClick(Sender: TObject);.FileName:='';.Execute();diagOpenPict.FileName<>'' then.Text:=diagOpenPict.FileName;.Picture.LoadFromFile(diagOpenPict.FileName);;;TfrmIzvlechMessage.butStartStegoClick(Sender: TObject);i,j,nb:integer;_bmp:TBitmap;_b:word;:int64;:TStream;edIsxodDir.Text='' then(Application.Handle,'Не указан путь исходного изображения.', 'Error', MB_OK or MB_ICONERROR);;;_bmp:=TBitmap.Create;_bmp.LoadFromFile(diagOpenPict.FileName);:=TMemoryStream.Create;.Seek(0,soFromBeginning);:=0;_b:=0;:=0;i:=0 to 31 do(pict_bmp.Canvas.Pixels[pict_bmp.Width-1,pict_bmp.Height-2] and (1 shl i))<>0 then:=sizeofdata or (1 shl i):=sizeofdata and not (1 shl i);(pict_bmp.Canvas.Pixels[pict_bmp.Width-1,pict_bmp.Height-1] and (1 shl i))<>0 then:=sizeofdata or (1 shl (i+32)):=sizeofdata and not (1 shl (i+32));;i:=0 to pict_bmp.Width doj:=0 to pict_bmp.Height do(data.Size=sizeofdata)and(nb mod 16 =0) then break;(nb mod 16 =0)and(nb<>0) then:=0;.Write(sim_b,2);

//text:=text+chr(sim_b);;(pict_bmp.Canvas.Pixels[i,j] and (1 shl 0))<>0 then_b:=sim_b or (1 shl nb)_b:=sim_b and not (1 shl nb);:=nb+1;(data.Size=sizeofdata)and(nb mod 16 =0) then break;(nb mod 16 =0)and(nb<>0) then:=0;.Write(sim_b,2);

//text:=text+chr(sim_b);;(pict_bmp.Canvas.Pixels[i,j] and (1 shl 1))<>0 then_b:=sim_b or (1 shl nb)_b:=sim_b and not (1 shl nb);:=nb+1;(data.Size=sizeofdata)and(nb mod 16 =0) then break;(nb mod 16 =0)and(nb<>0) then:=0;.Write(sim_b,2);

//text:=text+chr(sim_b);;(pict_bmp.Canvas.Pixels[i,j] and (1 shl 2))<>0 then_b:=sim_b or (1 shl nb)_b:=sim_b and not (1 shl nb);:=nb+1;;

//mmMessage.Text:=text;.Seek(0,soFromBeginning);.Lines.LoadFromStream(data);(pict_bmp);;TfrmIzvlechMessage.FormShow(Sender: TObject);.Text:='';.Text:='';.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'Question.bmp');;.frmMain: TfrmMain= 0= 0= [biSystemMenu, biMinimize]= #1057#1090#1077#1075#1072#1085#1086#1075#1088#1072#1092#1080#1103' '#1089' '#1080#1079#1086#1073#1088#1072#1078#1077#1085#1080#1077#1084= 155= 419= clBtnFace.Charset = RUSSIAN_CHARSET.Color = clWindowText.Height = -16.Name = 'Palatino Linotype'.Style = [fsBold, fsItalic]= False= poDesktopCenter= (


)= 96= 21butIzo: TButton= 8= 8= 401= 28= [akLeft, akRight]= #1057#1087#1088#1103#1090#1072#1090#1100' '#1089#1086#1086#1073#1097#1077#1085#1080#1077' '#1074' '#1080#1079#1086#1073#1088#1072#1078#1077#1085#1080#1080' '= 0= butIzoClickbutInfoIzo: TButton= 8= 45= 401= 28= [akLeft, akRight]= #1057#1087#1088#1103#1090#1072#1090#1100' '#1089#1086#1086#1073#1097#1077#1085#1080#1077' '#1074' '#1080#1085#1092#1086#1088#1084#1072#1094#1080#1080' '#1092#1072#1081#1083#1072' JPEG '= 1= True= butInfoIzoClickbutStegoIzo: TButton= 8= 79= 401= 28= [akLeft, akRight]= #1048#1079#1074#1083#1077#1095#1100' '#1089#1086#1086#1073#1097#1077#1085#1080#1077' '#1080#1079' '#1080#1079#1086#1073#1088#1072#1078#1077#1085#1080#1103= 2= butStegoIzoClickbutStegoInfoIzo: TButton= 8= 116= 401= 28= [akLeft, akRight]= #1048#1079#1074#1083#1077#1095#1100' '#1089#1086#1086#1073#1097#1077#1085#1080#1077' '#1080#1079' '#1080#1085#1092#1086#1088#1084#1072#1094#1080#1080' '#1092#1072#1081#1083#1072' JPEG '= 3= True= butStegoInfoIzoClick

unMainForm;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, unIzo, unIzvlechMessage, unInfoIzo;= class(TForm): TButton;: TButton;: TButton;: TButton;butIzoClick(Sender: TObject);butStegoIzoClick(Sender: TObject);butInfoIzoClick(Sender: TObject);butStegoInfoIzoClick(Sender: TObject);

{ Private declarations }

{ Public declarations };: TfrmMain;

{$R *.dfm}TfrmMain.butInfoIzoClick(Sender: TObject);.Tag:=0;.butStartStego.Caption:='Спрятать сообщение';

frmIzoInfo.Label1.Caption:='Сообщение для сокрытия:';.Caption:='Спрятать сообщение в информации к файлу';

frmIzoInfo.ShowModal;;TfrmMain.butIzoClick(Sender: TObject);.ShowModal;;TfrmMain.butStegoInfoIzoClick(Sender: TObject);.Tag:=1;.butStartStego.Caption:='Получить сообщение';.Label1.Caption:='Сообщение:';

frmIzoInfo.Caption:='Получить сообщение из информации к файлу';

frmIzoInfo.ShowModal;;TfrmMain.butStegoIzoClick(Sender: TObject);.ShowModal;;.frmSravnenie: TfrmSravnenie= 0= 0= bsDialog= #1048#1089#1093#1086#1076#1085#1086#1077' '#1080#1079#1086#1073#1088#1072#1078#1077#1085#1080#1077' '#1080' '#1080#1079#1086#1073#1088#1072#1078#1077#1085#1080#1077' '#1089' '#1089#1086#1086#1073#1097#1077#1085#1080#1077#1084= 350= 700= clBtnFace.Charset = DEFAULT_CHARSET.Color = clWindowText.Height = -11.Name = 'Tahoma'.Style = []= False= poDesktopCenter= 96= 13imIsxod: TImage= 0= 0= 350= 350= alLeftimStego: TImage= 350= 0= 350= 350= alClient= 337= 380

unSravnenie;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls;= class(TForm): TImage;: TImage;

{ Private declarations }

{ Public declarations };: TfrmSravnenie;

{$R *.dfm}.


Курсовая работа на тему: Исследование стеганографических алгоритмов защиты информации Введение Сегод

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ