网络技术是从1990年代中期发展起来的新技术 , 它把互联网上分散的资源融为有机整体 , 实现资源的全面共享和有机协作 , 使人们能够透明地使用资源的整体能力并按需获取信息 。资源包括高性能计算机、存储资源、数据资源、信息资源、知识资源、专家资源、大型数据库、网络、传感器等 。当前的互联网只限于信息共享 , 网络则被认为是互联网发展的第三阶段 。IPSec 协议不是一个单独的协议 , 它给出了应用于IP层上网络数据安全的一整套体系结构 , 包括网络认证协议 Authentication Header(AH)、封装安全载荷协议Encapsulating Security Payload(ESP)、密钥管理协议Internet Key Exchange (IKE)和用于网络认证及加密的一些算法等 。IPSec 规定了如何在对等层之间选择安全协议、确定安全算法和密钥交换 , 向上提供了访问控制、数据源认证、数据加密等网络安全服务 。
一、安全特性
IPSec的安全特性主要有:
·不可否认性 "不可否认性"可以证实消息发送方是唯一可能的发送者 , 发送者不能否认发送过消息 。"不可否认性"是采用公钥技术的一个特征 , 当使用公钥技术时 , 发送方用私钥产生一个数字签名随消息一起发送 , 接收方用发送者的公钥来验证数字签名 。由于在理论上只有发送者才唯一拥有私钥 , 也只有发送者才可能产生该数字签名 , 所以只要数字签名通过验证 , 发送者就不能否认曾发送过该消息 。但"不可否认性"不是基于认证的共享密钥技术的特征 , 因为在基于认证的共享密钥技术中 , 发送方和接收方掌握相同的密钥 。
·反重播性 "反重播"确保每个IP包的唯一性 , 保证信息万一被截取复制后 , 不能再被重新利用、重新传输回目的地址 。该特性可以防止攻击者截取破译信息后 , 再用相同的信息包冒取非法访问权(即使这种冒取行为发生在数月之后) 。
·数据完整性 防止传输过程中数据被篡改 , 确保发出数据和接收数据的一致性 。IPSec利用Hash函数为每个数据包产生一个加密检查和 , 接收方在打开包前先计算检查和 , 若包遭篡改导致检查和不相符 , 数据包即被丢弃 。
·数据可靠性(加密) 在传输前 , 对数据进行加密 , 可以保证在传输过程中 , 即使数据包遭截取 , 信息也无法被读 。该特性在IPSec中为可选项 , 与IPSec策略的具体设置相关 。
·认证 数据源发送信任状 , 由接收方验证信任状的合法性 , 只有通过认证的系统才可以建立通信连接 。
二、基于电子证书的公钥认证
一个架构良好的公钥体系 , 在信任状的传递中不造成任何信息外泄 , 能解决很多安全问题 。IPSec与特定的公钥体系相结合 , 可以提供基于电子证书的认证 。公钥证书认证在Windows 2000中 , 适用于对非Windows 2000主机、独立主机 , 非信任域成员的客户机、或者不运行Kerberos v5认证协议的主机进行身份认证 。
三、预置共享密钥认证
IPSec也可以使用预置共享密钥进行认证 。预共享意味着通信双方必须在IPSec策略设置中就共享的密钥达成一致 。之后在安全协商过程中 , 信息在传输前使用共享密钥加密 , 接收端使用同样的密钥解密 , 如果接收方能够解密 , 即被认为可以通过认证 。但在Windows 2000 IPSec策略中 , 这种认证方式被认为不够安全而一般不推荐使用 。
四、公钥加密
IPSec的公钥加密用于身份认证和密钥交换 。公钥加密 , 也被称为"不对称加密法" , 即加解密过程需要两把不同的密钥 , 一把用来产生数字签名和加密数据 , 另一把用来验证数字签名和对数据进行解密 。
使用公钥加密法 , 每个用户拥有一个密钥对 , 其中私钥仅为其个人所知 , 公钥则可分发给任意需要与之进行加密通信的人 。例如:A想要发送加密信息给B , 则A需要用B的公钥加密信息 , 之后只有B才能用他的私钥对该加密信息进行解密 。虽然密钥对中两把钥匙彼此相关 , 但要想从其中一把来推导出另一把 , 以目前计算机的运算能力来看 , 这种做法几乎完全不现实 。因此 , 在这种加密法中 , 公钥可以广为分发 , 而私钥则需要仔细地妥善保管 。
五、Hash函数和数据完整性
Hash信息验证码HMAC(Hash message authentication codes)验证接收消息和发送消息的完全一致性(完整性) 。这在数据交换中非常关键 , 尤其当传输媒介如公共网络中不提供安全保证时更显其重要性 。
HMAC结合hash算法和共享密钥提供完整性 。Hash散列通常也被当成是数字签名 , 但这种说法不够准确 , 两者的区别在于:Hash散列使用共享密钥 , 而数字签名基于公钥技术 。hash算法也称为消息摘要或单向转换 。称它为单向转换是因为:
1)双方必须在通信的两个端头处各自执行Hash函数计算;
2)使用Hash函数很容易从消息计算出消息摘要 , 但其逆向反演过程以目前计算机的运算能力几乎不可实现 。
Hash散列本身就是所谓加密检查和或消息完整性编码MIC(Message Integrity Code) , 通信双方必须各自执行函数计算来验证消息 。举例来说 , 发送方首先使用HMAC算法和共享密钥计算消息检查和 , 然后将计算结果A封装进数据包中一起发送;接收方再对所接收的消息执行HMAC计算得出结果B , 并将B与A进行比较 。如果消息在传输中遭篡改致使B与A不一致 , 接收方丢弃该数据包 。
有两种最常用的hash函数:
·HMAC-MD5 MD5(消息摘要5)基于RFC1321 。MD5对MD4做了改进 , 计算速度比MD4稍慢 , 但安全性能得到了进一步改善 。MD5在计算中使用了64个32位常数 , 最终生成一个128位的完整性检查和 。
·HMAC-SHA 安全Hash算法定义在NIST FIPS 180-1 , 其算法以MD5为原型 。SHA在计算中使用了79个32位常数 , 最终产生一个160位完整性检查和 。SHA检查和长度比MD5更长 , 因此安全性也更高 。
六、加密和数据可靠性
IPSec使用的数据加密算法是DES--Data Encryption Standard(数据加密标准) 。DES密钥长度为56位 , 在形式上是一个64位数 。DES以64位(8字节)为分组对数据加密 , 每64位明文 , 经过16轮置换生成64位密文 , 其中每字节有1位用于奇偶校验 , 所以实际有效密钥长度是56位 。IPSec还支持3DES算法 , 3DES可提供更高的安全性 , 但相应地 , 计算速度更慢 。
七、密钥管理
·动态密钥更新
IPSec策略使用"动态密钥更新"法来决定在一次通信中 , 新密钥产生的频率 。动态密钥指在通信过程中 , 数据流被划分成一个个"数据块" , 每一个"数据块"都使用不同的密钥加密 , 这可以保证万一攻击者中途截取了部分通信数据流和相应的密钥后 , 也不会危及到所有其余的通信信息的安全 。动态密钥更新服务由Internet密钥交换IKE(Internet Key Exchange)提供 , 详见IKE介绍部分 。
IPSec策略允许专家级用户自定义密钥生命周期 。如果该值没有设置 , 则按缺省时间间隔自动生成新密钥 。
·密钥长度
密钥长度每增加一位 , 可能的密钥数就会增加一倍 , 相应地 , 破解密钥的难度也会随之成指数级加大 。IPSec策略提供多种加密算法 , 可生成多种长度不等的密钥 , 用户可根据不同的安全需求加以选择 。
·Diffie-Hellman算法
要启动安全通讯 , 通信两端必须首先得到相同的共享密钥(主密钥) , 但共享密钥不能通过网络相互发送 , 因为这种做法极易泄密 。
Diffie-Hellman算法是用于密钥交换的最早最安全的算法之一 。DH算法的基本工作原理是:通信双方公开或半公开交换一些准备用来生成密钥的"材料数据" , 在彼此交换过密钥生成"材料"后 , 两端可以各自生成出完全一样的共享密钥 。在任何时候 , 双方都绝不交换真正的密钥 。
通信双方交换的密钥生成"材料" , 长度不等 , "材料"长度越长 , 所生成的密钥强度也就越高 , 密钥破译就越困难 。除进行密钥交换外 , IPSec还使用DH算法生成所有其他加密密钥 。
推荐阅读
- IPSec基础-IPSec体系结构
- IPSec基础-IPSec策略
- IPSec基础-IPSec概览
- GRE:通用路由封装
- IPSEC 安全架构、应用及展望
- 密钥或对称密钥加密术
- 公共密钥基础设施
- 公共密钥或不对称加密
- IKE IPSec基础-密钥交换与密钥保护Internet密钥交换