Pull to refresh
-2
0
Валерий Лощенков @uncle_goga

Blockchain Dev

Send message

Да забудьте вы про нейросетки, это тупое хайпожорство.

На самом деле для jpeg-a и подобных форматов есть 3 уровня стеганографии:

  1. Передать сообщение от Алисы к Бобу внутри картинки так, чтобы оно не обнаруживалось "гражданским" софтом;

  2. Передать сообщение через облачную инфраструктуру, условно Whatsapp, которая в процессе передачи ресайзит и пережимает изображения вообще в другой формат (условно webp)

  3. Передать сообщение от Гитлера Паулюсу так, чтобы его не перехватил Моссад.

Решения, соответственно, зависят:

  1. Можно создать свой кастомный тег, или не создавать, а просто выделить под него область в файле. Весь софт и то и другое проигнорирует, ну есть байты и есть. Это by design так. Точно так же браузеры игнорируют неизвестные теги или конструкции CSS.

  2. Здесь придётся покурить косинус-преобразование и его конкретные реализации. Соотношение открытых и секретных данных 1:8 конечно не получится, а вот что-то типа 1:1000 легко. Никаких нейросеток, это суровый, но точный матан.

  3. Если вас пасёт Моссад, у меня для вас плохие новости: вам, вероятно, не до стеганографии.

Вы наверняка знаете, что некоторые форматы фото (например, JPEG) сильно сжимают исходное изображение, используя различные математические техники (например, вейвлет Хаара). Что же происходит со встраиваемым фото в таком случае? Оно с наибольшей вероятностью уничтожается, и при попытке извлечения мы увидим лишь шум.

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


Хочется высказать несколько очевидных мыслей на эту тему:

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

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

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

Исходя из этих нехитрых наблюдений, можно попробовать сделать что-то такое: выбрать радиус окрестности, построить по нему карту спектральной плотности изображения, не забывая отрезать высокие частоты. Дальше закодировать скрытое изображение в виде деформации спектра заранее известным нам образом (здесь может быть большое поле для размылений над механикой реализации такого способа). Понятно, что большого относительного объема "памяти" ожидать от такого способа хранения не стоит, но зато он будет обладать усточивостью к lossy-сжатию, что зачастую значительно приоритетнее.

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

Information

Rating
Does not participate
Location
Россия
Registered
Activity

Specialization

Blockchain Developer
Middle