Rijndael

有沒有辦法從 steghide 中清除資訊圖片?

  • October 4, 2016

最近我了解了 steghide 應用程序(一個允許使用隱寫術的命令行工具,將資訊隱藏在其他資訊中的藝術*,*在實踐中用於 JGP 和 WAV 文件,主要使用 gzip 壓縮和 AES 加密)。

興奮地,我把敏感數據藏在了我的桌面背景中,把原來的桌面背景刪掉了。

經過更多研究,我意識到使用的預設算法(128 位 AES)被認為是弱的(無論如何,對於我的標準。領先於遊戲,使用 4096 位 RSA 和 256 位 AES 做事)。

有沒有辦法清除這個 JPG 文件中儲存嵌入文件的無關位?

我不完全確定如何使用密碼片語(除了加密)來使用 steghide 將文件隱藏在可恢復的位置,但我假設如果你知道密碼片語,你可以找到文件的確切位位於。有沒有辦法找到這些位並以與粉碎文件相同的方式覆蓋它們,但保持原始圖像相同(人眼)?還是我骨瘦如柴?

正如您所說,隱寫術將數據隱藏在源的不太重要的資訊中(因為目標是將數據隱藏在影響它們的其他數據中)。

純隱寫術決不能保護隱藏的資訊,它只是一種隱藏的工具。

您將在 4x4 灰度點陣圖(每像素 0-255 值)中隱藏消息“AB”的圖像。

例如:

Convert message in bit :
"AB" > hex -> 65 66 -> 01000001 01000010

Do the same thingh with your image (0 is black 255 is white, grey between) :
____
|####|    0   0   0   0       00000000 00000000 00000000 00000000
| #  |--> 255 0   255 255 --> 11111111 00000000 11111111 11111111
| #  |    255 0   255 255     11111111 00000000 11111111 11111111
|__#_|    255 255 0   255     11111111 11111111 00000000 11111111

Foreach bit of your messaage, sobstitute the less significant bit of the
corresponding byte of the picture so :

Message  Original Picture              Resulting Picture
0        00000000                      00000000
1        00000000                      00000001
0        00000000                      00000000
0        00000000                      00000000
0        11111111                      11111110
0        00000000                      00000000
0        11111111                      11111110
1        11111111                      11111111
0        11111111                      11111110
1        00000000                      00000001
0        11111111                      11111110
0        11111111                      11111110
0        11111111                      11111110
0        11111111                      11111110
1        00000000                      00000001
0        11111111                      11111110

Original Picture                    | Picture with Message
00000000 00000000 00000000 00000000 | 00000000 00000001 00000000 00000000
11111111 00000000 11111111 11111111 | 11111110 00000000 11111110 11111111
11111111 00000000 11111111 11111111 | 11111110 00000001 11111110 11111110
11111111 11111111 00000000 11111111 | 11111110 11111110 00000001 11111110

如您所見,以這種方式(在點陣圖中)儲存的消息對人類感知圖像的方式沒有太大影響(之前和之後的像素非常相等)。我描述的算法非常幼稚,但每個隱寫算法的原理都是相同的。

在您的情況下,不是點陣圖而是JPEG(一種表示圖像的複雜方式,因為有壓縮算法而復雜),並且有密碼和加密。加密有兩個原因,保護消息(僅隱寫不能保證任何機密性)並在不太重要的位上產生類似雜訊的分佈(通常不太重要的位具有這樣的分佈,但隱藏的消息可能會偏離結果圖片中的分佈,因此攻擊者可以辨識哪些圖片隱藏了一條消息)。

如果您確定圖像不會隱藏秘密數據,您就不必嘗試找到它們。主要是因為每個隱寫算法都是特殊的並且以不同的方式儲存資訊(唯一的限制是想像力),其次是因為如果隱寫正確完成(使用健壯的加密),您將無法區分雜訊和隱藏數據。

因此,在我看來,唯一可行的方法是嘗試以破壞側通道的方式操縱候選圖片(可能包含隱藏數據但也可能是正常圖片的圖片)。

在我的幼稚實現中,清理操作可能是使用 JPEG 進行壓縮,JPEG 非常接近點陣圖(對人眼而言),但不太重要的位將被剔除(由於壓縮)並與它們一起隱藏資訊。

在您的特定情況下,我認為拍攝照片並使用 JPEG 再次壓縮(使用更大的壓縮係數)也應該有效。請記住,每種隱寫算法都是特殊的,因此可能會以冗餘方式儲存隱藏數據,從而對您的清理工作更具彈性(請參閱水印技術:數字水印)。

引用自:https://crypto.stackexchange.com/questions/40380