CN108933651A - 基于soc的保密通信系统及保密通信的方法 - Google Patents
基于soc的保密通信系统及保密通信的方法 Download PDFInfo
- Publication number
- CN108933651A CN108933651A CN201710391288.3A CN201710391288A CN108933651A CN 108933651 A CN108933651 A CN 108933651A CN 201710391288 A CN201710391288 A CN 201710391288A CN 108933651 A CN108933651 A CN 108933651A
- Authority
- CN
- China
- Prior art keywords
- module
- register
- data
- rng
- hardware components
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3252—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于SOC的保密通信系统及保密通信的方法,系统包括挂载在AHB总线上的SM2模块、SM3模块和SM4模块,以及挂载在AHB总线的APB桥上的RNG模块、IIC接口模块、SPI接口模块、UART模块、GPIO模块和计时器模块,SM2模块、SM3模块、SM4模块和RNG模块均划分为用于实现底层运算的硬件部分和用于为运算系统提供控制流程的软件部分,SM2模块、SM3模块、SM4模块的硬件部分与其软件部分之间通过访问AHB接口寄存器实现通信,RNG模块的硬件部分与其软件部分之间通过访问APB接口寄存器实现通信。本发明能有效的减少芯片面积、提高系统运算效率和性能。
Description
技术领域
本发明涉及数据安全领域,特别涉及一种基于SOC的保密通信系统及保密通信的方法。
背景技术
互联网技术的飞速发展对我国信息安全提出挑战,大部分智能设备都存在严重安全漏洞,例如弱身份认证、Web应用漏洞、用户隐私泄漏等。这些缺陷会让攻击者能够轻易入侵用户网络,窃听甚至控制设备。由于安全需求巨大,国际IT巨头都在大力发展安全芯片。
为了保障商用密码安全,国家密码管理局在2010年12月提出了SM2椭圆曲线公钥密码算法、SM3密码杂凑算法、SM4分组密码算法等。该三种加密算法的有效结合满足了多种密码应用中的数据加解密、身份认证、数据完整性和真实性的安全需求,同时提高了安全产品的可信性与互操作性。
随着集成电路制造工艺的飞速发展,片上系统SOC应运而生。SOC极大地缩小了系统体积;减少了板级系统中芯片与芯片之间的互连延迟,从而提高了系统的性能;采用软硬件协同设计思想,提高了设计效率,缩短了设计周期,减少了产品的上市时间。因此SOC以其集成度高、体积小、功耗少、可靠性好、产品问世周期短等优点得到了越来越广泛地应用。
目前现有技术通过软硬件协同设计没有提出具体的划分方式或对算法模块的架构分析与性能表征不足,不能有效的减少芯片面积、提高系统运算效率和性能。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种能有效的减少芯片面积、提高系统运算效率和性能的基于SOC的保密通信系统及保密通信的方法。
本发明解决其技术问题所采用的技术方案是:构造一种基于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接口寄存器实现通信。
在本发明所述的基于SOC的保密通信系统中,所述SM2模块的硬件部分包括通过AHB总线相连接的模运算模块、点运算模块、多倍点模块和第一AHB接口,所述SM3模块的硬件部分包括通过AHB总线相连接的扩展模块、迭代压缩模块、加密模块和第二AHB接口,所述SM4模块的硬件部分包括通过AHB总线相连接的轮密钥控制生成模块、加/解密模块和第三AHB接口,所述RNG模块的硬件部分包括通过AHB总线的APB桥相连接的随机数生成模块和APB接口。
在本发明所述的基于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位为寄存器的实际偏移地址。
在本发明所述的基于SOC的保密通信系统中,所述SM2模块的寄存器包括与所述第一AHB接口连接的SM2输入数据寄存器、SM2输出数据寄存器、SM2控制寄存器和SM2状态寄存器,所述SM3模块的寄存器包括与所述第二AHB接口连接的SM3输入数据寄存器、SM3输出数据寄存器、SM3控制寄存器和SM3状态寄存器,所述SM4模块的寄存器包括与所述第三AHB接口连接的SM4输入数据寄存器、SM4输出数据寄存器、SM4控制寄存器和SM4状态寄存器,所述RNG模块的寄存器包括分别与所述APB接口连接的RNG控制寄存器、RNG状态寄存器和RNG数据寄存器。
本发明还涉及一种利用上述基于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为发送方生成的签名值的第二部分。
在本发明所述的方法中,所述步骤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并将其存入数组中。
在本发明所述的方法中,所述步骤J')进一步包括:
J1')将第一杂凑值Z1与所述SM2模块的签名输入sm2_in级联,得到第二级联字节流T2=Z1||sm2_in;
J2')再次调用所述SM3模块的硬件部分计算所述第二级联字节流T2的第二杂凑值Z2=SM3(T2),并将所述第二杂凑值Z2作为所述SM2模块签名的真正输入。
在本发明所述的方法中,所述步骤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)中,否则,继续本步骤的判断。
在本发明所述的方法中,还包括:
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′是否成立,如是,则验证通过;否则,验证不通过。
在本发明所述的方法中,所述步骤L)进一步包括:
L1)初始化所述SM4模块;
L2)将所述加解密密钥写入到SM4输入数据寄存器;
L3)所述SM4模块的硬件部分生成轮密钥并连续读取所述SM4状态寄存器的值;
L4)判断所述轮密钥是否已生成,如是,用户输入需要解密的数据,执行步骤L5)或R');否则,返回步骤L2);
L5)启动SM4硬件解密运算,进行数据更新;
L6)再次读取所述SM4状态寄存器的值,并判断是否解密完成,如是,得到明文;否则,继续进行本步骤的判断。
实施本发明的基于SOC的保密通信系统及保密通信的方法,具有以下有益效果:由于利用挂载在AHB总线上的SM2模块、SM3模块和SM4模块,挂载在AHB总线的APB桥上的RNG模块、IIC接口模块、SPI接口模块、UART模块、GPIO模块和计时器模块,SM2模块、SM3模块、SM4模块和RNG模块均划分为用于实现底层运算的硬件部分和用于为运算系统提供控制流程的软件部分,SM2模块、SM3模块、SM4模块的硬件部分与其软件部分之间通过访问AHB接口寄存器实现通信,RNG模块的硬件部分与其软件部分之间通过访问APB接口寄存器实现通信,并实现了具有签名验签功能的数据的加解密系统,因此其能有效的减少芯片面积、提高系统运算效率和性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明基于SOC的保密通信系统及保密通信的方法一个实施例中系统的结构示意图;
图2为所述实施例方法中发送方执行的流程图;
图3为所述实施例中调用SM3模块的接口寄存器初始化SM3模块,调用SM3模块的硬件部分计算第一杂凑值Z1的具体流程图;
图4为所述实施例中再次调用SM3模块的硬件部分计算第二杂凑值Z2的具体流程图;
图5为所述实施例中调用所述模运算模块、点运算模块和软件实现签名流程,并将签名数据放在结构体数组(r,s)中的具体流程图;
图6为所述实施例中接收方执行的流程图;
图7为所述实施例中实现数据的加解密过程的具体流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明基于SOC的保密通信系统及保密通信的方法实施例中,该基于SOC的保密通信系统的结构示意图如图1所示。图1中,该基于SOC的保密通信系统包括SM2模块1、SM3模块2、SM4模块3、RNG模块4、IIC接口模块5、SPI接口模块6、UART模块7、GPIO模块8和计时器模块9,其中,SM2模块1、SM3模块2和SM4模块3挂载在AHB总线上,RNG模块4、IIC接口模块5、SPI接口模块6、UART模块7、GPIO模块8和计时器模块9挂载在AHB总线的APB桥上,SM2模块1、SM3模块2、SM4模块3、RNG模块4、IIC接口模块5、SPI接口模块6、UART模块7、GPIO模块8和计时器模块9均通过访问接口寄存器的方式进行数据交互,SM2模块1、SM3模块2、SM4模块3和RNG模块4均划分为用于实现底层运算的硬件部分和用于为运算系统提供控制流程的软件部分,SM2模块1、SM3模块2、SM4模块3的硬件部分与其软件部分之间通过访问AHB接口寄存器实现通信,RNG模块4的硬件部分与其软件部分之间通过访问APB接口寄存器实现通信。通过合理的划分软硬件模块,并通过访问接口寄存器实现高效、高安全性的数据加解密和签名验签的保密通信。本发明能有效的减少芯片面积、提高系统运算效率和性能。
本实施例中,SM2模块1的硬件部分包括通过AHB总线相连接的模运算模块、点运算模块、多倍点模块和第一AHB接口,SM3模块2的硬件部分包括通过AHB总线相连接的扩展模块、迭代压缩模块、加密模块和第二AHB接口,SM4模块3的硬件部分包括通过AHB总线相连接的轮密钥控制生成模块、加/解密模块和第三AHB接口,RNG模块4的硬件部分包括通过AHB总线上的APB桥相连接的随机数生成模块和APB接口(图中未示出)。
具体的,通过对算法本身的执行时间和算法模块在算法实现过程中的被调用的次数进行建模分析,最复杂的运算模块由硬件实现,通过改进交错模乘算法和共用状态机,可以减少加法器的数量和调度及状态数。应用层和各模块的配置、控制和数据读取等由软件实现,在不影响性能的情况下,提高硬件的灵活性。可节省多个寄存器资源,方便对算法进行改动。额外开销主要为处理器的指令调用及数据的传输,这些影响十分有限。软硬件划分方式请见表1:
表1
该基于SOC的保密通信系统的内存空间为0x00000000-0x0001ffff,大小为128KB,下面主要介绍安全模块部分。
SM2模块1的地址空间为0x50001000-0x50001fff,地址位中的第0位(bit0)和第1位(bit1)为空闲,第2-5位(bit2-bit5)为256位数据的内部指针,第6-11位(bit6-bit11)为寄存器的实际偏移地址。SM2模块1的寄存器包括分别与第一AHB接口连接的SM2输入数据寄存器、SM2输出数据寄存器、SM2控制寄存器CONTROL1和SM2状态寄存器STATUS1。SM2模块1中各寄存器的地址和功能描述如表2所示。
表2
SM3模块2的地址空间为0x50002000-0x50002fff,地址位中的第0位(bit0)和第1位(bit1)为空闲,第2-5位(bit2-bit5)为256位数据的内部指针,第6-11位(bit6-bit11)为寄存器实际偏移地址。SM3模块2的寄存器包括分别与第二AHB接口连接的SM3输入数据寄存器MSG_IN、SM3输出数据寄存器MSG_OUT、SM3控制寄存器CONTROL2和SM3状态寄存器STATUS2。SM3模块2中各寄存器的地址和功能描述如表3所示。
表3
SM4模块3的地址空间为0x50003000-0x50003fff,地址位中的第0位和第1位为空闲,第2-5位为256位数据的内部指针,第6-11位为寄存器的实际偏移地址。SM4模块3的寄存器包括分别与第三AHB接口连接的SM4输入数据寄存器X_in、SM4输出数据寄存器Y_out、SM4控制寄存器Control_reg1和SM4状态寄存器Status_reg1。SM4模块3中各寄存器的地址和功能描述如表4所示。
表4
RNG模块4的地址空间为0x40015000-0x40015fff,地址位中的第0位和第1位为空闲,第2-5位为256位数据的内部指针,第6-11位为寄存器的实际偏移地址。RNG模块4的寄存器包括分别与APB接口连接的RNG控制寄存器ctrlr0、RNG状态寄存器status_reg2和RNG数据寄存器data_reg。RNG模块4中各寄存器的地址和功能描述如表5所示。
表5
本发明还涉及一种利用上述基于SOC的保密通信系统进行保密通信的方法,上述基于SOC的保密通信系统为一套完整的数据加解密和用户身份认证(签名验签)安全系统,该系统中,其中SM2模块1、SM3模块2和RNG模块4实现数字签名验签,SM4模块3和RNG模块4用于实现数据加解密。图2中为本实施例方法中发送方执行的流程图,图2中,该方法包括如下步骤:
步骤S01初始化SM2模块、SM3模块、SM4模块和RNG模块,通过软件定义结构体分别指向SM2模块的硬件部分、SM3模块的硬件部分、SM4模块的硬件部分和RNG模块的硬件部分的基地址:本步骤中,初始化SM2模块、SM3模块、SM4模块和RNG模块,通过软件定义结构体分别指向SM2模块的硬件部分、SM3模块的硬件部分、SM4模块的硬件部分和RNG模块的硬件部分的基地址。由于各模块的寄存器地址空间连续,故可以使用结构体通过改变偏移地址的方式直接访问各接口寄存器。
步骤S02软件通过调用RNG控制寄存器初始化复位RNG模块:本步骤中,软件通过调用RNG控制寄存器初始化复位RNG模块。
步骤S03RNG控制寄存器选择真随机数模式并启动:本步骤中,RNG控制寄存器选择真随机数模式并启动。值得一提的是,有两种模式,这两种模式分别是伪随机数模式和真随机数模式,本步骤中选择真随机数模式。
步骤S04软件启动RNG模块,并读取RNG状态寄存器的值:本步骤中,软件启动RNG模块,硬件产生一轮最多1024位的随机数,软件读取RNG状态寄存器的值。
步骤S05判断FIFO是否已满:本步骤中,判断FIFO是否已满,如果判断的结果为是,则执行步骤S06、步骤S06′或步骤S06〞,否则,返回步骤S04。
步骤S06读取SM4数据寄存器的值并存于key数组中,并将key数组中的第一成员至第四成员作为SM4模块的加解密密钥sm4_key:如果上述步骤S05的判断结果为是,则可以执行本步骤。本步骤中,读取SM4数据寄存器的值并存于key数组中,由于初始化使得输出的数据即key数组中第0成员key[0]为0,key数组中的第一成员key[1]之后的数据为有效数据,故将key数组中的第一成员key[1]至第四成员key[4]作为SM4模块的加解密密钥sm4_key。key数组中包含32个成员,每个所述成员的长度都为4个字节。执行完本步骤,执行步骤S07。
步骤S00用户随机输入需要加密的数据,软件通过调用SM4控制寄存器初始化复位SM4模块,并进行数据更新:本步骤中,用户随机输入需要加密的数据,软件通过调用SM4控制寄存器初始化复位SM4模块,并进行数据更新。执行完本步骤,执行步骤S07。
步骤S07当SM4模块第一次被激活时,通过软件将所述加解密密钥写入到SM4输入数据寄存器:本步骤中,当SM4模块第一次被激活时,通过软件将所述加解密密钥写入到SM4输入数据寄存器,写入后等待一段时间,这段时间可以释放AHB总线。执行完本步骤,执行步骤S08。
步骤S08硬件生成轮密钥并连续读取SM4状态寄存器的值,并判断轮密钥是否已生成:本步骤中,通过控制SM4控制寄存器选择加密模式,输入需要加密的数据,启动运算,硬件生成轮密钥并连续读取SM4状态寄存器的值,并判断轮密钥是否已生成,如果判断的结果为是,则执行步骤S09;否则,返回步骤S07。
步骤S09通过软件再次更新数据并输入需要加密的数据:本步骤中,轮密钥生成后,通过软件再次更新数据并输入需要加密的数据。
步骤S10启动SM4硬件加密运算:本步骤中,启动SM4硬件加密运算,进行硬件加密。
步骤S11软件读取SM4状态寄存器的值:本步骤中,软件读取SM4状态寄存器的值。
步骤S12判断加密是否完成:本步骤中,判断加密是否完成,如果判断的结果为是,则执行步骤S13;否则,返回步骤S11。
步骤S13将SM4加密后的数据存放在sm4_inc_out数组中,并将其作为SM2模块的签名输入sm2_in,同时发送给接收方作为待验证消息sm2_in′:如果上述步骤S12的判断结果为是,则执行本步骤。本步骤中,加密完成后,将SM4加密后的数据存放在sm4_inc_out数组中,由于非对称加密算法加密速度相比于对称算法慢10-100倍,所以用SM2加密算法加密小数据量的数据比较合理,本发明采用SM4加密后的128位数据作为需要进行签名的消息,即作为SM2模块的签名输入sm2_in,同时发送给接收方作为待验证消息sm2_in′。执行完本步骤,执行步骤S10'。
步骤S06'将key数组中的第五成员至第十二成员作为SM2模块签名所需的私钥dA:如果上述步骤S05的判断结果为是,则可以执行本步骤。本步骤中,将key数组中的第五成员key[5]至第十二成员key[12]作为SM2模块签名所需的私钥dA。
步骤S07'软件初始化点运算模块和模运算模块:本步骤中,软件初始化点运算模块和模运算模块。
步骤S08'由公钥PA=(xA,yA)=[dA]G,调用点运算模块计算出公钥PA作为发送方公钥:本步骤中,由公钥PA=(xA,yA)=[dA]G,调用点运算模块计算出公钥PA作为发送方公钥,其中,PA为公钥,xA为公钥的横坐标,yA为PA的纵坐标,G为椭圆曲线的一个基点,其阶为素数,[dA]G为椭圆曲线上点G的dA倍点。
步骤S09'调用SM3模块的接口寄存器初始化SM3模块,调用SM3模块的硬件部分计算第一杂凑值Z1:本步骤中,调用SM3模块的接口寄存器初始化SM3模块,调用SM3模块的硬件部分计算第一杂凑值Z1。
步骤S10'再次调用SM3模块的硬件部分计算第二杂凑值Z2:本步骤中,再次调用SM3模块的硬件部分计算第二杂凑值Z2。执行完本步骤,执行步骤S11'。
步骤S06〞将key数组中的第十三成员至第二十一成员作为SM2模块签名所需的随机数k:如果上述步骤S05的判断结果为是,则可以执行本步骤。本步骤中,将key数组中的第十三成员key[13]至第二十一成员key[21]作为SM2模块签名所需的随机数k,k∈[1,n-1],n>1,执行完本步骤,执行步骤S11'。
步骤S11'调用模运算模块、点运算模块和软件实现签名流程,并将签名数据存放在结构体数组(r,s)中:本步骤中,调用模运算模块、点运算模块和软件实现签名流程,并将签名数据存放在结构体数组(r,s)中,其中,r为发送方生成的签名值的第一部分,s为发送方生成的签名值的第二部分。这样就实现了发送方执行的流程。
本发明的方法可以减少算法模块本身的执行时间,减少模块在算法实现过程中的被调用的次数,相比硬件实现可节省多个寄存器资源,其实现更为灵活,方便对算法进行改动。
值得一提的是,上述步骤S09'还可以进一步细化,其细化后的流程图如图3所示。图3中,上述步骤S09'进一步包括:
步骤S91'生成第一级联字节流T1=ENT L||ID||a||b||xG||yG||xA||yA:本步骤中,进行签名之前先进行预处理操作,预处理由软件部分完成,首先生成第一个级联字节流T1=ENT L||ID||a||b||xG||yG||xA||yA,其中,ID为签名者标识,ENT L是由ID的长度转换而成的两个字节数据,a为椭圆曲线方程y2=x3+ax+b的一次项曲线参数,b为椭圆曲线方程y2=x3+ax+b的常数项曲线参数,xG为G的横坐标,yG为G的纵坐标,xA为公钥的横坐标,yA为公钥的纵坐标。
步骤S92'将第一级联字节流T1按照512位为一块进行划分,根据划分的数量对第一级联字节流T1进行填充:本步骤中,将第一级联字节流T1按照512位为一块进行划分,根据划分的数量对第一级联字节流T1进行填充。
步骤S93'填充完成后调用SM3模块的硬件部分完成数据扩展、迭代压缩和加密后输出第一杂凑值Z1:本步骤中,填充完成后调用SM3模块的硬件部分完成数据扩展、迭代压缩和加密后输出第一杂凑值Z1。
步骤S94'通过判断SM3状态寄存器的值是否为2,读取第一杂凑值Z1并将其存入数组中:本步骤中,通过判断SM3状态寄存器的值是否为2,读取第一杂凑值Z1并将其存入数组中。
对于本实施例而言,上述步骤S10'还可进一步细化,其细化后的流程图如图4所示。图4中,该步骤S10'进一步包括:
步骤S101'将第一杂凑值Z1与SM2模块的签名输入sm2_in级联,得到第二级联字节流T2=Z1||sm2_in:本步骤中,将第一杂凑值Z1与SM2模块的签名输入sm2_in级联,得到第二级联字节流T2=Z1||sm2_in。
步骤S102'再次调用SM3模块的硬件部分计算第二级联字节流T2的第二杂凑值Z2=SM3(T2),并将第二杂凑值Z2作为SM2模块签名的真正输入:本步骤中,再次调用SM3模块的硬件部分计算第二级联字节流T2的第二杂凑值Z2=SM3(T2),并将第二杂凑值Z2作为SM2模块签名的真正输入。
对于本实施例而言,上述步骤S11'还可进一步细化,其细化后的流程图如图5所示。图5中,上述步骤S11'进一步包括:
步骤S111'软件调用RNG模块产生的随机数k,计算椭圆曲线点(x1,y1)=[k]G:本步骤中。软件调用RNG模块产生的随机数k,计算椭圆曲线点(x1,y1)=[k]G,其中x1为椭圆曲线点的横坐标,y1为椭圆曲线点的纵坐标。
步骤S112'由软件调用点运算模块和模运算模块,计算r=(Z2+x1)mod n:本步骤中,由软件调用点运算模块和模运算模块,计算r=(Z2+x1)mod n,其中,mod n为模n运算,n为基点G的阶。
步骤S113'判断是否满足r=0或r+k=n:本步骤中,判断是否满足r=0或r+k=n,如果判断的结果为是,则执行步骤S114';否则,返回步骤S111'。
步骤S114'计算s=((1+dA)-1·(k-r·dA))mod n:如果上述步骤S113'判断的结果为是,则执行本步骤。本步骤中,计算s=((1+dA)-1·(k-r·dA))mod n。
步骤S115'判断是否满足s=0:本步骤中,判断是否满足s=0,如果判断的结果为是,则返回步骤S113';否则,执行步骤S116'。
步骤S116'判断SM2状态寄存器的值是否为2:本步骤中,通过控制SM2模块的输入数据寄存器选择模式和启动运算,判断SM2状态寄存器的值是否为2,如果判断的结果为是,则执行步骤S117';否则,执行进行本步骤的判断。
步骤S117'生成签名并将其存放在结构体数组(r,s)中:本步骤中,生成签名并将其存放在结构体数组(r,s)中。
图6为本实施例中接收方执行的流程图,图6中,该利用上述基于SOC的保密通信系统进行保密通信的方法还包括:
步骤S14将SM4模块的加解密密钥sm4_key和存放在sm4_inc_out数组中的SM4加密后的数据作为SM4模块解密的输入,通过调用SM4控制寄存器选择解密模式,并更新数据,启动运算,当读取SM4状态寄存器的值为2时,读取解密后的数据即为接收方接收到的发送方未加密之前的明文数据,完成数据的加解密过程:本步骤中,将SM4模块的加解密密钥sm4_key和存放在sm4_inc_out数组中的SM4加密后的数据作为SM4模块解密的输入,通过调用SM4控制寄存器选择解密模式,并更新数据,启动运算,当读取SM4状态寄存器的值为2时,也就是说,连续读取SM4状态寄存器的值,当SM4状态寄存器的值为2时即计算完成,读取解密后的数据即为接收方接收到的发送方未加密之前的明文数据,这样就完成了数据的加解密过程。
步骤S14'初始化SM3模块:本步骤中,初始化SM3模块。执行完本步骤,执行步骤S15'。
步骤S15'生成第三级联字节流T1′=ENT L||ID||a||b||xG||yG||xA||yA:本步骤中,为了检验收到的数字签名(r′,s′),其中,r′为接收方接收到的签名的第一部分,s′为接收方接收到的签名的第二部分,进行验签之前也要先进行预处理操作,预处理由软件部分完成,首先生成第三级联字节流T1′=ENT L||ID||a||b||xG||yG||xA||yA。
步骤S16'将第三级联字节流T1′按照512位为一块进行划分,根据划分的数量对第三级联字节流T1′进行填充:本步骤中,将第三级联字节流T1′按照512位为一块进行划分,根据划分的数量对第三级联字节流T1′进行填充。
步骤S17'填充完成后调用SM3模块的硬件部分完成数据扩展、迭代压缩和加密后输出第三杂凑值Z1′:本步骤中,填充完成后,调用SM3模块的硬件部分完成数据扩展、迭代压缩和加密后输出第三杂凑值Z1′,并将其存入数组中。
步骤S18'通过判断SM3状态寄存器的值是否为2,读取第三杂凑值Z1′并将其存入数组中:本步骤中,通过判断SM3状态寄存器的值是否为2,读取第三杂凑值Z1′并将其存入数组中。
步骤S19'将第三杂凑值Z1′与待验证消息sm2_in′级联,得到第四级联字节流T2′=Z1′||sm2_in′:本步骤中,将第三杂凑值Z1′与待验证消息sm2_in′级联,得到第四级联字节流T2′=Z1′||sm2_in′。
步骤S20'再次调用SM3模块的硬件部分计算第四杂凑值Z2′:本步骤中,再次调用SM3模块的硬件部分计算第四杂凑值Z2′。
步骤S21'软件调用模运算模块,计算t=(r′+s′)mod n:本步骤中,软件调用模运算模块,计算t=(r′+s′)mod n,其中,r′为接收方接收到的签名的第一部分,s′为接收方接收到的签名的第二部分。
步骤S22'判断是否满足t=0:本步骤中,判断是否满足t=0,如果判断的结果为是,则执行步骤S23';否则,执行步骤S24'。
步骤S23'验证不通过:如果上述步骤S22'的判断结果为是,则执行本步骤。本步骤中,验证不通过。
步骤S24'由软件调用点运算模块和模运算模块,计算椭圆曲线点(x1′,y1′)=[s′]G+[t]PA,计算R=(Z2′+x1′)mod n:如果上述步骤S22'的判断结果为否,则执行本步骤。本步骤中,由软件调用点运算模块和模运算模块,计算椭圆曲线点(x1′,y1′)=[s′]G+[t]PA,计算R=(Z2′+x1′)mod n,其中,x1′为椭圆曲线点的横坐标,y1′为椭圆曲线点的纵坐标,R为接收方生成的签名值的第一部分,[s′]G为椭圆曲线上点G的s′倍点,[t]PA为公钥PA的t倍点。执行完本步骤,执行步骤S25'。
步骤S25'判断SM2状态寄存器的值是否为2并对比检验R=r′是否成立:本步骤中,通过控制寄存器选择模式和启动运算,判断SM2状态寄存器的值是否为2(即为运算模块计算完成)并对比检验R=r′是否成立,如果判断的结果为是,则执行步骤S27';否则,执行步骤S26'。
步骤S26'验证不通过:如果上述步骤S25'的判断结果为否,则执行本步骤。本步骤中,验证不通过。
步骤S27'验证通过:如果上述步骤S25'的判断结果为是,则执行本步骤。本步骤中,验证通过。这样就实现了加解密和签名验签的流程。
对于本实施例而言,上述步骤S14还可进一步细化,其细化后的流程图如图7所示。图7中,上述步骤S14进一步包括:
步骤S141初始化SM4模块:本步骤中,初始化SM4模块。
步骤S142将加解密密钥写入到SM4输入数据寄存器:本步骤中,5将加解密密钥写入到SM4输入数据寄存器。
步骤S143SM4模块的硬件部分生成轮密钥并连续读取SM4状态寄存器的值:本步骤中,SM4模块的硬件部分生成轮密钥并连续读取SM4状态寄存器的值。
步骤S144判断轮密钥是否已生成:本步骤中,判断轮密钥是否已生成,如果判断的结果为是,则执行步骤S145;否则,返回步骤S142。
步骤S145用户输入需要解密的数据:本步骤中,用户输入需要解密的数据。执行完本步骤,执行步骤S146或步骤S20'。
步骤S146启动SM4硬件解密运算,进行数据更新:本步骤中,启动SM4硬件解密运算,进行数据更新。
步骤S147再次读取SM4状态寄存器的值,并判断是否解密完成:本步骤中,再次读取SM4状态寄存器的值,并判断是否解密完成,如果判断的结果为是,则执行步骤S148;否则,继续进行本步骤的判断。
步骤S148得到明文:如果上述步骤S147的判断结果为是,则执行本步骤。本步骤中,得到明文。
总之,本实施例中,通过对系统的运算复杂度和开发周期的研究与分析,在满足芯片低功耗和面积的前提下,设计出一种最佳性能的软硬件划分方式和实现保密通信的方法。本发明能减少算法模块本身的执行时间,减少模块在算法实现过程中的被调用的次数,相比硬件实现可节省多个寄存器资源,其实现更为灵活,方便对算法进行改动,其验签过程不需要对比摘要,只需公钥验签64字节签名即可。其能有效的减少芯片面积、提高系统运算效率和性能。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
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状态寄存器的值,并判断是否解密完成,如是,得到明文;否则,继续进行本步骤的判断。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710391288.3A CN108933651B (zh) | 2017-05-27 | 2017-05-27 | 基于soc的保密通信系统及保密通信的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710391288.3A CN108933651B (zh) | 2017-05-27 | 2017-05-27 | 基于soc的保密通信系统及保密通信的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108933651A true CN108933651A (zh) | 2018-12-04 |
CN108933651B CN108933651B (zh) | 2021-09-28 |
Family
ID=64451468
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710391288.3A Active CN108933651B (zh) | 2017-05-27 | 2017-05-27 | 基于soc的保密通信系统及保密通信的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108933651B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110048855A (zh) * | 2019-04-23 | 2019-07-23 | 东软集团股份有限公司 | 国密算法的引入方法及调用方法、及装置、设备、Fabric平台 |
WO2020232800A1 (zh) * | 2019-05-17 | 2020-11-26 | 深圳市网心科技有限公司 | 一种区块链网络中的数据处理方法、系统及相关设备 |
CN114564427A (zh) * | 2022-03-01 | 2022-05-31 | 四川创安微电子有限公司 | 一种ahb总线到i2c总线的总线桥、系统及方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663326B (zh) * | 2012-03-12 | 2015-02-18 | 东南大学 | 用于SoC的数据安全加密模块 |
CN202711261U (zh) * | 2012-08-16 | 2013-01-30 | 北京江南天安科技有限公司 | 一种加密卡 |
CN104202161B (zh) * | 2014-08-06 | 2018-05-04 | 广东电网公司电力科学研究院 | 一种SoC密码芯片 |
CN204719853U (zh) * | 2015-06-04 | 2015-10-21 | 深圳市证通电子股份有限公司 | 密码键盘 |
CN106650411A (zh) * | 2016-11-24 | 2017-05-10 | 天津津航计算技术研究所 | 密码算法验证系统 |
-
2017
- 2017-05-27 CN CN201710391288.3A patent/CN108933651B/zh active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110048855A (zh) * | 2019-04-23 | 2019-07-23 | 东软集团股份有限公司 | 国密算法的引入方法及调用方法、及装置、设备、Fabric平台 |
CN110048855B (zh) * | 2019-04-23 | 2022-03-15 | 东软集团股份有限公司 | 国密算法的引入方法及调用方法、及装置、设备、Fabric平台 |
WO2020232800A1 (zh) * | 2019-05-17 | 2020-11-26 | 深圳市网心科技有限公司 | 一种区块链网络中的数据处理方法、系统及相关设备 |
CN114564427A (zh) * | 2022-03-01 | 2022-05-31 | 四川创安微电子有限公司 | 一种ahb总线到i2c总线的总线桥、系统及方法 |
CN114564427B (zh) * | 2022-03-01 | 2023-06-23 | 四川创安微电子有限公司 | 一种ahb总线到i2c总线的总线桥、系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108933651B (zh) | 2021-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106789052A (zh) | 一种基于量子通信网络的远程密钥颁发系统及其使用方法 | |
GB2585885A (en) | Cryptographic architecture for cryptographic permutation | |
CN108898475A (zh) | 基于属性加密的联盟区块链实现信贷方法及系统 | |
CN110414244A (zh) | 加密卡、电子设备及加密服务方法 | |
CN108345806A (zh) | 一种硬件加密卡和加密方法 | |
CN112202568A (zh) | 软硬件协同设计sm9数字签名通信方法和系统 | |
CN105306194A (zh) | 供加密档案和/或通讯协定的多重加密方法与系统 | |
CN113573304B (zh) | 签名实现、验签方法以及签名终端、验签终端和存储介质 | |
CN103716166A (zh) | 一种自适应混合加密方法、装置以及加密通信系统 | |
CN106027261B (zh) | 基于fpga的luks认证芯片电路及其密码恢复方法 | |
WO2021082647A1 (zh) | 一种联合学习系统、训练结果聚合的方法及设备 | |
CN109921905B (zh) | 基于私钥池的抗量子计算密钥协商方法和系统 | |
CN108933651A (zh) | 基于soc的保密通信系统及保密通信的方法 | |
CN206611427U (zh) | 一种基于可信计算装置的密钥存储管理系统 | |
CN104281272B (zh) | 密码输入处理方法及装置 | |
CN109981275A (zh) | 数据传输方法、装置、系统、设备以及存储介质 | |
CN109787758A (zh) | 基于私钥池和Elgamal的抗量子计算MQV密钥协商方法和系统 | |
CN108718233A (zh) | 一种加密方法、计算机设备及存储介质 | |
CN109934001A (zh) | 一种基于正态云模型的数据加密方法 | |
CN110417553A (zh) | 多方保密通信方法、装置及用户终端 | |
CN206611428U (zh) | 一种基于量子通信网络的远程密钥颁发系统 | |
Xu et al. | An efficient blockchain‐based privacy‐preserving scheme with attribute and homomorphic encryption | |
CN107911221B (zh) | 固态盘数据安全存储的密钥管理方法 | |
CN117786758B (zh) | 基于可信执行环境的密态数据库系统和电子设备 | |
CN101515853B (zh) | 信息终端及其信息安全装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |