CN116980110B - 一种分组密码运算方法、装置、系统、设备和存储介质 - Google Patents

一种分组密码运算方法、装置、系统、设备和存储介质 Download PDF

Info

Publication number
CN116980110B
CN116980110B CN202311221640.0A CN202311221640A CN116980110B CN 116980110 B CN116980110 B CN 116980110B CN 202311221640 A CN202311221640 A CN 202311221640A CN 116980110 B CN116980110 B CN 116980110B
Authority
CN
China
Prior art keywords
cipher
data packet
cryptographic
data packets
machines
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.)
Active
Application number
CN202311221640.0A
Other languages
English (en)
Other versions
CN116980110A (zh
Inventor
刘福春
焦四辈
郭小虎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Open Security Research Inc
Original Assignee
Open Security Research Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Open Security Research Inc filed Critical Open Security Research Inc
Priority to CN202311221640.0A priority Critical patent/CN116980110B/zh
Publication of CN116980110A publication Critical patent/CN116980110A/zh
Application granted granted Critical
Publication of CN116980110B publication Critical patent/CN116980110B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请实施例公开了一种分组密码运算方法、装置、系统、设备和存储介质,应用于客户端,该方法包括:将第一数据包拆分为多个第二数据包;将多个第二数据包分发至多个密码机,以请求多个密码机基于分组密码运算算法分别对接收的第二数据包进行密码运算;其中,分组密码运算算法的流程包括:将待处理的数据包分为多个数据分组,并对多个数据分组分别进行密码运算;其中,对多个数据分组分别进行密码运算的过程之间不存在依赖关系;组合每一密码机对接收的第二数据包进行密码运算的结果,得到第一数据包对应的密码运算结果。该方法通过将第一数据包拆分成多个第二数据包,并交由多个密码机进行密码运算,可加快运算速度并降低运算延时。

Description

一种分组密码运算方法、装置、系统、设备和存储介质
技术领域
本申请涉及信息系统安全技术领域,尤其涉及一种分组密码运算方法、装置、系统、设备和存储介质。
背景技术
在现有技术中,对单个数据包进行加密或解密操作时,客户端可通过调用0018规范中的加密或解密接口将请求发送给单个密码机,由单个密码机对数据进行加密或解密运算。然而,对于较大的数据包(例如1GB大小的数据包),单次加密或解密的处理延时较长,从而导致客户端等待时间较长。
发明内容
本申请实施例至少提供一种分组密码运算方法、装置、系统、设备和存储介质。
本申请的技术方案是这样实现的:
第一方面,本申请实施例提供了一种分组密码运算方法,应用于客户端,该方法包括:将第一数据包拆分为多个第二数据包;将多个第二数据包分发至多个密码机,以请求多个密码机基于分组密码运算算法分别对接收的第二数据包进行密码运算;其中,该分组密码运算算法的流程包括:将待处理的数据包分为多个数据分组,并对多个数据分组分别进行密码运算;其中,对多个数据分组分别进行密码运算的过程之间不存在依赖关系;组合每一密码机对接收的第二数据包进行密码运算的结果,得到第一数据包对应的密码运算结果。
第二方面,本申请实施例提供了一种分组密码运算方法,应用于分组密码运算系统,该分组密码运算系统包括:客户端和多个密码机,该方法包括:利用客户端,将第一数据包拆分为多个第二数据包,并将多个第二数据包分发至多个密码机,以请求多个密码机基于分组密码运算算法分别对接收的第二数据包进行密码运算;其中,分组密码运算算法的流程包括:将待处理的数据包分为多个数据分组,并对多个数据分组分别进行密码运算;其中,对多个数据分组分别进行密码运算的过程之间不存在依赖关系;利用多个密码机中的每一密码机,对接收的第二数据包进行基于分组密码运算算法的密码运算;利用客户端,组合每一密码机对接收的第二数据包进行密码运算的结果,得到第一数据包对应的密码运算结果。
第三方面,本申请实施例提供了一种分组密码运算装置,该装置包括:拆分单元,用于将第一数据包拆分为多个第二数据包;分发单元,用于将多个第二数据包分发至多个密码机,以请求多个密码机基于分组密码运算算法分别对接收的第二数据包进行密码运算;其中,分组密码运算算法的流程包括:将待处理的数据包分为多个数据分组,并对多个数据分组分别进行密码运算;其中,对多个数据分组分别进行密码运算的过程之间不存在依赖关系;组合单元,用于组合每一密码机对接收的第二数据包进行密码运算的结果,得到第一数据包对应的密码运算结果。
第四方面,本申请实施例提供了一种分组密码运算系统,该分组密码运算系统包括:客户端和多个密码机;其中,客户端,用于将第一数据包拆分为多个第二数据包,并将多个第二数据包分发至多个密码机,以请求多个密码机基于分组密码运算算法分别对接收的第二数据包进行密码运算;其中,分组密码运算算法的流程包括:将待处理的数据包分为多个数据分组,并对多个数据分组分别进行密码运算;其中,对多个数据分组分别进行密码运算的过程之间不存在依赖关系;多个密码机中的每一密码机,用于对接收的第二数据包进行基于分组密码运算算法的密码运算;客户端,还用于组合每一密码机对接收的第二数据包进行密码运算的结果,得到第一数据包对应的密码运算结果。
第五方面,本申请实施例提供了一种分组密码运算设备,该分组密码运算设备包括存储器和处理器;其中,存储器,用于存储计算机可执行指令;处理器,与该存储器连接,用于通过执行该计算机可执行指令,实现如第一方面所述的方法。
第六方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,计算机程序被至少一个处理器执行时实现如第一方面所述的方法。
本申请实施例中,客户端可将待处理的第一数据包拆分为多个(如两个或两个以上)第二数据包,并将多个第二数据包分发至多个密码机,从而由多个密码机基于分组密码运算算法分别对接收的第二数据包进行密码运算,如此可达到加快运算速度和降低运算延时的目的。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本申请的技术方案。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本申请的实施例,并与说明书一起用于说明本申请的技术方案。
图1为请求对称加密运算时0018接口的一般调用流程示意图;
图2为本申请实施例提供的一种分组密码运算方法的流程示意图;
图3为客户端通过调用0018接口拆分数据包的一例示意图;
图4为本申请实施例提供的ECB模式的对称加密运算的一例示意图;
图5为本申请实施例提供的ECB模式的对称解密运算的一例示意图;
图6为本申请实施例提供的CTR模式的对称加密运算的一例示意图;
图7为本申请实施例提供的CTR模式的对称解密运算的一例示意图;
图8为本申请实施例提供的物理密码机的环境部署示意图;
图9为本申请实施例提供的云服务器密码机的环境部署示意图;
图10为本申请实施例提供的分组密码运算方法的一种可能的实现流程示意图;
图11为本申请实施例提供的一种分组密码运算装置的组成结构示意图;
图12为本申请实施例中分组密码运算设备的一种硬件实体示意图。
具体实施方式
为了能够更加详尽地了解本申请实施例的特点与技术内容,下面结合附图对本申请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。
除非另有定义,本申请实施例所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本申请实施例中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。还需要指出,本申请实施例所涉及的术语“第一\第二\第三”仅是用于区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
应理解,本申请实施例中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
服务器密码机适用于各类密码安全应用系统,可以满足应用系统数据的签名/验证、加密/解密的要求,保证传输信息的机密性、完整性、可靠性,同时提供安全、完善的密钥管理机制。
服务器密码机接口需要符合《GMT 0018-2012密码设备应用接口规范》,通过标准的接口使用服务器密码机提供的签名/验证、加密/解密的功能。为描述方便,下文将该系列接口简称为0018接口。
《GMT 0018-2012密码设备应用接口规范》中定义了应用程序调用密码机请求密码运算的接口。图1示出了请求对称加密运算时,0018接口的一般调用流程。如图1所示,请求对称加密运算时0018接口的一般调用流程包括:
S101,调用SDF_OpenDevice接口,与密码机建立连接;
S102,调用SDF_OpenSession接口,与密码机建立会话;
S103,调用SDF_GenerateKeyWithKEK接口,创建会话密钥句柄;
S104,调用SDF_Encrypt接口,进行对称加密;
S105,调用SDF_DestroyKey接口,销毁会话密钥句柄;
S106,调用SDF_CloseSession接口,关闭会话;
S107,调用SDF_CloseDevice接口,关闭与密码机的连接。
应理解,图1中使用密钥加密密钥(Key Encryption Key,KEK)生成会话密钥句柄是示例性的,在一些场景中,使用密码机内的非对称密钥对(如RSA和SM2)也可以产生会话密钥句柄。
目前,对单个数据包的加密或解密操作是通过调用一次0018接口将请求发送给单个密码机,从而由单个密码机对数据进行加密或解密运算。然而,对于较大的数据包,例如像1GB这样的大数据包,单次加密或解密的处理延时非常长,从而导致客户端等待时间较长。
鉴于此,本申请实施例提供一种分组密码运算方法、装置、系统、设备和存储介质。该方法例如可用于服务器密码机和云服务器密码机等提供对称密码运算的产品中,用于提升单个大包请求的处理速度,降低处理延时。
在该方法中,客户端可将待处理的第一数据包拆分为多个(如两个或两个以上)第二数据包,并将多个第二数据包分发至多个密码机,从而由多个密码机基于分组密码运算算法分别对接收的第二数据包进行密码运算。其中,分组密码运算算法的流程可包括:将待处理的数据包分为多个数据分组(如明文分组;又如密文分组),并对多个数据分组分别进行密码运算。在该分组密码运算算法的流程中,对该多个数据分组分别进行密码运算的过程之间不存在依赖关系,或者说,该分组密码运算算法具有可并行运算的特性。该方法通过将一个大包(第一数据包)拆分成多个小包(第二数据包),并分别发送给多个密码机并行进行密码运算(如基于分组密码运算算法的加密或解密运算),从而可达到加快运算速度和降低运算延时的目的。
示例性地,上述多个密码机例如可以为多个服务器密码,或者可以为一个或多个云服务器密码机中的多个虚拟密码机。上述客户端例如还可以称为客户端主机;上述数据分组例如还可以简称为分组。
图2示出了本申请实施例提供的一种分组密码运算方法,该方法例如可由客户端执行。如图2所示,该方法可包括:
S201,将第一数据包拆分为多个第二数据包。
S202,将多个第二数据包分发至多个密码机,以请求该多个密码机基于分组密码运算算法分别对接收的第二数据包进行密码运算。
示例性地,分组密码运算算法的流程可包括:将待处理的数据包分为多个数据分组,并对多个数据分组分别进行密码运算。其中,对多个数据分组分别进行密码运算的过程之间不存在依赖关系。
S203,组合每一密码机对接收的第二数据包进行密码运算的结果,得到第一数据包对应的密码运算结果。
在一些实施例中,在将第一数据包拆分为多个第二数据包之前,该方法还可以包括:启动应用程序;利用应用程序调用密码运算接口(即0018接口);其中,密码运算接口用于实现上述步骤S201至S203。也就是说,客户端可通过调用0018接口的方式实现上述步骤S201至S203。
举例来说,客户端上可运行应用程序,该应用程序可通过调用0018接口请求密码机对第一数据包进行密码运算(如基于分组密码运算算法的密码运算)。在该过程中,0018接口的内部实现包括:将第一数据包拆分为多个第二数据包,并将多个第二数据包交由多个密码机进行密码运算;待所有密码机返回密码运算结果后,将每个密码机返回的密码运算结果组合在一起,从而得到第一数据包对应的密码运算结果。
下面分别对上述步骤S201至S203进行详细介绍。
S201,将第一数据包拆分为多个第二数据包。
其中,第一数据包为待进行密码运算的数据包。作为一种实现方式,客户端可通过调用0018接口将第一数据包拆分为多个第二数据包。
在一些实施例中,将第一数据包拆分为多个第二数据包,包括:在满足第一条件(分包触发条件)的情况下,将第一数据包拆分为多个第二数据包。
也就是说,在对第一数据包进行拆分之前,可先判断该第一数据包的大小是否满足第一条件,若满足第一条件,则将第一数据包拆分为多个第二数据包。如此,对于部分不满足第一条件的第一数据包可以不需要进行拆包处理,从而减少了拆包带来的损耗。
示例性地,第一条件例如可包括以下条件A、条件B和条件C中的至少之一。
条件A:客户端能够调用的密码机的数量为多个。也即,存在多台密码机可供客户端上的应用程序调用。
由于本申请实施例中将第一数据包拆分为多个第二数据包的目的是利用多台密码机对第一数据包并行进行密码运算,因此在进行拆分前,可先判断是否存在多台密码机可供客户端上的应用程序调用,若存多台可供调用的密码机,则可将第一数据包拆分为多个第二数据包,以便于后续将多个第二数据包交由客户端可调用的多台密码机中的至少两台密码机进行密码运算。
条件B:分组密码运算算法为电子密码本模式(Electronic CodeBook mode,ECB)或计数器模式(CounTeR mode,CTR)的对称密码运算算法。也即,客户端上的应用程序调用0018接口时发送的请求是对称密码运算的ECB或CTR模式,或者说,客户端上的应用程序调用0018接口时所请求的密码运算的类型为ECB模式或CTR模式的对称密码运算。
由于ECB模式和CTR模式的对称密码运算具有可并行运算的特性,故当客户端请求的密码运算为ECB模式或CTR模式的对称密码运算时,可将第一数据包拆分为多个第二数据包,进而可将多个第二数据包交由多个密码机进行并行的密码运算。
在一些场景中,本申请实施例中的分组密码运算算法还可以为其他具备可并行运算特性的模式,本申请实施例对此不予限定。本申请实施例中的对称密码运算例如可包括:对称加密运算和/或对称解密运算。
条件C:第一数据包的大小大于或等于第一阈值。或者说,客户端上的应用程序发送的请求包的大小大于或等于第一阈值。
也就是说,在第一条件包括条件C的情况下,当第一数据包的大小较小时,例如当第一数据包的大小小于第一阈值时,客户端可以不需要将第一数据包拆分为多个第二数据包,在该情况下,客户端可请求单个密码机对该第一数据包进行密码运算。也即,在实际应用中,小包(小数据包)可以不需要由多密码机分包计算,以避免拆包带来的损耗。
其中,该第一阈值可以是预先配置的定值,也可以是动态配置的值,本申请实施例对此不予限定。作为一个示例,第一阈值例如可以为1MB字节。
在一些实施例中,拆分得到的第二数据包的数量与多个密码机的数量相同。也即,当客户端请求N(N为大于1的整数)个密码机对第一数据包进行并行处理时,可将第一数据包拆分为N个第二数据包,从而,每个密码机可对一个第二数据包进行密码运算。
在一些实施例中,拆分得到的第二数据包的数量还可以与多个密码机的数量不同。例如,当客户端请N个密码机对第一数据包进行并行处理时,可将第一数据包拆分为M(M为大于N的整数)个第二数据包,从而,每个密码机可对至少一个第二数据包进行密码运算。
在一些实施例中,将第一数据包拆分为多个第二数据包的拆分方式例如可以为以下方式1或方式2:
方式1:将第一数据包拆分为多个大小相同第二数据包。
一示例,假设第一数据包的大小为1GB,那么,可将该1GB大小的第一数据包平均拆分为4个256MB的第二数据包,交由4个密码机进行密码运算。
方式2:基于多个密码机的繁忙指数,将第一数据包拆分为多个大小不同的第二数据包,以使发送至每一密码机的第二数据包的大小与该密码机的繁忙指数呈负相关。
其中,发送至每一密码机的第二数据包的大小与该密码机的繁忙指数呈负相关,还可以理解为,繁忙指数越高的密码机,分配到的第二数据包的大小(包长)越小,相应地,繁忙指数越低的密码机,分配到的第二数据包的大小(包长)越大。其中,分配到某个密码机的第二数据包的大小,还可以理解为,发送至该密码机的所有第二数据包的大小之和。
一示例,假设客户端可调用的密码机包括第一密码机和第二密码机,其中第一密码机的繁忙指数高于第二密码机的繁忙指数,那么,可将该1GB大小的第一数据包拆分为2个大小不同的第二数据包,例如可拆分为1个256MB的第二数据包和一个768MB的第二数据包,并可将较小的第二数据包(如256MB的第二数据包)交由第一密码机进行密码运算,将较大的第二数据包(如768MB的第二数据包)交由第二密码机进行密码运算。
根据本实施例的方法,当需要对某个数据包进行分包处理时(例如,当该数据包满足第一条件时),可以结合多个密码机的繁忙指数分配数据包的大小。其中,繁忙指数越高的密码机分配到的数据包的大小(包长)越小,从而可达到所有密码机几乎同时返回密码运算结果的目的。
需要说明的是,不同厂商密码机的繁忙指数可通过不同的方法进行判断,这里不予赘述。
在一些实施例中,客户端将第一数据包拆分为多个第二数据包时,还可以使得其中一部分第二数据包的大小相同。例如,假设客户端可调用的密码机包括第一密码机、第二密码机和第三密码机,其中第一密码机和第二密码机的繁忙指数相同,且高于第三密码机的繁忙指数,那么,可将第一数据包拆分为3个第二数据包,例如分别记为数据包#1、数据包#2和数据包#3,其中,数据包#1和数据包#2的大小相同,且小于数据包#3的大小。在该场景下,可将大小相对较小的数据包#1和数据包#2分别交由第一密码机和第二密码机进行密码运算,并将大小相对较大的数据包#3交由第三密码机进行密码运算。
图3示出了客户端通过调用0018接口拆分数据包的一例示意图。
如图3所示,客户端上的应用程序请求密码机对1GB的大数据包(第一数据包)进行加密运算时,可通过调用0018接口将该1GB的数据包拆分为4个256MB的小数据包(第二数据包)。进一步地,可将该4个256MB的小数据包分发至4个密码机(密码机#1至密码机#4)进行密码运算。
S202,将多个第二数据包分发至多个密码机,以请求该多个密码机基于分组密码运算算法分别对接收的第二数据包进行密码运算。
示例性地,本申请实施例中分组密码运算算法的流程可包括:将待处理的数据包分为多个数据分组,并对该多个数据分组分别进行密码运算。其中,对该多个数据分组分别进行密码运算的过程之间不存在依赖关系,也就是说,该分组密码运算算法具有可并行运算的特性。作为示例,本申请实施例中的分组密码运算算法例如可以为ECB模式或CTR模型的对称密码运算算法。
可以理解的是,由于分组密码运算算法具有可并行运算的特性,因此具备将多个第二数据包分别交由多个密码机并行进行密码运算的条件,故在该场景下,客户端可将第一数据包拆分为多个第二数据包,进而将多个第二数据包分发至多个密码机,以请求该多个密码机基于分组密码运算算法分别对接收的第二数据包进行密码运算。
示例性地,该多个密码机中的每个密码机可接收(分配)到至少一个第二数据包,进而可基于分组密码运算算法对接收到的至少一个第二数据包进行密码运算。
在一种可能的方式中,每个密码机接收到的第二数据包的大小相同。例如,假设在S101中,客户端将第一数据包拆分为了多个大小相同第二数据包,且拆分得到的第二数据包的数量与多个密码机的数量相同,那么,每个密码机可接收到1个第二数据包,且每个密码机接收到的第二数据包的大小相同。
在另一种可能的方式中,每个密码机接收到的第二数据包的大小不同。例如,假设在S101中,客户端将第一数据包拆分为了多个大小不同的第二数据包,且拆分得到的第二数据包的数量与多个密码机的数量相同,那么,每个密码机可接收到1个第二数据包,且每个密码机接收到的第二数据包的大小不同。示例性地,在该情况下,每个密码机接收到的第二数据包的大小可与该密码机的繁忙指数呈负相关。例如,繁忙指数越高的密码机,接收到的第二数据包的大小(包长)越小,繁忙指数越低的密码机,接收到的第二数据包的大小(包长)越大。
S203,组合每一密码机对接收的第二数据包进行密码运算的结果,得到第一数据包对应的密码运算结果。
多个密码机基于分组密码运算算法完成对接收的第二数据包的密码运算后,可将密码运算结果返回给客户端,从而,客户端通过组合(拼接)每一密码机返回的密码运算结果,即可得到第一数据包对应的密码运算结果。
举例来说,假设多个密码机包括密码机#1、密码机#2和密码机#3,其中,密码机#1返回的密码运算结果为运算结果#1,密码机#2返回的密码运算结果为运算结果#2,密码机#3返回的密码运算结果为运算结果#3,那么,客户端可将运算结果#1、运算结果#2和运算结果#3进行拼接,即可得到第一数据包对应的密码运算结果。
在一些实施例中,上述分组密码运算算法(也即客户端所请求的密码运算算法)可以为ECB模式的对称密码运算算法。例如,ECB模式的对称加密/解密运算算法。
作为一个示例,图4示出了本申请实施例提供的ECB模式的对称加密运算的一例示意图。其中,第一数据包可分为4个明文分组,如图4中的明文分组1至明文分组4。从图4可以看出,对各个明文分组进行加密运算时,相互之间没有依赖关系,因此在加密前可将输入的明文分成多份(如两份)。
为便于理解,假设在图4的例子中将输入的明文(即第一数据包)分成两份(即分成两个第二数据包),并分别交由密码机1和密码机2进行加密运算。其中,第一份明文例如包括图4中的明文分组1和明文分组2,第二份明文例如包括图4中的明文分组3和明文分组4。在该场景下,明文分组1和明文分组2例如可交由密码机1进行加密运算,加密完成后,密码机1返回密文分组1和密文分组2;明文分组3和明文分组4例如可交由密码机2进行加密运算,加密完成后,密码机2返回密文分组3和密文分组4。进一步地,将4个密文分组进行组合,即可构成最终的密文(第一数据包对应的加密运算结果)。
作为另一示例,假设待加密的第一数据包的大小为1GB字节,在该场景下,对该1GB字节的大包进行SM4 ECB加密运算时,例如可将该大包平均分成4个小包(第二数据包),并分别交由4个密码机进行加密运算。其中,每个小包的大小为256MB。由于SM4的一个分组的大小是16字节,因此单个密码机需进行加密运算的明文分组的数量为16M个(即16×1024×1024个)。每个密码机分别完成对16M个明文分组的加密运算后,可分别返回对应的密文分组。进一步地,将所有密码机返回的密文分组进行组合,即可构成最终的密文(第一数据包对应的加密运算结果)。
图5为本申请实施例提供的ECB模式的对称解密运算的一例示意图。其中,第一数据包可分为4个密文分组,如图5中的密文分组1至密文分组4。
假设在图5的例子中将输入的密文(即第一数据包)分成两份(即分成两个第二数据包),第一份密文例如包括图5中的密文分组1和密文分组2,第二份密文例如包括图5中的密文分组3和密文分组4。在该场景下,密文分组1和密文分组2例如可交由密码机1进行解密运算,解密完成后,密码机1返回明文分组1和明文分组2;密文分组3和密文分组4例如可交由密码机2进行解密运算,解密完成后,密码机2返回明文分组3和明文分组4。进一步地,将4个明文分组进行组合,即可构成最终的明文(第一数据包对应的解密运算结果)。
在一些实施例中,上述分组密码运算算法(也即客户端所请求的密码运算算法)可以为CTR模式的对称密码运算算法。例如,CTR模式的对称加密/解密运算算法。
示例性地,当分组密码运算算法为CTR模式的对称密码运算算法时,该方法还可以包括:基于第一初始向量值确定传入多个密码机中每一密码机的初始向量值;其中,传入每一密码机的初始向量值,用于该密码机对接收的第二数据包进行CTR模式的对称密码运算;其中,第一初始向量值为客户端调用密码运算接口(即0018接口,如加密/解密接口)时传入的初始向量值,该密码运算接口可用于客户端请求多个密码机分别对接收的第二数据包进行CTR模式的对称密码运算。
也就是说,当分组密码运算算法为CTR模式的对称密码运算算法时,可基于客户端调用0018接口时传入的初始向量(Initialization Vector,IV)值确定传入每一密码机的IV值,进而,每一密码机可根据传入该密码机的IV值对接收的第二数据包进行CTR模式的对称密码运算。
作为一个示例,假设多个密码机包括第一密码机和第二密码机,那么,基于第一初始向量值(以下简称为第一IV值)确定传入该多个密码机中每一密码机的IV值的方式例如可包括以下步骤1)和2):
1)将第一IV值确定为传入第一密码机的初始向量值。
举例来说,假设客户端调用密码运算接口(0018接口)时传入的IV值(第一IV值)为CTR,那么,可将CTR确定为传入第一密码机的IV值。
2)基于第一IV值,以及第一密码机需进行密码运算的第二数据包的大小,确定传入第二密码机的IV值。
举例来说,假设第一IV值为CTR,第一密码机需进行密码运算的第二数据包的大小为256MB,那么,可将256MB对应的分组数与第一IV值相加的结果确定为传入第二密码机的IV值。例如,SM4的一个分组的大小为16字节,故256MB可分为16M个分组,或者说,256MB对应的分组数为16M个,因此,传入第二密码机的IV值即为:第一IV值+16M。
作为一个示例,图6示出了本申请实施例提供的CTR模式的对称加密运算的一例示意图。其中,第一数据包可分为4个明文分组,如图6中的明文分组1至明文分组4。
在图6中,计数器CTR指的是由客户端上的应用程序调用加密接口时传入的IV值,也即,用户调用加密接口时传入的原始IV值。当将大包拆分为多个小包,交由不同密码机加密时,需要提前计算好传递给不同密码机的IV值。
在图6中,假设将明文分组1和明文分组2交由密码机1处理,那么传递给密码机1的IV值是用户调用加密接口时传入的原始IV值(即CTR);假设将明文分组3和明文分组4交由密码机2处理,那么传递给密码机2的IV值是用户调用加密接口时传入的原始IV值(即CRT)加上密码机1处理的明文分组的数量,也即,传递给密码机2的IV值为CTR+2。
在图6中,密码机1对明文分组1进行加密时,可对传入密码机1的IV值(即CTR)进行加密,并与明文分组1进行异或(XOR)运算,从而得到密文分组1;密码机1对明文分组2进行加密时,可对传入密码机1的IV值+1的结果(即CTR+1)进行加密,并与明文分组2进行异或(XOR)运算,从而得到密文分组2。类似地,密码机2对明文分组3进行加密时,可对传入密码机2的IV值(即CTR+2)进行加密,并与明文分组3进行异或(XOR)运算,从而得到密文分组3;密码机2对明文分组4进行加密时,可对传入密码机2的IV值+1的结果(即CTR+3)进行加密,并与明文分组4进行异或(XOR)运算,从而得到密文分组4。进一步地,将4个密文分组进行组合,即可构成最终的密文(第一数据包对应的加密运算结果)。
作为另一示例,假设待加密的第一数据包的大小为1GB字节,在该场景下,对该1GB字节的大包进行SM4 CTR加密运算时,例如可将该大包平均分成4个小包(第二数据包),并分别交由4个密码机进行加密运算。其中,每个小包的大小为256MB。由于SM4的一个分组的大小是16字节,因此单个密码机需进行加密运算的明文分组的数量为16M个(即16×1024×1024个)。此时,传递给密码机1的IV值是用户调用加密接口时输入的原始IV值,传递给密码机2的IV值是原始IV值加上16M,传递给密码机3的IV值是原始IV值加上32M,传递给密码机4的IV值是原始IV值加上48M。
进一步地,每个密码机可基于传入该密码机的IV值对分配给各自的明文分组进行加密,加密完成后,可返回对应的密文分组。通过将所有密码机返回的密文分组进行组合,即可构成最终的密文(第一数据包对应的加密运算结果)。
图7为本申请实施例提供的CTR模式的对称解密运算的一例示意图。其中,第一数据包可分为4个密文分组,如图7中的密文分组1至密文分组4。
在图7中,假设将密文分组1和密文分组2交由密码机1处理,那么传递给密码机1的IV值是用户调用解密接口时传入的原始IV值(即CTR);假设将密文分组3和密文分组4交由密码机2处理,那么传递给密码机2的IV值是用户调用解密接口时传入的原始IV值(即CRT)加上密码机1处理的密文分组的数量,也即,传递给密码机2的IV值为CTR+2。
在图7中,密码机1对密文分组1进行解密时,可对传入密码机1的IV值(即CTR)进行加密,并与密文分组1进行异或(XOR)运算,从而得到明文分组1;密码机1对密文分组2进行解密时,可对传入密码机1的IV值+1的结果(即CTR+1)进行加密,并与密文分组2进行异或(XOR)运算,从而得到明文分组2。类似地,密码机2对明文分组3进行解密时,可对传入密码机2的IV值(即CTR+2)进行加密,并与密文分组3进行异或(XOR)运算,从而得到明文分组3;密码机2对密文分组4进行解密时,可对传入密码机2的IV值+1的结果(即CTR+3)进行加密,并与密文分组4进行异或(XOR)运算,从而得到明文分组4。进一步地,将4个明文分组进行组合,即可构成最终的明文(第一数据包对应的解密运算结果)。
在本申请实施例中,当客户端主机可以使用多台密码机时,每台密码机对外提供密码运算服务的网际协议(Internet Protocol,IP)地址和端口号需保存在客户端的0018接口库所需的配置文件中。
需要说明的是,0018规范定义了接口,而接口的具体实现可由密码机厂商独立完成。
作为一个示例,0018接口的实现库的配置文件例如可包括以下内容:密码机1,IP=192.168.1.51,PORT(端口)=9000;密码机2,IP=192.168.1.52,PORT=9000;密码机3,IP=192.168.1.53,PORT=9000;密码机4,IP=192.168.1.54,PORT=9000。
本申请实施例还提供了一种分组密码运算方法,应用于分组密码运算系统,该分组密码运算系统包括:客户端和多个密码机,该方法包括:利用客户端,将第一数据包拆分为多个第二数据包,并将多个第二数据包分发至多个密码机,以请求多个密码机基于分组密码运算算法分别对接收的第二数据包进行密码运算;其中,分组密码运算算法的流程包括:将待处理的数据包分为多个数据分组,并对多个数据分组分别进行密码运算;其中,对多个数据分组分别进行密码运算的过程之间不存在依赖关系;利用多个密码机中的每一密码机,对接收的第二数据包进行基于分组密码运算算法的密码运算;利用客户端,组合每一密码机对接收的第二数据包进行密码运算的结果,得到第一数据包对应的密码运算结果。
本申请实施例还提供了一种分组密码运算系统,该分组密码运算系统可包括客户端和多个密码机。其中,客户端可用于将第一数据包拆分为多个第二数据包,并将多个第二数据包分发至多个密码机,以请求多个密码机基于分组密码运算算法分别对接收的第二数据包进行密码运算;其中,分组密码运算算法的流程包括:将待处理的数据包分为多个数据分组,并对多个数据分组分别进行密码运算;其中,对多个数据分组分别进行密码运算的过程之间不存在依赖关系;多个密码机中的每一密码机,可用于对接收的第二数据包进行基于分组密码运算算法的密码运算;客户端还可以用于组合每一密码机对接收的第二数据包进行密码运算的结果,得到第一数据包对应的密码运算结果。
应理解,该分组密码运算系统中的客户端可用于实现上述密码运算方法中由客户端实现的相应的功能,以及该分组密码运算系统中的各个密码机,可用于实现上述密码运算方法中由各个密码机实现的相应的功能,为了简洁,在此不再赘述。
在一些实施例中,该多个密码机为多个服务器密码机,客户端可通过交换机或路由器与该多个服务器密码机相连。
图8为本申请实施例提供的物理密码机的环境部署示意图。其中,客户端主机801通过交换机/路由器802与多个服务器密码机(如图8中的服务器密码机803、服务器密码机804、服务器密码机805和服务器密码机806)相连接,从而确保网络互通。在图8中,客户端主机上可运行应用程序,该应用程序可通过调用0018接口请求服务器密码机进行密码运算。例如,可请求多个服务器密码机进行并行密码运算。
在一些实施例中,该多个密码机为一个或多个云服务器密码机中的多个虚拟密码机,其中,同一个云服务器密码机中的多个虚拟密码机通过虚拟网桥与该云服务器密码机的物理网卡相连,一个或多个云服务器密码机通过交换机或路由器与客户端相连。
图9为本申请实施例提供的云服务器密码机的环境部署示意图。其中,同一个云服务器密码机中的多个虚拟密码机通过虚拟网桥与该云服务密码机的物理网卡(eth0)相连,多个云服务器密码机通过交换机或路由器与客户端相连。例如,云服务器密码机1中的多个虚拟密码机(包括虚拟密码机905和虚拟密码机906)通过虚拟网桥904与该云服务密码机1的eth0 903相连;云服务器密码机2中的多个虚拟密码机(包括虚拟密码机909和虚拟密码机910)通过虚拟网桥908与该云服务密码机2的eth0 907相连;云服务器密码机1和云服务器密码机2通过交换机/路由器902与客户端主机901相连。
在图9中,客户端主机上的应用程序可通过调用0018接口请求虚拟密码机进行密码运算。例如,可请求云服务器密码机1和/或云服务器密码机2中的多个虚拟密码机进行并行密码运算。
为便于理解本申请的实施例,下面介绍本申请实施例提供的密码运算方法的一种可能的实现流程。
图10为本申请实施例提供的密码运算方法的一种可能的实现流程示意图,该实现流程可由客户端上的应用程序调用0018接口实现。如图10所示,该实现流程可包括:
S1001,与多个密码机建立连接。
该步骤可通过调用SDF_OpenDevice接口实现。调用SDF_OpenDevice接口时,该接口的内部实现包括:读取配置文件中所有密码机的IP地址和端口号,使客户端与每台密码机建立连接。也就是说,客户端调用SDF_Opendevice接口时,该接口内部可维护客户端与每台密码机的连接。
S1002,基于与每台密码机的连接,与每台密码机建立会话。
该步骤可通过调用SDF_OpenSession接口实现。调用SDF_OpenSession接口时,该接口的内部实现包括:基于客户端与每台密码机的连接,使客户端分别与每台密码机建立会话,并返回会话句柄。
S1003,判断是否执行对称加密/解密运算流程。
若判断结果为是,则执行S1004;若判断结果为否,则执行S1011。
S1004,基于与每台密码机建立的会话,创建每台密码机的会话密钥句柄。
若在S1003中,经判断需执行对称加密/解密运算流程,则可基于客户端与每台密码机建立的会话,创建每台密码机的会话密钥句柄,以用于执行对称密码运算。
该步骤可通过调用SDF_GenerateKeyWithKEK接口实现。调用SDF_GenerateKeyWithKEK接口时,该接口的内部实现包括:基于客户端与每台密码机建立的会话创建相应的会话密钥,并返回会话密钥句柄。
S1005,判断是否满足分包触发条件(对应前述实施例中的第一条件)。
示例性地,该分包触发条件例如可包括:算法模式是ECB或CTR,且输入数据包的包长大于第一阈值(如1MB)。若该步骤的判断结果为是,则执行S1006;若判断结果为否,则执行S1008。
S1006,将输入数据包分成多份,基于会话密钥句柄,调用加密/解密接口,请求每个密码机处理各自分包。
若在S1005中,经判断满足分包触发条件,则可将输入数据包分成多份。进一步地,针对上述多个密码机中的每个密码机,可基于该密码机的会话密钥句柄,调用该密码机的加密/解密接口,从而请求该密码机对其分包进行加密/解密运算。
S1007,组合多个密码机的返回结果。
通过组合多个密码机中每个密码机返回的加密/解密运算结果,可得到对输入数据包的最终加密/解密运算结果。
S1008,选择任意一个会话密钥句柄,调用加密/解密接口,请求密码机处理数据包。
若在S1005中,经判断不满足分包触发条件,则可选择任意一个密码机的会话密钥句柄调用该密码机的加密/解密接口,以请求该密码机对输入数据包进行加密/解密运算。
其中,上述步骤S1005至S1008可通过调用SDF_Encrypt/SDF_Decrypt接口实现。调用SDF_Encrypt/SDF_Decrypt接口时,该接口的内部实现包括:判断是否满足分包触发条件。满足分包触发条件时,则将大包分包,并将每个小包使用每个密码机各自的会话密钥句柄进行加密/解密运算。所有密码机返回运算结果后,该接口将每个密码机返回的消息组合在一起,作为SDF_Encrypt/SDF_Decrypt接口的返回消息;不满足分包触发条件时,则选择任意一个会话密钥句柄,请求单个密码机进行加密/解密运算。
S1009,将运算结果返回。
在该步骤中,可将S1007或S1008中得到的加密/解密结果返回。
S1010,销毁每个密码机的会话密钥句柄。
该步骤可通过调用SDF_DestroyKey接口实现。调用SDF_DestroyKey接口时,该接口的内部实现包括:将之前建立的每个密码机的会话密钥句柄释放。
S1011,执行其他密码运算流程。
若在S1003中,经判断不需要执行对称加密/解密运算流程,则可基于任意会话句柄调用其他接口,从而执行其他密码运算流程,如:签名/验签运算流程、哈希运算流程等。执行其他密码运算流程时,无需对大包进行分包处理。
S1012,关闭与每个密码机建立的会话。
在步骤S1010或S1011之后,可关闭与每个密码机建立的会话。
该步骤可通过调用SDF_CloseSession接口实现。调用SDF_CloseSession接口时,该接口的内部实现包括:将之前建立的每个密码机的会话句柄释放。
S1013,关闭与多个密码机的连接。
该步骤可通过调用SDF_CloseDevice接口实现。调用SDF_CloseDevice接口时,该接口的内部实现包括:将之前建立的与每个密码机的连接断开。
本申请实施例通过分析对称密码运算中不同运算模式的处理流程,明确了对称密码运算ECB和CTR模式可将大包拆分为多个小包,然后利用多台密码机并行处理,从而加快了对用户请求的处理速度,降低了处理延时。
以上结合附图详细描述了本申请的优选实施方式,但是,本申请并不限于上述实施方式中的具体细节,在本申请的技术构思范围内,可以对本申请的技术方案进行多种简单变型,这些简单变型均属于本申请的保护范围。例如,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本申请对各种可能的组合方式不再另行说明。又例如,本申请的各种不同的实施方式之间也可以进行任意组合,只要其不违背本申请的思想,其同样应当视为本申请所公开的内容。又例如,在不冲突的前提下,本申请描述的各个实施例和/或各个实施例中的技术特征可以和现有技术任意的相互组合,组合之后得到的技术方案也应落入本申请的保护范围。
基于前述的实施例,本申请实施例提供相应的分组密码运算装置。该装置包括所包括的各模块、以及各模块所包括的各子模块,可以通过具有信息处理能力的计算机设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(Central Processing Unit,CPU)、微处理器(Microprocessor Unit,MPU)、数字信号处理器(Digital Signal Processor,DSP)或现场可编程门阵列(Field ProgrammableGate Array,FPGA)等。
图11示出了本申请实施例提供的一种分组密码运算装置1100(以下简称为装置1100)的组成结构。如图11所示,装置1100可以包括:拆分单元1101,用于将第一数据包拆分为多个第二数据包;分发单元1102,用于将多个第二数据包分发至多个密码机,以请求多个密码机基于分组密码运算算法分别对接收的第二数据包进行密码运算;其中,分组密码运算算法的流程包括:将待处理的数据包分为多个数据分组,并对多个数据分组分别进行密码运算;其中,对多个数据分组分别进行密码运算的过程之间不存在依赖关系;组合单元1103,用于组合每一密码机对接收的第二数据包进行密码运算的结果,得到第一数据包对应的密码运算结果。
在一些实施例中,拆分单元1101,具体用于:在满足第一条件的情况下,将第一数据包拆分为多个第二数据包;其中,第一条件包括以下至少之一:客户端能够调用的密码机的数量为多个;分组密码运算算法为电子密码本模式或计数器模式的对称密码运算算法;以及,第一数据包的大小大于或等于第一阈值。
在一些实施例中,拆分单元1101,具体用于:将第一数据包拆分为多个大小相同第二数据包;或者,基于多个密码机的繁忙指数,将第一数据包拆分为多个大小不同的第二数据包,以使发送至每一密码机的第二数据包的大小与该密码机的繁忙指数呈负相关。
在一些实施例中,拆分得到的第二数据包的数量与多个密码机的数量相同。
在一些实施例中,分组密码运算算法为计数器模式的对称密码运算算法,装置1100还包括:确定单元,用于基于第一初始向量值确定传入多个密码机中每一密码机的初始向量值;其中,传入每一密码机的初始向量值,用于该密码机对接收的第二数据包进行计数器模式的对称密码运算;其中,第一初始向量值为客户端调用密码运算接口时传入的初始向量值,该密码运算接口用于装置1100请求多个密码机分别对接收的第二数据包进行计数器模式的对称密码运算。
在一些实施例中,多个密码机包括第一密码机和第二密码机,确定单元具体用于:将第一初始向量值确定为传入第一密码机的初始向量值;基于第一初始向量值,以及第一密码机需进行密码运算的第二数据包的大小,确定传入第二密码机的初始向量值。
在一些实施例中,装置1100还包括:启动单元,用于在将第一数据包拆分为多个第二数据包之前,启动应用程序;调用单元,用于利用应用程序调用密码运算接口;其中,密码运算接口用于实现:将第一数据包拆分为多个第二数据包;将多个第二数据包分发至多个密码机,以请求多个密码机基于分组密码运算算法分别对接收的第二数据包进行密码运算;以及,组合每一密码机对接收的第二数据包进行密码运算的结果。
在一些实施例中,密码运算接口的实现库的配置文件包括:多个密码机的网际协议地址和端口号。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。在一些实施例中,本申请实施例提供的装置具有的功能或包含的模块可以用于执行上述方法实施例描述的方法,对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件、软件或固件,或者硬件、软件、固件三者之间的任意结合。
本申请实施例还提供一种分组密码运算设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的部分或全部步骤。
本申请实施例还提供一种芯片。该芯片包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有该芯片的设备执行上述方法中的部分或全部步骤。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的部分或全部步骤。所述计算机可读存储介质可以是瞬时性的,也可以是非瞬时性的。
本申请实施例还提供一种计算机程序,包括计算机可读代码,在所述计算机可读代码在设备(如客户端;又如密码机)中运行的情况下,所述设备中的处理器执行上述方法中的部分或全部步骤。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并执行时,实现上述方法中的部分或全部步骤。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一些实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一些实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software DevelopmentKit,SDK)等等。
这里需要指出的是:上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考。以上设备、芯片、存储介质、计算机程序及计算机程序产品实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请设备、芯片、存储介质、计算机程序及计算机程序产品实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
图12为本申请实施例中分组密码运算设备的一种硬件实体示意图,该分组密码运算设备可以是客户端或密码机。图12所示的分组密码运算设备1200包括处理器1210,处理器1210可以从存储器中调用并运行计算机程序,以实现本申请实施例中的方法。
在一些实施例中,如图12所示,分组密码运算设备1200还可以包括存储器1220。其中,处理器1210可以从存储器1220中调用并运行计算机程序,以实现本申请实施例中的方法。其中,存储器1220可以是独立于处理器1210的一个单独的器件,也可以集成在处理器1210中。
在一些实施例中,如图12所示,分组密码运算设备1200还可以包括收发器1230,处理器1210可以控制该收发器1230与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。其中,收发器1230可以包括发射机和接收机。收发器1230还可以进一步包括天线,天线的数量可以为一个或多个。
在一些实施例中,该分组密码运算设备1200具体可为本申请实施例的客户端,并且该分组密码运算设备1200可以实现本申请实施例的各个方法中由客户端实现的相应流程,为了简洁,在此不再赘述。
在一些实施例中,该分组密码运算设备1200具体可为本申请实施例的密码机,并且该分组密码运算设备1200可以实现本申请实施例的各个方法中由密码机实现的相应流程,为了简洁,在此不再赘述。
应理解,说明书通篇中提到的“一个实施例”、“一实施例”或“一些实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”、“在一实施例中”或“在一些实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各步骤/过程的序号的大小并不意味着执行顺序的先后,各步骤/过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元或模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。

Claims (12)

1.一种分组密码运算方法,其特征在于,应用于客户端,所述方法包括:
将第一数据包拆分为多个第二数据包;
将所述多个第二数据包分发至多个密码机,以请求所述多个密码机基于分组密码运算算法分别对接收的第二数据包进行密码运算;其中,所述分组密码运算算法的流程包括:将待处理的数据包分为多个数据分组,并对所述多个数据分组分别进行密码运算;其中,对所述多个数据分组分别进行密码运算的过程之间不存在依赖关系;
组合每一密码机对接收的第二数据包进行密码运算的结果,得到所述第一数据包对应的密码运算结果;
其中,所述分组密码运算算法为计数器模式的对称密码运算算法,所述多个密码机包括第一密码机和第二密码机,所述方法还包括:
将第一初始向量值确定为传入所述第一密码机的初始向量值;
基于所述第一初始向量值,以及所述第一密码机需进行密码运算的第二数据包的大小,确定传入所述第二密码机的初始向量值;其中,传入每一密码机的初始向量值,用于所述密码机对接收的第二数据包进行计数器模式的对称密码运算;
其中,所述第一初始向量值为所述客户端调用密码运算接口时传入的初始向量值,所述密码运算接口用于所述客户端请求所述多个密码机分别对接收的第二数据包进行计数器模式的对称密码运算。
2.根据权利要求1所述的方法,其特征在于,所述将第一数据包拆分为多个第二数据包,包括:
在满足第一条件的情况下,将所述第一数据包拆分为多个第二数据包;其中,所述第一条件包括以下至少之一:
所述客户端能够调用的密码机的数量为多个;
所述分组密码运算算法为电子密码本模式或计数器模式的对称密码运算算法;以及,
所述第一数据包的大小大于或等于第一阈值。
3.根据权利要求1或2所述的方法,其特征在于,所述将第一数据包拆分为多个第二数据包,包括:
将所述第一数据包拆分为多个大小相同第二数据包;或者,
基于所述多个密码机的繁忙指数,将所述第一数据包拆分为多个大小不同的第二数据包,以使发送至每一密码机的第二数据包的大小与所述密码机的繁忙指数呈负相关。
4.根据权利要求3所述的方法,其特征在于,
拆分得到的第二数据包的数量与所述多个密码机的数量相同。
5.根据权利要求1或2所述的方法,其特征在于,在所述将第一数据包拆分为多个第二数据包之前,所述方法还包括:
启动应用程序;
利用所述应用程序调用密码运算接口;其中,所述密码运算接口用于实现:所述将第一数据包拆分为多个第二数据包;所述将所述多个第二数据包分发至多个密码机,以请求所述多个密码机基于分组密码运算算法分别对接收的第二数据包进行密码运算;以及,所述组合每一密码机对接收的第二数据包进行密码运算的结果。
6.根据权利要求5所述的方法,其特征在于,
所述密码运算接口的实现库的配置文件包括:所述多个密码机的网际协议地址和端口号。
7.一种分组密码运算方法,其特征在于,应用于分组密码运算系统,所述分组密码运算系统包括:客户端和多个密码机,所述方法包括:
利用所述客户端,将第一数据包拆分为多个第二数据包,并将所述多个第二数据包分发至所述多个密码机,以请求所述多个密码机基于分组密码运算算法分别对接收的第二数据包进行密码运算;其中,所述分组密码运算算法的流程包括:将待处理的数据包分为多个数据分组,并对所述多个数据分组分别进行密码运算;其中,对所述多个数据分组分别进行密码运算的过程之间不存在依赖关系;
利用所述多个密码机中的每一密码机,对接收的第二数据包进行基于所述分组密码运算算法的密码运算;
利用所述客户端,组合每一密码机对接收的第二数据包进行密码运算的结果,得到所述第一数据包对应的密码运算结果;
其中,所述分组密码运算算法为计数器模式的对称密码运算算法,所述多个密码机包括第一密码机和第二密码机,所述方法还包括:
利用所述客户端执行:
将第一初始向量值确定为传入所述第一密码机的初始向量值;
基于所述第一初始向量值,以及所述第一密码机需进行密码运算的第二数据包的大小,确定传入所述第二密码机的初始向量值;其中,传入每一密码机的初始向量值,用于所述密码机对接收的第二数据包进行计数器模式的对称密码运算;
其中,所述第一初始向量值为所述客户端调用密码运算接口时传入的初始向量值,所述密码运算接口用于所述客户端请求所述多个密码机分别对接收的第二数据包进行计数器模式的对称密码运算。
8.一种分组密码运算装置,其特征在于,应用于客户端,所述装置包括:
拆分单元,用于将第一数据包拆分为多个第二数据包;
分发单元,用于将所述多个第二数据包分发至多个密码机,以请求所述多个密码机基于分组密码运算算法分别对接收的第二数据包进行密码运算;其中,所述分组密码运算算法的流程包括:将待处理的数据包分为多个数据分组,并对所述多个数据分组分别进行密码运算;其中,对所述多个数据分组分别进行密码运算的过程之间不存在依赖关系;
组合单元,用于组合每一密码机对接收的第二数据包进行密码运算的结果,得到所述第一数据包对应的密码运算结果;
其中,所述分组密码运算算法为计数器模式的对称密码运算算法,所述多个密码机包括第一密码机和第二密码机,所述装置还包括:
确定单元,用于:
将第一初始向量值确定为传入所述第一密码机的初始向量值;
基于所述第一初始向量值,以及所述第一密码机需进行密码运算的第二数据包的大小,确定传入所述第二密码机的初始向量值;其中,传入每一密码机的初始向量值,用于所述密码机对接收的第二数据包进行计数器模式的对称密码运算;
其中,所述第一初始向量值为所述客户端调用密码运算接口时传入的初始向量值,所述密码运算接口用于所述客户端请求所述多个密码机分别对接收的第二数据包进行计数器模式的对称密码运算。
9.一种分组密码运算系统,其特征在于,包括:客户端和多个密码机;其中,
所述客户端,用于将第一数据包拆分为多个第二数据包,并将所述多个第二数据包分发至所述多个密码机,以请求所述多个密码机基于分组密码运算算法分别对接收的第二数据包进行密码运算;其中,所述分组密码运算算法的流程包括:将待处理的数据包分为多个数据分组,并对所述多个数据分组分别进行密码运算;其中,对所述多个数据分组分别进行密码运算的过程之间不存在依赖关系;
所述多个密码机中的每一密码机,用于对接收的第二数据包进行基于所述分组密码运算算法的密码运算;
所述客户端,还用于组合每一密码机对接收的第二数据包进行密码运算的结果,得到所述第一数据包对应的密码运算结果;
其中,所述分组密码运算算法为计数器模式的对称密码运算算法,所述多个密码机包括第一密码机和第二密码机,所述客户端具体用于:
将第一初始向量值确定为传入所述第一密码机的初始向量值;
基于所述第一初始向量值,以及所述第一密码机需进行密码运算的第二数据包的大小,确定传入所述第二密码机的初始向量值;其中,传入每一密码机的初始向量值,用于所述密码机对接收的第二数据包进行计数器模式的对称密码运算;
其中,所述第一初始向量值为所述客户端调用密码运算接口时传入的初始向量值,所述密码运算接口用于所述客户端请求所述多个密码机分别对接收的第二数据包进行计数器模式的对称密码运算。
10.根据权利要求9所述的系统,其特征在于,
所述多个密码机为多个服务器密码机,所述客户端通过交换机或路由器与所述多个服务器密码机相连;或者,
所述多个密码机为一个或多个云服务器密码机中的多个虚拟密码机,其中,同一个云服务器密码机中的多个虚拟密码机通过虚拟网桥与所述云服务器密码机的物理网卡相连,所述一个或多个云服务器密码机通过交换机或路由器与所述客户端相连。
11.一种分组密码运算设备,其特征在于,所述分组密码运算设备包括:
存储器,用于存储计算机可执行指令;
处理器,与所述存储器连接,用于通过执行所述计算机可执行指令,实现权利要求1至6中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被至少一个处理器执行时实现权利要求1至6中任一项所述的方法。
CN202311221640.0A 2023-09-21 2023-09-21 一种分组密码运算方法、装置、系统、设备和存储介质 Active CN116980110B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311221640.0A CN116980110B (zh) 2023-09-21 2023-09-21 一种分组密码运算方法、装置、系统、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311221640.0A CN116980110B (zh) 2023-09-21 2023-09-21 一种分组密码运算方法、装置、系统、设备和存储介质

Publications (2)

Publication Number Publication Date
CN116980110A CN116980110A (zh) 2023-10-31
CN116980110B true CN116980110B (zh) 2024-01-30

Family

ID=88483527

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311221640.0A Active CN116980110B (zh) 2023-09-21 2023-09-21 一种分组密码运算方法、装置、系统、设备和存储介质

Country Status (1)

Country Link
CN (1) CN116980110B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111083425A (zh) * 2019-11-25 2020-04-28 视联动力信息技术股份有限公司 视频流处理方法、装置、服务器、电子设备及存储介质
CN111258756A (zh) * 2020-01-09 2020-06-09 奇安信科技集团股份有限公司 一种负载均衡方法、装置、计算机设备和可读存储介质
CN114124480A (zh) * 2021-11-08 2022-03-01 闪捷信息科技有限公司 通信的认证方法、服务器、客户端、电子设备及存储介质
CN115459984A (zh) * 2022-09-02 2022-12-09 京东科技信息技术有限公司 加密、解密方法和装置
CN115766238A (zh) * 2022-11-18 2023-03-07 成都卫士通信息产业股份有限公司 一种海量短数据流加密解密方法及系统
CN116032459A (zh) * 2022-11-11 2023-04-28 浙江大华技术股份有限公司 加密方法、解密方法、设备、存储介质
CN116455559A (zh) * 2023-06-15 2023-07-18 杭州海康威视数字技术股份有限公司 软硬协同高速密码设备实现方法、装置及电子设备
CN116488794A (zh) * 2023-06-16 2023-07-25 杭州海康威视数字技术股份有限公司 基于fpga的高速sm4密码模组实现方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8634549B2 (en) * 2008-05-07 2014-01-21 Red Hat, Inc. Ciphertext key chaining
US10985906B2 (en) * 2018-01-26 2021-04-20 Macau University Of Science And Technology Method and system for secure encryption

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111083425A (zh) * 2019-11-25 2020-04-28 视联动力信息技术股份有限公司 视频流处理方法、装置、服务器、电子设备及存储介质
CN111258756A (zh) * 2020-01-09 2020-06-09 奇安信科技集团股份有限公司 一种负载均衡方法、装置、计算机设备和可读存储介质
CN114124480A (zh) * 2021-11-08 2022-03-01 闪捷信息科技有限公司 通信的认证方法、服务器、客户端、电子设备及存储介质
CN115459984A (zh) * 2022-09-02 2022-12-09 京东科技信息技术有限公司 加密、解密方法和装置
CN116032459A (zh) * 2022-11-11 2023-04-28 浙江大华技术股份有限公司 加密方法、解密方法、设备、存储介质
CN115766238A (zh) * 2022-11-18 2023-03-07 成都卫士通信息产业股份有限公司 一种海量短数据流加密解密方法及系统
CN116455559A (zh) * 2023-06-15 2023-07-18 杭州海康威视数字技术股份有限公司 软硬协同高速密码设备实现方法、装置及电子设备
CN116488794A (zh) * 2023-06-16 2023-07-25 杭州海康威视数字技术股份有限公司 基于fpga的高速sm4密码模组实现方法及装置

Also Published As

Publication number Publication date
CN116980110A (zh) 2023-10-31

Similar Documents

Publication Publication Date Title
CN110138799B (zh) 一种基于sgx的安全云存储方法
AU2017396530B2 (en) Addressing a trusted execution environment using encryption key
CN110214440B (zh) 计算系统,传送受保护数据的方法和可读存储介质
AU2017396531B2 (en) Addressing a trusted execution environment using signing key
US10601590B1 (en) Secure secrets in hardware security module for use by protected function in trusted execution environment
US20220006835A1 (en) Tls integration of post quantum cryptographic algorithms
US11463242B2 (en) Padding oracle elimination in RSA encryption
CN112087304B (zh) 可信计算环境的异构融合方法、装置及相关设备
US8612753B2 (en) Method and apparatus for protected code execution on clients
CN114157415A (zh) 数据处理方法、计算节点、系统、计算机设备和存储介质
CN112035860A (zh) 文件加密方法、终端、装置、设备及介质
EP3574429A1 (en) Addressing a trusted execution environment using clean room provisioning
CN114584306A (zh) 一种数据处理方法和相关装置
CN111600948A (zh) 基于标识密码的云平台应用和数据安全处理方法、系统、存储介质、程序
CN115150821A (zh) 离线包的传输、存储方法及装置
CN116980110B (zh) 一种分组密码运算方法、装置、系统、设备和存储介质
US20230153445A1 (en) Enhanced security systems and methods using a hybrid security solution
US20190362055A1 (en) Digital rights management systems and methods using efficient messaging architectures
CN115001744A (zh) 一种云平台数据完整性验证方法及系统
CN112583580B (zh) 一种量子密钥的处理方法及相关设备
CN110858246B (zh) 安全代码空间的认证方法和系统、及其注册方法
CN116599772B (zh) 一种数据处理方法及相关设备
Nagar et al. A secure mobile cloud storage environment using encryption algorithm‖
Alamer et al. FEATHER: A proposed lightweight protocol for mobile cloud computing security
CN118157876A (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