Steganography
是什麼讓 LSBit 隱寫術可以檢測到?什麼會有助於隱藏它?
在我的一個項目中,我拍攝了一個 24 位點陣圖圖像,並使用像素混洗和異或加密對其進行了 LSBit 隱寫術(在 R、G、B 的每個平面內保存了一個黑白圖像)。
我的速記圖容易被發現嗎?並且需要什麼來隱藏它?
標題的一般理論答案是*什麼使 LSBit 隱寫術可檢測?*是在正常圖像中,某個通道中像素的 LSBit 與同一像素和通道中的高階位、其他通道中的像素和相鄰像素相關,而僅僅替換 LSBit 往往會發生強烈變化。
一種簡單的改進方法是將雜訊或模糊添加到一定程度,以使 LSBit 與隨機幾乎無法區分,在這種情況下,可以將其替換為與隨機同樣無法區分的東西(由於良好的加密),並且檢測的機會很小與同樣嘈雜/模糊的圖像相比。下一步是在依賴於密鑰的位置僅更改幾個位(為了實現該目標,需要有一個小的有效載荷,如前所述) ,並根據自然圖像的良好模型讓其他像素隨機雜訊。
從實際的角度來看,發送未壓縮的 24 位點陣圖圖像在某種程度上是使用基本 stego 的危險信號。使用 JPEG無損壓縮或 PNG 或 GIF 轉換的附加步驟(考慮到使用的 LSBit 編碼,有損壓縮會破壞隱藏的消息;更複雜的速記方案倖免於難),這將不太明顯。請注意,在沒有有損壓縮的情況下發送嘈雜/模糊的圖像會浪費頻寬,並且還會引起警報。
我建議進行兩項“易於檢測”的測試,比較適用於使用 stego 的圖像(如果添加了無損壓縮步驟,則在解壓縮後)和據稱可以發送的正常圖像,至少包括您開始的圖像。
- 將每個像素的 3 個 LSBit 顯示為 8 色圖像;這可以通過將
x
每個 RGB 平面中的每個字節更改為~((x&1)-1)
. 你的 stego 形像有什麼明顯的不同之處嗎?(x<<6)+32
更新:使用or的 64 或 512 色圖像(x<<5)+16
也可能很有趣。(注意:這三個表達式是針對 C 的,並且假設截斷為八位字節。如果低位是明確的,則~((x&1)-1)
產生,否則)。0x00``x``0xFF
- 使用 stego 的圖像的 PNG 壓縮率是否明顯低於普通圖像?
請注意,這些測試只能證明無法檢測到故障。