CN115516454A - 用于硬件安全模块的批量密码术 - Google Patents
用于硬件安全模块的批量密码术 Download PDFInfo
- Publication number
- CN115516454A CN115516454A CN202180033240.XA CN202180033240A CN115516454A CN 115516454 A CN115516454 A CN 115516454A CN 202180033240 A CN202180033240 A CN 202180033240A CN 115516454 A CN115516454 A CN 115516454A
- Authority
- CN
- China
- Prior art keywords
- batch
- hsm
- request
- data structure
- bulk
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
-
- 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/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
用于在硬件安全模块上执行批量加密的方法、系统和装置,包括计算机存储介质和硬件安全模块。硬件安全模块可接收执行一个或多个加密操作的请求。请求可以包括存储多个数据元素的批量数据结构。硬件安全模块可以对多个数据元素进行解批量处理,对多个数据元素执行一个或多个加密操作以生成多个输出,生成存储多个输出的输出批量数据结构,并响应于请求传送输出批量数据结构。可以根据由硬件安全模块实现的批量硬件安全模块应用程序接口(API)来形成请求和批量数据结构。
Description
相关申请的交叉引用
本申请是2020年12月11日提交的美国专利申请No.17/119,342的继续申请,其要求2020年3月10日提交的美国临时专利申请No.62/987,595的优先权,公开内容通过引用并入本文。
背景技术
硬件安全模块(Hardware Security Module,HSM)是可以存储加密密钥(cryptographic key)并且可以使用这些密钥对明文或密文数据执行加密操作(cryptographic operation)的设备。例如,公共密钥基础设施环境中的认证机构和注册机构可以使用HSM来提供某种程度的公共保证,即加密密钥对应于其正确所有者。作为另一个示例,HSM也可以被卡支付系统使用,作为在网络设备之间安全地传输用户信用卡信息的一部分。
HSM可以被设计和构造成具有一个或多个物理安全措施以提供保护或抵抗篡改。例如,HSM可以被配置为在检测到实际或尝试物理突破进入HSM的外壳时使其不可操作或不可访问其存储的密钥。可以将一个或多个HSM实施为对较大安全网络的物理安全层的一部分,较大安全网络可以包括各种硬件和软件组件。
HSM可能是昂贵的,通常是由于实施一个或多个物理安全措施以及包括一个或多个专用的密码处理器,以及由于认证HSM用于加密的过程。密码处理器是专门配置用于执行一些加密操作的处理单元,例如加密,解密或初始化随机或伪随机值,作为使用HSM实现加密框架的一部分。加密处理器可以被实施为与一个或多个通用处理单元,例如一个或多个中央处理单元(CPU)一起的协处理器(Co-proesssor)。HSM可以具有多个加密处理器,这些加密处理器被划分和配置为执行硬件加速。到HSM的输入可以分布在每个密码处理器之间进行处理。例如,HSM通常具有单个接口以允许访问其多个加密处理器。然而,该接口可能不允许HSM在其最充分的处理能力下使用,例如在接收加密小明文的请求时。
本公开提供了向HSM添加新的应用编程接口(API)集合,应用编程接口(API)集合在到HSM的单个消息中处理一批类似请求。新API集合可以包括加密API。加密API可以接受:(1)密钥的标识符;以及(2)明文数组(array),并返回密文数组。新API集合可以包括解密API。解密API可以接受:(1)密钥的标识符;以及(2)密文数组,并返回明文数组。在一些实施方式中,新API集合可以包括用于执行其它加密操作的其它API,诸如本文描述的Sign,Verify,MAC。不同定义的API还可以根据特定的加密框架来定义加密操作,例如对定义高级加密标准(Advanced Encryption Standard,AES)加密和解密的HSM的API,其可以进一步定义不同的操作模式,例如伽罗瓦/计数器(Galois/Counter)模式(GCM)。
HSM供应商将在其设备中实现功能,使得主处理器同时作用于整个批量。例如,处理器可以验证所有明文,将所有验证的明文传递给协处理器,然后将所有明文返回给用户。HSM中的主处理器将把该批量传送到加密处理器,加密处理器将解包(unpack)数组,分别处理每个操作,并将结果打包成另一批量。主处理器将把该批量复制回HSM用户。
这具有显著减少用于小明文加密操作的每操作(Per-operation)开销的优点,其中每个操作的恒定成本占主导地位。例如,可以将小(32字节)明文的吞吐量从每秒几千个请求(requests-per-second,RPS)的量级增加到几百万个RPS的量级。
发明内容
本发明的一个方面提供一种硬件安全模块(HSM),包括多个处理器,所述处理器被配置为:接收执行一个或多个加密操作的请求,所述请求包括存储多个数据元素的第一批量数据结构。所述多个处理器进一步经配置为根据接收的请求和所述一个或多个加密操作来处理所述第一批量数据结构。为了处理所述第一批量数据结构,所述多个处理器被配置为:对所述多个数据元素进行解批量处理,对所述多个数据元素执行所述一个或多个加密操作以生成多个输出,以及生成存储所述多个输出的输出批量数据结构。
所述请求可以是第一请求,所述一个或多个加密操作可以是一个或多个第一加密操作,以及所述多个数据元素可以是多个第一数据元素。所述多个处理器可进一步经配置以:在耦合到所述HSM的存储器中保存一个或多个加密密钥,接收第二请求,以对第二批量数据结构执行一个或多个第二加密操作,其中所述第二批量数据结构包括密钥标识符和多个第二数据元素。所述多个处理器可进一步经配置以确定所述密钥标识符是否对应于所述一个或多个加密密钥中的一个加密密钥,且以及响应于确定所述密钥标识符对应于一个识别的加密密钥,根据所述第二请求处理梭梭树第二批量数据结构,并使用所述识别的加密密钥作为对所述一个或多个第二加密操作的输入。
硬件安全模块可以包括第一处理器和第二处理器,其中所述第一处理器被配置为:接收所述批量处理数据结构作为输入,对所述批量数据结构执行一个或多个预处理操作,确定所述批量处理数据结构对于处理是否有效,以及响应于确定所述批量数据结构对于处理有效,将验证的批量数据结构发送到所述第二处理器。
所述第一处理器可以是通用处理器,所述第二处理器可以是密码处理器,其被配置为对经预处理的所述批量数据结构执行所述一个或多个加密操作。所述请求和所述批量数据结构是根据批量HSM应用程序接口(API)的相应定义来形成的。
所述HSM被配置成执行的所述一个或多个加密操作是根据所述批量HSM API定义的。
所述批量HSM API定义一个或多个API,每个API定义相应的加密框架,包括定义一个或多个相应的数据结构和用于执行所述相应的加密框架的一个或多个相应的加密操作。
所述加密操作包括用于加密、解密、密钥生成、签名生成、签名验证、随机数生成、或消息认证的操作。
所述请求可以是第一请求,所述HSM可以耦合到计算设备,以及所述多个处理器进一步经配置以接收和处理包括第二批量数据结构的第二请求,所述第二批量数据结构包括由所述计算装置批量处理的数据元素。
前述方面的其它实施方式可以包括记录在一个或多个计算机可读存储介质上的计算机实现的方法、装置和计算机程序。
附图说明
图1是与耦合到实施一个或多个批量HSM API的HSM的服务器计算设备通信的用户计算设备的框图。
图2是示出使用硬件安全模块来执行批量加密的示例性过程的流程图。
图3是示出根据接收到的请求和一个或多个加密操作来处理批量数据结构的示例性过程的流程图。
图4是说明在HSM上执行的示例批量加密过程的流程图。
图5是说明在HSM上执行的示例批量解密过程的流程图。
图6是说明在HSM上执行的示例批量签名过程的流程图。
图7是说明在HSM上执行的示例批量验证过程的流程图。
图8是说明在HSM上执行的示例MAC过程的流程图。
图9是用于HSM的代理批量处理请求的示例性过程的流程图。
具体实施方式
本公开提供了用于在硬件安全模块(HSM)上执行批量加密的方法、系统、装置、和包括计算机可读存储介质和设备。HSM可以被配置为接收对HSM执行加密操作的批量请求。HSM不是接收对有效载荷(payload)进行操作的单独请求,而是可以被配置为接收用于在一批中执行相同操作的批量数据。例如,不同于HSM接收用加密密钥来加密明文的多个单独请求,HSM可以被配置为在单个请求中接收批量明文,以用加密密钥对该批中的每个请求加密。
例如,HSM可以实施用于执行不同操作的多个处理器,不同操作与对HSM执行批量处理加密操作有关。第一处理器可以接收包括待处理的数据元素的批量数据结构的批量处理请求。批量数据结构可以是单个数据元素的数组或向量,例如分别用于加密和解密的明文或密文。第一处理器可以对批量数据结构执行预处理操作,例如输入验证,并且在验证时将批量数据结构发送到第二处理器。第二处理器可以是专门配置成执行批量请求中指定的加密操作的密码处理器。作为一个示例,第二处理器可以解包批量数据结构、对批量数据结构的每个单独数据元素执行每个操作、并且将执行操作的结果打包到另一个批量数据结构中。
第一处理器可经配置以将输出批量数据结构发送到将批量请求发送到HSM的请求计算装置。从请求计算设备的角度来看,可以以不透明的方式执行批量处理,因为可以向HSM发送批量数据,并且可以响应于输入从HSM接收批量输出数据,而不需要向HSM指定如何处理批量数据的请求计算设备。
批量数据结构可以被HSM分成多个子批量,并且分布在由HSM实施的多个密码处理器上。密码处理器(Cryptoprocessor)可以包括多个处理核,并且在一些实施方式中,HSM可以将收到的批量数据分给密码处理器的每个核进行处理。
HSM和请求设备可以根据一个或多个批量处理HSM应用程序接口(API)执行操作。根据本公开的方面,批量HSM API可以定义一个或多个由HSM被配置为执行的操作组成的批量函数。批量HSM API可以为各种不同的加密基元(Cryptographic Primitive)中的任何一个定义批量函数和批量数据结构。例如,批量HSM API可以定义批量加密、批量解密、和批量密钥生成的批量处理函数,分别作为由HSM执行的用于加密,解密和密钥生成的各个操作的组合。
耦合到HSM的计算设备可以实现批量逻辑以批量处理请求并将批量请求发送到HSM用于批量处理。以这种方式,HSM可以要求例如由HSM供应商进行最小的修改,以便实现根据本公开的方面的批量密码术。此外,可以增加HSM上的处理吞吐量并且可以降低每个操作的开销,特别是在请求计算设备发送许多请求来处理小数据元素(例如加密小明文)的使用情况下。例如,可以减少由HSM执行的用于执行预处理操作以及用于在HSM的处理器或处理核之间传送数据的操作,至少因为用于处理的数据元素被成批地一起发送,而不是被单独地发送。
图1是与耦合到HSM 105的服务器计算设备115通信的用户计算设备110的框图,HSM 105实现用于一个或多个批量HSM API 100的批量处理逻辑。用户计算设备110可以被配置为通过网络125与服务器计算设备115通信。用户计算设备110可以是各种不同类型的设备中的任何一种,能够处理指令并将数据传输至人和其它计算机或从人和其它计算机接收数据,例如膝上型计算机、台式计算机、诸如电话或平板电脑的移动设备、视频游戏控制台、TV机顶盒、缺少本地存储能力的网络计算机、或用于佩戴的设备,例如手表、耳塞等。
服务器计算设备115可以是单个设备,或者可以是数据中心的一部分,数据中心本身可以是云计算平台的一部分。云计算平台可以包括多个数据中心,数据中心包括多个服务器计算设备,例如服务器计算设备115。在一些实施方式中,用户计算设备110耦合到HSM105,例如因为HSM 105作为物理组件安装在用户计算设备110上。用户计算设备110和HSM105也可以通过例如总线或电线的物理连接耦合。
设备110,115能够通过网络125进行直接和间接通信。例如,使用因特网套接字(Socket),用户计算设备110可以通过因特网协议连接到在服务器计算设备115上运行的服务。服务器计算设备115可以建立可以接受用于发送和接收信息的发起连接的监听套接字。网络125本身可以包括各种配置和协议,包括因特网,万维网,内联网,虚拟专用网络,广域网,局域网和使用一个或多个公司专有的通信协议的专用网络。网络125可沿着各种不同带宽支持各种短程和长程连接,带宽例如通常与Bluetooth标准相关联的2.402GHz至2.480GHz、通常与Wi-Fi通信协议相关联的2.4GHz和5GHz、或与例如无线宽带通信的LTE标准相关联的各种通信标准。另外或可选地,网络125还可以支持设备110,115之间的有线连接,包括各种类型的以太网连接。
HSM 105可以是实现用于执行加密操作和存储一个或多个加密密钥的一个或多个物理安全措施的计算设备。HSM 105可以是耦合到服务器计算设备115的单独的计算设备,例如通过网络125或通过单独的连接。连接可以是有线的或无线的。例如,HSM 105可以通过一个或多个物理电缆,或者通过HSM和服务器计算设备115之间的总线接口耦合到服务器计算设备115。在一些实施方式中,HSM 105是可以直接插入到服务器计算设备115中的卡或其它物理模块。
HSM 105可以构造有防篡改或抗篡改外壳。作为示例,HSM 105可以被配置为检测HSM 105的外壳的破坏或尝试破坏,并且作为响应可以使其自身不可操作或其存储的密钥不可用。HSM 105可以实现各种不同的物理安全措施中的任何一种。
HSM 105可以包括一个或多个密码处理器254。密码处理器可以是被配置用于执行加密操作的处理单元。在一些设备上,密码处理器可以被实施为另一种类型的处理单元的协处理器,例如另一个密码处理器或通用CPU。一个或多个密码处理器254可以被配置用于在执行至少一些类型的加密操作时加速硬件。例如,密码处理器可以是加密加速器并且被配置用于有效地执行加密操作,包括与诸如AES的不同类型的加密框架相关联的操作。
HSM 105可以是产生对HSM 105执行加密操作的请求的许多计算设备的大型网络的一部分。网络125可以具有少量的计算设备,例如由HSM 105服务的小型企业网络。其它网络可以具有大量的计算设备,例如计算平台的数千个设备。每个计算设备可以生成用于对例如明文或密文的某些数据执行加密操作的多个请求。
由HSM 105管理的加密密钥的数量可以变化。HSM 105可以实现密钥分层(hierarchy),其中存储在HSM 105上的一个或多个根密钥被用于加密和/或解密存储在HSM105的其它地方的设备上的密钥。HSM 105可以被选择作为网络125上的安全系统的一部分,用于存储一个或多个根加密密钥作为附加的安全措施,至少因为HSM105可以实施一个或多个物理安全措施,一个或多个物理安全措施不是在参与密码安全通信的网络125的其它设备上实现的。
作为通信吞吐量(throughput)的示例,网络125的计算设备可以向HS105发送1,000RPS(每秒请求)的数量。根据流量模式和其它条件,HSM 105可以接收比平均流量流高几个数量级的流量突发。例如,网络125可以向HSM 105发送1,000RPS,偶尔会有高达150,000RPS的突发。
作为一个示例,与HSM 105通信的网络125的设备110,115可以包括被配置为安全地传送敏感数据的自动柜员机或信用卡亭。作为另一个示例,网络125的设备可以包括与HSM 105通信的设备,用于例如在认证机构处验证经认证实体的凭证。
每个单独的请求可以包括数据元素,数据元素是要由HSM 105处理的数据。作为处理请求的一部分发送给HSM 105的每个单独数据元素的大小可以有很大的变化。例如,HSM105可以接收对明文进行加密的请求,明文小到32字节或更小,或者大到128千字节或更大。
可以由HSM 105执行的加密操作可以包括加密,解密,密钥生成,随机或伪随机数生成,签名,签名验证,消息认证等。在本说明书中,加密(Enc(·))和解密(Dec(·))通常是指用于将明文消息m加密为密文c并将密文c解密为明文m的各种不同技术中的任一种。作为示例,明文m可以是字符串,例如作为原始字节的字符串、或符号或字母数字字符的字符串。明文m也可以是具有表示明文的元素的数据结构,例如字符串数组。加密和解密可以指私钥或公钥密码术(cryptography)。
加密框架或函数可以指以定义的序列执行的一个或多个加密操作,例如一个或多个加密操作和一个或多个解密操作。框架的不同操作可以在不同的时间点发生,并且以不同的顺序发生。HSM 105可以被配置为执行对应于加密框架的操作。
在许多框架中,通常假定用户私钥的知识仅与用户共存。加密框架可以包括用于偶尔生成新密钥的操作,以减轻恶意的一方窃取另一方的密钥的机会。HSM 105可以被配置为生成和周期性地刷新加密密钥,作为确保由HSM 105实施的加密框架的安全性的一部分。
示例性加密框架还可以包括流密码(cipher)或分组密码(block cipher)。其它框架包括同态加密和解密、阈值密码或秘密共享、RSA、或椭圆曲线密码学。可以实施的分组密码的示例包括高级加密标准(AES)、以及AES或其它分组密码可以在其中操作的各种模式,例如伽罗瓦/计数器模式(GCM)、电子密码本(ECB)、或密码分组链接(CBC)。
一些加密框架可能需要初始化向量(initialization vector,IV)或其它一些随机或伪随机输入的来源作为密钥生成或加密的一部分。加密框架可以包括生成纯随机或伪随机值的操作,作为实现该框架的一部分。HSM 105可以被配置用于随机或伪随机数的生成。作为示例,HSM 105可以实现专用于伪随机或随机数生成的组件,并且在HSM 105执行加密操作的同时根据需要调用该组件。
HSM 105可以实现的另一类加密操作包括用于消息认证的加密框架,例如消息认证码(Message Authentication Code,MAC)系统。MAC系统可以包括用于签名(sign(*))、验证(verify(·))和生成密钥(KeyGen(·))的函数。sign(*)可以是一类加密操作,用于一方(Alice)签署消息,这样以使另一方(Bob)可以验证消息源自Alice。作为一个示例,Signkey(mA)可以表示来自Alice的消息mA,其已经被使用仅对Alice已知的私钥签名。Signkey(mA)可以等效于使用私钥key的mA加密。
在该示例中,Alice可以向HSM 105发送对消息mA进行签名的请求。如本文所述,从Alice发送的请求可以从用户计算设备110发送,作为根据批量HSM API 100定义的多个请求的一部分。Bob可以接收来自Alice的签名的消息加上明文消息(Signkey(mA),mA)的副本。Bob可以通过将Alice的签名消息、明文消息和Alice的公钥传递到HSM 105来向HSM 105发送运行请求:verify(signkey(mA),mA)。在该MAC系统中,HSM 105是附加的保护层,其可以存储在通信部分之间使用的密钥。Signkey(mA)可以表示作为执行MAC系统的一部分而生成的MAC值。
MAC值也可被称为加密标签,或仅称为标签。消息可以在网络之间传输,并且接收设备可以发送请求以对照所接收的消息来验证与消息一起接收的特定MAC值,从而确定消息是否由发送方撰写(authored)。
HSM 105可以执行的另一类加密操作包括密码散列函数。密码散列函数是具有一个或多个密码期望质量的散列函数,例如确定性行为、快速和有效的计算、以及具有两个输入字符串将散列到相同输出散列值的低或零的可能性。HSM 105还可以被配置为作为一个或多个加密协议的一部分执行加密操作,例如作为传输层安全(Transport LayerSecurity,TLS)的一部分的操作。
如本文所述,用户计算设备110、服务器计算设备115、和HSM 105可以执行与批量HSM API 100相对应的一个或多个指令。通常,API可以定义用于与设备或程序通信的函数和数据结构。API可以被实施用于与硬件通信,硬件例如为HSM 105、软件、或两者的组合。API可以被实施为硬件或软件组件,其可以被硬编码,例如通过使用一个或多个电路,或者使用各种不同的编程语言中的任何一种来编程。例如,API可以定义一个或多个函数,这些函数在被执行时使得例如HSM 105的硬件组件执行一个或多个操作。可以通过发送到设备的请求来调用API的函数,以执行由所调用的函数定义的一个或多个操作。
批量HSM API 100可以定义一个或多个API,这些API进一步定义与执行不同密码任务有关的框架或函数。作为示例,批量HSM API 100可以包括批量加密API,批量加密API定义了由HSM 105对明文进行批量加密的操作。批量HSM API 100还可以包括批量解密API,批量解密API定义了由HSM 105对密文进行批量解密的操作。此外,批量HSM API 100可以定义由HSM 105执行其它加密函数的其它API,例如签名和验证消息、生成MAC值或加密标签、或执行随机或伪随机数生成。在一些实施方式中,批量HSM API 100可以将加密操作定义为单个API,而不是多个单独的API。
批量HSM API 100可以定义用于批量处理(batching)数据和解批量处理(unbatching)数据的一个或多个数据结构和操作。所讨论的数据可以是明文,例如由用户计算设备110接收的明文。数据也可以是密文,例如从密文和存储在HSM 105上的密钥生成的密文。
批量处理数据的一个示例性数据结构可以包括数组,例如向量、或数组。数组中的每个元素可以表示单独的明文/密文、或其它类型的待批量处理的数据。此外,批量数据结构还可以包括存储密钥标识符的字段。密钥标识符可以对应于用户的密钥,用户发送根据批量HSM API 100处理数据的请求。密钥可以是存储在HSM 105上的密钥,并且HSM 105可以被配置为识别存储的密钥,存储的密钥与批量数据结构中的密钥标识符相对应。
用于批量处理和处理数据的一个或多个示例可以接收密钥标识符和多个待批量处理的数据元素,作为输入。当调用函数来对某些数据执行一个或多个加密操作时,一个或多个加密操作和数据一起形成请求。可以从请求计算设备向HSM 105发送请求,请求设备例如为用户计算设备110和/或服务器计算设备115。如本文所述,HSM 105被配置为接收根据批量HSM API 100定义的请求。
在一些实施方式中,被配置成根据密钥标识符和多个待批量处理的数据元素来生成批量请求的计算设备,可以根据每批量的预定数量的元素来生成批量请求。在一些示例中,诸如服务器计算设备115的计算设备可以接收参数值,参数值更新用于生成批量请求的预定数量的元素。在该示例中,由服务器计算设备115生成的后续批量请求可以包括与更新的参数值相等的多个元素。在一些实施方式中,每个批量请求包括参数值,该参数值指定将多少个单独的元素作为请求的一部分进行批量处理。
批量HSM API 100的示例函数定义和数据结构如下。可以理解,批量HSM API100和相应的批量处理逻辑可以根据各种不同的技术和以一种或多种编程语言来实现。下面的表1-9说明了伪代码,并被解释为如何实施批量HSM API 100的示例。类似地,如本文所述,其它加密基元可具有一个或多个批量HSM API,例如一个或多个批量解密API、一个或多个批量签名API、和一个或多个批量验证API。
表1示出了根据批量HSM API 100的密文的示例性定义。
1 | struct Ciphertext{ |
2 | string ciphertext; |
3 | string iv; |
4 | string tag; |
5 | } |
表1
1-5行定义了被称为密文(CipherText)的数据结构。密文可以包括表示密文的密文字段、表示由HSM 105用于加密密文的初始化向量的iv字段、以及表示用于验证由密文加密的消息的作者的标签或签名消息的标签字段。
表2示出了根据批量HSM API 100的加密输出的示例性定义。
表2
HSM 105可以响应于加密明文来生成加密结果(EncryptResult)数据结构。表2的第2行中的error_code可以是对应于在加密期间可能发生的不同错误的数值。在一些实施方式中,表2的第3行中的密文仅在error_code指示没有发生错误的情况下被填充,这可以例如由error_code值0来表示。
表3示出了根据批量HSM API 100的解密密文的示例性定义。
1 | struct DecryptResult{ |
2 | int error_code; |
3 | string plaintext; |
4 | } |
表3
HSM 105可以生成解密结果(DecryptResult)数据结构以解密密文。类似于表2的第2行中的error_code,表3的第2行中的error_code可以是对应于在解密期间可能发生的不同错误的数值。在一些实施方式中,表3的第3行中的明文仅在error_code指示未发生错误的情况下被填充,这可例如由error_code值0来表示。
表4示出了根据批量HSM API 100的用于生成批量数据结构的批量HSM API函数的示例定义,批量数据结构存储批量加密数据。
1 | vector<EncryptResult>BatchEncrypt( |
2 | int key_identifer, |
3 | vector<string>plaintexts |
4 | ); |
表4
批量加密(BatchEncrypt)在表4中被定义为返回EncryptResult类型的向量的函数。在这里描述的各个表中的示例中使用的向量可以指通常以不同编程语言定义的向量,然而批量HSM API也可以定义数组的数据结构,或用于存储多个元素的其它类型的数据结构。字段key_identifier存储密钥标识符,该密钥标识符标识存储在HSM 105上的用于加密明文的加密密钥。HSM 105可以接收包括多个明文和key_identifier的批量处理数据结构,该数据结构被HSM 105作为输入处理以执行BatchEncrypt。
表5示出了根据批量HSM API 100的用于生成批量数据结构的批量HSM API函数的示例定义,批量数据结构存储批量解密数据。
1 | vector<DecryptResult>BatchDecrypt( |
2 | int key_identifer, |
3 | vector<Ciphertext>ciphertexts |
4 | ); |
表5
批量解密(BatchDecrypt)在表5中被定义为返回DecryptResult类型的向量的函数。key_identifier字段存储密钥标识符,该密钥标识符标识存储在HSM 105上的用于解密密文的加密密钥。在表4和表5之间,key_identifier可以是相同的,例如在对称密钥加密框架中。
包括批量数据结构的请求在本说明书中被称为批量请求。HSM 105可以被配置为接收包括调用一个或多个批量HSM API函数的批量请求,如BatchEncrypt或BatchDecrypt。批量请求的被调用的函数等同于请求HSM 105执行定义批量HSM API100中的被调用的函数的一个或多个加密操作。
批量HSM API 100可以将批量HSM API函数定义为预定的加密操作集合。例如,通过调用BatchEncrypt向HSM 105发送请求可以使HSM 105对作为请求的一部分包括的批量处理数据结构执行RSA加密。批量HSM API 100可以定义批量处理这里描述的BatchEncrypt和其它批量处理函数的不同变体。作为示例,批量HSM API 100可以定义BatchRSAEncrypt和BatchECIESEncrypt,分别用于执行RSA和椭圆曲线集成加密框架。
耦合到HSM 105的服务器计算设备115可以实施这里描述的用于生成批量请求的批量处理逻辑。特别地,服务器计算设备115可以被配置为生成包括数据元素的批量数据结构和密钥标识符的请求,以及批量HSM API 100中所定义的批量函数的调用,使得HSM 105执行与所调用的函数相对应的一个或多个加密操作。
批量HSM API 100可以进一步定义批量数据结构和其它密码任务的函数,例如密钥生成或签名和验证。表6-9示出批量HSM API 100中的示例定义,用于在HSM 105上批量签名和批量验证。表6-9中所示的函数和数据结构可以被定义为一个或多个批量HSM API的一部分,例如批量处理符号API或批量验证API。
表6示出了根据批量HSM API 100的签名结果的示例性定义。
1 | struct SignResult{ |
2 | int error_code; |
3 | string signature; |
4 | } |
表6
表6中定义的签名结果(SignResult)数据结构可以包括表示已签名消息或标签的签名字段,以及指示错误(如果有的话)的error_code字段。HSM 105可以响应于执行一个或多个用于签署某种输入的加密操作的请求而生成SignResult数据结构。
表7示出了根据批量HSM API 100的验证签名的示例性定义。
1 | struct VerifyInput{ |
2 | string signature; |
3 | string message; |
4 | } |
表7
验证输入(VerifyInput)数据结构可以包括存储已签名消息的签名字段,以及存储已签名消息的消息字段。如这里所描述的,HSM 105可以执行用于执行验证的一个或多个加密操作,例如,通过在将发送设备的用户的公钥应用到已签名的消息之后,确定已签名的消息与消息相匹配。
表8示出了批量HSM API函数的示例定义,用于对批量HSM API 100所定义的批量消息进行签名。
表8
批量签名(BatchSign)可以如表8所示定义为返回SignResult类型的向量的批量处理函数。key_identifier字段存储密钥标识符,该密钥标识符标识存储在HSM 105上的密钥,该密钥用于对表8的第3行中的消息数据结构中存储的消息进行签名。HSM105可以接收包括待签署的消息的批量数据结构的批量请求,以及调用BatchSign函数以使HSM 105签署批量数据结构中的每个消息。
表9示出了批量数据结构的示例定义,该批量数据结构存储由批量HSM API100定义的已签署消息的批量数据结构。
1 | vector<Boolean>BatchVerify( |
2 | int key_identifer, |
3 | vector<VerifyInput>inputs |
4 | ); |
表9
批量验证(BatchVerify)可以定义为表9中的批量函数,其返回例如真/假或1/0的布尔值的向量,这取决于用于实现批量HSM API 100的编程语言。key_identifier字段存储识别加密密钥的密钥标识符,用于验证向量输入中的VerifyInput类型的数据元素。回想表7,VerifyInput类型的每个数据元素包括表示已签名消息的签名字段、和表示已签名消息的消息字段。HSM 105可以接收批量请求,包括对批量处理函数BatchVerify的调用和输入的批量处理数据结构,每个输入都包括已签名消息和用于比较的消息。
输出布尔向量可以是输出批量结构,批量结构中的每个单独输出对应于请求的批量数据结构中的签名消息是否有效的确定。HSM 105可以被配置为生成输出批量结构的数据元素的顺序,以匹配相应的输入数据元素的顺序。
HSM 105可以被配置为使用特定算法来执行验证,例如使用存储在HSM 105上并由key_identifier字段标识的RSA和加密密钥。在一些实施方式中,批量HSM API100可以定义BatchSign和BatchVerify的不同变体,例如BatchRSASign和BatchRSAVerify。
设备110,115可以实施用于接收和批量处理请求的批量处理逻辑,以对诸如单个明文或密文的单个数据元素执行加密操作。接收各个请求的设备可以将请求批量在一起,并利用存储各个请求的数据元素的相应批量数据结构生成批量请求。如这里参考图1和9所描述的那样,耦合到HSM 105的计算设备可以被配置为缓冲对HSM105的各个请求,并且根据一个或多个条件来缓冲那些请求,以生成相应的批量请求。
HSM 105可以包括多个处理器252和一个或多个密码处理器254,被配置用于处理由批量HSM API 100定义的批量数据结构。作为示例,HSM 105可以被配置为在处理器252处接收批量数据结构,处理器252可以包括通用处理器,例如中央处理单元(CPU)。通用处理器可以被配置为执行预处理操作,例如对批量数据结构的每一数据元素的输入验证。由通用处理器执行的批量操作可以指通用处理器接收批量处理数据结构而不是单独的数据元素,作为输入,并且对整个批量执行一个或多个操作,例如输入验证,而不是对单独的数据元素逐个执行的操作。
输入验证可以指验证数据元素是否被适当地格式化以供HSM 105处理。作为示例,HSM 105可以对照由批量HSM API 100定义的数据结构列表来验证数据元素,以确定数据元素是否根据这些数据结构之一来定义。如果不是,则HSM 105可以向耦合到HSM 105的请求计算设备和/或服务器计算设备115发送错误代码。
在一些实施方式中,除对批量数据结构整体上执行输入验证之外,或作为对批量数据结构整体上执行输入验证的替代,通用处理器单独地对批量数据结构的每个数据元素执行输入验证。
可以由通用处理器执行的预处理操作的另一个示例是确定批量数据结构的输入元素的大小是否适合于由密钥标识符标识的密钥的密钥类型,和/或是否适合于请求在输入元素上执行的加密操作的类型。如果输入元件的大小或其它特征不合适,则通用处理器可以被配置为拒绝批量请求,并且可选地将拒绝的指示发送到请求计算设备。
可以由通用处理器执行的预处理操作的另一个示例是确定批量处理数据结构的输入元素的大小是否适合于密码处理器。密码处理器可以对接收到的用于处理的数据的大小或格式有规范,因此通用处理器可以拒绝具有不满足大小或格式的单独元素的批量请求。
处理器252的通用处理器可以向密码处理器254的一个或多个密码处理器发送经验证的批量请求。HSM 105可以实施执行加密操作的单个密码处理器,或多个密码处理器,每个密码处理器具有一个或多个处理核。在一些实施方式中,HSM 105实施用于不同操作的不同密码处理器,例如因为一些密码处理器被配置用于硬件加速。密码处理器254可以被配置为接收批量数据结构作为输入,并且处理批量数据结构的每个数据元素以生成相应的结果。批量HSM API 100可以根据在HSM 105上实施的缓存空间来定义批量数据结构的最大或最小尺寸。
例如,密码处理器可以被配置为一次性加密x千字节的明文数据。因此,在一些实施方式中,批量HSM API 100可以为x千字节定义批量处理数据结构的最大批量处理尺寸。批量HSM API 100可以定义不同的批量数据结构尺寸,从而可以在密码处理器上同时处理多个结构,例如每一个都具有千字节的两个数据结构,或者每一个都具有千字节的四个数据结构。在一些实施方式中,被配置成接收各个请求并将各个请求批量处理成批量请求的计算设备可以根据一个或多个条件来这样做。当满足条件时,如本文参考图4-8更详细地描述的,然后计算设备可以被配置为发送具有某种尺寸的批量数据结构的批量请求,某种尺寸可以是与批量HSM API 100指定的最大尺寸相同的大小或小于最大尺寸。
在一些实施方式中,可以修改HSM以实施根据本文描述的本公开的各方面的批量操作。例如,HSM可以已经被配置为对输入执行加密操作,例如加密或解密,但输入不一定是批量输入。在一些实施方式中,耦合到HSM的计算设备可以被配置为以格式来发送批量数据结构,从HSM的角度看,该格式似乎是用于处理的单个数据元素。例如,批量HSM API 100可以定义代表多个单独数据元素的级联(concatenation)的批量处理数据结构。在该示例中实施批量HSM API 100的计算设备可以生成批量数据结构,作为多个数据元素的级联,并将该批量数据结构发送到HSM。HSM可以处理和输出相应结果,该相应结果表示在批量数据结构中级联的每个输入数据元素的各个结果的级联。
耦合到HSM的计算设备可以被配置为解析来自级联输出的各个结果,例如因为每个输出已知为固定大小或者被编码以预定的格式结束。然后,计算设备可以根据需要在解析的输出上执行进一步的处理,和/或将解析的输出发送到先前请求单个数据元素由HSM处理的请求计算设备。
如图1所示,服务器计算设备115可以耦合到一个或多个存储设备230。存储设备230可以是易失性和非易失性存储器的组合,并且可以位于与服务器计算设备115相同或不同的物理位置。例如,存储设备230可以包括能够存储信息的任何类型的非暂态计算机可读介质,诸如硬盘驱动、固态驱动、磁带驱动、光存储、存储卡、ROM、RAM、DVD、CD-ROM、可写和只读存储器。存储设备230可以存储例如数据文件,文档,代码,模式,应用,或通常存储在数据库中的各种其它信息或工具中的任一种。
服务器计算设备115可以包括一个或多个处理器212和存储器214。存储器214可以存储处理器212可访问的信息,包括可以由处理器212执行的指令216。存储器214还可包括可由处理器212检索,操纵或存储的数据218。存储器214可以是能够存储处理器212可访问的信息的一种类型的非暂态计算机可读介质,例如易失性和非易失性存储器。处理器212可以包括一个或多个中央处理单元(CPU)、图形处理单元(GPU)、现场可编程门阵列(FPGA)、和例如向量处理单元(TPU)的专用集成电路(ASIC)。
指令216可以是一个或多个指令,其在由处理器212执行时使处理器212执行由指令定义的动作。指令216可以以目标代码格式存储,以便由处理器212直接处理,或者以其它格式存储,包括可解释的脚本或按需解释的或预先编译的独立源代码模块的集合。在这点上,术语“指令”、“步骤”和“程序”在此可以互换使用。
指令216包括用于实施批量HSM API 100的指令。用于实施批量HSM API 100的指令可以包括指令,当由处理器212执行时该指令可以使处理器212能够执行诸如接收来自请求计算设备的各个请求以对HSM 105执行加密操作的操作,请求计算设备例如为用户计算设备110。如这里参考图4-8所描述的那样,服务器计算设备115可以被配置为从请求计算设备发送的各个请求生成批量请求、向HSM 105发送批量请求、并响应于所发送的批量请求从HSM 105接收输出批量数据结构。
数据218可由处理器212根据指令216检索、存储、或修改。数据218可以存储在计算机寄存器中,在关系或非关系数据库中作为具有多个不同字段和记录的表,或者作为JSON、YAML、Proto、或XML文档。数据218也可以被格式化为计算机可读格式,例如但不限于二进制值、ASCII、或Unicode。此外,数据218可以包括足以识别相关信息的信息,诸如数字,描述性文本,专有代码,指针,对存储在其它存储器(包括其它网络位置)中的数据的引用,或者由函数用来计算相关数据的信息。
用户计算设备110也可以被配置为类似于服务器计算设备115,具有一个或多个处理器213、存储器221、指令217、和数据219。用户计算设备110还可以包括用户输入224和用户输出225。用户输入224可以包括用于接收来自用户的输入的任何合适的机制或技术,诸如键盘,鼠标,机械执行器,软执行器,触摸屏,麦克风和传感器。
服务器计算设备115可以被配置为向用户计算设备110传送数据,并且用户计算设备110可以被配置为在显示器222上显示所接收的数据的至少一部分,该显示器222可以被实施为用户输出225的一部分。用户输出225还可以用于显示用户计算设备110和服务器计算设备115之间的接口。用户输出225可替换地或附加地包括一个或多个扬声器、换能器或其它音频输出、触觉接口或其它触觉反馈,其向用户计算设备110的平台用户提供非视觉和非听觉信息。
用户计算设备110还可以被配置为生成由批量HSM API 100定义的在HSM 105上处理数据的请求。用户计算设备110可以被配置为生成请求,以由HSM 105对输入数据执行加密操作,并将该请求发送到服务器计算设备115。在一些实施方式中,如这里参考图4-8所描述的,用户计算设备110可以被配置为生成批量请求,向服务器计算设备115发送批量请求,并且接收对应于所发送的批量请求的输出批量数据结构。
HSM 105还可以配置有一个或多个处理器252,一个或多个密码处理器254,存储器256,指令258和数据260。如这里参考图1所描述的,一个或多个处理器252可以包括通用处理器,其被配置为执行预处理操作,例如批量处理,解批量处理和输入验证。
尽管图1示出处理器212,213和存储器214,221在计算装置110,115内,但本说明书中所描述的包括处理器212,213和存储器214,221的组件可包括可在不同物理位置且不在同一计算装置内操作的多个处理器和存储器。例如,指令216,217和数据218,219中的一些可存储在可拆卸CD-ROM上,而其它可存储在只读计算机芯片内。指令和数据中的一些或全部可存储在物理上远离处理器212,213但仍可由处理器212,213存取的位置中。类似地,处理器212,213可包括可执行并发和/或顺序操作的处理器的集合。计算设备110,115中的每一个都可以包括提供定时信息的一个或多个内部时钟,定时信息可以用于由计算设备110,115运行的操作和程序的时间测量。
此外,尽管参考单个用户计算设备110,服务器计算设备115和HSM105进行了描述,但是应当理解,本公开的各方面可以由多个设备和HSM来例如顺序地或并发地实施。网络125可以是用于设备的分布式系统的网络,其中多个设备和HSM根据本公开的方面处理数据和通信。
服务器计算设备115、HSM 105、用户计算设备110、以及可选地耦合到网络125的一个或多个其它设备一起可以至少部分地实现多种架构和技术中的任何一种,包括但不限于直接附接存储(DAS)、网络附接存储(NAS)、存储区域网络(SAN)、光纤信道(FC)、以太网光纤信道(FCoE)、混合体系结构网络等。此外,在一些示例中,由网络125耦合的设备可以至少部分地实现虚拟化或容器化环境。例如,服务器计算设备115和/或用户计算设备110可以包括在宿主机器上运行的一个或多个虚拟机。
图2是流程图,示出了使用硬件安全模块执行批量加密的示例性过程200。过程200被描述为由根据本公开的方面配置的HSM执行。例如,适当配置的HSM 105可以执行过程200。过程200的步骤可以以不同的顺序执行,也可增加附加的步骤或删除过程200中所示的一些步骤。
HSM接收205执行一个或多个加密操作的请求。如这里参考图1所描述的,请求可以包括存储多个数据元素的第一批量数据结构。每个数据元素可以是要由HSM使用一个或多个加密操作来处理的一些数据。例如,数据元素可以是明文,并且一个或多个操作可以是加密明文的操作。请求还可以包括密钥标识符,标识存储在耦合到HSM的存储器上的密钥,供HSM在执行一个或多个加密操作时使用。
HSM根据所接收的请求和一个或多个加密操作来处理210第一批量数据结构。HSM可以读取由批量请求指定的一个或多个加密操作,并执行指定的操作。这里,图3描述了用于处理批量处理数据结构的示例性过程。响应于接收到的请求,HSM传送215输出批量处理数据结构。
图3是示出示例性过程300的流程图,用于根据接收到的请求和一个或多个加密操作来处理批量数据结构。HSM可以从第一批量数据结构中解批315多个数据元素。如这里参考图1-8所描述的那样,HSM可以被配置成从接收的批量数据结构中解批数据元素。
在一些实施方式中,HSM可以将接收到的批量细分为较小的子批量,例如,将批量数据结构划分为多个密码处理器、或一个或多个密码处理器的相应处理核进行处理。
HSM可以包括通用处理器,通用处理器被配置为接收批量数据结构,并执行诸如数据验证这样的预处理操作,以确保数据元素的格式是HSM被配置来处理的。在对数据元素进行解包之后,通用处理器可将数据元素传递到第二处理器以执行320一个或多个加密操作。第二处理器可以是专门配置用于执行一个或多个加密操作的密码处理器。在一些实施方式中,HSM实施单个处理器,其被配置为预处理批量处理数据结构,例如验证和解包数据元素,然后对预处理后的数据元素执行320一个或多个加密操作。
第二处理器可以从批量处理数据结构中解批量数据元素,并如批量处理请求所指定的那样对数据元素执行一个或多个加密操作。例如,第二处理器可以从接收到的批量处理数据结构中解批量明文,并且根据加密函数和加密密钥对每个明文加密,加密函数是由批量处理请求指定的,加密密钥对应于作为批量请求的一部分接收到的密钥标识符。同样作为处理210的一部分,HSM可产生325输出批量数据结构,输出批量数据结构存储通过对多个数据元素执行320一个或多个加密操作而产生的多个输出。处理各个数据元素的第二处理器可以将输出批量数据结构发送回第一处理器,第一处理器可以被配置为将数据传送到HSM外部的设备。
返回参考图2,响应于请求,HSM传送215输出批量处理数据结构。HSM可以向耦合到HSM的服务器计算设备传送输出批量处理结构,服务器计算设备又可以向请求用户计算设备发送输出批量处理结构。服务器计算设备可以将输出批量处理结构作为批量发送到用户计算设备,或者服务器计算设备可以将输出单独地发送到用户计算设备。
在一些实施方式中,耦合到HSM的服务器计算设备或一些其它计算设备发送请求。在那些实施方式中,HSM可以通过向耦合到HSM的请求设备发送215输出批量处理数据结构来应答请求。
图4-8示出了由HSM进行批量处理的示例方法,例如批量加密和解密以及其它功能。虽然可以以特定的顺序描述包括在每个方法中的操作,但是应当理解,可以以不同的顺序或同时执行操作。此外,可以添加或删除操作。
图4是说明在HSM上执行的示例批量处理加密过程400的流程图。HSM接收410标识存储在HSM上的加密密钥的密钥标识符。HSM接收420批量处理数据结构,批量处理数据结构包括使用由密钥标识符标识的密钥的、在HSM上加密的多个明文。作为批量请求的一部分,HSM可以接收密钥标识符和批量数据结构。批量请求可以根据批量加密API来形成,批量加密API可以形成一个或多个批量HSM API的一部分。HSM将明文的批量处理数据结构中的每个明文加密430为密文的输出批量处理结构的相应密文。作为示例,批量数据结构可以是向量或数组。HSM返回440批量输出数据结构,例如向发送密钥标识符和明文的批量数据结构的请求计算设备,或者耦合到HSM的服务器计算设备。
图5是说明在HSM上执行的示例批量解密过程500的流程图。如图5所示,HSM接收510标识存储在HSM上的加密密钥的密钥标识符。HSM接收520批量数据结构,该结构包括用于使用由密钥标识符标识的加密密钥在HSM上解密的多个密文。作为批量请求的一部分,HSM可以接收密钥标识符和批量数据结构。批量请求可以根据批量解密API形成,批量解密API可以形成一个或多个批量HSM API的一部分。HSM将密文批量处理数据结构的每个密文解密530为明文输出批量处理结构的相应明文。作为示例,批量数据结构可以是向量或数组。HSM返回540批量输出数据结构,例如向发送明文的密钥标识符和批量数据结构的请求计算设备,或者耦合到HSM的服务器计算设备。
图6是说明在HSM上执行的示例批量签名过程600的流程图。HSM接收610标识存储在HSM上的加密密钥的密钥标识符。HSM接收620批量数据结构,该批量数据结构包括用于由HSM使用由密钥标识符标识的加密密钥进行签名的多个数据元素。作为批量请求的一部分,HSM可以接收密钥标识符和批量数据结构。批量请求可以根据批量签名API来形成,批量签名API可以形成一个或多个批量HSM API的一部分。HSM签署630批量数据结构的每个数据元素,以生成签名的输出批量结构的相应签名。作为示例,批量数据结构和输出批量数据结构可以是向量或数组。HSM返回640批量输出数据结构,例如发送密钥标识符和数据元素的批量数据结构以签名的请求计算设备,或者耦合到HSM的服务器计算设备。
图7是说明在HSM上执行的示例批量验证过程700的流程图。HSM接收710标识存储在HSM上的加密密钥的密钥标识符。HSM接收720批量数据结构,该批量数据结构包括使用由密钥标识符标识的密钥、由HSM进行签名的多个数据元素。作为批量请求的一部分,HSM可以接收密钥标识符和批量数据结构。批量请求可以根据批量验证API来形成,批量验证API可以形成一个或多个批量HSM API的一部分。HSM验证730批量数据结构的每个数据元素,以生成验证的输出批量结构的相应验证,该验证可以被表示为例如布尔值的数组,每个值对应于批量结构的相应签名是否被成功验证。HSM返回740批量输出数据结构,例如返回到发送密钥标识符和待签名的数据元素的批量数据结构的请求计算设备,或者返回到耦合到HSM的服务器计算设备。
图8是说明在HSM上执行的示例MAC过程800的流程图。HSM接收810标识存储在HSM上的加密密钥的密钥标识符。HSM接收820批量数据结构,批量数据结构包括用于由HSM使用由密钥标识符标识的加密密钥生成加密标签的多个数据元素。作为批量请求的一部分,HSM可以接收密钥标识符和批量数据结构。数据元素可以是消息,并且所生成的标签可以用作验证框架的一部分,以验证所标记的消息的作者是与密钥标识符所标识的密钥相对应的作者。批量请求可以根据批量MAC API形成,批量MAC API可以形成一个或多个批量HSM API的一部分。HSM为批量数据结构的每个数据元素计算830标签,以为标签的输出批量结构生成相应的标签。根据批量请求中标识的MAC框架生成标签。在一些实施方式中,输出批量数据结构中的每个元素可以包括标签以及被标记的消息。作为示例,批量数据结构和输出批量数据结构可以是向量或多维数组。HSM返回840批量输出数据结构,例如返回到发送密钥标识符和数据元素的批量数据结构以生成MAC值的请求计算设备,或者耦合到HSM的服务器计算设备。
图9是用于HSM的代理批量处理请求的示例性过程900的流程图。过程900被描述为由耦合到HSM的服务器计算设备执行。例如,适当编程的服务器计算设备115可以执行过程900。虽然以特定顺序描述了过程900的操作,但是它们可以以不同的顺序执行,并且可以添加或省略操作。
代理批量请求对于管理到HSM的流量是有利的。例如,耦合到HSM的服务器计算设备可以管理进入的流量,以便批量地发送去往HSM的输出流量,而不是单独的请求。在这种情况下,服务器计算设备可以控制向HSM发送请求的速度,特别是在高容量或突发业务期间。
服务器计算设备接收910各个请求。各个请求可以是处理各个数据元素的请求,各个数据元素例如为各个明文或密文。如果需要存储在HSM上的相应加密密钥来执行所请求的操作,则单个请求可以包括密钥标识符。
服务器计算设备缓冲920类似的接收到的请求,该请求在耦合到服务器计算设备的存储器中的一个或多个缓冲器的第一缓冲器中。如果每个请求包括用于存储在HSM中的密钥的相同密钥标识符,则两个请求可以被认为是类似的。作为另一个示例,如果请求来自相同的请求计算设备,例如计算设备,并且指定对HSM执行相同的加密操作,则可以认为请求类似。
作为代理批量请求的一部分,服务器计算设备可以维护一个或多个缓冲器。每个缓冲器可以在耦合到服务器计算设备的存储器中实施,并且定义一个或多个数据结构,用于将来自多个请求的数据元素存储在每个缓冲器中。服务器计算设备可以为在例如,5毫秒的预定缓冲周期期间接收的每个唯一密钥标识符生成缓冲器。作为另一个示例,服务器计算设备可以根据从不同的请求计算设备接收的请求生成单独的缓冲器。当服务器计算设备接收请求时,该设备可以确定是否已经为类似的请求生成了缓冲器。如果服务器计算设备确定已经存在用于类似请求的缓冲器,则该设备可以将请求的数据元素存储在所标识的缓冲器中。否则,服务器计算设备可以为接收到的请求生成新的缓冲器,并且可以添加类似于接收到的请求的后续请求。
甚至在诸如5毫秒的小缓冲周期上缓冲内容可以提高到HSM 105的吞吐量。例如,假设服务器计算设备被配置为在5毫秒的缓冲周期内批量处理从用户计算设备和/或其它请求计算设备接收的请求,并且进一步假设服务器计算设备接收请求的平均速率是5,000RPS(请求/每秒)。在该示例中,服务器计算设备在经过缓冲周期之后为每个缓冲器的内容生成批量请求。
在缓冲周期结束时的平均内容大小可以是25个数据元素(5,000RPS*.005seconds=25requests)。如果每个数据元素是32字节,则每个缓冲器的平均内容大小可以是800字节。然后服务器计算设备可以为HSM生成并发送批量请求,以一次处理800字节的数据,与在相同的缓冲周期期间单独处理每个请求相比,这可以具有较少的计算开销,如这里参考图1所描述的。缓冲器周期的长度可以基于在缓冲器周期结束时每个缓冲器的内容的平均大小以及HSM可以一次处理的最大数据量来确定。
服务器计算设备确定930第一缓冲器是否满足从第一缓冲器的内容生成批量请求的一个或多个条件。如果不是,则服务器计算设备可以继续从单独的数据请求接收910数据和缓冲920数据,直到满足一个或多个条件。如果服务器计算设备确定930已经满足一个或多个条件,则服务器计算设备将存储在第一缓冲器中的数据元素批量处理940成单个批量请求。
一个或多个条件可以是多种不同条件中的任一种,当满足这些条件时,使得服务器计算设备从满足一个或多个条件的缓冲器的内容生成批量请求。作为示例,一个或多个条件可以包括指定在经过缓冲周期之后生成批量请求的条件。例如,如果缓冲器周期是5毫秒,则服务器计算设备可以被配置为对于每个非空缓冲器生成相应的批量请求,其批量数据结构具有包括非空缓冲器的内容。此外,除了指定在经过缓冲周期之后生成批量请求的条件之外,也可以应用其它条件,或作为条件的替代。
作为一个示例,当存储在缓冲器中的数据元素满足预定的最大年龄(age)时,一个或多个条件可以包括指定生成批量请求的条件。数据元素的年龄可以被定义为在将数据元素添加到缓冲器的时间,和服务器计算设备可以连续维护的当前时间之间的时间。如果数据元素的年龄满足预定的最大年龄,则服务器计算设备可以生成具有批量处理数据结构的批量处理请求,该批量处理数据结构包括在满足条件时缓冲器的内容。
作为在此描述的其它条件之外或作为替换的另一个示例,一个或多个条件可以包括这样的条件,当存储在缓冲器中的数据元素的数量满足数据元素的预定最大数量时,该条件指定生成批量请求。预定的最大数量可以是,例如,HSM可以一次处理的数据量的函数。在这里参考图1描述的示例中,HSM 105能够一次处理x千字节的数据。因此,数据元素的预定最大数量可以是共同表示数据的x千字节的数据元素的数量。如果缓冲器满足数据元素的最大数量,则服务器计算设备可以生成具有批量处理数据结构的批量处理请求,该批量处理数据结构包括在满足条件时缓冲器的内容。
作为在此描述的其它条件之外或作为替换的另一个示例,一个或多个条件可以包括这样的条件,当请求计算设备发送的并发请求的数量下降到低于预定阈值速率时,该条件指定生成批量请求。服务器计算装置115可被配置为测量请求计算装置,例如用户计算装置110,向服务器计算装置115发送单个请求的速率。该速率可以例如作为每秒的请求来测量。预定阈值速率可以作为所有请求的计算设备的平均RPS的函数来确定。如果用户计算设备110的当前速率低于平均值,则这可以是请求正在减慢的指示,并且服务器计算设备115应该批量处理并发送当前缓冲的请求,而不是等待更多的请求到达。如果来自用户计算设备110的请求的当前速率低于预定阈值速率,则服务器计算设备115可以生成具有批量数据结构的批量请求,该批量数据结构包括在满足条件时缓冲器的内容。
接收输出批量数据结构的设备可以将输出批量数据结构转发到请求计算设备,该请求计算设备生成被发送到HSM的各个请求。接收输出批量数据结构的设备可以是从其它请求计算设备接收请求并将请求转发到HSM的设备。如果耦合到HSM的设备接收到来自另一请求设备的各个请求,则耦合到HSM的设备可以向请求设备发送输出批量数据结构。在一些实施方式中,服务器计算设备在将输出发送到请求计算设备之前对来自输出批量数据结构的各个输出进行解批。
在本说明书中描述的主题可以被实现,以便实现以下优点或技术效果中的一个或多个。硬件安全模块(HSM)可以根据定义由HSM实现的加密操作和数据结构的API来处理多批操作。通过批量处理用于执行相同的加密操作的请求,或者通过批量处理共享信息的请求,例如用于存储在HSM上的相同加密密钥的标识符,HSM可以以减少的计算开销来执行。
对HSM消耗的批量处理数据可以显着地提高HSM的吞吐量,特别是当批量处理的数据元素是小明文和/或密文时。由HSM执行的每个操作可以具有固定的计算成本以执行操作。因此,根据本公开的各方面实施的HSM可以有效地处理每个操作的更多数据,这可以导致许多请求被作为批量处理,而不是单独接收和处理每个请求。通过应用根据本公开的各方面的技术,HSM可以从每秒处理数千个请求到每秒处理更高数量级的请求。
通过对这种性质的请求进行批量处理,HSM可以至少通过减少一次发送到HSM的数据量来减少归因于网络通信的固定计算开销。例如,可以至少减少开销,因为可以为多个请求发送单个密钥标识符,而不是为流向HSM的多个请求发送密钥标识符的单独副本。
HSM可以被配置为使用通用处理器和密码处理器两者对接收到的批量执行批量操作。在这种情况下,HSM可以保留在专门密码处理器处理的专用操作,专门密码处理器专门配置用于处理加密操作,同时保留由HSM的通用处理器执行的诸如输入确认的操作。通用处理器和密码处理器可以被配置用于批量操作,包括对批量数据进行解包以便由密码处理器进行处理。然而,从耦合到HSM的计算设备的角度来看,HSM可以批量地接收和传送输入和输出,这可以简化HSM和计算设备之间的整体交互。
HSM可以被配置为根据HSM的操作容量来处理批量请求。换句话说,除了处理更多的请求之外,还可以管理HSM以避免由于在网络业务的突发周期期间接收到太多请求而导致的HSM过载。耦合到HSM的计算设备可以根据一个或多个条件接收和代理批量请求,这可以减轻或防止实现HSM的网络的安全的关键组件过载。
本公开的各方面可以在数字电路、计算机可读存储介质、作为一个或多个计算机程序、或一个或多个前述的组合中实现。计算机可读存储介质可以是非暂态的,例如,作为可由云计算平台执行并且存储在有形存储设备上的一个或多个指令。
计算机程序可以用任何类型的编程语言来编写,并且根据任何编程范例,例如声明式、程序式、汇编式,面向对象,面向数据,功能式或命令式。可以编写计算机程序以执行一个或多个不同的功能并且在计算环境内操作,例如在物理设备,虚拟机上或跨多个设备。计算机程序还可以实现本说明书中描述的由系统,引擎,模块或模型执行的功能。
在本说明书中,短语“被配置为”被用于与计算机系统、硬件或计算机程序的一部分相关的不同上下文中。当系统被说成被配置为执行一个或多个操作时,这意味着系统具有安装在系统上的适当的软件、固件和/或硬件,当运行时,使得该系统执行一个或多个操作。当一些硬件被说成被配置成执行一个或多个操作时,这意味着该硬件包括一个或多个电路,该电路在运行时接收输入并根据输入和对应于该一个或多个操作产生输出。当计算机程序被说成被配置成执行一个或多个操作时,这意味着该计算机程序包括一个或多个程序指令,当该一个或多个程序指令被一个或多个计算机执行时,使得该一个或多个计算机执行一个或多个操作。
除非另有说明,否则上述替代示例不是相互排斥的,而是可以以各种组合来实现,以实现独特的优点。由于在不脱离由权利要求限定的主题的情况下,可以利用以上讨论的特征的这些和其它变化和组合,因此实施例的上述描述应当以说明的方式而不是以对由权利要求限定的主题的限制的方式来进行。此外,提供本文所述的示例,以及措辞为“诸如”、“包括”等的条款,不应被解释为将权利要求的主题限制为具体示例;相反,这些示例仅用于说明许多可能的实施例中的一个。此外,不同附图中的相同附图标记可以标识相同或相似的元件。
Claims (20)
1.一种硬件安全模块(HSM),其特征在于,包括多个处理器,所述多个处理器被配置为:
接收执行一个或多个加密操作的请求,所述请求包括存储多个数据元素的第一批量数据结构;以及
根据接收的请求和所述一个或多个加密操作来处理所述第一批量数据结构,其中,为了处理所述第一批量数据结构,所述多个处理器被配置为:
对所述多个数据元素进行解批量处理,
对所述多个数据元素执行所述一个或多个加密操作以生成多个输出,以及
生成存储所述多个输出的输出批量数据结构。
2.根据权利要求1所述的硬件安全模块,其特征在于,
所述请求是第一请求,所述一个或多个加密操作是一个或多个第一加密操作,以及所述多个数据元素是多个第一数据元素,并且
所述多个处理器还被配置为:
在耦合到所述HSM的存储器中保存一个或多个加密密钥,
接收第二请求,以对第二批量数据结构执行一个或多个第二加密操作,其中所述第二批量数据结构包括密钥标识符和多个第二数据元素,
确定所述密钥标识符是否对应于所述一个或多个加密密钥中的一个加密密钥,以及
响应于确定所述密钥标识符对应于一个识别的加密密钥,根据所述第二请求处理所述第二批量数据结构,并使用所述识别的加密密钥作为对所述一个或多个第二加密操作的输入。
3.根据权利要求1或2所述的硬件安全模块,其特征在于,所述多个处理器包括第一处理器和第二处理器,其中所述第一处理器被配置为:
接收所述批量处理数据结构作为输入,
对所述批量数据结构执行一个或多个预处理操作,
确定所述批量处理数据结构对于处理是否有效,以及
响应于确定所述批量数据结构对于处理有效,将验证的批量数据结构发送到所述第二处理器。
4.根据权利要求3所述的硬件安全模块,其特征在于,所述第一处理器是通用处理器,所述第二处理器是密码处理器,所述密码处理器被配置为对经预处理的所述批量数据结构执行所述一个或多个加密操作。
5.根据权利要求1至4中任一项所述的硬件安全模块,其特征在于,所述请求和所述批量数据结构是根据批量HSM应用程序接口(API)的相应定义来形成的。
6.根据权利要求5所述的硬件安全模块,其特征在于,所述HSM被配置成执行的所述一个或多个加密操作是根据所述批量HSM API定义的。
7.根据权利要求5或权利要求6所述的硬件安全模块,其特征在于,所述批量HSM API定义一个或多个API,每个API定义相应的加密框架,包括定义一个或多个相应的数据结构和用于执行所述相应的加密框架的一个或多个相应的加密操作。
8.根据权利要求7所述的硬件安全模块,其特征在于,所述相应的加密操作包括用于加密、解密、密钥生成、签名生成、签名验证、随机数生成、或消息认证的操作。
9.根据权利要求1至8中任一项所述的硬件安全模块,其特征在于,
所述请求是第一请求,
其中,所述HSM耦合到计算设备,以及
其中,所述多个处理器还被配置为接收和处理包括第二批量数据结构的第二请求,所述第二批量数据结构包括由所述计算装置批量处理的数据元素。
10.一种系统,其特征在于,包括:
计算设备,包括多个处理器并耦合到硬件安全模块,其中所述多个处理器被配置为:接收在每个请求的一个或多个相应数据元素中执行一个或多个加密操作的多个请求,
将每个请求的所述一个或多个相应的数据元素批量处理成第一批量数据结构,
将所述第一批量数据结构作为批量请求的一部分发送到所述硬件安全模块,以对所述第一批量数据结构的第一数据元素执行所述一个或多个加密操作,以及
响应于所述批量请求,接收输出批量数据结构,所述输出批量数据结构包括由所述硬件安全模块作为输出生成的输出数据元素,所述硬件安全模块对所述第一批量数据结构的所述数据元素执行所述一个或多个加密操作。
11.根据权利要求10所述的系统,其特征在于,
其中,所述多个请求中的每一个对应于第一密钥标识符,以及
其中,所述批量请求还包括所述第一密钥标识符。
12.根据权利要求11所述的系统,其特征在于,
其中所述计算设备是第一计算设备,并且其中所述多个处理器还被配置为:
从耦合到所述计算设备的一个或多个请求计算设备接收请求,其中从所述一个或多个请求计算设备接收的所述请求中的每个请求是执行一个或多个相应的加密操作的请求,并且所述每个请求包括相应的密钥标识符;
在耦合到所述计算设备的存储器中的一个或多个缓冲器的第一缓冲器中存储类似的接收的请求的数据元素,其中如果两个请求中的每一个包括相同的密钥标识符或者从相同的源设备获得,则所述两个请求是类似的;
确定所述第一缓冲器是否满足一个或多个条件,以向所述硬件安全模块发送所述第一缓冲器中存储的所述类似的接收的请求的数据元素;以及
响应于确定所述第一缓冲器满足所述一个或多个条件,批量处理所述第一缓冲器中的每个数据元素,并将包括第一缓冲器中的每个数据元素的批量处理数据结构作为第二请求的一部分发送到所述硬件安全模块。
13.根据权利要求12所述的系统,其特征在于,所述多个处理器还被配置成:
对于作为从所述一个或多个请求计算设备接收的所述请求的一部分而接收的每个唯一密钥标识符,将所述唯一密钥标识符分配给相应的缓冲器,以及
将对应于包括第一密钥标识符的接收的请求的数据元素存储在分配有所述第一密钥标识符的缓冲器中。
14.根据权利要求12或13所述的系统,其特征在于,在所述第一缓冲器中发送数据元素的所述一个或多个条件包括存储在所述第一缓冲器中的数据元素满足预定的最大年龄,其中从所述数据元素存储在所述第一缓冲器中的时间到所述当前时间来测量所述数据元素的年龄。
15.根据权利要求12至14中的任一项所述的系统,其特征在于,在所述第一缓冲器中发送数据元素的所述一个或多个条件包括存储在所述第一缓冲器中的数据元素满足预定的最大数量。
16.根据权利要求10至15中任一项所述的系统,其特征在于,来自所述一个或多个请求计算设备的请求和所述第一批量数据结构是根据批量HSM应用程序接口(API)形成的。
17.根据权利要求16所述的系统,其特征在于,所述一个或多个加密操作是根据所述批量HSM API定义的。
18.根据权利要求16或17所述的系统,其特征在于,所述批量HSM API定义一个或多个API,每个API定义相应的加密框架,包括定义一个或多个相应的数据结构和用于执行所述相应的加密框架的一个或多个相应的加密操作。
19.一种计算机实现的方法,其特征在于,包括:
硬件安全模块接收执行一个或多个加密操作的请求,所述请求包括存储多个数据元素的第一批量数据结构;以及
所述硬件安全模块根据接收的请求和一个或多个加密操作来处理第一批量数据结构,其中,处理第一批量数据结构包括:
对所述多个数据元素进行解批量处理,
对所述多个数据元素执行所述一个或多个加密操作以生成多个输出,以及
生成存储所述多个输出的输出批量数据结构。
20.根据权利要求19所述的方法,其特征在于,所述一个或多个加密操作包括用于加密、解密、密钥生成、签名生成、签名验证、随机数生成、或消息认证的操作。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202062987595P | 2020-03-10 | 2020-03-10 | |
US62/987,595 | 2020-03-10 | ||
US17/119,342 | 2020-12-11 | ||
US17/119,342 US11630921B2 (en) | 2020-03-10 | 2020-12-11 | Batch cryptography for hardware security modules |
PCT/US2021/017001 WO2021183241A1 (en) | 2020-03-10 | 2021-02-08 | Batch cryptography for hardware security modules |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115516454A true CN115516454A (zh) | 2022-12-23 |
CN115516454B CN115516454B (zh) | 2023-10-13 |
Family
ID=77664717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180033240.XA Active CN115516454B (zh) | 2020-03-10 | 2021-02-08 | 硬件安全模块和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11630921B2 (zh) |
EP (1) | EP4118550A1 (zh) |
CN (1) | CN115516454B (zh) |
WO (1) | WO2021183241A1 (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070180228A1 (en) * | 2005-02-18 | 2007-08-02 | Ulf Mattsson | Dynamic loading of hardware security modules |
CN105308898A (zh) * | 2013-02-26 | 2016-02-03 | 维萨国际服务协会 | 用于执行密码验证的系统、方法及设备 |
US20180012037A1 (en) * | 2016-07-05 | 2018-01-11 | Nxp B.V. | Secure operation apparatuses and methods therefor |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012149395A1 (en) | 2011-04-29 | 2012-11-01 | International Business Machines Corporation | Fully homomorphic encryption |
US10984115B2 (en) * | 2018-12-04 | 2021-04-20 | Bank Of America Corporation | System for triple format preserving encryption |
-
2020
- 2020-12-11 US US17/119,342 patent/US11630921B2/en active Active
-
2021
- 2021-02-08 EP EP21709555.3A patent/EP4118550A1/en not_active Withdrawn
- 2021-02-08 CN CN202180033240.XA patent/CN115516454B/zh active Active
- 2021-02-08 WO PCT/US2021/017001 patent/WO2021183241A1/en unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070180228A1 (en) * | 2005-02-18 | 2007-08-02 | Ulf Mattsson | Dynamic loading of hardware security modules |
CN105308898A (zh) * | 2013-02-26 | 2016-02-03 | 维萨国际服务协会 | 用于执行密码验证的系统、方法及设备 |
US20180012037A1 (en) * | 2016-07-05 | 2018-01-11 | Nxp B.V. | Secure operation apparatuses and methods therefor |
Also Published As
Publication number | Publication date |
---|---|
CN115516454B (zh) | 2023-10-13 |
EP4118550A1 (en) | 2023-01-18 |
US11630921B2 (en) | 2023-04-18 |
WO2021183241A1 (en) | 2021-09-16 |
US20210286901A1 (en) | 2021-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2071413C (en) | Method to establish and enforce a network cryptographic security policy in a public key cryptosystem | |
US10904231B2 (en) | Encryption using multi-level encryption key derivation | |
CN111131278B (zh) | 数据处理方法及装置、计算机存储介质、电子设备 | |
US10715332B2 (en) | Encryption for transactions in a memory fabric | |
CN109688098B (zh) | 数据的安全通信方法、装置、设备及计算机可读存储介质 | |
US11750403B2 (en) | Robust state synchronization for stateful hash-based signatures | |
US8612753B2 (en) | Method and apparatus for protected code execution on clients | |
US11722313B2 (en) | State synchronization for post-quantum signing facilities | |
Liu et al. | Ensuring the security and performance of IoT communication by improving encryption and decryption with the lightweight cipher uBlock | |
WO2023107776A1 (en) | Efficient hybridization of classical and post-quantum signatures | |
CN115333839A (zh) | 数据安全传输方法、系统、设备及存储介质 | |
US20210328779A1 (en) | Method and apparatus for fast symmetric authentication and session key establishment | |
US11671251B1 (en) | Application programming interface to generate data key pairs | |
CN111294359B (zh) | 压力测试方法、装置、计算机设备和存储介质 | |
CN114978769B (zh) | 单向导入装置、方法、介质、设备 | |
CN115516454B (zh) | 硬件安全模块和系统 | |
CN113672955B (zh) | 一种数据处理方法、系统及装置 | |
JPWO2020144758A1 (ja) | クライアント装置 | |
CN113810779B (zh) | 码流验签方法、装置、电子设备和计算机可读介质 | |
CN115909560A (zh) | 数据加密方法、解密方法及门锁系统 | |
US11914737B2 (en) | Authenticated and encrypted archives | |
CN115549984A (zh) | 跨链交易方法、装置、设备和存储介质 | |
JP5932709B2 (ja) | 送信側装置および受信側装置 | |
CN116599772B (zh) | 一种数据处理方法及相关设备 | |
US11626985B1 (en) | Data reencryption techniques |
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 |