孫彬哲 莊曼丹 梁為斌 宋金龍 王 清 孫洪波
北京理工大學(xué)珠海學(xué)院 廣東 珠海 519088
數(shù)據(jù)加密在日常生活中的個(gè)人隱私保護(hù)、商業(yè)信息保密、電子支付安全乃至軍事情報(bào)的傳遞等方面都具有重要的意義。第二次世界大戰(zhàn)期間,德國軍隊(duì)傳遞情報(bào)所使用的恩尼格瑪密碼體系號(hào)稱牢不可破,卻仍然被英國通過數(shù)理統(tǒng)計(jì)的方法破譯。相對(duì)于普通加密算法,采用混沌序列的加密算法在常用的數(shù)理分析手段面前具有更強(qiáng)的抗破解能力。
混沌現(xiàn)象是一類看似隨機(jī),實(shí)則可以通過精確的數(shù)學(xué)規(guī)律描述的現(xiàn)象。小到樹葉飄落的軌跡,大到山川河流的變遷,都是混沌現(xiàn)象。對(duì)于特定的混沌現(xiàn)象,通??梢猿橄鬄橐粋€(gè)對(duì)初始條件極為敏感的非線性動(dòng)力學(xué)系統(tǒng),如著名的三體系統(tǒng),這種非線性動(dòng)力學(xué)系統(tǒng)稱為混沌系統(tǒng)。如果一個(gè)混沌系統(tǒng)某一時(shí)刻的狀態(tài)已知,則系統(tǒng)后續(xù)任意時(shí)刻的狀態(tài)可以通過數(shù)學(xué)規(guī)律計(jì)算得知,系統(tǒng)在該時(shí)刻的狀態(tài)稱為系統(tǒng)的初值,后續(xù)若干時(shí)刻的狀態(tài)值則構(gòu)成一個(gè)混沌序列。當(dāng)一個(gè)混沌系統(tǒng)的狀態(tài)受到微小的擾動(dòng),這一微小擾動(dòng)將會(huì)通過系統(tǒng)的非線性機(jī)制不斷放大,最值使得系統(tǒng)后續(xù)的狀態(tài)與未被擾動(dòng)前應(yīng)有的演化趨勢(shì)大相徑庭,使得系統(tǒng)表現(xiàn)出不確定性和不可重復(fù)的現(xiàn)象,這就是混沌系統(tǒng)的初值敏感性,體現(xiàn)在數(shù)值上就是系統(tǒng)初值發(fā)生微小改變會(huì)導(dǎo)致后續(xù)的混沌序列發(fā)生明顯的改變。
本文利用混沌系統(tǒng)的特性使得設(shè)計(jì)的加密算法可以取得比傳統(tǒng)加密算法更好的效果,將系統(tǒng)初值作為生成密鑰的必需信息,不知道系統(tǒng)初值即無法推測(cè)加密信息所使用的密鑰,因此也無法通過數(shù)理統(tǒng)計(jì)方法對(duì)密文進(jìn)行分析破譯。同時(shí),由于混沌系統(tǒng)的初值敏感性,密碼空間可以隨著系統(tǒng)初值精度設(shè)置的提高而增大,使加密算法抗暴力破解的性能得到有效提高。
加密算法的具體設(shè)計(jì)如下。
可采用的混沌系統(tǒng)模型可有多種選擇,此處以最常見的幾種混沌系統(tǒng)作介紹:
2.1.1 邏輯斯蒂映射
邏輯斯蒂映射(logistic map)是一個(gè)典型的一維混沌映射系統(tǒng),其數(shù)學(xué)表達(dá)式如下:
式中:μ為控制參數(shù),xn為該混沌序列的第n個(gè)元素,當(dāng)控制參數(shù)μ和序列初始值x0滿足3.5699456<μ≤4,0<x0<1時(shí),系統(tǒng)處于混沌狀態(tài)。
2.1.2 埃農(nóng)映射
埃農(nóng)映射(Hénon map)是一個(gè)常見的二維混沌映射系統(tǒng),應(yīng)用這一系統(tǒng)可以生成二維混沌序列,數(shù)學(xué)表達(dá)式為xn+1=1+yn-ax2n,yn+1=bxn,當(dāng)參數(shù)值分別取為a=1.4及b=0.3時(shí),系統(tǒng)處于混沌狀態(tài)。
2.1.3 洛倫茲映射
洛倫茲映射(Lorenz map)是一個(gè)三維混沌映射系統(tǒng),是數(shù)值試驗(yàn)中最早發(fā)現(xiàn)的呈現(xiàn)混沌運(yùn)動(dòng)的耗散系統(tǒng),該系統(tǒng)的一個(gè)簡(jiǎn)單物理實(shí)現(xiàn)是流體在下方加熱上方冷卻的熱對(duì)流管中的環(huán)流,記x為流體速度,y和z分別為水平和垂直的溫度差,P與流體的普朗特?cái)?shù)(表示流體中能量和動(dòng)量遷移過程相互影響程度的無量綱標(biāo)量)成比例,b是與空間相關(guān)的常數(shù),R與流體的瑞利數(shù)(描述動(dòng)量擴(kuò)散系數(shù)與熱擴(kuò)散系數(shù)之間關(guān)系的無量綱標(biāo)量)成比例,其數(shù)學(xué)表達(dá)式為dx/dt=P(y-x),dy/dt=Rx-y-xz,dz/dt=xy-bz,當(dāng)參數(shù)值分別取p=10,b=8/3,R=28時(shí),系統(tǒng)處于混沌狀態(tài)。
在實(shí)際的加密算法開發(fā)工作中,通常要根據(jù)所需的混沌序列維度等特征選擇適合混沌系統(tǒng),通過給選定的混沌系統(tǒng)賦初值可以計(jì)算得到所需的混沌序列,可將多個(gè)不同混沌系統(tǒng)所生成的混沌序列復(fù)合使用。
在主流的對(duì)稱加密算法和非對(duì)稱加密算法中,密鑰的生成都是一個(gè)偽隨機(jī)數(shù)的生成過程,這是因?yàn)橛?jì)算機(jī)算法無法生成真正意義上的隨機(jī)數(shù),大部分程序和編程語言中的隨機(jī)數(shù)發(fā)生器都是由可確定的函數(shù)如梅森旋轉(zhuǎn)、線性同余函數(shù)通過特定“種子”作為算法的迭代初始值產(chǎn)生的偽隨機(jī)數(shù),這些“種子”來自于當(dāng)前系統(tǒng)時(shí)間、鍵盤敲擊速度、鼠標(biāo)位置、實(shí)時(shí)網(wǎng)速等可獲得的參數(shù),這意味著:如果知道了種子,或者已經(jīng)產(chǎn)生的隨機(jī)數(shù),都可以預(yù)測(cè)接下來隨機(jī)數(shù)序列。混沌序列對(duì)于密鑰生成的真正意義在于:當(dāng)獲取為系統(tǒng)初值的鍵盤敲擊速度、實(shí)時(shí)網(wǎng)速數(shù)值出現(xiàn)微小的偏差時(shí),計(jì)算得到的混沌序列就會(huì)截然不同,而鍵盤敲擊速度、實(shí)時(shí)網(wǎng)速等參數(shù)屬于現(xiàn)實(shí)世界的物理量,由于誤差必然存在而無法被精確測(cè)量,因此難以被通過諸如網(wǎng)速檢測(cè)的方法竊取生成密鑰時(shí)的網(wǎng)速從而破解密鑰。下面以一個(gè)簡(jiǎn)單的密鑰生成算法實(shí)例進(jìn)行說明:
對(duì)于特定時(shí)刻網(wǎng)速v(bps)作為系統(tǒng)初值生成的混沌序列X=[x1,x2,x3…,xn],取xi的倒數(shù)第二位數(shù)值除以2,得到取值為0或1的余數(shù),遍歷整個(gè)混沌序列所有元素,即可得到一個(gè)二進(jìn)制隨機(jī)數(shù)序列,該序列中0和1在統(tǒng)計(jì)學(xué)上符合隨機(jī)分布,出現(xiàn)的概率在50%上下波動(dòng)。此處特別說明:混沌序列中各個(gè)元素的最后一位數(shù)值由于計(jì)算機(jī)浮點(diǎn)數(shù)的精度限制并不能確保的精確值,計(jì)算所得的余數(shù)序列在統(tǒng)計(jì)學(xué)上可能呈現(xiàn)出某種系統(tǒng)性偏差,因此不能采用。當(dāng)系統(tǒng)測(cè)得的網(wǎng)速數(shù)值出現(xiàn)微小差異時(shí),所生成的混沌序列與原來截然不同,計(jì)算出的密鑰也與真實(shí)密鑰截然不同,無法對(duì)加密信息進(jìn)行破譯。因此,運(yùn)用以上算法生成的隨機(jī)數(shù)序列可以作為加密算法的密鑰使用。
下文以AES為例介紹混沌加密與傳統(tǒng)加密算法的結(jié)合。
AES(Advanced Encryption Standard,高級(jí)加密標(biāo)準(zhǔn))是美國聯(lián)邦政府所采用的加密標(biāo)準(zhǔn),現(xiàn)已代替DES(Data Encryption Standard,數(shù)據(jù)加密標(biāo)準(zhǔn))被全世界廣泛使用。AES算法加密流程主要包括一下幾個(gè)部分:
2.3.1 沙盒代換:通過類似查字典的方式為每個(gè)字節(jié)的數(shù)據(jù)找到一個(gè)對(duì)應(yīng)的“序號(hào)”,從而將所有字節(jié)由明文逐個(gè)替換成密文;
2.3.2 行移位和列混淆:將數(shù)據(jù)矩陣中各行各列的數(shù)據(jù)按照特定的規(guī)律進(jìn)行亂序排列;
2.3.3 密鑰輪加:將二進(jìn)制隨機(jī)數(shù)密鑰與待加密數(shù)據(jù)進(jìn)行異或運(yùn)算。
上述幾個(gè)加密步驟在實(shí)際的加密過程中通常會(huì)重復(fù)執(zhí)行多次,以確保密文具有充足的加密強(qiáng)度?;煦缂用芘c上述加密算法結(jié)合最簡(jiǎn)單的方式是將混沌序列計(jì)算得到的二進(jìn)制隨機(jī)數(shù)序列作為密鑰輪加步驟的主密鑰使用,在每個(gè)加密循環(huán)中,由主密鑰通過RIJNDAEL密鑰生成方案產(chǎn)生對(duì)應(yīng)的回合密鑰并整合到算法中,與待加密數(shù)據(jù)進(jìn)行異或運(yùn)算。
下圖分別為待加密的原始圖像(校園鳥瞰圖,源文件大小42.9 MB)和經(jīng)前文所敘的混沌序列算法加密后的圖像以及兩圖像的局部放大對(duì)比圖??梢?加密后的圖像無法辨認(rèn)出原始圖像所包含的信息。因此,加密算法具有良好的效果。
數(shù)據(jù)加密在日常生活中的個(gè)人隱私保護(hù)、商業(yè)信息保密、電子支付安全乃至軍事情報(bào)的傳遞等方面都具有重要的意義。相對(duì)于普通加密算法,采用混沌序列的加密算法在常用的數(shù)理分析手段面前具有更強(qiáng)的抗破解能力。本文將混沌系統(tǒng)的特性應(yīng)用于圖像的加密,利用混沌系統(tǒng)的特性使得加密算法可以取得更好性能,設(shè)計(jì)出具有抗數(shù)理分析方法破譯的高強(qiáng)度圖像加密算法,該算法可與傳統(tǒng)加密算法結(jié)合,進(jìn)一步提高加密數(shù)據(jù)的安全性。