專利名稱:一種公開密鑰加密體制和裝置的制作方法
背景技術(shù):
本發(fā)明屬于密碼技術(shù)和計(jì)算機(jī)安全等技術(shù)領(lǐng)域,是一種利用數(shù)學(xué)上的困難問題實(shí)現(xiàn)公開密鑰數(shù)據(jù)加密的數(shù)據(jù)處理方法及其器件。背景描述1976年,美國密碼學(xué)家戴費(fèi)和海爾曼首次提出了公開密碼體系。與一般對(duì)稱加密技術(shù)不同的是該體系使用兩個(gè)在數(shù)學(xué)上配對(duì)的密鑰。一個(gè)可以公開,用于數(shù)據(jù)加密,因此稱為公開密鑰。另一個(gè)是秘密的,用于數(shù)據(jù)解密,因此成為私有密鑰。如附
圖1所示,該體系特別適宜于網(wǎng)絡(luò)加密。由于公開密鑰體系速度較慢且對(duì)明文是擴(kuò)散的,因此并不常用于直接加密明文,而是與對(duì)稱密碼配合用于網(wǎng)絡(luò)加密中的密鑰傳輸。
第一個(gè)切實(shí)可行的公開密鑰算法是由芮沃斯特,沙米爾和阿當(dāng)蔓提出的,這就是著名的RSA公開密鑰體制,該體制基于數(shù)學(xué)中的大數(shù)分解困難。精確地說,假設(shè)p,q是二素?cái)?shù),n=pq。當(dāng)n足夠大時(shí),由n得出p和q在數(shù)學(xué)上是困難的,因此p和q是該體制中的秘密。一旦我們找到了快速的大數(shù)分解方法,該體制將完全崩潰。該體制的特點(diǎn)是其簽名與加密是對(duì)稱的互逆過程,即既可用于簽名又可用于加密。該算法的專利權(quán)由RSA數(shù)據(jù)安全公司所持有,其終止期限為2000年末。事實(shí)上目前的很多商業(yè)產(chǎn)品均基于該算法。但是,該體制有一些致命的缺陷由于大數(shù)因子分解的新成就,導(dǎo)致該體制所采用的數(shù)學(xué)運(yùn)算位數(shù)越來越長。數(shù)學(xué)運(yùn)算的位數(shù)過長導(dǎo)致硬件開發(fā)的困難,并且硬件產(chǎn)品的開發(fā)壽命大大降低。另外其簽名和加密的對(duì)稱性一直是密碼學(xué)家爭論的焦點(diǎn),這也是導(dǎo)致美國政府未能將其納入數(shù)字簽名標(biāo)準(zhǔn)的原因。
能夠取代RSA并在公開網(wǎng)絡(luò)中傳送密鑰的是由戴費(fèi)和海爾曼提出的密鑰交換算法,簡稱為DH密鑰交換體制,它雖然不是一種加密算法,但可用于在公開網(wǎng)絡(luò)中交換密鑰。該體制保證安全的手段在于數(shù)論中離散對(duì)數(shù)問題的困難。精確地說,假設(shè)p是一個(gè)位數(shù)很長的素?cái)?shù),a是數(shù)域p中的本元素,通過執(zhí)行如下協(xié)議就可以在用戶二端產(chǎn)生一把共亨密鑰。
A選擇一個(gè)大于零小于p的隨機(jī)數(shù)vA;
A計(jì)算uA=exp(vA).
B選擇一個(gè)大于零小于p的隨機(jī)數(shù)vB
B計(jì)算uB=exp(vB).
A傳送uA給BB傳送uB給A;
A計(jì)算K=exp(uB);B計(jì)算K=exp(uA).這里exp(x)表示axmod p。容易驗(yàn)證A和B最后一步所得到的K值是相同的,因此該數(shù)可以成為A和B之間的共享密鑰。著名的軟件產(chǎn)品PGP的最新版就是采用了這種策略,以取代RSA,來實(shí)現(xiàn)Email用戶之間的數(shù)據(jù)傳送。該算法被認(rèn)為比RSA更安全。
近年來,在公開密鑰系統(tǒng)的研究中,人們采用背包問題,橢圓曲線方法以及LUCAS函數(shù)。但是幾乎所有基于背包問題的公開密鑰系統(tǒng)都被破譯了,而后二者似乎比RSA方法更安全。目前大部份安全公開密鑰系統(tǒng)都是基于數(shù)論的NP問題,但這些系統(tǒng)的公有特點(diǎn)是所使用的數(shù)學(xué)運(yùn)算位數(shù)過長(1024或2048位加減乘除),從而導(dǎo)致軟件運(yùn)行速度緩慢,硬件開發(fā)困難的不利局面。發(fā)明簡要本發(fā)明基于整數(shù)線性不定方程Ax=b求解的困難。在特定的約束下,該問題被證明是強(qiáng)NP問題,也就是說不存在能在多項(xiàng)式時(shí)間內(nèi)找出它的解的任何算法?;谶@個(gè)前題,我們從對(duì)角陣出發(fā)利用矩陣的初等變換構(gòu)造整數(shù)矩陣A,其大小為N行M列;公開A作為的公開密鑰,而保留構(gòu)造A的對(duì)角陣和初等變換為私有密鑰不公開。對(duì)于一個(gè)大小為M的明文信息x,其密文為Ax=y(tǒng)。解密密文y需要首先做一系列矩陣的初等變換,再求解二元整數(shù)不定方程得到x。
本發(fā)明所涉及的運(yùn)算都可以使用32位或64位的整數(shù)運(yùn)算,如果采用更加精巧的構(gòu)造,甚至可以避免整數(shù)除法運(yùn)算,因此可以非常方便地開發(fā)硬件產(chǎn)品。
無論使用32位或64位運(yùn)算,該加密體制都必須有一個(gè)強(qiáng)有力的位溢出控制算法,該算法將對(duì)所有的數(shù)學(xué)運(yùn)算實(shí)行位溢出檢測。
本發(fā)明還給出了產(chǎn)生密鑰的算法,該算法從對(duì)角陣出發(fā),經(jīng)一系列矩陣初等變換得到公開密鑰和私有密鑰。發(fā)明細(xì)節(jié)為描述方便,本部分總假設(shè)M=2N。這樣作有助于把矩陣分解成同樣尺寸的塊,而方陣形式是最容易處理的。根據(jù)矩陣論的基本原理,任何一個(gè)整數(shù)矩陣都可利用初等變換轉(zhuǎn)化為對(duì)角陣,因此構(gòu)造合適的矩陣作為以上描述的加密矩陣,可以從對(duì)角陣出發(fā),經(jīng)一系列初等變換得到。
為了構(gòu)造加密矩陣A(公開密鑰),我們首先將A劃成塊(A1,A2),這里A1和A2都是N行N列的方陣,于是可以利用對(duì)角陣和初等變換構(gòu)造A1和A2。
假設(shè)從對(duì)角陣D1和D2經(jīng)過了s個(gè)N階左初等變換,記為PL1,PL2, …PLs,和t個(gè)2N階右初等變換PR1,PR2,…,PRt得到了A1和A2。則A=PL1PL2…PLw(D1,D2)PR1PR2…PRt(1)由此算出的A可以公開做為公開密鑰,但是我們需要存儲(chǔ)A的所有初等變換和對(duì)角陣,以便解密方便。由此得到如下的密鑰生成算法密鑰生成算法1.適當(dāng)選取對(duì)角陣A1和A2,令A(yù)=(A1,A2)2.隨機(jī)選取N階初等陣PL,計(jì)算A=PLA3.溢出檢測A,若產(chǎn)生溢出轉(zhuǎn)2,否則繼續(xù)4.重復(fù)2和3多次5.隨機(jī)選取2N階初等陣PR,計(jì)算A=APR6.溢出檢測A1和A2,若產(chǎn)生溢出轉(zhuǎn)5,否則繼續(xù)7.重復(fù)5和6多次有了加密矩陣(公開密鑰)A,加密過程是相當(dāng)容易的。若是x明文數(shù)據(jù),則y=Ax就是x所對(duì)應(yīng)的密文信息。本發(fā)明的困難在于如何把x從y中解出。這個(gè)問題必須借助構(gòu)造公開密鑰的細(xì)節(jié),即構(gòu)造A所使用的初等陣PL1PL2…PLw和PR1PR2…PRt以及相應(yīng)的對(duì)角陣。精確地說,假設(shè)PL1PL2…PLsAPR1PR2…PRt=(D1,D2),(2)其中D1和D2是對(duì)角陣,則解密過程需要執(zhí)行如下的運(yùn)算。
解密算法1.計(jì)算T=PL1PL2…PLsy2.求解(D1,D2)v=T3.計(jì)算y=PR1PR2…PRtv上述解密算法的步1)和步3)是一系列簡單的矩陣變換,可很容易通過算術(shù)乘加運(yùn)算實(shí)現(xiàn)。但步2)的求解需要一定的技巧和限制,該問題可以簡單地劃為二元一次不定方程的求解,即從如下整數(shù)方程ax+by=z(3)求解x和y。如果a和b互素,則對(duì)任意,我們可以得到(3)在一定范圍的解,因此在本加密體制對(duì)角矩陣D1和D2中對(duì)角元的選取要有一定限制。
總之,解密過程需要首先做一系列矩陣的初等變換,然后求解一個(gè)對(duì)角整數(shù)方程組,再做一系列矩陣的初等變換,得到明文信息。這里對(duì)角矩陣的選取要有一定的限制,否則無法得到問題的解。硬件描述該發(fā)明的實(shí)現(xiàn)需要借助于一個(gè)物理實(shí)體,該實(shí)體可能是一臺(tái)PC機(jī)或者是一個(gè)專用芯片。如附圖1所示,這個(gè)實(shí)體至少包含三個(gè)部件,即加密器①,解密器②和密鑰生成器③。該實(shí)體的置動(dòng)需執(zhí)行如下操作密鑰生成器產(chǎn)生兩個(gè)在數(shù)學(xué)上配對(duì)的密鑰,一把公開密鑰⑥,一把私有密鑰⑦。明文信息④和公開密鑰⑥同時(shí)輸入加密器①,經(jīng)過簡單地計(jì)算向量和矩陣的積,就可以得到密文信息⑤。密文信息⑤經(jīng)過公開信道⑧傳送到解密器②,結(jié)合私有密鑰⑦恢復(fù)出明文信息④。
如附圖2所示,密鑰生成器至少包含三個(gè)部件,即隨機(jī)數(shù)發(fā)生器①,矩陣變換裝置③和溢出控制裝置②。矩陣變換裝置③可以有獨(dú)立的存儲(chǔ)單元和處理單元,也可以與其它部件共享這些單元。密鑰生成器的置動(dòng)需執(zhí)行如下操作隨機(jī)數(shù)發(fā)生器①傳送隨機(jī)數(shù)到矩陣變換裝置③,矩陣變換裝置③利用隨機(jī)數(shù)形成隨機(jī)初等陣,同時(shí)做矩陣積,在運(yùn)算過程中需要通過溢出控制裝置②的檢測,最后輸出矩陣積作為公開密鑰⑥,隨機(jī)初等陣作為私有密鑰⑦。
加密器至少包含二個(gè)部件存儲(chǔ)器①和中央處理器②,如附圖3所示。存儲(chǔ)器①用來存儲(chǔ)該加密體制的處理代碼和運(yùn)算過程中的動(dòng)態(tài)數(shù)據(jù)。中央處理器②則執(zhí)行該密碼體制的運(yùn)算代碼。因此它必須包含至少一個(gè)累加器,至少一個(gè)乘法器,至少一個(gè)移位寄存器和多個(gè)其他功能的寄存器,同時(shí)還應(yīng)有一個(gè)與外存交換數(shù)據(jù)的物理接口。加密器的置動(dòng)需執(zhí)行如下操作明文信息④和公開密鑰⑥同時(shí)輸入中央處理器②,經(jīng)過簡單地計(jì)算向量和矩陣的積,就可以得到密文信息⑤。
解密器也至少包含二個(gè)部件存儲(chǔ)器①和中央處理器②,如附圖4所示。存儲(chǔ)器①用來存儲(chǔ)該解密體制的處理代碼和運(yùn)算過程中的動(dòng)態(tài)數(shù)據(jù)。中央處理器②則執(zhí)行該密碼體制的運(yùn)算代碼。因此它必須包含至少一個(gè)累加器,至少一個(gè)乘法器,至少一個(gè)移位寄存器和多個(gè)其他功能的寄存器,同時(shí)還應(yīng)有一個(gè)與外存交換數(shù)據(jù)的物理接口。解密器的置動(dòng)需執(zhí)行如下操作密文信息⑤和私有密鑰⑦同時(shí)輸入中央處理器②,經(jīng)過一系列矩陣的初等變換積,然后求解一個(gè)對(duì)角整數(shù)方程組,再做一系列矩陣的初等變換,得到明文信息④。
上述加密器,解密器和密鑰生成器可以組合為一體,以共享存儲(chǔ)器和處理器,降低成本;也可分體工作,使用各自獨(dú)立的存儲(chǔ)器和處理器,完成不同的任務(wù)要求。
本裝置可以做密鑰交換工具,以取代DH應(yīng)用于網(wǎng)絡(luò)中數(shù)據(jù)的安全傳輸。由于其算法簡單,硬件易于實(shí)現(xiàn),必將成為電子商務(wù)安全中一個(gè)有竟?fàn)幜Φ暮蜻x者。
權(quán)利要求
1.一種公開密鑰加解密體制,使用戶把明文信息轉(zhuǎn)換為密文信息,同時(shí)也可把密文轉(zhuǎn)化為明文。其特征在于該體制基于整數(shù)不定方程組求解的困難,它包含一個(gè)公開密鑰,一個(gè)私有密鑰,一個(gè)產(chǎn)生密鑰的算法,一個(gè)加密算法和一個(gè)解密算法。
2.如上述權(quán)利要求1所述之體制,包含一個(gè)加密算法與解密算法,其特征在于加密算法只要計(jì)算一個(gè)整數(shù)矩陣向量積,解密算法則需要首先做一系列矩陣的初等變換,然后求解一個(gè)對(duì)角整數(shù)方程組,再做一系列矩陣的初等變換,得到明文。
3.如上述權(quán)利要求1所述之體制,包含一個(gè)產(chǎn)生密鑰的算法,其特征在于該算法從對(duì)角陣出發(fā),執(zhí)行一系列隨機(jī)的初等變換,輸出相應(yīng)初等變換作為私有密鑰,同時(shí)輸出一個(gè)整數(shù)矩陣作為公開密鑰。
4.如上述權(quán)利要求3所述之算法,所有運(yùn)算都是有限位整數(shù),更包含一個(gè)偽隨機(jī)數(shù)生成算法和溢出控制系統(tǒng),其特征在于偽隨機(jī)數(shù)生成算法控制產(chǎn)生初等變換的隨機(jī)性,溢出控制系統(tǒng)對(duì)所有算術(shù)運(yùn)算做溢出檢測。
5.一種公開密鑰加解密程序,使用戶把明文信息轉(zhuǎn)換為密文信息,同時(shí)也可把密文轉(zhuǎn)化為明文。其特征在于該程序基于整數(shù)不定方程組求解的困難,它包含一個(gè)公開密鑰,一個(gè)私有密鑰,一個(gè)產(chǎn)生密鑰的程序,一個(gè)加密程序和一個(gè)解密程序。
6.如上述權(quán)利要求5所述之程序,包含一個(gè)加密程序與解密程序,其特征在于加密程序只要計(jì)算一個(gè)整數(shù)矩陣向量積,解密程序則需要首先做一系列矩陣的初等變換,然后求解一個(gè)對(duì)角整數(shù)方程組,再做一系列矩陣的初等變換,得到明文。
7.如上述權(quán)利要求5所述之程序,包含一個(gè)產(chǎn)生密鑰的程序,其特征在于該程序從對(duì)角陣出發(fā),執(zhí)行一系列隨機(jī)的初等變換,輸出相應(yīng)初等變換作為私有密鑰,同時(shí)輸出一個(gè)整數(shù)矩陣作為公開密鑰。
8.如上述權(quán)利要求7所述之程序,所有運(yùn)算都是有限位整數(shù),更包含一個(gè)偽隨機(jī)數(shù)生成程序和溢出控制程序,其特征在于偽隨機(jī)數(shù)生成程序控制產(chǎn)生初等變換的隨機(jī)性,溢出控制程序?qū)λ兴阈g(shù)運(yùn)算做溢出檢測。
9.一種公開密鑰加解密裝置,使用戶把明文信息轉(zhuǎn)換為密文信息,同時(shí)也可把密文轉(zhuǎn)化為明文。其特征在于該裝置基于整數(shù)不定方程組求解的困難,它包含一個(gè)公開密鑰,一個(gè)私有密鑰,一個(gè)產(chǎn)生密鑰的裝置,一個(gè)加密裝置和一個(gè)解密裝置。
10.如上述權(quán)利要求9所述之裝置,包含一個(gè)加密裝置與解密裝置,其特征在于加密裝置只要計(jì)算一個(gè)整數(shù)矩陣向量積,解密裝置則需要首先做一系列矩陣的初等變換,然后求解一個(gè)對(duì)角整數(shù)方程組,再做一系列矩陣的初等變換,得到明文。
11.如上述權(quán)利要求9所述之裝置,包含一個(gè)產(chǎn)生密鑰的裝置,其特征在于該裝置從對(duì)角陣出發(fā),執(zhí)行一系列隨機(jī)的初等變換,輸出相應(yīng)初等變換作為私有密鑰,同時(shí)輸出一個(gè)整數(shù)矩陣作為公開密鑰。
12.如上述權(quán)利要求11所述之裝置,所有運(yùn)算都是有限位整數(shù),更包含一個(gè)偽隨機(jī)數(shù)生成裝置和溢出控制裝置,其特征在于偽隨機(jī)數(shù)生成裝置控制產(chǎn)生初等變換的隨機(jī)性,溢出控制裝置對(duì)所有算術(shù)運(yùn)算做溢出檢測。
全文摘要
本發(fā)明利用數(shù)學(xué)規(guī)劃中整數(shù)不定方程組求解的困難提出了一種全新的公開密鑰加密體制,該體制防止破譯與偽造的依據(jù)是整數(shù)不定方程組的求解在計(jì)算上是強(qiáng)NP問題。本發(fā)明的加密過程只簡單地做一個(gè)矩陣向量積,而加密過程則需要經(jīng)過一系列矩陣初等變換,再求解二元整數(shù)不定方程組。本發(fā)明是一種非數(shù)論體系,使用32位或64位的算術(shù)運(yùn)算即可完成,這對(duì)硬件開發(fā)是相當(dāng)有利的。經(jīng)特殊處理,本發(fā)明可以只涉及算術(shù)加法和乘法運(yùn)算,因此特別適宜于數(shù)字信號(hào)處理器DSP上的開發(fā)。本發(fā)明的一個(gè)重要應(yīng)用是可以象RSA或DH那樣,承擔(dān)網(wǎng)絡(luò)安全中的密鑰交換分量。
文檔編號(hào)G06F17/16GK1258051SQ9912571
公開日2000年6月28日 申請(qǐng)日期1999年12月23日 優(yōu)先權(quán)日1999年12月23日
發(fā)明者趙風(fēng)光, 倪興芳 申請(qǐng)人:趙風(fēng)光, 倪興芳