全部博文(695)
分类: 网络与安全
2016-06-21 15:07:23
在当前世界中,网络已成为不可或缺的元素。它将原来遥不可及的事物,方便快捷的联系到一起。为了充分利用网络所带来的便捷,越来越多的企业选择将信 息发布在网络上。电子商务、物联网、云计算与服务,也都在计划与实施中。与此同时,网络的普及,也给信息安全带来了挑战。如何保证信息在不可靠网络中的安 全传输,成为企业 IT 实施优先考虑的问题。
SSL 是指安全套接字(Secure Socket Layer),是应用最为广泛的安全协议。它在 TCP/IP 协议之上提供了一条安全通道,可以保证在不安全网络环境下的数据安全。它支持各种加密算法、数字签名、数字证书,可以防御常见的网络攻击。 WebSphere MQ 对 SSL 具有很好的支持,从而保证消息在网络中安全的传送。本文在介绍 SSL 的基础上,以实例方式详细描述了如何在 MQ 中实现基于 SSL 的安全传输。文章中的实例,主要基于 MQ 7.0.1.9,同时也会介绍新版本 MQ 7.1 及 MQ 7.5 的变化。
网 络将数以千万计的机器连接在一起,环境复杂多变,所以网络攻击也是花样百出。这里,根据攻击对消息产生的影响,主要可以划分为三类:窃听、篡改、仿冒。这 三种攻击方式,分别会破坏消息的私密性、完整性和通信双方的互信。针对这些攻击的特点,SSL 提供了可靠的防御策略。
窃听,即偷听别人的谈话,在网络中意味着拦截消息并偷看其中的内容。那么,为了避免消息被别人窃听,就需要对消息进行加密。这样,即使消息被攻击者截获,他们也无法轻松获知其中的内容。
加密即按照一定的规则(加密算法)将原消息(明文)转化为对窃听者不可读的密文。通信双方共享加密的规则,所以消息接收者可以将密文再转回可读的明文。密钥是一个随机字符串,是加密及解密不可或缺的元素。发送者使用密钥对明文加密,接收者使用密钥对密文解密。
通 信双方可以共享一个相同的密钥,用于加密和解密。这称为对称加密或者秘密密钥加密。这种方法的优势是速度快,劣势是难以安全的传递密钥,特别是有很多通信 对象时。要安全的将密钥交到通信方,你需要和每一个人见面。为了解决这个问题,就出现了不对称加密或者公共密钥加密。使用这种方法,每一个通信对象都有一 个密钥对:公钥和私钥。发送者使用对方的公钥加密,接收者使用自己的私钥解密。因为公钥是公开的,这就解决了密钥传递的问题。但是,也造成了一些性能的损 失。在实际的应用中,为了避免密钥传递问题同时保证性能,通常使用不对称加密来交换密钥,然后使用对称加密传输数据。
加密是一个非常重要,也非常活跃的研究领域,有非常多的加密算法。例如,数据加密标准(DES),三重 DES,RC2 和 RC4 等。
篡 改是指攻击者拦截并修改消息的内容。加密不能避免消息被修改,接收者也无法判断消息是否被修改过。这里,就需要用到消息摘要(Message Digest)技术。消息摘要是一个表示消息特征的定长字符串。它有两个重要的特征:不可逆性和抗冲突性。不可逆性是指从消息可以计算出消息概要,但是从 消息摘要基本不可能得到消息;抗冲突性是指要想产生具有相同摘要值的两条消息是相当困难的。这两个特性,使消息摘要可以用来验证消息的完整性。发送者使用 摘要算法计算出消息摘要,并随同消息发送给对方;接收者收到消息以后,同样会根据消息计算出消息摘要 , 并和收到的摘要对比。如果两者相同,则表示消息没有被篡改。
在实际应用中,消息摘要很少被单独使用,通常用于数字签名和消息认证码(MAC)。消息认证码是基于消息和密钥生成的消息摘要。它在验证完整性同时,可以在一定程度上完成用户验证功能。数字签名是经过加密的消息摘要。
仿 冒即假冒别人进行通信。消息认证码可以用来验证消息的发送者。数字签名则更进一步,具有不可抵赖性。因为数字签名是使用发送者私钥加密的消息摘要,只有发 送者才能产生。这一切似乎都很完美,使用加密防止窃听,使用摘要防止篡改,使用数字签名防止仿冒,似乎不要什么数字证书。事实当然不是这样,下面的攻击方 式将瓦解以上所有的防线。这就是中间人攻击(man-in-the-middle attack)。在通信双方交换公钥的过程中,攻击者拦截双方的公钥,并将自己的密钥发送给通信双方。这样,通信双方就会使用攻击者的密钥加密。在这样情 况下,所有的加密、签名都失效了。中间人攻击细节如下图所示:
图 1.中间人攻击从 上图可以看出,第 1, 2, 3, 4 步是公钥交换过程。在此过程中,攻击者获得了发送方和接收方的公钥,而将自己的公钥发送给通信双方。第 5, 6, 7, 8 步是发送消息的过程。在此过程中,发送方和接收方都是用攻击者公钥加密,而攻击者截获数据后重新使用通信双方公钥加密,这就使双方难以察觉攻击者的存在。
要 防范中间人攻击,就需要使用数字证书,这里,数字证书主要指由专门的证书颁发机构(CA)授权的证书,称为 CA 证书。CA 证书将证书属主信息和公钥绑定到一起。证书颁发机构负责验证证书申请者的身份信息。通过可信的第三方(CA),通信方可以向任何人证明其拥有的公钥,其他 人也可以通过 CA 验证其证书真伪,这就阻止了中间人攻击。CA 证书一般包含所有者的公钥 , 所有者的专有名称 , 签发证书的 CA 的专有名称 , 证书开始生效的日期 , 证书过期日期等信息。
与 CA 证书相对应的,还有自签署证书。自签署证书一般用在测试环境中。在后面的章节中,会使用自签署证书实现基于 SSL 的安全连接。
SSL 连接实现主要分为两部分:SSL 握手和数据传输。前者使用 SSL 握手协议建立连接,后者使用记录协议传输数据。这里,主要介绍 SSL 握手流程。握手是 SSL 客户端和 SSL 服务器端完成认证,并确定用于数据传输的加密密钥的过程。这里,SSL 客户端是指主动发起连接的一端,不要和 MQ 客户端混淆。SSL 握手具体流程如下:
在 SSL 连接建立后,将开始遵循记录协议对数据进行传输。