專利名稱:基于動(dòng)態(tài)變長(zhǎng)碼的數(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í)所用的密鑰是否相同,可將密碼體系分為對(duì)稱密碼體系與公鑰密碼體系。本發(fā)明屬于對(duì)稱密碼體系。在對(duì)稱密碼體系中,對(duì)信息加密的算法可分為兩大類(1)是分組加密算法,該類算法的基本思想是將明文以64比特(或其它固定長(zhǎng)度)為一組,在密鑰的作用下,通過(guò)多輪置換和迭代,輸出64比特的密文。分組加密算法可視為大字符集上的置換加密算法。著名的分組加密算法有DES和IDEA等。(2)是序列密碼算法,其核心思想是設(shè)計(jì)一個(gè)隨機(jī)序列產(chǎn)生器,該隨機(jī)序列產(chǎn)生器在用戶密鑰的作用下,生成隨機(jī)的密鑰流,將密鑰流與明文流作模2加法,從而形成密文流。序列密碼可以看成是多表密碼的一種,如果密碼的周期不大,它將非常類似于維吉利亞(Vigenere)密碼。隨機(jī)序列一般通過(guò)反饋移位寄存器來(lái)產(chǎn)生。
對(duì)一組信源的編碼,既可采用定長(zhǎng)碼,也可采用變長(zhǎng)碼。采用定長(zhǎng)碼時(shí)便于接收端的譯碼,而采用變長(zhǎng)碼是為了提高信號(hào)的傳輸效率或減少信息的儲(chǔ)存空間。變長(zhǎng)編碼廣泛應(yīng)用于數(shù)據(jù)壓縮系統(tǒng)中,如著名的霍夫曼(Huffman)編碼便是可變字長(zhǎng)編碼的一種。為了保證解碼時(shí)的唯一性,變長(zhǎng)碼編碼時(shí)必須符合“前綴編碼”的要求,即較短的編碼決不能是較長(zhǎng)編碼的前綴。二叉樹是構(gòu)造變長(zhǎng)碼最理想的選擇。要編碼的字符總是出現(xiàn)在樹葉上,假定從根向樹葉行走的過(guò)程中,左轉(zhuǎn)為0,右轉(zhuǎn)為1,則一個(gè)字符的編碼就是從根走到該字符所在樹葉的路徑。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種對(duì)二進(jìn)制數(shù)據(jù)加密與解密的設(shè)備;本發(fā)明的另一個(gè)目的是提供一種基于動(dòng)態(tài)變長(zhǎng)碼的數(shù)據(jù)加密與解密系統(tǒng);本發(fā)明的另一個(gè)目的是提供一種基于本系統(tǒng)方法的計(jì)算機(jī)軟件或硬件設(shè)備。
一種對(duì)二進(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è)變長(zhǎng)碼編碼器,用于將輸入的明文字符用變長(zhǎng)碼編碼輸出;一個(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)中用戶的密鑰長(zhǎng)為256比特,即選取32個(gè)鍵盤上可輸入字符(ASCII值從32至126)作為密鑰,如果用戶密鑰多于32個(gè)字符,系統(tǒng)只選取前32個(gè)字符;如果少于32個(gè)字符,則系統(tǒng)按如下規(guī)則將密鑰補(bǔ)充為32個(gè)字符首先重復(fù)用戶的密鑰到32位長(zhǎng),然后將補(bǔ)充部分字符的ASCII值增加一個(gè)遞增的量。
其中所述的偽隨機(jī)數(shù)發(fā)生器用來(lái)產(chǎn)生256比特的隨機(jī)數(shù),偽隨機(jī)數(shù)可用線形擬合生成器或較安全的BBS方法產(chǎn)生。
其中所述的變長(zhǎng)碼編碼器可選用霍夫曼編碼方法、香農(nóng)—法諾編碼方法、范式霍夫曼編碼方法或其它易于用軟件或硬件實(shí)現(xiàn)的變長(zhǎng)碼編碼方法。
其中所述的系統(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)。
一種對(duì)二進(jìn)制數(shù)據(jù)解密的設(shè)備,包括一個(gè)系統(tǒng)初態(tài)生成器,用于產(chǎn)生系統(tǒng)初始狀態(tài)時(shí)各字符的度值;一個(gè)變長(zhǎng)碼解碼器,用于將輸入的密文序列進(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è)備中的完全相同,而變長(zhǎng)碼解碼器則是與加密設(shè)備中的變長(zhǎng)碼編碼器相匹配的解碼器。
一種對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行加密與解密的系統(tǒng),包括一個(gè)對(duì)二進(jìn)制數(shù)據(jù)加密的設(shè)備和一個(gè)對(duì)二進(jìn)制數(shù)據(jù)解密的設(shè)備。
其中所述加密設(shè)備的工作過(guò)程是系統(tǒng)初態(tài)生成器根據(jù)輸入的用戶密鑰,生成系統(tǒng)的初始狀態(tài);偽隨機(jī)數(shù)生成器產(chǎn)生256比特的隨機(jī)數(shù),每8比特為一組,通過(guò)變長(zhǎng)碼編碼器編碼輸出;每加密一組隨機(jī)數(shù)后,通過(guò)系統(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比特為一組,通過(guò)變長(zhǎng)碼編碼器編碼輸出;每加密一組明文信息后,通過(guò)系統(tǒng)狀態(tài)轉(zhuǎn)換器使系統(tǒng)的狀態(tài)發(fā)生改變,直到所有明文都加密完畢。
其中所述的解密設(shè)備的工作過(guò)程是系統(tǒng)初態(tài)生成器根據(jù)輸入的用戶密鑰,生成系統(tǒng)的初始狀態(tài),逐位輸入密文序列,通過(guò)變長(zhǎng)碼解碼器進(jìn)行解碼,每解碼得出一組隨機(jī)數(shù)后,通過(guò)系統(tǒng)狀態(tài)轉(zhuǎn)換器使系統(tǒng)的狀態(tài)發(fā)生改變;當(dāng)解碼得到最前面的32組隨機(jī)數(shù)(256比特)后,由這256比特的隨機(jī)數(shù)形成新的系統(tǒng)初始狀態(tài),然后再逐位輸入密文序列,通過(guò)變長(zhǎng)碼解碼器進(jìn)行解碼,每解碼得出一組明文信息,通過(guò)系統(tǒng)狀態(tài)轉(zhuǎn)換器使系統(tǒng)的狀態(tài)發(fā)生相應(yīng)的改變,直到所有密文解碼完成。
本發(fā)明屬于序列密碼加密系統(tǒng),其實(shí)質(zhì)是無(wú)周期的多表密碼代替方法。主要特征有如下三點(diǎn)(1)是對(duì)固定長(zhǎng)度(本系統(tǒng)設(shè)定為8比特)的一組明文信息加密后,生成的密文長(zhǎng)度在1~255比特之間,密文的長(zhǎng)短是變長(zhǎng)碼編碼器根據(jù)系統(tǒng)的狀態(tài)所決定的。(2)是偽隨機(jī)數(shù)發(fā)生器產(chǎn)生256比特的隨機(jī)數(shù),這些隨機(jī)數(shù)并不在明文中出現(xiàn),用戶密鑰生成的系統(tǒng)初態(tài)用來(lái)加密這些隨機(jī)數(shù),而由這些隨機(jī)數(shù)生成的系統(tǒng)初態(tài),才是真正用來(lái)加密明文信息的。(3)系統(tǒng)的狀態(tài)每加密一組隨機(jī)數(shù)或明文后都要發(fā)生變化,而系統(tǒng)的初始狀態(tài)是由用戶密鑰所決定的。系統(tǒng)狀態(tài)的轉(zhuǎn)換只依賴于當(dāng)前輸入明文字符的度。
由于難于確定密文與明文的對(duì)應(yīng)關(guān)系,從而能有效抵抗各種系統(tǒng)分析的攻擊方法,使系統(tǒng)具有更好的安全性。
圖1是加密過(guò)程示意圖。
圖2是解密過(guò)程示意圖。
具體實(shí)施例方式
下面結(jié)合具體實(shí)施方式
,對(duì)本發(fā)明的內(nèi)容做進(jìn)一步的說(shuō)明。
1.加密與解密設(shè)備,包括1.1系統(tǒng)初態(tài)生成器系統(tǒng)狀態(tài)的自動(dòng)轉(zhuǎn)換是本系統(tǒng)的核心。待加密的明文每8比特為一組,故有28=256種不同的字符,為了說(shuō)明“系統(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è)遞增的量(不超過(guò)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ù)之和、對(duì)角線上數(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ù)真正的唯一來(lái)源涉及到測(cè)量物理現(xiàn)象,譬如,放射性衰變的計(jì)時(shí),電子線路的白噪聲等。由于難以獲得真正的隨機(jī)數(shù),實(shí)際應(yīng)用時(shí)都用偽隨機(jī)數(shù)生成器(PRNG)來(lái)產(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,那么通過(guò)除以c,并取它的余數(shù)來(lái)將這個(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),用來(lái)加密256比特的隨機(jī)數(shù)據(jù),隨機(jī)數(shù)并不在明文中出現(xiàn)。將這些隨機(jī)數(shù)視作用戶密鑰而生成的系統(tǒng)初態(tài),才是真正用來(lái)加密明文信息的。因此,當(dāng)用戶密鑰不變時(shí),即使對(duì)同一份明文加密多次,每一次的加密結(jié)果都是完全不同的。引入256比特的隨機(jī)數(shù)后,理論上需要產(chǎn)生2128個(gè)(約3.4×1038)隨機(jī)數(shù),才能使兩組隨機(jī)數(shù)完全一樣的概率大于0.5。因此,這將大大增加密碼分析者采用選擇明文攻擊時(shí)的工作難度。
1.3變長(zhǎng)碼編碼器本系統(tǒng)的另一個(gè)核心部件就是變長(zhǎng)碼編碼器。輸入一組(8比特)待編碼的明文,編碼器根據(jù)系統(tǒng)當(dāng)前所處的狀態(tài),輸出一定比特的數(shù)據(jù)作為輸入明文的變換結(jié)果。如果輸入明文在系統(tǒng)中的D值較高,則輸出的編碼長(zhǎng)度小于8,反之,則輸出的編碼長(zhǎng)度大于8。如果將系統(tǒng)中各字符的D值視作該字符的出現(xiàn)頻率,則可采用霍夫曼編碼或香農(nóng)一法諾(Shannon-Fano)編碼作為變長(zhǎng)碼編碼器,但這兩種編碼器的編碼速度可能較慢。本加密系統(tǒng)是開放式的結(jié)構(gòu),也可選用其它工作方式的變長(zhǎng)碼編碼器。如下面要介紹的范式霍夫曼編碼(Canonical Huffman Code)。
范式Huffman編碼的基本思路是編碼只要符合以下兩個(gè)條件(1)是前綴編碼;(2)某一字符編碼長(zhǎng)度和使用二叉樹建立的該字符的編碼長(zhǎng)度相同,這樣的編碼都可以叫做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è)字符),初始編碼長(zhǎng)度都為0,初始出現(xiàn)頻率為各自的出現(xiàn)頻率值。
第2步序號(hào)為1和2的符號(hào),編碼長(zhǎng)度增加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ì)算過(guò)程結(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ì)算過(guò)程如下表所示。
③分別統(tǒng)計(jì)各個(gè)長(zhǎng)度的編碼對(duì)應(yīng)了多少個(gè)符號(hào),從最大長(zhǎng)度開始編碼。設(shè)出現(xiàn)頻率最小字符的編碼長(zhǎng)度為MaxLen,則該字符編碼為MaxLen個(gè)0,其它同樣長(zhǎng)度的編碼逐個(gè)加1;對(duì)編碼長(zhǎng)度小于MaxLen的字符,則選擇的編碼不能為長(zhǎng)度較長(zhǎng)編碼的前綴。例如上例,編碼長(zhǎng)度為5的符號(hào)有2個(gè),長(zhǎng)度為4的有1個(gè),長(zhǎng)度為3的有3個(gè),長(zhǎng)度為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)的變長(zhǎng)碼編碼器。
1.4變長(zhǎng)碼解碼器變長(zhǎng)碼解碼器是與系統(tǒng)選定的變長(zhǎng)碼編碼器相對(duì)應(yīng)的,在設(shè)計(jì)編碼器時(shí)也就相應(yīng)地設(shè)計(jì)好了與之匹配的解碼器。
1.5系統(tǒng)狀態(tài)轉(zhuǎn)換器如果系統(tǒng)的狀態(tài)不發(fā)生改變,即對(duì)同一明文輸出相同的密文,則系統(tǒng)只是一個(gè)簡(jiǎn)單代替變換,很容易被攻破。系統(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.加密示例為簡(jiǎn)單起見,將明文字符以4比特為一組,共可組成16個(gè)字符,用十六進(jìn)制符號(hào)0,1,…,F(xiàn)來(lái)表示。系統(tǒng)初始狀態(tài)的生成過(guò)程在這里不詳細(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來(lái)編碼,則明文字符用16進(jìn)制符號(hào)可表示為41726520796F752072656164793F204C6574277320676F2E。變長(zhǎng)碼編碼器采用香農(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é)果如下表所示。
由上表可見,對(duì)同一輸入字符,輸出的二進(jìn)制編碼既可能相同,也可能不同,編碼長(zhǎng)度也不盡相同。而不同的輸入字符在不同的狀態(tài)下,卻有可能輸出相同的二進(jìn)制代碼。
3.加密過(guò)程如圖1所示,用戶輸入密鑰后,開關(guān)K1接通,通過(guò)系統(tǒng)初態(tài)生成器形成系統(tǒng)的初始狀態(tài),然后K1斷開,K2接通;偽隨機(jī)數(shù)發(fā)生器產(chǎn)生256比特的隨機(jī)數(shù),每8比特為一組,通過(guò)變長(zhǎng)碼編碼器編碼輸出,系統(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ù)視作用戶密鑰,通過(guò)系統(tǒng)初態(tài)生成器產(chǎn)生新的系統(tǒng)初態(tài)。開關(guān)K3斷開,K4接通,根據(jù)新的系統(tǒng)初始狀態(tài)來(lái)加密第一組明文。每加密一組明文后系統(tǒng)狀態(tài)轉(zhuǎn)換器使系統(tǒng)的狀態(tài)發(fā)生相應(yīng)的改變,然后再加密下一組明文信息,直到所有明文加密完畢,加密過(guò)程結(jié)束。
4.解密過(guò)程如圖2所示,用戶輸入密鑰后,開關(guān)K1接通,通過(guò)系統(tǒng)初態(tài)生成器形成系統(tǒng)的初始狀態(tài)。然后K1斷開,K2接通,逐位輸入密文序列,通過(guò)變長(zhǎng)碼解碼器進(jìn)行解碼。當(dāng)解碼得到32組數(shù)據(jù)(256比特)后,開關(guān)K2斷開,K3接通。這最前的32組數(shù)據(jù)是系統(tǒng)加密時(shí)添加的隨機(jī)數(shù),將這256比特隨機(jī)數(shù)視作用戶密鑰,通過(guò)系統(tǒng)初態(tài)生成器產(chǎn)生新的系統(tǒng)初態(tài)。然后開關(guān)K3斷開,K2接通,逐位輸入密文序列,通過(guò)變長(zhǎng)碼解碼器進(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)對(duì)唯密文攻擊是安全的。唯密文攻擊利用了自然語(yǔ)言中的冗余信息在密文中仍然得到保留這一弱點(diǎn)。本系統(tǒng)在攻擊者只有若干密文的情況下,無(wú)法確定每一組明文對(duì)應(yīng)的密文長(zhǎng)度,且本系統(tǒng)屬于無(wú)周期的多表密碼代替方法,同一組明文所對(duì)應(yīng)的密文既可能相同,也可能不相同,因此,無(wú)法運(yùn)用統(tǒng)計(jì)分析的方法得出明文消息。事實(shí)上,用本系統(tǒng)對(duì)同一份長(zhǎng)度為幾萬(wàn)字節(jié)的二進(jìn)制文件加密,每次加密時(shí)的密鑰也相同,試驗(yàn)時(shí)產(chǎn)生的幾千個(gè)加密文件其長(zhǎng)度幾乎都不相同,最長(zhǎng)與最短者相差幾千字節(jié)。即使兩個(gè)密文文件的長(zhǎng)度相同,其中的內(nèi)容也幾乎全不相同。因此,面對(duì)兩份密文文件,唯密文攻擊者無(wú)法確定兩者是明文相同而密鑰不同、還是明文不同而密鑰相同、或者明文與密鑰都不相同。(2)本加密系統(tǒng)對(duì)已知明文攻擊是安全的。當(dāng)攻擊者知道了一部分密文所對(duì)應(yīng)的明文時(shí),便可通過(guò)分析密文與明文的對(duì)應(yīng)關(guān)系,企圖得出用戶的密鑰或解密用同一密鑰加密的文件。本系統(tǒng)由于引入了256比特的隨機(jī)數(shù),而這些隨機(jī)數(shù)并不出現(xiàn)在明文中。攻擊者通過(guò)分析得出的只是由這些隨機(jī)數(shù)生成的初始狀態(tài)的部分信息,無(wú)法進(jìn)一步得到由用戶密鑰生成的系統(tǒng)初態(tài)的信息,從而無(wú)法通過(guò)進(jìn)一步分析得到用戶的密鑰。(3)本加密系統(tǒng)對(duì)選擇明文攻擊也是安全的。引入256比特的隨機(jī)數(shù)后,理論上需要產(chǎn)生2128(約3.4×1038)個(gè)隨機(jī)數(shù),才能使兩組隨機(jī)數(shù)完全一樣的概率大于0.5。攻擊者通過(guò)巨量的選擇明文分析,有可能得到由初始狀態(tài)生成的二叉樹的結(jié)構(gòu)信息,但由二叉樹的結(jié)構(gòu)反推出系統(tǒng)初態(tài)各字符的D值,是非常困難甚至是不可能的事情。不能確定系統(tǒng)初始時(shí)刻各字符的D值,就不能反推出用戶的密鑰。因此,本系統(tǒng)對(duì)選擇明文攻擊也是計(jì)算上安全的。(4)本系統(tǒng)對(duì)窮舉密鑰攻擊也是計(jì)算上安全的。本系統(tǒng)的用戶密鑰長(zhǎng)度為32個(gè)ASCII字符,即長(zhǎng)度為256比特,但由于健盤輸入的限制,可供用戶輸入的密鑰字符只有95個(gè)(即ASCII值從32到126),可組成的用戶密鑰數(shù)為9532(約為1.9×1063)個(gè)。即使動(dòng)用全世界的計(jì)算能力,再考慮到未來(lái)計(jì)算能力的迅速增長(zhǎng),每秒鐘能破譯的密鑰數(shù)量假定為1030個(gè),每年能破譯的密鑰數(shù)量為3.2×1037,則窮舉一半用戶密鑰仍需2.9×1025年。因此,本系統(tǒng)對(duì)窮舉密鑰攻擊也是計(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ì)算出來(lái)。選擇不同的幻方,由同一用戶密鑰生成的系統(tǒng)初態(tài)也完全不同。更換系統(tǒng)初態(tài)生成器,將會(huì)使密碼分析者的所有工作前功盡棄。本系統(tǒng)的開放性還體現(xiàn)在可以選擇多種形式的變長(zhǎng)碼編碼器和解碼器。例如,若需要相鄰兩個(gè)狀態(tài)的編碼有較大的變化,可以選用霍夫曼編碼器;若需要編碼和解碼的速度較快,可以選用前面所述的范式霍夫曼編碼器,或其它形式的變長(zhǎng)碼編碼器。不同的編碼器對(duì)由同一密鑰和同一明文產(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í)施過(guò)程中,可以根據(jù)實(shí)際的限制因素選擇最合適的實(shí)現(xiàn)方式。
權(quán)利要求
1.一種對(duì)二進(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è)變長(zhǎng)碼編碼器,用于將輸入的明文字符用變長(zhǎng)碼編碼輸出;一個(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)中用戶的密鑰長(zhǎng)為256比特,即選取32個(gè)鍵盤上可輸入字符(ASCII值從32至126)作為密鑰,如果用戶密鑰多于32個(gè)字符,系統(tǒng)只選取前32個(gè)字符;如果少于32個(gè)字符,則系統(tǒng)按如下規(guī)則將密鑰補(bǔ)充為32個(gè)字符首先重復(fù)用戶的密鑰到32位長(zhǎng),然后將補(bǔ)充部分字符的ASCII值增加一個(gè)遞增的量。
4.根據(jù)權(quán)利要求1所述的二進(jìn)制數(shù)據(jù)加密設(shè)備,其中所述的偽隨機(jī)數(shù)發(fā)生器用來(lái)產(chǎn)生256比特的隨機(jī)數(shù),偽隨機(jī)數(shù)可用線形擬合生成器或較安全的BBS方法產(chǎn)生。
5.根據(jù)權(quán)利要求1所述的二進(jìn)制數(shù)據(jù)加密設(shè)備,其中所述的變長(zhǎng)碼編碼器可選用霍夫曼編碼方法、香農(nóng)—法諾編碼方法、范式霍夫曼編碼方法或其它易于用軟件或硬件實(shí)現(xiàn)的變長(zhǎng)碼編碼方法。
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.一種對(duì)二進(jìn)制數(shù)據(jù)解密的設(shè)備,包括一個(gè)系統(tǒng)初態(tài)生成器,用于產(chǎn)生系統(tǒng)初始狀態(tài)時(shí)各字符的度值;一個(gè)變長(zhǎng)碼解碼器,用于將輸入的密文序列進(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è)備中的完全相同,而變長(zhǎng)碼解碼器則是與加密設(shè)備中的變長(zhǎng)碼編碼器相匹配的解碼器。
8.一種對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行加密與解密的系統(tǒng),包括一個(gè)對(duì)二進(jìn)制數(shù)據(jù)加密的設(shè)備和一個(gè)對(duì)二進(jìn)制數(shù)據(jù)解密的設(shè)備。其中所述加密設(shè)備的工作過(guò)程是系統(tǒng)初態(tài)生成器根據(jù)輸入的用戶密鑰,生成系統(tǒng)的初始狀態(tài);偽隨機(jī)數(shù)生成器產(chǎn)生256比特的隨機(jī)數(shù),每8比特為一組,通過(guò)變長(zhǎng)碼編碼器編碼輸出;每加密一組隨機(jī)數(shù)后,通過(guò)系統(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比特為一組,通過(guò)變長(zhǎng)碼編碼器編碼輸出;每加密一組明文信息后,通過(guò)系統(tǒng)狀態(tài)轉(zhuǎn)換器使系統(tǒng)的狀態(tài)發(fā)生改變,直到所有明文都加密完畢。其中所述的解密設(shè)備的工作過(guò)程是系統(tǒng)初態(tài)生成器根據(jù)輸入的用戶密鑰,生成系統(tǒng)的初始狀態(tài),逐位輸入密文序列,通過(guò)變長(zhǎng)碼解碼器進(jìn)行解碼,每解碼得出一組隨機(jī)數(shù)后,通過(guò)系統(tǒng)狀態(tài)轉(zhuǎn)換器使系統(tǒng)的狀態(tài)發(fā)生改變;當(dāng)解碼得到最前面的32組隨機(jī)數(shù)(256比特)后,由這256比特的隨機(jī)數(shù)形成新的系統(tǒng)初始狀態(tài),然后再逐位輸入密文序列,通過(guò)變長(zhǎng)碼解碼器進(jìn)行解碼,每解碼得出一組明文信息,通過(guò)系統(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ì)是無(wú)周期的多表密碼代替方法,加密時(shí)采用動(dòng)態(tài)變長(zhǎng)碼編碼技術(shù),固定長(zhǎng)度(8比特)的一組輸入數(shù)據(jù),輸出編碼的長(zhǎng)度在1~255比特之間,密文的長(zhǎng)短是變長(zhǎng)碼編碼器根據(jù)系統(tǒng)的狀態(tài)所決定的,每加密一組明文后系統(tǒng)的狀態(tài)都要發(fā)生變化,而系統(tǒng)的初始狀態(tài)是由用戶密鑰所決定,密碼分析者由于難于確定密文與明文的對(duì)應(yīng)關(guān)系,從而能有效抵抗各種系統(tǒng)分析的攻擊方法。
文檔編號(hào)G09C1/00GK1560823SQ20041002587
公開日2005年1月5日 申請(qǐng)日期2004年2月19日 優(yōu)先權(quán)日2004年2月19日
發(fā)明者李春林 申請(qǐng)人:李春林