问题标签 [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.
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()
功能,但它也不起作用。文档
linux - 与备用用户进行 SSH 密钥交换
所以我使用的是 RHEL 7。我有两台服务器,用户帐户如下
- 根(明显)
- 行政
我希望设置以下列方式工作。
使用用户从服务器 1 到服务器 2 的无密码 SSH admin
,但 SSH 启动始终由root
用户完成。
我们不允许为root
用户进行 ssh 密钥交换,但我们正在使用的应用程序使用 root 来 ssh 到其他节点。
我希望我在这里有意义:)
SSH 使用root
用户到 server2,但在内部它应该使用admin
用户的密钥并使用管理员用户连接到 server2。
我试图配置/etc/ssh/ssh_config
文件并在那里添加主机/用户配置,现在我可以ssh server2
从root
用户运行,它使用我在 ssh_config 文件中定义的管理员用户连接到 server2,但它每次都提示输入密码,我不想要.
当我以用户身份发出 ssh 时,密钥交换admin
已经完成并经过测试可以正常工作。admin
提前致谢。
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 会话建立。
但我无法弄清楚它们将在哪里使用,因为它们是在密钥交换和飞地身份验证完成时生成的。
任何建议或提示表示赞赏,如果在这里有任何误解,请纠正我。非常感谢~
java - 在 Swift 中读取 Java 服务器发送的公钥
我正在尝试从 Java 服务器读取公钥(x509 格式编码)以完成我的椭圆曲线 Diffie Hellman Exchange。我可以毫无问题地将公钥发送到服务器,但现在我想读取服务器发送给 iOS 客户端的公钥。
这就是我回到iOS端的原因。为了处理它,我需要从输入流中读取它,然后将其转换为可用的公钥。这就是我现在在 iOS 端读取密钥的内容:
在这里我可以读到“publicKey”,我知道它里面有一些价值。我怎样才能把它变成一个可用的密钥来生成共享密钥?
TLDR:我想读取来自 Java 服务器 (ECDH) 的公钥,以在 iOS 客户端中生成用于加密的对称密钥。
c# - Windows 上 C# 和 C++ 之间的 Diffie Hellman 密钥交换
我想使用该算法在两者都运行的服务器和客户端Diffie Hellman
之间安全地交换密钥。我尝试使用in生成公钥,如下所示:C++
C#
Windows
ECDiffieHellmanCng
C#
此外,我正在AES key
使用以下代码派生:
这在上下文中效果很好C#
,但是我需要它与C++
.
有没有C++
兼容的库或代码ECDiffieHellmanCng
?我调查了Crypto++
,但它希望我生成一个p
,q
和g
以及公钥大小是128
字节,这看起来与我的C#
密钥交换方法不兼容。
无论如何,欢迎任何其他用于执行密钥交换的建议或代码示例。
arduino - 如何在 Arduino Nano 上安全地为 DH 生成 g 和 p
我想与 PC 和 Arduino 进行 DH Key 交换。我想在 Arduino 上生成 2048 位长的 Prime p 和 Base g。
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 成功了吗?
谢谢您的帮助 !
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 值一起使用?