CN117063439A - 一种用于密钥管理的方法及基于计算机的*** - Google Patents
一种用于密钥管理的方法及基于计算机的*** Download PDFInfo
- Publication number
- CN117063439A CN117063439A CN202180095618.9A CN202180095618A CN117063439A CN 117063439 A CN117063439 A CN 117063439A CN 202180095618 A CN202180095618 A CN 202180095618A CN 117063439 A CN117063439 A CN 117063439A
- Authority
- CN
- China
- Prior art keywords
- key
- acp
- kms
- kek
- ksk
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 116
- 238000012545 processing Methods 0.000 claims abstract description 33
- 230000004224 protection Effects 0.000 claims abstract description 18
- 238000009795 derivation Methods 0.000 claims description 53
- 230000006870 function Effects 0.000 claims description 44
- CLVFWRBVFBUDQU-UHFFFAOYSA-N 1,4-bis(2-aminoethylamino)-5,8-dihydroxyanthracene-9,10-dione Chemical compound O=C1C2=C(O)C=CC(O)=C2C(=O)C2=C1C(NCCN)=CC=C2NCCN CLVFWRBVFBUDQU-UHFFFAOYSA-N 0.000 claims description 14
- 238000012986 modification Methods 0.000 claims description 11
- 230000004048 modification Effects 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 5
- 238000012217 deletion Methods 0.000 claims description 4
- 230000037430 deletion Effects 0.000 claims description 4
- QBZKHLSOLPLXGI-UHFFFAOYSA-N 6-[2-[5-[3-(dimethylamino)propyl]-2,3,4-trifluorophenyl]ethyl]-4-methylpyridin-2-amine Chemical compound CN(C)CCCc1cc(CCc2cc(C)cc(N)n2)c(F)c(F)c1F QBZKHLSOLPLXGI-UHFFFAOYSA-N 0.000 claims 45
- 238000013461 design Methods 0.000 abstract description 3
- 208000007367 Kabuki syndrome Diseases 0.000 description 116
- 101710117960 Candidapepsin-9 Proteins 0.000 description 53
- 101150104867 KMS2 gene Proteins 0.000 description 33
- 239000000463 material Substances 0.000 description 23
- 230000008901 benefit Effects 0.000 description 20
- 238000013459 approach Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 238000012795 verification Methods 0.000 description 5
- 239000000284 extract Substances 0.000 description 4
- 238000010420 art technique Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- HSOLPAFROQCEQW-UHFFFAOYSA-N Antibiotic SEK 15 Natural products Cc1cc(O)cc(O)c1C(=O)c2c(O)cc(O)cc2CC3=CC(=O)C=C(O)O3 HSOLPAFROQCEQW-UHFFFAOYSA-N 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key 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/0822—Key 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 key encryption key
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key 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/0825—Key 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key 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/083—Key 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) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
一种使用密钥管理***(Key Management System,KMS)(2)对计算机上的数据进行安全密钥处理和加密处理的方法和***,其中,首先使用保护密钥KEK(key encryption key,16)对应用密钥(application key,AK)(6)进行加密;将加密的密钥C(8)与其ACP(9)放在一起;使用密钥签名密钥(key signing key,KSK)(17)对级联结果(10)进行签名,以获取包括在元组(12)中的签名(11)。这样的KMS(2)设计确保了AK(6)的ACP(9)不能在KMS(2)之外被修改或被另一个密钥的ACP替换,以免密钥无法使用,并且可以在不解密AK(6)的情况下完成ACP(9)查询和执行。
Description
技术领域
本发明涉及数据安全,更具体地,涉及用于安全密钥处理和加密处理的方法和***。
背景技术
密钥管理***(Key Management System,KMS)是计算设备中的一个功能组件,主要负责应用的加密密钥材料的生命周期管理,并根据应用的请求使用密钥材料执行加密操作。
生命周期管理任务通常包括生成新密钥、从另一个KMS或应用导入密钥、删除现有密钥、回答应用有关密钥的查询,以及创建/修改定义密钥使用条件的访问控制策略。
使用密钥的加密操作可以包括计算和验证数字签名、加密和解密、密钥协商和派生,有时还包括更复杂的协议,如密钥证明。
在提供更安全模式(称为可信执行环境(Trusted Execution Environment,TEE))的设备上,此类设备上的KMS通常会利用TEE来保护应用的密钥材料,以防止密钥被提取,即使安全性较低的一侧(称为设备的富执行环境(Rich Execution Environment,REE),大多数应用在其中运行)已受到威胁。KMS通常以多种方式利用TEE。首先,KMS软件中最关键的组件(有时称为可信应用)仅在TEE中运行,因此该软件更可信,并受到TEE的保护,免受恶意或意外修改的影响。其次,TEE可以提供一个根存储密钥,该密钥只能由KMS的可信应用访问。然后,此存储密钥可用于保护KMS管理的数据,即应用的密钥材料。第三,TEE可以提供硬件加密加速器或引擎,使得KMS以更安全、更高效的方式执行加密操作。
密钥材料的保护通常涉及两个方面。首先是保护密钥材料,使其无法从REE直接访问。这通常涉及通过存储密钥或从其派生的一些密钥对密钥材料进行加密,并且通常需要另一种机制,例如数字签名或消息鉴别码,以确保加密的密钥在存储中不会被修改。第二是控制对密钥的访问,例如哪些应用可以在哪些时间使用哪些密钥,设备必须处于什么状态才能使用密钥,是否需要用户认证才能使用密钥,等等。我们参考这些密钥访问控制策略(access control policy,ACP)的规则。密钥的ACP的一部分可以由拥有密钥的应用指定,一部分可以由操作***或TEE指定。部分(如果不是全部)ACP在TEE中执行,以最大程度地减少KMS的攻击面。
一个需要解决的问题是,正如美国国家标准与技术研究院(National Instituteof Standards and Technology,NIST)所建议的那样,密钥和策略应受到加密约束。这是为了确保无法解密加密密钥的攻击者无法通过操纵ACP来访问密钥。
另一个需要解决的问题是,与REE相比,设备的TEE通常要慢得多,计算能力也较低,并且REE和TEE之间的切换需要时间。此外,更多的代码可能意味着***有更多的错误和漏洞。
现有技术解决这些问题的一种方法是提供KMS,其将密钥的ACP与密钥本身放在一起,并使用存储密钥对结果进行加密。使用此方法时,对特定密钥的所有密钥管理操作都会影响该密钥及其策略,因为它们是一起加密的。例如,当生成密钥时,KMS还必须指定其ACP,以便将它们放在一起进行加密。ACP的任何更改也需要重新加密密钥二进制类型的大对象(Binary Large Object,blob)。这种情况下的一个特殊问题是,当应用发送使用密钥(例如密钥1)执行加密操作的请求时,KMS必须首先解密加密的Blob 1,从解密的Blob中提取策略1,并检查策略1是否允许该请求。
当密钥blob的加密不是由KMS本身完成的,而是由底层操作***作为安全存储服务提供时,通常会使用此方法。通过分离数据加密步骤,可以稍微降低KMS的复杂性。
然而,这种方法的缺点是非常明显的。由于ACP已加密,因此必须先对其进行解密,然后才能查询或执行。这就引入了一些问题。首先,对密钥策略的查询可能会很昂贵,因为其仅在TEE中可用,并且需要将策略解密。其次,这种方法增加了密钥泄漏的风险,因为在查询或执行ACP时密钥本身也会被不必要地解密。第三,这种方法增加了特定类型攻击的风险,如拒绝服务(Denial-of-Service,DoS)攻击或旁路攻击,仅仅因为每当查询或执行ACP时都必须强制执行解密操作。
具有集中式策略数据库的KMS也很常见,其中KMS管理的所有密钥的所有访问策略都存储在一个中心位置,该位置可以是关系数据库、文件、目录,甚至是硬编码到软件中的规则。这些都可以定义为中央策略数据库(Central Policy Database,CPD),以区别于先前提到的现有技术方法,其中密钥的ACP被加密并与密钥一起存储。
在这种方法中,密钥及其策略应用单独的保护机制。例如,可以使用一个存储密钥对密钥材料进行加密,并且使用另一数据库密钥对策略数据库进行加密。对策略的查询和修改可以独立于加密密钥来完成。当应用请求执行加密操作时,可以查询和执行存储在数据库中的策略,而无需将密钥解密。
这种方法的一个主要问题是,中央策略数据库可能成为攻击目标,因此需要额外的保护工作。与将密钥的ACP加密并与密钥一起存储的方法相比,这种方法需要格外小心,以确保密钥的ACP不能被未经授权方修改,不能在不删除密钥的情况下意外或故意删除ACP,且不能与不同密钥的ACP进行交换。CPD还必须有回滚保护,以防止攻击者利用可能具有过时策略的旧版本数据库进行攻击。这些额外的保护可能会给***带来额外的复杂性和风险。
在KMS的许多实现方式中,都可以找到前面描述的两种方法的踪迹。换句话说,密钥的ACP的一部分可以与密钥本身一起存储和加密,而其它部分可以在中央策略数据库中找到。例如,根据一种实现方式,当密钥在加密时,将算法特定信息与密钥放在一起,但诸如应用标识之类的信息将保留在密钥之外。规则(例如定义应用只能访问其默认生成的密钥的规则)通常会硬编码到软件逻辑中。在这种实现方式中,除了先前提到的问题之外,密钥blob的解密和查询以及策略的执行都是独立的步骤,这会导致安全风险。
发明内容
目的是提供一种用于计算机上数据的安全密钥处理和加密处理的改进的方法和***。
上述目的是通过提供用于设计KMS的计算机实现的方法来实现的,所述方法确保密钥的ACP不能在KMS之外被修改或被另一个密钥的ACP替换,以免密钥无法使用,并且可以在不解密密钥的情况下完成ACP查询和执行。
所公开方法的主要思想是“加密后签名”,其中,应该首先使用加密密钥对应用密钥(application key,AK)进行加密,加密后的密钥与其ACP放在一起,然后使用签名密钥对结果进行签名。
上述和其它目的具体通过独立权利要求的特征来实现。其它实现方式在从属权利要求、说明书和附图中是显而易见的。
根据第一方面,提供了一种在计算机上实现的数据的安全密钥处理和加密处理的方法,所述方法包括:密钥管理***(Key Management System,KMS)从应用接收执行加密操作的请求,其中,所述请求包括对应用密钥(application key,AK)和上下文信息的引用;所述KMS在存储介质中检索密钥二进制类型的大对象(Binary Large Object,blob),其中,所述密钥blob包括密文C,对应于所述AK和访问控制策略(Access Control Policy,ACP),定义访问所述AK的规则;所述KMS基于所述上下文信息验证所述ACP;所述KMS使用经验证的ACP作为输入解密所述C以获取所述AK;所述KMS使用所获取的AK执行所请求的加密操作。
通过实现此方法来加密和解密数据,可以确保密钥的ACP无法在KMS外部修改。进一步确保该密钥不能被另一个密钥的ACP替换,以免密钥无法使用。第三个优点是可以使用此方法完成ACP查询和和执行,而无需解密密钥。
换句话说,所述方法能够在KMS中保护AK及其ACP,与现有技术相比,所述方法更加高效和安全。所述方法相对于现有技术的具体优点如下。ACP受完整性保护,但在存储中未加密。在解密密钥材料之前,会检查和执行ACP。密钥的ACP在解密密钥材料时用作参数,以便在不提供未修改的ACP的情况下无法解密密钥。无需解密密钥材料即可查询密钥的ACP。例如,这使得应用能够快速找到在特定场景下使用的正确密钥,而无需往返TEE进行解密,从而实现更好的性能。
因此,所述方法能够在KMS的密钥材料与其ACP之间实施强绑定,同时实现更好的性能和安全性,而无需维护中央策略数据库的任何额外成本。
所述方法的安全优势包括降低策略篡改或绕过的风险(策略以加密方式绑定到密钥),以及降低拒绝服务或旁路攻击的风险(减少到TEE的往返次数)。
在第一方面的一种可能的实现形式中,所述密钥blob中的所述C通过加密算法使用保护密钥(key encryption key,KEK)加密;其中,所述KMS使用经验证的ACP作为输入解密所述C以获取所述AK包括:所述KMS通过所述加密算法使用加密密钥解密所述C,所述加密密钥是与所述KEK相同的对称密钥或与所述KEK对应的非对称密钥对,并可由所述KMS在可信执行环境(Trusted Execution Environment,TEE)内独占访问,以获取所述AK。此方法能够在KMS的密钥材料与其ACP之间实施强绑定,同时在解密密钥材料时使用密钥的ACP作为参数,确保在不提供未修改的ACP的情况下无法解密密钥。
在第一方面的另一种可能的实现形式中,所述密钥blob中的所述C与所述ACP级联,使用密钥签名密钥(key signing key,KSK)对级联结果进行签名,使用签名算法获取签名,作为元组包括在所述密钥blob中;所述方法还包括:在解密所述C之前,所述KMS使用具有签名密钥的所述签名算法,根据所述级联验证所述密钥blob中的所述签名,所述签名密钥是与所述KSK相同的对称密钥或与KSK对应的非对称密钥对。这确保了在不解密密钥材料的情况下可以查询密钥的ACP,从而使得应用能够快速找到在特定场景下使用的正确密钥,而无需往返TEE进行解密,从而实现更好的性能。
实施例1
在第一方面的另一种可能的实现形式中,所述方法还包括:在所述计算机上提供至少一个存储密钥(Storage Key,SK),所述存储密钥可由所述KMS独占访问;其中,所述密钥blob中的所述C使用关联数据的鉴别加密(Authenticated Encryption withAssociated Data,AEAD)以及加密算法加密,所述加密算法具有从所述ACP和所述SK派生的KEK,所述ACP进一步用作相应的鉴别关联数据(Authenticated Associated Data,AAD);其中,所述密钥blob包括由所述AEAD加密算法生成的鉴别标签,其中,所述鉴别标签用作所述密钥blob中的签名;其中,所述KMS解密所述C包括:使用所述鉴别标签鉴别所述AAD;使用密钥派生函数(key derivation function,KDF)从所述ACP和所述SK派生所述KEK;使用所述AEAD加密算法,以所述ACP作为AAD,以所述KEK作为输入,以获取所述AK。
该实现方式对KMS实现的效果是,在生成或导入密钥到TEE时创建ACP,其中ACP受完整性保护,但不被KMS加密。此外,可以在不解密密钥数据的情况下执行访问控制策略。密钥的ACP在解密应用密钥时用作参数,以便在不提供未修改的访问控制策略的情况下无法解密密钥。最后,可以查询应用密钥的ACP,而无需解密实际密钥材料。例如,这使得应用能够快速找到在特定场景下使用的正确密钥,而无需往返TEE进行解密,从而实现更好的性能。
所述方法进一步确保与现有技术相比,ACP查询和实施可以更快地进行,在现有技术中,需要在策略可用之前执行密钥解密。
所述方法还提高了安全性。首先,所述方法可以更安全地抵御试图通过修改ACP或将一个密钥的策略切换为另一个密钥的策略来访问AK的攻击。其次,所述方法还可以更安全地抵御那些试图通过发送许多无效请求来降低KMS性能的攻击,这些请求将迫使KMS执行解密以进行ACP。此外,通过避免不必要的解密,所述方法还可以更安全地抵御旁路攻击,这些攻击试图在解密密钥时仅通过观察KMS的行为(例如时序和功耗)来了解有关密钥的信息。
在第一方面的另一种可能的实现形式中,所述方法还包括:在所述计算机上提供存储加密密钥(Storage Encryption Key,SEK)和/或存储签名密钥(Storage SigningKey,SSK),所述SEK和所述SSK中的每一个可由所述KMS独占访问;其中,所述KEK由所述KMS从所述SEK获取,或者,通过使用所述SEK作为KEK或者通过使用所述ACP作为输入参数从所述SEK派生所述KEK;其中,所述KSK由所述KMS从所述SSK获取,或者,通过使用所述SSK作为KSK或者通过使用所述ACP作为可选输入参数从所述SSK派生所述KSK。这确保了加密和解密的额外安全性以及比现有技术更好的性能。
在第一方面的另一种可能的实现形式中,所述SEK是不同的对称密钥;其中,所述KEK是由所述KMS使用第一密钥派生函数(key derivation function,KDF)从所述SEK派生的对称密钥,所述ACP作为输入参数;其中,所述密钥blob中的所述C通过对称加密算法使用所述KEK加密;其中,所述KMS解密所述C包括:使用所述第一KDF和所述ACP作为输入参数,从所述SEK派生KEK;通过所述对称加密算法使用所述KEK解密所述C,以获取所述AK。
总体而言,此方法在KMS中实现了AK与其ACP之间的强绑定,同时实现了更好的性能和安全性。所述方法还提高了安全性,可以更安全地抵御试图通过修改ACP或将一个密钥的策略切换为另一个密钥的策略来访问AK的攻击。
在第一方面的另一种可能的实现形式中,所述SEK是不同的对称密钥;其中,所述KEK是非对称密钥对,所述非对称密钥对包括由所述KMS使用第一密钥对派生函数(keypair derivation function,KPDF)从所述SEK派生的私钥和公钥,其中,所述ACP作为输入参数,所述第一KPDF用于从对称密钥中获取非对称密钥对;其中,所述密钥blob中的所述C通过非对称加密算法使用所述KEK的公钥KEK_pub加密;其中,所述KMS解密所述C包括:使用所述第一KPDF和所述ACP作为输入参数,从所述SEK派生所述KEK的私钥KEK_priv;通过所述非对称加密算法使用所述KEK_priv解密所述C,以获取所述AK。这确保了加密和解密的额外安全性以及比现有技术更好的性能。
在第一方面的另一种可能的实现形式中,所述SEK是包括私钥和公钥的非对称密钥对,所述私钥和公钥分别由所述KMS用作所述KEK的公钥KEK_pub和所述KEK的私钥KEK_priv;其中,所述密钥blob中的所述C通过非对称加密算法使用所述KEK_pub加密;其中,所述KMS解密所述C包括:通过所述非对称加密算法使用所述KEK_priv解密所述C,以获取所述AK。
对于这种非对称加密,公钥用于加密,私钥用于解密。公钥通常不需要保密。此外,不涉及密钥的派生步骤,从而提高了效率。
在第一方面的另一种可能的实现形式中,所述SSK是不同的对称密钥;其中,所述KSK是由所述KMS从所述SSK获取的对称密钥,或者通过使用所述SSK作为KSK,或者通过使用第二密钥派生函数(key derivation function,KDF)从所述SSK派生所述KSK,所述ACP作为输入参数;其中,通过对称签名算法使用所述KSK对所述密钥blob中的所述级联进行签名,以获取将作为元组包括在所述密钥blob中的签名;其中,所述KMS解密所述C包括,在使用所述KEK解密所述C之前:使用所述第二KDF或使用所述SSK作为KSK,从所述SSK获取KSK;使用所述对称签名算法根据与所述KSK的所述级联来验证所述密钥blob中的所述签名。
与现有技术相比,此方法可以使ACP查询和执行更快,在现有技术中,需要在策略可用之前执行密钥解密。所述方法还提高了安全性,因为可以更安全地抵御那些试图通过发送许多无效请求来降低KMS性能的攻击,这些请求将迫使KMS执行解密以进行ACP。此外,通过避免不必要的解密,所述方法还可以更安全地抵御旁路攻击,这些攻击试图在解密密钥时仅通过观察KMS的行为(例如时序和功耗)来了解有关密钥的信息。
在第一方面的另一种可能的实现形式中,第二KDF与第一KDF相同,简化了密钥派生步骤。
在第一方面的另一种可能的实现形式中,所述SSK是不同的对称密钥;其中,所述KSK是非对称密钥对,包括由所述KMS使用第二密钥对派生函数(key pair derivationfunction,KPDF)从所述SSK派生的私钥和公钥,所述ACP作为输入参数,所述第二KPDF用于从对称密钥中获取非对称密钥对;其中,通过非对称签名算法使用所述KSK的私钥KSK_priv对所述密钥blob中的所述级联进行签名;其中,所述KMS解密所述C包括,在使用所述KEK解密所述C之前:使用所述第二KPDF和所述ACP作为输入参数,从所述SSK派生所述KSK的公钥KSK_pub;使用所述非对称签名算法根据与所述KSK_pub的所述级联来验证所述密钥blob中的所述签名。
在将ACP作为输入参数派生KSK的替代方案中,所述方法提供了确保ACP查询和执行可以比现有技术更快的优点,在现有技术中需要在策略可用之前执行密钥解密。所述方法还提高了安全性。首先,所述方法可以更安全地抵御试图通过修改ACP或将一个密钥的策略切换为另一个密钥的策略来访问AK的攻击。其次,所述方法还可以更安全地抵御那些试图通过发送许多无效请求来降低KMS性能的攻击,这些请求将迫使KMS执行解密以进行ACP。此外,通过避免不必要的解密,所述方法还可以更安全地抵御旁路攻击,这些攻击试图在解密密钥时仅通过观察KMS的行为(例如时序和功耗)来了解有关密钥的信息。
在不涉及ACP且KSK的公钥在REE中始终可用的替代方案中,所述方法提供了能够使用SSK的公钥(KSK)验证存储数据(即ACP和加密的AK)的完整性的优点,该公钥不需要保密,可以在REE中提供。这样,可以在需要时检查任何ACP修改,而无需往返TEE。
在第一方面的另一种可能的实现形式中,第二KPDF与第一KPDF相同,简化了密钥对派生步骤。
在第一方面的另一种可能的实现形式中,所述SSK是包括私钥和公钥的非对称密钥对,所述私钥和公钥分别由所述KMS用作所述KSK的公钥KSK_pub和所述KSK的私钥KSK_priv;其中,通过非对称签名算法使用所述KSK_priv对所述密钥blob中的所述级联进行签名;其中,所述KMS解密所述C包括,在使用所述KEK解密所述C之前:使用所述非对称签名算法根据与所述KSK_pub的所述级联来验证所述密钥blob中的所述签名。
对于非对称签名,私钥用于签名,公钥用于验证。公钥通常不需要保密。此外,与前两个示例性实施例相比,本示例性实施例不涉及密钥派生步骤。
此外,由于存储的数据使用非对称数字签名算法进行签名,因此可以使用SSK的公钥验证存储的数据(即ACP和加密的AK)的完整性,SSK的公钥不必保密,可以在REE中提供。这样,就可以在需要时检查ACP是否已修改,而无需往返TEE。此外,由于完整性检查也可以在REE 5中进行,因此策略查询和执行的结果可以更加可信,因为如果策略被篡改,可以在REE 5中尽早检测到。
实施例2
在第一方面的另一种可能的实现形式中,所述方法还包括:在所述计算机上提供至少一个存储加密密钥(Storage Encryption Key,SEK)和至少一个存储签名密钥(Storage Signing Key,SSK),所述SEK和所述SSK中的每一个为可由所述KMS独占访问的不同对称密钥;其中,所述密钥blob中的所述C通过对称加密算法使用保护密钥(keyencryption key,KEK)加密;所述KEK是使用第一密钥派生函数(key derivationfunction,KDF)从所述SEK派生的对称密钥,所述ACP作为输入参数;所述密钥blob中的所述C与所述ACP级联,使用密钥签名密钥(key signing key,KSK)对级联结果进行签名,使用对称签名算法获取签名T,作为元组包括在所述密钥blob中;所述KSK是与所述SSK相同的对称密钥,或者是使用第二密钥派生函数(key derivation function,KDF)从所述SSK派生的对称密钥;其中,所述KMS解密所述C包括,使用所述第二KDF或使用所述SSK作为KSK,从所述SSK获取KSK;使用所述对称签名算法根据与所述KSK的所述级联来验证所述密钥blob中的所述签名;使用所述第一KDF和所述ACP作为输入参数,从所述SEK派生KEK;通过所述对称加密算法使用所述KEK解密所述C,以获取所述AK。
与现有技术相比,此方法可以使ACP查询和执行更快,在现有技术中,需要在策略可用之前执行密钥解密。所述方法还提高了安全性,可以更安全地抵御试图通过修改ACP或将一个密钥的策略切换为另一个密钥的策略来访问AK的攻击。其次,所述方法还可以更安全地抵御那些试图通过发送许多无效请求来降低KMS性能的攻击,这些请求将迫使KMS执行解密以进行ACP。此外,通过避免不必要的解密,所述方法还可以更安全地抵御旁路攻击,这些攻击试图在解密密钥时仅通过观察KMS的行为(例如时序和功耗)来了解有关密钥的信息。
实施例3
在第一方面的另一种可能的实现形式中,所述KEK和所述KSK两者是不同的包括私钥和公钥的非对称密钥对,每个私钥可由所述KMS在在可信执行环境(Trusted ExecutionEnvironment,TEE)内独占访问,每个公钥可在所述TEE外部访问;所述密钥blob中的所述C通过非对称加密算法使用所述KEK的公钥KEK_pub加密;其中,通过非对称签名算法使用所述KSK的私钥KSK_priv对所述密钥blob中的所述级联进行签名;其中,所述KMS解密所述C包括,使用所述非对称签名算法根据与所述KSK的公钥KSK_pub的所述级联来验证所述密钥blob中的所述签名;通过所述非对称加密算法使用所述KEK的私钥KEK_priv解密所述C,以获取所述AK。
使用这种方法,由于存储的数据使用非对称数字签名算法进行签名,因此可以使用SSK的公钥验证存储的数据(即ACP和加密的AK)的完整性,SSK的公钥不必保密,可以在REE中提供。这样,可以在需要时检查任何ACP修改,而无需往返TEE。此外,由于完整性检查也可以在REE中进行,因此策略查询和执行的结果可以更加可信,因为如果策略被篡改,可以在REE中尽早检测到。
实施例4
在第一方面的另一种可能的实现形式中,所述方法还包括:在所述计算机上提供至少一个存储加密密钥(Storage Encryption Key,SEK)和至少一个存储签名密钥(Storage Signing Key,SSK),所述SEK和所述SSK中的每一个为可由所述KMS独占访问的不同对称密钥;其中,所述KEK的公钥KEK_pub,以及所述KEK的私钥KEK_priv都是使用第一密钥对派生函数(key pair derivation function,KPDF)从所述SEK派生的,其中所述ACP作为输入参数,所述第一KPDF用于从对称密钥中获取非对称密钥对;其中,所述KSK的公钥KSK_pub,以及所述KSK的私钥KSK_priv都是使用第二密钥对派生函数(key pairderivation function,KPDF)从所述SSK派生的,所述ACP作为可选输入参数。
在将ACP作为输入参数派生KSK的替代方案中,所述方法提供了确保ACP查询和执行可以比现有技术更快的优点,在现有技术中需要在策略可用之前执行密钥解密。所述方法还提高了安全性。首先,所述方法可以更安全地抵御试图通过修改ACP或将一个密钥的策略切换为另一个密钥的策略来访问AK的攻击。其次,所述方法还可以更安全地抵御那些试图通过发送许多无效请求来降低KMS性能的攻击,这些请求将迫使KMS执行解密以进行ACP。此外,通过避免不必要的解密,所述方法还可以更安全地抵御旁路攻击,这些攻击试图在解密密钥时仅通过观察KMS的行为(例如时序和功耗)来了解有关密钥的信息。
在不涉及ACP且KSK的公钥在REE中始终可用的替代方案中,所述方法提供了能够使用SSK的公钥(KSK)验证存储数据(即ACP和加密的AK)的完整性的优点,该公钥不需要保密,可以在REE中提供。这样,可以在需要时检查任何ACP修改,而无需往返TEE。
在第一方面的另一种可能的实现形式中,所述KSK的私钥KSK_priv可由所述KMS在可信执行环境(Trusted Execution Environment,TEE)内独占访问;所述KSK的公钥KSK_pub可在所述TEE外部访问,例如可由在富执行环境(Rich Execution Environment,REE)中运行的应用访问。这样一来,可以最小化需要在TEE中运行的代码,并且也可以减少从REE对TEE中代码的调用次数。
在第一方面的另一种可能的实现形式中,所述KEK的私钥KEK_priv可由所述KMS在可信执行环境(Trusted Execution Environment,TEE)内独占访问;所述KEK的公钥KEK_pub可在所述TEE外部访问,例如可由在富执行环境(Rich Execution Environment,REE)中运行的应用访问。这样一来,可以最小化需要在TEE中运行的代码,并且也可以减少从REE对TEE中代码的调用次数。
在第一方面的另一种可能的实现形式中,所述请求涉及对应用数据进行加密处理;所述请求包括待处理的应用数据;所述KMS使用所获取的AK执行所请求的加密操作包括:所述KMS使用所述AK对所述应用数据进行加密处理;所述方法还包括:所述KMS将处理后的应用数据发送到所述应用。所述方法使得加密处理应用数据成为可能,同时为数据加密和解密提供了优势。
在第一方面的另一种可能的实现形式中,所述请求涉及修改访问AK的规则;所述方法还包括由所述KMS执行的步骤:基于检索到的密钥blob中的所述ACP,验证得出允许修改访问所述AK的规则;基于所述请求构建修改后的ACP;所述KMS使用所获取的AK执行所请求的加密操作包括:使用修改后的ACP作为输入参数加密所述AK,以生成新密文C2;生成包括所述新密文C2和所述修改后的ACP的修改后的密钥blob;在所述存储介质中用所述修改后的密钥blob替换所述检索到的密钥blob。所述方法使得修改AK的ACP成为可能,同时为数据加解密提供了优势。
在第一方面的另一种可能的实现形式中,所述请求涉及删除AK;其中,所述方法还包括由所述KMS执行的步骤:基于所述检索到的密钥blob中的所述ACP,验证允许请求应用删除所述AK;所述KMS使用所获取的AK执行所请求的加密操作包括:如果使用所述ACP对所述C的解密成功,从所述存储介质中移除所述检索到的密钥blob,并从任何临时存储介质中清除任何解密的内容。所述方法使得从存储以及任何临时存储中移除AK成为可能,同时为数据加密和解密提供了优势。
根据第二方面,提供了一种在计算机上实现的数据的安全密钥处理和加密处理的方法,其特征在于,所述方法包括:密钥管理***(Key Management System,KMS)从应用接收请求,所述请求包括对至少一个应用密钥(application key,AK)以及每个AK的相应访问控制策略(Access Control Policy,ACP)中定义的任何相应访问规则的查询;其中,所述方法还包括由所述KMS执行的步骤:所述KMS在存储介质中检索密钥blob,所述密钥blob包括密文C,对应于所述至少一个AK和相应的ACP;从所述检索到的密钥blob中提取所述ACP;对所述提取到的ACP执行所述请求的查询。此方法能够执行ACP查询,同时提供了数据加密和解密方面的优势,特别是可以在不解密密钥材料的情况下查询密钥的ACP。例如,这使得应用能够快速找到在特定场景下使用的正确密钥,而无需往返TEE进行解密,从而实现更好的性能。
根据第三方面,提供了一种用于数据的安全密钥处理和加密处理的基于计算机的***,所述***包括:可信执行环境(Trusted Execution Environment,TEE);富执行环境(Rich Execution Environment,REE);用于在所述REE中执行的应用;存储介质,用于存储至少一个密钥blob,每个密钥blob包括密文C和相应的访问控制策略(Access ControlPolicy,ACP);密钥管理***(Key Management System,KMS),用于从所述应用接收执行加密操作的请求,其中,所述请求包括对应用密钥(application key,AK)和上下文信息的引用;所述KMS用于响应于所述请求,从对应于所述AK的所述存储介质中检索密钥blob;基于所述上下文信息验证所述检索到的密钥blob中的所述ACP;使用经验证的ACP作为输入解密所述C以获取所述AK;根据第一方面或第二方面的任意一种可能的实现形式的方法,使用生成的AK执行所述请求的加密操作。
通过提供这种用于加密和解密数据的基于计算机的***,可以确保密钥的ACP不能在KMS之外修改。进一步确保该密钥不能被另一个密钥的ACP替换,以免密钥无法使用。第三个优点是可以使用此方法完成ACP查询和和执行,而无需解密密钥。
换句话说,所述***能够在KMS中保护AK及其ACP,与现有技术相比,所述方法更加高效和安全。所述方法相对于现有技术的具体优点如下。ACP受完整性保护,但在存储中未加密。在解密密钥材料之前,会检查和执行ACP。密钥的ACP在解密密钥材料时用作参数,以便在不提供未修改的ACP的情况下无法解密密钥。无需解密密钥材料即可通过所述***查询密钥的ACP。例如,这使得应用能够快速找到在特定场景下使用的正确密钥,而无需往返TEE进行解密,从而实现更好的性能。
因此,所述***能够在KMS的密钥材料与其ACP之间实施强绑定,同时实现更好的性能和安全性,而无需维护中央策略数据库的任何额外成本。
所述***的安全优势包括降低策略篡改或绕过的风险(策略以加密方式绑定到密钥),以及降低拒绝服务或旁路攻击的风险(减少到TEE的往返次数)。另一个优点是,可以最小化需要在TEE中运行的代码,并且也可以减少从REE对TEE中代码的调用次数。
在第三方面的一种可能的实现形式中,所述KMS用于从所述应用接收请求,所述请求涉及对应用数据进行加密处理;所述请求包括待处理的应用数据;所述KMS还用于:所述KMS使用所述AK对所述应用数据进行加密处理;将处理后的应用数据发送到所述应用。所述***使得加密处理应用数据成为可能,同时为数据加密和解密提供了优势。
在第三方面的另一种可能的实现形式中,所述KMS用于从所述应用接收请求,所述请求涉及修改访问AK的规则;所述KMS还用于:基于检索到的密钥blob中的所述ACP,验证得出允许修改访问所述AK的规则;基于所述请求构建修改后的ACP;使用修改后的ACP作为输入参数加密所述AK,以生成新密文C2;生成包括所述新密文C2和所述修改后的ACP的修改后的密钥blob;在所述存储介质中用所述修改后的密钥blob替换所述检索到的密钥blob。所述***使得修改AK的ACP成为可能,同时为数据加解密提供了优势。
在第三方面的另一种可能的实现形式中,所述***还包括临时存储介质;其中,所述KMS用于从所述应用接收请求,所述请求涉及删除AK;其中,所述KMS还用于:基于所述检索到的密钥blob中的所述ACP,验证得出允许请求应用删除所述AK;如果使用所述ACP对所述C的解密成功,从所述存储介质中移除所述检索到的密钥blob;从临时存储介质(例如存储器)中清除任何解密的内容。此配置使得从存储以及任何临时存储中移除AK成为可能,同时为数据加密和解密提供了优势。
根据第四方面,提供了一种用于数据的安全密钥处理和加密处理的基于计算机的***,所述***包括:可信执行环境(Trusted Execution Environment,TEE);富执行环境(Rich Execution Environment,REE);用于在所述REE中执行的应用;存储介质,可由密钥管理***(Key Management System,KMS)访问,用于存储至少一个密钥blob,每个密钥blob包括密文C和相应的访问控制策略(Access Control Policy,ACP);所述KMS用于:从所述应用接收请求,所述请求包括对至少一个应用密钥(application key,AK)和在每个AK的相应ACP中定义的任何相应访问规则的查询;响应于所述请求:从所述存储介质中检索密钥blob,所述密钥blob包括密文C,对应于所述至少一个AK和相应的ACP;从所述检索到的密钥blob中提取所述ACP;对所述提取到的ACP执行所述请求的查询。
此***能够执行ACP查询,同时提供了数据加密和解密方面的优势,特别是可以在不解密密钥材料的情况下查询密钥的ACP。例如,这使得应用能够快速找到在特定场景下使用的正确密钥,而无需往返TEE进行解密,从而实现更好的性能。
这些和其它方面在下文描述的一个或多个实施例中是显而易见的。
附图说明
在本发明的以下详述部分中,将结合附图中所示的示例性实施例来更详细地说明各方面、实施例和实现方式,其中:
图1A示出了根据现有技术示例的组合加密方法的示意图;
图1B示出了根据现有技术的另一个示例的使用中央策略数据库的加密方法的示意图;
图2示出了根据现有技术的另一个示例的典型密钥访问方法的流程图;
图3示出了根据本发明第一方面的示例的用于数据的安全密钥处理和加密处理的方法的流程图;
图4示出了根据本发明第三和第四方面的示例的用于数据的安全密钥处理和加密处理的基于计算机的***的框图;
图5示出了根据本发明第一方面的示例的加密应用密钥的流程图;
图6示出了根据本发明第一方面的示例的解密应用密钥的流程图;
图7示出了根据本发明第一方面的另一个示例的加密应用密钥的流程图;
图8示出了根据本发明第一方面的另一个示例的解密应用密钥的流程图;
图9示出了根据本发明第一方面的示例的派生和使用保护密钥的流程图;
图10示出了根据本发明第一方面的示例的派生和使用密钥签名密钥的流程图;
图11A和图11B示出了根据本发明第一方面的进一步示例的从对称密钥派生保护密钥和密钥签名密钥的非对称密钥对的流程图;
图12A和图12B示出了根据本发明第一方面的进一步示例的从非对称密钥对派生保护密钥和密钥签名密钥的非对称密钥对的流程图;
图13示出了根据本发明第一方面的示例的总结应用密钥加密和解密的可能流程的流程图;
图14示出了根据本发明第一方面的示例,在根据本发明第三方面的示例的基于计算机的***上处理应用数据的流程图;
图15示出了根据本发明第一方面的示例,在根据本发明第三方面的示例的基于计算机的***上删除应用密钥的流程图;
图16示出了根据本发明第一方面的示例,在根据本发明第三方面的示例的基于计算机的***上修改应用密钥的访问控制策略的流程图;
图17示出了根据本发明第二方面的示例的方法,在根据本发明第四方面的示例的基于计算机的***上处理对访问控制策略的查询的流程图。
具体实施方式
本发明的目的是描述用于密钥管理***(Key Management System,KMS)内的应用密钥(application key,AK)和访问控制策略(access control policy,ACP)保护的改进方法和***。一些实现方式和其它细节没有明确公开,因为成熟的KMS设计和实现方式是复杂的,并且许多细节超出了本发明的范围。例如,KMS可以利用本地存储服务提供的其它安全功能,如回滚预防、卷/磁盘加密、数据库加密等。这些功能应用于补充此处描述的方法,而非作为替代。
需要注意的是,KMS也可以用于保护其它用户秘密,例如信用***和密码。这些用例本质上与加密密钥的情况没有什么不同。尽管所公开的示例仅涉及加密密钥的保护,但是应当理解,所公开的方法和***可以容易地应用于其它类型的秘密。
图1A、图1B和图2示出了根据现有技术的加密方法。
具体地,图1A示出了根据现有技术的组合加密方法的示意图,其中KMS将密钥的ACP与密钥本身放在一起,并使用存储密钥对该结果进行加密。使用此方法时,对特定密钥的所有密钥管理操作都会影响该密钥及其策略,因为它们是一起加密的。因此,当密钥blob的加密不是由KMS本身完成的,而是由底层操作***作为安全存储服务提供时,通常会使用此现有技术方法。通过分离数据加密步骤,可以稍微降低KMS的复杂性。
图1B示出了根据现有技术的另一个示例的使用中央策略数据库的加密方法的示意图,其中,KMS管理的所有密钥的所有访问策略都存储在一个中心位置,该位置可以是关系数据库、文件、目录,甚至是硬编码到软件中的规则,这些都可以定义为中央策略数据库(Central Policy Database,CPD)。
图2示出了根据现有技术的另一个示例的典型密钥访问方法的流程图,其中可以找到前述两种方法的痕迹,即密钥的ACP的一部分可以与密钥本身一起存储和加密,而其它部分可以在中央策略数据库中找到。规则(例如应用只能访问其默认生成的密钥)通常会硬编码到软件逻辑中。图2示出了当使用混合方法时执行加密操作所要采取的步骤。具体地,密钥blob的解密和查询以及策略的执行都是独立的步骤,这会导致安全风险。
图3示出了根据本发明的一个示例的安全密钥处理方法的核心步骤,所述方法在基于计算机的***上实现,例如图4中所示的***100。在本发明的各实施例中,计算机可以是固定计算机(固定设备),例如工作站或台式计算机,或便携式计算机(移动设备),例如笔记本电脑、平板电脑、智能手机、移动电话等。术语“便携式”和“移动”可以用作同义词。基于计算机的***可以是单个计算机、计算机的组合、或者计算机与其它类型的设备的组合。计算机包括处理器和存储指令的存储介质,所述指令可以由处理器读取并执行以控制基于计算机的***执行本发明实施例中所描述的功能/步骤。
需要注意的是,下面公开的方法包括三个主要阶段或功能,即加密、解密和查询。用于密钥派生、签名和加密的实际加密算法可以根据所使用的计算设备的能力和其它考虑因素来选择。下面将给出详细的示例性实施例,其中还讨论了确定KEK 16和KSK 17的实际方法。
因此,图3示出了根据本发明的KMS2对加密应用密钥6的解密。
在第一步骤101中,KMS2从应用1接收执行加密操作的请求20。请求20可以包括对AK 6的引用21以及上下文信息22等。
在第二步骤102中,KMS2在存储介质3中检索密钥blob 7。密钥blob 7包括对应于AK 6的密文(C)8和定义访问AK 6的规则的ACP 9。
在第三步骤103中,KMS2基于上下文信息22验证ACP 9。
如果验证成功,则在第四步骤104中,KMS2通过使用经验证的ACP 9作为输入来解密C 8以获取AK 6。
在最后步骤105中,使用所获取的AK 6执行所请求的加密操作。
图4示出了根据本发明的一个示例的用于数据的安全密钥处理和加密处理的基于计算机的***100的主要组件的框图。基于计算机的***100可以是计算设备,例如智能手机、平板电脑、智能电视或允许应用运行的任何设备。
该***还包括可信执行环境(Trusted Execution Environment,TEE)4;富执行环境(Rich Execution Environment,REE)5;用于在REE 5中执行的应用1;可在REE 5中访问的存储介质3;密钥管理***(Key Management System,KMS)2,用于从应用1接收执行加密操作的请求,以及响应于请求,从存储介质3中检索密钥blob 7。
应用1是托管在计算设备上的软件组件,可以由设备供应商或第三方提供。
KMS2是托管在计算设备上的子***,用于向应用1提供密钥管理服务。其可以包括设备中各种软件和硬件子组件的组合。
KMS2软件中最关键的组件(有时称为可信应用)仅在TEE 4中运行,因此该软件更可信,并受到TEE的保护,免受恶意或意外修改的影响。TEE 4还提供了只能由KMS2的可信应用访问的存储密钥(Storage Key,SK)13。具体地,存储密钥13是计算设备专门向KMS2提供的加密密钥。只有同一计算设备上的KMS2才能访问这些密钥。这些密钥可以存储在安全存储区域中,以便KMS2可以直接访问这些密钥,或者可以由底层操作***通过API提供。
第三,TEE 4可以提供加密加速器27,其允许KMS2以更安全、更高效的方式执行加密操作。加密加速器27是以有效的方式执行加密操作的硬件组件。这些加速器27可由KMS2使用。
该***100确保了对密钥材料的保护,使得其不能从REE 5直接访问,并且可以通过ACP 9中定义的访问密钥的规则来控制对密钥的访问。密钥的ACP 9的一部分可以由拥有密钥的应用1指定,一部分可以由操作***或TEE 4指定。部分(如果不是全部)ACP 9在TEE4中执行,以最大程度地减少KMS2的攻击面。
与REE 5相比,设备的TEE 4通常要慢得多,计算能力也较低,并且REE 5和TEE 4之间的切换需要时间。此外,更多的代码可能意味着更多的错误和漏洞。因此,本发明的目的是最小化需要在TEE 4中运行的代码,并最小化从REE 5到TEE 4中代码的调用次数。
图5示出了本发明所公开的方法背后的核心“加密后签名”思想,其中AK 6应首先使用保护密钥(Key Encryption Key,KEK)16通过加密算法进行加密,以获取密文(C)8。
KEK 16可以使用AK 6的ACP 9从存储加密密钥(Storage Encryption Key,SEK)14派生。然后将加密数据(即密文(C)8)与ACP 9的二进制表示级联,我们将级联结果表示为10ACP||C,其中双竖线表示二进制级联。5.级联结果10由密钥签名密钥(Key Signing Key,KSK)17通过签名算法进行签名,以获取数字签名11:
T=Sign(ACP||C,KSK)
KSK 17可以使用AK 6的ACP 9从存储签名密钥(Storage Signing Key,SSK)15派生。当SEK 14和SSK 15是对称密钥时,SEK 14和SSK 15可以是相同的,或者可以从存储密钥(Storage Key,SK)13派生。加密阶段的输出是元组12(ACP、C、T)。
实际上,KMS2应该将元组12中的所有数据编码并存储在相同位置处,例如在文件***中的同一文件中,或在数据库表的同一记录中。SEK 14和SSK 15中的每一个都可由KMS2独占访问。
图6示出了根据本发明的一个示例的解密C 8的流程图。解密阶段的输入包括:加密密钥(C)8、ACP 9、数字签名11、存储加密密钥SEK 14和存储签名密钥SSK 15。当SEK 14和SSK 15是对称密钥时,SEK 14和SSK 15可以是相同的,或者可以从存储密钥(Storage Key,SK)13派生。遵循以下步骤。
首先,根据AK 6的ACP 9使用SEK 14确定KEK 16。然后,使用根据SSK 15和ACP 9确定的密钥KSK 17,根据级联10ACP||C验证数字签名11。使用KEK 16解密加密密钥(C)8以获取AK 6。
实际上,KMS2应该从与加密阶段中使用的相同的存储位置检索元组12(ACP、C、T)并将其作为输入提供给解密阶段。使用的加密算法应与加密阶段的加密算法相匹配。
实施例1
图7示出了根据本发明的一个示例的加密应用密钥的流程图。在该示例性实施例中,SEK 14和SSK 15是相同的对称密钥,即存储密钥(Storage Key,SK)13,可由KMS2独占访问。
为了加密密钥blob 7中的C 8,在本示例中,使用关联数据的鉴别加密(Authenticated Encryption with Associated Data,AEAD)的加密算法,通过密钥派生函数(key derivation function,KDF)18,例如HKDF,从SK 13和ACP 9派生KEK 16。常见的AEAD加密算法示例包括AES-GCM、AES-CCM、Chacha20-Poly1305等。
AK 6通过AEAD算法使用KEK 16进行加密,其中ACP 9也用作AEAD加密算法的鉴别关联数据(Authenticated Associated Data,AAD)。结果是一个元组:
(C,Ta)=EncAEAD(AK、ACP、KEK)。
其中C表示加密结果的密文8,Ta 11A表示用于保护数据完整性的鉴别标签。
加密阶段的输出是元组12(ACP、C、T),其中ACP 9为AAD,作为鉴别标签的Ta11A用作密钥blob 7中的签名T11。
作为加密阶段的结果生成的AEAD加密blob应由KMS2存储在与单个数据相同的位置。
尽管可以使用非对称密钥对作为SK 13来计算加密和数字签名,但在密码学和信息安全领域,这通常被认为是不安全的做法。因此,我们在本发明中不考虑此选项。
图8示出了先前示例性实施例的解密阶段,其中首先使用与加密阶段相同的KDF18从SK 13和ACP 9派生KEK 16。通过与加密阶段相同的AEAD算法使用KEK 16解密密文C 8,其中ACP 9用作AAD。结果是密钥AK 6,其中
AK=DecAEAD(C、T、ACP、KEK),
或指示失败的错误。
因此,解密阶段的输出是应用密钥AK 6。
实施例2
图9和图10示出了根据本发明的另一个示例的用于加密和解密AK 6的密钥派生的不同步骤。
在本示例性实施例中,SEK 14和SSK 15是不同的对称密钥,其中SEK 14支持诸如AES的对称加密算法,SSK 15支持诸如HMAC的对称签名算法。
对于密钥加密,如图9所示,使用诸如HKDF的第一密钥派生函数(key derivationfunction,KDF)181从SEK 14和ACP 9派生保护密钥(Key Encryption Key,KEK)16。通过对称加密算法(例如AES)使用KEK 16对AK 6进行加密,以获取密文C 8。
如图10所示,然后通过对称签名算法(例如HMAC)使用KSK 17对级联10(ACP||C)进行签名,以获取签名T。KSK 17可以通过第二密钥派生函数(key derivation function,KDF)182从SSK 15和ACP 9派生,其可以与用于派生KEK 16的第一密钥派生函数(keyderivation function,KDF)181相同或不同。如果省略此步骤,则可以直接使用SSK 15作为KSK 17。加密阶段的输出是一个元组(ACP、C、T)。
图9至图10进一步示出了根据本发明的上述示例的解密阶段。如前所述,通过第二KDF 182(与加密阶段相同)从SSK 15和ACP 9派生KSK 17。如果在加密过程中省略了KSK 17的派生步骤,则直接使用SSK 15作为KSK 17。接下来,通过在加密阶段使用的相同对称签名算法,根据级联10(ACP||C)验证元组12的签名T11。通过与加密阶段相同的第一KDF 181从SEK 14和ACP 9派生KEK 16。然后,通过与加密阶段使用的相同对称加密算法,使用KEK 16解密密文C 8,以获取AK 6或指示失败的错误。解密阶段的输出是应用密钥AK 6。
在上述示例性实施例中,SEK 14和SSK 15是不同的对称密钥,其中SEK 14支持对称加密算法,SSK 15支持对称签名算法。如上所述,可以从SEK 14派生对称密钥KEK 16,从SSK 15派生对称密钥KSK 17。然而,在进一步的示例性实施例中,SEK和SSK以及KEK和KSK都可以是非对称密钥对。
实施例4
图11A和图11B示出了根据本发明的进一步示例,通过密钥对派生函数分别从不同对称密钥SEK 14和SSK 15派生非对称密钥对KEK 16和KSK 17的流程图。在本示例性实施例中,KEK 16和KSK 17是不同的非对称密钥对。例如,KEK/KSK可以是RSA密钥对、椭圆曲线(Elliptic Curve,EC)密钥对或数字签名算法(Digital Signature Algorithm,DSA)密钥对。这两个密钥不必是同一类型。存储密钥SEK 14和SSK 15是对称密钥,其中KEK 16和KSK17是通过应用特殊的密钥派生算法获取的,该算法能够从对称密钥派生出非对称密钥对(首先是私钥,然后是根据私钥计算的公钥)。我们将这种密钥派生算法称为密钥对派生函数(Key Pair Derivation Function,KPDF),以区别于先前示例性实施例中提到的那些算法。KPDF的实际设计不在本发明的范围内,其取决于要使用的非对称加密算法和数字签名算法的类型。
对于加密,使用第一KPDF 191从SEK 14和ACP 9派生包括KEK 16的公钥KEK_pub161和KEK 16的私钥KEK_priv 162的密钥对,如图11A所示。
通过第二KPDF 192,并且可选地还使用ACP 9作为输入,从SSK 15派生包括KSK 17的公钥KSK_pub 171和KSK 17的私钥KSK_priv 172的密钥对,如图11B所示。第二KPDF 192可以与上一步中使用的第一KPDF 191相同,也可以不相同。如果不涉及ACP 9,则KSK 17的密钥对对于所有密钥将保持相同。
图13(上半部分,从左到右)示出了本示例性实施例的加密阶段,其中,通过SEK 14支持的非对称加密算法使用KEK 16的公钥KEK_pub 161对AK 6进行加密,以获取密文C8.然后通过非对称签名算法使用KSK的私钥KSK_priv 172对级联10(ACP||C)进行签名,以获取签名T11。加密阶段的输出是元组12(ACP、C、T)。
对于解密,如图13(上半部分,从右到左)所示,首先通过第二KPDF 192,并且可选地还使用ACP 9作为输入,从SSK 15派生包括KSK 17的公钥KSK_pub 171和KSK 17的私钥KSK_priv 172的密钥对,如图11B所示。第二KPDF 192可以与前一步骤中使用的相同,也可以不相同。如果不涉及ACP 9,则KSK 17的密钥对对于所有密钥将保持相同。然后,可以使用在加密阶段使用的相同非对称签名算法,根据与KSK 17的公钥KSK_pub 171的级联10(ACP||C)验证元组12的签名T11。
接下来,使用第一KPDF 191从SEK 14和ACP 9派生包括KEK 16的公钥KEK_pub161和KEK 16的私钥KEK_priv 162的密钥对,如图11A所示。然后,通过与加密阶段相同的非对称加密算法,使用KEK 16的私钥KEK_priv 162解密密文C 8,以获取AK 6或者指示失败的错误。解密阶段的输出是应用密钥AK 6。
实施例3
图12A和图12B示出了根据本发明的另一个示例,分别从非对称密钥对SEK 14和SSK 15中确定非对称密钥对KEK 16和KSK 17的流程图。在本示例性实施例中,SEK 14和SSK15是不同的非对称密钥对。例如,SEK/SSK可以是RSA密钥对、椭圆曲线(Elliptic Curve,EC)密钥对或数字签名算法(Digital Signature Algorithm,DSA)密钥对。这两个密钥不必是同一类型。
在这种情况下,保护密钥(key encryption key,KEK)16与SEK 15相同,密钥签名密钥(key signing key,KSK)17与SSK 15相同。具体地,SEK 14是包括私钥和公钥的非对称密钥对,该私钥和公钥分别由KMS2用作KEK 16的公钥KEK_pub 161和KEK 16的私钥KEK_priv 162。类似地,SSK 15是包括私钥和公钥的非对称密钥对,该私钥和公钥分别由KMS2用作KSK 17的公钥KSK_pub 171和KSK 17的私钥KSK_priv 172。
图13(上半部分,从左到右)示出了本示例性实施例的加密和解密阶段。对于加密,通过SEK 14支持的非对称加密算法使用KEK 16的公钥KEK_pub 161对AK 6进行加密,以获取密文C 8.然后通过非对称签名算法使用KSK 17的私钥KSK_priv 172对级联10(ACP||C)进行签名,以获取签名T11。加密阶段的输出是元组12(ACP、C、T)。
对于解密,如图13(上半部分,从右到左)所示,使用在加密阶段使用的相同非对称签名算法,根据与KSK 17的公钥KSK_pub 171的级联10(ACP||C)验证元组12的签名T11。接下来,通过与加密阶段相同的非对称加密算法,使用KEK 16的私钥KEK_priv 162解密密文C8,以获取AK 6或者指示失败的错误。解密阶段的输出是应用密钥AK 6。
换句话说,每个密钥对都由公钥和私钥组成。对于非对称加密,公钥用于加密,私钥用于解密。对于非对称签名,私钥用于签名,公钥用于验证。公钥通常不需要保密。此外,与前两个示例性实施例相比,本示例性实施例不涉及密钥派生步骤。
此外,由于存储的数据使用非对称数字签名算法进行签名,因此可以使用与KSK17的公钥KSK_pub 171相同的SSK 15的公钥验证存储的数据(即ACP 9和加密的AK 6)的完整性,SSK的公钥不必保密,可以在REE 5中提供。这样,就可以在需要时检查ACP 9是否已修改,而无需往返TEE 4。这不能在先前的示例性实施例中完成。由于完整性检查也可以在REE5中进行,因此策略查询和执行的结果可以更加可信,因为如果策略被篡改,可以在REE 5中尽早检测到。
密钥类型和参数的选择可能取决于各种因素,例如对某些算法的硬件支持、法规和合规性要求、算法限制(例如,某些类型的密钥只能用于计算数字签名)、性能考虑等等。
实施例2-8
图13示出了总结AK 6的加密和解密的可能流程的流程图,涵盖上述公开的示例和进一步可能的替代方案,在加密或解密阶段中的一个或两个阶段使用不同的对称密钥或非对称密钥对。
总结到目前为止提出的示例性实施例,变化集中于SEK 14和SSK 15的类型、其是对称的还是非对称的以及如何能够从其中获取KEK 16和KSK 17。具体地,讨论了以下组合:
示例1:SEK 14和SSK 15相同且对称。KEK 16和KSK 17是使用KDF 18派生的对称密钥(图7和图8)。
示例2:SEK 14和SSK 15是不同的对称密钥。KEK 16和KSK 17是使用第一KDF 181和第二KDF 182派生的对称密钥(图9和图10)。
示例3:SEK 14和SSK15是不同的非对称密钥对,与KEK 16和KSK 17相同(图12A和图12B)。
示例4:SEK和SSK是不同的对称密钥。KEK和KSK是使用KPDF派生的非对称密钥对(图11A和图11B)。
根据上述情况,可以容易地看出,存在如下更多变化,不需要详述加密和解密阶段,因为其与已经描述的一些示例性实施例相同。
示例5:SEK 14是对称密钥,SSK 15是非对称密钥对。KEK 16是通过第一KDF 181使用SEK 14派生的对称密钥。KSK 17与SSK 15相同。
示例6:SEK 14是对称密钥,SSK 15是非对称密钥对。KEK 16是通过第一KPDF 191使用SEK 14派生的非对称密钥对。KSK 17与SSK 15相同。
示例7:SEK 14是非对称密钥对,SSK 15是对称密钥。KEK 16与SEK 14相同。KSK 17与SSK 15相同,或者是通过第二KDF 182使用SSK 15派生的对称密钥。
示例8:SEK 14是非对称密钥对,SSK 15是对称密钥。KEK 16与SEK 14相同。KSK 17是通过第二KPDF 192使用SSK 15派生的非对称密钥对。
或者,这些变化可以视为从根密钥(SEK 14或SSK 15)派生出子密钥(KEK 16或KSK17)的不同方法,总结如下。
根密钥类型 | 派生方法 | 子密钥类型 |
对称密钥 | 无派生 | 对称密钥 |
对称密钥 | KDF | 对称密钥 |
对称密钥 | KPDF | 非对称密钥对 |
非对称密钥对 | 无派生 | 非对称密钥对 |
在另一个示例性实施例中,如图13所示,KSK 17的私钥KSK_priv 172可由KMS2在可信执行环境TEE 4内独占访问;KSK 17的公钥KSK_pub 171可在TEE 4外部访问,例如可由在富执行环境REE 5中运行的应用1访问。
在另一个示例性实施例中,如图13所示,KEK 16的私钥KEK_priv 162可由KMS2在可信执行环境TEE 4内独占访问;KEK 16的公钥KEK_pub 161可在TEE 4外部访问,例如可由在富执行环境REE 5中运行的应用1访问。
值得注意的是,KDF或KPDF总是尽可能应用于SEK 14,而ACP 9则作为多样化参数。这是为了确保在不提供正确的ACP 9的情况下解密会失败。然而,对于SSK 15,这一要求可以放宽,这也是实施例中提到的派生步骤中可选的ACP 9参数的原因。在验证REE 5中的签名时,拥有相同的签名密钥实际上更高效,因为只需向REE 5提供一个公钥。
所公开的方法还涉及密钥和策略的生成、更新、查询、使用和删除。下面给出这些过程的细节以及在这些过程中如何使用所公开的方法。
密钥生成
当应用1在KMS2中生成AK 6时,KMS2需要确定(a)AK 6的类型和密钥生成算法的参数;(b)访问待生成的AK 6的规则,即AK 6的ACP 9。例如,应用1可以指定待生成RSA密钥对(密钥类型),密钥的长度应为2048位(生成参数),密钥只能用于通过某种特定的填充算法(ACP 9)计算数字签名。KMS2可以进一步增强ACP 9以包括用于密钥访问的其它条件。例如,KMS2可以要求由应用1生成的密钥只能由该应用1(所有者)使用,除非所有者给予明确的授权以允许其它应用使用该密钥。生成AK 6后,将按照前面所述执行加密步骤。
密钥使用
当应用1请求KMS2使用特定AK 6执行加密操作时,KMS2从存储器3检索包含加密的AK 6的密钥blob 7,提取ACP 9,并检查ACP 9是否允许该操作。如果确实允许该操作,则KMS2将使用如前所述的解密步骤将ACP 9作为输入之一来解密AK 6,并使用经解密的AK 6来执行所请求的加密操作。然后,将操作的结果返回到应用。这种典型的操作流程如图3所示。
图14示出了根据本发明的一个示例的用于处理应用数据23的这种密钥使用的流程图,其中来自应用1的请求20包括待处理的应用数据23。在本示例中,KMS2使用所获取的AK 6执行所请求的加密操作包括:在第一附加步骤201中,KMS2使用AK 6对应用数据23进行加密处理;在下一个附加步骤202中,KMS2将处理后的应用数据23发送到应用1。
密钥删除
当应用1请求删除AK 6时,KMS2从存储器3检索包含加密的AK 6的密钥blob 7,提取ACP 9,并检查是否授权应用1删除密钥6。如果允许,KMS2进一步使用之前描述的解密步骤来解密AK 6,其中密钥blob 7中的ACP 9作为输入之一。如果解密成功,则从存储器3中移除整个元组12,并且从存储器3A中清除解密的内容。额外的解密步骤是为了确认ACP 9没有被篡改。
图15示出了根据本发明的一个示例的用于删除应用密钥6的方法的流程图,其中来自应用1的请求20涉及删除25AK 6,并且其中所述方法还包括由KMS2执行的以下附加步骤:
在第一步骤401中,基于检索到的密钥blob 7中的ACP 9,验证得出允许请求应用1删除AK 6。
在下一步骤402中,如果使用ACP 9对C 8的解密成功,则从存储介质3中移除检索到的密钥blob 7,并从任何临时存储介质3A中清除任何解密的内容。
策略更新
例如,当第一应用授权另一个第二应用使用第一应用拥有的密钥时,KMS允许更新AK 6的ACP 9。在这种情况下,KMS2首先检查AK 6的现有ACP 9,以确保AK 6实际上允许策略更新。之后,KMS构造新的ACP 9A,使用现有的ACP 9执行前面描述的解密步骤,并使用新的ACP 9A再次执行加密步骤。然后,使用所得元组7A来替换存储器3中现有的元组7。
图16示出了根据本发明的一个示例的这种策略更新的流程图,其中来自应用1的请求20涉及修改访问AK 6的规则24;其中,所述方法还包括由KMS2执行的以下附加步骤:
在第一步骤301中,基于检索到的密钥blob 7中的ACP 9,验证得出允许修改访问AK 6的规则。
在下一步骤302中,基于请求20构建修改后的ACPm 9A。
在下一步骤303中,使用修改后的ACPm 9A作为输入参数加密AK 6,以生成新密文(C2)8A。
在下一步骤304中,生成包括新密文(C2)8A和修改后的ACPm 9A的修改后的密钥blob 7A。
在最后的步骤305中,在存储介质3中,用修改后的密钥blob 7A替换检索到的密钥blob 7。
策略查询
KMS2可以允许应用1对密钥和/或其策略执行查询。例如,应用1可能需要其可访问的所有密钥的列表,并且可用于通过椭圆曲线数字签名算法(Elliptic Curve DigitalSignature Algorithm,ECDSA)和SHA256摘要算法来计算数字签名。为了执行这样的查询,KMS2将简单地提取存储器3中所有元组12的ACP 9部分,并在所有ACP 9之间执行搜索。
此查询阶段的输入包括查询条件和多个元组,每个元组表示应用于某个AK及其ACP的加密阶段的结果。如需使用给定条件对ACP执行查询,我们只需要解码每个元组以找到其中的ACP,然后使用解码后的ACP执行查询。此阶段不涉及加密操作。由于其简单性,我们将在实施例的描述中省略此阶段。
图17示出了根据本发明示例的方法处理此类对ACP 9的查询的流程图,包括以下步骤:
在第一步骤501中,KMS2从应用1接收请求20,所述请求20包括对至少一个AK 6以及在每个AK 6的相应ACP 9中定义的任何相应的访问规则的查询26。
在下一步骤502中,KMS2在存储介质3中检索密钥blob 7,所述密钥blob 7包括密文(C)8,对应于至少一个AK 6和相应的ACP 9。
在下一步骤503中,从检索到的密钥blob 7中提取ACP 9。
在最后的步骤504中,对提取到的ACP 9执行所请求的查询26。
本文已经结合各种实施例描述了各个方面和实现方式。但是,本领域技术人员在实践所请求保护的主题时,通过研究附图、公开内容和所附权利要求书,能够理解和实现所公开实施例的其它变型。在权利要求中,词语“包括”不排除其它元件或步骤,并且“一”或“一个”不排除多个。单个处理器或其它单元可以实现权利要求中所述的若干项目的功能。在相互不同的从属权利要求中列举一些措施并不表示这些措施的结合不能被用于获取优势。计算机程序可以存储/分布在适当的介质上,例如与其它硬件一起提供或作为其它硬件的一部分提供的光存储介质或固态介质,但也可以以其它形式分布,例如通过互联网或其他有线或无线通信***分布。
权利要求书中使用的附图标记不应当被解释为限制范围。
Claims (22)
1.一种在计算机上实现的数据的安全密钥处理和加密处理的方法,其特征在于,所述方法包括:
密钥管理***(Key Management System,KMS)(2)从应用(1)接收(101)执行加密操作的请求(20),其中,所述请求(20)包括对应用密钥(application key,AK)(6)和上下文信息(22)的引用(21);
所述KMS(2)在存储介质(3)中检索(102)密钥二进制类型的大对象(Binary LargeObject,blob)(7),其中,所述密钥blob(7)包括密文C(8),对应于所述AK(6)和访问控制策略(Access Control Policy,ACP)(9),定义访问所述AK(6)的规则;
所述KMS(2)基于所述上下文信息(22)验证(103)所述ACP(9);
所述KMS(2)使用经验证的ACP(9)作为输入解密(104)所述C(8)以获取所述AK(6);
所述KMS(2)使用所获取的AK(6)执行所请求的加密操作(105)。
2.根据权利要求1所述的方法,其中,所述密钥blob(7)中的所述C(8)通过加密算法使用保护密钥(key encryption key,KEK)(16)加密;
其中,所述KMS(2)使用经验证的ACP(9)作为输入解密所述C(8)以获取所述AK(6)包括:
所述KMS(2)通过所述加密算法使用加密密钥解密所述C(8),所述加密密钥是与所述KEK(16)相同的对称密钥或与所述KEK(16)对应的非对称密钥对,并可由所述KMS(2)在可信执行环境(Trusted Execution Environment,TEE)(4)内独占访问,以获取所述AK(6)。
3.根据权利要求2所述的方法,其特征在于,所述密钥blob(7)中的所述C(8)与所述ACP(9)级联,使用密钥签名密钥(key signing key,KSK)(17)对级联结果(10)进行签名,使用签名算法获取签名(11),作为元组(12)包括在所述密钥blob(7)中;
所述方法还包括:
在解密所述C(8)之前,所述KMS(2)使用具有签名密钥的所述签名算法,根据所述级联(10)验证所述密钥blob(7)中的所述签名(11),所述签名密钥是与所述KSK(17)相同的对称密钥或与KSK对应的非对称密钥对。
4.根据权利要求2所述的方法,其中,所述方法还包括:在所述计算机上提供至少一个存储密钥(Storage Key,SK)(13),所述存储密钥(13)可由所述KMS(2)独占访问;
其中,所述密钥blob(7)中的所述C(8)使用关联数据的鉴别加密(AuthenticatedEncryption with Associated Data,AEAD)以及加密算法加密,所述加密算法具有从所述ACP(9)和所述SK(13)派生的KEK(16),所述ACP(9)进一步用作相应的鉴别关联数据(Authenticated Associated Data,AAD);
其中,所述密钥blob(7)包括由所述AEAD加密算法生成的鉴别标签(11A),其中,所述鉴别标签(11A)用作所述密钥blob(7)中的签名(11);
其中,所述KMS(2)解密所述C(8)包括:
使用所述鉴别标签(11A)鉴别所述AAD;
使用密钥派生函数(key derivation function,KDF)(18)从所述ACP(9)和所述SK(13)派生所述KEK(16);
使用所述AEAD加密算法,以所述ACP(9)作为AAD,以所述KEK(16)作为输入,以获取所述AK(6)。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:在所述计算机上提供存储加密密钥(Storage Encryption Key,SEK)(14)和/或存储签名密钥(Storage SigningKey,SSK)(15),所述SEK(14)和所述SSK(15)中的每一个可由所述KMS(2)独占访问;
其中,所述KEK(16)由所述KMS(2)从所述SEK(14)获取,或者,通过使用所述SEK(14)作为KEK(16)或者通过使用所述ACP(9)作为输入参数从所述SEK(14)派生所述KEK(16);
其中,所述KSK(17)由所述KMS(2)从所述SSK(15)获取,或者,通过使用所述SSK(15)作为KSK(17)或者使用所述ACP(9)作为可选输入参数从所述SSK(15)派生所述KSK(17)。
6.根据权利要求5所述的方法,其中,所述SEK(14)是不同的对称密钥;
其中,所述KEK(16)是由所述KMS(2)使用第一密钥派生函数(key derivationfunction,KDF)(181)从所述SEK(14)派生的对称密钥,所述ACP(9)作为输入参数;
其中,所述密钥blob(7)中的所述C(8)通过对称加密算法使用所述KEK(16)加密;
其中,所述KMS(2)解密所述C(8)包括:
使用所述第一KDF(181)和所述ACP(9)作为输入参数,从所述SEK(14)派生KEK(16);
通过所述对称加密算法使用所述KEK(16)解密所述C(8),以获取所述AK(6)。
7.根据权利要求5所述的方法,其中,所述SEK(14)是不同的对称密钥;
其中,所述KEK(16)是非对称密钥对,所述非对称密钥对包括由所述KMS(2)使用第一密钥对派生函数(key pair derivation function,KPDF)(191)从所述SEK(14)派生的私钥和公钥,其中,所述ACP(9)作为输入参数,所述第一KPDF(191)用于从对称密钥中获取非对称密钥对;
其中,所述密钥blob(7)中的所述C(8)通过非对称加密算法使用所述KEK(16)的公钥KEK_pub(161)加密;
其中,所述KMS(2)解密所述C(8)包括:
使用所述第一KPDF(191)和所述ACP(9)作为输入参数,从所述SEK(14)派生所述KEK(16)的私钥KEK_priv(162);
通过所述非对称加密算法使用所述KEK_priv(162)解密所述C(8),以获取所述AK(6)。
8.根据权利要求5所述的方法,其特征在于,所述SEK(14)是包括私钥和公钥的非对称密钥对,所述私钥和公钥分别由所述KMS(2)用作所述KEK(16)的公钥KEK_pub(161)和所述KEK(16)的私钥KEK_priv(162);
其中,所述密钥blob(7)中的所述C(8)通过非对称加密算法使用所述KEK_pub(161)加密;
其中,所述KMS(2)解密所述C(8)包括:
通过所述非对称加密算法使用所述KEK_priv(162)解密所述C(8),以获取所述AK(6)。
9.根据权利要求6至8中任一项所述的方法,其特征在于,所述SSK(15)是不同的对称密钥;
其中,所述KSK(17)是由所述KMS(2)从所述SSK(15)获取的对称密钥,或者通过使用所述SSK(15)作为KSK(17),或者通过使用第二密钥派生函数(key derivation function,KDF)(182)从所述SSK(15)派生所述KSK(17),所述ACP(9)作为输入参数;
其中,通过对称签名算法使用所述KSK(17)对所述密钥blob(7)中的所述级联(10)进行签名,以获取将作为元组(12)包括在所述密钥blob(7)中的签名(11);
其中,所述KMS(2)解密所述C(8)包括,在使用所述KEK解密所述C(8)之前:
使用所述第二KDF(182)或使用所述SSK(15)作为KSK,从所述SSK(15)获取KSK(17);
使用所述对称签名算法根据与所述KSK(17)的所述级联(10)来验证所述密钥blob(7)中的所述签名(11)。
10.根据权利要求6至8中任一项所述的方法,其特征在于,所述SSK(15)是不同的对称密钥;
其中,所述KSK(17)是非对称密钥对,包括由所述KMS(2)使用第二密钥对派生函数(keypair derivation function,KPDF)(192)从所述SSK(15)派生的私钥和公钥,所述ACP(9)作为输入参数,所述第二KPDF(192)用于从对称密钥中获取非对称密钥对;
其中,通过非对称签名算法使用所述KSK(17)的私钥KSK_priv(172)对所述密钥blob(7)中的所述级联(10)进行签名;
其中,所述KMS(2)解密所述C(8)包括,在使用所述KEK解密所述C(8)之前:
使用所述第二KPDF(192)和所述ACP(9)作为输入参数,从所述SSK(15)派生所述KSK(17)的公钥KSK_pub(171);
使用所述非对称签名算法根据与所述KSK_pub(171)的所述级联(10)来验证所述密钥blob(7)中的所述签名(11)。
11.根据权利要求6至8中任一项所述的方法,其特征在于,所述SSK(15)是包括私钥和公钥的非对称密钥对,所述私钥和公钥分别由所述KMS(2)用作所述KSK(17)的公钥KSK_pub(171)和所述KSK(17)的私钥KSK_priv(172);
其中,通过非对称签名算法使用所述KSK_priv(172)对所述密钥blob(7)中的所述级联(10)进行签名;
其中,所述KMS(2)解密所述C(8)包括,在使用所述KEK解密所述C(8)之前:
使用所述非对称签名算法根据与所述KSK_pub(171)的所述级联(10)来验证所述密钥blob(7)中的所述签名(11)。
12.根据权利要求10或11中任一项所述的方法,其特征在于,所述KSK(17)的私钥KSK_priv(172)可由所述KMS(2)在可信执行环境(Trusted Execution Environment,TEE)(4)内独占访问;
其中,所述KSK(17)的公钥KSK_pub(171)可在所述TEE(4)外部访问,例如可由在富执行环境(Rich Execution Environment,REE)(5)中运行的应用(1)访问。
13.根据权利要求7或8中任一项所述的方法,其中,所述KEK(16)的所述私钥KEK_priv(162)可由所述KMS(2)在可信执行环境(Trusted Execution Environment,TEE)(4)内独占访问;
其中,所述KEK(16)的所述公钥KEK_pub(161)可在所述TEE(4)外部访问,例如可由在富执行环境(Rich Execution Environment,REE)(5)中运行的应用(1)访问。
14.根据权利要求1至13中任一项所述的方法,其中,所述请求(20)涉及对应用数据(23)进行加密处理;
其中,所述请求(20)包括待处理的应用数据(23);
其中,所述KMS(2)使用所获取的AK(6)执行所请求的加密操作包括:
所述KMS(2)使用所述AK(6)对所述应用数据(23)进行加密处理(201);其中,所述方法还包括:
所述KMS(2)将处理后的应用数据(23)发送(202)到所述应用(1)。
15.根据权利要求1至13中任一项所述的方法,其中,所述请求(20)涉及修改访问AK(6)的规则(24);
其中,所述方法还包括由所述KMS(2)执行的步骤:
基于检索到的密钥blob(7)中的所述ACP(9),验证(301)得出允许修改访问所述AK(6)的规则;
基于所述请求(20)构建(302)修改后的ACP(9A);其中,所述KMS(2)使用所获取的AK(6)执行所请求的加密操作包括:
使用修改后的ACP(9A)作为输入参数加密(303)所述AK(6),以生成新密文C2(8A);
生成(304)包括所述新密文C2和所述修改后的ACP(9A)的修改后的密钥blob(7A);
在所述存储介质(3)中用所述修改后的密钥blob(7A)替换(305)所述检索到的密钥blob(7)。
16.根据权利要求1至13中任一项所述的方法,其中,所述请求(20)涉及删除(25)AK(6);
其中,所述方法还包括由所述KMS(2)执行的步骤:
基于所述检索到的密钥blob(7)中的所述ACP(9),验证(401)得出允许请求应用(1)删除所述AK(6);其中,所述KMS(2)使用所获取的AK(6)执行所请求的加密操作包括:
如果使用所述ACP(9)对所述C(8)的解密成功,从所述存储介质(3)中移除(402)所述检索到的密钥blob(7),并从任何临时存储介质(3A)中清除任何解密的内容。
17.一种在计算机上实现的数据的安全密钥处理和加密处理的方法,其特征在于,所述方法包括:
密钥管理***(Key Management System,KMS)(2)从应用(1)接收(501)请求(20),所述请求(20)包括对至少一个应用密钥(application key,AK)(6)以及每个AK(6)的相应访问控制策略(Access Control Policy,ACP)(9)中定义的任何相应访问规则的查询(26);
其中,所述方法还包括由所述KMS(2)执行的步骤:
所述KMS(2)在存储介质(3)中检索(502)密钥blob(7),所述密钥blob(7)包括密文C(8),对应于所述至少一个AK(6)和相应的ACP(9);
从所述检索到的密钥blob(7)中提取(503)所述ACP(9);
对所述提取到的ACP(9)执行(504)所述请求的查询(26)。
18.一种用于数据的安全密钥处理和加密处理的基于计算机的***,其特征在于,所述***包括:
可信执行环境(Trusted Execution Environment,TEE)(4);
富执行环境(Rich Execution Environment,REE)(5);
用于在所述REE(5)中执行的应用(1);
存储介质(3),用于存储至少一个密钥blob(7),每个密钥blob(7)包括密文C(8)和相应的访问控制策略(Access Control Policy,ACP)(9);
密钥管理***(Key Management System,KMS)(2),用于从所述应用(1)接收执行加密操作的请求(20),其中,所述请求(20)包括对应用密钥(application key,AK)(6)和上下文信息(22)的引用(21);
其中,所述KMS(2)用于响应于所述请求:
从对应于所述AK(6)的所述存储介质(3)中检索密钥blob(7);
基于所述上下文信息(22)验证所述检索到的密钥blob(7)中的所述ACP(9);
使用经验证的ACP(9)作为输入解密所述C(8)以获取所述AK(6);
根据权利要求1至13中任一项所述的方法,使用生成的AK(6)执行所述请求的加密操作。
19.根据权利要求18所述的基于计算机的***,其特征在于,所述KMS(2)用于从所述应用(1)接收请求(20),所述请求(20)涉及对应用数据(23)进行加密处理;
其中,所述请求(20)包括待处理的应用数据(23);
其中,所述KMS(2)还用于:
所述KMS(2)使用所述AK(6)对所述应用数据(23)进行加密处理;
将处理后的应用数据(23)发送到所述应用(1)。
20.根据权利要求18或19中任一项所述的基于计算机的***,其特征在于,所述KMS(2)用于从所述应用(1)接收请求(20),所述请求(20)涉及修改访问AK(6)的规则(24);
其中,所述KMS(2)还用于:
基于检索到的密钥blob(7)中的所述ACP(9),验证得出允许修改访问所述AK(6)的规则;
基于所述请求(20)构建修改后的ACP(9);
使用修改后的ACP(9)作为输入参数加密所述AK(6),以生成新密文C2;
生成包括所述新密文C2和所述修改后的ACP(9)的修改后的密钥blob(7);
在所述存储介质(3)中用所述修改后的密钥blob(7)替换所述检索到的密钥blob(7)。
21.根据权利要求18至20任一项所述的基于计算机的***,其特征在于,所述***还包括临时存储介质(3);
其中,所述KMS(2)用于从所述应用(1)接收请求(20),所述请求(20)涉及删除(25)AK(6);
其中,所述KMS(2)还用于:
基于所述检索到的密钥blob(7)中的所述ACP(9),验证得出允许请求应用(1)删除所述AK(6);
如果使用所述ACP(9)对所述C(8)的解密成功,从所述存储介质(3)中移除所述检索到的密钥blob(7);
从临时存储介质(3)(例如存储器)中清除任何解密的内容。
22.一种用于数据的安全密钥处理和加密处理的基于计算机的***,其特征在于,所述***包括:
可信执行环境(Trusted Execution Environment,TEE)(4);
富执行环境(Rich Execution Environment,REE)(5);
用于在所述REE(5)中执行的应用(1);
存储介质(3),可由密钥管理***(Key Management System,KMS)(2)访问,用于存储至少一个密钥blob(7),每个密钥blob(7)包括密文C(8)和相应的访问控制策略(AccessControl Policy,ACP)(9);
所述KMS(2)用于:
从所述应用(1)接收请求(20),所述请求(20)包括对至少一个应用密钥(applicationkey,AK)(6)和在每个AK(6)的相应ACP(9)中定义的任何相应访问规则的查询(26);
响应于所述请求:
从所述存储介质(3)中检索密钥blob(7),所述密钥blob(7)包括密文C(8),对应于所述至少一个AK(6)和相应的ACP(9);
从所述检索到的密钥blob(7)中提取所述ACP(9);
对所述提取到的ACP(9)执行所述请求的查询(26)。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/EP2021/057373 WO2022199796A1 (en) | 2021-03-23 | 2021-03-23 | Method and computer-based system for key management |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117063439A true CN117063439A (zh) | 2023-11-14 |
Family
ID=75278016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180095618.9A Pending CN117063439A (zh) | 2021-03-23 | 2021-03-23 | 一种用于密钥管理的方法及基于计算机的*** |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117063439A (zh) |
WO (1) | WO2022199796A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116566744B (zh) * | 2023-07-07 | 2023-09-22 | 北京瑞莱智慧科技有限公司 | 数据处理方法和安全校验*** |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10043029B2 (en) * | 2014-04-04 | 2018-08-07 | Zettaset, Inc. | Cloud storage encryption |
US9806887B1 (en) * | 2014-09-23 | 2017-10-31 | Amazon Technologies, Inc. | Authenticating nonces prior to encrypting and decrypting cryptographic keys |
US10460118B2 (en) * | 2016-08-30 | 2019-10-29 | Workday, Inc. | Secure storage audit verification system |
-
2021
- 2021-03-23 CN CN202180095618.9A patent/CN117063439A/zh active Pending
- 2021-03-23 WO PCT/EP2021/057373 patent/WO2022199796A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022199796A1 (en) | 2022-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2018367363B2 (en) | Processing data queries in a logically sharded data store | |
US20210099287A1 (en) | Cryptographic key generation for logically sharded data stores | |
CN111130757B (zh) | 一种基于区块链的多云cp-abe访问控制方法 | |
US10650164B2 (en) | System and method for obfuscating an identifier to protect the identifier from impermissible appropriation | |
US8850206B2 (en) | Client-server system with security for untrusted server | |
US20140258736A1 (en) | Systems and Methods for Maintaining Integrity and Secrecy in Untrusted Computing Platforms | |
US20110307707A1 (en) | Method and system for securing a file | |
CN104618096B (zh) | 保护密钥授权数据的方法、设备和tpm密钥管理中心 | |
AU2017440029B2 (en) | Cryptographic key generation for logically sharded data stores | |
US11783091B2 (en) | Executing entity-specific cryptographic code in a cryptographic coprocessor | |
CN110837634B (zh) | 基于硬件加密机的电子签章方法 | |
US8499357B1 (en) | Signing a library file to verify a callback function | |
CN117063439A (zh) | 一种用于密钥管理的方法及基于计算机的*** | |
Jabbar et al. | Design and implementation of hybrid EC-RSA security algorithm based on TPA for cloud storage | |
CN113672973B (zh) | 基于可信执行环境的risc-v架构的嵌入式设备的数据库*** | |
CN114553557A (zh) | 密钥调用方法、装置、计算机设备和存储介质 | |
CN108985079B (zh) | 数据验证方法和验证*** | |
US20210111901A1 (en) | Executing entity-specific cryptographic code in a trusted execution environment | |
Xie et al. | Assured Deletion: A Scheme Based on Strong Nonseparability | |
JP7385025B2 (ja) | 暗号化コプロセッサにおけるエンティティ固有の暗号化コードの実行 | |
Ramesh et al. | Cha-Cha 20: stream cipher based encryption for cloud data centre | |
Patalbansi et al. | Cloud storage system for mobile cloud computing using blockchain | |
CN115935384A (zh) | 数据保护方法、***、电子设备及计算机可读存储装置 | |
CN118400103A (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 |