使用Javascript通过HTTP进行HTTPS密钥协商和隧道连接

时间:2013-04-15 07:22:01

标签: encryption security protocols tunneling

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

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

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

有些事情:

  1. 客户端向服务器发送常规HTTP请求
  2. 服务器使用包含Javascript代码的页面进行响应
  3. 客户端的Javascript以异步方式将数据发送到用于协商的服务器
  4. 服务器运行某种脚本(例如PHP)来建立隧道
  5. 客户端和服务器通过加密隧道进行通信
  6. 我可以看到以这种方式发送具有安全性和完整性的消息是可能的,但是可以在不使用PKI的情况下进行身份验证,可能是通过利用服务器可以动态重写发送给客户端的Javascript的事实?

1 个答案:

答案 0 :(得分:1)

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