Стеганография и опасность использования сторонних библиотек на примере steghide
Стеганография — учение о способах скрытой передачи информации при сокрытии самого факта передачи.
steghide — утилита для цифровой стеганографии.
libjpeg — библиотека для работы с jpg-изображениями.
Давайте создадим стегоконтейнер с помощью steghide. Возьмем вот это изображение и спрячем в него ЦП с паролем cp.
steghide embed -p cp -cf "Siberian_Husky_heterchromia_edit.jpg" -ef "cp.jpg" -sf result.jpg
Визуально изображения практически не отличаются (изображения уменьшены).
На первый взгляд мы надежно спрятали ЦП и никто не сможет даже подумать о том, что внутри изображения пса с гетерохромией есть что-то еще. Но если мы откроем в hex-редакторе наш стегоконтейнер (я использовал GHex), то увидим вот это.
&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
и &'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
присутствуют в каждом стегоконтейнере (на самом деле они длиннее, но думаю нет смысла показывать их целиком), созданном steghide. Эти строки туда добавляет libjpeg и они не уникальны для steghide. Например, GIMP, который тоже использует libjpeg, добавляет в сохраняемые изображения то же самое.
Наличие этих строк, конечное, позволяет увеличить вероятность того, что изображение — стегоконтейнер, хотя и не дает полной гарантии. А подобное установление самого факта передачи информации не совместимо с принципам стеганографии. С ответственностью подходите к выбору библиотек, когда пишете что-то подобное.