问题标签 [ecdhe]

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 投票
2 回答
292 浏览

ssl - 如何在没有可导出私钥的情况下进行 ECDHE 握手

我正在构建一个实现 ECDSA_METHOD 的 OpenSSL 引擎,其中包括签名创建和签名验证功能。由于 ECDHE 私钥的唯一用途与签名创建有关,因此不需要从引擎中导出密钥并将其显示在其他任何地方。

但是,如果我不通过 SSL_set_private_key 函数向 SSL_Context 提供私钥,则 SSL 握手失败并出现以下错误:

我还尝试向 SSL_set_private_key 函数提供一个模拟密钥(与证书中的公钥无关的密钥),但此函数确实验证私钥/公钥是否匹配,如果它们不匹配,则会引发关于错误证书的错误吨。

看起来 openssl 在某些情况下允许绕过此验证,例如,这是我在 ssl/ssl_rsa.c 中找到的

我想,我需要一个类似的 EC 密钥,但我在任何地方都找不到。任何其他解决方案也值得赞赏。

0 投票
2 回答
2476 浏览

java - 如何在 Java 中序列化和使用 ECDH 参数

我希望在 2 个平台之间执行 ECDH 以获取共享密钥。我打算使用命名曲线(尚未确定哪条曲线)。流程看起来像这样:

  • 爱丽丝选择了一条曲线
  • Alice 为她的曲线生成一个随机密钥对
  • Alice 序列化一些关于她的曲线的数据
  • Alice 将她的公钥和曲线数据发送给 Bob
  • Bob 用 Alice 的数据初始化一条曲线
  • Bob 根据 Alice 的数据创建密钥对
  • Bob 执行 ECDH 以导出共享密钥
  • Bob 用他的公钥回应 Alice
  • Alice 执行 ECDH 以导出共享密钥

使用 bouncycastle,最干净的方法是什么?

我见过的几乎所有示例(例如:https://gist.github.com/wuyongzheng/0e2ed6d8a075153efcd3)都说明了获得共享密钥的过程,但似乎没有一个实际序列化有关曲线/起点 (G) 到“Bob”,以及如何使用 Bob 一侧的数据来重建曲线并生成相应的密钥。您需要向 Bob 发送什么数据?

0 投票
4 回答
1484 浏览

c++ - 从 BCRYPT_SECRET_HANDLE 将共享密钥导出为 BYTE 数组

我正在使用加密下一代 API (CNG) 实现 ECDHE。我成功生成了公钥和私钥。对于预共享密钥,我使用BCryptSecretAgreement API,它返回预共享密钥秘密句柄(BCRYPT_SECRET_HANDLE)。

如何从 BCRYPT_SECRET_HANDLE 将预共享密钥导出为 BYTE 数组?

0 投票
0 回答
417 浏览

android - 在 Android 中使用 TLS

我正在开发一个 Android 应用程序,它使用 TLS(TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256)通过蓝牙与我的设备(带有蓝牙模块的基于 ARM 的设备)进行通信。我认为:

  1. 来自 Android 的javax.net.ssl 。问题是临时(ECDH E)加密密钥从 API 20 开始,但我需要 API 11。我没有找到添加套件的方法。似乎这个库与 android 版本密切相关。API 版本和概述
  2. Bouncycastle(spongycastle)在不创建套接字的情况下,我没有找到使用它的方法。我需要像输入/输出流这样的东西,所以我可以不通过网络连接使用它。另外我根本没有找到 TLS/SSL。
  3. 自己实现一切。我可以从选定的套件中获取所有算法并自己实现协议,但我不知道我不知道什么,我害怕搞砸安全性。我不知道做这样的事情是否是一个好习惯(可能它的级别足够高,所以我自己实现它并不是很危险)

我的问题是:您可以为 TLS 推荐哪些库?自己实现协议(不是算法)是一种好方法吗?

0 投票
0 回答
118 浏览

ios - 如何在iOS中从给定的X分量、Y分量和曲线生成ECPublic Key?

我从服务器获取 X 分量、Y 分量和曲线值。我想使用 openssl 或 common crypto 从中派生服务器公钥。

在 iOS 中,没有直接的 API 可以生成具有给定 X、Y 和曲线值的公钥。

任何帮助都感激不尽。

0 投票
1 回答
353 浏览

crypto++ - ECDH 共享密钥与 Crypto++ 循环不匹配

我想在 3 个单位之间创建共享秘密,但这段代码给了我不同的秘密!有什么想法吗?

0 投票
1 回答
80 浏览

java - 可以在 californium 的帮助下在 CoAP 中实现 ECDSA 和 ECDH 类算法吗?

我正在为我的学者进行CoAP实施,我正在尝试在 CoAP 中集成 ECDSA 和 ECDH 之类的算法的组合版本,并将在实施后观察协议的行为。到目前为止,我已经通过Eclipse Californium 是 CoAP 的 Java 实现。但我仍然不清楚从哪里开始以及如何在 CoAP 中实现我的算法组合版本。尽管以下需要牢记建议。

  • 仅基于 Java 和 Eclipse 的方法。
  • 没有像 tinyOS、openWSN 这样的基于模拟的实现。

任何帮助,教程链接将不胜感激。我已经关注了 CoAP Tutorial for Eclipse

0 投票
1 回答
57 浏览

aes - 使用 ECDHE 密钥交换发送曲线参数和公钥的格式是什么?

我尝试在客户端使用 mbedtls 库使用 ECDHE 密钥交换和 AES 加密。使用 以下程序成功生成了密钥。是否有任何标准格式可以将曲线参数和公钥附加到加密文件中,以便服务器(可能使用 mbedtls 以外的库)可以解析它们?

0 投票
1 回答
468 浏览

ssl - 如何使用用于 fips 平台的“TLS1_ECDHE_RSA”密码通过 Openssl 生成 pem 证书

我想使用用于 fips 平台的“TLS1_ECDHE_RSA_”密码生成带有 OpenSSL 的“.pem”证书。另外,我使用的是椭圆曲线“sec384r1”。

即使密钥大小为 2048 位,我在非 fips 平台上使用的证书也无法在 fips 平台上运行。

我在客户端和服务器之间使用负载均衡器。这是配置:

在客户端上使用 Curl:

curl -v -o ssl_ecdhe.txt -tls1.2 http://30.1.1.101/ssl_ecdhe.txt

在服务器上使用 Openssl:

/usr/local/ssl/bin/openssl s_server -accept 443 -cert /root/2k.pem -key /root/2k.key -tls1_2 -named_curve secp384r1 -WWW -msg

负载均衡器上的配置:

请帮我解决一下这个。

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() 方法中(这似乎过于繁琐且不必要)?