本發(fā)明涉及密碼學(xué),尤其涉及一種支持國密sm9算法的硬件加速器及加速方法。
背景技術(shù):
1、國密sm9算法是一種基于身份的密碼算法,它結(jié)合了橢圓曲線密碼學(xué)和雙線性對運(yùn)算,主要用于身份認(rèn)證、密鑰協(xié)商和數(shù)字簽名。目前,基于有限域的國密sm9算法,通常對底層運(yùn)算采用模塊化設(shè)計(jì),在硬件架構(gòu)中保留各級算子,如素域計(jì)算模塊,二次擴(kuò)域運(yùn)算模塊,四次擴(kuò)域運(yùn)算模塊,十二次擴(kuò)域運(yùn)算模塊,二次擴(kuò)域橢圓曲線運(yùn)算模塊和線函數(shù)運(yùn)算模塊等。這種硬件實(shí)現(xiàn),運(yùn)算功能多,接口靈活,總面積小,能夠保持較高的運(yùn)算性能。
2、但是,由于硬件架構(gòu)中各級算子較多,導(dǎo)致架構(gòu)復(fù)雜,設(shè)計(jì)成本高,資源占用高。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明實(shí)施例的目的是提供一種支持國密sm9算法的硬件加速器及加速方法,以解決現(xiàn)有技術(shù)中的問題。
2、第一方面,本發(fā)明實(shí)施例提供了一種支持國密sm9算法的硬件加速器,包括:
3、控制模塊,用于將sm9算法的運(yùn)算流程拆解為由中層算子組成的流程,所述中層算子對應(yīng)的運(yùn)算由基域算子對應(yīng)的運(yùn)算構(gòu)成;
4、中層算子,用于執(zhí)行雙線性對運(yùn)算、點(diǎn)運(yùn)算和擴(kuò)域運(yùn)算,所述點(diǎn)運(yùn)算中的點(diǎn)乘運(yùn)算包括多個(gè)核心算子,所述擴(kuò)域運(yùn)算中的高次冪運(yùn)算包括多個(gè)核心算子;
5、基域算子,用于執(zhí)行線性運(yùn)算和模運(yùn)算;
6、轉(zhuǎn)接層,用于按照所述控制模塊拆解后的流程,調(diào)用所述中層算子對輸入數(shù)據(jù)執(zhí)行運(yùn)算得到運(yùn)算結(jié)果;
7、寄存器,用于存儲輸入數(shù)據(jù)和運(yùn)算結(jié)果;
8、接口,用于從外部接收輸入數(shù)據(jù)以及將運(yùn)算結(jié)果作為輸出數(shù)據(jù)發(fā)送至外部。
9、第二方面,本發(fā)明實(shí)施例提供了一種加速方法,應(yīng)用于如上所述的支持國密sm9算法的硬件加速器,包括:
10、將sm9算法的運(yùn)算流程拆解為由中層算子組成的流程,所述中層算子對應(yīng)的運(yùn)算由基域算子對應(yīng)的運(yùn)算構(gòu)成;
11、按照所述控制模塊拆解后的流程,調(diào)用所述中層算子對接收的輸入數(shù)據(jù)執(zhí)行運(yùn)算得到運(yùn)算結(jié)果;
12、將運(yùn)算結(jié)果作為輸出數(shù)據(jù)發(fā)送;
13、其中,所述中層算子用于執(zhí)行雙線性對運(yùn)算、點(diǎn)運(yùn)算和擴(kuò)域運(yùn)算,所述點(diǎn)運(yùn)算中的點(diǎn)乘運(yùn)算包括多個(gè)核心算子,所述擴(kuò)域運(yùn)算中的高次冪運(yùn)算包括多個(gè)核心算子,所述基域算子用于執(zhí)行線性運(yùn)算和模運(yùn)算。
14、由以上本發(fā)明實(shí)施例提供的技術(shù)方案可見,本發(fā)明實(shí)施例將sm9算法的運(yùn)算流程拆解為由中層算子組成的流程,按照拆解后的流程調(diào)用中層算子對輸入數(shù)據(jù)執(zhí)行運(yùn)算得到運(yùn)算結(jié)果,由中層算子執(zhí)行雙線性對運(yùn)算、點(diǎn)運(yùn)算和擴(kuò)域運(yùn)算,基域算子執(zhí)行線性運(yùn)算和模運(yùn)算,點(diǎn)運(yùn)算中的點(diǎn)乘運(yùn)算以及擴(kuò)域運(yùn)算中的高次冪運(yùn)算均包括多個(gè)核心算子,因此,通過基域、核心和中層三層架構(gòu)來實(shí)現(xiàn)sm9算法,極大地降低了硬件架構(gòu)的復(fù)雜度,并行化程度高,資源占用少,節(jié)省了設(shè)計(jì)成本。
1.一種支持國密sm9算法的硬件加速器,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的硬件加速器,其特征在于,所述控制模塊包括:
3.根據(jù)權(quán)利要求1所述的硬件加速器,其特征在于,
4.根據(jù)權(quán)利要求3所述的硬件加速器,其特征在于,所述中層算子包括:
5.根據(jù)權(quán)利要求3所述的硬件加速器,其特征在于,所述基域算子包括:
6.根據(jù)權(quán)利要求3所述的硬件加速器,其特征在于,
7.根據(jù)權(quán)利要求1所述的硬件加速器,其特征在于,所述轉(zhuǎn)接層還包括:
8.根據(jù)權(quán)利要求1所述的硬件加速器,其特征在于,所述硬件加速器內(nèi)預(yù)置有硬件可執(zhí)行的機(jī)器碼,所述機(jī)器碼采用如下方法得到:
9.根據(jù)權(quán)利要求1所述的硬件加速器,其特征在于,所述硬件加速器內(nèi)預(yù)置有指示sm9算法中指令存儲規(guī)范的指令集,所述指令集包括多條寬度相同的指令,所述指令從高位到低位包括操作類型域、結(jié)果域、第一操作數(shù)域和第二操作數(shù)域;
10.一種加速方法,其特征在于,應(yīng)用于如權(quán)利要求1-9中任一項(xiàng)所述的支持國密sm9算法的硬件加速器,包括: