一种素域Fp下的SM2椭圆曲线公钥加密算法的硬件实现系统的制作方法

文档序号:12037609阅读:424来源:国知局
一种素域Fp下的SM2椭圆曲线公钥加密算法的硬件实现系统的制作方法与工艺

本发明涉及信息安全领域中的消息加密和解密技术,特别涉及一种素域fp下的sm2椭圆曲线公钥加密算法的硬件实现系统。



背景技术:

随着网络技术的发展,人们对网络安全问题的关注越来越大。信息加密和解密技术在网络安全领域中应用广泛,可保证信息的安全,防止信息在传输过程中受到攻击,从而被不法分子截取或破坏。

sm2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法,与传统的公钥密码体制(例如rsa密码体制)相比,椭圆曲线密码体制使用相对比较短的密钥就可以达到相同的安全程度。因此,更短的密钥使得椭圆曲线密码体制的应用范围更加广泛。

虽然国家密码局早在2010年就公布了sm2椭圆曲线公钥加密算法,但是目前将其用硬件实现的方案还比较少,并且现有的硬件实现方案的硬件资源消耗较大。



技术实现要素:

本发明所要解决的技术问题是提供一种素域fp下的sm2椭圆曲线公钥加密算法的硬件实现系统,该系统在素域fp下,采用高层次的模块化方法,对系统进行了合理的划分,将系统划分为多个模块,采用硬件模块复用的方法,通过设置上层复选模块,实现了对随机数生成模块、运算控制模块、比特串处理模块、密钥派生模块、杂凑模块的复用,通过设置下层复选模块,实现了对点乘运算模块、异或运算模块、比特串转换模块、比特串拼接模块的复用,从而提供了一种所用硬件资源更少,成本更低、运行速度更快、结构简单、易于实现的sm2椭圆曲线公钥加密算法的硬件实现系统。

为解决上述技术问题,本发明提供一种素域fp下的sm2椭圆曲线公钥加密算法的硬件实现系统,该系统可以对传输的消息进行加密和解密,该系统所用到的模块包括:sm2主控模块、sm2解析模块、加密控制模块、解密控制模块、上层复选模块、随机数生成模块、运算控制模块、比特串处理模块、密钥派生模块、杂凑模块、下层复选模块、点乘运算模块、异或运算模块、比特串转换模块、比特串拼接模块,其中:

所述sm2主控模块:用于与所述sm2解析模块进行通信,进而调用加密控制模块和解密控制模块对消息进行加密和解密;

所述sm2解析模块:用于解析所述sm2主控模块发出的命令,确定系统当前时间要实现的是消息加密还是消息解密功能,并将进行消息加密的命令发送给所述加密控制模块,将进行消息解密的命令发送给解密控制模块;

所述加密控制模块:用于在收到所述sm2解析模块发送的进行消息加密的命令后,与所述上层复选模块进行通信,通过所述上层复选模块调用所述随机数生成模块、所述运算控制模块、所述比特串处理模块、所述密钥派生模块、所述杂凑模块,通过所述下层复选模块调用所述点乘运算模块、所述异或运算模块、所述比特串转换模块、所述比特串拼接模块,对消息进行加密;

所述解密控制模块:用于在收到所述sm2解析模块发送的进行消息解密的命令后,与所述上层复选模块进行通信,通过所述上层复选模块调用所述随机数生成模块、所述运算控制模块、所述比特串处理模块、所述密钥派生模块、所述杂凑模块,通过所述下层复选模块调用所述点乘运算模块、所述异或运算模块、所述比特串转换模块、所述比特串拼接模块,对消息进行解密;

所述上层复选模块:用于当系统要进行消息加密时,所述加密控制模块与所述上层复选模块进行通信,通过所述上层复选模块调用所述随机数生成模块、所述运算控制模块、所述比特串处理模块、所述密钥派生模块、所述杂凑模块进行消息加密,当系统要进行消息解密时,所述解密控制模块与所述上层复选模块进行通信,通过所述上层复选模块调用所述随机数生成模块、所述运算控制模块、所述比特串处理模块、所述密钥派生模块、所述杂凑模块进行消息解密;

所述随机数生成模块:用于生成随机数k∈[1,n-1];

所述运算控制模块:用于通过所述下层复选模块来调用所述点乘运算模块和所述异或运算模块,完成点乘运算和异或运算;

所述比特串处理模块:用于通过所述下层复选模块来调用所述比特串转换模块和所述比特串拼接模块,完成比特串转换和比特串拼接;

所述密钥派生模块:用于进行密钥派生运算,生成密钥数据比特串;

所述杂凑模块:用于采用sm3密码杂凑算法,进行密码杂凑运算,产生相应的杂凑值;

所述下层复选模块:用于当系统要进行点乘运算和异或运算时,所述运算控制模块与所述下层复选模块通信,通过所述下层复选模块调用所述点乘运算模块和所述异或运算模块,完成点乘运算和异或运算;当系统要进行比特串转换和比特串拼接时,所述比特串处理模块与所述下层复选模块通信,通过所述下层复选模块调用所述比特串转换模块和所述比特串拼接模块,完成比特串转换和比特串拼接;

所述点乘运算模块:用于完成消息加密和消息解密过程中所需的点乘运算;

所述异或运算模块:用于完成消息加密和解密过程中所需的异或运算;

所述比特串转换模块:用于将椭圆曲线上的点转换为与之相对应的比特串,将比特串转换为椭圆曲线上与之相对应的点;

所述比特串拼接模块:用于将两个以上的比特串进行拼接,使之成为一个比特串。

在系统的设计过程中,采用了高层次的模块化方法,按照硬件占用资源少、成本低、系统运行速度快,结构简单、易实现的原则,将系统进行了合理的划分,具体划分为所述sm2主控模块、所述sm2解析模块、所述加密控制模块、所述解密控制模块、所述上层复选模块、所述随机数生成模块、所述运算控制模块、所述比特串处理模块、所述密钥派生模块、所述杂凑模块、所述下层复选模块、所述点乘运算模块、所述异或运算模块、所述比特串转换模块、所述比特串拼接模块,每个模块可实现相应的功能。

所述比特串拼接模块采用首尾依次相接进行拼接。

一种素域fp下的sm2椭圆曲线公钥密码算法中利用公钥加密算法来加密消息的实现方法,包括如下步骤:

步骤一:通过上层复选模块调用随机数生成模块,产生随机数k∈[1,n-1];

步骤二:运算控制模块通过下层复选模块来调用点乘运算模块,计算c1=[k]g=(x1,y1)和s=[h]pb;

步骤三:检验s是否为无穷远点,若s是无穷远点,则报错并退出,若s不是无穷远点,则执行步骤四;

步骤四:运算控制模块通过下层复选模块来调用点乘运算模块,计算[k]pb=(x2,y2);

步骤五:比特串处理模块通过下层复选模块来调用比特串转换模块,将点(x1,y1)和点(x2,y2)转换为相应的比特串,调用比特串拼接模块,拼接比特串x2和y2,得比特串x2||y2;

步骤六:通过上层复选模块来调用密钥派生模块,对比特串x2||y2和整数klen进行密钥派生运算,得比特串t;

步骤七:检验t是否为全为0的比特串,若是则返回步骤一,若否则执行步骤八;

步骤八:运算控制模块通过下层复选模块来调用异或运算模块,计算

步骤九:比特串处理模块通过下层复选模块来调用比特串拼接模块,拼接比特串x2、m和y2,得比特串x2||m||y2;

步骤十:通过上层复选模块调用杂凑模块,对比特串x2||m||y2进行密码杂凑运算,得杂凑值c3;

步骤十一:比特串处理模块通过下层复选模块来调用比特串拼接模块,拼接比特串c1、c2和c3,得到密文c=c1||c2||c3。

在加密消息的过程中,采用硬件模块复用的方法,通过运用上层复选模块,实现了对随机数生成模块、运算控制模块、比特串处理模块、密钥派生模块、杂凑模块的复用,通过运用下层复选模块,实现了对点乘运算模块、异或运算模块、比特串转换模块、比特串拼接模块的复用。

一种素域fp下的sm2椭圆曲线公钥密码算法中利用公钥加密算法来解密密文的实现方法,其特征在于,包括如下步骤:

步骤一:从密文c中取出比特串c1,比特串处理模块通过下层复选模块来调用比特串转换模块,将比特串c1转换为点c1;

步骤二:检验点c1是否满足椭圆曲线方程,若不满足则报错并退出,若满足则执行步骤三;

步骤三:运算控制模块通过下层复选模块来调用点乘运算模块,计算s’=[h]c1;

步骤四:检验是s’否为无穷远点,若s’是无穷远点,则报错并退出,若s’不是无穷远点,则执行步骤五;

步骤五:运算控制模块通过下层复选模块来调用点乘运算模块,计算[db]c1=(x2’,y2’);

步骤六:比特串处理模块通过下层复选模块来调用比特串转换模块,将坐标x2’和y2’转换为与之相对应的比特串,调用比特串拼接模块,拼接比特串x2’和y2’,得到比特串x2’||y2’;

步骤七:通过上层复选模块来调用密钥派生模块,对比特串x2’||y2’和整数klen进行密钥派生运算,得比特串t’;

步骤八:检验t’是否为全为0的比特串,若是则报错并退出,若否则执行步骤九;

步骤九:从密文c中取出比特串c2,运算控制模块通过下层复选模块来调用异或运算模块,计算

步骤十:比特串处理模块通过下层复选模块来调用比特串拼接模块,拼接比特串x2’、m’和y2’,得到比特串x2’||m’||y2’;

步骤十一:通过上层复选模块调用杂凑模块,对比特串x2’||m’||y2’进行密码杂凑运算,得到杂凑值u;

步骤十二:从密文c中取出比特串c3;

步骤十三:检验u=c3是否成立,若不成立则报错并退出,若成立则执行步骤十四;

步骤十四:输出解密后的明文m’。

在解密密文的过程中,采用硬件模块复用的方法,通过运用上层复选模块,实现了对随机数生成模块、运算控制模块、比特串处理模块、密钥派生模块、杂凑模块的复用,通过运用下层复选模块,实现了对点乘运算模块、异或运算模块、比特串转换模块、比特串拼接模块的复用。

本发明相对于现有技术具有如下的优点及效果:

(1)本发明在系统的设计过程中,采用了高层次的模块化方法,即按照硬件占用资源少、成本低、系统运行速度较快,结构简单、易实现的原则,将系统进行了合理的划分,具体划分为sm2主控模块、sm2解析模块、加密控制模块、解密控制模块、上层复选模块、随机数生成模块、运算控制模块、比特串处理模块、密钥派生模块、杂凑模块、下层复选模块、点乘运算模块、异或运算模块、比特串转换模块、比特串拼接模块,每个模块可实现相应的功能。通过这种高层次的模块划分方法,大大减少了系统硬件资源的使用,降低了成本,加快了系统的运行速度,同时结构简单、易于实现。

(2)本发明采用硬件模块复用的方法,通过运用上层复选模块,实现了对随机数生成模块、运算控制模块、比特串处理模块、密钥派生模块、杂凑模块的复用,通过运用下层复选模块,实现了对点乘运算模块、异或运算模块、比特串转换模块、比特串拼接模块的复用,从而大大减少了系统硬件资源的使用,降低了成本。

(3)本发明采用硬件的方法来实现sm2椭圆曲线加密算法中对消息的加密和解密,与软件实现方法相比,硬件实现方法的运行速度更快、安全性更高,同时可以集成到多种加密芯片等硬件设备上,应用广泛,可产生极大的经济效益和社会效益。

附图说明

图1为本发明提供的一种素域fp下的sm2椭圆曲线公钥加密算法的硬件实现系统的整体结构图;

图2是在素域fp下的sm2椭圆曲线公钥密码算法中利用公钥加密算法来加密消息的流程图;

图3是在素域fp下的sm2椭圆曲线公钥密码算法中利用公钥加密算法来解密密文的流程图。

具体实施方式

下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

实施例

本发明提供一种素域fp下的sm2椭圆曲线公钥加密算法的硬件实现系统,本发明中所涉及到的sm2椭圆曲线和算法均是定义在素域fp上的,其中p为大于3的素数。素域fp上的椭圆曲线方程为y2x3+ax+b,其中a,b∈fp,且(4a3+27b2)modp≠0。

图1为本发明提供的一种素域fp下的sm2椭圆曲线公钥加密算法的硬件实现系统的整体结构图,该系统能够从硬件上,实现对消息的加密和解密,保证消息的安全,防止消息在传输过程中受到攻击,从而被不法分子截取或破坏。该系统所用到的模块包括:sm2主控模块、sm2解析模块、加密控制模块、解密控制模块、上层复选模块、随机数生成模块、运算控制模块、比特串处理模块、密钥派生模块、杂凑模块、下层复选模块、点乘运算模块、异或运算模块、比特串转换模块、比特串拼接模块。

sm2主控模块:用于与sm2解析模块进行通信,进而调用加密控制模块和解密控制模块对消息进行加密和解密。

sm2解析模块:用于解析sm2主控模块发出的命令,确定系统当前时间要实现的是消息加密还是消息解密功能,并将进行消息加密的命令发送给加密控制模块,将进行消息解密的命令发送给解密控制模块。

加密控制模块:用于在收到sm2解析模块发送的进行消息加密的命令后,与上层复选模块进行通信,通过上层复选模块调用随机数生成模块、运算控制模块、比特串处理模块、密钥派生模块、杂凑模块,通过下层复选模块调用点乘运算模块、异或运算模块、比特串转换模块、比特串拼接模块,对消息进行加密。

解密控制模块:用于在收到sm2解析模块发送的进行消息解密的命令后,与上层复选模块进行通信,通过上层复选模块调用随机数生成模块、运算控制模块、比特串处理模块、密钥派生模块、杂凑模块,通过下层复选模块调用点乘运算模块、异或运算模块、比特串转换模块、比特串拼接模块,对消息进行解密。

上层复选模块:用于当系统要进行消息加密时,加密控制模块与上层复选模块进行通信,通过上层复选模块调用随机数生成模块、运算控制模块、比特串处理模块、密钥派生模块、杂凑模块进行消息加密,当系统要进行消息解密时,解密控制模块与上层复选模块进行通信,通过上层复选模块调用随机数生成模块、运算控制模块、比特串处理模块、密钥派生模块、杂凑模块进行消息解密。

随机数生成模块:用于生成随机数k∈[1,n-1]。

运算控制模块:用于通过下层复选模块来调用点乘运算模块和异或运算模块,完成点乘运算和异或运算。

比特串处理模块:用于通过下层复选模块来调用比特串转换模块和比特串拼接模块,完成比特串转换和比特串拼接。

密钥派生模块:用于进行密钥派生运算,生成密钥数据比特串。

杂凑模块:用于采用sm3密码杂凑算法,进行密码杂凑运算,产生相应的杂凑值。

下层复选模块:用于当系统要进行点乘运算和异或运算时,运算控制模块与下层复选模块通信,通过下层复选模块调用点乘运算模块和异或运算模块,完成点乘运算和异或运算;当系统要进行比特串转换和比特串拼接时,比特串处理模块与下层复选模块通信,通过下层复选模块调用比特串转换模块和比特串拼接模块,完成比特串转换和比特串拼接

点乘运算模块:用于完成消息加密和消息解密过程中所需的点乘运算。

异或运算模块:用于完成消息加密和解密过程中所需的异或运算。

比特串转换模块:用于将椭圆曲线上的点转换为与之相对应的比特串,将比特串转换为椭圆曲线上与之相对应的点。

比特串拼接模块:用于将两个以上的比特串进行拼接(首尾依次相接),使之成为一个比特串。

图2是在素域fp下的sm2椭圆曲线公钥密码算法中利用公钥加密算法来加密消息的流程图,该加密算法由加密方a来实现。在进行消息加密时,采用硬件模块复用的方法,通过上层复选模块,实现了对随机数生成模块、运算控制模块、、比特串处理模块、密钥派生模块、杂凑模块的复用,通过下层复选模块,实现了对点乘运算模块、异或运算模块、比特串转换模块、比特串拼接模块的复用,从而大大减少了系统硬件资源的使用,降低了成本。加密方a的输入数据包括:素域fp下的椭圆曲线系统参数(方程参数a和b、阶n、余因子h、基点g),长度为klen比特的待加密的消息m,解密方b的公钥pb。如图2所示,该公钥加密算法由以下步骤组成:

步骤一:通过上层复选模块调用随机数生成模块,产生随机数k∈[1,n-1];

步骤二:运算控制模块通过下层复选模块来调用点乘运算模块,计算c1=[k]g=(x1,y1)和s=[h]pb;

步骤三:检验s是否为无穷远点,若s是无穷远点,则报错并退出,若s不是无穷远点,则执行步骤四;

步骤四:运算控制模块通过下层复选模块来调用点乘运算模块,计算[k]pb=(x2,y2);

步骤五:比特串处理模块通过下层复选模块来调用比特串转换模块,将点(x1,y1)和点(x2,y2)转换为相应的比特串,调用比特串拼接模块,拼接比特串x2和y2,得比特串x2||y2;

步骤六:通过上层复选模块来调用密钥派生模块,对比特串x2||y2和整数klen进行密钥派生运算,得比特串t;

步骤七:检验t是否为全为0的比特串,若是则返回步骤一,若否则执行步骤八;

步骤八:运算控制模块通过下层复选模块来调用异或运算模块,计算

步骤九:比特串处理模块通过下层复选模块来调用比特串拼接模块,拼接比特串x2、m和y2,得比特串x2||m||y2;

步骤十:通过上层复选模块调用杂凑模块,对比特串x2||m||y2进行密码杂凑运算,得杂凑值c3;

步骤十一:比特串处理模块通过下层复选模块来调用比特串拼接模块,拼接比特串c1、c2和c3,得到密文c=c1||c2||c3。

图3是在素域fp下的sm2椭圆曲线公钥密码算法中利用公钥加密算法来解密密文的流程图,该解密算法由解密方b来实现。在进行解密密文时,采用硬件模块复用的方法,通过上层复选模块,实现了对随机数生成模块、运算控制模块、比特串处理模块、密钥派生模块、杂凑模块的复用,通过下层复选模块,实现了对点乘运算模块、异或运算模块、比特串转换模块、比特串拼接模块的复用,从而大大减少了系统硬件资源的使用,降低了成本。解密方b的输入数据包括:素域fp下的椭圆曲线系统参数(方程参数a和b、阶n、余因子h、基点g),密文c=c1||c2||c3,解密方b的私钥db。如图3所示,该解密密文算法由以下步骤组成:

步骤一:从密文c中取出比特串c1,比特串处理模块通过下层复选模块来调用比特串转换模块,将比特串c1转换为点c1;

步骤二:检验点c1是否满足椭圆曲线方程,若不满足则报错并退出,若满足则执行步骤三;

步骤三:运算控制模块通过下层复选模块来调用点乘运算模块,计算s’=[h]c1;

步骤四:检验是s’否为无穷远点,若s’是无穷远点,则报错并退出,若s’不是无穷远点,则执行步骤五;

步骤五:运算控制模块通过下层复选模块来调用点乘运算模块,计算[db]c1=(x2’,y2’);

步骤六:比特串处理模块通过下层复选模块来调用比特串转换模块,将坐标x2’和y2’转换为与之相对应的比特串,调用比特串拼接模块,拼接比特串x2’和y2’,得到比特串x2’||y2’;

步骤七:通过上层复选模块来调用密钥派生模块,对比特串x2’||y2’和整数klen进行密钥派生运算,得比特串t’;

步骤八:检验t’是否为全为0的比特串,若是则报错并退出,若否则执行步骤九;

步骤九:从密文c中取出比特串c2,运算控制模块通过下层复选模块来调用异或运算模块,计算

步骤十:比特串处理模块通过下层复选模块来调用比特串拼接模块,拼接比特串x2’、m’和y2’,得到比特串x2’||m’||y2’;

步骤十一:通过上层复选模块调用杂凑模块,对比特串x2’||m’||y2’进行密码杂凑运算,得到杂凑值u;

步骤十二:从密文c中取出比特串c3;

步骤十三:检验u=c3是否成立,若不成立则报错并退出,若成立则执行步骤十四;

步骤十四:输出解密后的明文m’。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1