首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SSL如何对从服务器到客户端的数据进行加密?

SSL如何对从服务器到客户端的数据进行加密?
EN

Stack Overflow用户
提问于 2012-06-09 17:45:07
回答 2查看 14.3K关注 0票数 22

大多数wiki文章都描述了客户端浏览器如何使用公钥(证书)加密敏感数据(例如用户名/密码),并将加密后的数据发送到服务器。服务器将使用私钥来解密它。我明白这部分了。但是没有明确的信息说明服务器如何加密数据并发送回浏览器。

以我的网上银行为例:

(0)我已经接受了我的网银的可信证书(公钥)。

(1)我的浏览器通过SSL访问https://myonlinebanking.com

(2)输入用户名/密码登录。这些数据是加密的,所以中间人只能看到无意义的数据。

(3)银行web服务器接收到我的加密数据,并使用其私钥解密,成功地对我的账户进行了认证。

下面是我的问题:

银行如何发回我的数据?银行用什么密钥加密响应数据?如果银行使用“公钥”加密,中间人就可以看到它,就像我看到的一样。所以中间人不知道我的用户名/密码,但他仍然可以看到我的账户余额?

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-09 21:52:59

TLS handshake过程在双方之间建立对称密钥,可能在该过程中使用非对称加密(细节取决于客户端/服务器之间协商的确切算法)。这样,通信在两个方向上都是加密的,而不仅仅是单向的。

然而,最终保护您免受MITM攻击的是,您的浏览器执行某种形式的主机名验证。首先检查由服务器在握手中提供的证书的有效性。如果成功,您的浏览器将检查证书是否绑定到与其对话的确切主机。如果忽略此检查,即使通信的其余部分严格遵循协议,包括所有加密元素,MITM攻击仍将成功。攻击者可以简单地伪装成任何主机,尽职尽责地执行协议的其余部分,您不会知道其中的区别。

票数 8
EN

Stack Overflow用户

发布于 2013-02-07 05:55:29

你有一些错误的假设:

  • HTTP数据并不总是使用服务器的公钥加密,以便将其发送到服务器。
  • 服务器的公钥只是在开始时(握手协议)用来建立安全密钥,对于安全密钥加密(对称密钥加密),通信是通过秘密密钥或对称密钥加密的,其中客户端(浏览器)和服务器使用相同的秘密密钥来加密和解密数据。

TLS (传输层安全)协议使用非对称加密(公钥)和对称加密(安全密钥)的组合。与您的银行的主要通信是使用对称加密,对于对称加密,在TLS握手期间使用非对称加密安全地建立会话密钥(安全密钥)。

这都是在传输层安全( TLS )握手中实现的,这在this link中有很好的解释。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10959961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档