首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Diffie-Hellman密钥生成

Diffie-Hellman密钥生成
EN

Cryptography用户
提问于 2021-02-09 22:51:40
回答 2查看 771关注 0票数 0

我们都看到带有2048/4096位RSA密钥对的X509证书;然而,很难理解它们在TLS握手的DH部分是如何工作的。

充其量,他们会进行认证和签名。DH 4096位生成“参数”,我知道这很费时。

当服务器生成这些参数时,它们看起来是什么样子?4096位的密钥变成了什么?我用让我们加密生成了证书,但是我不记得看到过这个过程。我想我只看到一对RSA密钥。然而DH将用于会话密钥交换,而不是RSA密钥。

到目前为止,我发现一份文件只谈论Diffie-Hellman的公钥和私钥,尽管网络上的大多数人都说DH有公钥和私钥。

EN

回答 2

Cryptography用户

回答已采纳

发布于 2021-02-10 04:15:29

RSA密钥通常用于密钥交换的签名和身份验证。它不用于(EC)DH,它使用新生成的一次性使用公钥/私钥对进行密钥交换。

DH内部的颜色类比是,如果一个对手只有两个公钥,它将无法计算用于派生会话密钥的DH共享秘密。这就是所谓的tje CDH假设。

要获得此秘密,需要对方的公钥和您自己的私钥,因此只有密钥交换中涉及的端点才能生成会话密钥。模幂的交换性质意味着双方将得到相同的共享秘密。

当然,颜色类比只适用于外行。这两种混合颜色的作用并不相等,就像色彩类比可能会误导人们思考。共享颜色是一个生成器(一个组元素),而私有颜色是您的私有指数,一个小于(子)组的顺序(或元素数)的整数。

DH参数通常不生成,但使用的是已知或命名的组。您可能会认为使用新的参数可能会带来更好的安全性,这确实可能(我不确定是否可能种植后门)。然而,找到一个好的DH组为这么长的键是相当困难的。除此之外,另一方必须做大量工作来验证新的参数(比如一个额外的模块指数和两个原始性测试)。

有一次,我尝试用Java代码找到一个1024位的安全素数,但是它没有停止5分钟。而DH模块的最低要求是2048位。找到一个好的EC(DH)曲线是同样困难的,如果不是更难。你需要确保它有一个很大的素数阶子群,并且找出EC曲线的阶数是相当昂贵的。如果它不符合可用曲线的任何标准,您将不得不重新开始。

所以我们通常使用少量的命名曲线。

票数 1
EN

Cryptography用户

发布于 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连接的,并且不包含在证书中。

票数 3
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/88129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档