DH 与RSA的区别

有一朋友这样问到“dh是密钥协商交换用的,为何只有在服务器上有dh.pem文件,而客户端里没有,我就不明白了,客户端与服务器都有rsa公私钥了,能够传输对称密钥了,为何还须要dh算出对称密钥呢?”算法

咱们先一下,Open×××的man帮助是如何说dh选项的。
--dh file
File containing Diffie Hellman parameters in .pem format (required for --tls-server only).安全

Set file=none to disable Diffie Hellman key exchange (and use ECDH only). Note that this requires peers to be using an SSL library that supports ECDH TLS cipher suites(e.g. OpenSSL 1.0.1+, or mbed TLS 2.0+).服务器

Use openssl dhparam -out dh2048.pem 2048 to generate 2048-bit DH parameters. Diffie Hellman parameters may be considered public.ide

一、使用阶段不一样:DH用于TLS握手期间,RSA是用于数据通讯阶段。ui

二、若是没有这个选项,启动Open×××服务器会出错 Options error: You must define DH file (--dh)this

那么什么是Diffie-Hellman参数文件?
迪菲·赫尔曼密钥交换(Diffie–Hellman key exchange,简称「D–H」) 是一种安全协议。它可让双方在彻底没有对方任何预先信息的条件下经过不安全信道建立起一个密钥。这个密钥能够在后续的通信中做为对称密钥来加密通信内容。这个DH参数不是安全敏感的,因此只要在Open×××服务器有一份就能够了,并且即便被第三方拿到了,也无所谓。加密

若是想深刻一些,能够这样来理解:orm

一、RSA和DH都基于非对称算法。server

二、RSA: 经常使用的示例是Alice向Bob发送消息,并使用Bob的公钥加密消息。向Bob发送消息。鲍勃用他的私钥解密。验证签名以确保Alice发送签名。该消息将成为对称加密密钥。这是用于保护链接的内容。ip

三、DH Diffie Hellman交换依赖于生成秘密值的两个单独实体。经过一些数学算法,他们都可以产生共同的密钥值。这是一个对称密钥。

四、使用RSA,能够进行加密和签名的密钥对。使用DH,只执行加密,没有签名机制。

相关文章
相关标签/搜索