亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

Ecc協(xié)處理器的制作方法

文檔序號(hào):6442065閱讀:383來(lái)源:國(guó)知局
專利名稱:Ecc協(xié)處理器的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及公鑰密碼算法的實(shí)現(xiàn)技術(shù),更具體而言涉及大整數(shù)模乘、模加/模減、 模冪以及素?cái)?shù)域上橢圓曲線的點(diǎn)加/點(diǎn)倍運(yùn)算的硬件實(shí)現(xiàn)。
背景技術(shù)
當(dāng)前主流的公鑰密碼算法有RSA和橢圓曲線密碼(ECC)兩種,RSA是基于大整數(shù)運(yùn)算實(shí)現(xiàn)的,ECC—般基于兩種有限域二元擴(kuò)域和素?cái)?shù)域(Fp),其中Fp上ECC的實(shí)現(xiàn)也基于大整數(shù)運(yùn)算,這使得RSA和Fp上的ECC很方便用同一個(gè)協(xié)處理器實(shí)現(xiàn),因此Fp上的ECC 協(xié)處理器大都同時(shí)支持ECC和RSA算法。ECC協(xié)處理器一般為一個(gè)集成電路(IC)模塊,最典型的型態(tài)是IP核。為了滿足應(yīng)用對(duì)于ECC性能的要求,一般采用軟硬件協(xié)同的方式實(shí)現(xiàn)ECC算法將一些耗時(shí)的關(guān)鍵運(yùn)算用ECC協(xié)處理器實(shí)現(xiàn),其余部分用外部控制器的軟件實(shí)現(xiàn)。實(shí)現(xiàn)ECC 算法涉及到的運(yùn)算包括大整數(shù)運(yùn)算(模乘、模加/模減、模逆)和有限域上的橢圓曲線點(diǎn)運(yùn)算(點(diǎn)加、點(diǎn)倍、點(diǎn)乘),而ECC協(xié)處理器選擇實(shí)現(xiàn)哪些運(yùn)算將導(dǎo)致其功能定義和實(shí)現(xiàn)結(jié)構(gòu)的差異。根據(jù)現(xiàn)有的ECC協(xié)處理器的功能定義可分為兩大類1、不實(shí)現(xiàn)橢圓曲線點(diǎn)運(yùn)算;
2、實(shí)現(xiàn)橢圓曲線點(diǎn)運(yùn)算。不實(shí)現(xiàn)點(diǎn)運(yùn)算的ECC協(xié)處理器僅實(shí)現(xiàn)大整數(shù)運(yùn)算,需要外部控制器用軟件實(shí)現(xiàn)橢圓曲線點(diǎn)運(yùn)算,再實(shí)現(xiàn)完整的ECC算法,這導(dǎo)致ECC算法的實(shí)現(xiàn)效率不高。但是這種ECC協(xié)處理器的優(yōu)點(diǎn)在于外部控制器中ECC實(shí)現(xiàn)軟件的靈活性很大。對(duì)于實(shí)現(xiàn)點(diǎn)運(yùn)算的ECC協(xié)處理器,ECC算法中用外部控制器軟件實(shí)現(xiàn)的部分較少, 因此ECC算法的實(shí)現(xiàn)效率較高。這類ECC協(xié)處理器對(duì)外提供的點(diǎn)運(yùn)算功能(點(diǎn)加、點(diǎn)倍、點(diǎn)乘)、點(diǎn)的坐標(biāo)形式(仿射坐標(biāo)、各種投影坐標(biāo)),都會(huì)影響外部控制器中ECC實(shí)現(xiàn)軟件的靈活性?,F(xiàn)有實(shí)現(xiàn)點(diǎn)運(yùn)算的ECC協(xié)處理器一般都實(shí)現(xiàn)點(diǎn)乘運(yùn)算,對(duì)外提供點(diǎn)加、點(diǎn)倍、點(diǎn)乘功能,雖然在ECC協(xié)處理器的內(nèi)部運(yùn)算過(guò)程中,點(diǎn)的坐標(biāo)會(huì)采用投影坐標(biāo)或混合坐標(biāo),但在所有點(diǎn)運(yùn)算的對(duì)外接口中,橢圓曲線點(diǎn)的坐標(biāo)選擇為仿射坐標(biāo),這會(huì)限制外部控制器中用軟件實(shí)現(xiàn)點(diǎn)乘及整個(gè)ECC算法的靈活性。因此,需要設(shè)計(jì)一款運(yùn)算效率高、電路面積小,且能支持外部控制器靈活實(shí)現(xiàn)多種點(diǎn)乘運(yùn)算(包括各種特殊點(diǎn)乘)的ECC協(xié)處理器,同時(shí)支持RSA算法。

發(fā)明內(nèi)容
本發(fā)明從ECC協(xié)處理器的功能定義、實(shí)現(xiàn)算法設(shè)計(jì)、電路結(jié)構(gòu)設(shè)計(jì)三方面綜合考慮,提出一種Fp上的ECC協(xié)處理器,具有運(yùn)算效率高、電路面積小、實(shí)用性強(qiáng)(支持外部控
4制器用軟件靈活實(shí)現(xiàn)多種點(diǎn)乘算法)的優(yōu)點(diǎn),本協(xié)處理器還支持RSA算法。根據(jù)本發(fā)明的一個(gè)實(shí)施例,提供一種ECC協(xié)處理器,對(duì)外提供橢圓曲線點(diǎn)加/點(diǎn)倍運(yùn)算功能,點(diǎn)加和點(diǎn)倍運(yùn)算的對(duì)外接口中橢圓曲線點(diǎn)的坐標(biāo)采用投影坐標(biāo)或混合坐標(biāo)以支持外部控制器靈活實(shí)現(xiàn)多種點(diǎn)乘運(yùn)算。另外,上述ECC協(xié)處理器還對(duì)外提供大整數(shù)模乘、模加/模減和模冪運(yùn)算功能。在本發(fā)明中,所述投影坐標(biāo)是標(biāo)準(zhǔn)投影坐標(biāo)、雅可比(Jacobian)加重投影坐標(biāo) (簡(jiǎn)稱“雅可比坐標(biāo)”)、改進(jìn)的雅可比坐標(biāo)(Modified Jacobian)或裘德洛夫斯基-雅可比 (Chudnovsky-Jacobian)坐標(biāo)(簡(jiǎn)稱“裘德洛夫斯基坐標(biāo)”);所述混合坐標(biāo)是指對(duì)于需要輸入兩個(gè)點(diǎn)的運(yùn)算,其中一個(gè)輸入點(diǎn)采用投影坐標(biāo),另一個(gè)輸入點(diǎn)采用不同的坐標(biāo)、即仿射坐標(biāo)或其它的投影坐標(biāo)。另外,上述ECC協(xié)處理器外部需要連接外部控制器,內(nèi)部包含復(fù)雜運(yùn)算控制單元和模運(yùn)算單元。另外,上述復(fù)雜運(yùn)算控制單元可以包括模冪控制單元、點(diǎn)加控制單元和點(diǎn)倍控制單元;模運(yùn)算單元包括大整數(shù)運(yùn)算控制單元和基本運(yùn)算單元,其中大整數(shù)運(yùn)算控制單元包括模加/模減控制單元和模乘控制單元,基本運(yùn)算單元包括乘法器和累加器,其中,復(fù)雜運(yùn)算控制單元基于相應(yīng)的運(yùn)算命令被啟動(dòng),產(chǎn)生運(yùn)算控制信號(hào)序列給模運(yùn)算單元以完成相應(yīng)的運(yùn)算;模運(yùn)算單元基于相應(yīng)的運(yùn)算命令或從復(fù)雜運(yùn)算控制單元接收的運(yùn)算控制信號(hào)序列來(lái)完成相應(yīng)的運(yùn)算。另外,當(dāng)運(yùn)算命令為點(diǎn)加運(yùn)算命令時(shí),點(diǎn)加控制單元被啟動(dòng),產(chǎn)生點(diǎn)加運(yùn)算控制信號(hào)序列并提供給大整數(shù)運(yùn)算控制單元以完成點(diǎn)加運(yùn)算;當(dāng)運(yùn)算命令為點(diǎn)倍運(yùn)算命令時(shí),點(diǎn)倍控制單元被啟動(dòng),產(chǎn)生點(diǎn)倍運(yùn)算控制信號(hào)序列并提供給大整數(shù)運(yùn)算控制單元以完成點(diǎn)倍運(yùn)算;當(dāng)運(yùn)算命令為模冪運(yùn)算命令時(shí),模冪控制單元被啟動(dòng),產(chǎn)生模冪運(yùn)算控制信號(hào)序列并提供給模乘控制單元以完成模冪運(yùn)算。另外,模乘控制單元在當(dāng)運(yùn)算命令為模乘運(yùn)算命令或者當(dāng)從復(fù)雜運(yùn)算控制單元接收到點(diǎn)加、點(diǎn)倍或模冪運(yùn)算控制信號(hào)序列時(shí)被啟動(dòng),產(chǎn)生模乘運(yùn)算控制信號(hào)序列并提供給基本運(yùn)算單元以完成模乘運(yùn)算;模加/模減控制單元在當(dāng)運(yùn)算命令為模加運(yùn)算命令或模減運(yùn)算命令或者當(dāng)從復(fù)雜運(yùn)算控制單元接收到點(diǎn)加或點(diǎn)倍運(yùn)算控制信號(hào)序列時(shí)被啟動(dòng),產(chǎn)生模加/模減運(yùn)算控制信號(hào)序列并提供給累加器以完成模加/模減運(yùn)算。另外,乘法器響應(yīng)模乘運(yùn)算控制信號(hào)序列中的乘法信號(hào)來(lái)執(zhí)行乘法運(yùn)算并輸出乘法運(yùn)算結(jié)果;累加器響應(yīng)模乘運(yùn)算控制信號(hào)序列和模加/模減運(yùn)算控制信號(hào)中的累加信號(hào)來(lái)執(zhí)行累加運(yùn)算并輸出累加運(yùn)算結(jié)果。本發(fā)明的ECC協(xié)處理器還可以包括接口總線,命令/狀態(tài)寄存器,譯碼控制單元, 數(shù)據(jù)寄存器,雙端口 SRAM。外部控制器經(jīng)接口總線將運(yùn)算命令寫入命令/狀態(tài)寄存器,或從命令/狀態(tài)寄存器中讀出狀態(tài)字。譯碼控制單元對(duì)命令/狀態(tài)寄存器中接收到的運(yùn)算命令進(jìn)行譯碼,產(chǎn)生相應(yīng)的運(yùn)算控制信號(hào),啟動(dòng)復(fù)雜運(yùn)算控制單元或模運(yùn)算單元完成相應(yīng)的運(yùn)算,運(yùn)算結(jié)束后通過(guò)設(shè)置命令/狀態(tài)寄存器中的狀態(tài)字通知外部控制器運(yùn)算已經(jīng)結(jié)束。數(shù)據(jù)寄存器可以包括蒙哥馬利常數(shù)寄存器MC,存儲(chǔ)模乘運(yùn)算所需的蒙哥馬利常數(shù);模字長(zhǎng)寄存器NLen,存儲(chǔ)模乘、模加/模減運(yùn)算的模的字長(zhǎng),供模乘控制單元和模加/模減控制單元控制基本運(yùn)算(乘法、累加)的循環(huán)次數(shù);冪指數(shù)寄存器EReg,存儲(chǔ)模冪運(yùn)算所需的冪指數(shù)。雙端口SRAM接收并存儲(chǔ)經(jīng)從外部輸入的除蒙哥馬利常數(shù)、模的字長(zhǎng)和冪指數(shù)之外所有運(yùn)算輸入數(shù)據(jù),接收并存儲(chǔ)來(lái)自基本運(yùn)算單元的中間數(shù)據(jù)和結(jié)果數(shù)據(jù),向基本運(yùn)算單元提供運(yùn)算輸入數(shù)據(jù),存儲(chǔ)的各種運(yùn)算的結(jié)果數(shù)據(jù)可供外部控制器讀出。另外,上述的冪指數(shù)寄存器EReg為一個(gè)字長(zhǎng),冪指數(shù)被按字長(zhǎng)分段傳送到EReg, 外部控制器通過(guò)循環(huán)設(shè)置EReg來(lái)完成一次完整的模冪運(yùn)算。另外,上述的模冪運(yùn)算支持基于費(fèi)馬小定理的模逆運(yùn)算。


圖I是根據(jù)外部控制器與本發(fā)明的ECC協(xié)處理器的連接關(guān)系示意框圖,外部控制器通過(guò)調(diào)用ECC協(xié)處理器的功能實(shí)現(xiàn)完整的ECC算法。圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例的圖I所示的ECC協(xié)處理器中的主要運(yùn)算單元結(jié)構(gòu)示意框圖。圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例的圖2所示的ECC協(xié)處理器的詳細(xì)結(jié)構(gòu)示意圖。圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例的外部控制器調(diào)用本發(fā)明的ECC協(xié)處理器完成一次運(yùn)算的流程圖。
具體實(shí)施例方式在下文中將結(jié)合附圖對(duì)本發(fā)明的示范性實(shí)施例進(jìn)行描述。為了清楚和簡(jiǎn)明起見, 在說(shuō)明書中并未描述實(shí)際實(shí)施方式的所有特征。然而,應(yīng)該了解,在開發(fā)任何這種實(shí)際實(shí)施例的過(guò)程中必須做出很多特定于實(shí)施方式的決定,以便實(shí)現(xiàn)開發(fā)人員的具體目標(biāo),并且這些決定可能會(huì)隨著實(shí)施方式的不同而有所改變。此外,還應(yīng)該了解,雖然開發(fā)工作有可能是非常復(fù)雜和費(fèi)時(shí)的,但對(duì)得益于本公開內(nèi)容的本領(lǐng)域技術(shù)人員來(lái)說(shuō),這種開發(fā)工作僅僅是例行的任務(wù)。在此,還需要說(shuō)明的一點(diǎn)是,為了避免因不必要的細(xì)節(jié)而模糊了本發(fā)明,在附圖中僅僅示出了與根據(jù)本發(fā)明的方案密切相關(guān)的裝置結(jié)構(gòu),而省略了與本發(fā)明關(guān)系不大的其他細(xì)節(jié)。下面結(jié)合附圖來(lái)詳細(xì)描述本發(fā)明。圖I是根據(jù)本發(fā)明的實(shí)施例的實(shí)現(xiàn)ECC算法的外部控制器和ECC協(xié)處理器的連接關(guān)系圖。外部控制器通過(guò)調(diào)用ECC協(xié)處理器的功能實(shí)現(xiàn)完整的ECC算法。參見圖1,完整的 ECC實(shí)現(xiàn)方案包括ECC協(xié)處理器I和外部控制器2。ECC協(xié)處理器I提供包括點(diǎn)加、點(diǎn)倍運(yùn)算的運(yùn)算單元,ECC協(xié)處理器I的點(diǎn)加和點(diǎn)倍運(yùn)算的對(duì)外接口中橢圓曲線點(diǎn)的坐標(biāo)采用投影坐標(biāo)或混合坐標(biāo),投影坐標(biāo)是標(biāo)準(zhǔn)投影坐標(biāo)、雅可比坐標(biāo)、改進(jìn)的雅可比坐標(biāo)或裘德洛夫斯基坐標(biāo),混合坐標(biāo)是指對(duì)于需要輸入兩個(gè)點(diǎn)的運(yùn)算,其中一個(gè)輸入點(diǎn)采用某種投影坐標(biāo), 另一個(gè)輸入點(diǎn)采用不同的坐標(biāo),即仿射坐標(biāo)或其它的投影坐標(biāo)。點(diǎn)乘運(yùn)算由外部控制器2 基于ECC協(xié)處理器I的點(diǎn)加、點(diǎn)倍運(yùn)算來(lái)通過(guò)軟件來(lái)實(shí)現(xiàn)。根據(jù)本發(fā)明的實(shí)施例,ECC協(xié)處理器對(duì)外提供投影坐標(biāo)或混合坐標(biāo)的點(diǎn)加和點(diǎn)倍運(yùn)算,可以支持外部控制器靈活實(shí)現(xiàn)多種點(diǎn)乘運(yùn)算。根據(jù)本發(fā)明的一個(gè)實(shí)施例,外部控制器2與ECC協(xié)處理器I相耦接,基于運(yùn)算命令或程序命令來(lái)調(diào)用ECC協(xié)處理器I執(zhí)行相應(yīng)的運(yùn)算。下面參照?qǐng)D2來(lái)詳細(xì)描述圖I的ECC協(xié)處理器I的主要運(yùn)算單元結(jié)構(gòu)。圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例的ECC協(xié)處理器的主要運(yùn)算單元結(jié)構(gòu)框圖,包括復(fù)雜運(yùn)算控制單元 11和模運(yùn)算單元12,其中復(fù)雜運(yùn)算控制單元11通過(guò)對(duì)模運(yùn)算單元12進(jìn)行控制以執(zhí)行復(fù)雜運(yùn)算(點(diǎn)加、點(diǎn)倍和模冪)。根據(jù)本發(fā)明的一個(gè)實(shí)施例,復(fù)雜運(yùn)算控制單元11基于運(yùn)算命令產(chǎn)生復(fù)雜運(yùn)算控制信號(hào)序列即點(diǎn)加運(yùn)算控制信號(hào)序列、點(diǎn)倍運(yùn)算控制信號(hào)序列或模冪運(yùn)算控制信號(hào)序列并將其發(fā)送給模運(yùn)算單元12,模運(yùn)算單元12在相應(yīng)的運(yùn)算控制信號(hào)序列的控制下執(zhí)行完成相應(yīng)的復(fù)雜運(yùn)算。下面進(jìn)一步參照?qǐng)D3來(lái)詳細(xì)描述圖2的ECC協(xié)處理器I。圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例的ECC協(xié)處理器的更加詳細(xì)的結(jié)構(gòu)框圖。如圖3所示,具體地,圖2的復(fù)雜運(yùn)算控制單元11包括點(diǎn)加控制單元111、點(diǎn)倍控制單元112、模冪控制單元113,其中,點(diǎn)加控制單元111在運(yùn)算命令cmd為點(diǎn)加運(yùn)算命令時(shí),產(chǎn)生點(diǎn)加運(yùn)算控制信號(hào)序列,并將點(diǎn)加運(yùn)算控制信號(hào)序列提供給模運(yùn)算單元12以完成點(diǎn)加運(yùn)算;點(diǎn)倍控制單元112在運(yùn)算命令cmd為點(diǎn)倍運(yùn)算命令時(shí),產(chǎn)生點(diǎn)倍運(yùn)算控制信號(hào)序列,并將點(diǎn)倍運(yùn)算控制信號(hào)序列提供給模運(yùn)算單元12以完成點(diǎn)倍運(yùn)算;模冪控制單元113在運(yùn)算命令cmd為模冪運(yùn)算命令時(shí),產(chǎn)生模冪運(yùn)算控制信號(hào)序列,并將模冪運(yùn)算控制信號(hào)序列提供給模運(yùn)算單元12以執(zhí)行模冪運(yùn)算。如圖 3所示,模運(yùn)算單元12包括大整數(shù)運(yùn)算控制單元121和基本運(yùn)算單元122。大整數(shù)運(yùn)算控制單元121包括模乘控制單元1211,模乘控制單元1211在當(dāng)運(yùn)算命令cmd為模乘運(yùn)算命令或者從復(fù)雜運(yùn)算控制單元接收到點(diǎn)加、點(diǎn)倍或模冪運(yùn)算控制信號(hào)序列時(shí)被啟動(dòng),產(chǎn)生并輸出模乘控制信號(hào)序列給基本運(yùn)算單元122 ;和模加/模減控制單元1212,模加/模減控制單元1212在當(dāng)運(yùn)算命令cmd為模加/模減運(yùn)算命令或者從復(fù)雜運(yùn)算控制單元接收到點(diǎn)加或點(diǎn)倍運(yùn)算控制信號(hào)序列時(shí)被啟動(dòng),產(chǎn)生并輸出模加/模減控制信號(hào)序列給基本運(yùn)算單元 122。如圖3所示,基本運(yùn)算單元122包括乘法器1221和累加器1222。乘法器1221響應(yīng)于模乘控制信號(hào)序列中的乘法信號(hào)來(lái)執(zhí)行乘法運(yùn)算并輸出乘法運(yùn)算結(jié)果,累加器1222響應(yīng)于模乘控制信號(hào)或模加/模減控制信號(hào)中的累加信號(hào)來(lái)執(zhí)行累加運(yùn)算。此外,進(jìn)一步地,本發(fā)明的ECC協(xié)處理器I還可以包括接口總線,接口總線實(shí)現(xiàn)外部控制器2與ECC協(xié)處理器I的數(shù)據(jù)、命令cmd和狀態(tài)sta的讀寫訪問(wèn);命令/狀態(tài)寄存器 CSR,外部控制器2將運(yùn)算命令cmd寫入命令/狀態(tài)寄存器CSR,從命令/狀態(tài)寄存器CSR中讀出的是ECC協(xié)處理器I的狀態(tài)字sta ;譯碼控制單元,譯碼控制單元對(duì)CSR中的運(yùn)算命令 cmd進(jìn)行譯碼來(lái)啟動(dòng)相應(yīng)的運(yùn)算控制單元,其中包括復(fù)雜運(yùn)算控制單元11和模運(yùn)算單元12 中的大整數(shù)運(yùn)算控制單元121 ;三個(gè)數(shù)據(jù)寄存器蒙哥馬利常數(shù)寄存器MC存儲(chǔ)蒙哥馬利常數(shù)mc,mc是蒙哥馬利模乘運(yùn)算過(guò)程中一些乘法運(yùn)算所需要的輸入?yún)?shù),模字長(zhǎng)寄存器NLen 存儲(chǔ)模η (η是一個(gè)大整數(shù),存儲(chǔ)在雙端口 SRAM的指定單元中)的字長(zhǎng)nlen,乘法器的位長(zhǎng)為m (即m * m乘法器),則η的位長(zhǎng)是nlen m,nlen是模乘控制單元和模加/模減控制單元必需的輸入?yún)?shù),決定了相應(yīng)運(yùn)算的循環(huán)次數(shù),冪指數(shù)寄存器EReg存儲(chǔ)冪指數(shù)e的一個(gè)字,e是模冪控制單元必需的輸入?yún)?shù),決定了模冪運(yùn)算的循環(huán)次數(shù)及運(yùn)算過(guò)程,由于e 可能是一個(gè)跟η —樣長(zhǎng)度的大整數(shù),為了節(jié)省電路面積,將EReg設(shè)置為一個(gè)字長(zhǎng)的寄存器, 外部控制器2將e按照字長(zhǎng)分段,每次往EReg中寫入e的一個(gè)字,通過(guò)循環(huán)設(shè)置完成一次完整的模冪運(yùn)算。雙端口 SRAM,接收并存儲(chǔ)從外部輸入的除蒙哥馬利常數(shù)、模的字長(zhǎng)和冪指數(shù)之外所有運(yùn)算輸入數(shù)據(jù),接收并存儲(chǔ)來(lái)自基本運(yùn)算單元的結(jié)果數(shù)據(jù),向基本運(yùn)算單元提供運(yùn)算輸入數(shù)據(jù),并且所存儲(chǔ)的結(jié)果數(shù)據(jù)經(jīng)由接口總線可被外部控制器讀出。
如上所述,譯碼控制單元根據(jù)外部控制器2寫入命令/狀態(tài)寄存器的運(yùn)算命令cmd 進(jìn)行譯碼來(lái)啟動(dòng)相應(yīng)的運(yùn)算控制單元,例如,當(dāng)運(yùn)算命令cmd為點(diǎn)加、點(diǎn)倍或模冪運(yùn)算命令時(shí),點(diǎn)加控制單元111、點(diǎn)倍控制單元112和模冪控制單元113被啟動(dòng)來(lái)控制和執(zhí)行點(diǎn)加、點(diǎn)倍或模冪運(yùn)算;而當(dāng)運(yùn)算命令cmd為模乘或模加/模減命令時(shí),模乘控制單元1211或模加 /模減控制單元1212被啟動(dòng)來(lái)執(zhí)行模乘或模加/模減運(yùn)算。ECC協(xié)處理器內(nèi)各種運(yùn)算控制單元的啟動(dòng)及運(yùn)算完成的過(guò)程如下。I、模加/模減如上所述,譯碼控制單元、點(diǎn)加控制單元、點(diǎn)倍控制單元都可以啟動(dòng)模加/模減控制單元,模加/模減控制單元根據(jù)模的字長(zhǎng)nlen確定循環(huán)次數(shù),通過(guò)控制累加器完成大整數(shù)模加/模減運(yùn)算。2、模乘如上所述,譯碼控制單元、模冪控制單元、點(diǎn)加控制單元、點(diǎn)倍控制單元都可以啟動(dòng)t旲乘控制單兀,t旲乘減控制單兀根據(jù)t旲的子長(zhǎng)nlen確定循環(huán)次,通過(guò)控制乘法器和累加器完成大整數(shù)模乘運(yùn)算。3、模冪如上所述,當(dāng)運(yùn)算命令cmd是模冪運(yùn)算命令時(shí),譯碼控制單元啟動(dòng)模冪控制單元,模冪控制單元根據(jù)冪指數(shù)e,通過(guò)控制模乘控制單元完成模冪運(yùn)算。外部控制器2 將冪指數(shù)e按照字長(zhǎng)分段送往EReg,通過(guò)循環(huán)設(shè)置EReg完成一次完整的模冪運(yùn)算。這里, 模冪運(yùn)算支持基于費(fèi)馬小定理的模逆運(yùn)算。因此,本發(fā)明的ECC協(xié)處理器不需要專門的模逆控制單元。4、點(diǎn)加如上所述,當(dāng)運(yùn)算命令cmd是點(diǎn)加運(yùn)算命令時(shí),譯碼控制單元啟動(dòng)點(diǎn)加控制單元,點(diǎn)加控制單元產(chǎn)生點(diǎn)加運(yùn)算控制信號(hào)序列來(lái)控制模乘控制單元、模加/模減控制單元完成點(diǎn)加運(yùn)算。點(diǎn)加運(yùn)算的輸入為兩個(gè)混合坐標(biāo)點(diǎn),其中一個(gè)可以為雅可比坐標(biāo)點(diǎn)J(X1; Y1, Z1)、 另一個(gè)為仿射坐標(biāo)點(diǎn)六(^),輸出為一個(gè)雅可比坐標(biāo)點(diǎn)1(^,23),其運(yùn)算公式為J(X1; Y1, Z1)+A (X2, Y2) = J(X3, Y3, Z3) ,A = X2Z^ ,B = Y2Zf , C = A-X1, D = B-Y1, X3 = D2- (C3+2X!C2), Y3 = D(X1C2-X3) -Y1C3, Z3 = Z1C0另外,點(diǎn)加運(yùn)算輸入的兩個(gè)混合坐標(biāo)點(diǎn)中,其中一個(gè)可以為標(biāo)準(zhǔn)投影坐標(biāo)點(diǎn)P(X1; Y1, Z1)、另一個(gè)為仿射坐標(biāo)點(diǎn)A (X2,Y2),輸出為一個(gè)標(biāo)準(zhǔn)投影坐標(biāo)點(diǎn)P (X3,Y3, Z3),其運(yùn)算公式為P (X1, Y1, Z1)+A (X2, Y2) = P (X3, Y3, Z3), A = X1-X2Z17B = Y1-Y2Z1, C = X^X2Z17D = A2, E = DA, F = Z1B2-CD, X3 = AF, Y3 = B(DX1-F) -Y1E, Z3 = EZ10另外,點(diǎn)加運(yùn)算輸入的兩個(gè)混合坐標(biāo)點(diǎn)中,其中一個(gè)可以為雅可比坐標(biāo)點(diǎn)WX1J1, Z1)、另一個(gè)為裘德洛夫斯基坐標(biāo)點(diǎn)J(U2,Z2,t/2 =Z22,F2 =Z23),輸出為一個(gè)雅可比坐標(biāo)點(diǎn) J (X3,Y3, Z3),其運(yùn)算公式為 J (X1, Y1, Z1)+J (X2,Y2, Z2, U2, V2) = J (X3, Y3, Z3), A = X1U27B = Y1V2jC = X2Z12 -A ,D = Y2Z31 -B ,X3 = D2_2AC2_C3,Y3 = D(AC2-X3)-BC3, Z3 = Z1Z2C0另外,點(diǎn)加運(yùn)算輸入的兩個(gè)混合坐標(biāo)點(diǎn)中,其中-個(gè)可以為改進(jìn)的雅可比坐標(biāo)點(diǎn)八弋,Z15Z1,M =UZ14)、另一個(gè)為仿射坐標(biāo)點(diǎn)A(X2,Y2),輸出為一個(gè)改進(jìn)的雅可比坐標(biāo) ^ Z3,U3=GZ43),其運(yùn)算公式為J(X1; Y1, Z1, U1)+A (X2, Y2) = J (X3, Y3, Z3, U3), A = X2Zi2 ,B = Y2Zf , C = A-X1, D = B-Y1, X3 = D2- ((^+SX1C2),Y3 = D (X1C2-X3) -Y1C3, Z3 = Z1C, U3 = all。另外,點(diǎn)加運(yùn)算輸入的兩個(gè)混合坐標(biāo)點(diǎn)中,其中一個(gè)可以為裘德洛夫斯基坐標(biāo)點(diǎn)JiXlJuZuUl=Z^vi =<)、另一個(gè)為仿射坐標(biāo)點(diǎn)a(x2,y2),輸出為一個(gè)裘德洛夫斯基坐標(biāo) =Z32,F3 =Z33),其運(yùn)算公式為J(X1 ,Y1 ,Z1 ,U1, V1HA(X2J2) = J(X3, Y3, Z3,U3,V3),A = X2UijB = Y2VijC = A-XijD = B-YijX3 = D2-((^X1C2),Y3 = D(X1C2-X3)-Y1C3, Z3 = Z1CW3 =Z32 ,V3 = U3Z3。5、點(diǎn)倍如上所述,當(dāng)運(yùn)算命令cmd是點(diǎn)倍運(yùn)算命令時(shí),譯碼控制單元啟動(dòng)點(diǎn)倍控制單元,點(diǎn)倍控制單元產(chǎn)生點(diǎn)倍運(yùn)算控制信號(hào)序列來(lái)控制模乘控制單元、模加/模減控制單元完成點(diǎn)倍運(yùn)算。點(diǎn)倍運(yùn)算的輸入可以為-個(gè)雅可比坐標(biāo)點(diǎn)J(X1; Y1, Z1),輸出相應(yīng)為一個(gè)雅可比坐標(biāo)點(diǎn) J(X3,Y3,Z3),其運(yùn)算公式為2J(X1; Y1, Z1) = J (X3, Y3, Z,), A = 4XX ,B = 87;, C = 3Xf + αΖΑλ , X3 = C2-2A, Y3 = C (A-X3) -B, Z3 = TilIl。另外,點(diǎn)倍運(yùn)算的輸入可以為一個(gè)標(biāo)準(zhǔn)投影坐標(biāo)點(diǎn)P(X1; Y1, Z1),輸出相應(yīng)為一個(gè)標(biāo)準(zhǔn)投影坐標(biāo)點(diǎn) P(x3,Y3,Z3),其運(yùn)算公式為2P(X1; Y1, Z1) = P(X3, Y3, Z3) ,A = 3X^ +aZ^ , B = TilIljC = Y12 -, V) = CX1Z1, E = B2,F(xiàn) = A2_8D,X3 = BF, Y3 = A(4D_F)_2CE,Z3 = BE。另外,點(diǎn)倍運(yùn)算的輸入可以為一個(gè)改進(jìn)的雅可比坐標(biāo)點(diǎn)AmtZ1 =^Z14),輸出相應(yīng)為一個(gè)改進(jìn)的雅可比坐標(biāo)點(diǎn)J(Z3,HtZ3 =αΖ34),其運(yùn)算公式為2J(X1; Y1, Z1, U1) =J (X3, Y3, Z3, υ3) ,A = 4ΧΧ,Β = 87j4 ,C = +U1 ,X3 = C2_2A,Y3 = C (A-X3) -BjZ3 = TilIl, U3 = 2BU!。另外,點(diǎn)倍運(yùn)算的輸入可以為一個(gè)裘德洛夫斯基坐標(biāo)點(diǎn) J(XlJl^ul=Zlvl=Zl),輸出相應(yīng)為一個(gè)裘德洛夫斯基坐標(biāo)點(diǎn) J(X3J3,Z3,U3=ZlV3=Z33),其運(yùn)算公式為2J(X1; Y1, Z1, U1, V1) = J(X3, Y3, Z3, U3, V3), A = AX1Y12 ,B = SY14 ,C = 3X,2 + aU2x ,X3 = C2_2A,Y3 = C (A-X3) —B,Z3 = TiU = A,V3
=U3Z30與雅可比坐標(biāo)相比,在改進(jìn)的雅可比坐標(biāo)以及裘德洛夫斯基坐標(biāo)中分別增加了一個(gè)或兩個(gè)參數(shù),但增加的參數(shù)并不影響坐標(biāo)點(diǎn)的位置,而是在連續(xù)進(jìn)行點(diǎn)加和點(diǎn)倍運(yùn)算時(shí), 在上次的點(diǎn)加或點(diǎn)倍運(yùn)算過(guò)程中就同時(shí)產(chǎn)生這些參數(shù)并將其存儲(chǔ)下來(lái),以便可以在進(jìn)行下次的點(diǎn)加或點(diǎn)倍運(yùn)算時(shí)直接使用,而不需要重新計(jì)算,從而進(jìn)一步提高了運(yùn)算效率。圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例的外部控制器調(diào)用本發(fā)明的ECC協(xié)處理器完成一次運(yùn)算的流程圖。SI,通過(guò)讀CSR中的sta或檢測(cè)R/B的電平,判斷ECC協(xié)處理器是否處于空閑 (Ready)狀態(tài),如果是則可以進(jìn)行下面的操作,否則需要等待;S2,根據(jù)運(yùn)算對(duì)me、nlen或e的需要,設(shè)置相應(yīng)的MC、NLen或EReg寄存器;S3,將運(yùn)算的輸入?yún)?shù)寫入雙端口 SRAM的指定單元中;S4,往CSR中寫入cmd,啟動(dòng)ECC協(xié)處理器運(yùn)算;S5,ECC協(xié)處理器改變CSR中的sta和R/B的電平,表示處于忙碌(Busy)狀態(tài),譯碼控制單元根據(jù)cmd啟動(dòng)相應(yīng)的運(yùn)算控制單元完成運(yùn)算;S6,運(yùn)算完成后,ECC協(xié)處理器改變CSR中的sta和R/B的電平,表示運(yùn)算已經(jīng)完成,處于空閑(Ready)狀態(tài);S7,外部控制器2監(jiān)測(cè)到sta或R/B的變化(為Ready),從雙端口 SRAM的指定單元讀取運(yùn)算結(jié)果。經(jīng)發(fā)明人研究、實(shí)驗(yàn)和測(cè)試發(fā)現(xiàn)1、點(diǎn)乘運(yùn)算在ECC協(xié)處理器中實(shí)現(xiàn)和在外部控制器2中的軟件實(shí)現(xiàn),對(duì)ECC算法的實(shí)現(xiàn)效率影響很小(經(jīng)流片測(cè)試表明<3%) ;2、將點(diǎn)乘運(yùn)算實(shí)現(xiàn)到ECC協(xié)處理器中,對(duì)外提供的點(diǎn)加、點(diǎn)倍和點(diǎn)乘運(yùn)算接口中,點(diǎn)的坐標(biāo)如果只支持仿射坐標(biāo),會(huì)限制外部控制器2中用軟件實(shí)現(xiàn)點(diǎn)乘及整個(gè)ECC算法的靈活性,不方便實(shí)現(xiàn)一些特殊的點(diǎn)乘運(yùn)算,而這些特殊的點(diǎn)乘運(yùn)算往往可以提高ECC的實(shí)現(xiàn)效率和安全性,譬如帶預(yù)計(jì)算的固定點(diǎn)乘運(yùn)算可以提高ECC簽名產(chǎn)生的效率,雙點(diǎn)乘混合運(yùn)算可以提高ECC 驗(yàn)證簽名的效率,含抵抗差分電源分析(DPA)措施的點(diǎn)乘運(yùn)算可以提高ECC私鑰運(yùn)算(簽名、解密、密鑰協(xié)商)的安全性。如上所述,本發(fā)明提出一種Fp上的ECC協(xié)處理器,實(shí)現(xiàn)并對(duì)外提供大整數(shù)模乘、模加/模減、模冪和橢圓曲線點(diǎn)加/點(diǎn)倍等運(yùn)算功能,點(diǎn)加和點(diǎn)倍運(yùn)算對(duì)外接口中橢圓曲線點(diǎn)的坐標(biāo)采用投影坐標(biāo)或混合坐標(biāo)。相對(duì)于其它ECC協(xié)處理器,本發(fā)明的ECC協(xié)處理器的優(yōu)點(diǎn)和有益效果在于I、通過(guò)對(duì)外提供采用雅可比坐標(biāo)的點(diǎn)倍和點(diǎn)加運(yùn)算,可以支持外部控制器通過(guò)軟件靈活實(shí)現(xiàn)多種點(diǎn)乘運(yùn)算,包括帶預(yù)計(jì)算的固定點(diǎn)乘、雙點(diǎn)乘的混合運(yùn)算、加入了防DPA措施的點(diǎn)乘等各種特殊的點(diǎn)乘運(yùn)算,相對(duì)于現(xiàn)有的內(nèi)部實(shí)現(xiàn)點(diǎn)乘運(yùn)算、但對(duì)外部控制器實(shí)現(xiàn)點(diǎn)乘運(yùn)算支持不夠的ECC協(xié)處理器,能更好地適應(yīng)各種應(yīng)用環(huán)境對(duì)于ECC算法及點(diǎn)乘運(yùn)算的各種變化要求。經(jīng)發(fā)明人實(shí)驗(yàn)和測(cè)試證明點(diǎn)乘運(yùn)算在ECC協(xié)處理器中實(shí)現(xiàn)和在外部控制器中的軟件實(shí)現(xiàn),對(duì)ECC算法的實(shí)現(xiàn)效率影響很小(經(jīng)流片測(cè)試表明< 3% )。2、EReg寄存器設(shè)置為一個(gè)字長(zhǎng)的寄存器,支持外部控制器將e按字長(zhǎng)分段輸入, 通過(guò)循環(huán)設(shè)置EReg完成一次完整的模冪運(yùn)算,相對(duì)于將e—次性全部存入內(nèi)部寄存器的方案,既節(jié)省了電路面積,又對(duì)模冪運(yùn)算效率的影響很??;3、模冪運(yùn)算支持實(shí)現(xiàn)基于費(fèi)馬小定理的模逆運(yùn)算,不需要專門的模逆控制單元;4、通過(guò)設(shè)置nlen,可支持實(shí)現(xiàn)多種位長(zhǎng)的ECC、RSA和DSA算法。以上雖然結(jié)合附圖詳細(xì)描述了本發(fā)明的實(shí)施例,但是應(yīng)當(dāng)明白,上面所描述的實(shí)施方式只是用于說(shuō)明本發(fā)明,而并不構(gòu)成對(duì)本發(fā)明的限制。對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),可以對(duì)上述實(shí)施方式作出各種修改和變更而沒(méi)有背離本發(fā)明的實(shí)質(zhì)和范圍。因此,本發(fā)明的范圍僅由所附的權(quán)利要求及其等效含義來(lái)限定。
權(quán)利要求
1.一種ECC協(xié)處理器,其特征在于對(duì)外提供橢圓曲線點(diǎn)加/點(diǎn)倍運(yùn)算功能,點(diǎn)加和點(diǎn)倍運(yùn)算的對(duì)外接口中橢圓曲線點(diǎn)的坐標(biāo)采用投影坐標(biāo)或混合坐標(biāo)以支持外部控制器靈活實(shí)現(xiàn)多種點(diǎn)乘運(yùn)算。
2.如權(quán)利要求I所述的ECC協(xié)處理器,其特征在于還對(duì)外提供大整數(shù)模乘、模加/模減和模冪運(yùn)算功能。
3.如權(quán)利要求I所述的ECC協(xié)處理器,其特征在于所述投影坐標(biāo)是標(biāo)準(zhǔn)投影坐標(biāo)、雅可比加重投影坐標(biāo)、改進(jìn)的雅可比坐標(biāo)或裘德洛夫斯基-雅可比坐標(biāo);所述混合坐標(biāo)是指對(duì)于需要輸入兩個(gè)點(diǎn)的運(yùn)算,其中一個(gè)輸入點(diǎn)采用投影坐標(biāo),而另一個(gè)輸入點(diǎn)采用不同的坐標(biāo)、即仿射坐標(biāo)或其它的投影坐標(biāo)。
4.如權(quán)利要求I所述的ECC協(xié)處理器,其特征在于外部需要連接外部控制器,內(nèi)部包含復(fù)雜運(yùn)算控制單元和模運(yùn)算單元。
5.如權(quán)利要求4所述的ECC協(xié)處理器,其特征在于復(fù)雜運(yùn)算控制單元包括模冪控制單元、點(diǎn)加控制單元和點(diǎn)倍控制單元;模運(yùn)算單元包括大整數(shù)運(yùn)算控制單元和基本運(yùn)算單元,其中大整數(shù)運(yùn)算控制單元包括模加/模減控制單元和模乘控制單元,基本運(yùn)算單元包括乘法器和累加器,其中,復(fù)雜運(yùn)算控制單元基于相應(yīng)的運(yùn)算命令被啟動(dòng),產(chǎn)生運(yùn)算控制信號(hào)序列給模運(yùn)算單元以完成相應(yīng)的運(yùn)算;模運(yùn)算單元基于相應(yīng)的運(yùn)算命令或從復(fù)雜運(yùn)算控制單元接收的運(yùn)算控制信號(hào)序列來(lái)完成相應(yīng)的運(yùn)算。
6.如權(quán)利要求5所述的ECC協(xié)處理器,在所述復(fù)雜運(yùn)算控制單元中當(dāng)運(yùn)算命令為點(diǎn)加運(yùn)算命令時(shí),點(diǎn)加控制單元被啟動(dòng),產(chǎn)生點(diǎn)加運(yùn)算控制信號(hào)序列并提供給大整數(shù)運(yùn)算控制單元以完成點(diǎn)加運(yùn)算;當(dāng)運(yùn)算命令為點(diǎn)倍運(yùn)算命令時(shí),點(diǎn)倍控制單元被啟動(dòng),產(chǎn)生點(diǎn)倍運(yùn)算控制信號(hào)序列并提供給大整數(shù)運(yùn)算控制單元以完成點(diǎn)倍運(yùn)算;當(dāng)運(yùn)算命令為模冪運(yùn)算命令時(shí),模冪控制單元被啟動(dòng),產(chǎn)生模冪運(yùn)算控制信號(hào)序列并提供給模乘控制單元以完成模冪運(yùn)算。
7.如權(quán)利要求5所述的ECC協(xié)處理器,在所述模運(yùn)算單元中模乘控制單元在當(dāng)運(yùn)算命令為模乘運(yùn)算命令或者當(dāng)從復(fù)雜運(yùn)算控制單元接收到點(diǎn)加、 點(diǎn)倍或模冪運(yùn)算控制信號(hào)序列時(shí)被啟動(dòng),產(chǎn)生模乘運(yùn)算控制信號(hào)序列并提供給基本運(yùn)算單元以完成模乘運(yùn)算;模加/模減控制單元在當(dāng)運(yùn)算命令為模加或模減運(yùn)算命令或者當(dāng)從復(fù)雜運(yùn)算控制單元接收到點(diǎn)加或點(diǎn)倍運(yùn)算控制信號(hào)序列時(shí)被啟動(dòng),產(chǎn)生模加/模減運(yùn)算控制信號(hào)序列并提供給累加器以完成模加/模減運(yùn)算。
8.如權(quán)利要求5所述的ECC協(xié)處理器,在所述基本運(yùn)算單元中乘法器響應(yīng)模乘運(yùn)算控制信號(hào)序列中的乘法信號(hào)來(lái)執(zhí)行乘法運(yùn)算并輸出乘法運(yùn)算結(jié)果;累加器響應(yīng)模乘運(yùn)算控制信號(hào)序列和模加/模減運(yùn)算控制信號(hào)中的累加信號(hào)來(lái)執(zhí)行累加運(yùn)算并輸出累加運(yùn)算結(jié)果。
9.如權(quán)利要求5所述的ECC協(xié)處理器,還包括接口總線,命令/狀態(tài)寄存器,譯碼控制單元,數(shù)據(jù)寄存器,雙端口 SRAM,其中外部控制器經(jīng)接口總線將運(yùn)算命令寫入命令/狀態(tài)寄存器,或從命令/狀態(tài)寄存器中讀出狀態(tài)字;譯碼控制單元對(duì)命令/狀態(tài)寄存器中接收到的運(yùn)算命令進(jìn)行譯碼,產(chǎn)生相應(yīng)的運(yùn)算控制信號(hào),啟動(dòng)復(fù)雜運(yùn)算控制單元或模運(yùn)算單元完成相應(yīng)的運(yùn)算,運(yùn)算結(jié)束后通過(guò)設(shè)置命令/ 狀態(tài)寄存器中的狀態(tài)字通知外部控制器運(yùn)算已經(jīng)結(jié)束;數(shù)據(jù)寄存器包括蒙哥馬利常數(shù)寄存器MC,存儲(chǔ)模乘運(yùn)算所需的蒙哥馬利常數(shù),模字長(zhǎng)寄存器NLen,存儲(chǔ)模乘、模加/模減運(yùn)算的模的字長(zhǎng),供模乘控制單元和模加/ 模減控制單元控制基本運(yùn)算(乘法、累加)的循環(huán)次數(shù),冪指數(shù)寄存器EReg,存儲(chǔ)模冪運(yùn)算所需的冪指數(shù),供模冪控制單元產(chǎn)生模冪運(yùn)算控制信號(hào)序列,雙端口 SRAM接收并存儲(chǔ)經(jīng)從外部輸入的除蒙哥馬利常數(shù)、模的字長(zhǎng)和冪指數(shù)之外所有運(yùn)算輸入數(shù)據(jù),接收并存儲(chǔ)來(lái)自基本運(yùn)算單元的中間數(shù)據(jù)和結(jié)果數(shù)據(jù),向基本運(yùn)算單元提供運(yùn)算輸入數(shù)據(jù),存儲(chǔ)的各種運(yùn)算的結(jié)果數(shù)據(jù)可供外部控制器讀出。
10.如權(quán)利要求9所述的ECC協(xié)處理器,其中,所述冪指數(shù)寄存器EReg為一個(gè)字長(zhǎng),所述冪指數(shù)被按字長(zhǎng)分段傳送到EReg,外部控制器通過(guò)循環(huán)設(shè)置EReg來(lái)完成一次完整的模冪運(yùn)算。
11.如權(quán)利要求10所述的ECC處理器,模冪運(yùn)算支持基于費(fèi)馬小定理的模逆運(yùn)算。
全文摘要
本發(fā)明提供了一種ECC協(xié)處理器,內(nèi)部包括命令/狀態(tài)寄存器,譯碼控制單元,數(shù)據(jù)寄存器,雙端口SRAM,點(diǎn)加控制單元,點(diǎn)倍控制單元,模冪控制單元,模乘控制單元、模加/模減控制單元,基本運(yùn)算單元。本發(fā)明的ECC協(xié)處理器實(shí)現(xiàn)并對(duì)外提供大整數(shù)模乘、模加/模減、模冪和橢圓曲線點(diǎn)加/點(diǎn)倍運(yùn)算功能,點(diǎn)加和點(diǎn)倍運(yùn)算的對(duì)外接口中橢圓曲線點(diǎn)的坐標(biāo)采用投影坐標(biāo)或混合坐標(biāo),可以支持外部控制器靈活實(shí)現(xiàn)多種點(diǎn)乘運(yùn)算。
文檔編號(hào)G06F7/72GK102609239SQ20111042663
公開日2012年7月25日 申請(qǐng)日期2011年12月19日 優(yōu)先權(quán)日2011年9月1日
發(fā)明者李政東, 汪朝暉 申請(qǐng)人:北京華大信安科技有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1