TLS 证书的模数是否唯一标识客户端?

信息安全 tls 身份
2021-09-09 18:28:13

我正在使用trust-peer setup进行项目。我想要一种方法来唯一地识别系统中的每个参与者,最好是在证书重新颁发时也是如此。

据我了解,TLS 证书的模数唯一标识客户端,并且在重新颁发证书时不应更改。唯一会改变模数的是如果私钥被泄露并因此改变。这个对吗?

编辑:另外,假设私钥和模数之间存在 1:1 映射是否正确?

1个回答

如果我们谈论的是 RSA,那么名义上的公钥是:

  • 模数n
  • 公共指数e

而私钥是关于n的素因数的知识(传统上,n是大小相似的两个素因数pq的乘积)。形式上,私钥实际上是模数和私有指数d的组合,但是如果您知道ned ,那么您可以重新计算因子pq

因此,如果两个不同的公钥共享相同的模数(因此具有相同的因数),那么它们具有“相同”的私钥,即任何知道其中一个公钥的私钥的人也知道一个私钥的私钥。另一个公钥。因此,这两个密钥是“相同的”或至少对应于相同的私有知识。

因此,您确实可以声称单独的 RSA 模数唯一地标识了一个私钥,因此(可能)是一个私钥所有者。

但是,您必须注意,虽然私钥通常为单个所有者所知(否则它不是真正的“私有”),但一个人可能完全拥有多个密钥对。特别是,当“重新颁发”证书时,这确实是一个全新的证书,可能包含也可能不包含相同的密钥。这取决于 CA 程序:有些人会使用相同的公钥重新颁发证书,而另一些人会坚持生成新的密钥对。您不能可靠地假设当服务器“更新”其证书时,新证书将包含相同的公钥。

此外,“模数”的概念是特定于 RSA 的,不适用于其他公共密钥类型,特别是 EC 密钥(例如用于 ECDSA)。如果您想通过公钥识别事物,建议您简单地使用证书中编码的整个公钥。