引用 PKI 工件是否有公认的命名约定?
工件的命名似乎有很多混淆。例如,似乎有些人指的是:
- 公钥作为证书
- 公钥作为公钥
- 证书作为公钥
- 证书作为证书
- 私钥作为密钥对
- 私钥作为私钥
- 等等 ..
有没有我可以参考的权威参考资料或词汇表?
引用 PKI 工件是否有公认的命名约定?
工件的命名似乎有很多混淆。例如,似乎有些人指的是:
有没有我可以参考的权威参考资料或词汇表?
以下是“公认的命名”,即我会接受的条款:
公钥是一个数学对象;它是加密密钥对的一半。对于 RSA,公钥是一对大整数(模数和指数),仅此而已。
私钥是一个数学对象;它是密钥对的另一半。对于 RSA,私钥是一堆大整数(即n、e、d、p、q、d mod p-1、d mod q-1和q -1 mod p,其中n和e是公钥中的两个对应值)。
密钥对是具有相应私钥的公钥。
证书是一个签名对象,它包含一些元素并将它们绑定在一起。这就是X.509的意义所在。大多数证书都包含一个公钥(不是私钥)和一个标识该密钥所有者(即控制相应私钥的实体)的身份(“名称”)。
话虽如此,很多人使用草率的术语,你可能会遇到很多行话滥用。例如:
对于通常的算法(每个人都使用 RSA),公钥很容易从私钥重新计算(使用 RSA,公钥是私钥的子集,所以这种重新计算是微不足道的)。这导致一些人在谈论“密钥对”时谈论“私钥”,反之亦然。
有些人(尤其是微软文档的很大一部分)谈论“证书”时,他们的意思是“证书和与证书中的公钥相对应的私钥”。PKCS#12存档文件(也称为“PFX”)是证书及其私钥的常用容器。
许多人没有掌握证书和公钥之间的区别,并以看似随意的方式使用这两个术语。
当人们谈论“公共证书”或“私人证书”时,混淆会进一步加剧。部分问题在于具有密钥对和类似 RSA 算法的游戏被称为公钥密码术,而不是“普通”密码术,即像 AES 这样的对称算法。在对称密码学中,密钥是秘密的,没有密钥可以公开。所以有一个表达式:secret key。该术语通常表示对称算法的密钥,它是一堆位。但是有些人在说“私钥”时说“密钥”,反之亦然。
我还遇到过“数字身份”、“私人身份”或“数字凭证”,意思是证书、私钥,或者两者兼而有之。取决于谁在说话。
还有一个秘密密钥证书的概念,它要么是认为“秘密”和“私人”可以互换的人,要么是某些高级“盲签名”方案中使用的证书的特定情况。这是研究级别的工作,没有标准化。
底线是,如果您想被可靠地理解,那么您必须注意正确定义您的术语。同样,在阅读其他人的文件时,要做好遇到任何事情的准备。体面的标准以明确定义标准中术语含义的词汇表开始。
这三个都是完全不同的概念。
参考任何非对称密码系统的公钥是可以提供给希望与您参与的各方的密钥。相反,私钥是您保密的非对称密钥对的相应私有部分。
证书是表示身份的标准化格式。身份可能包含密钥材料,或者它可能只是由辅助密钥签名的身份声明。在传统的 HTTPS 中,证书包含 Web 服务器的公钥,证书通常由受信任的 3rd 签署。
您提供的示例看起来很正确,除非您将私钥称为密钥对。
当生成非对称密钥时,它们会生成为密钥对,即公钥和私钥。私钥不应称为密钥对。
关于证书:如果我有你的 x.509 证书,我总是可以说我有你的公钥,因为公钥是 x.509 证书的一部分。
我注意到的一件事是,有些人对“私人”和“秘密”这两个词感到困惑。私钥应该作为秘密保存,但通常秘密密钥用于指代对称密钥算法中的共享秘密。