Стеганография – это искусство и наука написания скрытого сообщения таким образом, чтобы никто, кроме отправителя и предполагаемого получателя, не подозревал о существовании сообщения.
Стеганография изображения – это метод сокрытия данных в изображении таким образом, что не позволяет непреднамеренному пользователю обнаруживать скрытые сообщения или данные.
Связанная теория:
Изображения состоят из маленьких точек, называемых пикселями. Каждый пиксель представлен 3 байтами: один для красного, один для зеленого и один для синего. Композиция этих трех цветов определяет фактический цвет, который показывает пиксель.
Красный:
Двоичный код: 11001001
Десятичное число: 201
Зеленый цвет:
Двоичный код: 11111000
Десятичное число: 201
Синий:
Двоичный код: 00000011
Десятичное число: 3
Эта композиция рождает оранжевый цвет.
Основная идея Image Steganography заключается в том, что изменение наименьшего значащего бита (LSB) не обнаруживается человеческим глазом. Поэтому мы модифицируем младший бит значения RGB, чтобы сохранить скрытое сообщение в сообщении, не влияя на цвет изображения.
В этом примере мы меняем только LSB синего компонента. Но мы можем изменить LSB всех компонентов Red, Green и Blue, если захотим. Поскольку мы меняем только младший бит синего компонента, количество информации, которое мы можем скрыть, уменьшается. Мы также можем сохранить длину скрытого сообщения в изображении, которое не было сделано в этом руководстве.
Предположим, мы хотим скрыть 1101 в изображении.
Сначала мы получаем значение RGB каждого пикселя в изображении. Поскольку мы скрываем 4-битные данные и меняем синий компонент, поэтому нам нужно 4 пикселя изображения.
Предположим, мы получили следующие значения RGB в первых 4 пикселях изображения:
11001100 10010001 00101011
00011000 11110000 11111110
11100010 00100101 01010101
11111101 00001010 01000011
Теперь мы заменим последний бит значения RGB каждого пикселя на 1101 последовательно.
Итак, новое значение RGB становится:
11001100 10010001 00101011
00011000 11110000 11111111
11100010 00100101 01010100
11111101 00001010 01000011
Выделенный бит представляет сообщение, которое мы скрываем на изображении.
Теперь мы устанавливаем новое значение RGB в пиксель. Это изменение не обнаружено человеческим глазом, и изображение выглядит одинаково.
Зелье шифрования завершено, и теперь мы расшифруем скрытое сообщение на картинке.
Для этого мы выбираем значение RGB каждого пикселя, а затем соединяем LSB, чтобы получить наше скрытое сообщение.
Реализация с PHP
Нам нужно одно изображение и три php-скрипта для реализации базовой стеганографии изображения.
- encrypt.php
- decrypt.php
- functions.php
- 1.jpg
encrypt.php
decrypt.php
functions.php
Источник записи: https://thedebuggers.com