LINUX.ORG.RU

Не могу правильно разработать алгоритм

 ,


2

1

Добрый вечер. В экспериментальных целях хочу сделать следующий алгоритм (на питоне если что).

Есть изображение и некий ключ (произвольная строка). Задача в том чтобы каким-то образом превратить изображение по ключу в визуальный мусор и затем, соответственно по этому же ключу, вернуть его в первозданный вид. Какие варианты можно придумать? Копать в сторону перемещения пикселей или может работать с цветами пикселей? Хотелось бы услышать здравые идеи.

★★

Последнее исправление: Andreezy (всего исправлений: 1)

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

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 2)
Ответ на: комментарий от peregrine

Инфу прятать в изображении не надо. Насчет цвета пикселей. У нас есть строка-ключ - «secret_key», x, y координаты пикселей и RGB пикселя (0-255). И я думаю как это консолидировать для моей задачи

Andreezy ★★
() автор топика
Ответ на: комментарий от Andreezy

Зачем так усложнять? Во-первых, можно просто шифровать байтовый поток, как шифруют абсолютно любые файлы, во-вторых, можно вместо потока шифровать значения пикселей, это числа, RGB можно и одним числом выразить, было бы желание.

peregrine ★★★★★
()
Ответ на: комментарий от anonymous

Ну можно контейнер поломать таким шифрованием, что файл некорректно будет читаться. ТС внутрь контейнера хочет залезть, как я понял. Т.е. ему сначала цвет пикселей надо изъять в матрицу, её зашифровать и заново запаковать в контейнер.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от peregrine

ну так хедер можно заново прилепить, например .bmp проще всего

anonymous
()

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

Harald ★★★★★
()
Ответ на: комментарий от peregrine

Аааа, я понял, вы предлагаете не по пикселям менять, а сразу все байтовое тело изображения (но без хедеров). А оно вообще откроется?

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

так разницы никакой, вопрос в том, откроется ли в редакторе закодированное?

Andreezy ★★
() автор топика
Последнее исправление: Andreezy (всего исправлений: 1)
Ответ на: комментарий от Andreezy

gimp может открывать raw файлы без хедеров (даётся выбор формата пикселей)

anonymous
()
Ответ на: комментарий от Harald

для несжатых форматов (bmp) прокатит без проблем, для сжатых JPG, PNG и прочих не прокатит

вот проблемка

Andreezy ★★
() автор топика
Ответ на: комментарий от Andreezy

Если аккуратно извлечь - раскодировать через какую-нибудь библиотеку работы с форматом в котором оно хранится, зашифровать не меняя количество пикселей, а потом обратно закодировать через библиотеку, то не вижу причин (вот только для алгоритмов хранения изображений с потерями всё не так хорошо, но с PNG должно работать). Но всё зависит от алгоритма шифрования, конечно.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от Harald

Ну может быть нужда на фотохостинг заливать, как пример. Или в образовательных целях.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)

сначала цветовая метка потом строка потом цветовая инфориация.

XoFfiCEr ★★☆☆
()
Ответ на: комментарий от Harald

для сжатых JPG, PNG и прочих не прокатит

Это с какого перепугу? Если XOR-ить непосредственно DCT-коэффициенты и чанки, то самое то.

anonymous
()
Ответ на: комментарий от Andreezy

Можно. Всё равно извлекать придётся для попиксельного. Это уже детали алгоритма

peregrine ★★★★★
()

Хотелось бы услышать здравые идеи.

Кроме очевидного первого правила криптографии? Первый коммент глянь.

t184256 ★★★★★
()

«ключом» генерится матрица такого-же размера как изображение, потом старый добрый XOR :-)

MKuznetsov ★★★★★
()

Мусор непременно должен быть визуальным? Или всё-таки контейнер не обязательно должен быть изображением?
Тогда упаковка архиватором с паролем тоже подходит под условия задачи.

blexey ★★★★★
()
Последнее исправление: blexey (всего исправлений: 1)
Ответ на: комментарий от Andreezy

понятно что это

Скриншот /dev/random

и оно может быть дешифровано

В исходное состояние ГПСЧ

ratvier ★★
()
$ cp визуальныймусор.bmp зашифрованныйрисунок.bmp
$ openssl enc -in рисунок.jpg >> зашифрованныйрисунок.bmp
$ tail зашифрованныйрисунок.bmp > зашифрованныйрисунок.jpg
$ openssl enc -d -in зашифрованныйрисунок.jpg > рисунок.jpg
anonymous
()
Ответ на: комментарий от t184256

Кроме очевидного первого правила криптографии?

Не изобретать велосипед?

WitcherGeralt ★★
()
Ответ на: комментарий от cdshines

Ого, не знал что есть такое уже готовое

Andreezy ★★
() автор топика

Какие варианты можно придумать?

Чем тебя обычные алгоритмы шифрования не устроили? Ну а так вообще, по ключу генерируй псевдорандом и делай xor с картинкой.

no-such-file ★★★★★
()
Ответ на: комментарий от Harald

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

Для хорошего шифрования без разницы. А если тупо коротким ключом xor-ить то будет видно паттерн, да и вообще изображение не особо «зашифруется».

no-such-file ★★★★★
()

То что ты изобретаешь, называется стеганография. Для jpg картиночек и mp3 файликов обычно делается в частотном пространстве, а не с «перемешиванием писелей».

nikitos ★★★
()
Ответ на: комментарий от nikitos

Нет, стеганография когда незаметно, а у автора:

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

Чувак хочет мусор. Если AES, то нужно озаботится режимом шифрования. Т.к. на ECB будут видны контуры изображения. Но это для bmp актуально, если там какое-то сжатие у изображения, то не знаю.

ox55ff ★★★★★
()
Ответ на: комментарий от Andreezy

То что делает любой алгоритм шифрования - переставляет биты в последовательности битов. Картинка -> пикселы -> цвета -> биты. Только при сохранении картинки используй lossless форматы

cobold ★★★★★
()

Вот пример. Картинка проксоренная по трем цветам отдельно. Видны контуры, восстановить в исходную теоретически возможно если знать степень сжатия и аргументы искл. ИЛИ.

http://xofficer.ru/images/output.jpeg

XoFfiCEr ★★☆☆
()
Последнее исправление: XoFfiCEr (всего исправлений: 1)

Главный вопрос. Какой формат хранения изображения будет использоваться? От этого и можно будет начинать думать про варианты.

HIS
()

перемещение пикселей точно не катит - это слишком сложно, в этом случае придется информацию о цвете в массив предварительно записать. А формат в любом случае - truecolor.

XoFfiCEr ★★☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.