- •Отчет Бишкек 2023 Введение
- •Первая презентация: Алгоритмы и методы цифровой аудио стеганографии
- •История стеганографии
- •Стеганография или криптография ?
- •Методы и алгоритмы
- •Вторая презентация: Алгоритмы и методы цифровой аудио стеганографии (практика)
- •Реализация
- •Третья презентация: Применение стеганографии
- •Четвертая презентация: Алгоритм стеганографии Least Significant Bit (Наименьшие Значащие Биты)
- •Почему это работает?
- •А где котик?
- •Пятая презентация: Итоги. Дальнейшие видение Стеганографии
- •Приведем схему алгоритма кодирования
- •Приведем схему алгоритма кодирования текста
- •Реализация
- •Заключение
Четвертая презентация: Алгоритм стеганографии Least Significant Bit (Наименьшие Значащие Биты)
В четвертой презентации мне нужно было выбрать и разобрать один алгоритм, для этого я выбрал Least Significant Bit (Наименьшие Значащие Биты).
Наиболее популярной цветовой моделью является RGB, где цвет представляется в виде трех составляющих: красного, зеленого и голубого. Каждая компонента кодируется в классическом варианте с помощью 8 бит, то есть может принимать значение от 0
до 255. Именно здесь и прячется наименее значащий бит. Важно понять, что на один RGB-цвет приходится приходится аж три таких бита.
Чтобы представить их более наглядно, проделаем пару небольших манипуляций.
Как и было обещано, возьмем картинку с котиком в png формате.
Разобьем её на три канала и в каждом канале возьмем наименее значащий бит. Создадим три новых изображения, где каждый пиксель обозначает НЗБ. Ноль — пиксель белый, единица соответственно черный.
Получаем вот что.
Красный канал
Зеленый канал
Синий канал
Но, как правило, изображение встречается в «собранном виде». Чтобы представить НЗБ трех компонент в одном изображении, достаточно компоненту в пикселе, где НЗБ равен единице, заменить на 255, и в обратном случае заменить на 0.
Тогда получается вот это
Почему это работает?
Посмотрите на изображения ниже.
Это незаполненный стегоконтейнер:
А это заполненный на 95%:
Видите разницу? А она есть. Почему так?
Посмотрим на два цвета: (0, 0, 0) и (1, 1, 1), то есть на цвета, различные только НЗБ в каждой компоненте.
Небольшие различия в пикселях при первом, втором и третьем взгляде, заметны не будут. Дело в том, что наш глаз может различить около 10 миллионов цветов, а мозг всего лишь около 150. Модель RGB же содержит 16 777 216 цветов.
А где котик?
И первой в списке атак на LSB-стеганографию выступает визуальная атака. Звучит странно, не правда ли? Ведь котик с секретом никак не выдавал себя как заполненный стегоконтейнер на первый взгляд. Хммм… Нужно всего лишь знать, куда смотреть. Несложно догадаться, что нашего пристального внимания заслуживают только НЗБ.
У заполненого стегоконтейнера изображение с НЗБ выглядит так:
Не верите? Вот вам НЗБ со всех трех каналов отдельно:
Красный канал
Зеленый канал
Синий канал
Это специфичный для сокрытия сообщения «рисунок» в НЗБ. На первый взгляд это кажется простым шумом. Но при рассмотрении проглядывается структура. Здесь видно, что стегоконтейнер заполнен под завязку. Если бы мы взяли сообщение в 30% от вместимости бедного котика, то получили такую бы картину:
Его НЗБ:
~70% котика осталось неизменным.
Что такое 30% котика?
Размер котика 603х433 пикселей.
30% от этого размера равны 78 329 пикселям.
В каждый пиксель помещается 3 бита информации.
Итого 78 329 * 3 = 234 987 бит или чуть меньше, чем 30 килобайт помещается в 30% котика.
А в целого котика поместится около 100 килобайт. Такие дела.