问题标签 [public-key-exchange]

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

openssl - 从 EVP_PKEY 到缓冲区的 OpenSSL 公钥

我正在编写一个通过连接到 Google 服务器的 TCP 套接字发送消息来参与 TLS 1.2 握手的客户端。我正在使用 ECDH 密钥交换方法。

我使用此代码生成了客户端密钥对,现在我想将 ClientKeyExchange 发送到包含公钥的服务器。为此,我首先需要将 EVP_PKEY 中包含的密钥传输到缓冲区中。我已经对服务器 peerkey 进行了相反的转换,但我现在还没有弄清楚该怎么做。

我的代码是:

该代码在调用时会导致分段错误EVP_PKEY_set1_EC_KEY(pkey, tempEcKey)

我究竟做错了什么?

我也查看了该EVP_PKEY_get_raw_public_key()功能,但它也不起作用。文档

0 投票
1 回答
27 浏览

linux - 与备用用户进行 SSH 密钥交换

所以我使用的是 RHEL 7。我有两台服务器,用户帐户如下

  1. 根(明显)
  2. 行政

我希望设置以下列方式工作。

使用用户从服务器 1 到服务器 2 的无密码 SSH admin,但 SSH 启动始终由root用户完成。

我们不允许为root用户进行 ssh 密钥交换,但我们正在使用的应用程序使用 root 来 ssh 到其他节点。

我希望我在这里有意义:)

SSH 使用root用户到 server2,但在内部它应该使用admin用户的密钥并使用管理员用户连接到 server2。

我试图配置/etc/ssh/ssh_config文件并在那里添加主机/用户配置,现在我可以ssh server2root用户运行,它使用我在 ssh_config 文件中定义的管理员用户连接到 server2,但它每次都提示输入密码,我不想要.

当我以用户身份发出 ssh 时,密钥交换admin已经完成并经过测试可以正常工作。admin

提前致谢。

0 投票
1 回答
20 浏览

intel - 为什么我们在 DH 安全会话建立中需要发起者或响应者的 enclave 身份?

我正在使用 sgx_dh API 开发一个 sgx 应用程序。工作流程可以总结如下(这里的两个角色分别是dh_initiator,简称dh_i,以及dh_responder,即dh_r。):

step0:在dh_i和dh_r端发起会话;

step1:dh_r生成包含g_a的msg1并将msg1发送给dh_i;

step2:dh_i处理msg1,生成包含g_b的msg2,并将msg2发送给dh_r;

step3:dh_r处理msg2并生成msg3,包括对共享密钥的确认,然后将msg3发送给dh_i;

step4:dh_i 处理 msg3。DH 密钥交换完成。

step3 dh_r 会输出一个sgx_dh_session_enclave_identity_t type变量,这样step4 的dh_i 就会输出一个同类型的变量。根据 SGX Developer Reference,这两个变量用于 dh 会话建立。

但我无法弄清楚它们将在哪里使用,因为它们是在密钥交换和飞地身份验证完成时生成的。

任何建议或提示表示赞赏,如果在这里有任何误解,请纠正我。非常感谢~

0 投票
1 回答
327 浏览

java - 在 Swift 中读取 Java 服务器发送的公钥

我正在尝试从 Java 服务器读取公钥(x509 格式编码)以完成我的椭圆曲线 Diffie Hellman Exchange。我可以毫无问题地将公钥发送到服务器,但现在我想读取服务器发送给 iOS 客户端的公钥。

这就是我回到iOS端的原因。为了处理它,我需要从输入流中读取它,然后将其转换为可用的公钥。这就是我现在在 iOS 端读取密钥的内容:

在这里我可以读到“publicKey”,我知道它里面有一些价值。我怎样才能把它变成一个可用的密钥来生成共享密钥?

TLDR:我想读取来自 Java 服务器 (ECDH) 的公钥,以在 iOS 客户端中生成用于加密的对称密钥。

0 投票
2 回答
564 浏览

c# - Windows 上 C# 和 C++ 之间的 Diffie Hellman 密钥交换

我想使用该算法在两者都运行的服务器和客户端Diffie Hellman之间安全地交换密钥。我尝试使用in生成公钥,如下所示:C++C#WindowsECDiffieHellmanCngC#

此外,我正在AES key使用以下代码派生:

这在上下文中效果很好C#,但是我需要它与C++.

有没有C++兼容的库或代码ECDiffieHellmanCng?我调查了Crypto++ ,但它希望我生成一个p,qg以及公钥大小是128字节,这看起来与我的C#密钥交换方法不兼容。

无论如何,欢迎任何其他用于执行密钥交换的建议或代码示例。

0 投票
1 回答
90 浏览

arduino - 如何在 Arduino Nano 上安全地为 DH 生成 g 和 p

我想与 PC 和 Arduino 进行 DH Key 交换。我想在 Arduino 上生成 2048 位长的 Prime p 和 Base g。

0 投票
1 回答
186 浏览

c# - Xamarin.iOS => 创建密钥对并将公钥 (X.509) 发送到 ASP.NET MVC Application .NET 4.7.2

我是 RSA 的新手。我已经使 Windows 和 Xamarin.Android 客户端应用程序与 ASP.NET MVC .NET 4.7.2 应用程序很好地通信。一切正常。客户端应用程序可以与服务器共享他们的公钥,服务器可以与客户端应用程序做同样的事情。

现在我在 Xamarin.iOS 中实施解决方案,并按照本教程创建密钥对:https ://msicc.net/how-to-perform-asymmetric-encryption-without-user-input-hardcoded-values-with- xamarin-ios/

我的问题是将公钥导出到服务器。服务器无法识别公钥。

我的 C# 代码在 Xamarin.iOS 中进行了导出:

在服务器端,有我的 c# 代码:

我花了很长时间查看帖子,并在 swift、objectif c 中看到了许多示例。似乎 iOS 没有导出为 X.509 格式。我还看到微软在 Xamarin.iOS 中制作了像 SecCertificate 和 SecCertificate2 这样的类,可以导出 X.509 证书,但是当我使用它时,调试器在导出时冻结。

我怎样才能实现我的目标?你已经用 Xamarin.iOS 成功了吗?

谢谢您的帮助 !

0 投票
1 回答
133 浏览

java - Diffie Hellman 密钥协议在 Java 中使用可选的子质 q 和 DHParameterSpec

我正在尝试执行 Diffie Hellman Hey 协议,作为参数定义的一部分,我有 3 个值:

一个素数模 p 一个基生成器 g 一个子素数 q

查看用于创建执行此协议所需的密钥的各种构造函数,我似乎无法设置 q 值:

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/javax/crypto/spec/DHParameterSpec.html

DHParameterSpec​(BigInteger p, BigInteger g)
使用素数模 p 和基础生成器 g 为 Diffie-Hellman 构造参数集。DHParameterSpec​(BigInteger p, BigInteger g, int l)
使用素数模 p、基生成器 g 和随机指数(私有值)的比特大小 l 为 Diffie-Hellman 构造参数集。

https://docs.oracle.com/javase/9​​/docs/api/javax/crypto/spec/DHPublicKeySpec.html

DHPublicKeySpec​(BigInteger y, BigInteger p, BigInteger g)
采用公共值 y、素数模 p 和基生成器 g 的构造函数。

https://docs.oracle.com/javase/9​​/docs/api/javax/crypto/spec/DHPrivateKeySpec.html

DHPrivateKeySpec​(BigInteger x, BigInteger p, BigInteger g)
采用私有值 x、素数模 p 和基生成器 g 的构造函数。

现在,我知道 Bouncy Castle 有一个支持这个的实现:

https://people.eecs.berkeley.edu/~jonah/bc/org/bouncycastle/crypto/params/DHParameters.html

但我不能使用充气城堡。

有没有办法将 DHParameterSpec/DHPublicKey/DHPrivateKey 与我缺少的 q 值一起使用?