单向SSL是单向加密吗?

11

如果使用单向 SSL(服务器证书验证),则客户端发送的数据将使用服务器证书的公钥进行加密,因此客户端发送的数据具有隐私保护。我的问题如下:

  1. 这是否意味着在单向SSL中,从服务器到客户端发送的数据未经加密以明文形式发送?

  2. 对于服务器到客户端和客户端到服务器通信,数据/消息未签名,因此无法保证防篡改或数据完整性。在使用基于SSL的传输安全而不是消息安全选项时,是否有其他手段实现数据完整性?

2个回答

20

单向SSL指的是服务器不验证客户端的身份,对于SSL的其他安全属性没有影响。

虽然SSL协议有些复杂,但基本的流程如下:客户端生成一个随机密钥,将其加密以便只有服务器可以解密,并将其发送给服务器。现在服务器和客户端有了一个共享的秘密,可以用于加密和验证双向通信。

服务器不知道客户端的身份,但除此之外,加密和消息验证都是双向的。

更新:

1)是的,双向加密是对称的,并使用会话设置期间生成的共享密钥。

2)使用共享密钥,消息完整性很容易得到保证。你只需要确保消息具有特定的形式。例如,我可以在发送的每个消息前缀中添加序列号并在加密之前附加校验和。你使用共享密钥解密它并验证序列号和校验和。攻击者如何在不知道共享密钥的情况下替换或修改消息并仍然保持序列号和校验和不变呢?


这是否意味着双向加密使用对称算法和共享的随机密钥? - ideafountain
您能否解释一下当客户端没有持有证书时,如何保证消息完整性的双向确认? - ideafountain

0
在SSL中,有两件事情发生:
首先,使用类似Diffie-Hellman方法的东西来协商会话密钥。这将生成一个共享的会话密钥,但从不在各方之间传输密钥。
其次,在连接期间,该会话密钥用于普通对称加密。
SSL确实以某种方式使用公共/私有,因为X509证书用于标识连接的至少一端。这些证书使用非对称密钥对进行签名。
摘自如何使用仅一个密钥对保护双向通信的SSL?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接