IPSec
IPSec(Internet协议安全性)是一种开放标准的框架结构,通过使用加密的安全服务以确保在 Internet 协议IP)网络上进行保密而安全的通讯,Microsoft; Windows 2000、Windows XP 和Windows Server2003家族实施IPSec是基于“Internet工程任务组(IETF)”IPSec 工作组开发的标准。IPSec 提供了一种能力以保护工作组、局域网计算机、域客户端和服务器、分支机构(物理上为远程机构)、Extranet 以及漫游客户端之间的通信。
IPSec的作用目标[ ]
- 保护IP数据包的内容。
- 通过数据包筛选及受信任通讯的实施来防御网络攻击。
- 这个基础为专用网络计算机、域名、站点、远程站点、Extranet和拨号用户之间的通信提供了既有力又灵活的保护,它甚至可以用来阻碍特定通讯类型的接收和发送。
IPSec的安全特性[ ]
- 不可否认性,"不可否认性"可以证实消息发送方是唯一可能的发送者,发送者不能否认发送过消息。不可否认性是采用公钥技术的一个特征,当使用公钥技术时发送方用私钥产生一个数字签名随消息一起发送,接收方用发送者的公钥来验证数字签名。
- 反重播性,"反重播"确保每个IP包的唯一性,保证信息万一被截取复制后不能再被重新利用、重新传输回目的地址。该特性可以防止攻击者截取破译信息后,再用相同的信息包冒取非法访问权(即使这种冒取行为发生在数月之后)。
- 数据完整性,防止传输过程中数据被篡改,确保发出数据和接收数据的一致性,IPSec利用Hash函数为每个数据包产生一个加密检查和,接收方在打开包前先计算检查,若包遭篡改导致检查和不相符,数据包即被丢弃。
- 数据可靠性,在传输前对数据进行加密,可以保证在传输过程中,即使数据包遭截取信息也无法被读。该特性在IPSec中为可选项与IPSec策略的具体设置相关。
IPSec公钥加密[ ]
IPSec的公钥加密用于身份认证和密钥交换。公钥加密也被称为"不对称加密法",即加解密过程需要两把不同的密钥,一把用来产生数字签名和加密数据,另一把用来验证数字签名和对数据进行解密,使用公钥加密法,每个用户拥有一个密钥对其中私钥仅为其个人所知,公钥则可分发给任意需要与之进行加密通信的人虽然密钥对中两把钥匙彼此相关,但要想从其中一把来推导出另一把,以目前计算机的运算能力来看,这种做法几乎完全不现实。因此在这种加密法中,公钥可以广为分发而私钥则需要仔细地妥善保管。
IPSec的Hash函数和数据完整性[ ]
Hash信息验证码HMAC(Hash message authentication codes)验证接收消息和发送消息的完全一致性(完整性)。这在数据交换中非常关键,尤其当传输媒介如公共网络中不提供安全保证时更显其重要性,HMAC结合hash算法和共享密钥提供完整性。Hash散列通常也被当成是数字签名但这种说法不够准确,两者的区别在于:Hash散列使用共享密钥而数字签名基于公钥技术,Hash算法也称为消息摘要或单向转换,称它为单向转换是因为:
- 双方必须在通信的两个端头处各自执行Hash函数计算;
- 使用Hash函数很容易从消息计算出消息摘要,但其逆向反演过程以目前计算机的运算能力几乎不可实现。
Hash散列本身就是所谓加密检查和或消息完整性编码MIC(Message Integrity Code),通信双方必须各自执行函数计算来验证消息。举例来说,发送方首先使用HMAC算法和共享密钥计算消息检查和,然后将计算结果A封装进数据包中一起发送;接收方再对所接收的消息执行HMAC计算得出结果B并将B与A进行比较,如果消息在传输中遭篡改致使B与A不一致接收方丢弃该数据包,有两种最常用的hash函数:
- HMAC-MD5 MD5是基于RFC1321。MD5对MD4做了改进,计算速度比MD4稍慢但安全性能得到了进一步改善,MD5在计算中使用了64个32位常数,最终生成一个128位的完整性检查和。
- HMAC-SHA 安全Hash算法定义在NIST FIPS 180-1,其算法以MD5为原型,SHA在计算中使用了79个32位常数,最终产生一个160位完整性检查和,SHA检查和长度比MD5更长,因此安全性也更高。
IPSec加密和数据可靠性[ ]
IPSec使用的数据加密算法是DES--Data Encryption Standard(数据加密标准),DES密钥长度为56位在形式上是一个64位数,DES以64位(8字节)为分组对数据加密,每64位明文经过16轮置换生成64位密文,其中每字节有1位用于奇偶校验,所以实际有效密钥长度是56位,IPSec还支持3DES算法,3DES可提供更高的安全性,但相应地计算速度更慢。
IPSec的Diffie-Hellman算法[ ]
要启动安全通讯,通信两端必须首先得到相同的共享密钥(主密钥),但共享密钥不能通过网络相互发送,因为这种做法极易泄密,Diffie-Hellman算法是用于密钥交换的最早最安全的算法之一。DH算法的基本工作原理是:通信双方公开或半公开交换一些准备用来生成密钥的"材料数据",在彼此交换过密钥生成"材料"后,两端可以各自生成出完全一样的共享密钥。在任何时候,双方都绝不交换真正的密钥。通信双方交换的密钥生成"材料",长度不等,"材料"长度越长,所生成的密钥强度也就越高密钥破译就越困难,除进行密钥交换外IPSec还使用DH算法生成所有其他加密密钥。AH报头字段包括:
- Next Header(下一个报头),识别下一个使用IP协议号的报头。
- Length(长度):AH报头长度。
- Security Parameters Index (SPI,安全参数索引):这是一个为数据报识别安全关联的32位伪随机值,SPI值0被保留来表明"没有安全关联存在"。
- Sequence Number(序列号):从1开始的32位单增序列号不允许重复,唯一地标识了每一个发送数据包,为安全关联提供反重播保护,接收端校验序列号为该字段值的数据包是否已经被接收过,若是则拒收该数据包。
- Authentication Data(AD,认证数据):包含完整性检查和,接收端接收数据包后,首先执行hash计算再与发送端所计算的该字段值比较,若两者相等表示数据完整,若在传输过程中数据遭修改,两个计算结果不一致则丢弃该数据包。