專利名稱:基于動(dòng)態(tài)變長碼的數(shù)據(jù)加密與解密系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息技術(shù)領(lǐng)域中的信息安全技術(shù),具體地涉及二進(jìn)制編碼數(shù)據(jù)的加密與解密。
背景技術(shù):
密碼技術(shù)是信息安全技術(shù)中的核心技術(shù),它主要包括加密技術(shù)、認(rèn)證技術(shù)和密鑰管理三大技術(shù)。加密技術(shù)是實(shí)現(xiàn)信息保密的重要手段。所謂加密就是使用數(shù)學(xué)的方法重新編碼原始數(shù)據(jù),使得除了合法的接收者(使用正確的密鑰)外,其它任何人要想恢復(fù)原先的“消息”——明文,或讀懂變化后的“消息”——密文,都是非常困難的。根據(jù)加密和解密時(shí)所用的密鑰是否相同,可將密碼體系分為對稱密碼體系與公鑰密碼體系。本發(fā)明屬于對稱密碼體系。在對稱密碼體系中,對信息加密的算法可分為兩大類(1)是分組加密算法,該類算法的基本思想是將明文以64比特(或其它固定長度)為一組,在密鑰的作用下,通過多輪置換和迭代,輸出64比特的密文。分組加密算法可視為大字符集上的置換加密算法。著名的分組加密算法有DES和IDEA等。(2)是序列密碼算法,其核心思想是設(shè)計(jì)一個(gè)隨機(jī)序列產(chǎn)生器,該隨機(jī)序列產(chǎn)生器在用戶密鑰的作用下,生成隨機(jī)的密鑰流,將密鑰流與明文流作模2加法,從而形成密文流。序列密碼可以看成是多表密碼的一種,如果密碼的周期不大,它將非常類似于維吉利亞(Vigenere)密碼。隨機(jī)序列一般通過反饋移位寄存器來產(chǎn)生。
對一組信源的編碼,既可采用定長碼,也可采用變長碼。采用定長碼時(shí)便于接收端的譯碼,而采用變長碼是為了提高信號(hào)的傳輸效率或減少信息的儲(chǔ)存空間。變長編碼廣泛應(yīng)用于數(shù)據(jù)壓縮系統(tǒng)中,如著名的霍夫曼(Huffman)編碼便是可變字長編碼的一種。為了保證解碼時(shí)的唯一性,變長碼編碼時(shí)必須符合“前綴編碼”的要求,即較短的編碼決不能是較長編碼的前綴。二叉樹是構(gòu)造變長碼最理想的選擇。要編碼的字符總是出現(xiàn)在樹葉上,假定從根向樹葉行走的過程中,左轉(zhuǎn)為0,右轉(zhuǎn)為1,則一個(gè)字符的編碼就是從根走到該字符所在樹葉的路徑。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種對二進(jìn)制數(shù)據(jù)加密與解密的設(shè)備;本發(fā)明的另一個(gè)目的是提供一種基于動(dòng)態(tài)變長碼的數(shù)據(jù)加密與解密系統(tǒng);本發(fā)明的另一個(gè)目的是提供一種基于本系統(tǒng)方法的計(jì)算機(jī)軟件或硬件設(shè)備。
一種對二進(jìn)制數(shù)據(jù)加密的設(shè)備,包括一個(gè)系統(tǒng)初態(tài)生成器,用于產(chǎn)生系統(tǒng)初始狀態(tài)時(shí)各字符的度值;一個(gè)偽隨機(jī)數(shù)發(fā)生器,用于產(chǎn)生256比特的隨機(jī)數(shù);一個(gè)變長碼編碼器,用于將輸入的明文字符用變長碼編碼輸出;一個(gè)系統(tǒng)狀態(tài)轉(zhuǎn)換器,用于系統(tǒng)狀態(tài)的自動(dòng)轉(zhuǎn)換。
其中所述的系統(tǒng)初態(tài)生成器主要包括256比特用戶密鑰存貯單元、系統(tǒng)選定的16階幻方數(shù)據(jù)的存貯單元和各字符度值的存貯單元;各字符的度值由256比特用戶密鑰形成的16階方陣K16與系統(tǒng)選定的16階幻方C16按矩陣相乘的方法而得到。
其中所述的系統(tǒng)初態(tài)生成器中256比特用戶密鑰的生成規(guī)則是本系統(tǒng)中用戶的密鑰長為256比特,即選取32個(gè)鍵盤上可輸入字符(ASCII值從32至126)作為密鑰,如果用戶密鑰多于32個(gè)字符,系統(tǒng)只選取前32個(gè)字符;如果少于32個(gè)字符,則系統(tǒng)按如下規(guī)則將密鑰補(bǔ)充為32個(gè)字符首先重復(fù)用戶的密鑰到32位長,然后將補(bǔ)充部分字符的ASCII值增加一個(gè)遞增的量。
其中所述的偽隨機(jī)數(shù)發(fā)生器用來產(chǎn)生256比特的隨機(jī)數(shù),偽隨機(jī)數(shù)可用線形擬合生成器或較安全的BBS方法產(chǎn)生。
其中所述的變長碼編碼器可選用霍夫曼編碼方法、香農(nóng)—法諾編碼方法、范式霍夫曼編碼方法或其它易于用軟件或硬件實(shí)現(xiàn)的變長碼編碼方法。
其中所述的系統(tǒng)狀態(tài)轉(zhuǎn)換器包括一個(gè)固定值M和M個(gè)存貯單元,用于存貯M個(gè)度值的增加量Delta(i),i=0,1,2,3…M-1;當(dāng)前輸入明文字符的度值整除M后的余數(shù)為m,則當(dāng)前輸入明文字符度值的增加值為Delta(m)。
一種對二進(jìn)制數(shù)據(jù)解密的設(shè)備,包括一個(gè)系統(tǒng)初態(tài)生成器,用于產(chǎn)生系統(tǒng)初始狀態(tài)時(shí)各字符的度值;一個(gè)變長碼解碼器,用于將輸入的密文序列進(jìn)行解碼。
一個(gè)系統(tǒng)狀態(tài)轉(zhuǎn)換器,用于系統(tǒng)狀態(tài)的自動(dòng)轉(zhuǎn)換。
這里的系統(tǒng)初態(tài)生成器和系統(tǒng)狀態(tài)轉(zhuǎn)換器與加密設(shè)備中的完全相同,而變長碼解碼器則是與加密設(shè)備中的變長碼編碼器相匹配的解碼器。
一種對二進(jìn)制數(shù)據(jù)進(jìn)行加密與解密的系統(tǒng),包括一個(gè)對二進(jìn)制數(shù)據(jù)加密的設(shè)備和一個(gè)對二進(jìn)制數(shù)據(jù)解密的設(shè)備。
其中所述加密設(shè)備的工作過程是系統(tǒng)初態(tài)生成器根據(jù)輸入的用戶密鑰,生成系統(tǒng)的初始狀態(tài);偽隨機(jī)數(shù)生成器產(chǎn)生256比特的隨機(jī)數(shù),每8比特為一組,通過變長碼編碼器編碼輸出;每加密一組隨機(jī)數(shù)后,通過系統(tǒng)狀態(tài)轉(zhuǎn)換器使系統(tǒng)的狀態(tài)發(fā)生改變,然后再加密下一組隨機(jī)數(shù),當(dāng)32組隨機(jī)數(shù)加密完成后,將這256比特的隨機(jī)數(shù)視作用戶密鑰而生成新的系統(tǒng)初態(tài);明文序列每8比特為一組,通過變長碼編碼器編碼輸出;每加密一組明文信息后,通過系統(tǒng)狀態(tài)轉(zhuǎn)換器使系統(tǒng)的狀態(tài)發(fā)生改變,直到所有明文都加密完畢。
其中所述的解密設(shè)備的工作過程是系統(tǒng)初態(tài)生成器根據(jù)輸入的用戶密鑰,生成系統(tǒng)的初始狀態(tài),逐位輸入密文序列,通過變長碼解碼器進(jìn)行解碼,每解碼得出一組隨機(jī)數(shù)后,通過系統(tǒng)狀態(tài)轉(zhuǎn)換器使系統(tǒng)的狀態(tài)發(fā)生改變;當(dāng)解碼得到最前面的32組隨機(jī)數(shù)(256比特)后,由這256比特的隨機(jī)數(shù)形成新的系統(tǒng)初始狀態(tài),然后再逐位輸入密文序列,通過變長碼解碼器進(jìn)行解碼,每解碼得出一組明文信息,通過系統(tǒng)狀態(tài)轉(zhuǎn)換器使系統(tǒng)的狀態(tài)發(fā)生相應(yīng)的改變,直到所有密文解碼完成。
本發(fā)明屬于序列密碼加密系統(tǒng),其實(shí)質(zhì)是無周期的多表密碼代替方法。主要特征有如下三點(diǎn)(1)是對固定長度(本系統(tǒng)設(shè)定為8比特)的一組明文信息加密后,生成的密文長度在1~255比特之間,密文的長短是變長碼編碼器根據(jù)系統(tǒng)的狀態(tài)所決定的。(2)是偽隨機(jī)數(shù)發(fā)生器產(chǎn)生256比特的隨機(jī)數(shù),這些隨機(jī)數(shù)并不在明文中出現(xiàn),用戶密鑰生成的系統(tǒng)初態(tài)用來加密這些隨機(jī)數(shù),而由這些隨機(jī)數(shù)生成的系統(tǒng)初態(tài),才是真正用來加密明文信息的。(3)系統(tǒng)的狀態(tài)每加密一組隨機(jī)數(shù)或明文后都要發(fā)生變化,而系統(tǒng)的初始狀態(tài)是由用戶密鑰所決定的。系統(tǒng)狀態(tài)的轉(zhuǎn)換只依賴于當(dāng)前輸入明文字符的度。
由于難于確定密文與明文的對應(yīng)關(guān)系,從而能有效抵抗各種系統(tǒng)分析的攻擊方法,使系統(tǒng)具有更好的安全性。
圖1是加密過程示意圖。
圖2是解密過程示意圖。
具體實(shí)施例方式
下面結(jié)合具體實(shí)施方式
,對本發(fā)明的內(nèi)容做進(jìn)一步的說明。
1.加密與解密設(shè)備,包括1.1系統(tǒng)初態(tài)生成器系統(tǒng)狀態(tài)的自動(dòng)轉(zhuǎn)換是本系統(tǒng)的核心。待加密的明文每8比特為一組,故有28=256種不同的字符,為了說明“系統(tǒng)狀態(tài)”這個(gè)概念,先定義字符的“度”這個(gè)量。字符的“度”(用符號(hào)D表示),是與該字符在明文中的出現(xiàn)次數(shù)相關(guān)的一個(gè)量,其初值由用戶密鑰所決定。字符每出現(xiàn)一次,該字符的D就增加某個(gè)特定的值,增加的值由上一時(shí)刻該字符的D決定。256個(gè)字符按各自的D從大到小排列以后,字符的排列順序和D值的排列順序,就唯一確定了“系統(tǒng)狀態(tài)”。只有當(dāng)字符的排列順序和D值的排列順序完全相同時(shí),系統(tǒng)才處于同一種狀態(tài)。
本系統(tǒng)中用戶的密鑰為256比特,即可選取32個(gè)鍵盤上可輸入字符(ASCII值從32至126)作為密鑰。如果用戶密鑰多于32個(gè)字符,系統(tǒng)只選取前32個(gè)字符;如果少于32個(gè)字符,則系統(tǒng)按如下規(guī)則將密鑰補(bǔ)充為32個(gè)字符首先重復(fù)用戶的密鑰到32個(gè)字符,然后將補(bǔ)充部分字符的ASCII值增加一個(gè)遞增的量(不超過4)。例如遞增量為1時(shí),補(bǔ)充部分第1個(gè)字符的ASCII值加1,第2個(gè)字符的加2,…,第31個(gè)字符加31。將補(bǔ)充部分的字符變換為與用戶密鑰不同的字符,以增加密鑰的隨機(jī)特性。
將256比特的用戶密鑰按某種較為混亂的方式生成16階的密鑰方陣K16。方陣生成的方式可以自由選擇,以16比特密鑰為一組,則每組密鑰必須在方陣中處于不同的行和不同的列中。
決定系統(tǒng)初始狀態(tài)還需要另外一個(gè)較為特殊的方陣C16,即16階幻方。所謂n階幻方,就是將1至n2的自然數(shù)(或其它n2個(gè)相連的自然數(shù))填入n乘n的方格中,使方格中每行數(shù)之和、每列數(shù)之和、對角線上數(shù)之和都相等。16階幻方的數(shù)量非常巨大,可任意選擇一個(gè)供系統(tǒng)使用。將用戶密鑰形成的方陣K16和系統(tǒng)幻方C16,按矩陣相乘的方法得到另一方陣S16,S16中的值就是系統(tǒng)初始時(shí)刻256個(gè)字符的“度”。每個(gè)字符的D值確定了,系統(tǒng)的初始狀態(tài)也就隨之確定了。
1.2(偽)隨機(jī)數(shù)發(fā)生器隨機(jī)數(shù)真正的唯一來源涉及到測量物理現(xiàn)象,譬如,放射性衰變的計(jì)時(shí),電子線路的白噪聲等。由于難以獲得真正的隨機(jī)數(shù),實(shí)際應(yīng)用時(shí)都用偽隨機(jī)數(shù)生成器(PRNG)來產(chǎn)生隨機(jī)數(shù)據(jù)。偽隨機(jī)數(shù)生成器是一個(gè)生成完全可預(yù)料的數(shù)列(稱為流)的確定性程序。由偽隨機(jī)數(shù)生成器返回的每一個(gè)值完全由它的前一個(gè)值所決定(第一個(gè)數(shù),即種子決定了一切)。一個(gè)編寫得很好的的PRNG可以創(chuàng)建一個(gè)序列,而這個(gè)序列的屬性與許多真正隨機(jī)數(shù)的序列的屬性是一樣的。例如可以以相同幾率在一個(gè)范圍內(nèi)生成任何數(shù)字;可以生成帶任何統(tǒng)計(jì)分布的流;生成的數(shù)字流不具備可辨別的模式。
常用的偽隨機(jī)數(shù)生成器是屬于線形擬合生成器一類的。這類生成器相當(dāng)普遍,它們采用的數(shù)學(xué)公式為Xn+1=(aXn+b)modC即第n+1個(gè)數(shù)等于第n個(gè)數(shù)乘以某個(gè)常數(shù)a,再加上常數(shù)b。如果結(jié)果大于或等于某個(gè)常數(shù)c,那么通過除以c,并取它的余數(shù)來將這個(gè)值限制在一定范圍內(nèi)。式中a、b和c通常是質(zhì)數(shù)。
偽隨機(jī)數(shù)生成器也可選用安全但計(jì)算量較大的BBS方法選取2個(gè)模4余3的質(zhì)數(shù)p和q,n等于p乘以q,隨機(jī)選取的初始值s0為屬于關(guān)于n的平方剩余QRn類中的任一元素,利用公式Si=Si-12modn;i=1,2,...,]]>產(chǎn)生一序列z1,z2,…其中zi≡simod 2 i=1,2,…本系統(tǒng)引入256比特的隨機(jī)數(shù),其主要目的有兩個(gè)一是希望達(dá)到一次一密的加密效果,二是增加選擇明文攻擊的難度。用戶密鑰生成的系統(tǒng)初態(tài),用來加密256比特的隨機(jī)數(shù)據(jù),隨機(jī)數(shù)并不在明文中出現(xiàn)。將這些隨機(jī)數(shù)視作用戶密鑰而生成的系統(tǒng)初態(tài),才是真正用來加密明文信息的。因此,當(dāng)用戶密鑰不變時(shí),即使對同一份明文加密多次,每一次的加密結(jié)果都是完全不同的。引入256比特的隨機(jī)數(shù)后,理論上需要產(chǎn)生2128個(gè)(約3.4×1038)隨機(jī)數(shù),才能使兩組隨機(jī)數(shù)完全一樣的概率大于0.5。因此,這將大大增加密碼分析者采用選擇明文攻擊時(shí)的工作難度。
1.3變長碼編碼器本系統(tǒng)的另一個(gè)核心部件就是變長碼編碼器。輸入一組(8比特)待編碼的明文,編碼器根據(jù)系統(tǒng)當(dāng)前所處的狀態(tài),輸出一定比特的數(shù)據(jù)作為輸入明文的變換結(jié)果。如果輸入明文在系統(tǒng)中的D值較高,則輸出的編碼長度小于8,反之,則輸出的編碼長度大于8。如果將系統(tǒng)中各字符的D值視作該字符的出現(xiàn)頻率,則可采用霍夫曼編碼或香農(nóng)一法諾(Shannon-Fano)編碼作為變長碼編碼器,但這兩種編碼器的編碼速度可能較慢。本加密系統(tǒng)是開放式的結(jié)構(gòu),也可選用其它工作方式的變長碼編碼器。如下面要介紹的范式霍夫曼編碼(Canonical Huffman Code)。
范式Huffman編碼的基本思路是編碼只要符合以下兩個(gè)條件(1)是前綴編碼;(2)某一字符編碼長度和使用二叉樹建立的該字符的編碼長度相同,這樣的編碼都可以叫做Huffman編碼。構(gòu)造范式Huffman編碼的方法大致是①統(tǒng)計(jì)所有待編碼符號(hào)的出現(xiàn)頻率并排序。
②根據(jù)這些頻率信息求出該符號(hào)在傳統(tǒng)Huffman編碼樹中的深度,也就是表示該符號(hào)所需要的位數(shù)。因?yàn)橹匾氖窃摲?hào)在樹中的深度,故沒有必要構(gòu)造整棵二叉樹。求每個(gè)符號(hào)在傳統(tǒng)Huffman編碼樹中深度的具體方法為第1步按字符的出現(xiàn)頻率排升序,即出現(xiàn)頻率最小的序號(hào)為1,出現(xiàn)頻率最大的序號(hào)為n(設(shè)共有n個(gè)字符),初始編碼長度都為0,初始出現(xiàn)頻率為各自的出現(xiàn)頻率值。
第2步序號(hào)為1和2的符號(hào),編碼長度增加1;出現(xiàn)頻率改變?yōu)?個(gè)符號(hào)出現(xiàn)頻率之和。
第3步所有序號(hào)值大于1的字符都將序號(hào)值減去1;第4步重新按符號(hào)的出現(xiàn)頻率排升序(序號(hào)值相同的為一組)。若所有符號(hào)的序號(hào)值都為1,則計(jì)算過程結(jié)束,否則轉(zhuǎn)第2步。
例如有8個(gè)字符A、B、C、D、E、F、G、H,各自的出現(xiàn)頻率分別為0.04,0.05,0.16,0.2,0.25,0.12,0.1,0.08,則計(jì)算過程如下表所示。
③分別統(tǒng)計(jì)各個(gè)長度的編碼對應(yīng)了多少個(gè)符號(hào),從最大長度開始編碼。設(shè)出現(xiàn)頻率最小字符的編碼長度為MaxLen,則該字符編碼為MaxLen個(gè)0,其它同樣長度的編碼逐個(gè)加1;對編碼長度小于MaxLen的字符,則選擇的編碼不能為長度較長編碼的前綴。例如上例,編碼長度為5的符號(hào)有2個(gè),長度為4的有1個(gè),長度為3的有3個(gè),長度為2的有2個(gè),按出現(xiàn)頻率排升序?yàn)锳BHGFCDE,則分配的編碼依次為A=00000,B=00001,H=0001,G=001,F(xiàn)=010,C=011,D=10,E=11。
系統(tǒng)也可以選用其它易于用軟件或硬件實(shí)現(xiàn)的變長碼編碼器。
1.4變長碼解碼器變長碼解碼器是與系統(tǒng)選定的變長碼編碼器相對應(yīng)的,在設(shè)計(jì)編碼器時(shí)也就相應(yīng)地設(shè)計(jì)好了與之匹配的解碼器。
1.5系統(tǒng)狀態(tài)轉(zhuǎn)換器如果系統(tǒng)的狀態(tài)不發(fā)生改變,即對同一明文輸出相同的密文,則系統(tǒng)只是一個(gè)簡單代替變換,很容易被攻破。系統(tǒng)狀態(tài)的轉(zhuǎn)換只依賴于當(dāng)前輸入明文字符的度。系統(tǒng)設(shè)定某個(gè)固定的值M和M個(gè)D值的增加量Delta(M),當(dāng)前輸入明文字符的D值整除M后的余數(shù)為m,則當(dāng)前輸入明文字符D值的增加值為Delta(m)。系統(tǒng)根據(jù)各字符的D值重新排序后,系統(tǒng)的狀態(tài)就發(fā)生了變化。
2.加密示例為簡單起見,將明文字符以4比特為一組,共可組成16個(gè)字符,用十六進(jìn)制符號(hào)0,1,…,F(xiàn)來表示。系統(tǒng)初始狀態(tài)的生成過程在這里不詳細(xì)描述?,F(xiàn)假定系統(tǒng)初始時(shí)刻各字符的度D0,D1,…,DF分別為28,39,55,16,72,62,43,22,19,35,58,49,31,67,27,40,待加密的字符串為“Are you ready?Let’s go.”用ASCII來編碼,則明文字符用16進(jìn)制符號(hào)可表示為41726520796F752072656164793F204C6574277320676F2E。變長碼編碼器采用香農(nóng)-法諾編碼,字符D值小的位于左子樹,字符D值大的位于右子樹,左子樹編碼為0,右子樹編碼為1。系統(tǒng)狀態(tài)轉(zhuǎn)換器中字符D值增加量設(shè)為8個(gè),Delta(0)~Delta(7)分別為3,5,7,9,11,13,17,19,23。設(shè)當(dāng)前字符的度為Di,m=Dimod 8,則Di+1=Di+Delta(m)。
系統(tǒng)狀態(tài)的轉(zhuǎn)換及編碼的輸入輸出結(jié)果如下表所示。
由上表可見,對同一輸入字符,輸出的二進(jìn)制編碼既可能相同,也可能不同,編碼長度也不盡相同。而不同的輸入字符在不同的狀態(tài)下,卻有可能輸出相同的二進(jìn)制代碼。
3.加密過程如圖1所示,用戶輸入密鑰后,開關(guān)K1接通,通過系統(tǒng)初態(tài)生成器形成系統(tǒng)的初始狀態(tài),然后K1斷開,K2接通;偽隨機(jī)數(shù)發(fā)生器產(chǎn)生256比特的隨機(jī)數(shù),每8比特為一組,通過變長碼編碼器編碼輸出,系統(tǒng)狀態(tài)轉(zhuǎn)換器根據(jù)輸入字符的不同而使系統(tǒng)的狀態(tài)發(fā)生相應(yīng)的變化,然后再加密下一組隨機(jī)數(shù)。當(dāng)32組隨機(jī)數(shù)加密完成后,開關(guān)K2斷開,K3接通,將這些隨機(jī)數(shù)視作用戶密鑰,通過系統(tǒng)初態(tài)生成器產(chǎn)生新的系統(tǒng)初態(tài)。開關(guān)K3斷開,K4接通,根據(jù)新的系統(tǒng)初始狀態(tài)來加密第一組明文。每加密一組明文后系統(tǒng)狀態(tài)轉(zhuǎn)換器使系統(tǒng)的狀態(tài)發(fā)生相應(yīng)的改變,然后再加密下一組明文信息,直到所有明文加密完畢,加密過程結(jié)束。
4.解密過程如圖2所示,用戶輸入密鑰后,開關(guān)K1接通,通過系統(tǒng)初態(tài)生成器形成系統(tǒng)的初始狀態(tài)。然后K1斷開,K2接通,逐位輸入密文序列,通過變長碼解碼器進(jìn)行解碼。當(dāng)解碼得到32組數(shù)據(jù)(256比特)后,開關(guān)K2斷開,K3接通。這最前的32組數(shù)據(jù)是系統(tǒng)加密時(shí)添加的隨機(jī)數(shù),將這256比特隨機(jī)數(shù)視作用戶密鑰,通過系統(tǒng)初態(tài)生成器產(chǎn)生新的系統(tǒng)初態(tài)。然后開關(guān)K3斷開,K2接通,逐位輸入密文序列,通過變長碼解碼器進(jìn)行解碼。每解碼得出一組明文信息,系統(tǒng)狀態(tài)轉(zhuǎn)換器使系統(tǒng)的狀態(tài)發(fā)生相應(yīng)的改變,直到所有密文解密完成。加密和解密系統(tǒng)中系統(tǒng)初態(tài)生成器、系統(tǒng)狀態(tài)轉(zhuǎn)換器是完全相同的。
5.系統(tǒng)安全性分析(1)本加密系統(tǒng)對唯密文攻擊是安全的。唯密文攻擊利用了自然語言中的冗余信息在密文中仍然得到保留這一弱點(diǎn)。本系統(tǒng)在攻擊者只有若干密文的情況下,無法確定每一組明文對應(yīng)的密文長度,且本系統(tǒng)屬于無周期的多表密碼代替方法,同一組明文所對應(yīng)的密文既可能相同,也可能不相同,因此,無法運(yùn)用統(tǒng)計(jì)分析的方法得出明文消息。事實(shí)上,用本系統(tǒng)對同一份長度為幾萬字節(jié)的二進(jìn)制文件加密,每次加密時(shí)的密鑰也相同,試驗(yàn)時(shí)產(chǎn)生的幾千個(gè)加密文件其長度幾乎都不相同,最長與最短者相差幾千字節(jié)。即使兩個(gè)密文文件的長度相同,其中的內(nèi)容也幾乎全不相同。因此,面對兩份密文文件,唯密文攻擊者無法確定兩者是明文相同而密鑰不同、還是明文不同而密鑰相同、或者明文與密鑰都不相同。(2)本加密系統(tǒng)對已知明文攻擊是安全的。當(dāng)攻擊者知道了一部分密文所對應(yīng)的明文時(shí),便可通過分析密文與明文的對應(yīng)關(guān)系,企圖得出用戶的密鑰或解密用同一密鑰加密的文件。本系統(tǒng)由于引入了256比特的隨機(jī)數(shù),而這些隨機(jī)數(shù)并不出現(xiàn)在明文中。攻擊者通過分析得出的只是由這些隨機(jī)數(shù)生成的初始狀態(tài)的部分信息,無法進(jìn)一步得到由用戶密鑰生成的系統(tǒng)初態(tài)的信息,從而無法通過進(jìn)一步分析得到用戶的密鑰。(3)本加密系統(tǒng)對選擇明文攻擊也是安全的。引入256比特的隨機(jī)數(shù)后,理論上需要產(chǎn)生2128(約3.4×1038)個(gè)隨機(jī)數(shù),才能使兩組隨機(jī)數(shù)完全一樣的概率大于0.5。攻擊者通過巨量的選擇明文分析,有可能得到由初始狀態(tài)生成的二叉樹的結(jié)構(gòu)信息,但由二叉樹的結(jié)構(gòu)反推出系統(tǒng)初態(tài)各字符的D值,是非常困難甚至是不可能的事情。不能確定系統(tǒng)初始時(shí)刻各字符的D值,就不能反推出用戶的密鑰。因此,本系統(tǒng)對選擇明文攻擊也是計(jì)算上安全的。(4)本系統(tǒng)對窮舉密鑰攻擊也是計(jì)算上安全的。本系統(tǒng)的用戶密鑰長度為32個(gè)ASCII字符,即長度為256比特,但由于健盤輸入的限制,可供用戶輸入的密鑰字符只有95個(gè)(即ASCII值從32到126),可組成的用戶密鑰數(shù)為9532(約為1.9×1063)個(gè)。即使動(dòng)用全世界的計(jì)算能力,再考慮到未來計(jì)算能力的迅速增長,每秒鐘能破譯的密鑰數(shù)量假定為1030個(gè),每年能破譯的密鑰數(shù)量為3.2×1037,則窮舉一半用戶密鑰仍需2.9×1025年。因此,本系統(tǒng)對窮舉密鑰攻擊也是計(jì)算上安全的。
本發(fā)明既可編成程序以軟件方式實(shí)現(xiàn)二進(jìn)制數(shù)據(jù)的加密與解密功能,也可制作成芯片以硬件的方式實(shí)現(xiàn)數(shù)據(jù)的加密與解密功能。本發(fā)明作為一種加密體系,可以有多種具體的實(shí)現(xiàn)方式,具有較好的開放性和可變性。例如,在系統(tǒng)初態(tài)生成器的具體實(shí)現(xiàn)中,由用戶256比特密鑰生成密鑰方陣K16時(shí),每一位密鑰在方陣中的位置都是可變的。即使用戶密鑰不變,但生成密鑰方陣K16的規(guī)則發(fā)生了改變,產(chǎn)生的系統(tǒng)初態(tài)也相應(yīng)地發(fā)生改變,從而產(chǎn)生完全不同的加密結(jié)果。在系統(tǒng)初態(tài)生成器的具體實(shí)現(xiàn)中,另一個(gè)可以改變的是系統(tǒng)選定的16階幻方C16。16階幻方的具體數(shù)目非常巨大,人們目前還不能完全計(jì)算出來。選擇不同的幻方,由同一用戶密鑰生成的系統(tǒng)初態(tài)也完全不同。更換系統(tǒng)初態(tài)生成器,將會(huì)使密碼分析者的所有工作前功盡棄。本系統(tǒng)的開放性還體現(xiàn)在可以選擇多種形式的變長碼編碼器和解碼器。例如,若需要相鄰兩個(gè)狀態(tài)的編碼有較大的變化,可以選用霍夫曼編碼器;若需要編碼和解碼的速度較快,可以選用前面所述的范式霍夫曼編碼器,或其它形式的變長碼編碼器。不同的編碼器對由同一密鑰和同一明文產(chǎn)生的結(jié)果都是不一樣的。本系統(tǒng)的可變性也體現(xiàn)在系統(tǒng)狀態(tài)轉(zhuǎn)換器的具體實(shí)現(xiàn)上。系統(tǒng)設(shè)定的某個(gè)固定值M和M個(gè)D值的增加量Delta(M)是可變的M值越大,系統(tǒng)狀態(tài)的可能變化值也越多,密碼分析者的困難也越大;Delta(i)值越大,系統(tǒng)狀態(tài)轉(zhuǎn)換時(shí)產(chǎn)生影響的字符數(shù)也越多,相鄰狀態(tài)間的編碼變化也越多??傊鞠到y(tǒng)在具體實(shí)施過程中,可以根據(jù)實(shí)際的限制因素選擇最合適的實(shí)現(xiàn)方式。
權(quán)利要求
1.一種對二進(jìn)制數(shù)據(jù)加密的設(shè)備,包括一個(gè)系統(tǒng)初態(tài)生成器,用于產(chǎn)生系統(tǒng)初始狀態(tài)時(shí)各字符的度值;一個(gè)偽隨機(jī)數(shù)發(fā)生器,用于產(chǎn)生256比特的隨機(jī)數(shù);一個(gè)變長碼編碼器,用于將輸入的明文字符用變長碼編碼輸出;一個(gè)系統(tǒng)狀態(tài)轉(zhuǎn)換器,用于系統(tǒng)狀態(tài)的自動(dòng)轉(zhuǎn)換。
2.根據(jù)權(quán)利要求1所述的二進(jìn)制數(shù)據(jù)加密設(shè)備,其中所述的系統(tǒng)初態(tài)生成器主要包括256比特用戶密鑰存貯單元、系統(tǒng)選定的16階幻方數(shù)據(jù)的存貯單元和各字符度值的存貯單元;各字符的度值由256比特用戶密鑰形成的16階方陣K16與系統(tǒng)選定的16階幻方C16按矩陣相乘的方法而得到。
3.根據(jù)權(quán)利要求2所述的二進(jìn)制數(shù)據(jù)加密設(shè)備,其中所述的系統(tǒng)初態(tài)生成器中256比特用戶密鑰的生成規(guī)則是本系統(tǒng)中用戶的密鑰長為256比特,即選取32個(gè)鍵盤上可輸入字符(ASCII值從32至126)作為密鑰,如果用戶密鑰多于32個(gè)字符,系統(tǒng)只選取前32個(gè)字符;如果少于32個(gè)字符,則系統(tǒng)按如下規(guī)則將密鑰補(bǔ)充為32個(gè)字符首先重復(fù)用戶的密鑰到32位長,然后將補(bǔ)充部分字符的ASCII值增加一個(gè)遞增的量。
4.根據(jù)權(quán)利要求1所述的二進(jìn)制數(shù)據(jù)加密設(shè)備,其中所述的偽隨機(jī)數(shù)發(fā)生器用來產(chǎn)生256比特的隨機(jī)數(shù),偽隨機(jī)數(shù)可用線形擬合生成器或較安全的BBS方法產(chǎn)生。
5.根據(jù)權(quán)利要求1所述的二進(jìn)制數(shù)據(jù)加密設(shè)備,其中所述的變長碼編碼器可選用霍夫曼編碼方法、香農(nóng)—法諾編碼方法、范式霍夫曼編碼方法或其它易于用軟件或硬件實(shí)現(xiàn)的變長碼編碼方法。
6.根據(jù)權(quán)利要求1所述的二進(jìn)制數(shù)據(jù)加密設(shè)備,其中所述的系統(tǒng)狀態(tài)轉(zhuǎn)換器包括一個(gè)固定值M和M個(gè)存貯單元,用于存貯M個(gè)度值的增加量Delta(i),i=0,1,2,3…M-1;當(dāng)前輸入明文字符的度值整除M后的余數(shù)為m,則當(dāng)前輸入明文字符度值的增加值為Delta(m)。
7.一種對二進(jìn)制數(shù)據(jù)解密的設(shè)備,包括一個(gè)系統(tǒng)初態(tài)生成器,用于產(chǎn)生系統(tǒng)初始狀態(tài)時(shí)各字符的度值;一個(gè)變長碼解碼器,用于將輸入的密文序列進(jìn)行解碼。一個(gè)系統(tǒng)狀態(tài)轉(zhuǎn)換器,用于系統(tǒng)狀態(tài)的自動(dòng)轉(zhuǎn)換。這里的系統(tǒng)初態(tài)生成器和系統(tǒng)狀態(tài)轉(zhuǎn)換器與加密設(shè)備中的完全相同,而變長碼解碼器則是與加密設(shè)備中的變長碼編碼器相匹配的解碼器。
8.一種對二進(jìn)制數(shù)據(jù)進(jìn)行加密與解密的系統(tǒng),包括一個(gè)對二進(jìn)制數(shù)據(jù)加密的設(shè)備和一個(gè)對二進(jìn)制數(shù)據(jù)解密的設(shè)備。其中所述加密設(shè)備的工作過程是系統(tǒng)初態(tài)生成器根據(jù)輸入的用戶密鑰,生成系統(tǒng)的初始狀態(tài);偽隨機(jī)數(shù)生成器產(chǎn)生256比特的隨機(jī)數(shù),每8比特為一組,通過變長碼編碼器編碼輸出;每加密一組隨機(jī)數(shù)后,通過系統(tǒng)狀態(tài)轉(zhuǎn)換器使系統(tǒng)的狀態(tài)發(fā)生改變,然后再加密下一組隨機(jī)數(shù),當(dāng)32組隨機(jī)數(shù)加密完成后,將這256比特的隨機(jī)數(shù)視作用戶密鑰而生成新的系統(tǒng)初態(tài);明文序列每8比特為一組,通過變長碼編碼器編碼輸出;每加密一組明文信息后,通過系統(tǒng)狀態(tài)轉(zhuǎn)換器使系統(tǒng)的狀態(tài)發(fā)生改變,直到所有明文都加密完畢。其中所述的解密設(shè)備的工作過程是系統(tǒng)初態(tài)生成器根據(jù)輸入的用戶密鑰,生成系統(tǒng)的初始狀態(tài),逐位輸入密文序列,通過變長碼解碼器進(jìn)行解碼,每解碼得出一組隨機(jī)數(shù)后,通過系統(tǒng)狀態(tài)轉(zhuǎn)換器使系統(tǒng)的狀態(tài)發(fā)生改變;當(dāng)解碼得到最前面的32組隨機(jī)數(shù)(256比特)后,由這256比特的隨機(jī)數(shù)形成新的系統(tǒng)初始狀態(tài),然后再逐位輸入密文序列,通過變長碼解碼器進(jìn)行解碼,每解碼得出一組明文信息,通過系統(tǒng)狀態(tài)轉(zhuǎn)換器使系統(tǒng)的狀態(tài)發(fā)生相應(yīng)的改變,直到所有密文解碼完成。
9.一種基于權(quán)利要求8所述系統(tǒng)的計(jì)算機(jī)軟件或硬件設(shè)備。
全文摘要
本發(fā)明涉及信息技術(shù)領(lǐng)域中的信息安全技術(shù),具體地涉及二進(jìn)制編碼數(shù)據(jù)的加密和解密,本發(fā)明屬于序列密碼加密系統(tǒng),其實(shí)質(zhì)是無周期的多表密碼代替方法,加密時(shí)采用動(dòng)態(tài)變長碼編碼技術(shù),固定長度(8比特)的一組輸入數(shù)據(jù),輸出編碼的長度在1~255比特之間,密文的長短是變長碼編碼器根據(jù)系統(tǒng)的狀態(tài)所決定的,每加密一組明文后系統(tǒng)的狀態(tài)都要發(fā)生變化,而系統(tǒng)的初始狀態(tài)是由用戶密鑰所決定,密碼分析者由于難于確定密文與明文的對應(yīng)關(guān)系,從而能有效抵抗各種系統(tǒng)分析的攻擊方法。
文檔編號(hào)G09C1/00GK1560823SQ20041002587
公開日2005年1月5日 申請日期2004年2月19日 優(yōu)先權(quán)日2004年2月19日
發(fā)明者李春林 申請人:李春林