本發(fā)明涉及圖像處理領(lǐng)域,具體應(yīng)用于圖像加密過(guò)程中,涉及一種基于聚類和混沌的圖像加密算法。
背景技術(shù):
云計(jì)算和大數(shù)據(jù)的研究如火如荼,移動(dòng)互聯(lián)網(wǎng)深入發(fā)展,越來(lái)越多的人采用圖片的方式來(lái)記錄生活和工作中的點(diǎn)點(diǎn)滴滴,因此保證其安全性顯得更為重要。但是由于圖像具有信息量大、高冗余性以及相鄰像素相關(guān)性強(qiáng)等特點(diǎn),傳統(tǒng)的加密算法如DES,AES,RSA等已經(jīng)不能滿足數(shù)學(xué)圖像的加密需求?;煦缱鳛榉蔷€性科學(xué)的一個(gè)重要分支,具有自己獨(dú)有的特征:對(duì)初始條件的敏感性、偽隨機(jī)性等,使其得到廣泛的研究,尤其是在圖像加密方面。而如今,許多加密算法是由其作者直接基于矩陣變換或他們自己定義的嚴(yán)苛規(guī)則而構(gòu)建的,在設(shè)計(jì)上存在不足或缺陷。另外,一些加密算法僅僅將混沌系統(tǒng)生成的偽隨機(jī)序列直接作用于圖像序列上。針對(duì)這些問(wèn)題,本文嘗試使用機(jī)器學(xué)習(xí)中的k-means聚類算法,提出了一個(gè)全新的混沌圖像加密算法。
k-means算法:接受輸入量k,然后將n個(gè)數(shù)據(jù)對(duì)象劃分為k個(gè)聚類以便使得所獲得的聚類滿足以下條件:同一聚類中的對(duì)象相似度較高;而不同聚類中的對(duì)象相似度較小。以歐式距離作為相似度測(cè)度,它是求對(duì)應(yīng)某一初始聚類中心向量V最優(yōu)分類,使得評(píng)價(jià)指標(biāo)J最小。算法采用誤差平方和準(zhǔn)則函數(shù)作為聚類準(zhǔn)則函數(shù)。這是一個(gè)成熟的技術(shù),能夠很好的運(yùn)用在加密過(guò)程中。
Wang等提出了一種基于行和列切換的快速圖像加密算法(X Wang,Q Wang,Y Zhang.A fast image algorithm based on rows and columns switch[J].Nonlinear Dynamics,2014,79(2):1141-1149)以及AV Diaconu也提出了一種基于聰明方格的圖像加密算法(AV Diaconu.KENKEN PUZZLE-BASED IMAGE ENCRYPTION ALGORITHM[J].Proceedings of the Romanian Academy-Series A:Mathematics,Physics,Technical Sciences,Information Science),對(duì)其進(jìn)行安全性分析可以發(fā)現(xiàn)其像素間的相關(guān)性抺滅的不夠強(qiáng)烈,信息熵也顯示出其混沌程度不夠,故其抗攻擊性不強(qiáng)。鑒于此,本發(fā)明提出了一種新的圖像加密算法,以增強(qiáng)其抵抗攻擊的能力。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于擺脫那些僵化的規(guī)則和解決敏感性低和抗攻擊能力不足的問(wèn)題,本發(fā)明利用典型的k均值聚類算法輔助設(shè)計(jì)圖像加密算法,提出了一種基于聚類和混沌的圖像加密算法。
具體技術(shù)方案如下:
第一步,根據(jù)混沌系統(tǒng)或非線性方程產(chǎn)生密鑰序列,在該序列中選取聚類的數(shù)據(jù)和聚類中心點(diǎn)的初值,其中,初值由安全散列算法確定;
第二步,將上一步得到的密鑰序列傳入聚類算法中進(jìn)行操作,將最終的聚類結(jié)果與圖像像素索引進(jìn)行一一相應(yīng),將同類別的像素值放置在一起,得到置亂圖像;
第三步,對(duì)置亂圖像的像素值與由密鑰序列得到的數(shù)據(jù)進(jìn)行異或操作,對(duì)圖像進(jìn)行擴(kuò)散,最終得到加密后的圖像。
上述的混沌系統(tǒng)為L(zhǎng)ogistic混沌映射或者分段線性混沌映射。
上述第二步所述的密鑰序列由Logistic混沌映射或者分段線性混沌映射產(chǎn)生;第三步所述的密鑰序列由Logistic混沌映射或者分段線性混沌映射產(chǎn)生。
上述聚類的數(shù)據(jù)包括聚類算法的中心點(diǎn)選取方式。
上述logistic映射是常用的混沌映射,具有結(jié)構(gòu)簡(jiǎn)單、初值敏感等特性,其定義如公式(1):
xi+1=μxi(1-xi) (1)
當(dāng)x0∈(0,1),μ∈[3.5699456,4]時(shí),xn∈(0,1),n=0,1,2,…時(shí),Logistic映射處于混沌狀態(tài)。其中x0和u0為L(zhǎng)ogistic映射中的原始參數(shù),而x0是由安全散列算法SHA256生成的。
上述Secure Hash Algorith(SHA)安全散列算法是一種數(shù)據(jù)加密算法,該算法的思想是接收一段明文,然后以一種不可逆的方式將它轉(zhuǎn)換為長(zhǎng)度較短、位數(shù)固定的輸出序列即散列值的過(guò)程,如SHA-2。SHA256是一種典型的單向散列算法,以512比特的分組來(lái)處理輸入的信息,且每一分組又被劃分為16個(gè)32比特的子分組,經(jīng)過(guò)了一系列的處理后,算法的輸出由八個(gè)32比特的分組組成,將這八個(gè)32比特分組級(jí)聯(lián)后將生成一個(gè)256位散列值。已知該算法具有良好的安全性,即使一個(gè)位的改變就會(huì)引起兩幅圖像之間的顯著差異。
本發(fā)明中混沌映射的初值由SHA256算法來(lái)產(chǎn)生的,公式如下:
hash_value=SHA 256(sum) (2)
其中,hash_value有256位,故分為6個(gè)32位來(lái)分別產(chǎn)生d1,d2,d3,d4(均為一個(gè)字節(jié))。例如,設(shè)hash_value值是b1b2…b255b256,那么d1為b1b2…b7b8,d2為b9b10…b15b16,...,d4為b25b26…b31b32,使用這些公式之前,均需要先將d1,d2,d3,d4從二進(jìn)制轉(zhuǎn)化為十進(jìn)制;SHA256算法的輸入值為圖像像素和。
優(yōu)選上述聚類算法為k-means算法,利用k-means聚類每個(gè)點(diǎn),對(duì)應(yīng)到圖像P上,將分為一類的圖像的像素值pi放在一塊,并按類別的順序排列,來(lái)達(dá)到圖像置亂效果,進(jìn)而得到置亂后的圖像P’。
優(yōu)選上述第三步中擴(kuò)散圖像來(lái)改變圖像像素值的混沌系統(tǒng)為分段線性混沌映射,該混沌表示為公式(5),xn∈(0,1),λ∈(0,0.5),初始值w0,c0均由安全散列算法產(chǎn)生的,其生成的一維序列wi將應(yīng)用到已置亂的圖像像素值pi'上,使用公式(6)對(duì)達(dá)到擴(kuò)散效果。
本發(fā)明增強(qiáng)了密鑰敏感性和明文敏感性,像素間的相關(guān)性抺滅強(qiáng)烈,增強(qiáng)了混沌程度,實(shí)驗(yàn)結(jié)果表明本算法能夠抵抗常見(jiàn)的攻擊并具有良好的安全性。
附圖說(shuō)明
圖1是本發(fā)明的加密流程圖。
圖2是本發(fā)明的解密流程圖
圖3是本發(fā)明的加密效果圖。
圖3中(a)表示原文圖像;(b)表示置亂后的圖像;(c)表示加密后的圖像;
(d)表示解密成功的原文圖像。
圖4是本發(fā)明的安全分析圖。
圖4中(a)表示明文圖像的直方圖;(b)表示密文圖像的直方圖。
圖5是本發(fā)明的密鑰敏感性測(cè)試。
具體實(shí)施方式
1、下面結(jié)合圖1對(duì)本發(fā)明加密做更詳細(xì)的描述
加密算法的流程如下:
1)首先計(jì)算圖像P所有像素值的和sum,使用式(2)和式(3)來(lái)生成混沌系統(tǒng)的初始值x0,y0,xx0和yy0;
2)使用初始值x0,y0和公式(1)來(lái)生成混沌序列(ui,vi),用xx0,yy0和公式(2)來(lái)生成用于k-means聚類操作的類中心序列。
3)對(duì)于任意一個(gè)點(diǎn)li=(ui,vi),使用k-means算法對(duì)混沌序列進(jìn)行聚類操作,將這些點(diǎn)分成k個(gè)類,分別是cl1,cl2,…,clk,并記錄下來(lái)每個(gè)點(diǎn)的分類結(jié)果li∈clj,i∈[1,MN],j∈[1,k];
4)將P轉(zhuǎn)換為一維序列p1p2…pMN,遍歷分類結(jié)果k,然后從第一個(gè)像素p1開(kāi)始,建立pi到li的一一映射,將屬于同一類clj的pi聚在一起,并按類別順序排列(即類外排序,類內(nèi)自然順序),形成新的圖像Pc;
5)用公式(3)和(4)生成擴(kuò)散方程所需的初始值w0和c0之后再使用公式(5)產(chǎn)生序列流,根據(jù)公式(6)對(duì)其進(jìn)行再次轉(zhuǎn)換后作用到置亂圖像Pc上,至此,算法結(jié)束并得到加密后的圖像Pe;
由于k-means算法的特性,可在擴(kuò)散時(shí)使用并行來(lái)加快效率。
2結(jié)合附圖2對(duì)本發(fā)明解密做出說(shuō)明如下:
本發(fā)明加密算法具有逆性,即圖像解密是圖像加密的逆過(guò)程。
1)用戶拿到密鑰,可使用上述說(shuō)明的公式(1-5)來(lái)生成的密鑰序列(ui,vi);
2)將密文圖像Pe轉(zhuǎn)換為一維序列pe1pe2…peMN,再公式(7)來(lái)對(duì)像素值進(jìn)行操作可得到置亂圖像Pc,
其中i是從MN到1。
3)對(duì)于任意一個(gè)點(diǎn)li=(ui,vi),使用k-means算法對(duì)混沌序列進(jìn)行聚類操作,將這些點(diǎn)分成k個(gè)類,分別是cl1,cl2,…,clk,并記錄下來(lái)每個(gè)點(diǎn)的分類結(jié)果li∈clj,i∈[1,MN],j∈[1,k];
4)根據(jù)聚類結(jié)果中每個(gè)類別的數(shù)目numi,i=(1,2,…,k),使用公式(8)計(jì)算出位置索引,進(jìn)而將li與pci相對(duì)應(yīng)可獲得明文pi,最終恢復(fù)原文圖像P。
3圖3及下列表中的數(shù)據(jù)對(duì)算法進(jìn)行分析如下:
在圖3中,(a)表示原文圖像,(b)表示置亂后的圖像,(c)表示加密后的圖像,(d)表示解密成功的原文圖像。
表1 三個(gè)方向上相鄰像素間的相關(guān)性系數(shù)
表2 信息熵
表3 明文圖像改變一比特時(shí)密文圖像的NPCR和UACI值
表4 算法所用密鑰
表1顯示出原文和密文在三個(gè)方向上相鄰像素的相關(guān)性系數(shù),可以看出本發(fā)明有效的削弱了像素間的強(qiáng)相關(guān)性,增強(qiáng)了安全性;而一個(gè)系統(tǒng)越規(guī)律它的信息熵就越小,反之越混亂越大,表2中的信息熵均接近于8說(shuō)明加密后的圖像很混亂;明文圖像的直方圖有著一定的分布規(guī)律性如圖4(a)所示,而對(duì)一個(gè)好的加密算法而言,密文圖擬應(yīng)抺除明文圖像的痕跡,正如圖4(b)所示可以看到密文整體分布相當(dāng)均勻;因此,從直方圖、信息熵及相關(guān)性方面可以看出本發(fā)明能夠很好的抵抗統(tǒng)計(jì)分析攻擊。
表3中給出了像素個(gè)數(shù)改變率(Number of Pixels Change Rate,NPCR)和統(tǒng)一平均變化強(qiáng)度(Unified Average Changing Intensity,UACI)并與其它的算法進(jìn)行比較,很清晰表明了本發(fā)明對(duì)明文敏感;對(duì)密鑰敏感性測(cè)試在于:若密鑰在有效精度內(nèi)作微小的改變就不能得到正確的明文圖像,圖5則是本發(fā)明對(duì)密鑰敏感性進(jìn)行測(cè)試的結(jié)果展示,可以看出算法具有很強(qiáng)的密鑰敏感度;故本發(fā)明能夠有效應(yīng)對(duì)暴力破解攻擊,最后根據(jù)以上表格與近年來(lái)的算法的比較結(jié)果可以看出本發(fā)明密鑰空間大,密鑰敏感性強(qiáng),能夠有效應(yīng)對(duì)各種暴力破解攻擊、已知明文攻擊和選擇明文攻擊,其安全性得到了加強(qiáng)。