问题标签 [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.
vector - Diffie-Hellman -- Primitive root mod n -- 密码学问题
在下面的片段中,请从第一个“for”循环开始解释发生了什么以及为什么。为什么加0,为什么在第二个循环中加1。bigi 下的“if”语句中发生了什么。最后解释一下modPow方法。提前感谢您的有意义的答复。
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 请求(因为它需要加密,或者?)?
非常感谢任何帮助,谢谢:)
java - ColdFusion 8 Diffie-Helman 加密
我正在与需要使用 Diffie-Hellman 加密算法的第 3 方集成。CF 文档表明这是受支持的算法。
当我尝试Encrypt()
使用“Diffie-Helman”或“DH”调用时,我收到错误消息:“您选择的安全提供程序不支持 Diffie-Hellman 算法。”
是否可以将 CF 配置为使用包含 DH 的不同安全提供程序?或者,是否可以直接使用 java 对象来完成这个?
ruby - 在 Ruby 中为 Diffie-Hellman 生成大素数
我正在为我的一个大学课程的一个项目编写一个 diffie-hellman 密钥交换的 ruby 实现。我需要生成至少 500 位长度的大(安全)素数。有任何想法吗?我应该使用 OpenSSL 库吗?如果是这样,您会推荐哪些功能?
java - 从 Diffie-Hellman 输出中选择加密密钥
我在 Java 中与RFC 3526中的一些大型组实现了Diffie–Hellman 密钥交换。我的输出是一个相当大的字节数组。将输出的前 448 位(56 字节)用于河豚密钥是否安全?我应该以任何方式转换字节,还是为密钥选择任何特定字节?
java - 如何生成 ValueLink 商户工作密钥
我正在尝试使用 apache ofbiz ValueLinkApi 类的修改版本生成 ValueLink 商家工作密钥- src
我只对它进行了修改,使其成为一个独立的类,我可以在 ofbiz 框架的上下文之外运行它。
我的程序运行没有错误,但我的密钥没有被 api 接受。
你有没有实现过这个?您是否使用过这个库或其他类似 openSSL 的库?如果您使用了这个库,您是否必须修改它?
这是我的版本:
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 中的解释,所以如果是这种情况,请随时向我指出。任何提示或解释都会有所帮助。
谢谢你
java - BouncyCastle 中的 Diffie-Hellman 设置生成器参数
我想生成 PKCS #3 中定义的新 DH 参数:
使用 BouncyCastle。我当前的代码
工作正常,但除了修改库之外,我看不到自己设置基础的方法。我缺少一些解决方法吗?
提前致谢。
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 位!
有任何想法吗?
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”协议,但我不确定额外的安全级别是什么。