问题标签 [ecdh]

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 回答
2159 浏览

java - 如何使用 ECDH 加密明文?

我正在寻找示例 Java 代码来实现 ECDH 加密的密码。我已经找到了获取所需密钥的方法,但仍然没有找到加密文本的解决方案。感谢是否有人可以提供一些指导。

顺便说一句,我在为 Android 编程时使用 SpongyCastle。

非常感谢!

0 投票
3 回答
4328 浏览

java - 在 Java 中实现 Diffie-Hellman 密钥交换

我正在尝试在 Java 中实现 Diffie-Hellman 密钥交换,但我很难理解规范:

根据 JWA (RFC 7518) 在 Direct Key Agreement 模式下使用曲线 P-256、dT 和 QC 作为本地机制完成 Diffie-Hellman 密钥交换过程,以生成由 Transaction 标识的一对 CEK(每个方向一个) ID。此版本规范支持的参数值为:

  • “alg”:ECDH-ES
  • “apv”:SDK 参考编号
  • “epk”:QC,JSON Web Key (JWK) 格式
  • {“kty”:“EC”“crv”:“P-256”}
  • 所有其他参数:不存在
  • CEK:“kty”:oct - 256 位

创建以下数据的 JSON 对象作为要签名的 JWS 负载:

{“MyPublicKey”:“QT”,“SDKPublicKey”:“QC”}

根据 JWS (RFC 7515) 使用 JWS 紧凑序列化生成完整 JSON 对象的数字签名。此版本规范支持的参数值为:

  • “alg”:PS256 或 ES256
  • “x5c”:X.5C v3:Cert(MyPb) 加上可选的链接证书

据我了解,ECDH 会生成一个密钥。在共享我的临时公钥 (QT) 后,SDK 会生成相同的密钥,因此我们以后可以交换使用相同密钥加密的 JWE 消息。

JSON {“MyPublicKey”: “QT”, “SDKPublicKey”:” QC”} 将被签名并发送,但我不明白我将如何使用apvepk ,因为这些标头参数用于JWE而不是第一个要共享的JWS 。

在同一规范中,他们谈论这些 JWE 消息,但他们没有这些 apv 和 epk 参数。

根据 JWE (RFC 7516) 使用与 SDK 相同的“enc”算法加密 JSON 对象,获得的 CEK 由“kid”和 JWE Compact Serialization 标识。此版本规范支持的参数值为:

  • “alg”:目录
  • “enc”:A128CBC-HS256 或 A128GCM
  • “孩子”:交易 ID
  • 所有其他参数:不存在

我还阅读了RFC 7518中的示例,在那里我可以看到正在使用的标头参数 apv 和 epk,但我不确定哪些标头参数是 JWE 还是 JWS?

任何关于如何使用 nimbus-jose-jwt 或任何其他 java 库来实现的想法都会非常有帮助。谢谢

0 投票
1 回答
350 浏览

ecdsa - 哪个顺序是正确的?ECDSA 在 ECDH 之前还是在 ECDH 之后运行?

我对 ECDSA 和 ECDH 的执行顺序感到困惑,哪个先运行?

由于 ECDH 无法避免 MITM 附加,因此使用 ECDSA 来验证实体。那么 ECDSA 应该在 ECDH 之前运行吗?

还是根本不重要?

0 投票
0 回答
161 浏览

ios - 适用于 ios/swift 的符合 fips 的认证加密

我正在寻找符合 fips 的经过身份验证的加密。如果我理解正确,则 ios 中不支持开箱即用的身份验证加密。在那种情况下,我想我可以做 AES-CBC + SHA256。我知道后者是支持的。支持前者吗?

是否有其他替代方案?

编辑:关于这个主题 - ios 是否支持通用加密中的 ECDH?还是仅支持内部核心加密?

谢谢,Z

0 投票
1 回答
1394 浏览

go - 如何在 Go 中解压缩 ECDH P256 曲线上的单个 X9.62 压缩点?

Golang 的椭圆曲线库可以在给定具有 X 和 Y 值(未压缩坐标)的公共坐标的情况下导出密钥。

但是,当给定的点是 X9.62 压缩形式中具有给定 y 位的单个值时,如何解压缩它?

OpenSSL 使用以下方法处理这种情况:

https://github.com/openssl/openssl/blob/4e9b720e90ec154c9708139e96ec0ff8e2796c82/include/openssl/ec.h#L494

似乎也有一个类似的问题解决了所涉及的数学问题,但不是 Go 的最佳实践,具体来说:

https://crypto.stackexchange.com/questions/8914/ecdsa-compressed-public-key-point-back-to-uncompressed-public-key-point

这应该如何在 Go 中完成?

0 投票
3 回答
5799 浏览

ios - ios/swift 中的椭圆曲线 Diffie Hellman

iOS 是否公开用于生成密钥的 API,以及使用 ECDH 导出密钥?

据我所见,苹果在内部使用它(特别是 x25519),但我不认为它通过通用加密或其他方式暴露为公共 API。

谢谢,

Z

0 投票
1 回答
1750 浏览

python-3.x - 在python中使用python和secp384曲线生成ECDH密钥

私钥对,我正在尝试生成 ECDH 密钥,我正在尝试找到一个 python 库来帮助我做到这一点,如果那里有任何 python 库,有人可以帮助我吗?

0 投票
1 回答
4791 浏览

openssl - prime256v1 曲线的 OpenSSL NID

我正在尝试使用 OpenSSL 创建 EC Diffie Hellman 密钥。我正在使用下面的行。我试图找到 prime256v1 曲线的 nid 但无法找到。我也查阅了 openssl 文档。openssl 不支持 prime256v1 曲线吗?

key = EC_KEY_new_by_curve_name(NID_secp256k1); // prime256v1

0 投票
1 回答
229 浏览

node.js - crypto.createECDH 没有被 webpack 添加

我想使用nodejs中crypto模块提供的createECDH函数。我下载了所有依赖项。Webpack 没有在我生成的 javascript 文件中添加 createECDH 函数。如何使用节点中可用的加密的 createECDH 功能。

它增加了许多函数,如 createCipher、createDechiper、createDiffihelman、listCiphers、getCiphers 等。

0 投票
2 回答
883 浏览

webcrypto-api - Web Crypto API – ECDH – 可以仅使用私钥组件导入私钥,而无需公钥组件?

给定一个 P-256 椭圆曲线 Diffie-Hellman 私钥(它只是一个随机的 256 位整数):是否可以使用 window.crypto.subtle.importKey() 方法将此私钥导入 CryptoKey 对象Web Crypto API – 没有公钥组件?

我知道如果公钥组件(从私钥组件派生)也可用,则可以导入私钥。例如,下面的代码运行成功:

但是,如果只有私钥组件可用,而没有公钥组件,如下面的代码所示,Web Crypto API 会引发 DOMException,并显示消息“提供给操作的数据不符合要求”。

我也尝试过使用 pkcs8 格式作为密钥,而不是 JWK,但也没有运气。

Web Crypto API 的文档显示可以导入 JWK 格式的 ECDH 私钥 - 因此,似乎在没有公钥组件的情况下也可以这样做(Web Crypto API 应该能够如果需要,从内部的私钥组件计算公钥组件,就像使用 .generateKey() 方法一样)。但是,importKey() 方法似乎仅在包含公钥组件时才有效。

我在这里错过了什么吗?如果没有,是否有人知道解决方案或解决方法,在导入之前单独计算公钥组件,并将它们与私钥组件一起包含在 importKey() 方法中(这似乎过于繁琐且不必要)?