众所周知,不同主机之间的网络数据传输主要是通过TCP/IP来完成的。无论是企业局域网数据传输,还是互联网上的数据传输,都是如此。但是,令人想不通的是,在当初TCP/IP协议的设计过程中,并没有提供任何安全性。也就是说,光凭TCP/IP协议,并不能过保障数据在网络中的安全与稳定的传输。为此,数据在网络中的安全性要依赖于高层的应用程序。互联网技术发展到现在,已经有不少提高网络运输稳定与安全的解决方案。笔者今天结合Cisco技术谈谈如何通过SSL来实现这个需求。
SSL中文名字叫做安全套接层协议,他使用TCP/IP为高层协议建立安全连接。它运行在TCP/IP和高层协议之上,提供数据传输的安全性。SSL协议其包括两个分支,分别为SSL纪录协议与SSL握手协议。
一、三步完成SSL纪录协议
SSL纪录协议相对来说,比较简单。它定义了数据在网络中传输的格式,并对此采取加密处理。同时还提供了一些验证手段,防止在传输过程中数据被人为的破坏,从而影响数据传输的稳定性。要实现这些目的,只需要简单的三步即可。
第一步:分块。当上层的数据被转移到SSL协议所在的层之后,数据将会被分块。从上层传递下来的数据往往是以明文形式传送的。通常情况下,分块过后的数据不会超过214字节。分块的时候,一般不会考虑数据的内容形式,而只考虑大小。即具有同样类型的不同纪录消息会被组合为一个纪录;而如果一个纪录容量比较大的话,也会被分割为多个块。
第二步:压缩并加密。分块之后,SSL协议就会对要传输的数据使用压缩算法进行压缩,并且在压缩过程中同时进行加密处理。压缩算法必须保证数据在压缩后不会被丢失。当另外一端接收到数据之后,就会采用对应的解压算法对数据进行解压缩,同时完成数据的解密过程。
第三步:纪录有效载荷的保护。在数据传输过程中,另外一个需要关注的问题,就是传输数据的稳定性。也就是说,传输的数据有没有被意外的更改等等。SSL协议也提供这方面的保护。当完成对数据压缩与加密之后,SSL纪录协议会计算出完整的校验值,也就是所谓的消息鉴别码。在传输数据的时候,这个消息鉴别码会随同上面的块一同被加密传送。在接收端,数据被解密、解压缩;然后也会重新计算着消息鉴别码,以验证数据是否在传输过程中被意外修改。
二、SSL握手协议
SSL纪录协议只是在单机上对信息进行重新分块并进行压缩与加密,而没有涉及到网络连接。SSL握手协议则主要用来解决主机之间的连接问题。SSL握手协议使用SSL纪录协议,在两台支持SSL的设备之间通过交换一系列信息,以建立SSL连接。SSL握手协议在建立连接的过程中,主要完成对服务器与客户之间的相互鉴别、确定所要采用的加密算法、通过使用公开密钥加密技术产生共享的加密信息、建立加密的SSL连接等等。
建立一个SSL会话要比SSL纪录协议复杂的多,往往需要通过多个步骤才能够完成。这里出于篇幅的限制,也就不再展开了。大家若有需要可以去参考相关的书籍。笔者这里主要对几个容易搞混的地方做一些说明,以便于大家应用SSL协议。
一是加密方法的选择。在SSL建立会话传递数据的过程中,要确保其路过的每一个网络设备都支持SSL协议。否则的话,就会出现数据传输上的问题。而现在包括思科在内的网络设备,大部分已经都支持SSL协议。但是,SSL协议所采用的加密方法有上十种。虽然现在的网络设备基本都支持SSL协议,可是不一定会支持所有的加密算法。为此,SSL协议会在建立会话的过程中,选择大家都支持的一种加密算法。在对于一些安全性级别要求比较高的场合中,网络管理员要对其具体采用的加密算法进行监控。若无法满足企业的安全性需求,则要及时的更换设备或者对设备进行升级,以满足比较高的加密算法以及安全性需求。
……