專利名稱:雙核公鑰密碼算法運(yùn)算協(xié)處理器的一種實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息安全密碼領(lǐng)域,具體的說,涉及到公鑰密碼運(yùn)算協(xié)處理器的硬件實(shí)現(xiàn)。 主要針對RSA、 ECC公鑰密碼算法中核心運(yùn)算的硬件實(shí)現(xiàn)方法。
背景技術(shù):
隨著計(jì)算機(jī)網(wǎng)絡(luò)的普及,大量的電子數(shù)據(jù)通過網(wǎng)絡(luò)傳輸?shù)绞澜绺鞯爻蔀榭赡?。但在具?重大的經(jīng)濟(jì)價(jià)值或關(guān)系國家、軍隊(duì)的命運(yùn)等重要數(shù)據(jù)的傳輸過程中,任何一點(diǎn)泄露和差錯(cuò)都 可能造成不可估量的損失。而密碼技術(shù)則是信息安全的保障及核心技術(shù)。公鑰密碼算法大多 基于數(shù)學(xué)難解問題,目前具有較高的安全性。其中ECC和RSA是己經(jīng)成熟的公鑰密碼算法, 使用也頗為廣泛。
針對最常用的公鑰密碼算法RSA和ECC,基本運(yùn)算分別如下
RSA:
密鑰對生成隨機(jī)大素?cái)?shù)p和q, n=pq, 4> (n) = (p - 1) (q_l),隨機(jī)選取整數(shù)e,滿足 gcd(e, d) (n)):l,計(jì)算^e — 'mod4) (n),密鑰對(e,d); 加密C=M'; (mod n); 解密M=Cd (mod n);
其中M是明文,待加密數(shù)據(jù),C是密文,加密后數(shù)據(jù),e是私鑰,加密密鑰,d是公鑰, 解密密鑰,n是模數(shù)。
在加解密運(yùn)算中,模冪運(yùn)算由一系列模乘運(yùn)算組成。此外,解密運(yùn)算時(shí)可以使用中國剩 余定理(CRT)使模冪運(yùn)算大數(shù)的位數(shù)減少一半。
通常實(shí)現(xiàn)時(shí),使用蒙哥馬利(Montgomery)模乘算法,在運(yùn)算過程中有大量大數(shù)需要存 儲(chǔ),算法安全性依賴于大數(shù)的位數(shù)長度,一般都會(huì)選擇512bit長度以上,存儲(chǔ)量極大。關(guān)鍵
運(yùn)算為模乘。 ECC:
密鑰對生成選定橢圓曲線,基點(diǎn)G (Gx, Gy),階為N;在[l, 2,, N-l]中任意選 取隨機(jī)數(shù)A作為私鑰;點(diǎn)乘AG:P (Px, Py)為公鑰。
加密(ECIES):取任意隨機(jī)數(shù)K在[l, 2,, N-l]中,計(jì)算KG二H (Hx, Hy)、 KP=Q (Qx, Qy)和C3:M xor Qx, C={Hx, Hy, C3 }。其中M為明文,待加密數(shù)據(jù)。C為密文,加密后數(shù)
據(jù)。點(diǎn)H、 Q為橢圓曲線上的點(diǎn)。點(diǎn)G為基點(diǎn),點(diǎn)P為公鑰。隨機(jī)整數(shù)A為私鑰。 解密(ECIES): i十算A討(Ix, Iy), M=C3 xor Ix。 可看出,ECC的核心運(yùn)算是點(diǎn)乘運(yùn)算。
通常實(shí)現(xiàn)時(shí),使用一系列倍點(diǎn)和點(diǎn)加運(yùn)算組成?;具\(yùn)算由模乘、模加和模減構(gòu)成。一
般來說ECC沒有亞指數(shù)攻擊,所以它的密鑰長度大大的減少,256bit即可滿足一般要求。
基于如上分析,ECC和RSA公鑰體制中兼容最基本運(yùn)算模乘、模加和模減。而且RSA支 持到位寬2048bit, ECC支持到位寬256bit.這樣大數(shù)的存儲(chǔ)和運(yùn)算速度問題一直是硬件實(shí)現(xiàn) 中的難點(diǎn)。
通常情況下,現(xiàn)有的實(shí)現(xiàn)一般都采用單核(即單個(gè)運(yùn)算模塊)和單RAM模塊的技術(shù),這 樣在速度和靈活性上無法得到突破性的提高。
發(fā)明內(nèi)容
針對大數(shù)存儲(chǔ)和運(yùn)算速度難點(diǎn),本發(fā)明提供一種公鑰密碼算法協(xié)處理器的實(shí)現(xiàn)方法,在 協(xié)處理器中實(shí)現(xiàn)ECC和RSA的最基本運(yùn)算模乘、取模、模加和模減。本發(fā)明能夠在解決大數(shù) 存儲(chǔ)問題的基礎(chǔ)上,同時(shí)節(jié)約面積資源,并且能夠提高后端版圖布線利用率。同時(shí),雙核運(yùn) 算模塊的使用,大大提高了公鑰密碼運(yùn)算效率。
本發(fā)明公開了一種硬件協(xié)處理器的實(shí)現(xiàn)方法雙核,是指協(xié)處理器中包含兩個(gè)完全相同 的運(yùn)算模塊,每個(gè)運(yùn)算模塊都有各自的RAM模塊、算法模塊和控制模塊。這兩個(gè)運(yùn)算模塊既 可以獨(dú)立地進(jìn)行公鑰算法的基本運(yùn)算,也可以在控制模塊的控制下協(xié)同運(yùn)算,以滿足不同公 鑰算法協(xié)議的要求。兩個(gè)運(yùn)算模塊之間還可以實(shí)現(xiàn)內(nèi)部相互交換數(shù)據(jù),數(shù)據(jù)不需要讀出即可 以參加下一次運(yùn)算,大大加快了運(yùn)算速度。最典型的情況是利用CRT (中國剩余定理)進(jìn) 行RSA解密運(yùn)算時(shí),可以利用兩個(gè)運(yùn)算模塊同時(shí)進(jìn)行模乘運(yùn)算。
本發(fā)明還能夠很好地解決在地址線資源有限的情況下靈活實(shí)現(xiàn)公鑰核心運(yùn)算的問題。實(shí) 現(xiàn)該功能的部件是兩個(gè)完全相同的運(yùn)算模塊和接口控制模塊,每個(gè)運(yùn)算模塊包括RAM模塊、 控制模塊和算法模塊。
1>多RAM模塊,用于存儲(chǔ)運(yùn)算過程中的大數(shù)以及運(yùn)算過程中數(shù)據(jù)的交互,還方便對不 同地址進(jìn)行同時(shí)讀寫。協(xié)處理器中使用一個(gè)雙端口 RAM和一個(gè)單端口 RAM。雙端口 RAM用于協(xié)處理器與外部交換數(shù)據(jù)以及緩存運(yùn)算中間結(jié)果,單端口 RAM用于緩存運(yùn)算 過程中的部分中間結(jié)果以及最終結(jié)果。這種結(jié)構(gòu)的好處是既可以避免大量寄存器堆
砌造成的面積過大,也可以避免用兩塊雙口 RAM所造成的面積浪費(fèi),同時(shí)還可以提 高后端的布線利用率。另外使用兩個(gè)RAM比單獨(dú)使用一個(gè)RAM速度上有一定的提高。 對RAM地址空間的讀寫控制可以在運(yùn)算過程中并行實(shí)現(xiàn),并不會(huì)增加額外的時(shí)間開銷。
2>控制模塊,主要包括接口控制、對RAM的讀寫控制、對專用寄存器的讀寫控制、握
手信號(hào)的控制和算法模塊的所有開關(guān)控制。 3>算法模塊,包括模乘運(yùn)算(最高支持2048bit)、模加運(yùn)算(最高支持256bit)、模
減運(yùn)算(最高支持256bit)、取模運(yùn)算(支持2048bit對1024bit取模和1024bit對
512bit取模)。
在不同的應(yīng)用中,資源的提供也不盡相同,本發(fā)明給出地址線只有1根的情況下方便靈 活實(shí)現(xiàn)公鑰密碼基本運(yùn)算。
一位地址線,在運(yùn)算過程中標(biāo)示兩個(gè)地址命令寄存器和數(shù)據(jù)寄存器。這樣通過內(nèi)部命 令或者地址譯碼,進(jìn)行相關(guān)操作或者將數(shù)據(jù)送到相應(yīng)的RAM空間。在實(shí)現(xiàn)運(yùn)算需要完整的指 令集,包括七類強(qiáng)制終止并復(fù)位指令、寫參數(shù)指令、寫數(shù)據(jù)指令、寫命令指令、讀參數(shù)指
令、讀數(shù)據(jù)指令和讀命令指令。為保證協(xié)處理器的正常工作,操作流程包括 1>輸入寫參數(shù)指令(地址線置0);
2〉輸入?yún)?shù)(地址線置l);
3〉輸入寫數(shù)據(jù)指令(地址線置0);
4>輸入數(shù)據(jù)(地址線置1);
5〉輸入運(yùn)算指令(地址線置0);
6〉等待運(yùn)算結(jié)束,輸出結(jié)果數(shù)據(jù)(地址線置l)。
在操作流程中需注意
*若整個(gè)公鑰運(yùn)算中協(xié)處理器的下一次操作流程中所使用輸入?yún)?shù)與剛結(jié)束的這
次運(yùn)算相同,可以不用重復(fù)輸入(即1〉和2〉可省略)。
參若整個(gè)公鑰運(yùn)算中協(xié)處理器的下一次操作流程中所使用數(shù)據(jù)是剛結(jié)束的這次運(yùn) 算的結(jié)果數(shù)據(jù),那么剛結(jié)束的運(yùn)算結(jié)果數(shù)據(jù)可以不用輸出而直接開始下一次操作
流程(7〉可省略)。但需要清楚了解運(yùn)算結(jié)果數(shù)據(jù)在RAM中的存放地址。 本發(fā)明具有以下優(yōu)點(diǎn)-1〉本發(fā)明使用雙核,即兩個(gè)運(yùn)算模塊,既可以同時(shí)進(jìn)行兩個(gè)相同的運(yùn)算,也可以同時(shí)進(jìn) 行兩個(gè)不同的運(yùn)算,便于進(jìn)行多線程操作,從而大大提高運(yùn)算效率。
2>本發(fā)明使用RAM模塊存儲(chǔ)算法運(yùn)算中的大數(shù),這樣不僅節(jié)約了面積資源,還提高后端 版圖布線利用率。雖然增加RAM接口控制部分,但是由于算法本身特性,對RAM的讀寫 可以在運(yùn)算期間并行實(shí)現(xiàn),不會(huì)增加時(shí)間上的開銷。
3〉本發(fā)明可支持在地址線資源有限的情況下靈活方便地使用指令實(shí)現(xiàn)數(shù)據(jù)輸入輸出,運(yùn) 算控制以及測試。
4>本發(fā)明可兼容實(shí)現(xiàn)ECC和RSA兩種通用公鑰密碼體制的基本運(yùn)算,能滿足不同系統(tǒng)的要 求,可以通過軟件控制來實(shí)現(xiàn)不同協(xié)議的公鑰密碼運(yùn)算。
圖1為協(xié)處理器的整體結(jié)構(gòu)示意圖; 圖2為運(yùn)算模塊的結(jié)構(gòu)示意圖; 圖3使用協(xié)處理器的操作流程圖。
具體實(shí)施例方式
本發(fā)明的具體實(shí)施基本和說明書中所闡述的結(jié)構(gòu)和原理一致,以下結(jié)合附圖,具體說明 本發(fā)明。
本發(fā)明公開了一種公鑰算法協(xié)處理器的硬件實(shí)現(xiàn)方法,能夠很好的解決由于公鑰密碼運(yùn) 算中大數(shù)位數(shù)過長造成存儲(chǔ)量過大問題。實(shí)現(xiàn)該功能的部件是兩個(gè)完全相同的運(yùn)算模塊和接 口控制模塊,每個(gè)運(yùn)算模塊包括RAM模塊、控制模塊和算法模塊。
請參閱圖l,其為本發(fā)明硬件協(xié)處理器的整體結(jié)構(gòu)示意圖,根據(jù)本示意圖,本硬件部件由
運(yùn)算模塊l、運(yùn)算模塊2和接口及控制模塊部分構(gòu)成。
其中,所述接口及控制模塊,是把兩個(gè)運(yùn)算模塊的接口合并為一個(gè)10,根據(jù)指令來選擇 是操作單個(gè)運(yùn)算模塊,還是兩個(gè)運(yùn)算模塊同時(shí)操作。注意,除非輸入數(shù)據(jù)相同,兩個(gè)運(yùn)算模 塊的數(shù)據(jù)不能同時(shí)輸入。
運(yùn)算模塊,請參閱圖2,其為運(yùn)算模塊的結(jié)構(gòu)示意圖。
圖2中所述RAM模塊,包括一個(gè)雙端口 RAM和一個(gè)單口 RAM,圖中單口 RAM是在運(yùn)算期間
算法模塊存儲(chǔ)中間數(shù)據(jù),圖中雙口 RAM是存儲(chǔ)協(xié)處理器輸入輸出數(shù)據(jù)以及部分中間結(jié)果。 圖2中所述控制模塊,包括對2個(gè)RAM的讀寫控制、對專用寄存器的讀寫控制、握手信
號(hào)的控制和算法模塊的所有開關(guān)控制。在結(jié)構(gòu)示意圖中沒有標(biāo)識(shí)出專用寄存器,大概有模長
N、模乘參數(shù)MC等。
圖2中所述IF,指運(yùn)算模塊的一些接口轉(zhuǎn)換。
請參閱圖3,該圖描述了使用上述說明的硬件部件,操作協(xié)處理器的流程,具體步驟如
下
1>用戶發(fā)送置數(shù)指令,此時(shí)地址線addFO。此指令中相關(guān)位應(yīng)包括要置的數(shù)據(jù)是送
入專用寄存器,還是送入RAM中,如果是送入RAM,還需要標(biāo)明在RAM中的位置,
RAM中只用來存放大數(shù); 2〉用戶輸入數(shù)據(jù),此時(shí)地址線addr-l。數(shù)據(jù)包括運(yùn)算的操作數(shù)和參數(shù),以模乘運(yùn)算
X*Y(mod M)為例,操作數(shù)X和Y,參數(shù)有模數(shù)M、模長N和運(yùn)算需要數(shù)據(jù)MC。其
他運(yùn)算根據(jù)算法類推; 3>用戶發(fā)送運(yùn)算指令,此時(shí)地址線addr-0。運(yùn)算類型有模乘、模加、模減和取模運(yùn)
算。指令中應(yīng)該表明兩個(gè)運(yùn)算模塊各自的操作。注意,在發(fā)送運(yùn)算指令之前,運(yùn)
算所需要的操作數(shù)和參數(shù)必須已經(jīng)輸入; 4>協(xié)處理器進(jìn)行運(yùn)算;
5>判斷運(yùn)算是否結(jié)束, 一般情況下應(yīng)該有一個(gè)握手信號(hào)表明運(yùn)算是否結(jié)束,這個(gè)信
號(hào)既可以作為中斷也可以作為查詢。 6〉用戶讀取結(jié)果數(shù)據(jù)。 在整個(gè)流程中,根據(jù)協(xié)議決定運(yùn)算的順序,如果相鄰兩次運(yùn)算有相同的操作數(shù)或參數(shù), 可以不重復(fù)輸入;如果下一次運(yùn)算的操作數(shù)是此次運(yùn)算的結(jié)果數(shù)據(jù),用戶也可以不讀出結(jié)果 數(shù)據(jù),在內(nèi)部直接運(yùn)算即可。
權(quán)利要求
1.一種公鑰密碼算法協(xié)處理器的實(shí)現(xiàn)方法,其硬件是由兩個(gè)相同的運(yùn)算模塊組成,每個(gè)運(yùn)算模塊包括RAM模塊、算法模塊和控制模塊,其特征在于協(xié)處理器包括雙核、多RAM模塊、控制模塊和一位地址線,使用該協(xié)處理器需要完整的指令集,并按一定的操作流程執(zhí)行。
2. 如權(quán)利要求1所述多RAM模塊,其特征在于協(xié)處理器中使用一個(gè)雙端口 RAM和一 個(gè)單端口 RAM。
3. 如權(quán)利要求1所述雙核,其特征是指協(xié)處理器中包含兩個(gè)完全相同的運(yùn)算模塊,每 個(gè)運(yùn)算模塊都有各自的RAM模塊、算法模塊和控制模塊。
4. 如權(quán)利要求1所述控制模塊,其特征是主要包括接口控制、對RAM的讀寫控制、 對專用寄存器的讀寫控制、握手信號(hào)的控制和算法模塊的所有開關(guān)控制。
5. 如權(quán)利要求1所述一位地址線,其特征是在運(yùn)算過程中標(biāo)示兩個(gè)地址命令寄存器 和數(shù)據(jù)寄存器。
6. 如權(quán)利要求1所述為保證協(xié)處理器正常工作的操作流程,其步驟如下-1>輸入寫參數(shù)指令(地址線置0);2>輸入?yún)?shù)(地址線置l);3>輸入寫數(shù)據(jù)指令(地址線置0);4>輸入數(shù)據(jù)(地址線置1);5>輸入運(yùn)算指令(地址線置0);6>等待運(yùn)算結(jié)束,輸出結(jié)果數(shù)據(jù)(地址線置l)。
7. 如權(quán)利要求1所述算法模塊中包括模乘運(yùn)算、模加運(yùn)算、模減運(yùn)算、取模運(yùn)算。
全文摘要
本發(fā)明提供一種雙核公鑰密碼算法協(xié)處理器的實(shí)現(xiàn)方法,能夠很好的解決由于運(yùn)算中大數(shù)寬度過長導(dǎo)致的存儲(chǔ)量過大問題。通過本發(fā)明描述的方式,只需增加必要的控制部分,并且不增加額外時(shí)間開銷,就能達(dá)到在一定程度上節(jié)約面積資源,并提高后端版圖布線利用率。同時(shí)雙核運(yùn)算模塊的使用,大大提高了公鑰密碼運(yùn)算效率。一位地址線的設(shè)計(jì),不僅可適應(yīng)在資源有限的情況下使用協(xié)處理器,還便于簡化整個(gè)公鑰密碼算法流程的運(yùn)算。在流程中協(xié)處理器的結(jié)果數(shù)據(jù)可以不從接口輸出,只需根據(jù)算法需要直接參與下一個(gè)運(yùn)算。實(shí)現(xiàn)該功能的部件是兩個(gè)完全相同的運(yùn)算模塊和接口控制模塊,每個(gè)運(yùn)算模塊包括RAM模塊、控制模塊和算法模塊。
文檔編號(hào)H04L9/30GK101170406SQ20061011409
公開日2008年4月30日 申請日期2006年10月27日 優(yōu)先權(quán)日2006年10月27日
發(fā)明者余秋芳, 關(guān)紅波, 勇 田, 胡曉波, 陳學(xué)振, 陳立志 申請人:北京中電華大電子設(shè)計(jì)有限責(zé)任公司