基于雙密鑰的對稱加密方案

在對混沌加密和傳統(tǒng)加密特性進行分析的基礎(chǔ)上,我們提出了一個基于雙密鑰的對稱加密方案,通信雙方使用2個密鑰進行加密和解密,一個是只有通信雙方才有的私鑰,另一個是可以公開的“公鑰”。兩個密鑰通過一個敏感函數(shù)產(chǎn)生新的加密密鑰或密鑰序列,從而實現(xiàn)類似于“一次一密”的加密目標。

一、基于雙密鑰的加密方案

與傳統(tǒng)的對稱加密方案相比,基于雙密鑰的加密方案多了一個動態(tài)密鑰。通信雙方除了使用只有雙方才知道的私鑰外,還使用一個可以公開的動態(tài)密鑰。動態(tài)密鑰的主要作用是用來改變傳統(tǒng)對稱加密方案中密鑰的不變性,并通過敏感函數(shù)產(chǎn)生“隨機”的密鑰或密鑰流,使密文與明文之間的相關(guān)性不斷發(fā)生變化,增強系統(tǒng)的安全性能。方案的結(jié)構(gòu)如圖1所示。

基于雙密鑰的對稱加密方案

在上述方案中,私鑰k1仍然需要通過專用通道或人工方式進行交換或協(xié)商,而k2則由用戶A在加密時隨機選定,并同密文一起通過公共信道傳送給用戶B。

在用戶A和用戶B確定了加密算法E、解密算法D及私鑰k1之后,該方案的執(zhí)行步驟如下:

(1)用戶A輸入明文M;

(2)用戶A選擇一個動態(tài)密鑰k2,并計算K=H(k1,k2);

(3)用戶A_利用加密算法E、密鑰或密鑰流K加密明文M,得到密文C=E(K,M);

(4)用戶A把密文C及動態(tài)密鑰k2發(fā)送給用戶B;

(5)用戶B接收密文C及動態(tài)密鑰k2;

(6)用戶B根據(jù)得到的動態(tài)密鑰k2及私鑰k1,計算K=H(k1,k2);

(7)用戶B利用解密算法D和計算出的密鑰(密鑰流)K對密文C進行解密,得到明文M=D(C,K)。

在上述方案中,密鑰k1,k2應(yīng)滿足下述條件:

(1)k1與k2無關(guān),即k2的選擇對k1沒有任何影響,不管給出多少個k2的值都不可能由k2得出k1,反之也成立;

(2)函數(shù)H對k1,_k2是敏感的,即k1或k2的微小變化,將造成K值的巨大改變。

二、基于雙密鑰的加密方案的安全性分析

基于“一次一密密碼本”(one-timepad)的加密方案是絕對安全的,因為密碼本中的密鑰流是真隨機產(chǎn)生的,并且每個密鑰流只能使用一次,一個密文對所有可能的明文都是等概率的,所以攻擊者得到密文后對明文的猜測與沒有密文時相比,并沒有增加任何知識。

基于雙密鑰的加密方案雖然不屬于傳統(tǒng)的“一次一密密碼本”,但是通過動態(tài)改變密鑰k2的值,可以實現(xiàn)類似于“一次一密”的加密目標。實際上,如果函數(shù)H滿足對k1和k2單射性質(zhì),即當k1≠k1′或k2≠k2′時,H(k1,k2)≠H(k1′,k2′),則可以實現(xiàn)真正的“一次一密”,系統(tǒng)的安全性最高。

如果H對k1,k2是敏感的,即k1,k2的微小改變,K=H(k1,k2)都產(chǎn)生巨大的變化,則系統(tǒng)可以提高原加密方案的安全性能。因為密鑰的不斷變化,將使密文與明文的關(guān)聯(lián)度極大降低,從而使基于統(tǒng)計分析的攻擊變得困難或不可行。

在特殊情況下,如果K=H(k1,k2)=k1,即H與k2無關(guān),此時該方案退化成了傳統(tǒng)的對稱加密方案,則系統(tǒng)的安全性將是原加密方案的安全性。

綜上所述,采用新方案將會提高所選用的加密和解密算法的安全性,并且函數(shù)H對k1及k2越敏感,方案的安全性越高。

三、基于混沌的雙密鑰加密方案

為進一步說明上述方案的有效性和安全性,下面給出一個基于Lorenz混沌系統(tǒng)的雙密鑰加密方案,并對模擬實驗結(jié)果進行研究和分析。

1、 基于Lorenz混沌系統(tǒng)的雙密鑰加密算法

Lorenz混沌系統(tǒng)是美國著名氣象學家Lorenz在1963年提出的,是第1個混沌的物理和數(shù)學模型。該系統(tǒng)對初始條件非常敏感,當初始條件變化只有10-15時,系統(tǒng)運行軌跡的偏差可以達到-30~30,是初始條件誤差的1016倍。因此該系統(tǒng)非常適合用來生成敏感函數(shù)H。

在下面的實驗及分析中,敏感函數(shù)H定義為:

基于雙密鑰的對稱加密方案

其中,k1為混沌系統(tǒng)初始條件;k2為動態(tài)密鑰;T為采樣規(guī)則;Fk1,T(t)為采樣后的混沌信號;mod是求余運算;abs是求絕對值運算;round是四舍五入運算。

依據(jù)上述定義,函數(shù)H的輸出結(jié)果是一個取值在[0,255]的整數(shù)序列,適合于流加密。為了便于分析新方案的特性,加密算法E選取簡單的流加密算法,密文C由密鑰流K=H(k1,k2)與明文M異或得到,即C=E(K,M)=K⊕M。

基于混沌的雙密鑰加密方案可以描述如下:

(1)用戶A輸入明文M。

(2)用戶A用初始條件k1和Lorenz混沌系統(tǒng)產(chǎn)生混沌信號Fk1(t),并保證它的長度足夠加密明文。

(3)用戶A選擇動態(tài)密鑰k2,并與采樣規(guī)則T一起對Fk1(t)進行采樣處理,得到加密用的混沌信號Fk1,T(t)。

(4)用戶A利用Fk1,T(t)和k2,由函數(shù)H生成密鑰序列K。

(5)用戶A把K與M進行運算,得到密文C=K⊕M。

(6)用戶A把密文C和動態(tài)密鑰k2發(fā)送給用戶B。

解密方案是加密方案的逆運算,只要用戶B正確產(chǎn)生密鑰流K,并與C異或即可得到明文M。

2、實驗結(jié)果及分析

在上述方案中,由于加密和解密算法簡單,系統(tǒng)的安全性完全由私鑰k1、動態(tài)密鑰k2、混沌采樣規(guī)則T和敏感函數(shù)H確定。如果系統(tǒng)要具有高的安全性能,以上參數(shù)應(yīng)該滿足下面的幾個要求:

(1)函數(shù)H對密鑰k1和k2敏感,使得統(tǒng)計分析不可行。

(2)私鑰k1、采樣規(guī)則T和函數(shù)H組成的密鑰空間足夠大,使窮舉攻擊不可行。

(3)動態(tài)密鑰k2有充分的選擇空間,使得用戶A在每次加密時可以選擇不同的k2,實現(xiàn)“一次一密”的加密。

(4)密鑰序列中各元素分布是均勻的,以使密文中各元素能均勻分布。

針對上述要求,本文進行了多次試驗,并對實驗數(shù)據(jù)進行了分析。

a、函數(shù)H對密鑰k1的敏感性

根據(jù)第一節(jié)中的加密算法,函數(shù)H產(chǎn)生的是一個密鑰序列。設(shè)密鑰序列的長度為n,Hi(k1,k2)表示H(k1,k2)的第i個元素,1k為k1的誤差,序列s={s(1),s(2),…,s(n)}為:

基于雙密鑰的對稱加密方案

顯然,序列s描述了H(k1+1k,k2)_與H(k1,k2)對應(yīng)位置元素的變化情況。

因此,參數(shù):

基于雙密鑰的對稱加密方案

反映了在k1發(fā)生誤差1k時,由H產(chǎn)生的混沌序列中發(fā)生變化的元素占序列元素總數(shù)的百分比。該參數(shù)可以很好地說明H對k1的敏感程度。

由于k1是混沌系統(tǒng)的初始條件,因此對1k_分別取值10-1,10-3,…,10-15,并進行了實驗,實驗結(jié)果見表1。

基于雙密鑰的對稱加密方案

b、函數(shù)H對密鑰k2敏感性

在前面的分析中,H的取值是[0,255]中的整數(shù),k1的微小改變造成了H值99.5%以上發(fā)生了變化。而傳統(tǒng)的加密分析都是對二進制數(shù)據(jù)進行,為便于對比,本節(jié)對H的二進制表示進行分析。該結(jié)果同樣適用與H對k1的敏感性分析。

H對k2的敏感性,同樣以參數(shù)p作為評價指標,但序列s定義為:

基于雙密鑰的對稱加密方案

其中,Hi(k1,k2),Hi(k1,k2+△k2),分別表示Hi(k1,k2)和Hi(k1,k2+△k2)轉(zhuǎn)換為二進制后的第i個元素。實驗結(jié)果見表2。

基于雙密鑰的對稱加密方案

從測試結(jié)果可以看出,無論是十進制還是二進制表示,函數(shù)H對k1和k2都是極其敏感的。當k1,_k2有微小改變時,H的十進制表示有99.5%_以上的元素發(fā)生改變,二進制表示平均有49.8%的值發(fā)生了變化,充分實現(xiàn)了Shannon信息論中提出的混淆特性。另一方面,從表1還可以看出,混沌初始條件中的每一位對加密都是有效的,并且它們的變化與密鑰流的改變并不存在明顯的關(guān)系,攻擊者要想根據(jù)參數(shù)p的值來判斷密鑰的誤差是很困難的。因此,k1和k2可以很好地用來產(chǎn)生密鑰序列。

本文提出了一個基于雙密鑰和敏感函數(shù)的對稱加密新方案,給出了一個基于Lorenz混沌系統(tǒng)的實現(xiàn)方案。理論分析和實驗結(jié)果表明,當私鑰k1(Lorenz混沌系統(tǒng)的初始條件)或動態(tài)密鑰k2發(fā)生極小的改變,由敏感函數(shù)產(chǎn)生的密鑰序列將發(fā)生巨大的變化。所以,加密者通過改變動態(tài)密鑰使得每次加密都用不同的密鑰流,從而實現(xiàn)類似于“一次一密”的加密目標。

小知識之密鑰加密

發(fā)送和接收數(shù)據(jù)的雙方,使用相同的或?qū)ΨQ的密鑰對明文進行加密解密運算的加密方法。