如何在 OpenSSL 中使用预共享密钥
Posted
技术标签:
【中文标题】如何在 OpenSSL 中使用预共享密钥【英文标题】:How to use pre-shared keys in OpenSSL 【发布时间】:2017-01-14 10:03:49 【问题描述】:是否可以在系统上生成 2 个预共享密钥,将它们分发给两个主机 A 和 B,以便 A 和 B 可以使用这些密钥进行它们之间的加密连接? 我说的不是 RSA 之类的公钥,而是移交给双方的 2 个预共享密钥!
我必须在 C++ 中实现它,所以如果可能的话,我需要一个可行的解决方案。
【问题讨论】:
"是否可以在系统上生成 2 个预共享密钥,分发给两个主机 A 和 B,以便 A 和 B 可以使用这些密钥进行加密连接他们” - 是的。 TLS 为其提供了一系列密码套件:TLS-SRP 和 TLS-PSK。两者都使用共享密钥来构建安全通道。 SRP 使用 Diffie-Hellman 问题,而 PSK 使用 Block Cipher 作为底层原语。 然而,这两个都只使用预共享密钥进行身份验证。他们仍然使用协商的会话密钥进行实际加密。 那么如何让两台主机使用预共享密钥呢?我可以简单地将它们复制到一个特殊的目录中,当它们接收到传入连接时,它们会被读取和应用? 【参考方案1】:是的,这是可能的。您似乎正在寻找的是对称密钥加密。
在这种情况下,密钥通常只是所需的随机字节数。任何加密安全的 RNG 源都可以。如果你以后要使用 openssl,RAND_bytes()
就可以了。
另见AES Encryption -Key Generation with OpenSSL
【讨论】:
但是我如何将这个生成的密钥放在主机上并让它们用于传入的 SSL/TLS 连接? 这不是问题文本所要求的。但是您可以在谷歌搜索“openssl tls psk”bitbucket.org/tiebingzhang/tls-psk-server-client-example/src/… 的第一个链接中找到示例以上是关于如何在 OpenSSL 中使用预共享密钥的主要内容,如果未能解决你的问题,请参考以下文章
手机中的WIFI , HG520s的共享密钥是啥?求高手解救。