CN116724309A - 设备和通信方法 - Google Patents

设备和通信方法 Download PDF

Info

Publication number
CN116724309A
CN116724309A CN202280010233.2A CN202280010233A CN116724309A CN 116724309 A CN116724309 A CN 116724309A CN 202280010233 A CN202280010233 A CN 202280010233A CN 116724309 A CN116724309 A CN 116724309A
Authority
CN
China
Prior art keywords
key
container
user
client
ssh
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.)
Pending
Application number
CN202280010233.2A
Other languages
English (en)
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.)
Ansafer Security Co ltd
Original Assignee
Ansafer Security Co ltd
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 Ansafer Security Co ltd filed Critical Ansafer Security Co ltd
Publication of CN116724309A publication Critical patent/CN116724309A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/72Protecting 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
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0877Generation of secret information including derivation or calculation of cryptographic keys or passwords using additional device, e.g. trusted platform module [TPM], smartcard, USB or hardware security module [HSM]
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements

Abstract

一种设备,包括:输入;存储器;以及处理器模块,被配置为:在所述存储器中存储定义与第一用户相关联的第一隔离环境的信息;响应于通过所述输入接收的请求,运行所述第一隔离环境;在所述第一隔离环境中认证所述第一用户,并且如果所述第一用户被认证,则在所述第一隔离环境中与所述第一用户建立第一安全连接;以及响应于通过所述第一安全连接接收的用户命令,在所述第一隔离环境中执行对应于所述用户命令的第一操作。

Description

设备和通信方法
技术领域
本发明涉及通信的设备和方法。例如,该设备可以是硬件安全模块设备。
背景技术
可以使用各种设备来执行密码操作。例如,硬件安全模块(HSM)是安全地存储和管理密码密钥并执行一组密码功能的设备。HSM可包括提供安全性的物理和非物理属性。非物理安全属性可以包括加密的使用,即在设备中包括软件或物理组件以执行所存储的数据的加密。物理安全属性可以包括例如由物理访问触发的防篡改开关,以及围绕设备的物理边界的防篡改膜。
各种服务提供者旨在向大量用户提供计算机实现的服务。这种情况的一个示例是云服务提供者(CSP),其提供诸如“软件即服务”(SaaS)或按需存储的产品。使用服务提供者托管的计算机实现的服务允许用户减少自己托管这样的服务的管理开销。由服务提供者托管的加密服务可以使用“单租户”解决方案,每个用户部署专用HSM设备。这可能导致HSM资源的低效使用,因为每个用户可能不需要由整个HSM设备提供的所有资源。然而,提供多租户解决方案(其中多个用户使用相同的HSM设备)可能引入安全漏洞,由此每个用户必须在一定程度上依赖于服务提供者以确保另一用户不能访问他们的数据。
附图说明
现在将参考附图描述根据非限制性实施例的设备和方法,其中:
图1是硬件安全模块设备的示例的示意图;
图2是包括硬件安全模块设备的示例系统的示意图;
图3是包括硬件安全模块设备的示例系统的示意图;
图4是根据实施例的硬件安全模块设备的示意图;
图5是根据实施例的硬件安全模块设备的示意图;
图6是根据实施例的运行多个容器的硬件安全模块的各种操作层的示意图;
图7示出了根据实施例的通信方法的流程图;
图8示出了根据实施例的在硬件安全模块设备上创建新容器的方法的流程图;
图9是包括根据实施例的硬件安全模块以及与硬件安全模块通信的客户端系统的系统的示意图;
图10是包括根据实施例的硬件安全模块和与硬件安全模块通信的客户端系统的系统的示意图;
图11是包括根据实施例的硬件安全模块和与硬件安全模块通信的客户端系统的系统的示意图;
图12是根据实施例的运行多个虚拟机的硬件安全模块的各种操作层的示意图;
图13是根据实施例的硬件安全模块的示意图。
具体实施方式
在第一方面,提供了一种设备,包括:
输入;
存储器;以及
处理器模块,被配置为:
在所述存储器中存储定义与第一用户相关联的第一隔离环境的信息;
响应于通过所述输入接收的请求,运行所述第一隔离环境;
在所述第一隔离环境中认证所述第一用户,并且如果所述第一用户被认证,则在所述第一隔离环境中与所述第一用户建立第一安全连接;以及
响应于通过所述第一安全连接接收的用户命令,在所述第一隔离环境中执行对应于所述用户命令的第一操作。
在实施例中,第一操作包括以下中的至少一个:密码密钥生成、密码密钥导出、执行加密操作;执行解密操作和执行数字签名操作。
在实施例中,与第一用户相关联的第一主密钥存储在存储器中定义第一隔离环境的信息中。
在实施例中,使用第一应用密钥执行第一操作,并且其中使用第一主密钥取回第一应用密钥。
在实施例中,第一公钥存储在存储器中定义第一隔离环境的信息中,第一公钥是包括第一公钥和与第一用户相关联的第一私钥的第一密钥对的一部分。
在一个实施例中,第二私钥存储在存储器中定义第一隔离环境的信息中,第二私钥是包括第二私钥和第二公钥的第二密钥对的一部分。
在实施例中,认证第一用户并建立第一安全连接包括:
从第一用户接收包括第一签名的通信;
在第一隔离环境中使用第一公钥验证所述第一签名;
在第一隔离环境中使用第二私钥生成第二签名;
向第一用户发送包括第二签名的通信。
在实施例中,认证第一用户并建立第一安全连接还包括:
在第一隔离环境中使用第一公钥加密第三密钥并将加密的第三密钥发送给第一用户,或者在第一隔离环境处从第一用户接收加密的第三密钥并使用第二私钥解密所加密的第三密钥;
其中第三密钥用于加密第一用户与第一隔离环境之间的通信,从而提供第一安全连接。
在实施例中,存储器中的定义第一隔离环境的信息包括识别程序指令的信息,程序指令在被执行时使处理器执行第一操作。
在实施例中,程序指令的第一版本和程序指令的第二版本存储在存储器中,并且其中识别程序指令的信息包括第一版本的指示。
在实施例中,处理器模块进一步被配置为:
在存储器中存储定义与第二用户相关联的第二隔离环境的信息;
响应于通过所述输入接收的请求,运行第二隔离环境;
在第二隔离环境中认证第二用户,并且如果第二用户被认证,则在第二隔离环境中建立与第二用户的第二安全连接;以及
响应于通过第二安全连接接收的用户命令,在第二隔离环境中执行对应于用户命令的第二操作。
在实施例中,存储在存储器中的定义与第一用户相关联的第一隔离环境的信息包括加密文件。
在实施例中,设备是硬件安全模块。
在实施例中,处理器模块进一步被配置为:响应于通过输入接收的请求,认证第一隔离环境外部的第一主机,并且如果第一主机被认证,则建立与第一主机的第二安全连接;以及在隔离环境外部运行第一进程。在另一实施例中,处理器模块进一步被配置为:响应于通过输入接收的请求,认证第二主机,并且如果第二主机被认证,则建立与第二主机的第三安全连接;以及在隔离环境外部运行第二进程。
在实施例中,第一进程是管理进程。在实施例中,用于认证第一安全连接的凭证不能认证第二安全连接,并且用于认证第二安全连接的凭证不能认证第一安全连接。
在实施例中,在第一隔离环境中认证第一用户包括认证与第一用户相关联的第一实体,并且处理器模块进一步被配置为:在第一隔离环境中认证与第一用户相关联的第二实体,并且如果第二实体被认证,则在第一隔离环境中建立与第二实体的第二安全连接;以及响应于通过所述第二安全连接接收的用户命令,在所述第一隔离环境中执行与所述用户命令相对应的第二操作。
在另一方面,提供了一种包括上述设备和第一用户设备的系统,其中所述第一用户设备操作被屏蔽的虚拟机,并且其中所述第一私钥存储在所述被屏蔽的虚拟机中。
在另一方面,提供了一种通信方法,包括:
响应于接收到请求,在设备上运行与第一用户相对应的第一隔离环境;
在第一隔离环境中认证第一用户,并且如果第一用户被认证,则在第一隔离环境中建立与第一用户的第一安全连接;
通过第一安全连接接收用户命令;以及
在第一隔离环境中执行对应于用户命令的第一操作。
在一个实施例中,第一非对称密钥对包括存储在第一隔离环境中的第一公钥和与第一用户相关联的第一私钥,并且其中认证第一用户并建立第一安全连接包括:
利用第一公钥验证第一用户的签名;
与第一用户交换一个或多个加密密钥。
在一个实施例中,该方法进一步包括:
响应于接收到请求,在设备上运行与第二用户相对应的第二隔离环境;
在第二隔离环境中认证第二用户,并且如果第二用户被认证,则在第二隔离环境中建立与第二用户的第二安全连接;
通过第二安全连接接收用户命令;以及
在第二隔离环境中执行对应于用户命令的第二操作。
在实施例中,第一隔离环境还与第二用户相关联,该方法进一步包括:
在第一隔离环境中认证所述第二用户,并且如果第二用户被认证,则在第一隔离环境中建立与第二用户的第二安全连接;
通过第二安全连接接收第二用户命令;以及
在第一隔离环境中执行对应于第二用户命令的第二操作。
在实施例中,创建隔离环境的方法包括:
接收创建与第一用户相关联的隔离环境的请求;
创建与第一用户相关联的所述第一隔离环境;
在所述第一隔离环境中建立与第一用户的安全连接;
接收允许通过安全连接执行与第一用户有关的一个或多个操作的信息。
在另一方面,提供了一种包括计算机可读代码的载体介质,计算机可读代码被配置为使计算机执行上述方法中的任一种。
在另一方面,提供了一种非暂时性计算机可读存储介质,其包括存储在其上的程序指令,所述程序指令可由计算机处理器执行以执行上述方法中的任一种。
所述方法是计算机实现的方法。由于根据实施例的一些方法可以由软件实现,因此一些实施例包含在任何合适的载体介质上提供给通用计算机的计算机代码。载体介质可以包括任何存储介质,诸如CD ROM、磁设备或可编程存储器设备,或任何瞬态介质,诸如任何信号,例如电信号、光信号或微波信号。载体介质可以包括非暂时性计算机可读存储介质。在本发明的另一方面,提供了一种包括计算机可读代码的载体介质,所述计算机可读代码被配置为使计算机执行所描述的任何方法。
图1是硬件安全模块11的示意图。该图示出了说明使用硬件安全模块11来为客户端执行一个或多个密码功能的高级示意图。术语客户端在整个说明书中通常用于指HSM设备的用户。
HSM 11包括处理器(未示出),该处理器被配置为执行存储在HSM 11上的存储器中的程序。在下面的说明书中,程序被称为“固件”,然而,通常,程序包括存储在HSM设备11上的非易失性存储器中的一组计算机指令,并且体现了下面将关于“固件”描述的功能。计算机指令或固件可以用多种编程语言中的任何一种编写,并且可以作为编译代码存储在HSM设备21上。
该图示出了与客户端相关联的“固件”进程13。“进程”是指执行中的程序,换言之,它是固件的运行实例。
处理器运行操作系统,例如Linux操作系统。然而,应当理解,处理器可以运行其他操作系统,诸如Windows。Linux操作系统包括管理HSM设备11的硬件和软件资源的系统软件,并且充当固件(和其他应用)与HSM硬件之间的中介。
固件包括体现一个或多个密码功能的集合的计算机指令。例如,固件包括体现以下密码功能中的一个或多个的计算机指令:密码密钥生成;加密密钥导出;加密;解密;以及数字签名功能(例如数字签名或数字签名的验证)。
HSM设备11位于主机系统(未示出)中,例如服务提供者系统。HSM 11经由主机接口17通信地耦合到主机系统中的计算机或服务器设备。例如,HSM设备11可以是直接插入主机系统设备的PCI-Express卡槽中的PCI-Express卡。备选地,HSM设备11可通过例如USB连接耦合。主机系统可包括耦合到计算机或服务器设备的大量HSM设备。
与主机系统分离的客户端系统远离主机系统。客户端系统包括计算设备或服务器设备。客户端系统以通信方式耦合到主机系统中的计算机或服务器设备,且因此通过主机系统中的计算机或服务器设备以通信方式耦合到HSM设备11。客户端系统和主机系统之间的通信通过通信网络执行。客户端系统和主机系统之间的通信可以经由例如互联网连接来执行。
在使用中,主机系统从客户端系统接收一个或多个请求。HSM设备11通过主机接口17接收客户端请求。请求对应于一个或多个密码功能的执行,例如:密码密钥生成;加密密钥导出;加密;解密和数字签名功能(例如数字签名或数字签名的验证)。使用通信协议生成请求。HSM设备11运行Linux进程,也称为/usr/bin/firmware或“固件进程”,其执行由客户端给予它的命令。
固件进程具有相关联的非易失性数据存储15,换言之,HSM设备11的非易失性存储器的一部分被分配给固件进程。非易失性数据存储装置15存储诸如与客户端相关联的一个或多个主密钥的数据项。
存储在非易失性数据存储器15中的主密钥可以包括安全员密钥(SecurityOfficer Key),其在下面的说明书中被称为“KNSO”密钥。该密钥定义了用于授权硬件安全模块11的所有管理操作的信任根,诸如改变硬件安全模块11的配置设置和文件管理操作。
存储在非易失性数据存储装置15上的主密钥可以附加地或备选地包括模块安全世界密钥(Module Security World Key),其在下面的说明书中被称为“KMSW”密钥或“模块密钥”。这是用作其他应用密钥的根的对称密钥。存在与客户端相关联并且与固件进程中体现的密码功能一起使用的多个密码应用密钥。应用密钥可安全地存储在HSM设备11外部。例如,可以使用高级加密标准(AES)来加密应用密钥。备选地,可以使用三重DES加密。每个应用密钥可以与也被加密的访问控制列表相关联。密钥和ACL一起加密,并且结果用KMSW模块密钥签名。这形成“密钥块”(key blob)。加密和保护的密钥块可以存储在HSM设备11外部,例如在智能卡或服务器存储装置(诸如主机系统内的硬盘)上。备选地,应用密钥可以存储在HSM设备11上,存储在非易失性数据存储设备15中。
一个或多个主密钥定义与客户端相关联的“安全世界”,其中HSM设备11被登记。术语“安全世界”(security world)是指共享至少一个私钥并且被配置为保护密码密钥并执行一组密码功能的一个或多个安全设备(例如HSM)或安全设备的一部分(例如如下所述的容器)。
与客户端设备相关联的应用密钥用于执行固件进程中体现的一个或多个密码功能。当接收到客户端请求时,使用KMSW模块密钥取回应用密钥,并将其加载到固件进程的RAM空间中。
在该图中,为了清楚起见,已经省略了诸如Linux内核、PCI-Express驱动程序和固件升级机制的细节。
图1示出了以单租户配置操作的硬件安全模块11,即HSM专用于单个客户端。因此,主机系统包括用于每个客户端的单独的HSM设备。这可能导致HSM资源的低效使用,因为每个客户端可能不需要由HSM设备提供的所有存储器和处理资源。
备选地,单个硬件安全模块设备7可以以图2所示的方式用于多个客户端。在这种情况下,HSM设备7存储对应于多个客户端(客户端A和客户端B)的一个或多个主密钥。因此,HSM设备7在多个安全世界中登记。如上所述,HSM 7耦合到主机系统中的计算机或服务器设备1。客户端A和客户端B通信地耦合到主机系统中的计算机或服务器设备1,并通过通信网络5与设备1通信。当在主机系统中的设备1处接收到客户端请求时,在设备1上运行的软件用于确定存储在HSM设备11的存储器中的哪一组一个或多个主密钥对应于客户端。该软件被称为“硬服务器”软件。
客户端发送一个或多个命令。图中示出了从每个客户端发送的示例命令,其中客户端A发送包括“加载密钥1,加载密钥2,用密钥1签名,用密钥2加密”的命令列表,并且客户端B发送包括“加载密钥3,用密钥3解密”的命令列表。客户端A和客户端B使用通信协议来发送这些命令。客户端A在客户端设备上存储API库,该API库用于生成符合通信协议的命令。通信协议也由在主机系统设备1上运行的硬服务器进程3使用。因此,主机系统设备1还可以存储API库,或者可以使用web API。在这种情况下,客户端B使用Web API。
在主机系统中的设备1上运行的硬服务器进程3中实现客户端分离。各个客户端使用命名管道或管座连接到硬服务器进程3,例如,利用主机系统中的设备1中的操作系统提供的分离机制。硬服务器进程3使用命名管道或管座来识别命令的源。硬服务器进程3利用主机设备1上存储的查找表,该查找表列出了与每个客户端相对应的密钥(即,密钥名称,而不是密钥材料)以及由HSM设备7使用的密钥的一些标识符。硬服务器进程3验证客户端命令正在请求使用与该客户端相关联的密钥。例如,客户端A发送加载密钥1的命令。硬服务器进程基于管道或管座确认请求来自客户端A,然后确认密钥1存储在与客户端A相关联的查找表中。由于密钥1存储在与客户端A相关联的查找表中,所以硬服务器进程3将命令连同所存储的密钥1的HSM标识符(在这种情况下,其可以是比特串标签-101)一起发送给HSM设备7。然后,HSM设备7使用标识符来取回正确的密钥。
主机操作系统的管理员被信任以确保其被正确地配置,使得客户端不具有假冒另一客户端所需的特权。这意味着每个租户依赖于主机系统管理员来确保另一客户端不访问其主密钥。这也意味着主机系统管理员参与各个客户端密码应用的管理。
备选地,可通过HSM设备11的硬件分区来实现多租户。图3是包括分成分区P1、P2和P3的HSM设备37的系统的示意图。每个分区对应于HSM的存储器的一部分。换言之,将非易失性存储器的一部分和RAM的一部分分配给每个分区。分区可以用软件实现,例如具有多个目录的磁盘。一旦被定义,所分配的存储器资源的使用仅限于相关联的分区。因此,每个分区总是使用存储器的单独部分。然后,每个分区充当单独的HSM设备。在设置时在设备上创建固定数量的分区。然而,分区可能不一定具有固定的资源分配。
在图3中,分区P1被分配给客户端1,分区P2被分配给客户端2,并且分区P3被分配给客户端3。分区存储与特定客户端相关联的所有主密钥。在主机设备31中,每个客户端与虚拟设备VD1、VD2和VD3相关联。这些虚拟设备在主机设备31上的软件中定义。如上所述,主机系统中的设备31使用命名管道、管座或其他主机操作系统功能来确定每个请求源自哪个客户端,并将该请求与对应的虚拟设备匹配。客户端1的进程直接连接到虚拟设备VD1。然而,主机操作系统而不是HSM设备37仍然负责分离。
设备驱动器33也在主机系统设备31上运行。驱动器33提供到分区P1、P2和P3的软件接口,使得主机设备31操作系统和在主机设备31上运行的其他计算机程序能够访问HSM功能。每个分区通过设备驱动器33表现为单独的HSM。因此,每个分区对于在主机设备31上运行的操作系统表现为单独的HSM。每个虚拟设备通过设备驱动器33与单独的分区相关联。因此,主机系统设备31处接收到的客户端命令与对应的虚拟设备匹配,然后与设备驱动器中的相关联的分区匹配。客户端与对应的虚拟设备的匹配由主机操作系统完成。因此,所有客户端仍然必须信任主机系统的管理员来正确地配置该匹配。然后将命令发送给HSM,其中,在开始时具有分区标识符。
在这种场景下,客户端仅访问专门专用于它们的分区,并且仅可以使用专门分配给它们的分区的硬件资源。这可能再次导致HSM资源的低效使用,因为每个客户端可能不需要分区始终提供的所有存储器和处理资源。此外,如果客户端需要附加资源,则必须向客户端分配另外的分区,该分区例如可以位于不同的HSM设备中。在两个或更多个分区被分配给同一客户端的情况下,每个分区必须存储所有客户端主密钥,从而使硬件安全模块的存储器资源的使用低效。此外,安全性再次依赖于主机将正确的分区与每个客户端相关联。
图4示出了根据实施例的硬件安全模块21的示意图。该图示出了高级示意图。每个客户端的固件进程及其非易失性数据被放入单独的容器29中。图5是图4所示的硬件安全模块21的各种内部硬件组件的示意图。为了清楚起见,在图5中仅示出了运行的两个容器(而图4示出了运行的三个容器)。容器是隔离环境的示例。容器将一个或多个正在运行的进程与系统的其余部分隔离。
对应于容器的文件存储在HSM设备21的非易失性存储器305中,在图5所示的“每容器”数据325中。该文件也可以被称为容器镜像或容器库。当运行时,容器镜像成为容器。容器镜像包括与要在容器中运行的程序相对应的程序代码(或允许取回相关程序代码的引用)。这包括固件(或对固件的引用)和SSH服务器。SSH服务器是使用安全外壳协议来接受连接的程序,并且将在下面更详细地描述。容器镜像还包括所有库、支持文件和程序以及在HSM设备21上运行这些程序所需的任何语言解释器。这意味着当容器正在运行时,程序可以在不需要访问容器外部的文件的情况下运行。容器镜像还存储与客户端相关联的主密钥。
当在HSM设备21处接收到启动容器的命令时,容器引擎取回容器镜像,然后对操作系统内核进行一个或多个API调用。内核实现容器的隔离,并强制非易失性存储器325的部分(容器镜像)和容器可用的网络连接。内核与CPU内的存储器管理单元一起将RAM的一部分分配给容器,并防止写入RAM的其他部分。以这种方式,容器隔离由操作系统内核使用诸如存储器管理单元的硬件组件来实现。
一旦运行,容器是与系统的其余部分隔离的一个或多个进程的集合。容器引擎包括一组程序指令,其响应于启动容器的命令来取回容器镜像,并且通过对操作系统内核进行一个或多个API调用来发起和运行容器(运行进程)。图6是在HSM设备21上运行的两个容器的示意图。该图示出了在HSM硬件上运行的操作系统内核、容器引擎以及共享操作系统内核的第一容器339和第二容器349。第一容器339包括应用1、应用2和这些应用的支持文件。第二容器349包括应用1、应用2和这些应用的支持文件。
可以使用各种已知的容器引擎。容器引擎的示例包括Docker、Linux LXC和LinuxLXD。可以使用容器镜像中的文件的各种已知格式,例如Docker v2镜像清单。
参考图4,一旦运行,容器29各自包括与各个客户端相关联的固件进程23。每个容器对应于非易失性存储器25的一个段,其中存储了定义容器29被登记的安全世界的关键数据。容器提供了运行固件进程所需的支持文件和库的多个副本,从而提供了良好的隔离。此外,不同的容器可以使用不同版本的固件,因为每个容器包括运行该容器所要求的进程所需的相关支持文件和库。图4示出了三个容器(边界用虚线标记)。
每个容器对应于单独的非易失性数据。该非易失性数据包括描述安全世界的所有数据,因此每个容器可以属于不同的安全世界。例如,KNSO密钥和KMSW模块密钥在容器之间完全分离。因此,具有许多安全世界的部署可以用较少的HSM运行,因为若干个安全世界可以被压缩到一个HSM上。当由不同客户端请求时,安全世界可以在不同时间运行。
每个容器包括其自己的固件进程的副本,在隔离的存储器空间中运行。在导致密钥数据泄漏的固件漏洞的情况下,例如通过揭示未初始化的存储器内容,只有对固件进程的该特定实例可见的密钥数据可能受到损害。
这也意味着在每个容器中运行的“固件”进程不需要是代码的相同版本。每个容器与其他容器隔离,并且对容器外部的任何内容具有有限且明确定义的依赖性,如上面参考图5和图6所解释的。一些客户端可以运行固件进程的旧版本,而其他客户端可以运行最新版本。例如,客户端可以将HSM与大得多的系统集成,并且将特定固件版本限定为系统配置的一部分。然后,主机实现的对HSM中的固件版本的改变将要求客户端执行更广泛的系统测试。然而,通过允许每个容器具有其自己的固件版本,客户端可以选择在方便的时间执行固件升级,使得保持与客户端系统的其余部分的一致性。类似地,主机系统管理员没有义务决定何时应该应用固件升级,以及管理其对多个客户端系统的影响。
通常期望运行新固件版本的试用,同时保留在发现问题时恢复到较旧版本的能力。然而,恢复固件版本的能力与具有一些“回滚保护”的需要相冲突,其中新版本不应被较旧的、可能较不安全的版本替换。客户端可以与具有当前固件版本的现有容器一起创建包括新固件版本的第二容器,并且然后如果试用成功则选择删除旧容器,或者如果不成功则移除新容器。
此外,各个固件版本通常受到监管批准,例如FIPS 140-2或公共标准。这些批准花费时间和精力,结果是包含新特征的最新固件版本在它们变得可用之后的相当长的时间内可能是“未批准的”。允许多个固件版本消除了对最新特征的需要和对“批准的”固件版本的需要之间的冲突,因为这些可以并行运行。硬件安全模块可以通过在单独的容器中运行每一个来支持符合监管标准的固件版本和不受监管机构的要求约束的固件版本。因此,提供了在同一HSM上与“稳定”固件一起运行“最新”固件的能力。创建附加安全世界的容易性意味着可以在不影响现有应用的情况下使用FIPS-3或通用标准模式。
最新的固件版本通常包含向后兼容性代码,以允许使用旧的安全世界数据进行操作。这使得开发和测试过程更加复杂,并且意味着固件的“攻击面”变得越来越大,因为保留了对旧密码机制的支持。针对每个容器使用一个固件版本允许移除未来固件版本中的传统支持的可能性,同时仍然允许在HSM本身上支持较旧的安全世界。
此外,每个容器具有其自己的资源限制。例如,在使用Linux容器的情况下,Linux容器技术提供了用于限制每个容器的CPU和存储器使用的灵活控制。还提供了监视和控制每个客户端的资源使用的能力。与每个Linux容器相关联的资源限制在控制文件中定义,该控制文件存储在容器镜像外部。容器引擎提供用于在任何时间访问控制文件和改变资源限制的工具。这可以在HSM运行时完成,而不必重新初始化硬件安全模块。控制文件中定义的资源限制然后由内核强制执行。
固件本身还可以具有性能整形代码,以限制例如密码协处理器的最大使用,其可以由HSM管理员设置。下面将参考图5描述密码协处理器,也称为密码加速器。
如上所述,图5是图4中更详细示出的硬件安全模块21的各种内部硬件组件的示意图。硬件安全模块21包括中央处理单元(CPU)303。CPU 303运行Linux操作系统,然而,CPU303可以支持其他操作系统。备选地,如果CPU 303运行Windows OS,则可以运行运行LinuxOS的虚拟机,使得可以使用Linux LXC容器引擎。CPU 303与非易失性存储装置305有线双向通信,并且与工作存储器309有线双向通信,工作存储器309对应于随机存取存储器。RAM309对应于CPU 303的操作存储器。
非易失性存储器305可以包括任何形式的非易失性设备存储器,例如闪存、光盘或磁性硬盘驱动器。非易失性存储器305可以是物理安全的,并且可以抵抗第三方的篡改,例如通过包括诸如覆盖整个设备的诸如膜的物理安全,其在不破坏底层物理硬件的情况下不能被移除,从而使其不可用。
处理器303耦合到存储装置305且访问工作存储器309。处理器303可包括响应并处理存储在工作存储器309中的代码中的指令的逻辑电路。特别地,当被执行时,程序被表示为存储在工作存储器309中的软件产品或进程。由处理器303执行各种程序将使得实现如本文所述的方法。
固件可以是编译代码的形式。固件可以在制造时嵌入硬件安全模块中,或者可以在制造之后整体或部分地提供。例如,固件可以作为计算机程序产品引入,其可以是下载的形式。备选地,可以通过更新或插件来进行对现有固件的修改。为了实施安全性,仅接受来自可信方的软件。可以使用数字签名进程来实施这一点,并且可以通过主机系统设备在命令中提供软件。
非易失性存储装置305存储系统数据315和每容器数据325。每容器数据325包括与对应容器相关联的信息。这被包装成单个文件,也称为容器镜像。每个容器使用其自己的加密密钥(这里称为容器密钥)来加密存储在该容器中的信息。容器中的安全世界密钥用容器密钥加密。容器密钥可以加密整个容器文件,或者它可以加密容器文件内的某些数据,例如安全世界密钥。容器密钥存储在硬件安全模块21中。例如,容器密钥可以存储在系统数据315中。在一个示例中,容器密钥被分成多个单独的部分,并且容器密钥的单独的部分被存储在硬件安全模块21的不同组件中。例如,容器密钥被分成三个部分,并且容器密钥的每个部分存储在非易失性存储装置305、板级支持处理器313和CPU 303本身的非易失性存储区域中的系统数据315之一中。当需要访问容器数据时,在工作存储器309中组合单独的部分,以形成最终的容器密钥。将容器密钥分成不同的部分使得更难以通过HSM设备21的物理拆卸来提取完整的密钥。
特别地,每个容器数据包括如前所述的一个或多个主密钥。一个或多个主密钥345定义与硬件安全模块21的特定客户端相关联的安全世界。一个或多个主密钥可以包括KNSO密钥和/或KMSW模块密钥。如前所述,与客户端相关联并与固件密码功能一起使用的应用密钥被加密并存储在HSM设备11外部。
每容器数据还包括可以用于与对应的客户端系统建立安全连接的信息。例如,每容器数据可以包括来自第一公钥-私钥对的第一公钥,其中第一私钥仅可由对应的客户端访问。例如,第一私钥可以存储在客户端系统上,或者以加密的方式存储在单独的系统上,使得它可以仅由客户端访问。每容器数据还可以包括来自第二公钥-私钥对的第二私钥,其中第二公钥被提供给客户端。每容器数据325还可以包括用于与客户端系统建立安全连接的软件。例如,可以使用安全外壳(SSH)协议来提供安全连接。每容器数据包括SSH服务器、容器SSH密钥对和客户端SSH密钥对的公钥。
每容器数据还可以包括固件或识别由容器使用的固件的信息。例如,该信息可以从存储在HSM设备21上的固件的多个版本中识别要由容器使用的固件的版本。备选地,该信息可以包括固件的属性,例如“最新版本”。以这种方式,避免了针对每个容器存储固件的副本,从而减少了每个容器的非易失性存储存储器要求。
例如,HSM设备可以具有8GB的RAM空间。具有16GB或更大RAM的HSM设备也是可用的。对应于每个容器的非易失性数据可以是10KB或更小,使得可以在单个HSM设备中支持数百或数千个安全世界。然而,如果每个容器具有其正在运行的固件的其自己的副本,则这可能是不实际的。固件的大小可以例如在1兆字节和数十兆字节之间。因此,HSM 21可以具有“固件版本库”,其包含每个支持的固件版本的一个副本。然后,容器数据指示它正在使用哪个版本,并且基于该指示取回该版本并在容器运行时将其加载到容器中。
客户端可以请求将特定版本号与容器相关联。备选地,它们还可以通过其属性来描述固件版本。HSM将在库中挑选匹配那些属性的最新(或“最佳”)固件版本。这些将在与容器相关联的配置文件中指定。例如,配置文件可以指定“FIPS批准的最新版本”或“支持v2安全世界的最后版本”。每当固件更新可用并添加到版本库时,如果容器与所请求的属性匹配,则容器可以自动升级到该版本。换言之,当容器运行时,将取回与属性匹配的最新版本。对最新版本的这种改变不需要呈现管理员卡。因此,每个客户端不必请求升级以确保它们正在运行最新的完全补丁修补的固件,但是可以确信它仍然满足它们自己的单独要求。
系统数据315可以包括固件版本库335,固件版本库335包括由硬件安全模块21支持的固件的每个版本的副本。主机系统管理员可以访问固件版本库335并且可以从库中添加和/或移除固件版本,从而管理客户端可用的固件版本并控制客户端可用的版本。系统数据315还可以包括例如硬件安全模块的序列号、制造商的凭证和与制造商安全密钥相关联的任何密钥。
如上所述,与每个容器相关联的非易失性数据(即,每容器数据)所需的存储大小可以是10KB或更小。这意味着许多安全世界数据集可以保存在HSM设备非易失性存储装置中。换言之,可以存储每容器数据的许多集合。当接收到来自对应客户端的请求时,每个容器可以在需要时运行。即使在大型部署中,例如具有多个HSM设备和许多客户端的大型主机系统,每个客户端的非易失性数据也可以安装在每个HSM设备上。这允许根据需要容易地缩放操作容量。例如,数百或甚至数千个安全世界数据集可以存储在单个HSM设备上。每个HSM上的多个租户数据的存储容量允许有效的动态缩放。在主机系统包括多个HSM设备的情况下,在主机系统中的计算机或服务器设备上运行的负载平衡软件用于将客户端请求引导到具有可用资源的HSM。
HSM设备21具有包括多个隔离环境的内部架构,其允许HSM在单个硬件单元内部表现得像许多单独的HSM。
下面关于图7详细描述当接收到客户端请求时发生的过程。当在主机系统设备50处接收到客户端请求时,识别对应于客户端的容器。然后将运行容器的请求发送给HSM设备21。然后运行容器。RAM 309的区段被分配给容器。容器镜像中的文件被加载到RAM 309的区段中。在固件由存储在容器镜像中的引用识别(而不是作为容器镜像的一部分)的情况下,由存储在非易失性存储器305中的对应容器信息325识别的固件被加载到容器中。使用存储在非易失性存储器305中的容器信息325中的模块密钥来取回应用密钥,并且还将其加载到容器中。SSH服务器与存储在非易失性存储器305中的容器信息325中的用于建立安全连接的信息一起也被加载到容器中。
图5示出了在RAM 309中限定的两个容器,容器1339和容器2349。在该图中,容器1339和容器2349被表示为占据相同量的RAM空间,然而,应当理解,每个容器具有其自己的资源限制,存储在如上所述的控制文件中,并且容器1可能需要比容器2更多的操作存储器,反之亦然。容器1对应于客户端1,并且容器2对应于客户端2。还示出了客户端1系统317和客户端2系统327。如前所述,客户端系统通过主机设备50与HSM设备21通信。CPU 303被配置为在如前所述初始化时将RAM的区段分配给每个容器。尽管使用了术语“RAM的区段”,但是应当理解,每个容器不一定占据RAM中的单个物理位置。相反,当初始化时,RAM的部分可以分配给一个容器。
当存在容器339和349正在其中运行的存储器空间的隔离时,容器339和349共享操作系统内核,如图6所示。当操作系统在容器之间共享时,容器架构允许每个容器的应用进程与系统的其余部分和应用进程的其余部分隔离。共享操作系统使容器对于系统资源来说是轻量级的,这本身允许快速操作,包括发起容器。此外,共享操作系统允许容器减少管理开销,因为硬件安全模块301仅管理单个操作系统。容器共享相同的操作系统内核,并将应用进程与系统的其余部分隔离。容器可以与各种操作系统一起使用,但是它们与底层操作系统兼容。
当发起新容器时,存储在每容器信息325中的固件版本的指示用于从固件版本库335获得固件版本,固件版本库335是系统数据315的一部分,并且固件的所选版本由容器引擎加载到RAM中的容器空间中。基于容器所需的资源将RAM 309分配给每个容器,以便正确地执行对应的固件进程和其他进程。
在固件版本的指示包括一个或多个属性而不是对特定版本的引用的情况下,由可信方提供并在HSM设备上运行的程序审查一个或多个属性并选择存储在系统数据中的与指定属性最佳匹配的固件版本。例如,客户端1可以请求其容器正在运行“支持v2安全世界的最后版本”或“FIPS批准的最新版本”。这些客户端请求被保存在与客户端1相关联的容器的每容器数据325中。当主机系统管理员将固件的新版本添加到固件版本库335时,如果固件的最新版本与属性匹配,则容器将自动包括对应于固件的最新版本的固件进程。
容器339和349分别包括固件进程319和329,固件进程319和329已经在其发起时从固件版本库加载到容器中。在发起时,将与容器相关联的一个或多个主密钥从非易失性存储块305的每容器数据区段325加载到容器中。例如,与客户端相关联的模块密钥被加载到容器中并用于取回客户端应用密钥。当应用密钥被加载到对应的容器中时,将其存储到固件进程的操作存储器空间中。硬件安全模块可以使用应用密钥来执行一个或多个功能,包括执行各种加密和解密操作,以及执行数字签名操作。
HSM设备11还包括板级支持处理器313。板级支持处理器313被配置为与多个板载传感器通信,监测主CPU和硬件安全模块21的其他硬件组件的操作。传感器可以包括但不限于CPU和/或板温度传感器、电压和/或电流传感器。
HSM设备21还包括密码加速器311。密码加速器执行特定的密码操作。从CPU 303传递执行操作的请求,并且密码加速器311向CPU 303返回对该请求的响应。
CPU 303被配置为通过主机接口307接收用户请求。处理器303访问接口。接口307可以是单个组件或者可以包括各种组件。HSM 21通过主机接口耦合到主机系统中的计算机或服务器设备50。主机接口可以包括通信端口,其提供到主机系统中的计算机或服务器设备50的PCI-e总线连接。
应当理解,一个、两个或多于两个客户端可以一次使用HSM设备21。
图7示出了根据实施例的使用硬件安全模块设备的通信方法的流程图。该方法可以使用硬件安全模块设备来执行,例如上面的图4至图6所示。
在步骤501中,从主机系统中的设备50处的客户端系统接收初始请求。初始请求包括识别客户端的信息。主机系统设备50存储查找表,该查找表使得能够识别对应于特定客户端的容器。主机系统设备50向HSM设备发送请求以运行对应于客户端的容器。该请求包括识别对应于客户端的容器的信息。HSM通过主机接口接收该请求。
在步骤502中,在HSM设备中启动或运行请求中所识别的容器。在HSM设备上运行的启动程序接收请求并启动容器。如前所述,这涉及向容器引擎提供启动对应容器的命令。然后,容器引擎取回容器文件,并对操作系统内核进行一个或多个API调用。容器文件和其他每容器数据被加载到RAM 309的对应于容器的一部分中。这包括用于在安全连接上建立和通信的安全连接过程。一旦容器被启动,则启动器被配置为(经由主机系统设备50)向客户端发送关于容器允许客户端连接到它的信息,例如容器的网络地址。然后,这允许在步骤503中与容器建立使用SSH协议的安全连接。
在该示例中,HSM设备21对于主机系统设备50看起来好像其通过局域网连接。当容器启动时,容器的网络地址被发送给客户端设备。以这种方式,客户端设备可以使用容器的网络地址通过主机系统设备50与容器建立通信。来自客户端设备的通信与容器的网络地址一起被发送给主机系统设备。主机系统然后使用网络地址将通信路由到容器。
在步骤503中,在客户端系统与容器之间建立安全连接。安全连接由在容器中运行的安全连接进程和在客户端系统上运行的安全连接进程建立。该步骤还包括认证客户端。图9示出了根据实施例的硬件安全模块21的示意图,其示出了使用硬件安全模块21在容器和客户端之间建立安全连接。将结合该图描述用于建立安全连接的过程。
安全连接直接建立到HSM设备21内的容器。这意味着主机系统设备50不必分离隧道流量并确保客户端命令用正确的密钥执行。
在一个实施例中,使用SSH协议建立安全连接。图9示出了根据实施例的包括HSM设备的系统的示意图,其中使用SSH协议执行每个客户端设备和容器之间的安全通信。
第一SSH密钥对包括客户端系统处的第一私钥和存储在具有HSM 21处的对应容器的每容器数据中的第一公钥。安全隧道信息是在客户端设备和对应容器之间共享的SSH密钥对。SSH密钥对包括第一私钥和第一公钥。客户端设备存储第一私钥,而当首次创建容器时,向容器登记第一公钥。下面将关于图8更详细地描述创建容器和登记第一公钥的过程。第一SSH密钥对允许容器验证连接被正确的客户端终止。
类似地,第二SSH密钥对包括与容器数据一起存储的第二私钥。这意味着客户端可以确保他们的连接真正地被正确的容器终止。第二SSH密钥对也在容器和客户端设备之间共享。第二私钥与容器一起存储,并且第二公钥向客户端设备登记。第二SSH密钥对为客户端提供了连接由正确的容器真正终止的信任。
安全边界在图9中示出,图9是根据实施例的设备的示意图,其中使用SSH协议对每个客户端系统进行安全连接。每个客户端与对应的容器共享安全隧道信息。安全隧道信息用于在客户端设备与硬件安全模块21中的容器之间建立安全通信隧道。图9示出了连接到硬件安全模块的三个客户端。客户端1、客户端2和客户端3中的每一个连接到容器1、容器2或容器3中的对应一个。
客户端设备使用安全外壳(SSH)协议将命令传送到硬件安全模块21中的容器。如图所示,每个客户端设备包括SSH进程,也称为SSH客户端。该进程是使用安全外壳协议连接到远程设备(在这种情况下是HSM设备21中的容器)的程序的运行实例。第一SSH密钥对的私有一半被加载到客户端设备处的SSH进程的存储器空间中。第二SSH密钥对的公共一半也被加载到客户端设备处的SSH进程的存储器空间中。
如图所示,每个容器还包括SSH进程,也称为SSH服务器。该进程是使用安全外壳协议接受来自客户端系统的连接的程序的运行实例。第二SSH密钥对的私有一半被加载到SSH进程的存储器空间中。第一SSH密钥对的公共一半也被加载到SSH进程的存储器空间中。
在503中,使用在502中提供的容器的网络地址,将建立安全连接的请求从客户端设备发送给硬件安全模块中的容器。该请求包括连接信息。连接信息可以包括客户端网络地址。它还可以包括关于客户端身份的信息,例如用户名。客户端设备上的SSH客户端和容器中的SSH服务器都具有对应的网络地址。这些由主机系统和HSM设备21操作系统使用,以确保SSH协议的消息被递送到预期的进程。用第一私钥对从客户端发送给容器的连接信息的至少一部分进行签名。例如,在SSH协议中,客户端网络地址不是用第一私钥签名的,而消息的内容是用第一私钥签名的。连接信息还可以包括硬件安全模块的端口号的标识,其用于指示客户端设备正在请求的硬件安全模块的服务类型。例如,硬件安全模块的服务类型可以是“管理的”或“主要的”。“主要”服务是指由硬件安全模块执行的密码功能。
连接信息包括用于识别请求所指向的容器的信息,即在502中提供的容器的网络地址。该信息由在硬件安全模块上运行的操作系统和在主机系统上运行的操作系统两者使用,以在客户端设备和容器中的对应SSH进程之间路由连接消息。
连接信息被加载到指定容器的存储器空间中。特别地,连接信息被加载到指定容器中的SSH进程的存储器空间中。在容器中运行的SSH进程使用第一公钥验证签名。如果验证成功,则容器确认客户端设备与对应容器之间的连接被验证。换言之,容器认证客户端。如果签名未被验证,则连接被拒绝,并且错误消息被发送给客户端系统。
如果容器确认连接,即客户端被认证,则容器生成响应。响应包括客户端网络地址,以便可以正确地路由它。用第二私钥对响应的至少一部分进行签名。例如,在SSH协议中,客户端网络地址不是用第二私钥签名的,而响应的内容是用第二私钥签名的。将响应从HSM设备21发送给指定的客户端系统。在客户端系统中运行的SSH进程使用第二公钥验证签名。如果验证成功,则客户端系统确认客户端设备与对应容器之间的连接被验证。如果签名未被验证,则拒绝连接并向容器发送错误消息。
可选地,客户端可以使用第三方服务提供者来运行他们的机器。在这种情况下,客户端系统可以在服务提供者机器上操作屏蔽的虚拟机。屏蔽的虚拟机用于以客户端系统管理员不可访问的方式存储数据。特别地,可以通过运行屏蔽的虚拟机来保护SSH密钥。这用于在服务提供者系统上运行的虚拟机与在HSM设备21内部运行的对应容器之间建立安全隧道。客户端使用可信系统来与客户端系统的其余部分和客户端系统管理员隔离地存储安全隧道信息。
如果容器和客户端系统都验证了连接,则在步骤504中生成通信加密密钥并在容器和客户端系统之间交换通信加密密钥。例如,客户端系统可以生成对称密钥,用第二公钥加密对称密钥,并将加密的对称密钥发送给容器。然后将加密的对称密钥加载到在容器中运行的SSH进程的存储器空间中,并使用第二私钥进行解密。然后将解密的对称密钥存储在容器数据中。使用对称密钥来加密通信比使用非对称密钥对更高效。然后使用对称密钥来加密客户端系统和容器之间的通信。
在505中,将对应于密码函数的命令从客户端系统发送给硬件安全模块21。利用对称通信密钥对命令进行加密。该消息还包括指定命令所指向的容器的信息,即网络地址。加密的命令被加载到指定容器的存储器空间中。特别地,加密的命令被加载到指定容器中的SSH进程的存储器空间中。使用对称密钥对命令进行解密。然后将解密的命令加载到容器中的固件进程的存储器空间中。固件进程在506中执行命令。如果命令未被成功解密,则不将其传递到固件进程。
例如,对应于密码密钥生成的程序指令;加密密钥导出;加密;解密;或者执行数字签名功能(例如数字签名或数字签名的验证)。可以使用加载到固件进程的存储器空间中的应用密钥来执行程序指令。
在一些情况下,固件进程在执行命令之前可能需要附加级别的认证。例如,固件进程可能要求客户端向容器呈现智能卡并输入密码。
固件进程的输出然后被传递到SSH进程。用对称密钥对输出进行加密,并将其发送给客户端系统。例如,如果客户端已经请求生成新的密码密钥,则响应将包括新的密码密钥的标识符。如果客户端已经请求使用密码密钥来解密文本信息,则响应将包括解密的文本信息。客户端还可以发送状态检查请求,并且响应将确认命令是否已被成功执行。
容器和客户端系统之间的安全连接意味着主机系统管理员不能读取或修改每个客户端和硬件安全模块之间的命令流量。此外,即使在网络错误配置的情况下,客户端也将无法读取或修改另一客户端的命令业务。安全连接使得客户端设备能够与硬件安全模块通信,反之亦然,而安全性不依赖于正确地直接在它们之间的流量。例如,如果HSM设备21错误地将与客户端1相关联的数据发送给客户端2,则客户端2将不能访问数据,因为客户端2没有解密数据的必要信息。如果HSM设备21错误地将命令从客户端1发送给客户端2容器,则容器2将不能访问该命令,因为容器2没有解密命令的必要信息。因此,将不执行该命令。
安全信道允许不同客户端及其对应容器的通信信道之间的分离,以及限制主机系统管理员对在客户端设备与硬件安全模块21之间传送的数据的访问。如图9所示,容器1与客户端设备1共享安全隧道信息,容器2与客户端2共享安全隧道信息,并且容器3与客户端3共享安全隧道信息。安全隧道信息允许HSM容器验证发送给容器1的命令确实由客户端1发送。客户端2不可能发送命令以利用在容器3中运行的固件中的漏洞,因为客户端2和容器3不共享安全隧道信息。此外,客户端2不可能简单地发送普通使用加载在容器3中的密钥的命令,因为客户端2和容器3不共享安全隧道信息。
在主机系统角色(包括网络和硬件管理)和安全管理角色之间提供角色分离,因为每个客户端保留对密钥和卡的控制。智能卡可以用于将安全世界密钥递送到例如加入安全世界的新HSM设备,或者递送到加入安全世界的新容器。密钥数据被拆分到若干智能卡上,并从智能卡加载到HSM上和/或容器中。在新容器加入安全世界的情况下,安全世界与该容器而不是HSM整体相关联。使用安全隧道将密钥从智能卡加载到容器中。此外,由于网络流量使用安全隧道,所以主机系统无法访问命令和数据。
当新客户端希望向硬件安全模块登记时,执行登记进程。为了确保初始系统设置是安全的,并且系统管理员不能建立中间人,登记进程受到由模块制造商的唯一身份密钥签名的“凭证”的保护。使用制造商密钥来验证安全隧道密钥的登记确保了初始系统设置是安全的。将参考图8描述登记进程的示例。该进程可以与例如关于图4至图6所描述的硬件安全模块一起使用。
在步骤801中,客户端生成包括第一公钥和第一私钥的第一SSH密钥对。第一SSH密钥对与客户端相关联并识别客户端。
在802中,将创建与密钥对相关联的新容器的命令发送给HSM。这通过主机系统中的设备50以与前述相同的方式发送。第一公钥被提供给硬件安全模块,以与新容器相关联。
硬件安全模块21接收客户端请求并生成容器镜像,包括客户端SSH密钥对的公共一半。所生成的容器镜像包括第二SSH密钥对。包括第二公钥的识别容器的信息被发送给客户端。还发送证明将容器识别为可信设备的信息的来源的信息。
例如,返回参考图5,硬件安全模块将制造商非对称密钥存储在系统数据315中。制造商可以是制造硬件安全模块的受信任方。硬件安全模块还将唯一的非对称身份密钥存储在系统数据315中。该密钥例如在制造HSM时在工厂中生成,并且可以用于证明数据的来源和真实性。
还可以存储用于身份密钥的密钥生成凭证,其使用制造商私钥签名。密钥生成凭证可以描述密钥的公共参数,例如,密钥生成凭证可以包括与密钥的类型及其长度有关的信息。密钥生成凭证包括认证身份密钥是在HSM设备中生成的信息。例如,密钥生成凭证可以包括身份密钥的公共一半的散列,并且由制造商密钥的私有一半签名。
可以使用在制造时生成的签名密钥生成凭证来可验证地识别硬件安全模块。它能够以意味着它不能被模仿的方式安全地存储其身份。客户端系统可以使用制造商密钥的公共一半作为信任根来认证硬件安全模块是真正的设备。此外,可以通过交换由身份私钥或制造商私钥签名的凭证以不可否认的方式验证硬件安全模块的参数和状态。
例如,可使用密钥生成凭证来执行在客户端处认证身份密钥是在HSM设备中生成的初始步骤。然后通过硬件安全模块设备的身份密钥验证第二SSH密钥对的公共一半,该身份密钥对于硬件安全模块是唯一的。例如,第二公钥与由身份密钥签名的凭证一起被发送给客户端设备。该凭证可以指定进一步的信息,诸如固件版本或关于HSM配置的信息。在硬件安全模块包括两个或更多个容器的情况下,可以使用相同的HSM身份密钥来验证与容器中的每一个容器相关联的第二SSH密钥对的公共一半。
在步骤802中,还向主机设备50提供将容器识别为对应于客户端的信息。主机系统管理员负责管理硬件安全模块的容器。例如,主机系统管理员使用该信息将容器身份与客户端身份相关联,并在客户端发出请求时请求HSM启动特定容器。
在步骤803中,客户端以先前关于图7描述的方式建立与容器的安全连接。
在步骤S804中,一旦建立了安全连接,客户端就将容器登记在安全世界中。这包括在容器中加载一个或多个主密钥。这些通过安全连接发送,即使用通信密钥加密。为了加载主密钥,客户可能需要出示各种智能卡,在其上存储主密钥,并且可选地输入验证智能卡的使用的密码。与客户端相关联的主密钥可以被划分到两个或更多个智能卡上,并且为了在安全世界中登记相关容器,需要将两个或更多个客户端智能卡中的多于一个客户端智能卡呈现给容器。将安全世界加载到容器是向硬件安全模块21登记客户端的进程的最后步骤。一旦安全世界被加载到容器,容器就准备好由客户端使用。
在每个安全世界内,管理员卡和操作员卡正常工作。例如,当容器首次登记到安全世界时,管理员卡可以呈现给硬件安全模块,而操作员卡可以与特定应用密钥相关联,存储在容器中或以加密形式存储在容器外部。容器可能需要呈现操作员卡,以便用相关联的应用密钥验证一些操作。
如关于图8所解释的,新客户端不需要配置中间硬服务器,而是可以通过运行安全通信进程(例如SSH进程)直接连接到容器。该系统需要最少的管理,例如不需要硬服务器配置。
在上述说明书中,已经描述了每个客户端系统和每个容器之间的一对一对应关系。图10示出了根据实施例的硬件安全模块,其中三个客户端设备(客户端3A、客户端3B和客户端3C)连接到硬件安全模块的相同容器。在该系统中,多个客户端在相同的安全世界中登记,即它们共享一个或多个主密钥的相同集合。例如,该系统可以在一个公司在不同位置具有多个客户端系统的场景中使用。每个客户端系统通过安全连接连接到容器。容器对应于三个客户端,即所有三个客户端同时连接到容器3。
容器3的SSH进程存储与客户端3A、客户端3B和客户端3C中的每一个相关联的第一SSH密钥对的公共一半。它还如前所述存储第二SSH密钥对的私有一半分。如关于图8所描述的,例如由客户端3A创建新容器。然后,通过向容器提供标识附加客户端的公钥,授权客户端3A向容器添加附加客户端。因此,每个附加客户端生成SSH密钥对,向客户端3A提供公钥,并且客户端3A向容器提供公钥。
因此,该系统被配置为使得每个容器可以同时接受多于一个的进入连接。容器的SSH进程可以被配置为在容器已经与另一个或多个客户端连接时接受新的连接请求。当接收到新的连接请求并且该请求被SSH进程成功验证时,在容器中启动新的固件进程。每个连接在容器中使用其自己的固件进程的副本。这允许多个客户端连接到一个容器,即共享安全世界数据。
该图还示出客户端系统可连接到HSM设备的各种方式。
客户端3A是现有的客户端应用,其可以使用PKCS#11接口。在客户端3A系统中,多个客户端设备通过中央客户端设备访问HSM,该中央客户端设备可以是例如客户端计算机设备或服务器。硬服务器进程在此设备上运行。为了连接到容器,修改硬服务器代码以包括SSH功能。以这种方式,通过在硬服务器进程中包括SSH功能,在现有设置中使用的硬服务器进程被修改为与容器连接。客户端3A处的所有用户共享相同的硬服务器进程,因此共享相同的SSH密钥对。如果用户需要连接到硬件安全模块21的不同容器,则在中央设备上设置新的硬服务器进程。由于SSH协议功能在硬件进程中实现,因此客户端应用程序3A的现有用户不需要实现对其现有设置的任何改变以便与硬件安全模块21连接和通信。
客户端3A使用在其连接到容器的本地主机机器上运行的硬服务器进程。硬服务器进程被配置为与对应的容器建立连接。该配置对于备选地在云上运行的遗留应用是有用的。以这种方式,客户端可以根据其容量需求从主机系统“租用”容器,而不是要求专用的HSM硬件。在该系统配置中,客户端是硬服务器进程。提供了向客户端呈现完整的“虚拟HSM”以提升和转移现有的内部部署应用的能力。
能够与硬件安全模块建立它们自己的SSH连接的客户端不需要硬服务器程序。对于这样的客户端,可以消除必须安装和运行该额外的硬服务器进程的不便。客户端3B使用API库(libnfstub)的直接连接版本来在客户端机器上运行的应用与容器之间进行连接。修改API库以支持SSH功能,以便与容器通信。该应用可以是例如银行应用。
API库的使用消除了对硬服务器进程的需要。例如,客户端应用可以被直接托管在客户端机器上运行的Docker容器内,所需的配置最少。在Docker容器中运行客户端应用允许客户端在需要时添加应用的更多副本,执行更新,或者以最小的中断将应用传送到不同的机器。在这种情况下,客户端使用SSH公钥来识别自己。私有SSH密钥安全地存储在容器中。如上所述,在Docker容器中运行的客户端应用的每个副本将具有其自己的网络地址。这被主机和HSM 21上的操作系统用来在容器和客户端之间建立网络连接。然而,客户端的网络地址不需要预先向HSM 21登记。如上所述,HSM 21中的容器不使用网络地址来确认客户端身份。相反,它使用SSH公钥。以这种方式,如果添加客户端应用的新副本,其中的每一个将具有新的网络地址但具有相同的SSH公钥,则它们可以立即连接到HSM 21中的容器,而不执行进一步的HSM管理。
客户端3C使用被配置为连接到硬件安全模块的web服务的实例。虽然客户端3C是指单个客户端,但是应当理解,可以存在使用web服务的两个或更多个客户端。Web服务被修改为支持SSH功能以与容器通信。Web服务在可信方的机器上运行,例如提供和管理HSM的可信方。客户端3C经由web服务(即,通过公共web接口)连接到容器。备选地,客户端组织可以自己运行web服务服务器,包括SSH功能,并且各种用户经由内联网连接。Web服务可以通过表示状态传输(REST)接口为许多客户端提供服务。REST接口适合于存在许多潜在客户端的环境,并且直接利用HSM管理各个连接(及其相关联的凭证)可能是不切实际的。REST接口提供用于实现用于与HSM通信的web服务接口的手段。主机系统可以包括一个或多个HSM,它们是机架PC机箱中的PCI插件板。硬件安全模块可以以网络连接的形状因子实现为多租户HSM。PC机箱中的处理器可以是x86处理器。处理器被配置为在硬件安全模块和网络(即互联网连接)之间移动数据。处理器还运行用于管理HSM的管理软件。
新的HSM可用于将容量添加到HSM的现有部署中,如图11所示。图11是包括新硬件安全模块21的系统的示意图。图11旨在展示使用各种硬件安全模块的客户端可以如何通过连接到硬件安全模块21来扩展其功能。第一主机系统主机X和第二主机系统主机Y耦合到第一现有HSM 91。第三主机系统主机Q耦合到第二现有HSM 93。新的HSM 21用于为主机系统增加额外的容量。
新HSM 21通过管理用户界面耦合到系统管理计算设备。新的HSM设备21由系统管理员使用本地控制台来管理。系统管理员不能访问应用密钥,或者不能访问客户端设备与新硬件安全模块21之间的命令和回复业务。此外,由于新的硬件安全模块21和连接的主机之间的所有流量使用安全通信,例如安全外壳SSH协议,因此仅需要为新的硬件安全模块21打开单个网络端口(SSH在其中运行的端口)。如果在主机X、Y、P和Q之间存在现有的网络防火墙,则这些防火墙可以保留。
在硬件安全模块21中同时定义和运行三个容器。每个容器可以包括不同版本的固件进程,并且如图11所示,每个容器可以在不同的安全世界中登记。
该图示出了连接到硬件安全模块的四个客户端设备,标记为主机X、主机Y、主机P和主机Q--这些是由不同客户运行的机器。主机X和主机Y均使用安全世界1运行应用程序A和应用程序B。安全世界数据被存储在主机机器中的KM数据中。应用A和B的示例包括但不限于向银行提供网站的web服务器、提供电子签名的应用或数据库加密应用。
主机X和主机Y当前正在共享登记到安全世界1中的第一HSM 91。主机X和主机Y使用硬服务器进程来连接到在安全世界1中注册的第一HSM设备91,以向应用递送加密服务。如上面参考图10所解释的,主机X和主机Y的硬服务器进程被修改为包括SSH功能,允许与硬件安全模块21中的“安全世界1”容器通信。新的HSM 21用于增加主机X和主机Y的容量。在新的HSM设备21上创建容器1,并且在其上安装安全世界1。主机X和Y中的每一个上的硬服务器进程被配置为连接到该容器。App A和App B不改变;新的HSM设备表现为额外可用的HSM。硬服务器进程可在新HSM设备21与第一HSM设备91之间进行负载平衡。
主机P运行作为Web服务的客户端的应用C和应用D。他们有自己的安全世界Web服务已经被修改以支持SSH协议,如上面关于图10所述。在新的HSM设备21上创建新的容器2,并且在其上安装安全世界2。应用C和应用D密钥可以被添加到新的HSM 21并且彼此独立地被管理。给定新HSM 21中的足够的总体处理能力,这可以在不需要新硬件的情况下完成。
主机Q运行应用E和F,并且使用登记到安全世界3中的第二HSM 93以及本地HSM95。与主机X和Y一样,新的HSM 21连接到主机Q的硬服务器,其已经被修改以支持如上所述的SSH协议,并且与现有的第二HSM 93和本地HSM 95一起出现。主机Q使用硬服务器进程来连接到均在安全世界3框架中登记的第二HSM 93和本地硬件安全模块95。硬服务器进程还被配置为与在新硬件安全模块21中定义的安装有安全世界3的第三容器3建立连接。
在该系统中,现有的HSM继续与新的HSM一起工作,因此不会损失现有容量。
在上述说明书中,与每个客户端相关联的隔离环境是容器。然而,备选地,隔离环境可以是例如虚拟机。图12中示出了在HSM设备21上运行的两个虚拟机的示意图。再次,虚拟机包括与系统的其余部分隔离的一个或多个进程的集合。在这种情况下,在每个虚拟机中运行单独的内核。第一虚拟机1201包括应用1、应用2、这些应用的支持文件和内核。第二虚拟机1202包括应用1、应用2、用于这些应用的支持文件和内核。管理程序包括创建和运行虚拟机的软件,并且充当虚拟机与HSM硬件之间的中介。
图13示出了根据实施例的硬件安全模块设备21的示意图。HSM设备21可以是例如关于上面的图4至图12中的任一个所描述的HSM设备21。在该示例中,在多租户HSM设备21中使用多个不同的凭证。在该示例中,凭证是SSH密钥对。
HSM设备21位于主机系统(未示出)中,在该示例中,主机系统是服务提供者系统。HSM 21通过直接连接通信地耦接到第一计算设备,该第一计算设备可以是主机系统中的计算机或服务器设备。例如,HSM设备21可以是直接插入到第一设备的PCI-Express卡槽中的PCI-Express卡。主机系统与第一方(这里称为服务提供者)相关联。服务提供者可以是拥有HSM 21并将其租赁给租户的组织。除了第一计算设备之外,还可以存在作为服务提供者系统的一部分的多个终端用户计算设备。这些附加设备可以是例如台式计算机、膝上型计算机、移动设备或其他设备。主机系统中的附加设备与主机系统中的第一设备之间的通信通过通信网络执行。
与主机系统分离的租户系统或客户端系统位于远离主机系统的位置。租户系统包括第二计算设备,其可以是计算机或服务器设备。除了第二计算设备之外,还可以存在作为租户系统的一部分的多个终端用户计算设备。租户系统中的设备通信地耦合到主机系统中的第一设备,并且因此通过第一设备通信地耦合到HSM设备21。租户系统和主机系统之间的通信通过通信网络执行。租户系统与这里称为租户1的第二方相关联,该第二方可以是组织。
硬件安全模块21在这里被示出为具有运行的两个容器:“容器1”和“容器2”。然而,可以存在一个或多个容器。在一个示例中,每个租户存在一个容器。在该示例中,容器1与租户1相关联。
服务提供者系统中的第一设备与HSM设备21通信。在该示例中,服务提供者系统中的第一设备与在任何容器外部的HSM设备21中运行的一个或多个进程通信。每个进程在这里也被称为“服务”。每个服务对应于程序,该程序包括体现一个或多个动作的集合的计算机程序指令。服务进程是指正在执行的服务程序,换言之,它是服务程序的运行实例。在该示例中,存在“ssh admin(ssh管理)服务”、“launcher(启动器)服务”、“updater(更新器)”服务和“monitor(监视器)”服务。这些服务都是“管理的”。每个服务与单独的安全连接相关联。在该示例中,每个安全连接对应于SSH服务器,以及SSH密钥对和另一SSH密钥对的公钥。例如,“ssh admin”服务与在任何容器外部运行的第一SSH服务器以及“第一服务”SSH密钥对和“第一服务提供者角色”SSH密钥对的公钥相关联。“launcher”服务与第二SSH服务器以及“第二服务”SSH密钥对和“第二服务提供者角色”SSH密钥对的公钥等相关联。这些凭证用于在服务提供者系统和服务之间建立安全信道。
安全外壳(SSH)协议用于在服务提供者系统和在硬件安全模块21上运行的服务之间提供安全连接。SSH服务器配置指定当SSH客户端连接时应该启动哪个进程--诸如允许用户发出一般命令的“外壳”程序。在该示例中,SSH服务器配置指定当SSH客户端连接到SSH服务器时启动的服务进程。例如,第一SSH服务器指定当SSH客户端连接到第一SSH服务器时应该启动“ssh admin服务”进程。当SSH客户端成功地建立与第一SSH服务器的连接时,第一SSH服务器请求硬件安全模块21发起“ssh admin服务”。每个服务提供者角色具有对应的“服务”进程,其仅允许适合于该角色的命令。
在该示例中,存在许多不同的服务提供者角色。每个角色具有其自己的凭证,并且被允许连接到在HSM设备21上运行的不同服务进程。在该示例中,每个服务提供者角色对应于服务提供者组织内的不同人员。每个不同的服务提供者角色在这里也被称为“第一主机”、“第二主机”等。在其他示例中,一个人可以担任两个或更多个角色,或者两个人或更多个人可以担任一个角色。在该示例中,每个服务提供者角色在服务提供者系统内使用不同的终端用户计算设备。然而,备选地或附加地,持有不同角色的人可以使用服务提供者系统内的相同终端用户计算设备,其可以是例如第一设备。与服务提供者角色相对应的(一个或多个)人持有与角色相关联的凭证,其在该示例中对应于如下所述的私有SSH密钥。凭证可以存储在与该人相关联的终端用户计算设备(例如,用密码和/或其他安全措施加密的膝上型计算机)上,或者存储在例如一个或多个智能卡上。在多于一个人被授权用于服务的情况下,换言之,多于一个人持有服务提供者角色,他们可以各自具有他们自己的凭证。在这种情况下,存在与角色和安全连接相关联的多于一个凭证。例如,每个人可以持有私有SSH密钥,其可以用于建立与服务相关联的SSH服务器的安全连接。
当租户与它们各自的容器内的SSH服务器通信时,服务提供者与容器外部的SSH服务器通信。相应的SSH客户端在服务提供者角色使用的主机系统设备中运行。服务提供者角色具有其自己的凭证,其建立到在容器外部运行的SSH服务器的安全隧道。每个服务提供者角色对应于不同的服务(“updater”、“launcher”等),并且使它们自己的SSH客户端和服务器运行,其中在HSM中运行的每个SSH服务器被配置为接受由不同凭证授权的连接。
如先前关于SSH协议所描述的,在建立安全连接时交换的消息被数字签名,并且连接的每一端检查由另一端做出的签名。签名验证密钥是SSH服务器配置的一部分,因此HSM设备21处的SSH服务器将检查连接正在由具有对应签名密钥的SSH客户端建立,该密钥是服务提供者角色的凭证。每个服务提供者角色具有其自己的密钥集,每个角色的签名验证密钥在相应的SSH服务器的配置数据中建立。
例如,关于“ssh admin”服务,存在包括“第一服务提供者角色”私钥和“第一服务提供者角色”公钥的“第一服务提供者角色”SSH密钥对。服务提供者角色存储“第一服务提供者角色”私钥。例如,该密钥可以存储在一个或多个智能卡上或终端用户计算设备上。“第一服务提供者角色”公钥与第一SSH服务器信息一起存储在HSM设备中。“第一服务提供者角色”公钥是签名验证密钥,其是第一SSH服务器配置的一部分。“第一服务提供者角色”私钥是签名密钥。“第一服务提供者角色”SSH密钥对允许HSM设备21验证连接被正确的服务提供者角色终止。另一SSH密钥对(这里称为“第一服务”SSH密钥对)包括与HSM设备21上的SSH服务器数据一起存储的“第一服务”私钥。这意味着可以确保服务提供者角色他们的连接真正被正确的SSH服务器终止。例如,“第一服务”公钥可以存储在主机系统设备上。
从主机系统设备向硬件安全模块发送建立安全连接的请求。在服务提供者角色使用与第一设备分离的主机系统设备的情况下,经由第一设备发送请求。该请求包括连接信息。连接信息可以包括网络地址。与主机系统设备上的服务提供者角色相对应的SSH客户端和与HSM 21上的服务相对应的SSH服务器都具有对应的网络地址。连接信息还可以包括HSM21的端口号的标识,其用于指示所请求的硬件安全模块的服务。这些由主机系统设备操作系统和HSM设备21操作系统使用,以确保SSH协议的消息被递送到预期的进程。从主机系统设备发送给HSM设备21的连接信息的至少一部分用“第一服务提供者角色”密钥签名。例如,在SSH协议中,网络地址不被签名,而消息的内容被签名。
连接信息被加载到第一SSH服务器进程的存储空间中。在HSM设备21上运行的SSH进程使用“第一服务提供者角色”公钥来验证签名。如果验证成功,则HSM设备21确认连接被验证。如果签名未被验证,则拒绝连接并发送错误消息。如果HSM 21确认连接,则其生成响应。该响应包括SSH客户端网络地址,以便可以正确地路由它。用“第一服务”私钥对响应的至少一部分进行签名。该响应从HSM设备21发送给主机系统设备。在主机系统设备中运行的SSH进程使用“第一服务”公钥验证签名。如果验证成功,则主机系统确认主机系统设备与对应的HSM服务之间的连接被验证。如果签名未被验证,则拒绝连接并发送错误消息。如果连接被验证,则生成通信加密密钥并在HSM和主机系统设备之间交换通信加密密钥。
尽管在以上示例中,每个服务与单个凭证相关联,但是在一些示例中,服务可以与两个或更多个凭证相关联。在这种情况下,对应于服务的SSH服务器存储与多于一个人相关联的公钥,使得多于一个人可以被授权访问服务并承担相关联的服务提供者角色。例如,可以存在被授权连接到“ssh admin”服务的多于一个人,每个人具有他们自己的凭证。当这些人中的一个连接到“SSH admin”服务时,该人承担“SSH admin”角色,即使还有其他人也被授权承担“SSH admin”角色。
服务在容器1和容器2外部运行,并且因此与在容器中运行的固件进程分离。租户只能访问其相关联的容器。服务提供者服务仅可由服务提供者角色访问,并且不可由租户访问。每个角色由其自己的凭证识别。系统管理角色可以使用凭证来建立与服务进程的安全通信信道。每个角色可以仅访问硬件安全模型21的特定服务,并且因此仅执行特定的一组动作。HSM 21支持多个不同的服务提供者凭证,在该示例中对应于多个公钥,其用于充当不同角色的服务提供者用户。例如,一个角色可以执行固件升级,另一个角色可以请求“恢复出厂设置”,等等。
在图13的示例中,存在四种服务。在其他示例中,可以使用这些服务中的一个或多个,或者可以使用附加或替代服务。
“ssh admin服务”包括与为硬件安全模块21内的其他服务提供者角色设置服务提供者角色凭证有关的一组动作。设置服务提供者凭证可以包括向服务进程的SSH服务器登记服务提供者角色公钥。这将配置SSH服务器的签名验证密钥。
“launcher服务”进程允许在客户端连接时启动现有容器。例如,在上面关于图7描述的步骤之后执行容器的发射。在图13的示例中,当服务提供者从客户端系统接收到启动容器的初始请求时,被授权访问“launcher服务”进程的服务提供者角色与对应于HSM 21上的“launcher服务”的第二SSH服务器建立安全连接,并使用安全连接将请求发送给硬件安全模块设备21以运行相关容器。launcher服务可以启动和停止来自现有镜像的容器。
launcher服务还允许在租户来来去去时创建和删除容器。因此,launcher服务还可以创建新的容器镜像,例如当新租户在系统上登记时。例如,在上面关于图8描述的步骤之后执行登记进程。在图13的示例中,当创建与密钥对相关联的新容器的命令被发送给服务提供者系统时,被授权访问“启动程序服务”进程的服务提供者角色与对应于HSM 21上的“launcher服务”进程的第二SSH服务器建立安全连接,并使用安全连接将请求发送给HSM21。
“updater服务”允许更新固件。
“monitor服务”允许读出系统日志和状态信息。通过访问monitor服务,服务提供者可以访问和读出系统日志和状态。例如,状态信息可以指示硬件安全模块21的资源如何被使用,即硬件安全模块21有多“繁忙”,模块的操作温度是什么以及与状态和操作有关的其他信息。
在图13中,在租户系统内还存在不同的角色,其中某些租户角色可以仅访问与租户相关联的容器内的某些进程。图13示出了租户1的各种租户角色。
每个“租户”与容器相关联。每个租户具有其自己的凭证集合,其独立于服务提供者的各种凭证。一旦创建了租用,服务提供者就不能干扰租户的凭证,并且例如不能拦截其安全连接。每个租户可以具有与租户相关联的多个人,这里也称为多个实体,每个实体具有其自己的凭证。
每个进程在这里也被称为“服务”。每个服务对应于程序,该程序包括体现一个或多个动作的集合的计算机程序指令。服务进程是指正在执行的服务程序,换言之,它是服务程序的运行实例。在该示例中,存在在容器1内运行的“ssh admin服务”、“monitor”服务和“main(主)”服务。每个服务与单独的安全连接相关联。在该示例中,每个安全连接对应于SSH服务器,以及SSH密钥对和另一SSH密钥对的公钥。在该示例中,“main”服务与来自多个SSH密钥对的多个公钥相关联,允许多个人访问主服务。与主服务相关联的SSH服务器是先前关于图9描述的SSH服务器的示例,其中“main”服务对应于“固件进程”。“ssh admin服务”和“monitor”服务是“administrative(管理)”服务,而“main”服务执行加密功能。
在该示例中,存在与租户1相关联的多个租户角色。每个角色具有其自己的凭证,并且被允许连接到在HSM设备21上的容器1中运行的服务进程。在该示例中,每个租户角色对应于租户组织内的不同人。然而,在其他示例中,一个人可以担任两个或更多个角色,或者两个或更多个人可以担任一个角色。在该示例中,单个租户角色对应于“ssh admin服务”,并且单个租户角色对应于“monitor”服务。然而,三个租户角色对应于主服务。
在该示例中,每个租户角色在租户系统内使用不同的终端用户计算设备。然而,备选地或附加地,持有不同角色的人可以在租户系统内使用相同的终端用户计算设备。与角色相对应的人持有与角色相关联的凭证,其在该示例中对应于私有SSH密钥。凭证可以存储在与该人相关联的终端用户计算设备(例如,用密码和/或其他安全措施加密的膝上型计算机)上,或者存储在例如一个或多个智能卡上。
SSH服务器配置指定SSH客户端连接到SSH服务器时启动的服务进程。例如,与主服务相关联的SSH服务器指定当SSH客户端连接到SSH服务器时应该启动固件进程。每个服务具有其自己的SSH服务器运行(在租户的容器中)。每个SSH服务器具有指定允许连接到它的SSH密钥对的配置,以及应该运行哪个进程来处理通过连接做出的请求。
如先前关于SSH协议所描述的,在建立安全连接时交换的消息被数字签名,并且连接的每一端检查由另一端做出的签名。签名验证密钥是SSH服务器配置的一部分,因此HSM设备21处的SSH服务器将检查连接正在由SSH客户端利用对应的签名密钥(该密钥是租户角色的凭证)建立。每个租户角色具有其自己的一组密钥,其中每个角色的签名验证密钥在对应的SSH服务器的配置数据中建立。类似于上面关于服务提供者角色描述的安全通信信道,使用与租户角色相关联的包括私钥和公钥的SSH密钥对以及与容器内的服务相关联的包括私钥和公钥的另一SSH密钥对来建立租户角色和进程之间的安全通信信道。如前所述,执行在客户端角色和与客户端容器内的进程相对应的SSH服务器之间建立安全连接的进程。
如前所述,与客户端系统设备上的租户角色相对应的SSH客户端和与容器中的服务相对应的SSH服务器都具有对应的网络地址。这些由客户端系统设备操作系统、主机系统设备操作系统和HSM设备21操作系统使用,以确保SSH协议的消息被递送到预期的进程。连接信息还可以包括硬件安全模块的端口号的标识,其用于指示客户端设备正在请求的硬件安全模块的服务。
每个租户角色对应于凭证。凭证可以是SSH密钥对的私钥。角色凭证用于定义不同的租户角色。例如,一些凭证可以与容器内的“administrative(管理)”角色相关联,而一些凭证可以与硬件安全模块的“main(主)”类型的服务相关联,因此不授予对管理服务的访问。每个租户可以使这些服务在其容器中可用。
在图13的示例中,容器1被示出为包括在容器1内运行的三个进程。进程“sshadmin服务”和“monitor服务”是容器的“administrative”服务,并且仅可由其角色被授权访问这些服务的租户访问。“main服务”涉及由硬件安全模块21提供的“main”类型的服务。
“ssh admin服务”允许利用容器中的服务(例如利用主服务)来设置租户的凭证。设置租户的凭证可以包括向服务进程的SSH服务器注册租户公钥。这与服务提供者sshadmin服务无关。一旦创建了容器,服务提供者就不能访问租户的服务。如上所述,一旦在硬件安全模块21内为特定租户设置了容器,则只有租户可以访问在容器内运行的进程。硬件安全模块21的其他租户或服务提供者不能访问所述进程。
“monitor服务”允许访问租户的操作私有的日志和状态信息。租户角色可以使用该服务来访问和读出特定容器和租户的操作私有的系统日志和状态信息。
“main服务”对应于固件进程。固件进程先前已经描述,并且向用户提供硬件安全模块21的主要功能,包括密码密钥的管理和使用。如图所示,主服务可以接受与不同的人(在此也称为不同的实体)相对应的多个不同的凭证。主服务还可以允许其管理的密钥(包括先前描述的应用密钥)根据发出请求的人的凭证而具有不同的访问级别。例如,特定密钥可以仅允许对一个人进行加密,而对第二个人进行解密。应用密钥可以包括访问控制列表(ACL),其指定具有每个访问级别的实体。
在该示例中,与主服务相对应的SSH服务器被配置为接受多个凭证中的任何一个,使得租户系统内的多个不同的人将能够与其进行连接。每个单独的连接对于建立它的人是私有的,因为SSH服务器将记录在建立连接时使用了哪个允许的SSH密钥。这意味着可能存在多个“加密服务用户”,它们都能够连接和使用由容器管理的安全世界内的应用密钥。
在一个示例中,一个或多个应用密钥可以具有ACL条目,该ACL条目标识被允许访问它的人的凭证。单个ACL中的若干个这样的条目将允许多个不同的人访问应用密钥。在一个安全世界内,可以管理多个不同组的应用密钥,其访问限于租户系统内的人员的子集。由HSM 21保护的应用密钥可以各自具有访问控制列表,该访问控制列表可以以非常灵活的方式允许不同的人进行不同的许可。这允许甚至在一个租约内的不同人之间的强隔离。
例如,如图13所示,“main服务”进程可以接受来自三个租户的连接。“main服务”进程的SSH服务器被配置为接受三个不同实体的凭证,这些实体都可以与“main服务”进程的SSH服务器建立安全连接并使用由容器1管理的安全世界内的应用密钥。安全世界内的应用密钥可以与访问控制列表(ACL)相关联。访问控制列表可以用于定义对对应的应用密钥的不同访问级别。访问控制列表可以包括条目,该条目定义被允许使用相关联的应用密钥的人的凭证,并且可选地定义该人可以使用密钥的加密操作的类型。访问控制列表可以包括多于一个条目,因此允许许多不同的人使用相关联的应用密钥。因此,访问控制列表可以用于定义安全世界的应用密钥的不同组,其可以仅由租户系统中的特定子组的人员使用。应当理解,“main服务”进程不仅限于三组凭证,并且多于或少于三组凭证是可能的。
尽管在上述示例中,存在多个租户角色和多个服务提供者角色,但是应当理解,在其他示例中,例如,可以存在单个服务提供者角色和多个租户角色,或者单个租户角色和多个服务提供者角色。在上述示例中,每个角色由一个或多个SSH密钥和指定允许这些密钥做什么的配置信息的集合来定义。然而,可以使用其他类型的凭证。
虽然已经描述了某些实施例,但是这些实施例仅作为示例呈现,并且不旨在限制本发明的范围。实际上,本文描述的新颖方法和设备可以以各种其他形式体现;此外,可以对本文描述的方法和设备的形式进行各种省略、替换和改变。

Claims (15)

1.一种设备,包括:
输入;
存储器;以及
处理器模块,其被配置为:
在所述存储器中存储定义与第一用户相关联的第一隔离环境的信息;
响应于通过所述输入接收的请求,运行所述第一隔离环境;
在所述第一隔离环境中认证所述第一用户,并且如果所述第一用户被认证,则在所述第一隔离环境中与所述第一用户建立第一安全连接;以及
响应于通过所述第一安全连接接收的用户命令,在所述第一隔离环境中执行对应于所述用户命令的第一操作。
2.根据权利要求1所述的设备,其中,所述第一操作包括以下中的至少一个:密码密钥生成、密码密钥导出、执行加密操作;执行解密操作和执行数字签名操作。
3.根据权利要求2所述的设备,其中,与所述第一用户相关联的第一主密钥存储在所述存储器中定义所述第一隔离环境的信息中,其中,使用第一应用密钥来执行所述第一操作,并且其中,使用所述第一主密钥来取回所述第一应用密钥。
4.根据前述权利要求中任一项所述的设备,其中,第一公钥存储在所述存储器中定义所述第一隔离环境的信息中,所述第一公钥是包括所述第一公钥和与所述第一用户相关联的第一私钥的第一密钥对的一部分。
5.根据权利要求4所述的设备,其中,第二私钥存储在所述存储器中定义所述第一隔离环境的信息中,所述第二私钥是包括所述第二私钥和第二公钥的第二密钥对的一部分。
6.根据权利要求5所述的设备,其中,认证所述第一用户并建立所述第一安全连接包括:
从所述第一用户接收包括第一签名的通信;
在所述第一隔离环境中使用所述第一公钥验证所述第一签名;
在所述第一隔离环境中使用所述第二私钥生成第二签名;
向所述第一用户发送包括所述第二签名的通信。
7.根据权利要求6所述的设备,其中,认证所述第一用户并建立所述第一安全连接进一步包括:
在所述第一隔离环境中使用所述第一公钥加密第三密钥并将加密的第三密钥发送给所述第一用户,或者在所述第一隔离环境处从所述第一用户接收加密的第三密钥并使用所述第二私钥解密所述加密的第三密钥;
其中所述第三密钥用于加密所述第一用户与所述第一隔离环境之间的通信,从而提供所述第一安全连接。
8.根据前述权利要求中任一项所述的设备,其中,所述存储器中定义所述第一隔离环境的信息包括识别程序指令的信息,所述程序指令在被执行时使所述处理器执行所述第一操作。
9.根据权利要求8所述的设备,其中所述程序指令的第一版本和所述程序指令的第二版本存储在所述存储器中,并且其中识别所述程序指令的所述信息包括所述第一版本的指示。
10.根据前述权利要求中任一项所述的设备,其中,所述处理器模块进一步被配置为:
在所述存储器中存储定义与第二用户相关联的第二隔离环境的信息;
响应于通过所述输入接收的请求,运行所述第二隔离环境;
在所述第二隔离环境中认证所述第二用户,并且如果所述第二用户被认证,则在所述第二隔离环境中建立与所述第二用户的第二安全连接;以及
响应于通过所述第二安全连接接收的用户命令,在所述第二隔离环境中执行对应于所述用户命令的第二操作。
11.根据前述权利要求中任一项所述的设备,其中,存储在所述存储器中的定义与所述第一用户相关联的所述第一隔离环境的所述信息包括加密文件。
12.一种系统,包括根据权利要求4至7中任一项所述的设备和第一用户设备,其中所述第一用户设备操作屏蔽的虚拟机,并且其中所述第一私钥存储在所述屏蔽的虚拟机中。
13.一种通信方法,包括:
响应于接收到请求,在设备上运行与第一用户相对应的第一隔离环境;
在所述第一隔离环境中认证所述第一用户,并且如果所述第一用户被认证,则在所述第一隔离环境中建立与所述第一用户的第一安全连接;
通过所述第一安全连接接收用户命令;以及
在所述第一隔离环境中执行对应于所述用户命令的第一操作。
14.一种创建隔离环境的方法,包括:
接收创建与第一用户相关联的隔离环境的请求;
创建与所述第一用户相关联的所述第一隔离环境;
在所述第一隔离环境中建立与所述第一用户的安全连接;
接收允许通过所述安全连接执行与所述第一用户有关的一个或多个操作的信息。
15.一种包括计算机可读代码的载体介质,所述计算机可读代码被配置为使计算机执行根据权利要求13或14所述的方法。
CN202280010233.2A 2021-01-15 2022-01-13 设备和通信方法 Pending CN116724309A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP21275002 2021-01-15
EP21275002.0 2021-01-15
PCT/GB2022/050074 WO2022153055A1 (en) 2021-01-15 2022-01-13 A device and a communication method

Publications (1)

Publication Number Publication Date
CN116724309A true CN116724309A (zh) 2023-09-08

Family

ID=74186611

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280010233.2A Pending CN116724309A (zh) 2021-01-15 2022-01-13 设备和通信方法

Country Status (4)

Country Link
US (1) US20240111907A1 (zh)
EP (1) EP4278291A1 (zh)
CN (1) CN116724309A (zh)
WO (1) WO2022153055A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4354792A1 (en) * 2022-10-11 2024-04-17 nCipher Security Limited A device and a method for performing a cryptographic operation

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2497900A (en) * 2010-09-28 2013-06-26 Barclays Bank Plc Mobile payment system
EP3668002B1 (en) * 2014-12-19 2022-09-14 Private Machines Inc. Systems and methods for using extended hardware security modules

Also Published As

Publication number Publication date
US20240111907A1 (en) 2024-04-04
EP4278291A1 (en) 2023-11-22
WO2022153055A1 (en) 2022-07-21

Similar Documents

Publication Publication Date Title
CN109558721B (zh) 客户端应用程序的安全单点登录和条件访问的方法和系统
CN108604270B (zh) 操作系统的安全供应
US9686278B1 (en) Method and system for configuring computing devices
EP3479282B1 (en) Targeted secure software deployment
CN109858265B (zh) 一种加密方法、装置及相关设备
US8522018B2 (en) Method and system for implementing a mobile trusted platform module
US9667414B1 (en) Validating using an offload device security component
US20110246778A1 (en) Providing security mechanisms for virtual machine images
CN109313690A (zh) 自包含的加密引导策略验证
US10091001B2 (en) Autonomous private key recovery
TW201807616A (zh) 安全儲存系統以及用於安全儲存的方法
EP3667542A1 (en) Self-encryption drive (sed)
CN116490868A (zh) 用于可信执行环境中的安全快速机器学习推理的系统和方法
CN110334531B (zh) 虚拟机密钥的管理方法、主节点、系统、存储介质及装置
CN113342473B (zh) 数据处理方法、安全虚拟机的迁移方法及相关装置、架构
EP2863329A1 (en) Establishing physical locality between secure execution environments
CN116724309A (zh) 设备和通信方法
KR101711024B1 (ko) 부정조작방지 장치 접근 방법 및 그 방법을 채용한 단말 장치
CN110298165A (zh) 安全访问共享内存的方法、装置以及认证代理
US11157660B2 (en) Virtual host upgrade using a secured disk image
US20090187898A1 (en) Method for securely updating an autorun program and portable electronic entity executing it
US20220413936A1 (en) Software containers
EP4354792A1 (en) A device and a method for performing a cryptographic operation
CN116405316B (zh) 专用机启动方法、装置、设备、介质及专用机管理系统
WO2024038326A1 (en) Authenticating key-value data pairs for protecting node related data

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