SSLv3的当前版本是3.1版,也被称为TLS。它提供了一种机制,在网络上进行安全的数据传输。它据说能够满足所有的安全需要,比如:你的银行帐户管理。
但是在这里我将告诉你,这实际上是不可能的。
在本文中,我首先将对SSL做一些介绍,这是非常重要的。不过,这里我们不会介绍诸如SSL是怎样实现连接的等深层问题,如果有兴趣,可以自己参考参考资料。
1.为什么使用SSL
SSL是为了实现网络数据传输中的如下目的设计的:
机密性
这是通过对数据进行加密实现的,在进行SSL握手时,SSL选择一种对称算法对数据进行加密,然后才在网络上传输数据。SSL使用的加密算法有好多种,如果某种算法被新的网络攻击方法识破,它只要选择另外的算法就可以了。
消息的完整性
SSL使用一种很健壮的信息验证码(Message Authentication Code),例如:SHA-1,验证码被放在数据包的后部,并且和数据一块被加密。这样,如果数据被修改,其散列值就无法和原来的验证码匹配,从而能够检测出数据是否被修改。MAC同时也被用于保护SSL连接免受干扰。
保护数据免受重放攻击(replay-attack)
SSL使用序列号来保护通讯方免受报文重放攻击。这个序列号被加密后作为数据包的负载。在整个SSL握手中中,都有一个唯一的随机数来标记这个SSL握手,这样重放便无机可乘。
免受recorder攻击(reorder-attack)
上面所说的序列号也可以防止攻击者记录数据包并以不同的次序发送。
端点验证
使用X509(当前版本是3)证书,SSL支持客户和服务器的验证。关于服务器的连接,我们稍后将深入介绍。
这听起来似乎很安全,但是看了本文介绍的程序,就就不这么想了。(不过,我们还不能打破客户端的验证)
使用本文介绍的攻击方法,我们就可以看到SSL连接上所有明文数据,根据我们的需要修改传输的数据,对数据进行中继发送,以错误的次序发送甚至丢弃我们不需要的报文。这种攻击方法就是所谓的途中人攻击(man in the middle attack,或者中间人攻击)。
2.X509数字证书
X509数字证书是SSL的一个组成部分。在SSL握手过程中,服务器向客户发送自己的数字证书。一个X509数字证书包括发行者的识别名(Distinguished Name)、主体(Subject)的识别名、一个版本号和序列号、选择的算法、密钥的有效期时间窗,还有主体的公钥。
主体(subject)是这个证书包含实体的名,证书中的公钥属于主体(Subject)。在平常的X509数字证书中,没有标志DNS名的域。通常,CN域被影射为DNS名,但是这只是一个客户和数字证书的实体必须都认可的协议。
发行者(issuer)是使用自己的私钥签发这个数字证书。它叫做数字证书中心(Certificate Authority,CA)。
让我们看一个X509数字证书:
[1] [2] 下一页