SSL/TLS/WTLS原理

https_proxy - cms4g-proxy - 一个基于GAE的代理中转 cms4g's proxy for gae java - Google Project Hosting

https_proxy  
ssl代理原理
Updated Apr 27, 2010 by skzr.org

SSL/TLS/WTLS原理

引用自:SSL/TLS/WTLS原理

重点是代理这一节

前言

首先要澄清一下名字的混淆:

  • SSL(Secure Socket Layer)是netscape公司设计的主要用于web的安全传输协议。这种协议在WEB上获得了广泛的应用。
  • IETF(www.ietf.org)将SSL作了标准化,即RFC2246,并将其称为TLS(Transport Layer Security),从技术上讲,TLS1.0与SSL3.0的差别非常微小。由于本文中没有涉及两者间的细小差别,本文中这两个名字等价。
  • 在WAP的环境下,由于手机及手持设备的处理和存储能力有限,wap论坛(www.wapforum.org)在TLS的基础上做了简化,提出了WTLS协议(Wireless Transport Layer Security),以适应无线的特殊环境。

 

我们从各式各样的文章中得知,SSL可以用于保密的传输,这样我们与web server之间传输的消息便是“安全的”。 而这种“安全”究竟是怎么实现的,最终有能实现多大程度的保密?本文希望能用通俗的语言阐明其实现原理。

二 整体结构概览

SSL是一个介于HTTP协议与TCP之间的一个可选层,其位置大致如下:

---------
| HTTP |
---------
| SSL |
---------
| TCP |
---------
| IP |
---------

如果利用SSL协议来访问网页,其步骤如下: 用户:在浏览器的地址栏里输入https://www.sslserver.com HTTP层:将用户需求翻译成HTTP请求,如 GET /index.htm HTTP/1.1 Host http://www.sslserver.com

SSL层: 借助下层协议的的信道安全的协商出一份加密密钥,并用此密钥来加密HTTP请求。 TCP层:与web server的443端口建立连接,传递SSL处理后的数据。

接收端与此过程相反。

SSL在TCP之上建立了一个加密通道,通过这一层的数据经过了加密,因此达到保密的效果。

SSL 协议分为两部分:Handshake Protocol和Record Protocol,。其中Handshake Protocol用来协商密钥,协议的大部分内容就是通信双方如何利用它来安全的协商出一份密钥。 Record Protocol则定义了传输的格式。

七 安全性

SecurityPortal在2000年底有一份文章《The End of SSL and SSH?》激起了很多的讨论, 目前也有一些成熟的工具如dsniff(http://www.monkey.org/~dugsong/dsniff/)可以 通过man in the middle攻击来截获https的消息。

从上面的原理可知,SSL的结构是严谨的,问题一般出现在实际不严谨的应用中。常见的攻击就是 middle in the middle攻击,它是指在A和B通信的同时,有第三方C处于信道的中间,可以完全 听到A与B通信的消息,并可拦截,替换和添加这些消息。

  • SSL可以允许多种密钥交换算法,而有些算法,如DH,没有证书的概念,这样A便无法验证B的公钥

和身份的真实性,从而C可以轻易的冒充,用自己的密钥与双方通信,从而窃听到别人谈话的内容。 而为了防止middle in the middle攻击,应该采用有证书的密钥交换算法。

  • 有了证书以后,如果C用自己的证书替换掉原有的证书之后,A的浏览器会弹出一个警告框进行警告,但又有多少人会注意这个警告呢?
  • 由于美国密码出口的限制,IE,netscape等浏览器所支持的加密强度是很弱的,如果只采用浏览器自带的加密功能的话,理论上存在被破解可能。

 

八 代理

下面探讨一下SSL的代理是怎样工作的(可参见6)。这可能与你开始想的不太一样:) 当在浏览器里设置了https的代理,而且在浏览器里输入了https://www.example.com之后, 浏览器会与proxy建立tcp链接,然后向其发出这么一段消息: CONNECT server.example.com:443 HTTP/1.1 Host: server.example.com:443

然后proxy会向webserver端建立tcp连接,之后,这个代理便完全成了个内容转发装置。浏览器 与web server会建立一个安全通道,因此这个安全通道是端到端的,尽管所有的信息流过了proxy, 但其内容proxy是无法解密和改动的(当然要由证书的支持,否则这个地方便是个man in the middle攻击的好场所,见上面的讨论)。

参考文献

你可能感兴趣的:(ssl)