发布于 2021-02-10 04:15:29
RSA密钥通常用于密钥交换的签名和身份验证。它不用于(EC)DH,它使用新生成的一次性使用公钥/私钥对进行密钥交换。
DH内部的颜色类比是,如果一个对手只有两个公钥,它将无法计算用于派生会话密钥的DH共享秘密。这就是所谓的tje CDH假设。
要获得此秘密,需要对方的公钥和您自己的私钥,因此只有密钥交换中涉及的端点才能生成会话密钥。模幂的交换性质意味着双方将得到相同的共享秘密。
当然,颜色类比只适用于外行。这两种混合颜色的作用并不相等,就像色彩类比可能会误导人们思考。共享颜色是一个生成器(一个组元素),而私有颜色是您的私有指数,一个小于(子)组的顺序(或元素数)的整数。
DH参数通常不生成,但使用的是已知或命名的组。您可能会认为使用新的参数可能会带来更好的安全性,这确实可能(我不确定是否可能种植后门)。然而,找到一个好的DH组为这么长的键是相当困难的。除此之外,另一方必须做大量工作来验证新的参数(比如一个额外的模块指数和两个原始性测试)。
有一次,我尝试用Java代码找到一个1024位的安全素数,但是它没有停止5分钟。而DH模块的最低要求是2048位。找到一个好的EC(DH)曲线是同样困难的,如果不是更难。你需要确保它有一个很大的素数阶子群,并且找出EC曲线的阶数是相当昂贵的。如果它不符合可用曲线的任何标准,您将不得不重新开始。
所以我们通常使用少量的命名曲线。
发布于 2021-02-10 08:15:43
通常,命名曲线用于DH,服务器本身不生成参数。它们使用TLS协议中的特定编号进行配置。另一方面,键总是被重新生成,最好是为TLS的每个连接。这是假设使用了一个短暂的密钥交换,它可以使用TLS 1.2密码套件(DHE或ECDHE)中的后置字母E来识别。因此,共享秘密应该始终特定于TLS会话。
RSA是一个完全独立于DH的算法。RSA私钥用于验证包括新生成的DH公钥在内的TLS握手。RSA不需要任何参数(密钥大小除外)。DH的颜色解释与RSA无关。原则上,对于RSA和DH,您可以使用完全不同的密钥大小,尽管使用具有大致相同强度的集合是有意义的。
让我们永远不会知道DH参数,它们是特定于TLS连接的,并且不包含在证书中。
https://crypto.stackexchange.com/questions/88129
复制相似问题