0

HTTPS 广泛用于在线安全。它提供安全性和完整性,但不提供身份验证。为确保客户不与中间人交谈,我们拥有数字证书和 PKI。这一切都很好,除了在以下标准适用的情况下:

  • 服务器和客户端不共享一个公共的、受信任的根 CA,因此它们无法验证彼此的证书
  • 环境(例如防火墙、权限等)不允许使用常规 HTTPS 协议

问题是:我们是否仍然可以在客户端和服务器之间发送安全的、经过身份验证的消息,也许使用 Javascript?

类似于以下内容:

  1. 客户端定期向服务器发送 HTTP 请求
  2. 服务器响应包含 Javascript 代码的页面
  3. 客户端的Javascript异步发送数据到用于协商的服务器
  4. 服务器运行某种脚本(例如 PHP)来建立隧道
  5. 客户端和服务器通过加密隧道进行通信

我可以看到可以以这种方式发送具有安全性和完整性的消息,但是是否可以在不使用 PKI 的情况下进行身份验证,也许是通过利用服务器可以动态重写发送给客户端的 Javascript 的事实?

4

1 回答 1

1

您的步骤 2 中存在一个问题 - Server responds with page containing Javascript code:您怎么知道坐在电线上的人没有修改此 Javascript,因为它是以明文形式传输的?基本上,当 X 想要验证 Y 时,X 应该知道一些关于 Y 的信息——它可以是公共信息,例如它可以验证的公钥/证书或共享秘密

于 2013-04-15T17:38:42.703 回答