1.一种基于SOC的保密通信系统,其特征在于,包括SM2模块、SM3模块、SM4模块、RNG模块、IIC接口模块、SPI接口模块、UART模块、GPIO模块和计时器模块,所述SM2模块、SM3模块和SM4模块挂载在AHB总线上,所述RNG模块、IIC接口模块、SPI接口模块、UART模块、GPIO模块和计时器模块挂载在所述AHB总线的APB桥上,所述SM2模块、SM3模块、SM4模块、RNG模块、IIC接口模块、SPI接口模块、UART模块、GPIO模块和计时器模块均通过访问接口寄存器的方式进行数据交互,所述SM2模块、SM3模块、SM4模块和RNG模块均划分为用于实现底层运算的硬件部分和用于为运算系统提供控制流程的软件部分,所述SM2模块、SM3模块、SM4模块的硬件部分与其软件部分之间通过访问AHB接口寄存器实现通信,RNG模块的硬件部分与其软件部分之间通过访问APB接口寄存器实现通信。
2.根据权利要求1所述的基于SOC的保密通信系统,其特征在于,所述SM2模块的硬件部分包括通过AHB总线相连接的模运算模块、点运算模块、多倍点模块和第一AHB接口,所述SM3模块的硬件部分包括通过AHB总线相连接的扩展模块、迭代压缩模块、加密模块和第二AHB接口,所述SM4模块的硬件部分包括通过AHB总线相连接的轮密钥控制生成模块、加/解密模块和第三AHB接口,所述RNG模块的硬件部分包括通过AHB总线的APB桥相连接的随机数生成模块和APB接口。
3.根据权利要求1或2所述的基于SOC的保密通信系统,其特征在于,所述SM2模块的地址空间为0x50001000-0x50001fff,地址位中的第0位和第1位为空闲,第2-5位为256位数据的内部指针,第6-11位为寄存器的实际偏移地址;所述SM3模块的地址空间为0x50002000-
0x50002fff,地址位中的第0位和第1位为空闲,第2-5位为256位数据的内部指针,第6-11位为寄存器实际偏移地址;所述SM4模块的地址空间为0x50003000-0x50003fff,地址位中的第0位和第1位为空闲,第2-5位为256位数据的内部指针,第6-11位为寄存器的实际偏移地址;所述RNG模块的地址空间为0x40015000-0x40015fff,地址位中的第0位和第1位为空闲,第2-5位为256位数据的内部指针,第6-11位为寄存器的实际偏移地址。
4.根据权利要求3所述的基于SOC的保密通信系统,其特征在于,所述SM2模块的寄存器包括与所述第一AHB接口连接的SM2输入数据寄存器、SM2输出数据寄存器、SM2控制寄存器和SM2状态寄存器,所述SM3模块的寄存器包括与所述第二AHB接口连接的SM3输入数据寄存器、SM3输出数据寄存器、SM3控制寄存器和SM3状态寄存器,所述SM4模块的寄存器包括与所述第三AHB接口连接的SM4输入数据寄存器、SM4输出数据寄存器、SM4控制寄存器和SM4状态寄存器,所述RNG模块的寄存器包括分别与所述APB接口连接的RNG控制寄存器、RNG状态寄存器和RNG数据寄存器。
5.一种利用如权利要求4所述的基于SOC的保密通信系统进行保密通信的方法,其特征在于,包括如下步骤:A)初始化SM2模块、SM3模块、SM4模块和RNG模块,通过软件定义结构体分别指向所述SM2模块的硬件部分、SM3模块的硬件部分、SM4模块的硬件部分和RNG模块的硬件部分的基地址;
B)软件通过调用RNG控制寄存器初始化复位所述RNG模块;
C)所述RNG控制寄存器选择真随机数模式并启动;
D)软件启动所述RNG模块,并读取RNG状态寄存器的值;
E)判断FIFO是否已满,如是,执行步骤F)、F')或F〞);否则,返回步骤D);
F)读取所述RNG数据寄存器的值并存于key数组中,并将所述key数组中的第一成员至第四成员作为所述SM4模块的加解密密钥sm4_key,执行步骤G);所述key数组中包含32个成员,每个所述成员的长度都为4个字节;
A0)用户随机输入需要加密的数据,软件通过调用SM4控制寄存器初始化复位所述SM4模块,并进行数据更新,执行步骤G);
G)当所述SM4模块第一次被激活时,通过软件将所述加解密密钥写入到SM4输入数据寄存器;
H)硬件生成轮密钥并连续读取SM4状态寄存器的值,并判断所述轮密钥是否已生成,如是,通过软件再次更新数据并输入需要加密的数据,执行步骤I);否则,返回步骤G);
I)启动SM4硬件加密运算;
J)软件读取所述SM4状态寄存器的值;
K)判断加密是否完成,如是,将SM4加密后的数据存放在sm4_inc_out数组中,并将其作为所述SM2模块的签名输入sm2_in,同时发送给接收方作为待验证消息sm2_in′,执行步骤J′);否则,返回步骤J);
F')将所述key数组中的第五成员至第十二成员作为所述SM2模块签名所需的私钥dA;
G')软件初始化点运算模块和模运算模块;
H')由公钥PA=(xA,yA)=[dA]G,调用点运算模块计算出公钥PA作为发送方公钥;其中,PA为公钥,xA为公钥的横坐标,yA为PA的纵坐标,G为椭圆曲线的一个基点,其阶为素数,[dA]G为椭圆曲线上点G的dA倍点;
I')调用SM3模块的接口寄存器初始化SM3模块,调用SM3模块的硬件部分计算第一杂凑值Z1;
J')再次调用所述SM3模块的硬件部分计算第二杂凑值Z2;
F〞)将所述key数组中的第十三成员至第二十一成员作为所述SM2模块签名所需的随机数k,k∈[1,n-1],n>1,执行步骤K');
K')调用所述模运算模块、点运算模块和软件实现签名流程,并将签名数据存放在结构体数组(r,s)中,其中,r为发送方生成的签名值的第一部分,s为发送方生成的签名值的第二部分。
6.根据权利要求5所述的利用如权利要求4所述的基于SOC的保密通信系统进行保密通信的方法,其特征在于,所述步骤I')进一步包括:I1')生成第一级联字节流T1=ENT L||ID||a||b||xG||yG||xA||yA,其中,ID为签名者标识,ENT L是由ID的长度转换而成的两个字节数据,a为椭圆曲线方程的一次项曲线参数,b为椭圆曲线方程的常数项曲线参数,xG为G的横坐标,yG为G的纵坐标,xA为公钥的横坐标,yA为公钥的纵坐标;
I2')将第一级联字节流T1按照512位为一块进行划分,根据划分的数量对第一级联字节流T1进行填充;
I3')填充完成后调用所述SM3模块的硬件部分完成数据扩展、迭代压缩和加密后输出第一杂凑值Z1;
I4')通过判断SM3状态寄存器的值是否为2,读取所述第一杂凑值Z1并将其存入数组中。
7.根据权利要求6所述的利用如权利要求4所述的基于SOC的保密通信系统进行保密通信的方法,其特征在于,所述步骤J')进一步包括:J1')将第一杂凑值Z1与所述SM2模块的签名输入sm2_in级联,得到第二级联字节流T2=Z1||sm2_in;
J2')再次调用所述SM3模块的硬件部分计算所述第二级联字节流T2的第二杂凑值Z2=SM3(T2),并将所述第二杂凑值Z2作为所述SM2模块签名的真正输入。
8.根据权利要求7所述的利用如权利要求4所述的基于SOC的保密通信系统进行保密通信的方法,其特征在于,所述步骤K')进一步包括:K1')软件调用所述RNG模块产生的随机数k,计算椭圆曲线点(x1,y1)=[k]G,其中x1为椭圆曲线点的横坐标,y1为椭圆曲线点的纵坐标;
K2')由软件调用点运算模块和模运算模块,计算r=(Z2+x1)mod n;其中,mod n为模n运算;
K3')判断是否满足r=0或r+k=n,如是,返回步骤K1');否则,计算s=((1+dA)-1·(k-r·dA))mod n,执行步骤K4');
K4')判断是否满足s=0,如是,返回步骤K1'),否则,执行步骤K5');
K5')判断SM2状态寄存器的值是否为2,如是,生成签名并将其存放在所述结构体数组(r,s)中,否则,继续本步骤的判断。
9.根据权利要求8所述的基于SOC的利用如权利要求4所述的基于SOC的保密通信系统进行保密通信的方法,其特征在于,还包括:L)将SM4模块的加解密密钥sm4_key和存放在sm4_inc_out数组中的SM4加密后的数据作为SM4模块解密的输入,通过调用所述SM4控制寄存器选择解密模式,并更新数据,启动运算,当读取所述SM4状态寄存器的值为2时,读取解密后的数据即为接收方接收到的发送方未加密之前的明文数据,完成数据的加解密过程;
或L')初始化所述SM3模块,执行步骤M');
M')生成第三级联字节流T1′=ENT L||ID||a||b||xG||yG||xA||yA;
N')将第三级联字节流T1′按照512位为一块进行划分,根据划分的数量对第三级联字节流T1′进行填充;
O')填充完成后调用所述SM3模块的硬件部分完成数据扩展、迭代压缩和加密后输出第三杂凑值Z1′;
P')通过判断所述SM3状态寄存器的值是否为2,读取所述第三杂凑值Z1′并将其存入数组中;
Q')将所述第三杂凑值Z1′与所述待验证消息sm2_in′级联,得到第四级联字节流T2′=Z1′||sm2_in′;
R')再次调用所述SM3模块的硬件部分计算第四杂凑值Z2′;
S')由软件调用所述模运算模块,计算t=(r′+s′)mod n,其中,r′为接收方接收到的签名的第一部分,s′为接收方接收到的签名的第二部分;
T')判断是否满足t=0,如是,则验证不通过;否则,由软件调用所述点运算模块和模运算模块,计算椭圆曲线点(x1′,y1′)=[s′]G+[t]PA,计算R=(Z2′+x1′)mod n,其中,x1′为椭圆曲线点的横坐标,y1′为椭圆曲线点的纵坐标,R为接收方生成的签名值的第一部分,[s′]G为椭圆曲线上点G的s′倍点,[t]PA为公钥PA的t倍点,执行步骤U′);
U′)判断所述SM2状态寄存器的值是否为2并对比检验R=r′是否成立,如是,则验证通过;否则,验证不通过。
10.根据权利要求9所述的基于SOC的利用如权利要求4所述的基于SOC的保密通信系统进行保密通信的方法,其特征在于,所述步骤L)进一步包括:L1)初始化所述SM4模块;
L2)将所述加解密密钥写入到SM4输入数据寄存器;
L3)所述SM4模块的硬件部分生成轮密钥并连续读取所述SM4状态寄存器的值;
L4)判断所述轮密钥是否已生成,如是,用户输入需要解密的数据,执行步骤L5)或R');
否则,返回步骤L2);
L5)启动SM4硬件解密运算,进行数据更新;
L6)再次读取所述SM4状态寄存器的值,并判断是否解密完成,如是,得到明文;否则,继续进行本步骤的判断。