基于dna動態(tài)編碼的彩色圖像加密方法
【技術領域】
[0001] 本發(fā)明涉及一種彩色圖像加密方法,特別是涉及一種基于DNA動態(tài)編碼的彩色圖 像加密方法。
【背景技術】
[0002] 在信息化時代的今天,計算機和各種智能終端的使用極大的加快了信息的傳播, 并且我們生活中的絕大多數(shù)信息,如文檔、音頻、視頻,特別是圖像信息的傳輸更是離不開 網絡的支持。網絡一方面給人們的生活帶來了便捷,但另一方面,一些不法分子會利用網絡 來竊取信息,這就給人們的信息安全帶來很大隱患,所以信息在網絡傳輸過程中的安全和 保密問題也越來越受到人們的關注和重視。由于混沌系統(tǒng)具有隨機性、確定性、遍歷性和對 初值的高度敏感性等特點,目前已成為研究者們關注的焦點。美國學者Fridrich于1998 年提出了經典的圖像加密模式,它包括兩個階段,即置亂階段和擴散階段。在置亂階段,通 常只是對圖像中的每個像素位置做處理,通過改變每個像素的位置來破壞圖像中原有的空 間有序性和局部相關性,使得圖像達到雜亂無章、無法識別并呈現(xiàn)一種類似噪聲的目的。在 擴散階段,一般是對圖像中的像素值做處理,通過混沌系統(tǒng)產生的偽隨機序列來對明文像 素進行掩蓋,以達到竊密者無法辨認的目的,從而實現(xiàn)圖像的加密。但是必須指出的是,這 兩個階段必須是一個可逆的過程,既然能對圖像進行加密,那么也必定能夠對圖像進行解 密。絕大多數(shù)圖像加密算法都是依照先置亂后擴散這樣一個思路,最終達到了良好的加密 效果。但是這些算法大都采用低維混沌系統(tǒng)對圖像進行加密,低維混沌系統(tǒng)產生的混沌序 列只是經過簡單的反復迭代形成的,安全性不夠好,并且計算機的計算精度也可能導致低 維混沌系統(tǒng)的混沌序列周期性比較短,隨機性也較差,這都對圖像的破解提供了突破口。因 此,新的加密系統(tǒng)的探索與研究是迫切需要的。
[0003] DNA加密系統(tǒng)是近年來伴隨著DNA計算的研究而出現(xiàn)的密碼學新領域,其特點是 以DNA為信息載體,以現(xiàn)代生物技術為實現(xiàn)工具,挖掘DNA固有的高存儲密度和高并行性等 優(yōu)點,實現(xiàn)加密、解密等密碼學功能。由于DNA密碼學主要是以生物學技術的局限性為安 全依據,與計算能力無關,因此即使是量子計算機也無法攻破DNA密碼學的保護,從而具有 更高的安全性。同時,由于DNA計算具有許多其它計算方式所不具備的特性,如超高并行 性、超低能耗等,加之DNA又具有超強存儲能力,這使得DNA計算在密碼學上具有先天的優(yōu) 勢。但是已有的基于DNA的加密算法大多要用生物實驗進行操作,由于生物實驗設備昂貴, 實驗環(huán)境難以控制,實驗靈敏性高等缺點,導致了基于DNA密碼學的加密方法還是理論多 于實踐,況且現(xiàn)在已知的大多基于DNA加密的算法針對的主要是文字信息或者灰度圖像信 息,考慮到彩色圖像RGB分量之間的相關性,無法直接推廣到彩色圖像的加密中。此外,在 當前提出的結合DNA編碼與混沌特性的圖像加密算法中,選用的DNA編碼規(guī)則是固定不變 的,同時由于DNA編碼規(guī)則僅有8種,使得算法抗窮舉攻擊的能力很弱,加之很多算法缺少 與明文的聯(lián)系,導致其抗明文攻擊的能力不強,這都容易造成圖像信息的泄露。
【發(fā)明內容】
[0004] 為克服現(xiàn)有技術中的問題,本發(fā)明提供一種基于DNA動態(tài)編碼的彩色圖像加密方 法,擺脫了 DNA加密中的復雜生物操作,有效將混沌特性和DNA動態(tài)編碼結合,同時考慮了 明文因素的影響,提高了算法的安全性,便于并行計算,提高了效率,且易于實現(xiàn)和控制。
[0005] 本發(fā)明的技術方案是:
[0006] -種基于DNA動態(tài)編碼的彩色圖像加密方法,包括以下步驟:
[0007] 步驟1.輸入大小為MXN的8位彩色圖像P1,分離彩色圖像RGB三基色分量, 得到分量矩陣Pi_R MN、Pi_GMN、Pi_BMN,每個分量矩陣的大小均為MXN,將分量矩陣Pi_R MN、Pi_ GMN、Pi_BMN按行排序得到大小為MX 3N的明文灰度圖像P 2;
[0008] 步驟2.利用SHA256函數(shù)對明文彩色圖像?1進行計算,得到一組256位哈希值, 作為圖像密鑰Key,將該256位圖像密鑰Key換算為32個十進制數(shù),平均分為四組,分別用 來計算置亂過程和擴散過程中所用CML混沌系統(tǒng)的初始狀態(tài)值和參數(shù);
[0009] 步驟3.將步驟2中得到的用來計算置亂過程中的CML混沌系統(tǒng)初始狀態(tài)值和參 數(shù)帶入CML混沌系統(tǒng)中進行迭代,累計得到大小為MX 3N的狀態(tài)值矩陣Wl,將狀態(tài)值矩陣 Wl按行排序,得到大小為MX 3N的置亂矩陣K ;
[0010] 步驟4.將步驟2中得到的用來計算擴散過程中的CML混沌系統(tǒng)初始狀態(tài)值和參 數(shù)帶入CML混沌系統(tǒng)中進行迭代,累計得到大小為MX 3N的狀態(tài)值矩陣W2,將狀態(tài)值矩陣 W2中每行以8個狀態(tài)值為一組,分別對每個狀態(tài)值建立索引值;
[0011] 步驟5.將步驟4中狀態(tài)值矩陣W2轉化為整數(shù)矩陣Y,將矩陣Y按步驟4中的索引 值轉換為對應的DNA矩陣;
[0012] 步驟6.利用置亂矩陣K的第i行對明文灰度圖像P2的第i行進行置亂, I ^ i ^ M ;
[0013] 步驟7.將明文灰度圖像匕中已完成置亂的第i行像素按照步驟4中得到的索引 值轉換為對應的DNA序列,并對DNA序列進行擴散操作;
[0014] 步驟8.令i = i+Ι,循環(huán)步驟6和步驟7,直到明文灰度圖像匕中的每一行像素 都完成DNA加密;
[0015] 步驟9.將加密過后的DNA矩陣解碼為大小為MX 24N的二進制矩陣Q1,對矩陣Ql 進行十進制轉換操作,得到大小為MX 3N的十進制密文矩陣Q2,將密文矩陣Q2平均分為3 個大小為MXN的矩陣P3_RMN、P 3_GMN、P3_BMN,將三個矩陣合并重組,得到大小為MXN的彩色 密文圖像P 3,即得到加密圖像。
[0016] 上述的,所述步驟2具體包含如下內容:
[0017] 步驟2. 1.采用LTS映射作為CML混沌系統(tǒng)子模型的局部映射,LTS映射定義為:
[0018]
,通過CML混沌系統(tǒng)來生 成混沌序列,具體表達式如下:
[0020]
,式中,η = 1,2,...,η為時間索引或狀態(tài) 索引,i,j,k為映像格子的位置索引,X;,為CML模型中第i個格子在時空η的狀態(tài)值,且 (K《<U 1彡j彡L,1彡k彡L,i = 1,2,. . .,L,L為CML混沌系統(tǒng)中的耦合映像格子數(shù), P,q,ε e [0,1],n e [0,1]為 CML 模型的參數(shù)值。
[0021] 步驟2.2.利用SHA256函數(shù)對明文彩色圖像?1進行計算,得到一組256位的 哈希值,將其作為圖像密鑰,然后將256位的哈希值換算為32個十進制數(shù),并將其定義 為 Ic1, k2,. . .,k32,將 Ic1, k2,. . .,k32平均分為四組,分別用 k D k2,. . .,ks,k9, k1Q,. . .,k16, km k18,· · ·,k24,k25, k26,· · ·,k32表不;
[0022] 步驟2. 3.利用Ic1, k2, . . .,kjP k 9, k1(),. . .,k16通過計算公式計算用于 置亂過程中的CML混純系統(tǒng)的8個初始狀態(tài)值'和8個參數(shù)值r1,計算公式為
,其中,4為耦合映像格子的狀態(tài)值,且〇 < ^ < 1; r1為 LTS映射的控制參數(shù),且0 < 4 ;
[0023] 步驟2. 4.利用k17, kls, . . .,k24和k 25, k26, . . .,k32通過公式計算用于擴散過程中的 CML混沌系統(tǒng)的8個初始狀態(tài)值和8個參數(shù)值?,公式為
[0025] 優(yōu)選的,所述步驟3具體包含如下內容:
[0026] 步驟3. 1.將步驟2. 3中得到的用于置亂過程中的CML混沌系統(tǒng)的8個狀態(tài)值^ 和8個參數(shù)值r1帶入步驟2. 1中迭代 &
:,舍棄前N。個數(shù)值,累計得到大 小為MX3N的狀態(tài)值矩陣Wl,floor(x)表示不超過X的最大整數(shù),L為CML混沌系統(tǒng)中的 耦合映像格子數(shù);
[0028] 步驟3. 2.將狀態(tài)值矩陣Wl按照公式[ignore, K] = sort (W1, 2)按行排序,得到 大小為MX3N的置亂矩陣K,其中,sort (W1,2)表示將矩陣Wl中每一行的元素按照從小到 大的順序進行排列,ignore表示經過排列之后的矩陣,K表示的是經過排序后的元素在原 數(shù)組中對應的位置索引矩陣。
[0029] 優(yōu)選的,所述步驟4具體包含如下步驟:
[0030] 步驟4. L將步驟2. 4中得到的用于擴散過程中的CML混沌系統(tǒng)的8個狀態(tài)值端 和8個參數(shù)值r1帶入步驟2. 1中迭竹
舍棄前N。個數(shù)值,累計得到大 小為MX 3N的狀態(tài)值矩陣W2, floor (X)表示不超過X的最大整數(shù),L表示CML混沌系統(tǒng)中 的映像格子數(shù);
[0032] 步驟4. 2.對狀態(tài)值矩陣W2每行以8個狀態(tài)值為一組,通過公式
分別對每組狀態(tài)值建立索引,對狀態(tài)值矩陣W2 中的每一個元素都有一個唯一的索引值與其相對應,通過Ind(i,j)表示矩陣W2中第i行 第j列對應的索引值,且I < i < M,I < j < 3N,其中,sort (X,' descend')表示將X中 的元素按照降序進行排列,X為由8個狀態(tài)值構成的數(shù)組,ignore表示經過排列之后的矩 陣,Indl表示的是經過排序后的元素在原數(shù)組中對應的位置索引矩陣,Sort(Indl)表示將 Indl中的元素按照從小到大的順序進行排序,Ind表示對Indl排序后,其元素在原Indl中 的位置索引矩陣。
[0034] 優(yōu)選的,所述步驟5包含如下內容:
[0035] 步驟5. L將狀態(tài)值矩陣W2按照公式
[0036] Y(i,j) =mod((W2(i,j)-floor(W2(i,j)))*10~8,256)轉化為整數(shù)矩陣 Y,其中,
[0037] mod (a, b)表示a對b的取模運算;floor (X)表示不超過X的最大整數(shù);Y (i, j)表 示得到的整數(shù)矩陣Y的第i行第j列的元素值,其中1彡i彡M,1彡j彡3N ;
[0038] 步驟5. 2.定義DNA運算規(guī)則,在加密方法中直接使用DNA編碼值進行數(shù)學或邏輯 運算;
[0039] 步驟5. 3.將整數(shù)矩陣Y中的每個元素按照步驟4中對應的索引值轉換為相應的 DNA矩陣,對于任意的Y (i,j)按照第Ind (i,j)種編碼方案轉換為相應的DNA序列,將DNA 序列的第r個元素記為DNAr(Y(i,j)),其中,r = 1,2,3,4,1彡i彡M,1彡j彡3N。
[0040] 優(yōu)選的,所述步驟7具體包含如下內容:
[0041] 步驟7. 1.對明文灰度圖像匕中已完成置亂的第i行元素
[0042] P2(i,1),P2(i,2),P2(i,3),· · ·,P2(i,3N)分別按照步驟4中得到的第i行的索引 值
[0043] Ind(i, 1),Ind(i, 2),Ind(i, 3),· · ·,Ind(i, 3N)進行 DNA 編碼,對任意的 P2(i, j) 按照第Ind (i,j)種編碼方案轉換為相應的DNA序列,并且將DNA序列的第r個元素記為 DNAr(P2(i,j)),其中,r = 1,2,3,4,1 彡 i 彡M,1 彡 j 彡 3N;
[0044] 步驟7. 2.將得到的第i行中像素點的DNA序列通過公式
[0045] = + R1P2 (i,j)表示加密過后的DNA編碼值,Rfr υΡ2 (i,j)表示前一個加密的DNA編碼值,若r = 1,則表示前一個像素點中最后一