Рейтинг:2

Можно ли зашифровать растровые файлы .bmp с помощью Stream Cipher Chacha20?

флаг in

Может быть, это звучит как глупый вопрос. Извини за это.

Я просто хотел знать, можно ли зашифровать файл растрового изображения, например *.BMP, и сгенерировать зашифрованный текст, который представляет собой неясное растровое изображение, где каждый пиксель является случайным (изображение может выглядеть как аналоговый телевизор без антенны)?

Paul Uszak avatar
флаг cn
Вы имеете в виду зашифровать только растр, чтобы весь файл оставался действительным .BMP?
akez avatar
флаг in
@ Пол Ушак, да, точно.
Рейтинг:1
флаг in

Да, изображение BMP можно зашифровать любым потоковым шифром.

В первую очередь нужно разрезать первые 54 байта изображения BMP в другой файл. В этот момент начинается часть данных. Затем остальное можно зашифровать любым потоковым шифром. После этого добавьте заголовок к зашифрованному файлу.

Вот пример с OpenSSL. Я буду использовать AES с режимом CTR, где режим CTR превращает любой блочный шифр в потоковый шифр.

#/бин/баш
#исходный файл - tux.bmp
голова -c 54 tux.bmp > tux_head.part
хвост -c +55 tux.bmp > tux_data.part
openssl enc -aes-128-ctr -e -in tux_data.part -out aes-ctr-enc-data.part -K "01234567890123450123456789012345" -iv "0000000000000000100000000000000001"
cp tux_head.part зашифрованный_tux.bmp
cat aes-ctr-enc-data.part >> зашифрованный_tux.bmp

Я использовал AES-CTR, так как OpenSSL имеет ChaCha20-Poly1305 в качестве набора шифров, который является аутентифицированным шифрованием. Он добавит тег, поэтому здесь он бесполезен.


Входное изображение

введите описание изображения здесь

Выходное изображение

введите описание изображения здесь

Paul Uszak avatar
флаг cn
Нужно `in`, чтобы быть `-in`.
Paul Uszak avatar
флаг cn
И есть странность. Вы пробовали это? Мой появляется с зеленоватым оттенком. Это особенность формата BMP?
kelalaka avatar
флаг in
@PaulUszak Я исправил, протестировал и добавил результат в ответ. Не могли бы вы проверить свой файл?
Paul Uszak avatar
флаг cn
Неа. Только что сделал это на Tux, и он получился с тем же зеленым оттенком, а не в том стиле, который у вас есть :-( Я подозреваю, что это параметры совместимости с GIMP, поскольку я использовал его для создания своих BMP. Хотя шифрование работает отлично :-) Я оставлю это здесь. Хороший ответ.
kelalaka avatar
флаг in
Интересно. Я использовал программу просмотра, теперь также протестирован с GIMP. Это работает.
Paul Uszak avatar
флаг cn
https://pasteboard.co/K6biu3Y.bmp делается как `openssl enc -aes-128-ctr -e -in pic_data.part -out aes-ctr-enc-data.part -K "aaaaaa" -iv "bbbbbb" `
kelalaka avatar
флаг in
Вы объединили часть заголовка и зашифрованный растр?
Paul Uszak avatar
флаг cn
Да. В любом случае, зрители не будут отображать растр необработанных данных без информации заголовка. Вам нужно будет импортировать необработанные данные, установить размеры и назначить формат и палитру. Это то, что я сделал с помощью GIMPing. В этом я особенный... Чат-бот кричит на меня.
akez avatar
флаг in
@Пол Ушак Chacha20 использует 128-битную константу, 256-битный ключ, 32-битный счетчик и 96-битный одноразовый номер. Это означает, что это увеличит размер файла файла, но меня это устраивает. Проблема в том, возможно ли отображать зашифрованный текст в виде растрового изображения?
kelalaka avatar
флаг in
Это увеличит размер файла только до 96-бит, не более того. Мой пример уже отображает растр как изображение, вы проверяли? Для этого можно легко использовать программирование.

Ответить или комментировать

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