【问题标题】:ruby openssl diffie hellman implementationruby openssl diffie hellman 实现
【发布时间】:2015-12-15 22:03:26
【问题描述】:

我在通过网络为我的一个学校项目实施一些安全措施时遇到了一些问题。我们已经有一个使用 Ruby 运行的完整网络。我们正在尝试使用 OpenSSL 库来使用 AES 256 CBC。我们已经尝试过使用 Diffie Hellman,但这就是我们遇到问题的地方: 节点 1 运行:

require 'openssl'
dh1 = OpenSSL::PKey::DH(256)
der = dh1.public_key.to_der
###we would send der to n2 here

显然可以将der发送到n2,所以n2会有这部分代码:

require 'openssl'
dh2 = OpenSSL::PKey::DH(der)

现在他们有了彼此的信息。然而,一个正在监听流量的节点是否能够获取此消息并能够拥有 dh1 的密钥?无法理解这一点。

【问题讨论】:

  • “[对等方如何]...获取此消息并能够获得 dh1 的密钥” - 那是 key distribution problem。我认为您需要进行一些背景阅读。 OpenSSL::PKey::DH(256) 在 Ruby 中是否表示 256 位?如果是这样,由于logjam,它可能需要大于 1024 位。

标签: ruby openssl diffie-hellman


【解决方案1】:

是的,监听节点可以拥有 dh1 的公钥。这就是 Diffie Hellman 的工作方式。窃听者既不知道私钥也不知道共享私钥。在不知道其中一个私钥的情况下,它无法解决共享密钥。

模数方程的设置使得当 dh2 将 dh1 的公钥提高到它自己的私钥 (dh1_public_key^dh2_private_key) 的值时,方程的结果是共享密钥,反之亦然。

【讨论】:

    猜你喜欢
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多