速記式加密是一種對數據加密的算法。速記式加密算法和密碼學都是用來保護信息的安全的,速記式加密算法能夠帶來的最大的優點在於,當把深度信息隱藏到基本視頻以後,並沒有給視頻帶來任何明顯的變化,而且視頻的數據量的大小也不會被改變。因此使用這種方法具有明顯的優勢。
基本介紹
- 中文名:速記式加密
- 外文名:Steganography
- 學科:計算機科學
- 算法一:LSB算法
- 算法二:BPCS算法
- 套用:加密
簡介,算法,LSB 算法,BPCS 算法,
簡介
Steganography,這詞在本文中被解釋為速記式加密算法, 或者稱之為隱寫術, Steganography 最早來源於希臘單詞 Steganós(覆蓋)和 Graptos(寫入)兩個單詞的複合。這個單詞的意思就是把信息隱藏到檔案中去,該檔案可以是文本檔案、音頻檔案、視頻檔案,甚至是作業系統的某些特殊檔案都可以。從最開始出現到現在,速記式加密算法都是用在軍事或者信息的保密等方面的。速記式加密算法和密碼學都是用來保護信息的安全的。一般的加密算法或者是設定密碼等這些雖然能夠保存大部分網際網路信息的安全,但是這些加密算法都能被人為的惡意破解。 對於加密算法人們都知道數據被加密或者是設定密碼,並且如果是能力比較強的人會很快的就知道該信息是被何種手段加密或者設定的密碼大概在什麼範圍之類, 因此想破解它也就不是非常的難。但是如果使用速記式加密算法的話,如果用戶不被告知該信息被用速記式加密算法加密之後,用戶是無法知道該信息是否被加密,如果用戶直接打開檔案可能就看到的是另外一些不重要的檔案或者是亂碼, 如果用戶能夠通過正確的途徑解碼,則能讀出該檔案中隱藏的重要信息。這樣連用戶都不知道是否加密,那么該用戶就不會試圖去破解該信息,可以說這樣就從根本上解決了信息安全的問題。 但是在本文中,速記式加密算法則不是用來對數據進行加密的,而是通過稍微的改變一下,讓它的用途不是那么的單一,對於速記式加密算法的原理,稍後進行解釋。即剛好可以利用速記式加密算法的特性,把系統所需要的多視點圖像的深度信息隱藏到視頻檔案的作為基本視頻檔案的每一幀信息中,然後在解碼端解碼出來,然後重新生成多視點視頻檔案,即可解決在多視點編解碼視頻中遇到的編解碼非常複雜以及很容易出錯,並且編解碼後數據流本身依舊會非常大的缺點。
在 H.264 的編碼過程中,除了熵編碼可以完全恢復到原始樣子之外,其他的例如變換係數、量化、幀內預測、幀間預測都會丟失數據,但是深度圖像信息需要的非常準確,所以不能在每幀開始編碼以前就插入深度信息,只能在每幀做熵編碼操作之前插入深度信息,而且由於每幀所能插入的信息是有限的,所以需要解決每幀圖像可以攜帶的深度信息量做好計算。速記式加密算法能夠帶來的最大的優點在於,當把深度信息隱藏到基本視頻以後,並沒有給視頻帶來任何明顯的變化,而且視頻的數據量的大小也不會被改變。因此使用這種方法具有明顯的優勢。對速記式加密算法的研究在國際上是非常的流行,例如: 根據構造三角形來嵌入敏感信息; 根據最低有效位來嵌入敏感信息; 或者把一幅圖像的所有每個位元組的相應的每一位用來構成一個位平面 (BPCS),然後在每個位平面上通過計算一定大小塊的noise-like 的比例值 u, 然後把敏感信息嵌入到 u 符合的位置塊上。
算法
LSB 算法
最低位平面算法(least significant bits,LSB ),基本原理則是利用圖像數據的每個位元組的最低一位來攜帶數據加密信息。當把 LSB 算法使用到本文中的時候,則是把深度信息幀的每一位數據植入到視頻數據中的每一個位元組的最低一位。該算法首先具有非常簡單的可操作性的優點。 但是該算法也有不可避免的缺點, 既是 LSB 算法的容量太小,由於只是利用每個位元組的最低位來保存機密數據,所以就需要機密數據大小的八倍的載體來承載機密數據。
BPCS 算法
位平面複雜度分割速記式加密算法(Bit-Plane Complexity SegmentationSteganography, BPCS) 是一種具有大容量的嵌入式算法。本節所用的速記式加密算法會用到數據嵌入時圖像的複雜度,Kawaguchi 通過分析與圖片相關的複雜度問題後,先後提出了大致三種有關計算複雜度的方式。本節中利用圖像的黑白邊界交替的頻繁度來表示圖像的複雜度。本方法主要是從圖像的二進制數據中去討論的圖像的複雜度,二進制中只有 1 和 0 兩種數值,所以可以用黑來表示 1,用白來表示 0。那么黑白相間的問題實際上就是 1 和 0 相間的問題。利用黑白邊界交替的頻繁度來表示二進制圖像的複雜度是一種相對簡單但是效果很好的表示方法。如果該平緩度的越大,則表示圖像越複雜,反之則越小。黑白邊界交替的最大值等於所有行和列相鄰兩位顏色變化的數量總和。例如一個黑色的塊被上下左右四個白色的塊包圍著,那么黑白邊界交替的值就為 4.利用
來表示圖像的黑白邊界交替的頻繁度,因此可以得出以下的公式。
![](/img/b/656/wZ2NnLhFWYykTN0UWZhdDZwQGZwUTM1E2NxEjNkN2NwUWOxIzLhxWdtJ3bm9SbvNmLz9mYlNmYu4GZj5yZtl2ai9yL6MHc0RHa.jpg)
![速記式加密 速記式加密](/img/6/6a3/wM1gDOwgTYjV2NwI2MxkTOhdTMzkDZlJzM0MTN4MDMxMWN2MWYyQzMvMWaw9SbvNmLz9mYlNmYu4GZj5yZtl2ai9yL6MHc0RHa.jpg)
在公式中, k 表示在圖像中實際的黑白邊界交替值的大小,因此α的範圍為 0≤α≤1。 α是通過整個圖像區域來進行計算的,所以α是表示的整個圖像的複雜度。當然α也可以被用於計算某一個局部區域的複雜度。然後再來討論一下二進制圖像的共軛性。用 P 來表示二進制 N*N 的白色背景以及黑色前景色的黑白圖像。 W 和 B 表示全白和全黑的模式。 Wc 表示左上角第一個格子為白色的棋盤模式, Bc 表示左上角第一個格子為黑色的棋盤模式。 P*則表示與 P 共軛的圖像。可參見圖1所示。![速記式加密 速記式加密](/img/6/2a1/wY5QWM1UjYwEzM5czMjVTYkVDN3QWMwEjZ0MDM0YjYhRWZiZmYmFGNvMWaw9SbvNmLz9mYlNmYu4GZj5yZtl2ai9yL6MHc0RHa.jpg)
![速記式加密 速記式加密](/img/6/2a1/wY5QWM1UjYwEzM5czMjVTYkVDN3QWMwEjZ0MDM0YjYhRWZiZmYmFGNvMWaw9SbvNmLz9mYlNmYu4GZj5yZtl2ai9yL6MHc0RHa.jpg)
圖1
B 模式是前景模式, W 模式是背景模式,現在定義 P*模式,如圖1中(f)所示,P*需滿足以下三個條件:
第一, P*的前景模式的形狀和 P 的是一樣的。
第二, P*的前景模式是 Bc 的模式。
第三, P*的背景模式是 Wc 的模式。
只有 P*在同時滿足上述三個條件的時候,才能稱 P*是 P 的共軛圖像。所以 P和 P*具有一一對應的關係,也就是說每個圖像 P 都能找到它所對應的共軛圖像 P*,反之也成立。所以它們也就滿足以下幾個特性:
(a) P*=P^Wc
(b) P =(P*)*
(c) P≠P*
(d)α(P*)=α(1-P). α(P)表示圖像 P 的複雜度。這也是幾個特性中最重要的一個。例如 P 的複雜度為 0.65,則 P*的複雜度則為 0.35。
就像根據位平面的複雜度來取代彩色圖像的二進制數據對人眼是不可見的,可以儘可能的去隱藏深度信息數據。由於前面提到計算複雜度雖然是計算的一幀圖像的全局複雜度,但也可以根據不同的情況實現對區域塊的複雜度進行計算,並且為了結合 H.264 中宏塊的大小,所以在本文中並沒有一個固定的塊的大小,按照 H.264 中宏塊為單位進行嵌入的,當然最好的劃分方式則是 8*8、 16*16、 4*4為單位進行劃分塊。嵌入的順序也是先嵌入色度塊,然後嵌入到亮度塊中。對於作為秘密信息的深度信息,則把它固定為每個大小為 8Byte 的數據塊。這樣剛好如果是 16*16 的亮度塊,則可以在一個亮度塊裡面放入四個深度數據平面塊。如果是 8*8 的亮度塊,則剛好一一對應, 如果是 4*4 的色度或亮度塊時,則需要四個視頻幀塊來保存一個深度數據平面塊。對於 8Byte 的數據平面的劃分,則是按照對應權重位上面的所有的數據劃分為到一個平面上面,不同的權重則劃分到不同的平面上,在此只是以普通的二進制位為例做說明,如圖2,實際的程式設計過程中按照格雷碼的格式進行平面的劃分。![速記式加密 速記式加密](/img/8/576/ANlFjM4gzNkVDNykzMwYjZ2kTN0I2NhZ2YmhzYyETOiBTM3QjY4MzNvMWaw9SbvNmLz9mYlNmYu4GZj5yZtl2ai9yL6MHc0RHa.jpg)
![速記式加密 速記式加密](/img/8/576/ANlFjM4gzNkVDNykzMwYjZ2kTN0I2NhZ2YmhzYyETOiBTM3QjY4MzNvMWaw9SbvNmLz9mYlNmYu4GZj5yZtl2ai9yL6MHc0RHa.jpg)
![速記式加密 速記式加密](/img/c/1b5/QM1MWO5UWMwATMkhTOkZzN3EGNyQjZiNmZhNWY2MjY0kDM2cjZlF2YvMWaw9SbvNmLz9mYlNmYu4GZj5yZtl2ai9yL6MHc0RHa.jpg)
圖2
![速記式加密 速記式加密](/img/f/b44/AN1IjM1QjM5MDMjZGZmlzY1EGN0kDZmZmMxkjYwEzN0IGOycTMxM2YvMWaw9SbvNmLz9mYlNmYu4GZj5yZtl2ai9yL6MHc0RHa.jpg)
圖3
先後分別用十六進制和二進制表示出來,因為是十六進制容易被讀取,看起來更加的直觀,二進制表示法是為了更加清楚的表示位平面的劃分過程。從圖3、圖4可以看出以每列八個位元組與每八行的八個位元組的矩形形狀構成一個塊,總用 64 個位元組。每一行每個位元組的相同權重位上的二進制數據,按照原有的順序組成新的八個位元組,所構成的新的位元組在行上面的排列順序也不改變。 每個位元組從高位到低位都是由相同位置的二進制位按照位元組的順序重新組合成一個新的位元組,也即是新的平面,通過計算這個平面的複雜度來決定是否在該平面嵌入深度信息數據。![速記式加密 速記式加密](/img/9/306/gMxEzYmhTM5MDM3YGMkhjNjRDNllzNyEzYllTYmRWMxMmM3UzMkNjZvMWaw9SbvNmLz9mYlNmYu4GZj5yZtl2ai9yL6MHc0RHa.jpg)
![速記式加密 速記式加密](/img/9/306/gMxEzYmhTM5MDM3YGMkhjNjRDNllzNyEzYllTYmRWMxMmM3UzMkNjZvMWaw9SbvNmLz9mYlNmYu4GZj5yZtl2ai9yL6MHc0RHa.jpg)
圖4