问题标签 [diffie-hellman]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
382 浏览

tomcat - 如何使用匿名 diffie-hellmen 算法为服务器生成证书或密钥库

我想使用匿名 diffie Hellman 算法创建证书,因为需要创建没有身份验证的 HTTPS Web 服务。需要帮助我如何为服务器配置证书以及设置 Tomcat 服务器的步骤。

0 投票
1 回答
2512 浏览

java - 如何在 Java 中生成 Diffie Hellman 密钥并检索原始密钥字节

我正在用 Java 为现有程序编写测试工具。作为其中的一部分,我需要生成一个 Diffie Hellman 密钥对并将公钥以其原始(即未编码的字节)形式传递给其他程序。

我可以使用以下代码成功地密钥对:

但是,我似乎无法检索键的原始字节值:-(调用dkp.getPublic().getEncoded()返回一个字节数组,但它的键是 x509 编码格式。

我想到了三种可能的前进方式:

  1. 找到一些以原始形式从上面获取关键数据的方法。
  2. 将密钥的 x509 编码解码为其原始形式
  3. 以允许访问原始密钥的不同方式生成密钥

但我不知道如何去做其中的任何一个(结果会是最好的)?

任何帮助或建议将不胜感激!

0 投票
1 回答
1412 浏览

java - 带充气城堡的 ECDHE 安全性

我在椭圆曲线密码学领域非常陌生且缺乏经验。经过一些研究,我确定与传统 DHE 不同,ECDHE 参数不应生成,而是从预定义曲线列表中选择(示例包括“P-521”、“prime192v3”)。

在创建基于网络的安全敏感应用程序时,在运行时随机选择不同的曲线与使用单个硬编码曲线相比更好(甚至合乎逻辑)吗?

另外,在所有的曲线中,有没有这样一个强弱曲线的概念可供选择?

到目前为止,这是我启动 ECDH 交换的代码:

到目前为止,这段代码有什么问题吗?

0 投票
1 回答
4798 浏览

java - 从 Bouncy Castle 中的 byte[] 获取 ECPoint/ECPublicKeyParameters

到目前为止,我已经成功地在 bouncy castle 的轻量级 API 中生成了一对 ECDHE。但是,我在尝试从字节 [] 重新创建公钥时遇到问题。

由于 ECPublicKeyParameters 对象只有一个方法 getQ() 我假设这就是重建密钥所需的全部内容。其他参数,例如使用的曲线 (P-521) 保持不变。

我正在执行以下操作:

除非有另一种方法来获取公钥 pubKey 的原始字节,否则我看不到在不调用返回 ECPoint 对象的方法 getQ() 的情况下获取字节的方法。

我的问题是如何使用 bouncy castle 的轻量级 API 将 byte[] 重建为 ECPoint 对象。或者,更好的是,如何使用从原始 pubKey 对象派生的字节数组重建整个 ECPublicKeyParameter 对象。

0 投票
1 回答
4169 浏览

java - java.security.NoSuchProviderException:JCE 无法验证服务小程序中的提供者 BC

我正在使用充气城堡实现椭圆曲线 Diffie Hellman。我正在使用bcprov-jdk15on-149.jar. 但

java.security.NoSuchProviderException:JCE 无法验证提供者 BC

抛出异常。它发生在以下行KeyAgreement.getInstance("ECDHC", "BC");

例外是

java.security.NoSuchProviderException:JCE 无法在 javax.crypto.KeyAgreement.getInstance(KeyAgreement.java:223) 的 javax.crypto.JceSecurity.getInstance(JceSecurity.java:101) 验证提供者 BC

我将 Bouncy castle 提供程序添加到 JRE 中的 java.security 文件中。但这并没有帮助。我想知道这种情况的解决方案。
此外,此问题仅发生在小服务程序上。我用一个 J2SE 项目进行了测试,代码运行良好。仅当我将其放入 serverlet 时才会引发异常。

0 投票
1 回答
988 浏览

c# - C# AES 密钥交换场景:这会安全吗?

我正在做一份关于密钥交换的小报告,想问一下这种情况是否安全。

首先,我将制作一个简单的基于服务器-客户端的即时聊天源。

它将向服务器发送一个类,该类由两个字段组成:发件人 ID、消息,并将由 AES 加密。服务器将向其他客户端宣布消息。

每个客户端将与服务器共享一个密钥(使用 Diffie-Hellman 密钥交换。)。

与其他客户端相比,每个客户端都有不同的键,键值将

存储在每个客户端和服务器中(服务器将保留每个客户端的所有密钥。)

我想问的第一件事是,这可能吗?

第二,它会安全吗?

第三,会不会有更聪明的方法来做出类似的效果?

0 投票
3 回答
4763 浏览

c# - C# 中的 Diffie-Hellman 方法不起作用

所以,毕竟,我想解释一下方法:

想法是两个人通过公共通信渠道交换一个价值,而不是真正发送它。

这就是它的工作原理:

https://en.wikipedia.org/wiki/Diffie-Hellman


这是我的 C# 代码:

唯一的问题是,我无法使值相同。如果公式没问题,我已经研究过,我想我没有弄错,但 C# 代码似乎不同意。

结果确实在 0 到 251 之间,但总是不同。

那我做错了什么?

C#代码可以吗?

0 投票
1 回答
1570 浏览

encryption - Diffie–Hellman 密钥交换和离散日志

我有一个一般性问题,为此我举个例子:假设 Alice 和 Bob 选择了素数 593 和公共 g= 9 。Alice 选择数字 530。Bob 选择数字 147。

Alice 计算:x= g^a mod p = 574 Bob 计算:y = g^b mod p = 527 他们的共享密钥是 156

现在 Eve 正试图破解密钥并找到一个。她有一个破解函数,她发现 c 满足: g^c mod p =x 在我们的例子中,c = 234,但这不是 Alice 选择的原始 a,所以她仍然没有成功。我的问题是:她有没有办法找到爱丽丝的原始a,使用这个信息——夏娃有c、g、p和x,她知道g^c mod p =x

(也许是反函数,我不知道..)谢谢

0 投票
1 回答
426 浏览

java - 需要从 y, p, g 创建 DHPublicKey 作为 BigIntegers

我需要一个 DHPublicKey 来加密一些数据。因此,我已经获得了所有需要的参数作为 BigIntegers (y, p, g)。不幸的是,我没有看到一种直接的方法来从这些适合 DHPublicKey 接口的参数创建公钥对象。任何想法?

0 投票
2 回答
5717 浏览

c# - 如何为 ECDiffieHellmanCng 导出私钥

我正在尝试从ECDiffieHellmanCng对象的新实例中导出密钥,以便稍后使用相同的密钥创建它的实例。但是在尝试导出它时出现错误。

当我使用消息“请求的操作不受支持”调用Export方法时,我收到 CryptographicException 。在代码中放置一些断点后,看起来它甚至在执行该方法之前就抛出了异常。查看 Export 方法的定义,它装饰有SecuritySafeCriticalAttribute,所以我怀疑这个属性实际上是在抛出异常。是什么导致了这个异常?如何保存密钥,以便以后创建相同 ECDiffieHellmanCng 对象的实例?