一種高效的公鑰加密引擎的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及公鑰運(yùn)算的相關(guān)領(lǐng)域,特別涉及一種高效的公鑰加密引擎,采用新型 的微指令優(yōu)化,加載和運(yùn)算技術(shù),可實(shí)現(xiàn)所有已知的公鑰運(yùn)算。
【背景技術(shù)】
[0002] 隨著移動(dòng)支付等技術(shù)的大規(guī)模應(yīng)用,其面臨的信息安全威脅也越來(lái)越大,應(yīng)用環(huán) 境的日益復(fù)雜和黑客技術(shù)的提高,使得公鑰算法在各種安全相關(guān)的領(lǐng)域中的應(yīng)用越來(lái)越重 要。為了使公鑰協(xié)處理器的性能能夠滿足各種應(yīng)用的要求,目前多采用微指令技術(shù)。
[0003]典型的采用微指令技術(shù)的公鑰協(xié)處理器的系統(tǒng)構(gòu)架如圖1所示。應(yīng)用這類公鑰協(xié) 處理器的系統(tǒng)一般包含:非易失存儲(chǔ)器ROM/FLASH,CPU,公鑰IP控制模塊和公鑰IP。其中 公鑰IP控制模塊可選,其功能完全可由軟件完成。完成某項(xiàng)公鑰運(yùn)算的微指令串存儲(chǔ)在非 易失存儲(chǔ)器中,當(dāng)要進(jìn)行這種公鑰運(yùn)算時(shí),因?yàn)楣€運(yùn)算通常比較復(fù)雜,其微指令串較長(zhǎng), 且公鑰IP中的指令序列(即,存放公鑰IP當(dāng)前可以連續(xù)執(zhí)行的最長(zhǎng)的微指令串),遠(yuǎn)小于完 成公鑰運(yùn)算的微指令串的長(zhǎng)度,因此CPU或公鑰IP控制模塊要分段將完成公鑰運(yùn)算的微指 令加載到公鑰IP的指令序列中以完成整個(gè)公鑰運(yùn)算。
[0004] 這種方式有以下缺點(diǎn): 1.若沒有公鑰IP控制模塊,則由CPU直接將微指令串分段加載到公鑰IP的指令序列 中。這種方式下CPU需要實(shí)時(shí)監(jiān)控公鑰IP的指令序列中的微指令是否執(zhí)行完以加載新的 微指令段,因此公鑰IP每執(zhí)行完指令序列中的微指令段要等待CPU將新的微指令段填入指 令序列才能繼續(xù)執(zhí)行,對(duì)于像ECC點(diǎn)乘運(yùn)算來(lái)說,要執(zhí)行幾百次相同的點(diǎn)加或倍點(diǎn)運(yùn)算,這 就需要反復(fù)加載同樣的微指令串,嚴(yán)重影響了微指令的執(zhí)行效率,而且CPU在公鑰IP運(yùn)行 時(shí)不能執(zhí)行其他指令。
[0005] 2.若采用公鑰IP控制模塊,則由CPU將微指令串加載到公鑰IP控制模塊中,再 由公鑰IP控制模塊分段加載微指令段到指令序列中執(zhí)行。這種方式雖然在公鑰IP運(yùn)行時(shí) 可以將CPU部分解放出來(lái),而且減少了一些公鑰IP在等待指令序列重新加載的時(shí)間,但是 不能根本緩解這種問題,在多次執(zhí)行較長(zhǎng)的微指令串時(shí)微指令執(zhí)行效率的問題依然嚴(yán)重, 而影響整個(gè)公鑰運(yùn)算的速度。而且公鑰運(yùn)算的微指令一般很長(zhǎng),因此公鑰IP控制模塊中會(huì) 有很大的內(nèi)存用來(lái)暫存微指令串,增大了面積和功耗。
[0006] 3. -些公鑰協(xié)處理器為了緩解1和2中的問題,通過將公鑰高層次的運(yùn)算(例如 ECC點(diǎn)乘運(yùn)算),也編成一條微指令,這種方式看似解決了微指令加載運(yùn)行效率的問題,但是 同時(shí)帶來(lái)了其他嚴(yán)重的問題。首先像ECC點(diǎn)乘運(yùn)算這種公鑰算法的核心運(yùn)算有很多種算 法,其速度,安全性和應(yīng)用環(huán)境都不同,將點(diǎn)乘運(yùn)算編成一條微指令這意味著只能選擇某一 特定的算法用硬件電路來(lái)實(shí)現(xiàn)點(diǎn)乘運(yùn)算,這不但限制了公鑰IP的應(yīng)用領(lǐng)域,而且增大了硬 件電路設(shè)計(jì)的復(fù)雜性和面積功耗;其次在公鑰協(xié)議中仍然需要底層有限域運(yùn)算,將公鑰高 層運(yùn)算編成微指令不會(huì)減少對(duì)底層運(yùn)算微指令的需求,因此導(dǎo)致微指令種類增多,單條微 指令編碼變長(zhǎng),公鑰協(xié)處理器解析微指令變慢。
[0007] 4.集成這種公鑰協(xié)處理器非常復(fù)雜,需添加額外的硬件接口電路或復(fù)雜的軟件 處理來(lái)完成。
[0008] 因此,亟需能夠提高微指令運(yùn)行效率和速度的技術(shù),解決上述公鑰協(xié)處理器不能 兼顧性能和靈活性的問題。
【發(fā)明內(nèi)容】
[0009] 本發(fā)明提供一種高效的公鑰加密引擎,其采用微指令主動(dòng)加載技術(shù)和微指令優(yōu)化 設(shè)計(jì)的公鑰協(xié)處理器,目標(biāo)在于使采用微指令串實(shí)現(xiàn)的公鑰運(yùn)算的速度接近或達(dá)到采用硬 件電路直接實(shí)現(xiàn)的公鑰運(yùn)算,且可以采用微指令靈活實(shí)現(xiàn)各種公鑰運(yùn)算算法。
[0010] 為了達(dá)到上述目的,本發(fā)明的一個(gè)技術(shù)方案是提供一種公鑰加密引擎,其包含: 隨機(jī)存取存儲(chǔ)器,其在公鑰運(yùn)算的過程中存放微指令串和中間數(shù)據(jù); 公鑰協(xié)處理器,通過設(shè)置的I/O控制模塊主動(dòng)從所述隨機(jī)存取存儲(chǔ)器存放的微指令串 中,將與公鑰運(yùn)算進(jìn)程相匹配的微指令串分段,加載到公鑰協(xié)處理器設(shè)置的指令序列中運(yùn) 行。
[0011] 優(yōu)選地,所述公鑰加密引擎還包含CPU,其將與公鑰運(yùn)算進(jìn)程相匹配的微指令串分 段在隨機(jī)存取存儲(chǔ)器中的存放地址發(fā)送給公鑰協(xié)處理器,以便所述公鑰協(xié)處理器根據(jù)該存 放地址從隨機(jī)存取存儲(chǔ)器獲得相應(yīng)的微指令串分段。
[0012] 優(yōu)選地,所述公鑰加密引擎還包含最初用來(lái)存放微指令串的非易失性存儲(chǔ)器;所 述CPU在進(jìn)行公鑰運(yùn)算之前,將非易失性存儲(chǔ)器中存放的與公鑰運(yùn)算相應(yīng)的微指令串,通 過公鑰協(xié)處理器的I/O控制模塊加載到隨機(jī)存取存儲(chǔ)器中。
[0013] 優(yōu)選地,所述公鑰協(xié)處理器還設(shè)置有微指令解析模塊,將CPU向其發(fā)送的與公鑰 運(yùn)算進(jìn)程相匹配的微指令串分段在隨機(jī)存取存儲(chǔ)器中的存放地址,作為使所述公鑰協(xié)處理 器啟動(dòng)公鑰運(yùn)算中相應(yīng)微指令運(yùn)算的啟動(dòng)地址。
[0014] 優(yōu)選地,所述微指令串,是對(duì)應(yīng)有限域上加、減、取模、乘法運(yùn)算中任意一項(xiàng)的微指 令或這些微指令的任意組合。
[0015] 優(yōu)選地,設(shè)有表示公鑰運(yùn)算結(jié)束的結(jié)束微指令;基于微指令解析模塊接收到的結(jié) 束微指令,使所述公鑰協(xié)處理器停止從隨機(jī)存取存儲(chǔ)器獲取微指令串分段。
[0016] 本發(fā)明的另一個(gè)技術(shù)方案是提供一種公鑰加密引擎,其包含: 非易失性存儲(chǔ)器,最初用來(lái)存放公鑰運(yùn)算相關(guān)的微指令串; 隨機(jī)存取存儲(chǔ)器,在公鑰運(yùn)算的過程中存放所述微指令串和中間數(shù)據(jù); 公鑰協(xié)處理器,主動(dòng)從所述隨機(jī)存取存儲(chǔ)器存放的微指令串中,將與公鑰運(yùn)算進(jìn)程相 匹配的微指令串分段,加載到公鑰協(xié)處理器設(shè)置的指令序列中并執(zhí)行相應(yīng)的微指令運(yùn)算; CPU,其在進(jìn)行公鑰運(yùn)算之前將非易失性存儲(chǔ)器中存放的微指令串通過公鑰協(xié)處理器 加載到隨機(jī)存取存儲(chǔ)器中;所述CPU還將與公鑰運(yùn)算進(jìn)程相匹配的微指令串分段在隨機(jī)存 取存儲(chǔ)器中的存放地址發(fā)送給公鑰協(xié)處理器。
[0017] 本發(fā)明的又一個(gè)技術(shù)方案是提供一種公鑰加密引擎的公鑰運(yùn)算方法,在啟動(dòng)公鑰 運(yùn)算之前,CPU將非易失性存儲(chǔ)存器中存放微指令串通過公鑰協(xié)處理器加載到隨機(jī)存取存 儲(chǔ)器中; (PU在啟動(dòng)公鑰協(xié)處理器進(jìn)行公鑰運(yùn)算后,公鑰協(xié)處理器將其主動(dòng)從所述隨機(jī)存取存 儲(chǔ)器存放的微指令串中獲取的微指令串分段,加載到指令序列中運(yùn)行; 當(dāng)指令序列中的微指令串分段即將執(zhí)行完成而公鑰運(yùn)算尚未結(jié)束時(shí),所述公鑰協(xié)處理 器將其主動(dòng)從所述隨機(jī)存取存儲(chǔ)器存放的微指令串中獲得的與公鑰運(yùn)算進(jìn)程相匹配的下 一個(gè)微指令串分段,加載到指令序列中運(yùn)行; 直到公鑰運(yùn)算結(jié)束時(shí),所述公鑰協(xié)處理器不再?gòu)碾S機(jī)存取存儲(chǔ)器獲取微指令分段;將 隨機(jī)存取存儲(chǔ)器中存放公鑰運(yùn)算相關(guān)微指令串及中間數(shù)據(jù)的內(nèi)存空間釋放。
[0018] 優(yōu)選地,所述CPU將公鑰運(yùn)算相關(guān)的微指令串寫入隨機(jī)存取存儲(chǔ)器中指定的存放 地址,并將與公鑰運(yùn)算進(jìn)程相匹配的微指令串分段在隨機(jī)存取存儲(chǔ)器中的存放地址發(fā)送給 公鑰協(xié)處理器,以便所述公鑰協(xié)處理器根據(jù)該存放地址從隨機(jī)存取存儲(chǔ)器獲得相應(yīng)的微指 令串分段來(lái)執(zhí)行相應(yīng)的微指令運(yùn)算。
[0019] 優(yōu)選地,所述公鑰協(xié)處理器接收到表示公鑰運(yùn)算結(jié)束的結(jié)束微指令后,不再?gòu)碾S 機(jī)存取存儲(chǔ)器獲取微指令串分段。
[0020] 本發(fā)明提供一款高效的公鑰加密引擎,采用新型的微指令優(yōu)化,加載和運(yùn)算技術(shù), 形成了高效靈活的微指令式的公鑰協(xié)處理器,解決了性能和靈活性之間的矛盾,并實(shí)現(xiàn) RSA,ECC等所有已知的公鑰算法的各種運(yùn)算及公鑰協(xié)議。與其他采用微指令技術(shù)的公鑰協(xié) 處理器相比,本發(fā)明具有微指令短,微指令加載效率高等特點(diǎn),性能和靈活性遠(yuǎn)好于目前已 知的同類協(xié)處理器。
[0021] 相比現(xiàn)有技術(shù),本發(fā)明具有以下優(yōu)點(diǎn): 1. 將所有跟公鑰運(yùn)算的模塊集成到公鑰協(xié)處理器中,該公鑰協(xié)處理器可應(yīng)用在包括 各種類型的CPU,非易失存儲(chǔ)器和RAM的公鑰加密引擎中,便于把公鑰協(xié)處理器移植和集成 到新的系統(tǒng)中,通用性更好; 2. 將微指令和公鑰運(yùn)算的中間數(shù)據(jù)放在系統(tǒng)的RAM中,降低了公鑰協(xié)處理器和整個(gè) 系統(tǒng)的面積,公鑰運(yùn)算結(jié)束后占用的RAM可以釋放給系統(tǒng)的其他應(yīng)用; 3. 系統(tǒng)只需在運(yùn)算開始前加載需要的微指令串到RAM中,之后CPU只需控制微指令串 運(yùn)算完成后將新的要執(zhí)行的微指令串在RAM中的地址告訴公鑰協(xié)處理器,無(wú)需其他操作, 在微指令串被執(zhí)行時(shí)CPU可以進(jìn)行其他操作;