在 OpenVPN 中,dh1024.pem 文件是否依赖于 CA?

信息安全 diffie-hellman 打开VPN
2021-08-26 18:20:37

正如问题已经说明的那样,我想知道由 ./build-dh 在 openvpn 中生成的 dh1024.pem 文件是否依赖于 ca.(crt|key) 文件。

原因是我需要 ./clear-all 密钥,但在编辑器中保持 dh1024.pem 文件打开,并在清除密钥后重新保存。然后我继续创建 ./build-ca、./build-key-server 和 ./build-client。

就此而言,dh*.pem 文件是否依赖于服务器密钥或其他任何东西?或者它只是一个包含大量计算良好且没有依赖关系的数据的文件?

亲切的问候。

1个回答

该文件不依赖于任何证书或私钥。这也不是秘密。它甚至可以在不一定信任甚至彼此不认识的各种服务器之间共享。

dh1024.pem文件包含Diffie-Hellman 参数DH密钥交换是在给定有限群中使用的算法即,整数模素数p对于成功的 DH:

  • 有已知参数p(大素数)和g(2 到p-2范围内的常规整数,称为生成器)。
  • 甲方生成一个随机秘密值a 计算g a mod p,并将其发送给乙方
  • 乙方生成一个随机秘密值b,计算g b mod p ,并将其发送给甲方
  • 甲方计算 ( g b ) a mod p (将从B收到的值提高其秘密指数a)。
  • 乙方计算 ( g a ) b mod p (将从A收到的值提高到其秘密指数b)。

DH 的神奇之处在于AB最终得到相同的值,窃听者无法从通过线路发送的两个值重新计算。

在所有这些中,pg值是“参数”,必须为双方所知;但它们并不是秘密。只要满足以下条件,就可以确保安全:

  • p足够大(至少 1024 位;可以说,2048 位会更好)。
  • p不是使用使离散对数更容易的“特殊结构”生成的。
  • g生成模p的整数子群,其大小是足够大素数的倍数(gp的阶是最小整数r ≥ 1 使得g r mod p = 1;要求r的长度至少为 160 位,最好是 256 位或更多)。

整个世界可以使用相同的参数;但许多人更喜欢生成自己的参数,只是为了确保他们的参数没有“熟”。这就是这样build-dh做的。结果文件 ( dh1024.pem) 包含pg,但没有其他内容。这些价值观并不是秘密。它们不依赖于任何外部元素,也不依赖于证书、私钥或其他任何东西。