我尝试过谷歌,但这不是我想要的。谷歌表示,这是一个聚会,根据对密钥的分布式访问来检查签名密钥的存储安全性。
我有这个类,它有 3 个字符串(损坏的密钥)和各自的属性(密钥检查值、区域密钥检查值、加密主密钥)。我使用它派生一个主密钥。我不能在这里放置代码,因为它违反了我的安全策略。顺便说一句,这是针对智能卡的。
如果有人对此有任何想法,请解释或指出我。
好的,我将假设一个简单的对称密钥(3DES 或 AES)在这里分成 3 个部分。我只能回答,因为我做出了这个假设。
密钥值是随机生成的,这是您要保护的密钥。让我们将此密钥称为主密钥。KCV(密钥检查值)是在主密钥上计算的,因此如果重新生成,则可以在不泄露值本身的情况下以相对较高的确定性验证密钥的正确性。KCV 不会泄漏有关关键材料本身的信息,因为 KCV 的计算是一种方式。
此键使用其他随机值和 XOR 分为三部分。生成前两个其他随机密钥。第三个密钥计算为其他密钥和主密钥的 XOR。计算并记下 KCV 值。这三个密钥现在可以分配给 3 个不同的参与者。这些演员在仪式中扮演的角色被称为关键管理者。通常,密钥管理器会保护对其密钥的访问。
现在,要重新生成主密钥,每个密钥管理器都会记下他们的密钥部分。在继续操作之前,将验证密钥的 KCV,以确保没有输入错误,或者该值不是其他密钥的值。现在,如果您计算三个密钥的 XOR,那么您将再次获得主密钥。此值再次与主密钥进行比较。
所以这就是它的全部内容。
关于此方案的安全性:
- 您需要所有三个密钥,因为其他密钥基本上提供对密钥值的一次性加密,这提供了非常强大的安全性概念
- 常见的KCV是一个危险的概念,因为全零块的加密 - 最常见的方案 - 可能会泄漏敏感信息(例如,使用零随机数和计数器的计数器模式安全性)。 例如,空值上的 HMAC 可能是一个更好的主意
- 显然,您需要一个安全的随机数生成器来生成密钥,否则您的方案可能不安全 很难故意生成错误的密钥;通常KCV是
- 三个字节,所以一两个人串通生成主密钥KCV的几率是1/2^24(2^24是超过1600万)。
密码学中的密钥仪式意味着在颁发证书时,您将如何激活签名密钥以用于不同的目的,例如 CA 密钥。密钥仪式具有非常强大的安全级别,密钥使用 m of n 规则激活,密钥存储在笔记本电脑或 HSM(存储密钥的硬件)中的安全物理位置。 有关更多详细信息,请参阅证书颁发机构的 WebTrust 原则和标准 – v2.2文档,从 http://www.webtrust.org/principles-and-criteria/docs/item83987.pdf 下载,第 4.4 节CA 密钥用法
在高级别上,这是一个在两个实体之间轮换生产/UAT 环境中的加密密钥的过程,然后一个实体向另一个实体发送请求,以便在密钥的帮助下在它们之间进行会话。密钥可以具有某些角色来加密/解密消息,以检查消息的完整性等。