CN113935018A - 密码运算方法、片上***及计算机设备 - Google Patents
密码运算方法、片上***及计算机设备 Download PDFInfo
- Publication number
- CN113935018A CN113935018A CN202111536508.XA CN202111536508A CN113935018A CN 113935018 A CN113935018 A CN 113935018A CN 202111536508 A CN202111536508 A CN 202111536508A CN 113935018 A CN113935018 A CN 113935018A
- Authority
- CN
- China
- Prior art keywords
- cryptographic
- key parameter
- digital certificate
- public key
- control unit
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/45—Structures or tools for the administration of authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Storage Device Security (AREA)
Abstract
本申请提供一种密码运算方法、片上***及计算机设备,涉及数据处理技术领域。该方法可以应用于计算机设备,计算机设备运行有操作***,操作***用于分配多种类型的软件接口;该计算机设备设置有片上***,片上***包括控制单元和密码引擎单元,密码引擎单元设置有国密算法,该方法包括:控制单元接收密码运算请求;控制单元响应密码运算请求,指示密码引擎单元执行密码运算请求需要执行的国密算法;密码引擎单元在执行国密算法时,调用多种类型的软件接口,以执行与国密算法匹配的功能,使得本申请提供的密码运算方法可以适用于需要多种类型的软件接口、且安全度较高的国密算法,进而对待加密内容进行加密时,可以提高安全性。
Description
技术领域
本申请涉及数据处理技术领域,特别涉及一种密码运算方法、片上***及计算机设备。
背景技术
RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。RSA取名来自他们三者的名字。RSA公开密钥密码体制的原理是:根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
现有的,在各种操作***中部署加密算法时,主要是基于RSA加密算法实现。
但由于RSA算法数学原理相对简单,因此RSA算法的安全强度相对较低。因此,现有的RSA算法已无法满足目前的加密需求。
发明内容
本申请的目的在于,针对上述现有技术中的不足,提供一种密码运算方法、片上***及计算机设备,可以适用于多种类型的软件接口、且安全度较高的国密算法,进而对待加密内容进行加密时,可以提高安全性。
为实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本发明提供一种密码运算方法,所述方法应用于计算机设备,所述计算机设备运行有操作***,所述操作***用于分配多种类型的软件接口;所述计算机设备设置有片上***,所述片上***包括控制单元和密码引擎单元,所述控制单元与所述密码引擎单元相连,所述密码引擎单元设置有国密算法,所述方法包括:
所述控制单元接收密码运算请求;
所述控制单元响应所述密码运算请求,指示所述密码引擎单元执行所述密码运算请求需要执行的国密算法;
所述密码引擎单元在执行国密算法时,调用所述多种类型的软件接口,以执行与所述国密算法匹配的功能。
采用上述方法实施例,可使得本申请提供的密码运算方法适用于多种类型的软件接口、且安全度较高的国密算法,进而对待加密内容进行加密时,可以提高片上***的安全性。
在可选的实施方式中,所述片上***还包括与所述控制单元连接的第一存储单元,所述密码运算请求包括:签名请求,所述签名请求包括:第一待发送消息以及所述第一待发送消息的消息请求方发送的公钥参数,所述多种类型的软件接口包括:签名接口;所述密码引擎单元在执行国密算法时,调用所述多种类型的软件接口,以执行与所述国密算法匹配的功能,包括:
所述密码引擎单元通过所述签名接口采用预设的第一私钥参数和所述第一待发送消息的消息请求方发送的公钥参数对所述第一待发送消息执行签名动作,生成第一数字证书,并将所述第一数字证书存储在所述第一存储单元中。采用上述方法实施例,可使得本申请提供的密码运算方法支持包括签名动作的国密算法,进而适用于安全度较高的国密算法。
在可选的实施方式中,所述密码运算请求还包括第一数字证书获取请求,所述多种类型的软件接口还包括:数字证书获取接口,所述方法还包括:
所述密码引擎单元通过所述数字证书获取接口获取所述第一数字证书,以向所述控制单元返回所述第一数字证书。采用上述方法实施例,可使得本申请提供的密码运算方法向用户返回所述第一数字证书,提高本申请密码运算方法的适用性。
在可选的实施方式中,所述密码引擎单元通过所述数字证书获取接口获取所述第一数字证书,以向所述控制单元返回所述第一数字证书,包括:
所述密码引擎单元通过所述数字证书获取接口向所述控制单元返回所述第一数字证书的长度;所述第一数字证书的长度用于所述控制单元根据所述第一数字证书的长度为所述第一数字证书动态分配第一内存空间,将所述第一数字证书从所述第一存储单元搬移至所述第一内存空间以返回所述第一数字证书,并在返回所述第一数字证书后释放所述第一内存空间。采用上述方法实施例,可以在第一数字证书传输过程中保证本申请密码运算方法的运算性能。
在可选的实施方式中,所述密码运算请求包括验签请求,所述验签请求包括:第二数字证书,以及所述第二数字证书的消息发送方所发送的公钥参数,所述多种类型的软件接口包括:验签接口;所述密码引擎单元在执行国密算法时,调用所述多种类型的软件接口,以执行与所述国密算法匹配的功能,包括:
所述密码引擎单元通过所述验签接口采用预设的第一私钥参数和所述第二数字证书的消息发送方所发送的公钥参数对所述第二数字证书执行验签动作,得到验签结果。采用上述方法实施例,可使得本申请提供的密码运算方法支持包括验签动作的国密算法,进而适用于安全度较高的国密算法。
在可选的实施方式中,所述密码运算请求还包括:密钥设置请求,所述密钥设置请求包括:所述第一私钥参数,以及与所述第一私钥参数匹配的第一公钥参数,所述多种类型的软件接口包括:公钥接口和私钥接口;
所述密码引擎单元通过所述签名接口采用预设的第一私钥参数和所述第一待发送消息的消息请求方发送的公钥参数对所述第一待发送消息执行签名动作之前,所述方法还包括:
所述密码引擎单元通过所述公钥接口和所述私钥接口,采用所述第一公钥参数和所述第一私钥参数设置所述国密算法在执行所述签名动作时所需要的参数。采用上述方法实施例,可使得本申请提供的密码运算方法支持设置所述国密算法在执行所述签名动作时所需要的参数,提高本申请密码运算方法的灵活性。
在可选的实施方式中,所述密码引擎单元通过所述公钥接口和所述私钥接口,采用所述第一公钥参数和所述第一私钥参数设置所述国密算法在执行所述签名动作时所需要的参数,包括:
所述密码引擎单元通过所述国密算法确定所述第一私钥参数和所述第一公钥参数是否匹配,若匹配成功,则通过所述公钥接口和所述私钥接口,采用所述第一公钥参数和所述第一私钥参数设置所述国密算法在执行所述签名动作时所需要的参数。采用上述方法实施例,可使得本申请提供的密码运算方法中所设置密钥参数的有效性,保证国密算法的正常运行。
在可选的实施方式中,所述片上***还包括:与所述控制单元连接的第二存储单元和第三存储单元;
所述密码引擎单元通过所述公钥接口和所述私钥接口,采用所述第一公钥参数和所述第一私钥参数设置所述国密算法在执行所述签名动作时所需要的参数,包括:
所述密码引擎单元通过所述公钥接口和所述私钥接口,向所述控制单元返回所述第一公钥参数的第一长度和第一私钥参数的第二长度;
其中,所述第一长度用于所述控制单元根据所述第一长度为所述第一公钥参数分配第二内存空间,并将所述第一公钥参数从所述第二内存空间存储至所述第二存储单元中;所述第二长度用于所述控制单元根据所述第二长度为所述第一私钥参数分配第三内存空间,并将所述第一私钥参数从所述第三内存空间存储至所述第三存储单元中。采用上述方法实施例,可使得本申请提供的密码运算方法在设置第一公钥参数、第一私钥参数的过程中,保证本申请密码运算方法的运算性能。
在可选的实施方式中,所述控制单元将所述第一公钥参数从所述第二内存空间存储至所述第二存储单元中之后,还包括:
所述控制单元释放为所述第一公钥参数分配的所述第二内存空间;
所述控制单元将所述第一私钥参数从所述第三内存空间存储至所述第三存储单元中之后,还包括:
所述控制单元释放为所述第一私钥参数分配的所述第三内存空间。采用上述方法实施例,可使得本申请提供的密码运算方法避免内存泄露的问题。
在可选的实施方式中,所述操作***包括Linux内核态,所述Linux内核态设置有所述多种类型的软件接口。采用上述方法实施例,可使得本申请提供的密码运算方法可应用于Linux操作***,提高本申请方法的适用性。
第二方面,本发明提供一种片上***,所述片上***所在的计算机设备运行有操作***,所述操作***用于分配多种类型的软件接口;所述片上***包括控制单元和密码引擎单元,所述控制单元与所述密码引擎单元相连,所述密码引擎单元设置有国密算法;其中,所述控制单元被配置为执行前述实施方式任一项所述的密码运算方法的步骤。
第三方面,本发明提供一种计算机设备,所述计算机设备包括如前述实施方式所述的片上***。
第四方面,本发明提供一种密码运算装置,所述密码运算装置应用于计算机设备,所述计算机设备运行有操作***,所述操作***用于分配多种类型的软件接口;所述计算机设备设置有片上***,所述片上***包括控制单元和密码引擎单元,所述控制单元与所述密码引擎单元相连,所述密码引擎单元设置有国密算法,其中,
所述控制单元,用于接收密码运算请求;
所述控制单元,还用于响应所述密码运算请求,指示所述密码引擎单元执行所述密码运算请求需要执行的国密算法;
所述密码引擎单元在执行国密算法时,调用所述多种类型的软件接口,以执行与所述国密算法匹配的功能。
在一些实施例中,所述片上***还包括与所述控制单元连接的第一存储单元,所述密码运算请求包括:签名请求,所述签名请求包括:第一待发送消息以及所述第一待发送消息的消息请求方发送的公钥参数,所述多种类型的软件接口包括:签名接口;
所述控制单元,具体用于响应所述签名请求,指示所述密码引擎单元执行所述签名请求需要执行的国密算法;所述密码引擎单元通过所述签名接口采用预设的第一私钥参数和所述第一待发送消息的消息请求方发送的公钥参数对所述第一待发送消息执行签名动作,生成第一数字证书,并将所述第一数字证书存储在所述第一存储单元中。
在一些实施例中,所述密码运算请求还包括第一数字证书获取请求,所述多种类型的软件接口还包括:数字证书获取接口,所述控制单元,还用于响应所述第一数字证书获取请求,指示所述密码引擎单元执行所述第一数字证书获取请求需要执行的国密算法;所述密码引擎单元通过所述数字证书获取接口获取所述第一数字证书,以向所述控制单元返回所述第一数字证书。
在一些实施例中,所述控制单元,还用于响应所述第一数字证书获取请求,指示所述密码引擎单元执行所述第一数字证书获取请求需要执行的国密算法;所述密码引擎单元通过所述数字证书获取接口向所述控制单元返回所述第一数字证书的长度;所述第一数字证书的长度用于所述控制单元根据所述第一数字证书的长度为所述第一数字证书动态分配第一内存空间,将所述第一数字证书从所述第一存储单元搬移至所述第一内存空间以返回所述第一数字证书,并在返回所述第一数字证书后释放所述第一内存空间。
在一些实施例中,所述密码运算请求包括验签请求,所述验签请求包括:第二数字证书,以及所述第二数字证书的消息发送方所发送的公钥参数,所述多种类型的软件接口包括:验签接口;所述控制单元,还用于响应所述验签请求,指示所述密码引擎单元执行所述验签请求需要执行的国密算法;所述密码引擎单元通过所述验签接口采用预设的第一私钥参数和所述第二数字证书的消息发送方所发送的公钥参数对所述第二数字证书执行验签动作,得到验签结果。
在一些实施例中,所述密码运算请求还包括:密钥设置请求,所述密钥设置请求包括:所述第一私钥参数,以及与所述第一私钥参数匹配的第一公钥参数,所述多种类型的软件接口包括:公钥接口和私钥接口;所述控制单元,还用于响应所述密钥设置请求,指示所述密码引擎单元执行所述密钥设置请求需要执行的国密算法;所述密码引擎单元通过所述公钥接口和所述私钥接口,采用所述第一公钥参数和所述第一私钥参数设置所述国密算法在执行所述签名动作时所需要的参数。
在一些实施例中,所述控制单元,还用于响应所述密钥设置请求,指示所述密码引擎单元执行所述密钥设置请求需要执行的国密算法;所述密码引擎单元通过所述国密算法确定所述第一私钥参数和所述第一公钥参数是否匹配,若匹配成功,则通过所述公钥接口和所述私钥接口,采用所述第一公钥参数和所述第一私钥参数设置所述国密算法在执行所述签名动作时所需要的参数。
在一些实施例中,所述片上***还包括:与所述控制单元连接的第二存储单元和第三存储单元;所述控制单元,还用于响应所述密钥设置请求,指示所述密码引擎单元执行所述密钥设置请求需要执行的国密算法;所述密码引擎单元通过所述公钥接口和所述私钥接口,向所述控制单元返回所述第一公钥参数的第一长度和第一私钥参数的第二长度;
其中,所述第一长度用于所述控制单元根据所述第一长度为所述第一公钥参数分配第二内存空间,并将所述第一公钥参数从所述第二内存空间存储至所述第二存储单元中;所述第二长度用于所述控制单元根据所述第二长度为所述第一私钥参数分配第三内存空间,并将所述第一私钥参数从所述第三内存空间存储至所述第三存储单元中。
在一些实施例中,所述控制单元,还用于将所述第一公钥参数从所述第二内存空间存储至所述第二存储单元中之后,释放为所述第一公钥参数分配的所述第二内存空间;所述控制单元,还用于将所述第一私钥参数从所述第三内存空间存储至所述第三存储单元中之后,释放为所述第一私钥参数分配的所述第三内存空间。
在一些实施例中,所述操作***包括Linux内核态,所述Linux内核态设置有所述多种类型的软件接口。
本申请的有益效果是:
本申请实施例提供的密码运算方法、片上***及计算机设备中,该方法可以应用于计算机设备,计算机设备运行有操作***,操作***用于分配多种类型的软件接口;该计算机设备设置有片上***,片上***包括控制单元和密码引擎单元,控制单元与密码引擎单元相连,密码引擎单元设置有国密算法,该方法包括:控制单元接收密码运算请求;控制单元响应密码运算请求,指示密码引擎单元执行密码运算请求需要执行的国密算法;密码引擎单元在执行国密算法时,调用多种类型的软件接口,以执行与国密算法匹配的功能,实现了对于不同的密码运算请求,通过调用多种类型的软件接口可以执行与国密算法匹配的功能,使得本申请提供的密码运算方法可以适用于需要多种类型的软件接口、且安全度较高的国密算法,进而对待加密内容进行加密时,可以提高安全性。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种计算机设备的软件架构图;
图2为本申请实施例提供的一种片上***的硬件架构图;
图3为本申请实施例提供的一种密码运算方法的流程示意图;
图4为本申请实施例提供的另一种密码运算方法的流程示意图;
图5为本申请实施例提供的又一种密码运算方法的流程示意图;
图6为本申请实施例提供的再一种密码运算方法的流程示意图;
图7为本申请实施例提供的一种电子设备结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
RSA算法是一种非对称的加密算法,它通常是先生成一对RSA密钥,其中之一是保密密钥(私钥),由用户保存;另一个为公开密钥(公钥),可对外公开;要加密传输内容时,比如A要给B传输信息,此时A先用B的公钥将内容加密后传输,B收到A传输过来的信息后用自己的私钥解密。可以看出,RSA算法的加密过程比较简单,因此其安全强度相对较低,已无法满足目前的加密需求。
有鉴于此,本申请实施例提供一种密码运算方法,该方法可以运行于计算机设备中,应用该方法对待加密内容进行加密时,可以提高安全性。
在对本申请所提供的密码运算方法进行详细说明之前,先对该密码运算方法所应用的计算机设备进行说明,以便更好地理解本申请的密码运算方法。
请参考图1,为本申请实施例提供的一种计算机设备的软件架构图。其中,计算机设备100可以运行有操作***,操作***用于分配多种类型的软件接口,操作***可以包括内核态与用户态两种运行级别,其中,从代码执行的角度来看,当一个任务或进程执行***调用而陷入内核代码中执行时,称为任务或进程处于内核态,此时,处理器处于内核代码中执行,可以执行任意的指令。当任务或进程执行自身的代码时,称为任务或进程处于用户态。此时,处理器处于用户代码中执行,仅能执行非特权指令。
为了更好的理解本申请,以Linux操作***为例进行说明,其中,从两种运行级别的应用来看,内核从本质上看是一种软件,用于控制计算机的硬件资源,并提供上层应用程序运行的环境;用户态即上层应用程序的活动空间,应用程序的执行必须依托于内核提供的资源,包括CPU资源、存储资源、I/O资源等,其中,为了使上层应用能够访问到这些资源,内核必须为上层应用提供访问的接口:即***调用,***调用是操作***的最小功能单位。
其中,对于内核态来说,内核态又可以包括:应用层交互空间(user spaceinterface)、加密和解密子***(crypto)以及密码引擎单元,密码运算过程中,用户态可以通过套接字(socket)方式调用到Linux内核的应用层交互空间,再通过加密和解密子***调用到密码引擎单元里面相应的算法。其中,加密和解密子***(crypto)中可以注册有密码引擎单元对应的硬件驱动接口,在实际应用过程中,若需要调用密码引擎单元里面相应的算法时,可以对密码引擎单元对应的硬件进行硬件初始化(例如,可以包括但不限于寄存器初始化)。
请参考图2,为本申请实施例提供的一种片上***的硬件架构图,该片上***200可以设置于上述计算机设备100中,该片上***200可以包括控制单元210、密码引擎单元220、第一存储单元240、第二存储单元250以及第三存储单元260,其中,密码引擎单元220、第一存储单元240、第二存储单元250以及第三存储单元260分别与控制单元210相连,密码引擎单元220设置有国密算法,可选地,各存储单元可以为静态随机存取存储器(StaticRandom-Access Memory,SRAM)、又或者,可以为动态随机存取存储器(Dynamic RandomAccess Memory,DRAM),在此不作限定,根据实际的应用场景可以灵活选择。
可选地,该片上***200可以支持DMA(Direct Memory Access,直接存储器访问)技术和AXI总线协议(Advanced eXtensible Interface),其中,基于DMA技术可以将待存储数据从内存空间搬移至存储单元,又或者,可以从存储单元中将已存储的存储数据搬移至内存空间;基于AXI总线协议,可以将数据从控制单元传输给密码引擎单元的算法硬件模块。
基于上述实施例提供的片上***,本申请实施例还提供一种上述片上***中的控制单元所执行的密码运算方法。请参考图3,为本申请实施例提供的一种密码运算方法的流程示意图,如图3所示,该方法包括:
S101、控制单元接收密码运算请求。
其中,密码运算请求可以是运行在本计算机设备中的其他程序发送给控制单元的运算请求,又或者,可以是与本计算机设备存在通信连接的其他计算机设备发送的,在此不作限定。当然,本申请在此并不限定所接收的密码运算请求的具体请求类型,可以包括但不限于:加密请求、解密请求、签名请求、验签请求等与国密算法有关的任何应用请求。
S102、控制单元响应密码运算请求,指示密码引擎单元执行密码运算请求需要执行的国密算法,密码引擎单元在执行国密算法时,调用多种类型的软件接口,以执行与国密算法匹配的功能。
控制单元接收到密码运算请求后,响应该密码运算请求,可以指示与其相连的密码引擎单元执行所设置的国密算法,且密码引擎单元在执行该国密算法时,可以调用操作***分配的多种类型的软件接口以执行与国密算法匹配的功能,也即实现了对于不同的密码运算请求,通过调用多种类型的软件接口可以执行与国密算法匹配的功能,使得本申请提供的密码运算方法可以适用于需要多种类型的软件接口、且安全度较高的国密算法,提高本申请密码运算方法的适用性。
在一些实施例中,结合上述图1进行说明,该密码运算请求具体可以通过socket方式发送给应用层交互空间,由该应用层交互空间转发到加密和解密子***,再由该加密和解密子***转发给密码引擎单元,以指示密码引擎单元执行密码运算请求需要执行的国密算法。此外,需要说明的是,本申请实施例中的国密算法指的是国家密码局认定的国产密码算法,可以包括但不限于SM1,SM2,SM3,SM4。
综上,本申请实施例提供一种密码运算方法,该方法可以应用于计算机设备,计算机设备运行有操作***,操作***用于分配多种类型的软件接口;该计算机设备设置有片上***,片上***包括控制单元和密码引擎单元,控制单元与密码引擎单元相连,密码引擎单元设置有国密算法,该方法包括:控制单元接收密码运算请求;控制单元响应密码运算请求,指示密码引擎单元执行密码运算请求需要执行的国密算法;密码引擎单元在执行国密算法时,调用多种类型的软件接口,以执行与国密算法匹配的功能,实现了对于不同的密码运算请求,通过调用多种类型的软件接口可以执行与国密算法匹配的功能,使得本申请提供的密码运算方法可以适用于需要多种类型的软件接口、且安全度较高的国密算法,进而对待加密内容进行加密时,可以提高安全性。
为了更好地理解本申请,下面以国密算法中的SM2算法为例说明本申请提供的密码运算方法,SM2算法是一种公钥密码算法,包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线加密(Elliptic CurveCryptography,ECC)实现,因此,相对于RSA算法,SM2算法的密码复杂度高、处理速度快、机器性能消耗更小,因此,应用SM2算法进行密码运算时,可以规避RSA算法存在的脆弱性和“预置后门”等安全风险。
其中,SM2算法有公钥和私钥之分,比如,要实现第一消息发送方和第一消息接收方之间消息的传输,共涉及两组四个密钥,其中,包括:第一消息发送方的公钥(PUB_A)和第一消息发送方的私钥(PRI_A)、第一消息接收方的公钥(PUB_B)和第一消息接收方的私钥(PRI_B)。一般地,公钥用来加密,私钥用来签名;通常公钥是公开出去的,但是私钥只能自己私密持有。公钥和私钥唯一对应,用某个公钥签名过的内容只能用对应的私钥才能解签验证;同样地,用某个私钥加密的内容只能用对应的公钥才能解密。
图4为本申请实施例提供的另一种密码运算方法的流程示意图。基于上述说明,可选地,参照图2所示,片上***还包括与控制单元连接的第一存储单元240,在一些实施例中,考虑到应用国密算法有需要进行签名的应用场景,在该场景下,上述密码运算请求可以包括:签名请求,该签名请求可以包括:第一待发送消息以及第一待发送消息的消息请求方发送的公钥参数,上述多种类型的软件接口包括:签名接口,那么参照图4所示,上述控制单元响应密码运算请求,指示密码引擎单元执行密码运算请求需要执行的国密算法,密码引擎单元在执行国密算法时,调用多种类型的软件接口,以执行与国密算法匹配的功能,包括:
S201、控制单元响应签名请求,指示密码引擎单元执行签名请求需要执行的国密算法,密码引擎单元通过签名接口采用预设的第一私钥参数和第一待发送消息的消息请求方发送的公钥参数对第一待发送消息执行签名动作,生成第一数字证书,并将第一数字证书存储在第一存储单元中。
其中,第一待发送消息的消息请求方也即请求获取第一待发送消息的请求方,可选地,该第一待发送消息的消息请求方对应的第一请求方设备可以为其他计算机设备、终端设备等,在此不作限定。可选地,第一待发送消息的消息请求方请求获取第一待发送消息时,可以事先通过第一请求方设备向本计算机设备发送第一待发送消息的消息请求方的公钥参数,当然,为了便于第一待发送消息的消息请求方在接收到本计算机设备发送的第一数字证书时,可以从该第一数字证书中提取得到第一待发送消息,本计算机设备可以将本端预设的第一公钥参数发送给第一请求方设备,也即可以事先进行公钥参数的交换,当然,本申请在此并不限定具体的交换时机,可以是在执行具体的密码运算请求时完成公钥的交换,又或者,可以在执行密码运算的准备阶段完成公钥的交换,在此不作限定。
其中,预设的第一公钥参数可以与预设的第一私钥参数相匹配,可以理解的是,根据国密算法的不同可以对应不同的匹配机制,比如,国密算法为SM2算法时,预设的第一公钥参数与预设的第一私钥参数可以基于椭圆曲线加密算法相匹配。预设的第一公钥参数和预设的第一私钥参数可以是事先通过密码引擎单元设置的。
基于上述说明,签名请求包括第一待发送消息以及第一待发送消息的消息请求方发送的公钥参数时,对于控制单元来说,控制单元响应该签名请求可以指示密码引擎单元执行签名请求需要执行的国密算法,其中,密码引擎单元具体执行时,可以通过签名接口采用预设的第一私钥参数和第一待发送消息的消息请求方发送的公钥参数对第一待发送消息执行签名动作,生成第一数字证书,进一步地,为了便于第一数字证书的进一步获取,可以将第一数字证书存储在第一存储单元中。
其中,需要说明的是,通过签名接口采用预设的第一私钥参数和第一待发送消息的消息请求方发送的公钥参数对第一待发送消息执行签名动作,生成第一数字证书的过程,可以包括:
通过签名接口采用预设的第一私钥参数对第一待发送消息的摘要信息进行第一次加密,得到第一签名信息;采用第一待发送消息的消息请求方发送的公钥参数对第一签名信息和第一待发送消息进行第二次加密,生成第一数字证书。基于该说明可以看出,本申请实施例所生成的第一数字证书的过程中,可以执行签名动作,因此,本申请实施例所提供的密码运算方法可以适用于包括签名动作的国密算法,具有较强的适用性。
在一些实施例中,密码引擎单元执行签名动作时,具体可以基于请求结构体实现,比如,可以将第一待发送消息拷贝给请求结构体的中的散列表参数,在此不作限定。
在一些实施例中,考虑到需要将上述生成的第一数字证书返回给第一待发送消息的消息请求方,在该场景下,可选地,密码运算请求还可以包括第一数字证书获取请求,上述多种类型的软件接口还包括:数字证书获取接口,参照图4所示,上述方法还包括:
S301、控制单元响应第一数字证书获取请求,指示密码引擎单元执行第一数字证书获取请求需要执行的国密算法,密码引擎单元通过数字证书获取接口获取第一数字证书,以向控制单元返回第一数字证书。
可选地,具体实现时,控制单元可以接收计算机设备的用户态通过套接字(Socket)发送的第一数字证书获取请求,控制单元响应该第一数字证书获取请求,可以指示密码引擎单元执行该第一数字证书获取请求需要执行的国密算法,其中,密码引擎单元具体执行时,密码引擎单元可以通过软件接口中的数字证书获取接口获取上述生成的第一数字证书,进而可以向控制单元返回第一数字证书。可选地,控制单元获取到第一数字证书之后,可以基于预设回调函数向相应地请求方返回该第一数字证书,比如,可以通过预设回调函数向第一待发送消息的消息请求方返回该第一数字证书,当然,本申请在此并不限定具体的返回方式。
应用本申请实施例,实现了在生成第一数字证书之后,可以灵活返回该第一数字证书,提高本申请密码运算方法的灵活性。
此外,基于上述说明可以看出,第一数字证书存储在第一存储单元中,那么密码引擎单元通过数字证书获取接口获取第一数字证书,以向控制单元返回第一数字证书,包括:密码引擎单元通过数字证书获取接口向控制单元返回第一数字证书的长度。
其中,第一数字证书的长度用于控制单元根据第一数字证书的长度为第一数字证书动态分配第一内存空间,将第一数字证书从第一存储单元搬移至第一内存空间以返回第一数字证书,并在返回第一数字证书后释放第一内存空间。
其中,可以理解的是,为了避免为第一数字证书分配的空间太大,影响计算机设备的运算性能,其中,对于控制单元来说,可以根据第一数字证书的长度为第一数字证书动态分配第一内存空间,进一步地,为了便于将第一数字证书从第一存储单元搬移至第一内存空间之后,实现对第一内存空间的再利用,可以在返回第一数字证书后释放第一内存空间。可选地,具体进行搬移时,可以基于DMA技术实现。
可选地,将第一数字证书从第一存储单元搬移至第一内存空间之后,根据实际的应用场景,可以进一步将该第一数字证书从该第一内存空间返回至用户态。
在一些实施例中,考虑到计算机设备可能会接收到第二数字证书的消息发送方对应的第二发送方设备发送的第二数字证书,以对该第二数字证书进行验签动作,以证明第二数字证书对应的第二待发送消息的正确性和真实性。换句话说,可以保证本计算机设备及第二发送方设备之间端到端的唯一确定性,也即第二待发送消息是第二发送方设备发出的,且是发给本计算机设备的。
参见上述的相关说明可知,第二数字证书可以为第二发送方设备采用第二待发送消息的消息发送方对应的私钥参数以及预设的第一公钥参数对第二待发送消息执行签名动作得到的数字证书。可选地,该第二发送方设备可以为其他计算机设备、终端设备等,在此不作限定。预设的第一公钥参数的定义以及传输可参见前述的相关说明,在此不再赘述。可选地,第二发送方设备执行签名动作之前,第二数字证书的消息发送方可以与本计算机设备进行公钥的交换,其中,第二数字证书的消息发送方对应的第二发送方设备可以将消息发送方对应的公钥参数发送给本计算机设备,本计算机设备可以将本端预设的第一公钥参数发送给第二发送方设备,以便第二发送方设备可以获取到本端预设的第一公钥参数。
图5为本申请实施例提供的又一种密码运算方法的流程示意图。基于上述说明,可选地,密码运算请求可以包括验签请求,验签请求可以包括:第二数字证书,以及第二数字证书的消息发送方所发送的公钥参数,多种类型的软件接口包括:验签接口;那么参照图5所示,上述控制单元响应密码运算请求,指示密码引擎单元执行密码运算请求需要执行的国密算法,密码引擎单元在执行国密算法时,调用多种类型的软件接口,以执行与国密算法匹配的功能,包括:
S401、控制单元接收验签请求。
S402、控制单元响应验签请求,指示密码引擎单元执行验签请求需要执行的国密算法,密码引擎单元通过验签接口采用预设的第一私钥参数和第二数字证书的消息发送方所发送的公钥参数对第二数字证书执行验签动作,得到验签结果。
参见上述说明可知,控制单元通过与第二数字证书的消息发送方对应的第二发送方设备进行公钥交换之后,本计算机设备可以获取到第二数字证书的消息发送方所发送的公钥参数,可选地,在该情况下,若控制单元接收到第二数字证书之后,可以根据该第二数字证书以及第二数字证书的消息发送方所发送的公钥参数生成验签请求,控制单元响应该验签请求,可以指示密码引擎单元执行验签请求需要执行的国密算法,其中,密码引擎单元具体执行时,密码引擎单元可以通过验签接口采用预设的第一私钥参数和第二数字证书的消息发送方所发送的公钥参数对第二数字证书执行验签动作,得到验签结果。其中,验签结果可以指示第二数字证书是否验签通过,若验签通过,则说明第二数字证书对应的第二待发送消息确实是第二数字证书的消息发送方对应第二发送方设备发出的,且是发给本计算机设备的。其中,预设的第一私钥参数可以参见前述的相关部分,在此不再赘述。
此外,需要说明的是,通过验签接口采用预设的第一私钥参数和第二数字证书的消息发送方所发送的公钥参数对第二数字证书执行验签动作,得到验签结果的过程,可以包括:
通过验签接口采用预设的第一私钥参数对第二数字证书进行第一次解密,得到第二签名信息和第二待发送消息;采用第二数字证书的消息发送方所发送的公钥参数对第二签名信息进行第二次解密,得到解密后的信息,验证该解密后的信息和第二待发送消息是否符合预设验证条件,若符合,则确定验签结果为验签成功,否则,则确定验签结果为验签失败。
综上,应用本申请实施例可以看出,本申请实施例提供的密码运算方法可以对已有的数字证书进行验签动作,并得到验签结果,因此,本申请实施例所提供的密码运算方法可以适用于包括验签动作的国密算法,具有较强的适用性。
在一些实施例中,考虑到在进行签名动作之前,可能需要更新国密算法对应的公钥参数和私钥参数,比如,修改已有的公钥参数、修改已有的私钥参数等,那么在该应用场景下可以参见下述的方法进行密钥参数的设置。
图6为本申请实施例提供的再一种密码运算方法的流程示意图。可选地,上述密码运算请求还包括:密钥设置请求,密钥设置请求可以包括:第一私钥参数,以及与第一私钥参数匹配的第一公钥参数,上述多种类型的软件接口包括:公钥接口和私钥接口,那么参照图6所示,密码引擎单元通过签名接口采用预设的第一私钥参数和第一待发送消息的消息请求方发送的公钥参数对第一待发送消息执行签名动作之前,上述方法还包括:
S501、控制单元接收密钥设置请求。
S502、控制单元响应密钥设置请求,指示密码引擎单元执行密钥设置请求需要执行的国密算法,密码引擎单元通过公钥接口和私钥接口,采用第一公钥参数和第一私钥参数设置国密算法在执行签名动作时所需要的参数。
其中,具体在进行设置时,密码引擎单元可以通过私钥接口采用第一私钥参数设置国密算法在执行签名动作时所需要的私钥参数;密码引擎单元可以通过公钥接口采用第一公钥参数设置国密算法在执行签名动作时所需要的公钥参数,其中,第一私钥参数可以与第一公钥参数相匹配,根据国密算法的不同可以对应不同的匹配机制。应用本申请实施例,可以看出,本申请实施例不仅可以实现对私钥参数的设置,还可以实现对公钥参数的设置,因此,为密码引擎单元执行签名动作生成相应的数字证书提供了技术支撑,可以提高本申请密码运算方法的适用性。
在一些实施例中,为了保证所设置第一公钥参数和第一私钥参数的有效性,可选地,上述密码引擎单元通过公钥接口和私钥接口,采用第一公钥参数和第一私钥参数设置国密算法在执行签名动作时所需要的参数的步骤,包括:
密码引擎单元通过国密算法确定第一私钥参数和第一公钥参数是否匹配,若匹配成功,则通过公钥接口和私钥接口,采用第一公钥参数和第一私钥参数设置国密算法在执行签名动作时所需要的参数。
其中,密码引擎单元在设置国密算法执行签名动作时所需要的第一私钥参数和第一公钥参数之前,密码引擎单元可以通过国密算法确定第一私钥参数和第一公钥参数是否匹配,其中,确定第一私钥参数和第一公钥参数是否匹配可以通过国密算法对应的匹配机制确定,关于该部分内容可参见前述的相关说明,在此不再赘述。
可选地,若确定第一私钥参数和第一公钥参数匹配成功,那么密码引擎单元可以通过公钥接口和私钥接口,采用第一公钥参数和第一私钥参数设置国密算法在执行签名动作时所需要的参数。应用本申请实施例,可以保证所设置第一公钥参数和第一私钥参数的有效性。
在一些实施例中,密码引擎单元通过国密算法确定第一私钥参数和第一公钥参数匹配失败时,密码引擎单元可以向控制单元返回预设提示消息,以使用户根据该预设提示消息可以知晓匹配失败的原因,及时调整第一公钥参数或第一私钥参数,提高用户的密钥设置体验。
在一些实施例中,考虑到不同国密算法对应的密钥参数的长度不一,因此,为了避免为各密码参数分配的预设内存空间过大,影响计算机设备的运算性能,也为了避免为各密码参数分配的预设内存空间过小,响应国密算法的正常运行,可以参加下述的过程为各密码参数分配相应的内存空间。
可选地,参照图2所示,若片上***还包括:与控制单元连接的第二存储单元250和第三存储单元260,上述密码引擎单元通过公钥接口和私钥接口,采用第一公钥参数和第一私钥参数设置国密算法在执行签名动作时所需要的参数的步骤,可以包括:
密码引擎单元通过公钥接口和私钥接口,向控制单元返回第一公钥参数的第一长度和第一私钥参数的第二长度。
其中,第一长度用于控制单元根据第一长度为第一公钥参数分配第二内存空间,并将第一公钥参数从第二内存空间存储至第二存储单元中;第二长度用于控制单元根据第二长度为第一私钥参数分配第三内存空间,并将第一私钥参数从第三内存空间存储至第三存储单元中。
其中,对于第一公钥参数来说,密码引擎单元可以通过公钥接口向控制单元返回第一公钥参数的第一长度,控制单元根据该第一长度可以为第一公钥参数分配合适的第二内存空间,并将该第一公钥参数从第二内存空间存储至第二存储单元中,可以理解的是,所设置的该第一公钥参数即为国密算法在执行签名动作时所需要的公钥参数。
以第一公钥参数为例,具体在进行搬移时,可以基于DMA技术将第一数字证书从第一存储单元搬移至第一内存空间。此外,分配内存空间的过程中,控制单元根据第一长度为第一公钥参数分配第二内存空间时,控制单元可以基于预设结构体实现动态分配内存。可选地,该预设结构体还可以包括其他参数,比如:所分配的第二内存空间的起始地址和属性参数等,在此不作限定,其中,属性参数可以指示该第一公钥参数是否为私有属性。其中,第三内存空间的分配过程可参见该第二内存空间的分配过程,在此不再赘述。
当然,需要说明的是,为了便于用户可以及时知晓是否存储成功,将第一公钥参数从第二内存空间存储至第二存储单元后,可以向用户返回第一存储结果,用于指示第一公钥参数是否存储成功;将第一私钥参数从第三内存空间存储至第三存储单元后,可以向用户返回第二存储结果,用于指示第一私钥参数是否存储成功。
对于第一私钥参数来说,同样的,密码引擎单元可以通过私钥接口向控制单元返回第一私钥参数的第二长度,控制单元根据该第二长度可以为第一私钥参数分配合适的第三内存空间,并将该第一私钥参数从第三内存空间存储至第三存储单元中,所设置的该第一公钥参数即为国密算法在执行签名动作时所需要的私钥参数。
当然,需要说明的是,本申请在此并不限定第一公钥参数和第一私钥参数的存储方式,可选地,出于安全考虑,第一公钥参数和第一私钥参数可以存储在不同的存储单元上,又或者,可以存储在同一存储单元上,根据实际的应用场景可以灵活设置,在此不作限定。再者还需要说明的是,第一公钥参数、第一私钥参数以及第一数字证书也可以存储在相同或不同的存储单元上,在此不作限定。
基于上述实施例的基础上,可选地,为了避免内存泄漏、也为了实现对第二内存空间、第三内存空间的再利用,控制单元将第一公钥参数从第二内存空间存储至第二存储单元中之后,还包括:控制单元释放为第一公钥参数分配的第二内存空间。可选地,控制单元将第一私钥参数从第三内存空间存储至第三存储单元中之后,还包括:控制单元释放为第一私钥参数分配的第三内存空间。应用本申请实施例,可以减少为第一公钥参数、第一私钥参数分配的内存空间过大造成的传输损耗和数据冗余,提高密码运算方法的运算性能。
可选地,上述操作***可以为Linux操作***,那么该操作***将包括Linux内核态,则可以在Linux内核态设置有多种类型的软件接口。
其中,参照上述图1所示,多种类型的软件接口具体可以设置在Linux内核态的应用层交互空间(user space interface)中,实现了本申请提供的密码运算方法可应用于Linux操作***,可以提高本申请方法的适用性。
需要说明的是,上述提及的密码引擎单元执行国密算法匹配的功能的方式仅仅是例举的部分情况,而不是穷举,本领域技术人员在理解本申请技术方案的精髓的情况下,可能会在本申请技术方案的基础上产生其它的变形或者变换,比如:对密码引擎单元来说,密码引擎单元可以在控制单元的控制下,只执行签名请求所需要执行的签名动作;也可以在执行了签名请求所需要执行的签名动作之后,通过数字证书获取接口获取签名请求获得的第一数字证书,以向控制单元返回第一数字证书;也可以在控制单元的控制下,只通过验签接口执行验签请求所需要执行的验签动作;还可以在控制单元的控制下,在执行了签名请求所需要执行的签名动作之后,通过数字证书获取接口获取签名请求获得的第一数字证书,以向控制单元返回第一数字证书,之后,通过验签接口执行验签请求所需要执行的验签动作。但只要其实现的功能以及达到的技术效果与本申请类似,那么均应当属于本申请的保护范围。
还需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
进一步需要说明的是,以图3为例,虽然图3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
可选地,本申请实施例还提供的一种密码运算装置,该密码运算装置可以应用于计算机设备,所述计算机设备运行有操作***,所述操作***用于分配多种类型的软件接口;所述计算机设备设置有片上***,所述片上***包括控制单元和密码引擎单元,所述控制单元与所述密码引擎单元相连,所述密码引擎单元设置有国密算法,该装置基本原理及产生的技术效果与前述对应的方法实施例相同,为简要描述,本实施例中未提及部分,可参考方法实施例中的相应内容。其中,
所述控制单元,用于接收密码运算请求;
所述控制单元,还用于响应所述密码运算请求,指示所述密码引擎单元执行所述密码运算请求需要执行的国密算法;
所述密码引擎单元在执行国密算法时,调用所述多种类型的软件接口,以执行与所述国密算法匹配的功能。
在一些实施例中,所述片上***还包括与所述控制单元连接的第一存储单元,所述密码运算请求包括:签名请求,所述签名请求包括:第一待发送消息以及所述第一待发送消息的消息请求方发送的公钥参数,所述多种类型的软件接口包括:签名接口;
所述控制单元,具体用于响应所述签名请求,指示所述密码引擎单元执行所述签名请求需要执行的国密算法;所述密码引擎单元通过所述签名接口采用预设的第一私钥参数和所述第一待发送消息的消息请求方发送的公钥参数对所述第一待发送消息执行签名动作,生成第一数字证书,并将所述第一数字证书存储在所述第一存储单元中。
在一些实施例中,所述密码运算请求还包括第一数字证书获取请求,所述多种类型的软件接口还包括:数字证书获取接口,所述控制单元,还用于响应所述第一数字证书获取请求,指示所述密码引擎单元执行所述第一数字证书获取请求需要执行的国密算法;所述密码引擎单元通过所述数字证书获取接口获取所述第一数字证书,以向所述控制单元返回所述第一数字证书。
在一些实施例中,所述控制单元,还用于响应所述第一数字证书获取请求,指示所述密码引擎单元执行所述第一数字证书获取请求需要执行的国密算法;所述密码引擎单元通过所述数字证书获取接口向所述控制单元返回所述第一数字证书的长度;所述第一数字证书的长度用于所述控制单元根据所述第一数字证书的长度为所述第一数字证书动态分配第一内存空间,将所述第一数字证书从所述第一存储单元搬移至所述第一内存空间以返回所述第一数字证书,并在返回所述第一数字证书后释放所述第一内存空间。
在一些实施例中,所述密码运算请求包括验签请求,所述验签请求包括:第二数字证书,以及所述第二数字证书的消息发送方所发送的公钥参数,所述多种类型的软件接口包括:验签接口;所述控制单元,还用于响应所述验签请求,指示所述密码引擎单元执行所述验签请求需要执行的国密算法;所述密码引擎单元通过所述验签接口采用预设的第一私钥参数和所述第二数字证书的消息发送方所发送的公钥参数对所述第二数字证书执行验签动作,得到验签结果。
在一些实施例中,所述密码运算请求还包括:密钥设置请求,所述密钥设置请求包括:所述第一私钥参数,以及与所述第一私钥参数匹配的第一公钥参数,所述多种类型的软件接口包括:公钥接口和私钥接口;所述控制单元,还用于响应所述密钥设置请求,指示所述密码引擎单元执行所述密钥设置请求需要执行的国密算法;所述密码引擎单元通过所述公钥接口和所述私钥接口,采用所述第一公钥参数和所述第一私钥参数设置所述国密算法在执行所述签名动作时所需要的参数。
在一些实施例中,所述控制单元,还用于响应所述密钥设置请求,指示所述密码引擎单元执行所述密钥设置请求需要执行的国密算法;所述密码引擎单元通过所述国密算法确定所述第一私钥参数和所述第一公钥参数是否匹配,若匹配成功,则通过所述公钥接口和所述私钥接口,采用所述第一公钥参数和所述第一私钥参数设置所述国密算法在执行所述签名动作时所需要的参数。
在一些实施例中,所述片上***还包括:与所述控制单元连接的第二存储单元和第三存储单元;所述控制单元,还用于响应所述密钥设置请求,指示所述密码引擎单元执行所述密钥设置请求需要执行的国密算法;所述密码引擎单元通过所述公钥接口和所述私钥接口,向所述控制单元返回所述第一公钥参数的第一长度和第一私钥参数的第二长度;
其中,所述第一长度用于所述控制单元根据所述第一长度为所述第一公钥参数分配第二内存空间,并将所述第一公钥参数从所述第二内存空间存储至所述第二存储单元中;所述第二长度用于所述控制单元根据所述第二长度为所述第一私钥参数分配第三内存空间,并将所述第一私钥参数从所述第三内存空间存储至所述第三存储单元中。
在一些实施例中,所述控制单元,还用于将所述第一公钥参数从所述第二内存空间存储至所述第二存储单元中之后,释放为所述第一公钥参数分配的所述第二内存空间;所述控制单元,还用于将所述第一私钥参数从所述第三内存空间存储至所述第三存储单元中之后,释放为所述第一私钥参数分配的所述第三内存空间。
在一些实施例中,所述操作***包括Linux内核态,所述Linux内核态设置有所述多种类型的软件接口。
上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。
以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器,或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(Central Processing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上***(system-on-a-chip,简称SOC)的形式实现。
图7为本申请实施例提供的一种电子设备结构示意图,该电子设备可以集成于计算机设备中。如图7所示,该电子设备可以包括:处理器810、存储介质820和总线830,存储介质820存储有处理器810可执行的机器可读指令,当电子设备运行时,处理器810与存储介质820之间通过总线830通信,处理器810执行机器可读指令,以执行上述方法实施例的步骤。具体实现方式和技术效果类似,这里不再赘述。
基于上述实施例的密码运算方法,本申请实施例还提供一种片上***,该片上***可以采用图2所示的结构,该片上***所在的计算机设备运行有操作***,操作***用于分配多种类型的软件接口;片上***包括控制单元和密码引擎单元,控制单元与密码引擎单元相连,密码引擎单元设置有国密算法;其中,控制单元被配置为执行上述实施例中任一的密码运算方法。
可选地,本申请实施例还提供一种计算机设备,该计算机设备可以包括上述实施例中的片上***,片上***中的控制单元被配置为执行上述实施例中任一的密码运算方法。
本申请实施例还提供了一种计算机存储介质,该计算机可读存储介质中存储有指令,当其在计算机或处理器上运行时,使得计算机或处理器执行上述任一个实施例方法中的一个或多个步骤。
上述装置的各组成模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在计算机可读取存储介质中,基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机产品存储在计算机可读存储介质中。
上述计算机可读存储介质可以是前述实施例的设备的内部存储单元,例如硬盘或内存。上述计算机可读存储介质也可以是上述设备的外部存储设备,例如配备的插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,上述计算机可读存储介质还可以既包括上述设备的内部存储单元也包括外部存储设备。上述计算机可读存储介质用于存储上述计算机程序以及上述设备所需的其他程序和数据。上述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可通过计算机程序来指令相关的硬件来完成,该计算机的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可存储程序代码的介质。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (12)
1.一种密码运算方法,其特征在于,所述方法应用于计算机设备,所述计算机设备运行有操作***,所述操作***用于分配多种类型的软件接口;所述计算机设备设置有片上***,所述片上***包括控制单元和密码引擎单元,所述控制单元与所述密码引擎单元相连,所述密码引擎单元设置有国密算法,所述方法包括:
所述控制单元接收密码运算请求;
所述控制单元响应所述密码运算请求,指示所述密码引擎单元执行所述密码运算请求需要执行的国密算法;
所述密码引擎单元在执行国密算法时,调用所述多种类型的软件接口,以执行与所述国密算法匹配的功能。
2.根据权利要求1所述的方法,其特征在于,所述片上***还包括与所述控制单元连接的第一存储单元,所述密码运算请求包括:签名请求,所述签名请求包括:第一待发送消息以及所述第一待发送消息的消息请求方发送的公钥参数,所述多种类型的软件接口包括:签名接口;所述密码引擎单元在执行国密算法时,调用所述多种类型的软件接口,以执行与所述国密算法匹配的功能,包括:
所述密码引擎单元通过所述签名接口采用预设的第一私钥参数和所述第一待发送消息的消息请求方发送的公钥参数对所述第一待发送消息执行签名动作,生成第一数字证书,并将所述第一数字证书存储在所述第一存储单元中。
3.根据权利要求2所述的方法,其特征在于,所述密码运算请求还包括第一数字证书获取请求,所述多种类型的软件接口还包括:数字证书获取接口,所述方法还包括:
所述密码引擎单元通过所述数字证书获取接口获取所述第一数字证书,以向所述控制单元返回所述第一数字证书。
4.根据权利要求3所述的方法,其特征在于,所述密码引擎单元通过所述数字证书获取接口获取所述第一数字证书,以向所述控制单元返回所述第一数字证书,包括:
所述密码引擎单元通过所述数字证书获取接口向所述控制单元返回所述第一数字证书的长度;所述第一数字证书的长度用于所述控制单元根据所述第一数字证书的长度为所述第一数字证书动态分配第一内存空间,将所述第一数字证书从所述第一存储单元搬移至所述第一内存空间以返回所述第一数字证书,并在返回所述第一数字证书后释放所述第一内存空间。
5.根据权利要求1所述的方法,其特征在于,所述密码运算请求包括验签请求,所述验签请求包括:第二数字证书,以及所述第二数字证书的消息发送方所发送的公钥参数,所述多种类型的软件接口包括:验签接口;所述密码引擎单元在执行国密算法时,调用所述多种类型的软件接口,以执行与所述国密算法匹配的功能,包括:
所述密码引擎单元通过所述验签接口采用预设的第一私钥参数和所述第二数字证书的消息发送方所发送的公钥参数对所述第二数字证书执行验签动作,得到验签结果。
6.根据权利要求2所述的方法,其特征在于,所述密码运算请求还包括:密钥设置请求,所述密钥设置请求包括:所述第一私钥参数,以及与所述第一私钥参数匹配的第一公钥参数,所述多种类型的软件接口包括:公钥接口和私钥接口;
所述密码引擎单元通过所述签名接口采用预设的第一私钥参数和所述第一待发送消息的消息请求方发送的公钥参数对所述第一待发送消息执行签名动作之前,所述方法还包括:
所述密码引擎单元通过所述公钥接口和所述私钥接口,采用所述第一公钥参数和所述第一私钥参数设置所述国密算法在执行所述签名动作时所需要的参数。
7.根据权利要求6所述的方法,其特征在于,所述密码引擎单元通过所述公钥接口和所述私钥接口,采用所述第一公钥参数和所述第一私钥参数设置所述国密算法在执行所述签名动作时所需要的参数,包括:
所述密码引擎单元通过所述国密算法确定所述第一私钥参数和所述第一公钥参数是否匹配,若匹配成功,则通过所述公钥接口和所述私钥接口,采用所述第一公钥参数和所述第一私钥参数设置所述国密算法在执行所述签名动作时所需要的参数。
8.根据权利要求6所述的方法,其特征在于,所述片上***还包括:与所述控制单元连接的第二存储单元和第三存储单元;
所述密码引擎单元通过所述公钥接口和所述私钥接口,采用所述第一公钥参数和所述第一私钥参数设置所述国密算法在执行所述签名动作时所需要的参数,包括:
所述密码引擎单元通过所述公钥接口和所述私钥接口,向所述控制单元返回所述第一公钥参数的第一长度和第一私钥参数的第二长度;
其中,所述第一长度用于所述控制单元根据所述第一长度为所述第一公钥参数分配第二内存空间,并将所述第一公钥参数从所述第二内存空间存储至所述第二存储单元中;所述第二长度用于所述控制单元根据所述第二长度为所述第一私钥参数分配第三内存空间,并将所述第一私钥参数从所述第三内存空间存储至所述第三存储单元中。
9.根据权利要求8所述的方法,其特征在于,所述控制单元将所述第一公钥参数从所述第二内存空间存储至所述第二存储单元中之后,还包括:
所述控制单元释放为所述第一公钥参数分配的所述第二内存空间;
所述控制单元将所述第一私钥参数从所述第三内存空间存储至所述第三存储单元中之后,还包括:
所述控制单元释放为所述第一私钥参数分配的所述第三内存空间。
10.根据权利要求1-9任一项所述的方法,其特征在于,所述操作***包括Linux内核态,所述Linux内核态设置有所述多种类型的软件接口。
11.一种片上***,其特征在于,所述片上***所在的计算机设备运行有操作***,所述操作***用于分配多种类型的软件接口;所述片上***包括控制单元和密码引擎单元,所述控制单元与所述密码引擎单元相连,所述密码引擎单元设置有国密算法;其中,
所述控制单元被配置为执行权利要求1-10任一项所述的密码运算方法的步骤。
12.一种计算机设备,其特征在于,所述计算机设备包括如权利要求11所述的片上***。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111536508.XA CN113935018B (zh) | 2021-12-16 | 2021-12-16 | 密码运算方法、片上***及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111536508.XA CN113935018B (zh) | 2021-12-16 | 2021-12-16 | 密码运算方法、片上***及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113935018A true CN113935018A (zh) | 2022-01-14 |
CN113935018B CN113935018B (zh) | 2022-03-11 |
Family
ID=79289011
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111536508.XA Active CN113935018B (zh) | 2021-12-16 | 2021-12-16 | 密码运算方法、片上***及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113935018B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115333741A (zh) * | 2022-10-14 | 2022-11-11 | 飞腾信息技术有限公司 | 数据处理方法、片上***和计算设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040086105A (ko) * | 2003-03-24 | 2004-10-08 | 후지제롯쿠스 가부시끼가이샤 | 정보 처리 장치에 있어서의 데이터 보안 |
US20040240670A1 (en) * | 2003-05-30 | 2004-12-02 | International Business Machines Corporation | Password security utility |
CN106506147A (zh) * | 2016-10-27 | 2017-03-15 | 国网江苏省电力公司南京供电公司 | 一种基于国密算法实现IPsec‑VPN的方法 |
CN110247757A (zh) * | 2019-04-19 | 2019-09-17 | 中国工商银行股份有限公司 | 基于国密算法的区块链处理方法、装置及*** |
US20190342093A1 (en) * | 2019-06-28 | 2019-11-07 | Siddhartha Chhabra | Converged cryptographic engine |
CN111859314A (zh) * | 2020-07-10 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种基于加密软件的sm2加密方法、***、终端及存储介质 |
CN112398826A (zh) * | 2020-11-03 | 2021-02-23 | 北京天融信网络安全技术有限公司 | 基于国密的数据处理方法、装置、存储介质及电子设备 |
WO2021139140A1 (zh) * | 2020-01-08 | 2021-07-15 | 深圳壹账通智能科技有限公司 | 基于区块链的密码管理方法、装置、电子设备及计算机可读存储介质 |
-
2021
- 2021-12-16 CN CN202111536508.XA patent/CN113935018B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040086105A (ko) * | 2003-03-24 | 2004-10-08 | 후지제롯쿠스 가부시끼가이샤 | 정보 처리 장치에 있어서의 데이터 보안 |
US20040240670A1 (en) * | 2003-05-30 | 2004-12-02 | International Business Machines Corporation | Password security utility |
CN106506147A (zh) * | 2016-10-27 | 2017-03-15 | 国网江苏省电力公司南京供电公司 | 一种基于国密算法实现IPsec‑VPN的方法 |
CN110247757A (zh) * | 2019-04-19 | 2019-09-17 | 中国工商银行股份有限公司 | 基于国密算法的区块链处理方法、装置及*** |
US20190342093A1 (en) * | 2019-06-28 | 2019-11-07 | Siddhartha Chhabra | Converged cryptographic engine |
WO2021139140A1 (zh) * | 2020-01-08 | 2021-07-15 | 深圳壹账通智能科技有限公司 | 基于区块链的密码管理方法、装置、电子设备及计算机可读存储介质 |
CN111859314A (zh) * | 2020-07-10 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种基于加密软件的sm2加密方法、***、终端及存储介质 |
CN112398826A (zh) * | 2020-11-03 | 2021-02-23 | 北京天融信网络安全技术有限公司 | 基于国密的数据处理方法、装置、存储介质及电子设备 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115333741A (zh) * | 2022-10-14 | 2022-11-11 | 飞腾信息技术有限公司 | 数据处理方法、片上***和计算设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113935018B (zh) | 2022-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6865850B2 (ja) | 高度に利用可能な信頼できる実行環境を使用してブロックチェーンネットワークに対するアクセスデータを取得すること | |
CN110968743B (zh) | 针对隐私数据的数据存储、数据读取方法及装置 | |
WO2021184882A1 (zh) | 验证合约的方法及装置 | |
EP3540626B1 (en) | Enclave launch and authentication | |
CN111047450A (zh) | 链上数据的链下隐私计算方法及装置 | |
EP3123657B1 (en) | Method and apparatus for cloud-assisted cryptography | |
CN112926051B (zh) | 多方安全计算方法和装置 | |
CN111090875A (zh) | 部署合约的方法及装置 | |
CN111064569B (zh) | 可信计算集群的集群密钥获取方法及装置 | |
US20160261592A1 (en) | Method and device for the secure authentication and execution of programs | |
US10230738B2 (en) | Procedure for platform enforced secure storage in infrastructure clouds | |
EP4176563A1 (en) | Tls integration of post quantum cryptographic algorithms | |
CN111131336B (zh) | 多方授权场景下的资源访问方法、装置、设备及存储介质 | |
CN114157415A (zh) | 数据处理方法、计算节点、***、计算机设备和存储介质 | |
CN114465803B (zh) | 对象授权方法、装置、***及存储介质 | |
CN113935018B (zh) | 密码运算方法、片上***及计算机设备 | |
WO2015008623A1 (ja) | 鍵保管装置、鍵保管方法、及びそのプログラム | |
EP3200388B1 (en) | User permission check system | |
CN116599772B (zh) | 一种数据处理方法及相关设备 | |
KR20210028719A (ko) | 디지털 요청 처리의 보안 거버넌스 | |
CN114866409B (zh) | 基于密码加速硬件的密码加速方法及装置 | |
CN116561820B (zh) | 可信数据处理方法及相关装置 | |
CN115361168B (zh) | 一种数据加密方法、装置、设备及介质 | |
US20240154799A1 (en) | Link encryption and key diversification on a hardware security module | |
US20220385453A1 (en) | Secure file transfer |
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 |