專利名稱:Rsa公開密鑰生成裝置、rsa解密裝置及rsa署名裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及采用了公開密鑰加密算法之一即RSA加密技術(shù)的信息安全技術(shù)。
背景技術(shù):
本申請基于日本注冊申請No.2003-382191,本文引用了其內(nèi)容作為參照。以往作為實現(xiàn)信息的隱秘、認(rèn)證等的手段,公開密鑰加密方式已為人們所知。
在公開密鑰加密方式中,生成自己獨(dú)自持有的秘密密鑰同與上述秘密密鑰對應(yīng)公開的公開密鑰的密鑰對,利用上述公開密鑰來進(jìn)行加密,并利用上述秘密密鑰來進(jìn)行解密。比如,在消息的加密通信中,消息發(fā)送者利用消息接收者的公開密鑰來對消息加密,唯有秘密密鑰的保持者即消息接收者,才能利用消息接收者的秘密密鑰,來對該加密消息解密。
雖然公開密鑰加密法處理運(yùn)算量較多,但是不必由多個利用者來共享秘密密鑰,因而在需要高安全性的場合下,公開密鑰加密法經(jīng)常被使用。作為一般廣為人知的公開密鑰加密法,存在RSA加密及橢圓曲線加密這兩種。
通過采用上述的公開密鑰加密方式,雖然可使第三者不知曉地向?qū)Ψ桨l(fā)送秘密信息,但是依據(jù)專利文獻(xiàn)1,例如IC卡正在進(jìn)行密碼處理時,非法第三者有可能利用異常時鐘、異常電壓、異常電磁波、異常溫度等,故意引發(fā)錯誤,從而取出密碼中所用的密鑰及秘密信息,因而成為一種威脅。這種攻擊稱為故障利用攻擊(也稱為DFA攻擊)。
為了對抗該故障利用攻擊,專利文獻(xiàn)2中披露了一種下列技術(shù),即利用除數(shù)n的素因數(shù),由中國余數(shù)定理(Chinese Remainder Theorem,簡稱CRT)來高速處理作成數(shù)字署名的冪乘余數(shù)計算,與在基于中國余數(shù)定理的計算過程中生成的數(shù)據(jù)一起,同時計算有關(guān)該數(shù)據(jù)的出錯檢測碼并予以存儲,在作成數(shù)字署名時,再次計算上述數(shù)據(jù)的出錯檢測碼,并與已存儲的出錯檢測碼進(jìn)行核對,從而檢測出數(shù)據(jù)錯誤,當(dāng)檢測出錯誤時,返回出錯狀態(tài)。以此來提高利用中國余數(shù)定理來高速進(jìn)行署名作成處理的IC卡的針對故障利用攻擊的安全性。
專利文獻(xiàn)1特開2002-261751號公報專利文獻(xiàn)2特開平11-8616號公報發(fā)明內(nèi)容如上所述,根據(jù)傳統(tǒng)技術(shù),提高對于利用中國余數(shù)定理來進(jìn)行署名作成處理的IC卡的故障利用攻擊的安全性,但是還期望能進(jìn)一步高速進(jìn)行信息安全處理。
為實現(xiàn)上述期望,本發(fā)明的目的在于,提供一種與傳統(tǒng)技術(shù)相比可高速進(jìn)行信息安全運(yùn)算的RSA公開密鑰生成裝置、RSA解密裝置、RSA署名裝置、方法及程序。
為達(dá)到上述目的,本發(fā)明為一種從RSA加密方式的秘密密鑰d來重新生成公開密鑰e′的RSA公開密鑰生成裝置,包含取得單元,其取得RSA密碼的秘密密鑰d及素數(shù)p,這里,素數(shù)q與素數(shù)p相異,公開密鑰e與p-1同q-1的最小公倍數(shù)1cm互素,而且滿足p-1>e,上述秘密密鑰d是以1cm為除數(shù)的余數(shù)體中公開密鑰e的逆元;余數(shù)運(yùn)算單元,其利用所取得的秘密密鑰d與素數(shù)p,來算出以素數(shù)p-1為除數(shù)的上述秘密密鑰d的余數(shù)dp;逆元運(yùn)算單元,其利用所算出的上述余數(shù)dp及所取得的上述素數(shù)p,來算出以素數(shù)p-1為除數(shù)的余數(shù)體中上述余數(shù)dp的逆元,并將所算出的逆元作為新的公開密鑰e′。
基于該構(gòu)成,為求出公開密鑰,成為逆元的運(yùn)算對象的余數(shù)dp是秘密密鑰d的大約一半位數(shù)的值,因而具有通過逆元運(yùn)算單元,逆元運(yùn)算所需時間與傳統(tǒng)相比可大幅縮減的效果。
此外,本發(fā)明為一種對由RSA加密方式生成的加密碼解密的RSA解密裝置,包含公開密鑰取得單元,其從權(quán)利要求1的RSA公開密鑰生成裝置取得公開密鑰e′;加密碼取得單元,其取得加密碼C,加密碼C是一種利用上述公開密鑰e,由RSA加密方式對明碼M進(jìn)行RSA加密而生成的碼;RSA解密單元,其利用秘密密鑰d,對所取得的上述加密碼C進(jìn)行RSA解密,生成解密碼D;再加密單元,其利用所取得的公開密鑰e′,對所生成的解密碼D進(jìn)行RSA加密,生成再加密碼C′;比較單元,其將所取得的加密碼C與所生成的再加密碼C′進(jìn)行比較,判斷是否一致;輸出單元,在判斷為一致的場合下,輸出所生成的上述解密碼D。
基于該構(gòu)成,在基于比較單元的判斷為一致的場合下,輸出所生成的解密碼,因而可對抗故障利用攻擊。
這里,上述RSA解密裝置中,上述RSA解密單元從權(quán)利要求1的RSA公開密鑰生成裝置取得余數(shù)dp,利用所取得的余數(shù)dp,由中國余數(shù)定理,來對所取得的上述加密碼C進(jìn)行RSA解密,生成解密碼D。
基于該構(gòu)成,為求出公開密鑰,可在按原樣來利用中國余數(shù)定理算法的RSA解密過程中采用成為逆元的運(yùn)算對象的余數(shù)dp,因而可縮短RSA解密等所需的時間。
此外,本發(fā)明為一種由RSA署名方式來對明碼實施署名,以生成署名碼的RSA署名裝置,包含公開密鑰取得單元,其從權(quán)利要求1中的RSA公開密鑰生成裝置來取得公開密鑰e′;署名生成單元,其利用秘密密鑰d,對明碼M實施RSA署名,生成署名碼S;恢復(fù)單元,其利用所取得的公開密鑰e′,對署名碼S實施RSA署名恢復(fù),生成解密碼D;比較單元,其將明碼M與所生成的解密碼D進(jìn)行比較,判斷是否一致;輸出單元,在判斷為一致的場合下,輸出所生成的上述署名碼S。
基于該構(gòu)成,在基于比較單元的判斷為一致的場合下,輸出所生成的署名碼,因而可對抗故障利用攻擊。
這里,上述RSA署名裝置中,上述署名生成單元從權(quán)利要求1的RSA公開密鑰生成裝置取得余數(shù)dp,利用所取得的余數(shù)dp,由中國余數(shù)定理,來對上述明碼M實施RSA署名,生成署名碼S。
基于該構(gòu)成,為求出公開密鑰,可在按原樣來利用中國余數(shù)定理算法的RSA署名過程中采用成為逆元的運(yùn)算對象的余數(shù)dp,因而可縮短RSA署名所需的時間。
參照本發(fā)明的以下特定實施方式的說明及附圖,可更明曉本發(fā)明的這些及其它目的、長處及特性。
附圖中圖1是表示秘密通信系統(tǒng)10的構(gòu)成的系統(tǒng)構(gòu)成圖。
圖2是表示寄存器裝置100的構(gòu)成的框圖。
圖3是表示IC卡300的構(gòu)成的框圖。
圖4是表示寄存器裝置100及IC卡300的全體動作概要的流程圖。
圖5是表示基于寄存器裝置100的IC卡300的認(rèn)證動作的流程圖。下接圖6。
圖6是表示基于寄存器裝置100的IC卡300的認(rèn)證動作的流程圖。上接圖5。
圖7是表示基于IC卡300的寄存器裝置100的認(rèn)證動作的流程圖。
圖8是表示會話密鑰的收發(fā)動作的流程圖。
圖9是表示點(diǎn)秘密通信動作的流程圖。
圖10是表示作為第2實施方式的RSA秘密通信系統(tǒng)20的構(gòu)成的系統(tǒng)構(gòu)成圖。
圖11是表示RSA解密裝置400中的RSA解密動作的流程圖。
圖12是表示作為第3實施方式的RSA秘密通信系統(tǒng)30的構(gòu)成的系統(tǒng)構(gòu)成圖。
圖13是表示RSA秘密通信系統(tǒng)30的動作的流程圖。
具體實施例方式
1.第1實施方式以下對作為本發(fā)明涉及的第1實施方式的秘密通信系統(tǒng)10進(jìn)行說明。
1.1秘密通信系統(tǒng)10的構(gòu)成秘密通信系統(tǒng)10如圖1所示,其構(gòu)成包括寄存器裝置100及IC卡300。
寄存器裝置100設(shè)置于小賣店內(nèi),由小賣店的銷售人員來操作,并根據(jù)利用者所購入商品的購入額,來發(fā)行特惠即點(diǎn)數(shù)。寄存器裝置100對所發(fā)行的點(diǎn)數(shù)加密,生成加密點(diǎn)數(shù),經(jīng)由與寄存器裝置100連接的讀卡器200,向利用者的IC卡300輸出所生成的加密點(diǎn)數(shù)。
IC卡300接受加密點(diǎn)數(shù),對所接受的加密點(diǎn)數(shù)解密,生成解密點(diǎn)數(shù),并存儲所生成的解密點(diǎn)數(shù)。
利用者在下次購入商品時,可將IC卡300中存儲的解密點(diǎn)數(shù)作為貨款的一部分來使用。
1.2IC卡300的公開密鑰e及秘密密鑰d的生成如下所示,密鑰生成裝置(未圖示)生成IC卡300的公開密鑰e及秘密密鑰d。
(a)選擇任意相異的2個大素數(shù)p及素數(shù)q,并計算其積n。n=p×q(b)計算(p-1)與(q-1)的最小公倍數(shù)L,并選擇與最小公倍數(shù)L互素而且小于最小公倍數(shù)L的任意整數(shù)e(公開密鑰)。
L=LCM((p-1),(q-1))GCD(e,L)=11<e<L這里,LCM(X,Y)表示數(shù)X與數(shù)Y的最小公倍數(shù),GCD(X,Y)表示數(shù)X與數(shù)Y的最大公倍數(shù)。LCM是Least Common Multiple(最小公倍數(shù))的簡稱,GCD是Greatest Common Divisor(最大公約數(shù))的簡稱。
基于在(c)(b)中求出的公開密鑰e及最小公倍數(shù)L來解算下式,以求出秘密密鑰d。
ed=1(mod L)密鑰生成裝置將素數(shù)p、素數(shù)q及公開密鑰e預(yù)先通知到寄存器裝置100。將素數(shù)p、素數(shù)q及秘密密鑰d預(yù)先通知到IC卡300。
寄存器裝置100的公開密鑰PK及秘密密鑰SK也同樣由密鑰生成裝置來生成,秘密密鑰SK被預(yù)先通知到寄存器裝置100,公開密鑰PK被預(yù)先通知到IC卡300。
1.3寄存器裝置100的構(gòu)成寄存器裝置100如圖2所示,其構(gòu)成包括顯示部101、顯示部102、印字部103、輸入部104、保管庫105、信息存儲部106、控制部107、認(rèn)證部108、加解密部109、輸入輸出部110及密鑰存儲部111。此外寄存器裝置100的輸入輸出部110與讀卡器200相接。
寄存器裝置100是進(jìn)行由利用者支付的購入貨款的結(jié)算及保管等的錢幣寄存器裝置,根據(jù)利用者所購入商品的購入額,來發(fā)行特惠即點(diǎn)數(shù),對所發(fā)行的點(diǎn)數(shù)加密,生成加密點(diǎn)數(shù),并經(jīng)由讀卡器200,向利用者的IC卡300輸出所生成的加密點(diǎn)數(shù)。
具體地說,寄存器裝置100是一種包含微處理器、ROM、RAM等的計算機(jī)系統(tǒng)。上述ROM中存儲有計算機(jī)程序。上述微處理器按照上述計算機(jī)程序來動作,寄存器裝置100由此來實現(xiàn)其部分功能。
(1)密鑰存儲部111密鑰存儲部111被設(shè)置成不能從外部來訪問,如圖2所示,預(yù)先存儲有IC卡300的公開密鑰e、素數(shù)p、素數(shù)q及寄存器裝置100的秘密密鑰SK。
公開密鑰e是由RSA公開密鑰加密方式的密鑰生成算法所生成的IC卡300的公開密鑰,被保存到1024位長的數(shù)據(jù)區(qū)。
素數(shù)p及素數(shù)q是任意相異的大素數(shù),分別被保存到512位長的數(shù)據(jù)區(qū)。這里作為一例,p=d32737e7 267ffe13 41b2d5c0 d150a81b 586fb313 2bed2f8d 5262864a 9cb9f30af38be448 598d413a 172efb80 2c21acf1 c11c520c 2f26a471 dcad212e ac7ca39dq=cc8853d1 d54da630 fac004f4 71f281c7 b8982d82 24a490ed beb33d3e 3d5cc93c4765703d 1dd79164 2f1f116a 0dd862be 2419b2af 72bfe9a0 30e860b0 288b5d77這些記載都是16進(jìn)制數(shù)。為了看起來方便,每8位分開表示。
秘密密鑰SK是由RSA公開密鑰加密方式的密鑰生成算法所生成的寄存器裝置100的秘密密鑰,被保存到1024位長的數(shù)據(jù)區(qū)。
(2)信息存儲部106信息存儲部106,具有用于存儲識別利用者的利用者識別符及利用者的購入金額、購入日期、發(fā)行點(diǎn)數(shù)等有關(guān)基于利用者的商品購入的信息的區(qū)域。
(3)認(rèn)證部108當(dāng)在讀卡器200中裝有IC卡300時,認(rèn)證部108經(jīng)由輸入輸出部110及讀卡器200,如下所示,在與IC卡300之間相互進(jìn)行設(shè)備認(rèn)證。這里,設(shè)備認(rèn)證是查詢響應(yīng)型認(rèn)證。
(基于寄存器裝置100的IC卡300的認(rèn)證)認(rèn)證部108生成隨機(jī)數(shù)R1,并經(jīng)由輸入輸出部110及讀卡器200,向IC卡300輸出所生成的隨機(jī)數(shù)R1。
此外認(rèn)證部108經(jīng)由讀卡器200及輸入輸出部110,從IC卡300接受署名數(shù)據(jù)S1,從密鑰存儲部111讀出IC卡300的公開密鑰e、素數(shù)p及素數(shù)q。接下來對所生成的隨機(jī)數(shù)R1施行散列函數(shù)Hash,生成散列值H2。
H2=Hash(R1)這里,Hash(R1)表示對隨機(jī)數(shù)R1施行散列函數(shù)Hash所得到的值。散列函數(shù)Hash的一例是SHA-1。
接下來,認(rèn)證部108計算n=p×q,并計算S1e(mod n),對所生成的散列值H2與由計算所得到的值S1e(mod n)進(jìn)行比較,如果一致便視為認(rèn)證成功,如果不一致則視為認(rèn)證失敗。
在認(rèn)證成功的場合下,認(rèn)證部108向控制部107通知表示設(shè)備認(rèn)證成功這一意思的信息。在設(shè)備認(rèn)證失敗的場合下,向控制部107通知表示設(shè)備認(rèn)證失敗這一意思的信息。
在設(shè)備認(rèn)證失敗的場合下,此后寄存器裝置100在與該IC卡300之間不進(jìn)行信息收發(fā)。
(基于IC卡300的寄存器裝置100的認(rèn)證)認(rèn)證部108經(jīng)由讀卡器200及輸入輸出部110,從IC卡300接受隨機(jī)數(shù)R2,從密鑰存儲部111讀出秘密密鑰SK、素數(shù)p及素數(shù)q,并對所接受的隨機(jī)數(shù)R2施行散列函數(shù)Hash,計算散列值H3。
H3=Hash(R2)接下來,認(rèn)證部108計算n=p×q,還計算署名數(shù)據(jù)S2=(H3)SK(mod n),并經(jīng)由輸入輸出部110及讀卡器200,向IC卡300輸出由計算所得到的署名數(shù)據(jù)S2。
(4)輸入輸出部110及讀卡器200輸入輸出部110在控制部107與讀卡器200之間,對控制部107的控制源進(jìn)行雙向信息收發(fā),或者在認(rèn)證部108與讀卡器200之間,對認(rèn)證部108的控制源進(jìn)行雙向信息收發(fā)。
讀卡器200在IC卡300與輸入輸出部110之間進(jìn)行信息的收發(fā)。
(5)加解密部109(會話密鑰的輸出)加解密部109生成隨機(jī)數(shù),并將所生成的隨機(jī)數(shù)作為會話密鑰M。接下來,從密鑰存儲部111讀出素數(shù)p、素數(shù)q及公開密鑰e,計算整數(shù)n=p×q,并利用會話密鑰M、整數(shù)n及公開密鑰e,由下式來算出加密會話密鑰C1。
加密會話密鑰C1=Me(mod n)接下來,經(jīng)由輸入輸出部110及讀卡器200,向IC卡300輸出由計算所得到的加密會話密鑰C1。
(點(diǎn)數(shù)的輸出)加解密部109從控制部107接受點(diǎn)數(shù)Pt,將所生成的會話密鑰M用作密鑰,對所接受的點(diǎn)數(shù)Pt施行加密算法E1,生成加密點(diǎn)數(shù)Et。
加密點(diǎn)數(shù)Et=E1(會話密鑰M、點(diǎn)數(shù)Pt)這里,E(A,B)表示利用密鑰A,對明碼B施行加密算法E所得到的加密碼。作為一例,加密算法E1是一種基于共通密鑰加密方式的DES(Data Encryption Standard,數(shù)據(jù)加密標(biāo)準(zhǔn))的算法。
接下來,加解密部109經(jīng)由輸入輸出部110及讀卡器200,向IC卡300輸出加密點(diǎn)數(shù)Et。
(6)控制部107控制部107由小賣店銷售人員的操作,根據(jù)利用者所購入商品的購入額,來生成特惠即點(diǎn)數(shù)Pt,并向加解密部109輸出所生成的點(diǎn)數(shù)Pt。
控制部107控制構(gòu)成寄存器裝置100的其它構(gòu)成要素。
(7)輸入部104、顯示部101、顯示部102、印字部103及保管庫105輸入部104從寄存器裝置100的操作者來接受輸入信息,并向控制部107輸出所接受的輸入信息。顯示部101及顯示部102從控制部107接受應(yīng)顯示的信息,并顯示出所接受的信息。
印字部103由控制部107的控制,來印刷各種信息。
保管庫105保管紙幣及貨幣。
1.4IC卡300的構(gòu)成IC卡300由長度約為85mm,寬度為54mm,厚度為0.76mm的薄片狀樹脂來形成,外表面上有接觸端子,在內(nèi)部密封有系統(tǒng)LSI(大規(guī)模集成電路,Large Scale Integrated circuit)320。
IC卡300如圖3所示,結(jié)構(gòu)包括輸入輸出部301、認(rèn)證部302、解密部303、高速公開密鑰運(yùn)算部304、控制部305、再加密部306、信息存儲部307、解密部308及密鑰存儲部309,認(rèn)證部302、解密部303、高速公開密鑰運(yùn)算部304、控制部305、再加密部306、信息存儲部307、解密部308及密鑰存儲部309形成系統(tǒng)LSI320。
系統(tǒng)LSI320是一種在1個芯片上集成上述多個構(gòu)成部來制造的較長多功能LSI,具體地說,是一種包含微處理器、ROM、RAM等來構(gòu)成的計算機(jī)系統(tǒng)。上述RAM中存儲有計算機(jī)程序。上述微處理器按照上述計算機(jī)程序來動作,系統(tǒng)LSI320由此來實現(xiàn)其部分功能。
(1)密鑰存儲部309密鑰存儲部309如圖3所示,預(yù)先存儲有寄存器裝置100的公開密鑰PK、素數(shù)p、素數(shù)q及IC卡300的秘密密鑰d。
公開密鑰PK是由RSA公開密鑰加密方式的密鑰生成算法所生成的寄存器裝置100的公開密鑰,被保存到1024位長的數(shù)據(jù)區(qū)。
素數(shù)p及素數(shù)q與上述同樣,分別被保存到512位長的數(shù)據(jù)區(qū)。
秘密密鑰d是由RSA公開密鑰加密方式的密鑰生成算法所生成的IC卡300的秘密密鑰,被保存到1024位長的數(shù)據(jù)區(qū)。
(2)高速公開密鑰運(yùn)算部304高速公開密鑰運(yùn)算部304如圖3所示,構(gòu)成包括秘密密鑰取得部311、余數(shù)運(yùn)算部312、求逆運(yùn)算部313及除數(shù)運(yùn)算部314。
秘密密鑰取得部311從密鑰存儲部309讀出秘密密鑰d、素數(shù)p及素數(shù)q,并向余數(shù)運(yùn)算部312輸出所讀出的秘密密鑰d及素數(shù)p,并且,向除數(shù)運(yùn)算部314輸出所讀出的素數(shù)p及素數(shù)q。
余數(shù)運(yùn)算部312從秘密密鑰取得部311接受秘密密鑰d及素數(shù)p,利用所接受的秘密密鑰d及素數(shù)p,來算出d1=d(mod p-1),并向求逆運(yùn)算部313輸出由計算所得到的數(shù)d1及素數(shù)p,此外還向解密部303輸出數(shù)d1。
求逆運(yùn)算部313從余數(shù)運(yùn)算部312接受數(shù)d1及素數(shù)p,利用所接受的數(shù)d1及素數(shù)p,由下式來算出公開密鑰e′。
e′=d1-1(mod p-1)接下來,求逆運(yùn)算部313向再加密部306及認(rèn)證部302輸出由計算所得到的公開密鑰e′。
除數(shù)運(yùn)算部314從秘密密鑰取得部311接受素數(shù)p及素數(shù)q,利用所接受的素數(shù)p及素數(shù)q,來算出整數(shù)n=p×q,并向認(rèn)證部302及再加密部306輸出由計算所得到的整數(shù)n。
(3)認(rèn)證部302(基于寄存器裝置100的IC卡300的認(rèn)證)認(rèn)證部302經(jīng)由讀卡器200及輸入輸出部301,從寄存器裝置100接受隨機(jī)數(shù)R1,從密鑰存儲部309讀出素數(shù)p與素數(shù)q及秘密密鑰d,從除數(shù)運(yùn)算部314接受整數(shù)n,利用所接受的隨機(jī)數(shù)R1,由下式來算出散列值H1。
H1=Hash(R1)接下來,認(rèn)證部302依次運(yùn)算下式,由此來算出署名數(shù)據(jù)S1。
a=p-1(mod q)y1=H1(mod p)y2=H1(mod q)d2=d(mod q-1)x1=y(tǒng)1d1(mod p)x2=y(tǒng)2d2(mod q)s1={a(x2-x1)(mod q)}p+x1接下來,向再加密部306輸出由計算所得到的署名數(shù)據(jù)S1,從再加密部306接受s1e′(mod n)。
接下來,判斷散列值H1與s1e′(mod n)是否一致,在判斷為不一致的場合下,視為發(fā)生了某種錯誤,認(rèn)證部302向控制部305通知表示發(fā)生錯誤的出錯信息。此后,IC卡300停止其動作。
在判斷為一致的場合下,認(rèn)證部302經(jīng)由輸入輸出部301及讀卡器200,向寄存器裝置100輸出所生成的署名數(shù)據(jù)S1。
(基于IC卡300的寄存器裝置100的認(rèn)證)認(rèn)證部302生成隨機(jī)數(shù)R2,并經(jīng)由輸入輸出部301及讀卡器200,向寄存器裝置100輸出所生成的隨機(jī)數(shù)R2。
接下來,認(rèn)證部302經(jīng)由讀卡器200及輸入輸出部301,從寄存器裝置100接受署名數(shù)據(jù)S2,從密鑰存儲部309讀出寄存器裝置100的公開密鑰PK、素數(shù)p及素數(shù)q,計算整數(shù)n=p×q,并利用所生成的隨機(jī)數(shù)R2來計算散列值H4。
H4=Hash(R2)接下來,認(rèn)證部302計算S2PK(mod n),并判斷H4與S2PK(mod n)是否一致,如果一致便視為認(rèn)證成功,如果不一致則視為認(rèn)證失敗。
在認(rèn)證成功的場合下,認(rèn)證部302向控制部305通知表示設(shè)備認(rèn)證成功這一意思的信息。并且,在設(shè)備認(rèn)證失敗的場合下,向控制部305通知表示設(shè)備認(rèn)證失敗這一意思的信息。
在設(shè)備認(rèn)證失敗的場合下,此后IC卡300在與寄存器裝置100之間不進(jìn)行信息收發(fā)。
(4)再加密部306再加密部306從求逆運(yùn)算部313接受公開密鑰e′,從除數(shù)運(yùn)算部314接受整數(shù)n,并計算下式。
S1e′(mod n)接下來,再加密部306向認(rèn)證部302輸出所得到的S1e′(mod n)。
(5)控制部305控制部305接受出錯信息、表示設(shè)備認(rèn)證成功這一意思的信息以及表示設(shè)備認(rèn)證失敗這一意思的信息。
控制部305從認(rèn)證部302接受到出錯信息后,對構(gòu)成IC卡300的其它構(gòu)成要素,指示停止動作。
控制部305從認(rèn)證部302接受到表示設(shè)備認(rèn)證失敗這一意思的信息后,對構(gòu)成IC卡300的其它構(gòu)成要素,指示停止動作。另一方面,在接受到表示設(shè)備認(rèn)證成功這一意思的信息后,繼續(xù)以后的動作。
(6)解密部303解密部303經(jīng)由讀卡器200及輸入輸出部301,從寄存器裝置100接受加密會話密鑰C1。
接下來,解密部303從密鑰存儲部309接受素數(shù)p及素數(shù)q,從余數(shù)運(yùn)算部312接受數(shù)d1,依次運(yùn)算下式,由此來算出解密會話密鑰x。
A=p-1(mod q)y1=C1(mod p)y2=C1(mod q)d2=d(mod q-1)x1=y(tǒng)1d1(mod p)
x2=y(tǒng)2d2(mod q)x={a(x2-x1)(mod q)}p+x1接下來,向解密部308輸出由計算所得到的解密會話密鑰x。
(7)解密部308解密部308經(jīng)由讀卡器200及輸入輸出部301,從寄存器裝置100接受加密點(diǎn)數(shù)Et,從解密部303接受解密會話密鑰x,將所接受的解密會話密鑰x用作密鑰,對所接受的加密點(diǎn)數(shù)Et施行解密算法D1,生成解密點(diǎn)數(shù)Dt,并向信息存儲部307寫入所生成的解密點(diǎn)數(shù)Dt。
這里,解密算法D1是基于共通密鑰加密方式的DES的算法,對由加密算法E1生成的加密碼解密。
(8)輸入輸出部301輸入輸出部301經(jīng)由讀卡器200,在寄存器裝置100與構(gòu)成IC卡300的其它構(gòu)成要素之間進(jìn)行信息的收發(fā)。
(9)信息存儲部307信息存儲部307具有用于存儲解密點(diǎn)數(shù)Dt的區(qū)域。
1.5秘密通信系統(tǒng)10的動作對秘密通信系統(tǒng)10的動作進(jìn)行說明。
(1)秘密通信系統(tǒng)10的整體概要動作利用圖4所示的流程圖,對秘密通信系統(tǒng)10的整體概要動作進(jìn)行說明。
IC卡300所具有的高速公開密鑰運(yùn)算部304的余數(shù)運(yùn)算部312算出d1=d(mod p-1)(步驟S101),求逆運(yùn)算部313算出公開密鑰e′=d1-1(modp-1)(步驟S102)。
接下來,寄存器裝置100嘗試IC卡300的認(rèn)證(步驟S103),一旦認(rèn)證失敗(步驟S104),便結(jié)束與IC卡300之間的通信。一旦認(rèn)證成功(步驟S104),則繼續(xù)與IC卡300之間的通信。
接下來IC卡300嘗試寄存器裝置100的認(rèn)證(步驟S105),一旦認(rèn)證失敗(步驟S106),便結(jié)束與寄存器裝置100之間的通信。一旦認(rèn)證成功(步驟S106),則繼續(xù)與寄存器裝置100之間的通信。
接下來,寄存器裝置100對會話密鑰加密,生成加密會話密鑰,并向IC卡300輸出所生成的加密會話密鑰,IC卡300對加密會話密鑰解密,生成解密會話密鑰(步驟S107),寄存器裝置100利用會話密鑰,對點(diǎn)數(shù)加密,生成加密點(diǎn)數(shù),并發(fā)送所生成的加密點(diǎn)數(shù),IC卡300利用解密會話密鑰,對加密點(diǎn)數(shù)解密(步驟S108)。
(2)基于寄存器裝置100的IC卡300的認(rèn)證動作利用圖5~圖6所示的流程圖,對基于寄存器裝置100的IC卡300的認(rèn)證動作進(jìn)行說明。
寄存器裝置100的認(rèn)證部108生成隨機(jī)數(shù)R1(步驟S121),并經(jīng)由輸入輸出部110及讀卡器200,向IC卡300輸出所生成的隨機(jī)數(shù)R1(步驟S122)。
IC卡300的認(rèn)證部302經(jīng)由讀卡器200及輸入輸出部301,從寄存器裝置100接受隨機(jī)數(shù)R1(步驟S122),從密鑰存儲部309讀出素數(shù)p及素數(shù)q以及秘密密鑰d,從除數(shù)運(yùn)算部314接受整數(shù)n(步驟S123),利用所接受的隨機(jī)數(shù)R1來算出散列值H1=Hash(R1)(步驟S124)。
接下來認(rèn)證部302算出a=p-1(mod q)(步驟S125)、y1=H1(mod p)(步驟S126)、y2=H1(mod q)(步驟S127)、d2=d(mod q-1)(步驟S128)、x1=y(tǒng)1d1(mod p)(步驟S129)、x2=y(tǒng)2d2(mod q)(步驟S130)、s1={a(x2-x1)(mod q)}p+x1(步驟S131)。
再加密部306從求逆運(yùn)算部313接受公開密鑰e′,從除數(shù)運(yùn)算部314接受整數(shù)n(步驟S132),并計算S1e′(mod n)(步驟S133)。
認(rèn)證部302判斷散列值H1與S1e′(mod n)是否一致,在判斷為不一致的場合下(步驟S134),視為發(fā)生了某種錯誤,認(rèn)證部302向控制部305通知表示發(fā)生錯誤的出錯信息。此后,IC卡300停止其動作。
在判斷為一致的場合下(步驟S134),認(rèn)證部302經(jīng)由輸入輸出部301及讀卡器200,向寄存器裝置100輸出所生成的署名數(shù)據(jù)S1(步驟S141)。
接下來,寄存器裝置100的認(rèn)證部108經(jīng)由讀卡器200及輸入輸出部110,從IC卡300接受署名數(shù)據(jù)S1(步驟S141),從密鑰存儲部111讀出IC卡300的公開密鑰e、素數(shù)p及素數(shù)q(步驟S142),接下來,對所生成的隨機(jī)數(shù)R1施行散列函數(shù)Hash,生成散列值H2=Hash(R1)(步驟S143)。
接下來,認(rèn)證部108計算n=p×q,計算S1e(mod n)(步驟S144),并對所生成的散列值H2與由計算所得到的值S1e(mod n)進(jìn)行比較,如果一致(步驟S145),便視為認(rèn)證成功,如果不一致(步驟S145),則視為認(rèn)證失敗。
(3)基于IC卡300的寄存器裝置100的認(rèn)證動作利用圖7所示的流程圖,對基于IC卡300的寄存器裝置100的認(rèn)證動作進(jìn)行說明。
IC卡300的認(rèn)證部302生成隨機(jī)數(shù)R2(步驟S201),并經(jīng)由輸入輸出部301及讀卡器200,向寄存器裝置100輸出所生成的隨機(jī)數(shù)R2(步驟S202)。
寄存器裝置100的認(rèn)證部108經(jīng)由讀卡器200及輸入輸出部110,從IC卡300接受隨機(jī)數(shù)R2(步驟S202),從密鑰存儲部111讀出秘密密鑰SK、素數(shù)p及素數(shù)q(步驟S203),對所接受的隨機(jī)數(shù)R2施行散列函數(shù)Hash,并計算散列值H3=Hash(R2)(步驟S204)。接下來,認(rèn)證部108計算n=p×q,并計算署名數(shù)據(jù)S2=(H3)SK(mod n)(步驟S205),經(jīng)由輸入輸出部110及讀卡器200,向IC卡300輸出由計算所得到的署名數(shù)據(jù)S2(步驟S206)。
接下來,IC卡300的認(rèn)證部302經(jīng)由讀卡器200及輸入輸出部301,從寄存器裝置100接受署名數(shù)據(jù)S2(步驟S206),從密鑰存儲部309讀出寄存器裝置100的公開密鑰PK、素數(shù)p及素數(shù)q(步驟S207),計算整數(shù)n=p×q,并利用所生成的隨機(jī)數(shù)R2,來計算散列值H4=Hash(R2)(步驟S208)。接下來,認(rèn)證部302計算S2PK(mod n)(步驟S209),判斷H4與S2PK(mod n)是否一致,如果一致(步驟S210),便視為認(rèn)證成功,如果不一致(步驟S210),則視為認(rèn)證失敗。
在設(shè)備認(rèn)證失敗的場合下,此后IC卡300在與寄存器裝置100之間不進(jìn)行信息收發(fā)。
(4)會話密鑰的交接動作利用圖8所示的流程圖,對會話密鑰的交接動作進(jìn)行說明。
寄存器裝置100的加解密部109生成隨機(jī)數(shù),并將所生成的隨機(jī)數(shù)作為會話密鑰M(步驟S251)。接下來從密鑰存儲部111讀出素數(shù)p、素數(shù)q及公開密鑰e,計算整數(shù)n=p×q,并利用會話密鑰M、整數(shù)n及公開密鑰e,算出加密會話密鑰C1=Me(mod n)(步驟S252)。接下來,經(jīng)由輸入輸出部110及讀卡器200,向IC卡300輸出由計算所得到的加密會話密鑰C1(步驟S253)。
接下來,IC卡300的解密部303經(jīng)由讀卡器200及輸入輸出部301,從寄存器裝置100接受加密會話密鑰C1(步驟S253),接著從密鑰存儲部309接受素數(shù)p及素數(shù)q,從余數(shù)運(yùn)算部312接受數(shù)d1,并依次運(yùn)算下式。
a=p-1(mod q)(步驟S256)y1=C1(mod p)(步驟S257)y2=C1(mod q)(步驟S258)d2=d(mod q-1)(步驟S259)x1=y(tǒng)1d1(mod p)(步驟S260)x2=y(tǒng)2d2(mod q)(步驟S261)x={a(x2-x1)(mod q)}p+x1(步驟S262)接下來,向解密部308輸出由計算所得到的解密會話密鑰x(步驟S263)。
(5)點(diǎn)數(shù)的秘密通信的動作利用圖9所示的流程圖,對點(diǎn)數(shù)的秘密通信動作進(jìn)行說明。
寄存器裝置100的控制部107由小賣店銷售人員的操作,根據(jù)利用者所購入商品的購入額,來生成特惠即點(diǎn)數(shù)Pt(步驟S291)。接下來,加解密部109將所生成的會話密鑰M用作密鑰,對點(diǎn)數(shù)Pt施行加密算法E1,生成加密點(diǎn)數(shù)Et=E1(會話密鑰M、點(diǎn)數(shù)Pt)(步驟S292),接下來,經(jīng)由輸入輸出部110及讀卡器200,向IC卡300輸出加密點(diǎn)數(shù)Et(步驟S293)。
IC卡300的解密部308經(jīng)由讀卡器200及輸入輸出部301,從寄存器裝置100接受加密點(diǎn)數(shù)Et(步驟S293),從解密部303接受解密會話密鑰x,將所接受的解密會話密鑰x用作密鑰,對所接受的加密點(diǎn)數(shù)Et施行解密算法D1,生成解密點(diǎn)數(shù)Dt(步驟S294),并向信息存儲部307寫入所生成的解密點(diǎn)數(shù)Dt(步驟S295)。
1.6e′成為公開密鑰的證明以下,對在d1=d(mod p-1)時,e′=d1-1(mod p-1)成為公開密鑰這一事實進(jìn)行證明。
公開密鑰e′由e′=d-1(mod LCM(p-1,q-1))來定義。這里,LCM(x,y)表示x與y的最小公倍數(shù)。
由于LCM(p-1,q-1)可以表現(xiàn)為n×(p-1),因而成為e′×d=n×(m×(p-1))+1。
這里,如果假設(shè)e<p-1,則成為e′×(k×(p-1)+d1)=n×(m×(p-1))+1e′×d1=(n×m-e×k)×(p-1)+1,從而成為e′=d1-1(mod p-1)。
2.第2實施方式以下對作為本發(fā)明涉及的其它實施方式的RSA秘密通信系統(tǒng)20進(jìn)行說明。
(1)RSA秘密通信系統(tǒng)20的構(gòu)成RSA秘密通信系統(tǒng)20如圖10所示,其構(gòu)成包括RSA加密裝置500、RSA解密裝置400及存儲卡600,RSA加密裝置500及RSA解密裝置400經(jīng)由網(wǎng)絡(luò)50來連接。
在RSA加密方式下的密鑰生成中,對于大小相異的2個素數(shù)p及素數(shù)q,生成成為數(shù)n=p×q,并與p-1同q-1的最小公倍數(shù)1cm互素,而且滿足p-1>e的公開密鑰e。此外在以最小公倍數(shù)1cm為除數(shù)的余數(shù)體中,生成公開密鑰e的逆元,所生成的逆元成為秘密密鑰d。如此生成的公開密鑰e被預(yù)先通知到RSA加密裝置500。
RSA加密裝置500由RSA加密方式,將公開密鑰e用作密鑰,對明碼M加密,算出加密碼C=Me(mod n)。這里是n=p×q。
存儲卡600是可移動型半導(dǎo)體存儲器,預(yù)先存儲有解密處理所用的秘密密鑰d、素數(shù)p及素數(shù)q。
RSA解密裝置400是對由RSA加密裝置500生成的加密碼C=Me(mod n)解密的裝置,如圖10所示,其構(gòu)成包括由數(shù)據(jù)輸入部401、LSI部420、數(shù)據(jù)輸出部404及數(shù)據(jù)輸入部406。LSI部420是系統(tǒng)LSI,包含數(shù)據(jù)解密部402、高速公開密鑰運(yùn)算部403及數(shù)據(jù)再加密部405。并且,高速公開密鑰運(yùn)算部403包含秘密密鑰取得部411、余數(shù)運(yùn)算部412、除數(shù)運(yùn)算部413及求逆運(yùn)算部414。
數(shù)據(jù)輸入部401經(jīng)由網(wǎng)絡(luò)50,從RSA加密裝置500取得解密對象即加密碼C=Me(mod n)。
數(shù)據(jù)輸入部406從存儲卡600取得解密處理用的秘密密鑰d、素數(shù)p及素數(shù)q。
數(shù)據(jù)解密部402為實現(xiàn)處理高速化,由中國余數(shù)定理(ChineseRemainder Theorem,簡稱CRT),并利用由數(shù)據(jù)輸入部406取得的秘密密鑰d、素數(shù)p、素數(shù)q以及由高速公開密鑰運(yùn)算部403算出的d1,對加密碼C解密,生成解密碼D。具體地說,進(jìn)行以下所示的運(yùn)算。
a=p-1(mod q)y1=C(mod p)y2=C(mod q)d2=d(mod q-1)x1=y(tǒng)1d1(mod p)x2=y(tǒng)2d2(mod q)D={a(x2-x1)(mod q)}p+x1接下來,數(shù)據(jù)解密部402向數(shù)據(jù)輸出部404及數(shù)據(jù)再加密部405輸出所生成的解密碼D。
高速公開密鑰運(yùn)算部403從數(shù)據(jù)輸入部406取得秘密密鑰e、素數(shù)p、素數(shù)q,運(yùn)算公開密鑰e1。部分中途結(jié)果被傳送給數(shù)據(jù)解密部402,用于解密運(yùn)算。
高速公開密鑰運(yùn)算部403的秘密密鑰取得部411從數(shù)據(jù)輸入部406取得秘密密鑰d、素數(shù)p及素數(shù)q。
除數(shù)運(yùn)算部413進(jìn)行素數(shù)p與素數(shù)q的相乘,算出整數(shù)n。
余數(shù)運(yùn)算部412從秘密密鑰d、素數(shù)p、素數(shù)q算出d1=d mod(p-1)的值,并保持所算出的d1。
求逆運(yùn)算部414算出以p-1為除數(shù)的余數(shù)體上d1的逆e1=d1-1(modp-1),接下來將所算出的逆e1作為公開密鑰,向數(shù)據(jù)再加密部405輸出。此外向數(shù)據(jù)解密部402輸出d1。
數(shù)據(jù)再加密部405利用由高速公開密鑰運(yùn)算部403生成的公開密鑰e1,對由數(shù)據(jù)解密部402解密而生成的解密碼D進(jìn)行再加密,生成再加密碼C′=De1(mod n),并向數(shù)據(jù)輸出部404輸出所生成的再加密碼C′。
數(shù)據(jù)輸出部404將由數(shù)據(jù)再加密部405得到的再加密碼C′與由數(shù)據(jù)輸入部401得到的加密碼C進(jìn)行比較,在再加密碼C′與加密碼C一致的場合下,向外部輸出由數(shù)據(jù)解密部402得到的解密碼D。在再加密碼C′與加密碼C不一致的場合下,不輸出解密碼D。
(2)RSA解密裝置400中的RSA解密動作接下來,利用圖11所示的流程圖,對RSA解密裝置400中的RSA解密動作進(jìn)行說明。
數(shù)據(jù)輸入部401取得加密碼C,數(shù)據(jù)輸入部406取得秘密密鑰d、素數(shù)p及素數(shù)q(步驟S401)。
接下來,高速公開密鑰運(yùn)算部403的秘密密鑰取得部411取得秘密密鑰d、素數(shù)p及素數(shù)q,除數(shù)運(yùn)算部413進(jìn)行素數(shù)p與素數(shù)q的相乘,算出整數(shù)n,余數(shù)運(yùn)算部412從秘密密鑰d、素數(shù)p、素數(shù)q來算出d1=dmod(p-1)的值,并保持d1,求逆運(yùn)算部414算出公開密鑰e1=d1-1(modp-1)(步驟S402)。
接下來,數(shù)據(jù)解密部402利用中國余數(shù)定理(CRT),對加密碼C解密,生成解密碼D(步驟S403)。
數(shù)據(jù)再加密部405利用由高速公開密鑰運(yùn)算部403生成的公開密鑰e1,對解密碼D進(jìn)行再加密,生成再加密碼C′(步驟S404)。
數(shù)據(jù)輸出部404將再加密碼C′與加密碼C進(jìn)行比較,在再加密碼C′與加密碼C一致的場合下(步驟S405),向外部輸出解密碼D(步驟S406)。在再加密碼C′與加密碼C不一致的場合下(步驟S405),不輸出解密碼D,而顯示或輸出表示發(fā)生了故障這一意思的消息(步驟S407)。
(3)總結(jié)根據(jù)上述第2實施方式,對計算公開密鑰e1的值的求逆運(yùn)算的輸入成為傳統(tǒng)位長的一半。由于逆元運(yùn)算所需的存儲量與輸入位長成比例,處理時間與輸入位長的平方成比例,因而存儲量及處理時間均可大幅縮減。此外由于成為求逆運(yùn)算的輸入值的d1也可以挪用于采用了中國余數(shù)定理的解密運(yùn)算,因而具有還可削減解密運(yùn)算的處理時間的效果。
此外在本實施方式中,所表示的是一種在高速公開密鑰運(yùn)算部內(nèi)設(shè)置計算d1的余數(shù)運(yùn)算部,并將該值發(fā)送給數(shù)據(jù)解密部來利用的構(gòu)成,但也可以在數(shù)據(jù)解密部內(nèi)設(shè)置余數(shù)運(yùn)算部來計算d1,并將該值發(fā)送到高速公開密鑰運(yùn)算部。在該場合下,在圖11的流程圖中,上部的高速公開密鑰生成步驟(步驟S402)與高速解密步驟(步驟S403)的順序顛倒。
3.第3實施方式以下對作為第2實施方式的RSA秘密通信系統(tǒng)20的變形例的RSA秘密通信系統(tǒng)30進(jìn)行說明。
(1)RSA秘密通信系統(tǒng)30的構(gòu)成RSA秘密通信系統(tǒng)30具有與RSA秘密通信系統(tǒng)20類似的構(gòu)成。這里以與RSA秘密通信系統(tǒng)20的相異點(diǎn)為中心進(jìn)行說明。
RSA秘密通信系統(tǒng)30如圖12所示,其構(gòu)成包括由RSA加密裝置500、RSA解密裝置400b、CRT信息生成裝置700及存儲卡600b,RSA加密裝置500及RSA解密裝置400經(jīng)由網(wǎng)絡(luò)50來連接。
存儲卡600b是與存儲卡600同樣的可移動型半導(dǎo)體存儲器,預(yù)先存儲有解密處理用的秘密密鑰d、素數(shù)p及素數(shù)q。
CRT信息生成裝置700從存儲卡600b讀出秘密密鑰d、素數(shù)p及素數(shù)q,利用所讀出的秘密密鑰d、素數(shù)p及素數(shù)q,來算出d1=d mod(p-1)以及d2=d mod(q-1),并向存儲卡600b寫入由計算所得到的d1及d2。
RSA解密裝置400b是具有與RSA解密裝置400同樣的構(gòu)成,并對由RSA加密裝置500生成的加密碼C=Me(mod n)進(jìn)行解密的裝置,如圖12所示,其構(gòu)成包括數(shù)據(jù)輸入部401、LSI部420b、數(shù)據(jù)輸出部404及數(shù)據(jù)輸入部406b。LSI部420b是具有與LSI部420同樣構(gòu)成的系統(tǒng)LSI,包含數(shù)據(jù)解密部402、高速公開密鑰運(yùn)算部403b以及數(shù)據(jù)再加密部405。此外高速公開密鑰運(yùn)算部403b包含秘密密鑰取得部411b、除數(shù)運(yùn)算部413及求逆運(yùn)算部414。
數(shù)據(jù)輸入部406b從存儲卡600b取得解密處理用的秘密密鑰d、素數(shù)p、素數(shù)q、d1及d2。
數(shù)據(jù)解密部402b利用由數(shù)據(jù)輸入部406b取得的秘密密鑰d、素數(shù)p、素數(shù)q、d1及d2,對加密碼C解密,生成解密碼D。具體地說,進(jìn)行以下所示的運(yùn)算。
a=p-1(mod q)y1=C(mod p)y2=C(mod q)x1=y(tǒng)1d1(mod p)x2=y(tǒng)2d2(mod q)D={a(x2-x1)(mod q)}p+x1
接下來,數(shù)據(jù)解密部402b向數(shù)據(jù)輸出部404及數(shù)據(jù)再加密部405輸出所生成的解密碼D。
這里,數(shù)據(jù)解密部402b不進(jìn)行d2=d(mod q-1)的運(yùn)算,而從存儲卡600b取得d2,這一點(diǎn)與數(shù)據(jù)解密部402不同。
高速公開密鑰運(yùn)算部403b從數(shù)據(jù)輸入部406取得秘密密鑰e、素數(shù)p、素數(shù)q、d1,運(yùn)算公開密鑰e1。部分中途結(jié)果被傳送給數(shù)據(jù)解密部402,用于解密運(yùn)算。
高速公開密鑰運(yùn)算部403b的秘密密鑰取得部411b從數(shù)據(jù)輸入部406b取得素數(shù)p、素數(shù)q、d1。
除數(shù)運(yùn)算部413進(jìn)行素數(shù)p與素數(shù)q的相乘,算出整數(shù)n。
求逆運(yùn)算部414算出以p-1為除數(shù)的余數(shù)體上d1的逆e1=d1-1(modp-1),接下來將所算出的逆e1作為公開密鑰,向數(shù)據(jù)再加密部405輸出。
(2)RSA秘密通信系統(tǒng)30的動作利用圖13所示的流程圖,對RSA秘密通信系統(tǒng)30的動作進(jìn)行說明。
CRT信息生成裝置700從存儲卡600b讀出秘密密鑰d、素數(shù)p及素數(shù)q(步驟S431),利用所讀出的秘密密鑰d、素數(shù)p及素數(shù)q,算出d1=dmod(p-1)及d2=d mod(q-1)(步驟S432),并向存儲卡600b寫入由計算所得到的d1及d2(步驟S433)。
RSA解密裝置400b的數(shù)據(jù)輸入部406b從存儲卡600b取得解密處理用的秘密密鑰d、素數(shù)p、素數(shù)q、d1及d2(步驟S434)。
數(shù)據(jù)輸入部401經(jīng)由網(wǎng)絡(luò)50,從RSA加密裝置500取得加密碼C(步驟S435)。
數(shù)據(jù)解密部402b利用由數(shù)據(jù)輸入部406b取得的秘密密鑰d、素數(shù)p、素數(shù)q、d1及d2,由中國余數(shù)定理,對加密碼C解密,生成解密碼D(步驟S436)。
接下來,求逆運(yùn)算部414算出逆e1=d1-1(mod p-1)(步驟S437),數(shù)據(jù)再加密部405利用公開密鑰e1,對解密碼D再次加密,生成再加密碼C′(步驟S438)。
接下來,數(shù)據(jù)輸出部404將再加密碼C′與加密碼C進(jìn)行比較,在再加密碼C′與加密碼C一致的場合下(步驟S439),向外部輸出解密碼D(步驟S440)。在再加密碼C′與加密碼C不一致的場合下(步驟S439),不輸出解密碼D,而顯示或輸出表示發(fā)生了故障的消息(步驟S441)。
(3)總結(jié)如上所述,在第3實施方式中,RSA解密裝置從外部取得的不是傳統(tǒng)的秘密密鑰,而是預(yù)先計算出的中國余數(shù)定理(CRT)運(yùn)算用的秘密密鑰。即取得d1=d mod(p-1)、d2=d mod(q-1)、p、q的值。此外根據(jù)中國余數(shù)定理的利用方法,在從外部取得的數(shù)據(jù)中也可以至少包含d1。
數(shù)據(jù)解密部402及高速公開密鑰運(yùn)算部403b利用由數(shù)據(jù)輸入部406b取得的值,來進(jìn)行各自的處理。因此如第2實施方式所示,不必在數(shù)據(jù)解密部402與高速公開密鑰運(yùn)算部403之間收發(fā)值d1。
由于值d1從外部來取得,因而在高速公開密鑰運(yùn)算部403b中,不必設(shè)置第2實施方式所示的余數(shù)運(yùn)算部412。
此外第3實施方式中,從外部取得d1=d mod(p-1)、d2=d mod(q-1)、p、q,但根據(jù)中國余數(shù)定理的利用方法,在從外部取得的數(shù)據(jù)中也可以至少包含d1。
并且,在圖13所示的流程圖中,在高速解密步驟(步驟S436)之后,實施高速公開密鑰取得步驟(步驟S437),但先實施高速解密步驟與高速公開密鑰取得步驟的任意一方都是可以的。即也可以在高速公開密鑰取得步驟(步驟S437)之后,實施高速解密步驟(步驟S436)。
根據(jù)第3實施方式,除了實施方式2的效果之外,無需用于求算d2的余數(shù)運(yùn)算,因而具有可進(jìn)一步削減處理時間的優(yōu)異效果。
另外,在上述說明中,以RSA解密裝置中的示例來作說明,但對于RSA署名生成裝置,也可同樣實施。
此外不限于RSA解密裝置及RSA署名生成裝置,對于從RSA秘密密鑰來取得RSA公開密鑰的場合也可同樣實施。
4.總結(jié)本發(fā)明是一種RSA公開密鑰復(fù)原裝置,其在利用素數(shù)p與q、與p-1同q-1的最小公倍數(shù)1cm互素并滿足p-1>e的數(shù)e、以1cm為除數(shù)的余數(shù)體中e的逆元即d以及p與q之積n,將(e,n)用作公開密鑰,將(d,p,q)用作秘密密鑰的RSA密碼中,從上述秘密密鑰(d,p,q)來使上述公開密鑰(e,n)復(fù)原,具有第一秘密密鑰輸入單元,其輸入RSA密碼的秘密密鑰(d,p,q);
第一余數(shù)單元,其利用由上述第一秘密密鑰輸入單元輸入的秘密密鑰d與p,來求出以p-1為除數(shù)的d的余數(shù)即dp=d mod(p-1);第一逆元運(yùn)算單元,其利用由上述第一余數(shù)單元得到的dp及由上述第一秘密密鑰輸入單元輸入的p,來求出以p-1為除數(shù)的余數(shù)體中dp的逆元;公開密鑰輸出單元,其將由上述第一秘密密鑰輸入單元輸入的秘密密鑰p與q之積設(shè)為n,將由上述第一逆元運(yùn)算單元得到的逆元設(shè)為e,將(e,n)作為RSA公開密鑰來輸出。
并且,本發(fā)明是一種RSA解密裝置,其在利用素數(shù)p與q、與p-1同q-1的最小公倍數(shù)1cm互素并滿足p-1>e的數(shù)e、以1cm為除數(shù)的余數(shù)體中e的逆元即d以及p與q之積n,將(e,n)用作公開密鑰,將(d,p,q)用作秘密密鑰的RSA密碼中,從由上述公開密鑰加密的加密碼,來對原明碼解密,具有輸入加密碼C的加密碼輸入單元;第二秘密密鑰輸入單元,其輸入RSA密碼的秘密密鑰(d,p,q);解密單元,其利用由上述第二秘密密鑰輸入單元輸入的秘密密鑰,從由上述加密碼輸入單元輸入的加密碼C來對明碼P解密;第二余數(shù)單元,其利用由上述第二秘密密鑰輸入單元輸入的秘密密鑰d與p,來求出以p-1為除數(shù)的d的余數(shù)即dp=d mod(p-1);第二逆元運(yùn)算單元,其利用由上述第二余數(shù)單元得到的dp及由上述第二秘密密鑰輸入單元輸入的p,來求出以p-1為除數(shù)的余數(shù)體中dp的逆元;第一公開密鑰復(fù)原單元,其將由上述第二秘密密鑰輸入單元輸入的秘密密鑰p與q之積設(shè)為n,將由上述第二逆元運(yùn)算單元得到的逆元設(shè)為e,將(e,n)作為RSA公開密鑰來保持;加密單元,其利用由上述第一公開密鑰復(fù)原單元保持的公開密鑰,從由上述解密單元求出的明碼P來求出加密碼C′;第一驗算單元,其將由上述加密單元求出的加密碼C′與由上述加密碼輸入單元輸入的加密碼C進(jìn)行比較;解密結(jié)果輸出單元,其只在上述第一驗算單元的比較結(jié)果一致時,才輸出明碼P。
這里,也可以取代上述解密單元,而配備CRT解密單元,其利用由上述第二秘密密鑰輸入單元輸入的秘密密鑰以及由上述第二余數(shù)單元得到的dp,通過采用了中國余數(shù)定理(CRT)的算法,從由上述加密碼輸入單元輸入的加密碼C來對明碼P解密。
這里,也可以取代上述第二秘密密鑰輸入單元及上述第二余數(shù)單元,而具備第三秘密密鑰輸入單元,其預(yù)先將至少包含dp而且利用了中國余數(shù)定理的算法所必需的值作為RSA密碼的秘密密鑰來輸入,上述第二逆元運(yùn)算單元、上述第一公開密鑰復(fù)原單元、上述CRT解碼單元也可以采用由上述第三秘密密鑰輸入單元輸入的值。
這里,也可以還具備第一出錯輸出單元,其當(dāng)上述第一驗算單元的比較結(jié)果不一致時,輸出發(fā)生故障這一大意。
并且,本發(fā)明是一種RSA署名生成裝置,其在利用素數(shù)p與q、與p-1同q-1的最小公倍數(shù)1cm互素并滿足p-1>e的數(shù)e、以1cm為除數(shù)的余數(shù)體中e的逆元即d以及p與q之積n,將(e,n)用作公開密鑰,將(d,p,q)用作秘密密鑰的RSA密碼中,從明碼來生成署名碼,具有輸入明碼P的明碼輸入單元;第四秘密密鑰輸入單元,其輸入RSA密碼的秘密密鑰(d,p,q);署名生成單元,其利用由上述第四秘密密鑰輸入單元輸入的秘密密鑰,從由上述明碼輸入單元輸入的明碼P來生成署名碼S;第三余數(shù)單元,其利用由上述第四秘密密鑰輸入單元輸入的秘密密鑰d與p,來求出以p-1為除數(shù)的d的余數(shù)即dp=d mod(p-1);第三逆元運(yùn)算單元,其利用由上述第三余數(shù)單元得到的dp及由上述第四秘密密鑰輸入單元輸入的p,來求出以p-1為除數(shù)的余數(shù)體中dp的逆元;第二公開密鑰復(fù)原單元,其將由上述第四秘密密鑰輸入單元輸入的秘密密鑰p與q之積設(shè)為n,將由上述第三逆元運(yùn)算單元得到的逆元設(shè)為e,將(e,n)作為RSA公開密鑰來保持;明碼恢復(fù)單元,其利用由上述第二公開密鑰復(fù)原單元保持的公開密鑰,從由上述署名生成單元求出的署名碼S來求出明碼P′;第二驗算單元,其將由上述明碼恢復(fù)單元求出的明碼P′與由上述明碼輸入單元輸入的明碼P進(jìn)行比較;署名結(jié)果輸出單元,其只在上述第二驗算單元的比較結(jié)果一致時,才輸出署名碼S。
這里,也可以取代上述署名生成單元,而配備CRT署名生成單元,其利用由上述第四秘密密鑰輸入單元輸入的秘密密鑰以及由上述第三余數(shù)單元得到的dp,通過采用了中國余數(shù)定理(CRT)的算法,從由上述明碼輸入單元輸入的明碼P來生成署名碼S。
這里,也可以取代上述第四秘密密鑰輸入單元及上述第三余數(shù)單元,而具備第五秘密密鑰輸入單元,其預(yù)先將至少包含dp而且利用了中國余數(shù)定理的算法所必需的值作為RSA密碼的秘密密鑰來輸入,上述第三逆元運(yùn)算單元、上述第二公開密鑰復(fù)原單元、上述CRT署名生成單元也可以采用由上述第五秘密密鑰輸入單元輸入的值。
這里,也可以還具備第二出錯輸出單元,其當(dāng)上述第二驗算單元的比較結(jié)果不一致時,輸出發(fā)生故障這一大意。
并且,本發(fā)明是一種RSA公開密鑰復(fù)原方法,其在利用素數(shù)p與q、與p-1同q-1的最小公倍數(shù)1cm互素并滿足p-1>e的數(shù)e、以1cm為除數(shù)的余數(shù)體中e的逆元即d以及p與q之積n,將(e,n)用作公開密鑰,將(d,p,q)用作秘密密鑰的RSA密碼中,從上述秘密密鑰(d,p,q)來使上述公開密鑰(e,n)復(fù)原,包括第一秘密密鑰輸入步驟,其輸入RSA密碼的秘密密鑰(d,p,q);第一余數(shù)步驟,其利用由上述第一秘密密鑰輸入步驟輸入的秘密密鑰d與p,來求出以p-1為除數(shù)的d的余數(shù)即dp=d mod(p-1);第一逆元運(yùn)算步驟,其利用由上述第一余數(shù)步驟得到的dp及由上述第一秘密密鑰輸入步驟輸入的p,來求出以p-1為除數(shù)的余體中dp的逆元;公開密鑰輸出步驟,其將由上述第一秘密密鑰輸入步驟輸入的秘密密鑰p與q之積設(shè)為n,將由上述第一逆元運(yùn)算步驟得到的逆元設(shè)為e,將(e,n)作為RSA公開密鑰來輸出。
本發(fā)明是一種RSA解密方法,其在利用素數(shù)p與q、與p-1同q-1的最小公倍數(shù)1cm互素并滿足p-1>e的數(shù)e、以1cm為除數(shù)的余數(shù)體中e的逆元即d以及p與q之積n,將(e,n)用作公開密鑰,將(d,p,q)用作秘密密鑰的RSA密碼中,從由上述公開密鑰加密的加密碼,來對原明碼解密,包括輸入加密碼C的加密碼輸入步驟;第二秘密密鑰輸入步驟,其輸入RSA密碼的秘密密鑰(d,p,q);
解密步驟,其利用由上述第二秘密密鑰輸入步驟輸入的秘密密鑰,從由上述加密碼輸入步驟輸入的加密碼C來對明碼P解密;第二余數(shù)步驟,其利用由上述第二秘密密鑰輸入步驟輸入的秘密密鑰d與p,來求出以p-1為除數(shù)的d的余數(shù)即dp=d mod(p-1);第二逆元運(yùn)算步驟,其利用由上述第二余數(shù)步驟得到的dp及由上述第二秘密密鑰輸入步驟輸入的p,來求出以p-1為除數(shù)的余數(shù)體中dp的逆元;第一公開密鑰復(fù)原步驟,其將由上述第二秘密密鑰輸入步驟輸入的秘密密鑰p與q之積設(shè)為n,將由上述第二逆元運(yùn)算步驟得到的逆元設(shè)為e,將(e,n)作為RSA公開密鑰來保持;加密步驟,其利用由上述第一公開密鑰復(fù)原步驟保持的公開密鑰,從由上述解密步驟求出的明碼P來求出加密碼C′;第一驗算步驟,其將由上述加密步驟求出的加密碼C′與由上述加密碼輸入步驟輸入的加密碼C進(jìn)行比較;解密結(jié)果輸出步驟,其只在上述第一驗算步驟的比較結(jié)果一致時,才輸出明碼P。
這里,也可以取代上述解密步驟,而包括CRT解密步驟,其利用由上述第二秘密密鑰輸入步驟輸入的秘密密鑰以及由上述第二余數(shù)步驟得到的dp,通過采用了中國余數(shù)定理(CRT)的算法,從由上述加密碼輸入步驟輸入的加密碼C來對明碼P解密。
這里,也可以取代上述第二秘密密鑰輸入步驟及上述第二余數(shù)步驟,而包括第三秘密密鑰輸入步驟,其預(yù)先將至少包含dp而且利用了中國余數(shù)定理的算法所必需的值作為RSA密碼的秘密密鑰來輸入,上述第二逆元運(yùn)算步驟、上述第一公開密鑰復(fù)原步驟、上述CRT解密步驟也可以采用由上述第三秘密密鑰輸入步驟輸入的值。
這里,也可以還具備第一出錯輸出步驟,其當(dāng)上述第一驗算步驟的比較結(jié)果不一致時,輸出發(fā)生故障這一大意。
并且,本發(fā)明是一種RSA署名生成方法,其在利用素數(shù)p與q、與p-1同q-1的最小公倍數(shù)1cm互素并滿足p-1>e的數(shù)e、以1cm為除數(shù)的余數(shù)體中e的逆元即d以及p與q之積n,將(e,n)用作公開密鑰,將(d,p,q)用作秘密密鑰的RSA密碼中,從明碼來生成署名碼,包括輸入明碼P的明碼輸入步驟;
第四秘密密鑰輸入步驟,其輸入RSA密碼的秘密密鑰(d,p,q);署名生成步驟,其利用由上述第四秘密密鑰輸入步驟輸入的秘密密鑰,從由上述明碼輸入步驟輸入的明碼P來生成署名碼S;第三余數(shù)步驟,其利用由上述第四秘密密鑰輸入步驟輸入的秘密密鑰d與p,來求出以p-1為除數(shù)的d的余數(shù)即dp=d mod(p-1);第三逆元運(yùn)算步驟,其利用由上述第三余數(shù)步驟得到的dp及由上述第四秘密密鑰輸入步驟輸入的p,來求出以p-1為除數(shù)的余數(shù)體中dp的逆元;第二公開密鑰復(fù)原步驟,其將由上述第四秘密密鑰輸入步驟輸入的秘密密鑰p與q之積設(shè)為n,將由上述第三逆元運(yùn)算步驟得到的逆元設(shè)為e,將(e,n)作為RSA公開密鑰來保持;明碼恢復(fù)步驟,其利用由上述第二公開密鑰復(fù)原步驟保持的公開密鑰,從由上述署名生成步驟求出的署名碼S來求出明碼P′;第二驗算步驟,其將由上述明碼恢復(fù)步驟求出的明碼P′與由上述明碼輸入步驟輸入的明碼P進(jìn)行比較;署名結(jié)果輸出步驟,其只在上述第二驗算步驟的比較結(jié)果一致時,才輸出署名碼S。
這里,也可以取代上述署名生成步驟,而包括CRT署名生成步驟,其利用由上述第四秘密密鑰輸入步驟輸入的秘密密鑰以及由上述第三余數(shù)步驟得到的dp,通過采用了中國余數(shù)定理(CRT)的算法,從由上述明碼輸入步驟輸入的明碼P來生成署名碼S。
這里,也可以取代上述第四秘密密鑰輸入步驟及上述第三余數(shù)步驟,而包括第五秘密密鑰輸入步驟,其預(yù)先將至少包含dp而且利用了中國余數(shù)定理的算法所必需的值作為RSA密碼的秘密密鑰來輸入,上述第三逆元運(yùn)算步驟、上述第二公開密鑰復(fù)原步驟、上述CRT署名生成步驟也可以采用由上述第五秘密密鑰輸入步驟輸入的值。
這里,也可以還包括第二出錯輸出步驟,其當(dāng)上述第二驗算步驟的比較結(jié)果不一致時,輸出發(fā)生故障這一大意。
并且,本發(fā)明是一種RSA公開密鑰復(fù)原程序,其在利用素數(shù)p與q、與p-1同q-1的最小公倍數(shù)1cm互素并滿足p-1>e的數(shù)e、以1cm為除數(shù)的余數(shù)體中e的逆元即d以及p與q之積n,將(e,n)用作公開密鑰,將(d,p,q)用作秘密密鑰的RSA密碼中,從上述秘密密鑰(d,p,q)來使上述公開密鑰(e,n)復(fù)原,包括第一秘密密鑰輸入步驟,其輸入RSA密碼的秘密密鑰(d,p,q);第一余數(shù)步驟,其利用由上述第一秘密密鑰輸入步驟輸入的秘密密鑰d與p,來求出以p-1為除數(shù)的d的余數(shù)即dp=d mod(p-1);第一逆元運(yùn)算步驟,其利用由上述第一余數(shù)步驟得到的dp及由上述第一秘密密鑰輸入步驟輸入的p,來求出以p-1為除數(shù)的余數(shù)體中dp的逆元;公開密鑰輸出步驟,其將由上述第一秘密密鑰輸入步驟輸入的秘密密鑰p與q之積設(shè)為n,將由上述第一逆元運(yùn)算步驟得到的逆元設(shè)為e,將(e,n)作為RSA公開密鑰來輸出。
本發(fā)明是一種RSA解密程序,其在利用素數(shù)p及q、與p-1同q-1的最小公倍數(shù)1cm互素并滿足p-1>e的數(shù)e、以1cm為除數(shù)的余數(shù)體中e的逆元即d以及p與q之積n,將(e,n)用作公開密鑰,將(d,p,q)用作秘密密鑰的RSA密碼中,從由上述公開密鑰加密的加密碼,來對原明碼解密,包括輸入加密碼C的加密碼輸入步驟;第二秘密密鑰輸入步驟,其輸入RSA密碼的秘密密鑰(d,p,q);解密步驟,其利用由上述第二秘密密鑰輸入步驟輸入的秘密密鑰,從由上述加密碼輸入步驟輸入的加密碼C來對明碼P解密;第二余數(shù)步驟,其利用由上述第二秘密密鑰輸入步驟輸入的秘密密鑰d與p,來求出以p-1為除數(shù)的d的余數(shù)即dp=d mod(p-1);第二逆元運(yùn)算步驟,其利用由上述第二余數(shù)步驟得到的dp及由上述第二秘密密鑰輸入步驟輸入的p,來求出以p-1為除數(shù)的余數(shù)體中dp的逆元;第一公開密鑰復(fù)原步驟,其將由上述第二秘密密鑰輸入步驟輸入的秘密密鑰p與q之積設(shè)為n,將由上述第二逆元運(yùn)算步驟得到的逆元設(shè)為e,將(e,n)作為RSA公開密鑰來保持;加密步驟,其利用由上述第一公開密鑰復(fù)原步驟保持的公開密鑰,從由上述解密步驟求出的明碼P來求出加密碼C′;第一驗算步驟,其將由上述加密步驟求出的加密碼C′與由上述加密碼輸入步驟輸入的加密碼C進(jìn)行比較;解密結(jié)果輸出步驟,其只在上述第一驗算步驟的比較結(jié)果一致時,才輸出明碼P。
并且,也可以取代上述解密步驟,而包括CRT解密步驟,其利用由上述第二秘密密鑰輸入步驟輸入的秘密密鑰以及由上述第二余數(shù)步驟得到的dp,通過采用了中國余數(shù)定理(CRT)的算法,從由上述加密碼輸入步驟輸入的加密碼C來對明碼P解密。
并且,也可以取代上述第二秘密密鑰輸入步驟及上述第二余數(shù)步驟,而包括第三秘密密鑰輸入步驟,其預(yù)先將至少包含dp而且利用了中國余數(shù)定理的算法所必需的值作為RSA密碼的秘密密鑰來輸入,上述第二逆元運(yùn)算步驟、上述第一公開密鑰復(fù)原步驟、上述CRT解碼步驟也可以采用由上述第三秘密密鑰輸入步驟輸入的值。
并且,也可以還具備第一出錯輸出步驟,其當(dāng)上述第一驗算步驟的比較結(jié)果不一致時,輸出發(fā)生故障這一大意。
本發(fā)明是一種RSA署名生成程序,其在利用素數(shù)p與q、與p-1同q-1的最小公倍數(shù)1cm互素并滿足p-1>e的數(shù)e、以1cm為除數(shù)的余數(shù)體中e的逆元即d以及p與q之積n,將(e,n)用作公開密鑰,將(d,p,q)用作秘密密鑰的RSA密碼中,從明碼來生成署名碼,包括輸入明碼P的明碼輸入步驟;第四秘密密鑰輸入步驟,其輸入RSA密碼的秘密密鑰(d,p,q);署名生成步驟,其利用由上述第四秘密密鑰輸入步驟輸入的秘密密鑰,從由上述明碼輸入步驟輸入的明碼P來生成署名碼S;第三余數(shù)步驟,其利用由上述第四秘密密鑰輸入步驟輸入的秘密密鑰d與p,來求出以p-1為除數(shù)的d的余數(shù)即dp=d mod(p-1);第三逆元運(yùn)算步驟,其利用由上述第三余數(shù)步驟得到的dp及由上述第四秘密密鑰輸入步驟輸入的p,來求出以p-1為除數(shù)的余數(shù)體中dp的逆元;第二公開密鑰復(fù)原步驟,其將由上述第四秘密密鑰輸入步驟輸入的秘密密鑰p與q之積設(shè)為n,將由上述第三逆元運(yùn)算步驟得到的逆元設(shè)為e,將(e,n)作為RSA公開密鑰來保持;明碼恢復(fù)步驟,其利用由上述第二公開密鑰復(fù)原步驟保持的公開密鑰,從由上述署名生成步驟求出的署名碼S來求出明碼P′;第二驗算步驟,其將由上述明碼恢復(fù)步驟求出的明碼P′與由上述明碼輸入步驟輸入的明碼P進(jìn)行比較;
署名結(jié)果輸出步驟,其只在上述第二驗算步驟的比較結(jié)果一致時,才輸出署名碼S。
這里,也可以取代上述署名生成步驟,而包括CRT署名生成步驟,其利用由上述第四秘密密鑰輸入步驟輸入的秘密密鑰以及由上述第三余數(shù)步驟得到的dp,通過采用了中國余數(shù)定理(CRT)的算法,從由上述明碼輸入步驟輸入的明碼P來生成署名碼S。
這里,也可以取代上述第四秘密密鑰輸入步驟及上述第三余數(shù)步驟,而包括第五秘密密鑰輸入步驟,其預(yù)先將至少包含dp而且利用了中國余數(shù)定理的算法所必需的值作為RSA密碼的秘密密鑰來輸入,上述第三逆元運(yùn)算步驟、上述第二公開密鑰復(fù)原步驟、上述CRT署名生成步驟也可以采用由上述第五秘密密鑰輸入步驟輸入的值。
這里,也可以還具備第二出錯輸出步驟,其當(dāng)上述第二驗算步驟的比較結(jié)果不一致時,輸出發(fā)生故障這一大意。
如上所述,本發(fā)明涉及的RSA密碼處理裝置具有使故障利用攻擊不能得逞,并高速進(jìn)行RSA解密處理等的性質(zhì),作為有可能受到IC卡等故障利用攻擊,同時還必須進(jìn)行RSA加密處理的裝置等非常有用。
根據(jù)本發(fā)明的RSA公開密鑰復(fù)原裝置,為求出公開密鑰而取用逆元的被運(yùn)算值成為秘密密鑰大約一半的位數(shù)的值。因此可大幅削減逆元運(yùn)算所必需的存儲量以及處理時間。
并且,根據(jù)本發(fā)明的RSA密碼處理裝置,為求出公開密鑰而取用逆元的被運(yùn)算值成為秘密密鑰大約一半的位數(shù)的值。因此與傳統(tǒng)相比,可大幅削減逆元運(yùn)算所需的時間,其結(jié)果是,可縮短使故障利用攻擊不能得逞的RSA解密處理等所需的時間。
此外,根據(jù)本發(fā)明的RSA密碼處理裝置,為求出公開密鑰而取用逆元的被運(yùn)算值,可按原樣用于采用了中國余數(shù)定理算法的RSA解密處理。因而可縮短使故障利用攻擊不能得逞的RSA解密處理等所需的時間。
此外,根據(jù)本發(fā)明的RSA公開密鑰復(fù)原裝置及RSA密碼處理裝置,公開密鑰的值對于素數(shù)p被限制到p-1以下,但一般不會發(fā)生RSA密碼的公開密鑰取得較小的問題。
5.其它變形例另外,基于上述實施方式對本發(fā)明作了說明,但毋庸贅言,本發(fā)明并非限定于上述實施方式。本發(fā)明也包含以下場合。
(1)在第1實施方式中,IC卡300包含系統(tǒng)LSI320,但并非限定于此。比如高速公開密鑰運(yùn)算部304也可以構(gòu)成1個大規(guī)模集成電路。
并且,在第2實施方式中,RSA解密裝置400包含LSI部420,但并非限定于此。比如高速公開密鑰運(yùn)算部403也可以構(gòu)成1個大規(guī)模集成電路。
并且,在第3實施方式中,RSA解密裝置400b包含LSI部420b,但并非限定于此。比如高速公開密鑰運(yùn)算部403b也可以構(gòu)成1個大規(guī)模集成電路。
(2)具體地說,上述各裝置是構(gòu)成包括微處理器、ROM、RAM等的計算機(jī)系統(tǒng)。上述RAM中存儲有計算機(jī)程序。上述微處理器按照上述計算機(jī)程序來動作,各裝置由此來實現(xiàn)其功能。
(3)本發(fā)明可以是上述所示的方法。并且,也可以是由計算機(jī)實現(xiàn)這些方法的計算機(jī)程序,還可以是由上述計算機(jī)程序所組成的數(shù)字信號。
并且,本發(fā)明也可以將上述計算機(jī)程序或上述數(shù)字信號記錄到計算機(jī)可讀取的記錄媒體,比如軟盤、硬盤、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、BD(Blu-ray Disc,藍(lán)光盤)、半導(dǎo)體存儲器等。此外也可以是這些記錄媒體中記錄的上述計算機(jī)程序或上述數(shù)字信號。
并且,本發(fā)明也可以是經(jīng)由電氣通信線路、無線或有線通信線路、以因特網(wǎng)為代表的網(wǎng)絡(luò)、數(shù)據(jù)廣播等,來傳送上述計算機(jī)程序或上述數(shù)字信號。
此外,本發(fā)明也可以是具有微處理器及存儲器的計算機(jī)系統(tǒng),上述存儲器存儲有上述計算機(jī)程序,上述微處理器按照上述計算機(jī)程序來動作。
并且,也可以通過將上述程序或上述數(shù)字信號記錄移送到上述記錄媒體,或者通過經(jīng)由上述網(wǎng)絡(luò)等來移送上述程序或上述數(shù)字信號,由此由其它獨(dú)立的計算機(jī)系統(tǒng)來實施。
(4)也可以分別組合上述實施方式及上述變形例。
盡管參照示例及附圖對本發(fā)明進(jìn)行了詳盡說明,但應(yīng)注意的是,對本領(lǐng)域的普通技術(shù)人員而言,可以做各種變動及修改是顯而易見的。因而除非這些變動及修改脫離本發(fā)明的范圍,否則它們應(yīng)構(gòu)成本發(fā)明的一部分。
產(chǎn)業(yè)上的可利用性構(gòu)成本發(fā)明的各裝置,可以經(jīng)營性持續(xù)反復(fù)地用于有必要秘密地處理信息的所有產(chǎn)業(yè)、或者有必要認(rèn)證對方的所有產(chǎn)業(yè)。此外在電氣設(shè)備制造產(chǎn)業(yè)中,對構(gòu)成本發(fā)明的各裝置可以經(jīng)營性地持續(xù)反復(fù)地制造及銷售。
權(quán)利要求
1.一種從RSA加密方式的秘密密鑰d來重新生成公開密鑰e′的RSA公開密鑰生成裝置,包含取得單元,其取得RSA密碼的秘密密鑰d及素數(shù)p,這里,素數(shù)q與素數(shù)p相異,公開密鑰e與p-1同q-1的最小公倍數(shù)1cm互素,而且滿足p-1>e,上述秘密密鑰d是以1cm為除數(shù)的余數(shù)體中公開密鑰e的逆元;余數(shù)運(yùn)算單元,其利用所取得的秘密密鑰d與素數(shù)p,來算出以素數(shù)p-1為除數(shù)的上述秘密密鑰d的余數(shù)dp;逆元運(yùn)算單元,其利用所算出的上述余數(shù)dp及所取得的上述素數(shù)p,來算出以素數(shù)p-1為除數(shù)的余數(shù)體中上述余數(shù)dp的逆元,并將所算出的逆元作為新的公開密鑰e′。
2.權(quán)利要求1中的RSA公開密鑰生成裝置,其中,上述余數(shù)運(yùn)算單元由dp=d(mod p-1),來算出上述余數(shù)dp,上述逆元運(yùn)算單元由e′=dp-1(mod p-1),來算出上述公開密鑰e′。
3.權(quán)利要求1中的RSA公開密鑰生成裝置,其中,上述余數(shù)運(yùn)算單元及上述逆元運(yùn)算單元由1個集成電路來構(gòu)成。
4.一種構(gòu)成從RSA加密方式的秘密密鑰d重新生成公開密鑰e′的RSA公開密鑰生成裝置的集成電路,其中,RSA公開密鑰生成裝置包含取得單元,其取得RSA密碼的秘密密鑰d及素數(shù)p,這里,素數(shù)q與素數(shù)p相異,公開密鑰e與p-1同q-1的最小公倍數(shù)1cm互素,而且滿足p-1>e,上述秘密密鑰d是以1cm為除數(shù)的余數(shù)體中公開密鑰e的逆元;上述集成電路包含余數(shù)運(yùn)算單元,其利用所取得的秘密密鑰d與素數(shù)p,來算出以素數(shù)p-1為除數(shù)的上述秘密密鑰d的余數(shù)dp;逆元運(yùn)算單元,其利用所算出的上述余數(shù)dp及所取得的上述素數(shù)p,來算出以素數(shù)p-1為除數(shù)的余數(shù)體中上述余數(shù)dp的逆元,并將所算出的逆元作為新的公開密鑰e′。
5.一種對由RSA加密方式生成的加密碼解密的RSA解密裝置,包含公開密鑰取得單元,其從權(quán)利要求1的RSA公開密鑰生成裝置取得公開密鑰e′;加密碼取得單元,其取得加密碼C,加密碼C是一種利用上述公開密鑰e,由RSA加密方式對明碼M進(jìn)行RSA加密而生成的碼;RSA解密單元,其利用秘密密鑰d,對所取得的上述加密碼C進(jìn)行RSA解密,生成解密碼D;再加密單元,其利用所取得的公開密鑰e′,對所生成的解密碼D進(jìn)行RSA加密,生成再加密碼C′;比較單元,其將所取得的加密碼C與所生成的再加密碼C′進(jìn)行比較,判斷是否一致;輸出單元,在判斷為一致的場合下,輸出所生成的上述解密碼D。
6.權(quán)利要求5中的RSA解密裝置,其中,上述RSA解密單元從權(quán)利要求1的RSA公開密鑰生成裝置取得余數(shù)dp,利用所取得的余數(shù)dp,由中國余數(shù)定理,來對所取得的上述加密碼C進(jìn)行RSA解密,生成解密碼D。
7.權(quán)利要求6中的RSA解密裝置,其中,上述RSA解密單元由下述運(yùn)算來生成解密碼D,即a=p-1(mod q)y1=C(mod p)y2=C(mod q)d2=d(mod q-1)x1=y(tǒng)1dp(mod p)x2=y(tǒng)2d2(mod q)D={a(x2-x1)(mod q)}p+x1。
8.權(quán)利要求5中的RSA解密裝置,其中,上述輸出單元在判斷為不一致的場合下,輸出表示發(fā)生故障這一意思的消息。
9.權(quán)利要求5中的RSA解密裝置,其中,上述RSA解密單元、上述再加密單元及上述比較單元由1個集成電路來構(gòu)成。
10.一種構(gòu)成對由RSA加密方式生成的加密碼解密的RSA解密裝置的集成電路,其中,上述RSA解密裝置包含公開密鑰取得單元,其從權(quán)利要求1的RSA公開密鑰生成裝置來取得公開密鑰e′;加密碼取得單元,其取得加密碼C,加密碼C是一種利用上述公開密鑰e,由RSA加密方式對明碼M進(jìn)行RSA加密而生成的碼;輸出單元,在由比較單元判斷為一致的場合下,輸出所生成的上述解密碼D,上述集成電路包含RSA解密單元,其利用秘密密鑰d,對所取得的上述加密碼C進(jìn)行RSA解密,生成解密碼D;再加密單元,其利用所取得的公開密鑰e′,對所生成的解密碼D進(jìn)行RSA加密,生成再加密碼C′;比較單元,其將所取得的加密碼C與所生成的再加密碼C′進(jìn)行比較,判斷是否一致。
11.一種對由RSA加密方式生成的加密碼解密的RSA解密裝置,包含取得單元,其取得RSA密碼的秘密密鑰d及素數(shù)p,這里,素數(shù)q與素數(shù)p相異,公開密鑰e與p-1同q-1的最小公倍數(shù)1cm互素,并滿足p-1>e,上述秘密密鑰d是以1cm為除數(shù)的余數(shù)體中公開密鑰e的逆元;余數(shù)運(yùn)算單元,其利用所取得的秘密密鑰d與素數(shù)p,來算出以素數(shù)p-1為除數(shù)的上述秘密密鑰d的余數(shù)dp;逆元運(yùn)算單元,其利用所算出的上述余數(shù)dp及所取得的上述素數(shù)p,來算出以素數(shù)p-1為除數(shù)的余數(shù)體中上述余數(shù)dp的逆元,并將所算出的逆元作為新的公開密鑰e′,加密碼取得單元,其取得加密碼C,加密碼C是一種利用上述公開密鑰e,由RSA加密方式對明碼M進(jìn)行RSA加密而生成的碼;RSA解密單元,其利用秘密密鑰d,對所取得的上述加密碼C進(jìn)行RSA解密,生成解密碼D;再加密單元,其利用所取得的公開密鑰e′,對所生成的解密碼D進(jìn)行RSA加密,生成再加密碼C′;比較單元,其將所取得的加密碼C與所生成的再加密碼C′進(jìn)行比較,判斷是否一致;輸出單元,在判斷為一致的場合下,輸出所生成的上述解密碼D。
12.一種由RSA署名方式來對明碼實施署名,以生成署名碼的RSA署名裝置,包含公開密鑰取得單元,其從權(quán)利要求1中的RSA公開密鑰生成裝置來取得公開密鑰e′;署名生成單元,其利用秘密密鑰d,對明碼M實施RSA署名,生成署名碼S;恢復(fù)單元,其利用所取得的公開密鑰e′,對署名碼S實施RSA署名恢復(fù),生成解密碼D;比較單元,其將明碼M與所生成的解密碼D進(jìn)行比較,判斷是否一致;輸出單元,在判斷為一致的場合下,輸出所生成的上述署名碼S。
13.權(quán)利要求12中的RSA署名裝置,其中,上述署名生成單元從權(quán)利要求1的RSA公開密鑰生成裝置取得余數(shù)dp,利用所取得的余數(shù)dp,由中國余數(shù)定理,來對上述明碼M實施RSA署名,生成署名碼S。
14.權(quán)利要求13中的RSA解密裝置,其中,上述署名生成單元由下述運(yùn)算來生成署名碼S,即a=p-1(mod q)y1=M(mod p)y2=M(mod q)d2=d(mod q-1)x1=y(tǒng)1dp(mod p)x2=y(tǒng)2d2(mod q)S={a(x2-x1)(mod q)}p+x1。
15.權(quán)利要求12中的RSA署名裝置,其中,上述輸出單元在判斷為不一致的場合下,輸出表示發(fā)生故障這一意思的消息。
16.權(quán)利要求12中的RSA署名裝置,其中,上述署名生成單元、上述恢復(fù)單元及上述比較單元由1個集成電路來構(gòu)成。
17.一種構(gòu)成由RSA署名方式來對明碼實施署名,以生成署名碼的RSA署名裝置的集成電路,其中,上述RSA署名裝置包含公開密鑰取得單元,其從權(quán)利要求1中的RSA公開密鑰生成裝置來取得公開密鑰e′;輸出單元,其在由比較單元判斷為一致的場合下,輸出所生成的上述署名碼S,上述集成電路包含署名生成單元,其利用秘密密鑰d,對明碼M實施RSA署名,生成署名碼S;恢復(fù)單元,其利用所取得的公開密鑰e′,對署名碼S實施RSA署名恢復(fù),生成解密碼D;比較單元,其將明碼M與所生成的解密碼D進(jìn)行比較,判斷是否一致。
18.一種由RSA署名方式對明碼實施署名,以生成署名碼的RSA署名裝置,包含取得單元,其取得RSA密碼的秘密密鑰d及素數(shù)p,這里,素數(shù)q與素數(shù)p相異,公開密鑰e與p-1同q-1的最小公倍數(shù)1cm互素,并滿足p-1>e,上述秘密密鑰d是以1cm為除數(shù)的余數(shù)體中公開密鑰e的逆元;余數(shù)運(yùn)算單元,其利用所取得的秘密密鑰d與素數(shù)p,來算出以素數(shù)p-1為除數(shù)的上述秘密密鑰d的余數(shù)dp;逆元運(yùn)算單元,其利用所算出的上述余數(shù)dp及所取得的上述素數(shù)p,來算出以素數(shù)p-1為除數(shù)的余數(shù)體中上述余數(shù)dp的逆元,并將所算出的逆元作為新的公開密鑰e′,署名生成單元,其利用秘密密鑰d,對明碼M實施RSA署名,生成署名碼S;恢復(fù)單元,其利用所取得的公開密鑰e′,對署名碼S實施RSA署名恢復(fù),生成解密碼D;比較單元,其將明碼M與所生成的解密碼D進(jìn)行比較,判斷是否一致;輸出單元,其在判斷為一致的場合下,輸出所生成的上述署名碼S。
19.一種從RSA加密方式的秘密密鑰d來重新生成公開密鑰e′的RSA公開密鑰生成裝置中所用的RSA公開密鑰生成方法,包括取得步驟,其取得RSA密碼的秘密密鑰d及素數(shù)p,這里,素數(shù)q與素數(shù)p相異,公開密鑰e與p-1同q-1的最小公倍數(shù)1cm互素,并滿足p-1>e,上述秘密密鑰d是以1cm為除數(shù)的余數(shù)體中公開密鑰e的逆元;余數(shù)運(yùn)算步驟,其利用所取得的秘密密鑰d與素數(shù)p,來算出以素數(shù)p-1為除數(shù)的上述秘密密鑰d的余數(shù)dp;逆元運(yùn)算步驟,其利用所算出的上述余數(shù)dp及所取得的上述素數(shù)p,來算出以素數(shù)p-1為除數(shù)的余數(shù)體中上述余數(shù)dp的逆元,并將所算出的逆元作為新的公開密鑰e′。
20.一種從RSA加密方式的秘密密鑰d來重新生成公開密鑰e′的RSA公開密鑰生成裝置中所用的RSA公開密鑰生成用計算機(jī)程序,包括取得步驟,其取得RSA密碼的秘密密鑰d及素數(shù)p,這里,素數(shù)q與素數(shù)p相異,公開密鑰e與p-1同q-1的最小公倍數(shù)1cm互素,并滿足p-1>e,上述秘密密鑰d是以1cm為除數(shù)的余數(shù)體中公開密鑰e的逆元;余數(shù)運(yùn)算步驟,其利用所取得的秘密密鑰d與素數(shù)p,來算出以素數(shù)p-1為除數(shù)的上述秘密密鑰d的余數(shù)dp;逆元運(yùn)算步驟,其利用所算出的上述余數(shù)dp及所取得的上述素數(shù)p,來算出以素數(shù)p-1為除數(shù)的余數(shù)體中上述余數(shù)dp的逆元,并將所算出的逆元作為新的公開密鑰e′。
21.權(quán)利要求20中的計算機(jī)程序,其被記錄到計算機(jī)可讀取的記錄媒體。
22.權(quán)利要求20中的計算機(jī)程序,其在傳送波上體現(xiàn)。
23.一種對由RSA加密方式生成的加密碼解密的RSA解密裝置中所用的RSA解密方法,包括公開密鑰取得步驟,其從權(quán)利要求1的RSA公開密鑰生成裝置取得公開密鑰e′;加密碼取得步驟,其取得加密碼C,加密碼C是利用上述公開密鑰e,由RSA加密方式對明碼M進(jìn)行RSA加密而生成的碼;RSA解密步驟,其利用秘密密鑰d,對所取得的上述加密碼C進(jìn)行RSA解密,以生成解密碼D;再加密步驟,其利用所取得的公開密鑰e′,對所生成的解密碼D進(jìn)行RSA加密,生成再加密碼C′;比較步驟,其將所取得的加密碼C與所生成的再加密碼c′進(jìn)行比較,判斷是否一致;輸出步驟,在判斷為一致的場合下,輸出所生成的上述解密碼D。
24.一種對由RSA加密方式生成的加密碼解密的RSA解密裝置中所用的RSA解密用計算機(jī)程序,包括公開密鑰取得步驟,其從權(quán)利要求1的RSA公開密鑰生成裝置取得公開密鑰e′;加密碼取得步驟,其取得加密碼C,加密碼C是利用上述公開密鑰e,由RSA加密方式對明碼M進(jìn)行RSA加密而生成的碼;RSA解密步驟,其利用秘密密鑰d,對所取得的上述加密碼C進(jìn)行RSA解密,生成解密碼D;再加密步驟,其利用所取得的公開密鑰e′,對所生成的解密碼D進(jìn)行RSA加密,生成再加密碼C′;比較步驟,其將所取得的加密碼C與所生成的再加密碼C′進(jìn)行比較,判斷是否一致;輸出步驟,在判斷為一致的場合下,輸出所生成的上述解密碼D。
25.權(quán)利要求24中的計算機(jī)程序,其被記錄到計算機(jī)可讀取的記錄媒體。
26.權(quán)利要求24中的計算機(jī)程序,其在傳送波上體現(xiàn)。
27.一種由RSA署名方式來對明碼實施署名,以生成署名碼的RSA署名方法,包括公開密鑰取得步驟,其從權(quán)利要求1中的RSA公開密鑰生成裝置取得公開密鑰e′;署名生成步驟,其利用秘密密鑰d,對明碼M實施RSA署名,生成署名碼S;恢復(fù)步驟,其利用所取得的公開密鑰e′,對署名碼S實施RSA署名恢復(fù),生成解密碼D;比較步驟,其將明碼M與所生成的解密碼D進(jìn)行比較,判斷是否一致;輸出步驟,其在判斷為一致的場合下,輸出所生成的上述署名碼S。
28.一種由RSA署名方式來對明碼實施署名,以生成署名碼的RSA署名用計算機(jī)程序,包括公開密鑰取得步驟,其從權(quán)利要求1中的RSA公開密鑰生成裝置取得公開密鑰e′;署名生成步驟,其利用秘密密鑰d,對明碼M實施RSA署名,生成署名碼S;恢復(fù)步驟,其利用所取得的公開密鑰e′,對署名碼S實施RSA署名恢復(fù),生成解密碼D;比較步驟,其將明碼M與所生成的解密碼D進(jìn)行比較,判斷是否一致;輸出步驟,其在判斷為一致的場合下,輸出所生成的上述署名碼S。
29.權(quán)利要求28中的計算機(jī)程序,其被記錄到計算機(jī)可讀取的記錄媒體。
30.權(quán)利要求28中的計算機(jī)程序,其在傳送波上體現(xiàn)。
全文摘要
本發(fā)明提供一種用于IC卡等以使故障利用攻擊不能得逞的RSA解密裝置。該RSA解密裝置不從外部取得公開密鑰,并且可高速進(jìn)行數(shù)據(jù)驗證用的公開密鑰的運(yùn)算。RSA解密裝置具有計算d
文檔編號H04L9/30GK1645791SQ20041009471
公開日2005年7月27日 申請日期2004年11月12日 優(yōu)先權(quán)日2003年11月12日
發(fā)明者小野貴敏, 松崎棗, 布田裕一 申請人:松下電器產(chǎn)業(yè)株式會社