Скачать 157.39 Kb.
|
Оглавление Введение...............................................................................................................3 Глава 1. Существующие методы решения задачи............................................4 1.1 Обзор существующих стеганографических алгоритмов.......................4 Глава 2. Реализация методов решения задачи..................................................7 2.1. Разделение секрета...................................................................................7 2.2. Восстановление секрета..........................................................................8 2.2.1 Алгоритм Гаусса................................................................................8 2.3. Встраивание стегосообщения в изображение........................................9 2.4. Извлечение стегосообщения из изображения......................................10 Глава 3. Демонстрация работы программы....................................................11 3.1. Запись стегосообщения.........................................................................11 3.2. Чтение стегосообщения........................................................................12 3.3 Просмотр младших битов изображения...............................................14 Заключение........................................................................................................17 Список использованной литературы...............................................................18 Введение Задача защиты информации от несанкционированного доступа решалась во все времена на протяжении истории человечества. Уже в древнем мире выделилось два основных направления решения этой задачи, существующие и по сегодняшний день. Первым является сокрытие факта передачи информации, а вторым – содержание передаваемого сообщения. Целью криптографии является сокрытие содержимого сообщений за счет их шифрования. В отличие от этого, при стеганографии скрывается сам факт существования тайного сообщения. Совместное использование криптографических и стеганографических методов позволяет достигнуть сохранения целостности данных, поскольку информация сначала шифруется, а затем скрывается в изображении. В настоящее время задача создания программного продукта, обеспечивающего безопасность информации, является актуальной. Поэтому целью данной работы была разработка программы, которая способна максимально скрыть факт передачи информации, при этом сохраняя целостность данных. Постановка задачи Создать программное обеспечение, которое:
^
В настоящее время различаются два основных направления методов компьютерной стеганографии:
Методы, относящиеся к этому направлению, используют зарезервированные для расширения поля компьютерных форматов данных. Такие поля имеются в большинстве мультимедийных файлов, и не используются программами. Эти методы просты в использовании. Недостатками подобных методов является небольшой, ограниченный размер передаваемой информации и легкость обнаружения.
Младшие разряды бит мультимедийных файлов малоинформативны и внесение в них изменений практически не сказывается на качестве передаваемого изображения или звука. Это дает возможность использования их для кодирования конфиденциальной информации. Но при введении дополнительной информации искажаются статистические характеристики передаваемого файла. Поэтому для повышения устойчивости к обнаружению применяют методы коррекции статистических характеристик. Преимуществами данных методов является возможность скрытой передачи большого объема информации. Ниже приведены некоторые методы этого направления.
Цифровые изображения представляют собой матрицу пикселов. Младший значащий бит изображения несет в себе меньше всего информации. Известно, что человек обычно не способен заметить изменение в этом бите. Фактически, он является шумом. Поэтому его можно использовать для встраивания информации. Достоинства рассматриваемого метода заключаются в его простоте и сравнительно большом объеме встраиваемых данных [4].
Пусть изображение имеет RGB-кодировку. Встраивание выполняется в канал синего цвета, так как к синему цвету система человеческого зрения наименее чувствительна. Пусть ![]() ![]() ![]() ![]() ![]() где ![]() ![]() ![]()
Алгоритм работает с блоками ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Если это условие не выполняется, мы изменяем значение яркости пикселов субблока ![]() ![]() ![]() ![]()
ЦВЗ представляет собой двумерный массив бит размером с изображение, причем число единиц в нем равно числу нулей. Существует несколько версий алгоритма, предложенного Питасом. Вначале предлагалось встраивать бит ЦВЗ в каждый пиксел изображения, но позже было решено использовать для этой цели блоки размером ![]() ![]() ![]() ![]() ![]()
Также, как и в предыдущем алгоритме, ЦВЗ представляет собой двумерную матрицу единиц и нулей с примерно равным их количеством. Пикселы, в которые можно внедрять единицы (то есть робастные к искажениям), определяются на основе некоторой характеристической функции (характеристические пикселы). Эта функция вычисляется локально, на основе анализа соседних пикселов. Характеристические пикселы составляют примерно ![]() ^ 2.1 Разделение секрета В криптографии под разделением секрета понимают любой метод распределения секрета среди группы участников, каждому из которых достается доля секрета [3]. В схеме распределения секрета участвуют дилер и ![]() ![]() ![]() ![]() ![]() Для реализации пороговой схемы используется китайская теорема об остатках. Пусть ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разделение секрета реализовано в классе ThresholdScheme.ChinessTheorem.Sharing. Конструктор класса получает на вход стегосообщение, число теней и значение порога. Функции getDividerMassive и getReminderMassive возвращают массивы делителей и остатков соответственно. Стегосообщение и элементы массивов являются экземплярами класса java.math.BigInteger. Секрет задается пользователем, поэтому для корректной реализации пороговой схемы необходимо генерировать ![]() ![]() ![]() ![]() ![]() 2.2 Восстановление секрета Восстановление секрета реализовано в классе ThresholdScheme.ChinessTheorem.Joining. В функцию класса getSecret передается массив делителей, массив остатков, количество доступных частей и используемый алгоритм. Элементы массивов являются экземплярами класса java.math.BigInteger. В функциях GetSecretAlgorithmGauss и GetSecretAlgorithmGarner реализовано восстановление секрета по методу Гаусса и по методу Гарнера соответственно. Функция getSecret возвращает вычисленный секрет. По умолчанию восстановление секрета производится с помощью алгоритма Гарнера. На маленьких числах скорость восстановления различается незначительно, но при увеличении чисел алгоритм Гарнера работает быстрее. 2.2.1 Алгоритм Гаусса Алгоритм основан на формуле данной в китайской теореме об остатках. ![]() где ![]() На входе алгоритм получает массив взаимно простых чисел ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 2.2.2 Алгоритм Гарнера. Из китайской теоремы об остатках следует, что можно заменять операции над числами операциями над кортежами. Напомним, каждому числу ![]() ![]() ![]() ![]() Обозначим ![]() ![]() ![]() ![]() ![]() Подставим выражение ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Подставляя в третье уравнение, аналогичным образом получаем: ![]() ![]() ![]() ![]() Уже достаточно ясно видна закономерность. Итак, мы научились вычислять коэффициенты ![]() ![]() ![]() ![]() 2.3 Встраивание стегосообщения в изображение Программа работает с изображениями в формате BMP и PNG. Для обеспечения независимости алгоритма встраивания от формата изображения, создан абстрактный класс image.Image. Его наследники image.BMPImage и image.PNGImage переопределяют методы получения основной информации об изображении и метод получения частей изображения, в которые происходит встраивание. Пользователем задается количество частей, на которое разбивается секрет, на такое же количество частей логически разделяется изображение. Логическая часть изображения является экземпляром класса image.chunks.ViewChunk — это абстрактный класс, наследниками являются классы image.chunks.PngViewChunk и image.chunks.BmpViewChunk. Контейнером для каждой доли секрета являются части изображения хранящиеся в списке, по каждой из которых осуществляет проход итератор, реализованный в классе image.chunks.ViewChunkIterator. Встраивание осуществляется в один младший значащий бит. Непосредственно запись в изображение осуществляется в классе ImageStego.Embedding. В конструктор класса передается экземпляр класса image.Image. В функцию writeSharesToImage() передается объект Shares. Создается список экземпляров класса image.chunks.ViewChunk и в каждую часть изображения в цикле записывается соответствующая доля. Информация, необходимая для восстановления секрета, экспортируются в файл. Для случая встраивания в PNG предусмотрена возможность сохранения дополнительной информации в метаданных этого файла. Информация представлена в виде «ключ»-«значение». При извлечении идет анализ метаданных на содержание параметров встраивания. Для того чтобы стегосообщение было равномерно распределено по контейнеру используется линейный конгруэнтный метод. Этот метод позволяет генерировать последовательность псевдослучайных чисел. Преимуществом этого метода перед рядом других методов, таких как метод Блюма-Блюма-Шуба(BBS) или метод Фибоначчи с запаздываниями, является то, что он осуществляет генерирование псевдослучайной последовательности на заданном интервале. Алгоритм заключается в итеративном использовании следующей формулы: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Извлечение сообщения реализовано в классе imageStego.Extraction. Функция getSharesFromImage() принимает на вход значение порога, ширину и высоту логической части изображения. Алгоритм извлечения начинается с поиска маски в контейнере. Если маска найдена, то создается логическая часть с известными шириной и высотой части и сравнивается значение хеш-функции с сохраненными значениями. Если совпадает, то часть добавляется в список логических частей. Если нет, то последовательность бит совпала с маской и часть не содержит кода. Переход к следующей найденной маске. Пройдя таким образом все изображение, мы получим список частей, содержащих доли секрета. Получив число долей не меньшее, чем значение порога в пороговой схеме, созданной при встраивании стегасообщения, можно восстановить с помощью алгоритма Гаусса или алгоритма Гарнера, представленных выше. Если маска не найдена, или частей меньше чем порог, то алгоритм заканчивает работу. Код восстановить невозможно и выбрасывается исключение. Для вычисления хеша используется алгоритм криптографического хеширования SHA-1. |
![]() | Межсетевые экраны. Защита от несанкционированного доступа к информации. Показатели защищенности от несанкционированного доступа к... | ![]() | Истории креста, древнего мистического знака, простого и таинственного одновременно, посвящена уникальная книга И. Смирновой. Здесь... |
![]() | Утверждено решением председателя Государственной технической комиссии при Президенте Российской Федерации от 30 марта 1992 г | ![]() | Выбор сертифицированных средств защиты информации традиционно сводится к выбору между наложенными комплексными средствами защиты... |
![]() | Настоящий руководящий документ устанавливает классификацию автоматизированных систем, подлежащих защите от несанкционированного доступа... | ![]() | Настоящий руководящий документ устанавливает классификацию автоматизированных систем, подлежащих защите от несанкционированного доступа... |
![]() | На сегодняшний день задачи создания эффективных средств для автоматизированного исправления разного рода ошибок в текстовой информации... | ![]() | В шри Ланке на сегодняшний день существует уже 7 объектов, включенные юнеско в список всемирного наследия |
![]() | Руководящий документ Гостехкомиссии России «Защита от несанкционированного доступа к информации. Термины и определения». – М.: Гтк... | ![]() | Исэд пк решает задачи организации централизованного хранения информации и предоставления регламентированного доступа пользователей... |