问题标签 [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 回答
2493 浏览

vector - Diffie-Hellman -- Primitive root mod n -- 密码学问题

在下面的片段中,请从第一个“for”循环开始解释发生了什么以及为什么。为什么加0,为什么在第二个循环中加1。bigi 下的“if”语句中发生了什么。最后解释一下modPow方法。提前感谢您的有意义的答复。

0 投票
2 回答
4015 浏览

ssh - diffie-hellman ssh 密钥交换

我已经着手用 C# 制作一个原始的 SSH 客户端;您可能会从诸如原始 ssh 连接(低级)之类的帖子中记住我,呵呵。

无论如何,在我发起 DH 密钥交换之前,一切都很好。我将建立 ssh 连接(从 openssh 客户端到 openssh 服务器)时的流量与我的客户端连接到同一个 openssh 服务器时的流量进行了比较。

OpenSSH 客户端 -> OpenSSH 服务器(S 代表服务器,C 代表客户端):S:SSH-2.0-OpenSSH_5.1p1 Debian-6ubuntu2\r(打招呼)C:SSH-2.0-OpenSSH_5.2\r(自我介绍)C : 密钥交换初始化 (0x14 = 20) S: 密钥交换初始化 C: Diffie-Hellman GEX 请求 (0x22 = 34)(带有 DH GEX 最小值、位数和最大值) S: Diffie-Hellman 密钥交换回复(带有 P、 G 等) C:Diffie-Hellman GEX 初始化 S:Diffie-Hellman GEX 回复

我的客户端 -> OpenSSH 服务器:S:SSH-2.0-OpenSSH_5.1p1 Debian-6ubuntu2\r(打招呼)C:SSH-2.0-Some_Name\r(自我介绍)C:密钥交换初始化(0x14 = 20)S:密钥交换初始化 C:Diffie-Hellman GEX 请求(0x22 = 34)(DH GEX 最小值、位数和最大值)

然后是一个虚假的 TCP 数据包作为回复(可能在 GEX 请求之后/之后服务器连接已终止。

我还没有使用 AES128(我认为这是选择的加密,但我不确定如何验证...),我仍然以非压缩格式发送,希望得到 P、G等值来进行 DH 计算。

所以我被困的地方是:RFC 4419 第 3 页http://www.ietf.org/rfc/rfc4419.txt 我已经发送了 SSH_MSG_KEY_DH_GEX_REQUEST,但服务器没有响应 SSH_MSG_KEX_DH_GEX_GROUP。

谁能给我一些关于我在这里不理解的建议?服务器是否不理解我的 GEX 请求(因为它需要加密,或者?)?

非常感谢任何帮助,谢谢:)

0 投票
1 回答
327 浏览

java - ColdFusion 8 Diffie-Helman 加密

我正在与需要使用 Diffie-Hellman 加密算法的第 3 方集成。CF 文档表明这是受支持的算法

当我尝试Encrypt()使用“Diffie-Helman”或“DH”调用时,我收到错误消息:“您选择的安全提供程序不支持 Diffie-Hellman 算法。”

是否可以将 CF 配置为使用包含 DH 的不同安全提供程序?或者,是否可以直接使用 java 对象来完成这个?

0 投票
2 回答
1621 浏览

ruby - 在 Ruby 中为 Diffie-Hellman 生成大素数

我正在为我的一个大学课程的一个项目编写一个 diffie-hellman 密钥交换的 ruby​​ 实现。我需要生成至少 500 位长度的大(安全)素数。有任何想法吗?我应该使用 OpenSSL 库吗?如果是这样,您会推荐哪些功能?

0 投票
2 回答
2341 浏览

java - 从 Diffie-Hellman 输出中选择加密密钥

我在 Java 中与RFC 3526中的一些大型组实现了Diffie–Hellman 密钥交换。我的输出是一个相当大的字节数组。将输出的前 448 位(56 字节)用于河豚密钥是否安全?我应该以任何方式转换字节,还是为密钥选择任何特定字节?

0 投票
0 回答
646 浏览

java - 如何生成 ValueLink 商户工作密钥

我正在尝试使用 apache ofbiz ValueLinkApi 类的修改版本生成 ValueLink 商家工作密钥- src

我只对它进行了修改,使其成为一个独立的类,我可以在 ofbiz 框架的上下文之外运行它。

我的程序运行没有错误,但我的密钥没有被 api 接受。

你有没有实现过这个?您是否使用过这个库或其他类似 openSSL 的库?如果您使用了这个库,您是否必须修改它?

这是我的版本:

0 投票
1 回答
986 浏览

ssh - SSH2 Diffie-Hellman 组交换回复数据包中的未知值

我试图更多地了解 SSH 的工作原理。我正在使用 Wireshark 来抓取在我的机器之间传输的数据包(OpenSSH 在两端运行)。我被困在 Diffie-Hellman Group Exchange 回复包中。在加密算法名称之后,似乎有一个长度(4 字节)和值(1 字节)没有被 RFC 4419 解释或描述。RFC 说这个数据包中发送的第一块数据将是服务器的公钥和证书,但我不知道在哪里寻找证书格式来尝试解码这些数据。

这是从服务器接收到的数据包(不包括 TCP、IP 和以太网数据包信息)。为了便于阅读,我将其展开。我还指出了我理解的值和字段用途。RFC 4419 指出“主机密钥”、“f”和“哈希签名”位于这些位置。标有“->”的行包含让我感到困惑的数据。我看不到任何与 0x23 (35) 值相关的东西。

我已经通读了 RFC 4250-4254 和 4419,试图为这段代码 0x23 找到一些线索,但到目前为止我还没有成功。我完全有可能错过了 RFC 中的解释,所以如果是这种情况,请随时向我指出。任何提示或解释都会有所帮助。

谢谢你

0 投票
2 回答
1580 浏览

java - BouncyCastle 中的 Diffie-Hellman 设置生成器参数

我想生成 PKCS #3 中定义的新 DH 参数:

使用 BouncyCastle。我当前的代码

工作正常,但除了修改库之外,我看不到自己设置基础的方法。我缺少一些解决方法吗?

提前致谢。

0 投票
2 回答
27299 浏览

android - AES 加密:InvalidKeyException:密钥长度不是 128/192/256 位

我正在尝试使用 AES 加密 Android 上的字符串。对称密钥之前使用 Diffie-Hellman 算法确定,似乎没问题(密钥长度为 128 位,见下文)。
不过,我得到一个 InvalidKeyException: "Key length not 128/192/256 bits.

代码:

上面的代码导致以下输出:

之后,我得到了InvalidKeyException: Key length not 128/192/256 bits.但是正如你所看到的,SecretKey 的长度为 128 位!

有任何想法吗?

0 投票
4 回答
623 浏览

networking - 对经过身份验证的 Diffie Hellman 变体的安全审查

编辑

我仍然希望对此提供一些建议,我试图澄清我的意图......

当我在我的移动通信框架中遇到设备配对时,我研究了很多关于这个主题的论文,并且还从以前的问题中得到了一些输入。但是,我没有找到一个准备好实现协议的解决方案——所以我发明了一个衍生物,因为我不是加密极客,我不确定最终解决方案的安全警告:

主要问题是

  • SHA256 是否足以作为提交功能?
  • 在提交字符串中添加共享密钥作为身份验证信息是否安全?
  • 1024位组DH的整体安全性如何
  • 我假设最多 2^-24 位成功 MITM 攻击的概率(因为 24 位挑战)。这合理吗?
  • 什么可能是最有希望的攻击(除了从我麻木、冰冷的手上撕下设备)

这是算法草图

  • 对于首次配对,实现了“点对点无线网络中的密钥协议”(DH-SC)中提出的解决方案。我基于以下承诺:
    • 通信实体/角色的修复“UUID”(128 位,在协议开始时发送,在提交之前)
    • DH 公钥(192 位私钥,基于 1024 位 Oakley 组)
    • 24 位随机挑战
  • 提交是使用 SHA256 计算的
    • c = sha256(UUID || DH 酒吧 || 查尔)
  • 双方交换此承诺,开放和传输上述价值的明文内容。
  • 24位随机显示给用户进行手动认证
  • 计算 DH 会话密钥(128 字节,见上文)

  • 当用户选择持久配对时,会话密钥与远程 UUID 一起存储为共享密钥

  • 下次设备连接时,提交是通过在随机质询之前额外散列先前的 DH 会话密钥来计算的。确保打开时不会转移。

    • c = sha256(UUID || DH pub || DH sess || 查尔)
  • 现在,当本地方可以使用他自己的、存储的以前的 DH 会话密钥得出相同的承诺时,用户无需进行身份验证。成功连接后,新的 DH 会话密钥成为新的共享密钥。

由于这并不完全符合我迄今为止发现的协议(以及它们的安全证明),我很想在这里获得更多启用加密的人的意见。顺便提一句。我确实读过“EKE”协议,但我不确定额外的安全级别是什么。