基于LDPC碼和Henon映射的圖像加密方法
近年來基于混沌系統(tǒng)的圖像加密技術(shù)受到廣泛研究,Henon映射具有偽隨機(jī)性、確定性和對初始條件與系統(tǒng)參數(shù)的敏感性、符合Kerck—hoffs準(zhǔn)則,用Henon映射對圖像像素值擴(kuò)散、像素位置置亂及將像素值擴(kuò)散和像素位置置亂相結(jié)合等方式實(shí)現(xiàn)對圖像文件加密,可以達(dá)到較好的加密效果。
下面我們將介紹一種基于LDPC碼和 Henon映射相結(jié)合的圖像加密方法,同時(shí)解決圖像傳輸?shù)聂敯粜院桶踩詥栴}。
一、加密算法描述
1、位平面分解
數(shù)字圖像的灰度值可以用8位比特序列表示,若將各像素值的第i個(gè)位取出來,得到一幅稱為位平面的二值圖像。高位位平面代表圖像輪廓信息,集中了圖像大部分信息,對像素值的影響較大,中間位位平面代表圖像的背景信息,低位位平面代表圖像的細(xì)節(jié)信息。
將一幅M×N的灰度圖像從高位到低位依次分解為8個(gè)M×N的二值位平面,用于編碼加密。
2、LDPC編碼加密
LDPC碼是一種性能接近 shannon限的好碼,與 turbo碼相比,編譯碼方法更簡單。
LDPC碼是線性分組糾錯(cuò)碼,可以由檢驗(yàn)矩陣H唯一定義。由于
![]()
所以構(gòu)造校驗(yàn)矩陣H是編碼的關(guān)鍵,LDPC碼的校驗(yàn)矩陣H是一個(gè)幾乎都是由0組成的,稱為稀疏矩陣。Gallager定義的(n,j,k)LDPC碼是碼長為n,列重為j,行重為k的碼字,在有限域 GF中,每個(gè)校驗(yàn)式均為二元異或運(yùn)算。
(1)LDPC碼加密原理
將大小為M×N的高兩位二值位平面沿行方向拼接成2M×N的二值矩陣K。
構(gòu)造大小為N×2N的LDPC碼的校驗(yàn)矩陣H并消去短環(huán),然后對H通過高斯消元轉(zhuǎn)換為
從而得到生成矩陣
![]()
針對2M×N大小的矩陣K,其LDPC編碼為
![]()
K的每一行為一組信息節(jié)點(diǎn),CK的大小為2M×2N,其每一行為K對應(yīng)行的LDPC碼系統(tǒng)編碼,根據(jù)高斯消元的變換順序?qū)K進(jìn)行逆排序,變成非系統(tǒng)碼。
將CK分解為4個(gè)M×N的二值矩陣,與原圖像其他 6個(gè)位平面進(jìn)行重構(gòu),得到 10比特灰度圖。
(3)LDPC譯碼原理
采用和積迭代譯碼算法,按照如下譯碼步驟 對CK每一行進(jìn)行譯碼。
初始化、對信息比特的先驗(yàn)概率賦初值并設(shè)置迭代次數(shù)。
水平迭代、按置信傳播算法由信息節(jié)點(diǎn)的先驗(yàn)概率計(jì)算校驗(yàn)節(jié)點(diǎn)的后驗(yàn)概率。
垂直迭代、由校驗(yàn)節(jié)點(diǎn)的后驗(yàn)概率計(jì)算出信息節(jié)點(diǎn)的后驗(yàn)概率。
對信息節(jié)點(diǎn)的后驗(yàn)概率進(jìn)行硬判決,得到譯碼結(jié)果C,如果C×HT=0,則譯碼結(jié)束。否則跳至水平迭代重復(fù)迭代,直到滿足條件或達(dá)到最大迭代次數(shù),得出最終譯碼結(jié)果K。
3、Henon映射加密
Henon映射在非線性動力學(xué)系統(tǒng)中出現(xiàn)的確定性、偽隨機(jī)的過程,這種過程對初始條件的高度敏感性和高度隨機(jī)性,符合Kerck—hoffs準(zhǔn)則等特性,具有良好的密碼學(xué)特性。
Henon映射是二次方型非線性的二維映射,定義為:

為了適合本文預(yù)處理圖像的特點(diǎn),在算法中使用改進(jìn)的Henon映射,具體形式為:

其中參數(shù)a、b滿足 1.1≤a≤ 1.5,0.2≤ b≤0.4
并與初值X0和Y0構(gòu)成密鑰。
設(shè)定初值X0和Y0為了提高算法對明文的敏感度,計(jì)算經(jīng)LDPC編碼后的圖像矩陣的偏差,除以1024后作為內(nèi)部密鑰k,并將其與Henon映射初值相加對初值進(jìn)行修正。根據(jù)改進(jìn)的Henon映射迭代M×N次得到x1和y1,然后以x1和y1作為初值生成長度為M×N的混沌序列Xn和Yn,從Xn和Yn中任選長度為M和N的序列分別進(jìn)行排序,根據(jù)排序值生成行/列置亂矩陣,用于圖像像素位置置亂。令:
![]()
并將其轉(zhuǎn)換為M×N的矩陣形式,與經(jīng)過預(yù)處理的像素值按位異或進(jìn)行擴(kuò)散加密。
二、加密和解密步驟
1、加密步驟
(1)將輸入圖像進(jìn)行位平面分割得到8個(gè)M×N的二值位平面。
(2)對高兩位位平面進(jìn)行IDPC碼編碼,得到4個(gè)M×N的二值矩陣。
(3)進(jìn)行位平面重構(gòu),得到10比特灰度圖像。
(4)計(jì)算圖像標(biāo)準(zhǔn)差對Henon映射初值進(jìn)行修正,然后利用Henon映射進(jìn)行置亂和擴(kuò)散加密。
(5)分離出高兩位位平面作為內(nèi)部密鑰輸出,剩余8位位平面構(gòu)成的密文圖像輸出。
2、解密步驟
(1)將內(nèi)部密鑰和密文圖像經(jīng)過位平面重構(gòu),得到10比特圖像。
(2)利用Henon映射得到的擴(kuò)散矩陣和置亂矩陣分別進(jìn)行解密。
(3)利用解密后圖像的高4位位平面,通過LDPC譯碼得到2個(gè)解碼后的位平面。
(4)將解碼得到的2個(gè)位平面與其他6個(gè)位平面重構(gòu)得到解密圖像。
目前,基于LDPC碼的加密算法研究主要集中在對數(shù)字水印的保護(hù)方面,本文采用LDPC碼和Henon映射相結(jié)合的加密方法對圖像進(jìn)行復(fù)合加密,同時(shí)解決了圖像傳輸?shù)陌踩院汪敯粜詥栴}。
針對數(shù)字圖像信息主要集中在高位位平面的特點(diǎn),利用LDPC對高位位平面數(shù)據(jù)進(jìn)行編碼加密,實(shí)現(xiàn)了高位位平面數(shù)據(jù)傳輸?shù)母呖煽啃裕瑫r(shí)由于截取者不知道密文和密鑰內(nèi)部的分離傳輸關(guān)系,不能準(zhǔn)確得到內(nèi)部密鑰的編碼,并且不知道加密者所采用的LDPC碼生成矩陣G和校驗(yàn)矩陣H,因而不能解密得到K,從而不能正確解密。
小知識之LDPC碼
LDPC碼是通過校驗(yàn)矩陣定義的一類線性碼,為使譯碼可行,在碼長較長時(shí)需要校驗(yàn)矩陣滿足“稀疏性”,即校驗(yàn)矩陣中1的密度比較低,也就是要求校驗(yàn)矩陣中1的個(gè)數(shù)遠(yuǎn)小于0的個(gè)數(shù),并且碼長越長,密度就要越低。










