1.ca介绍:
      基于Internet网的电子商务系统技术使在网上购物的顾客能够极
其方便轻松地获得商家和企业的信息,但同时也增加了对某些敏感
或有价值的数据被滥用的风险。买方和卖方都必须对于在因特网上
进行的一切金融交易运作都是真实可靠的,并且要使顾客、商家和
企业等交易各方都具有绝对的信心,因而因特网(Internet)电子商
务系统必须保证具有十分可靠的安全保密技术,也就是说,必须保
证网络安全的四大要素,即信息传输的保密性、数据交换的完整性、发
送信息的不可否认性、交易者身份 的确定性。
      然而基于数字证书的应用就是互联网通讯中标志通讯各方身份信
息的一系列数据,提供了一种在Internet上验证您身份的方式,其作
用类似于日常生活中的×××。它是由一个由权威机构-----CA机
构,又称为证书授权(Certificate Authority)中心发行的,人们可以
在网上用它来识别对方的身份。数字证书是一个经证书授权中心数
字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的
证书包含一个公开密钥、名称以及证书授权中心的数字签名。一般
情况下证书中还包括密钥的有效时间,发证机关(证书授权中心)的
名称,该证书的序列号等信息,证书的格式遵循 ITUT X.509国际
标准。
       一个标准的X.509数字证书包含以下一些内容:
 
                                     201241718329133.jpg
 
Version..................证书的版本标识符(例如,版本3)
Serialnumber................标识证书的唯一整数
Signature....................用于签证书的算法标识
Issuer................证书颁发者的唯一识别名
Validity ................证书有效时间段
Subject....................证书拥有者的唯一识
SubjectPublicKeyInfo ........证书拥有者的公钥
IssuerUniqueID........颁发者的可选唯一标识符
SubjectUniqueID ........主体的唯一识别符
Extensions ........可选的扩展
      在介绍完了x.509证书的基本结构之后,让我们来研究一下x.509数
字证书在CA环境之下的应用。
证书在CA中的应用,主要是基于CA(Certificate Authorization):称之
为证书权威,承担公钥体系中公钥的合法性检验的责任。它的基本
作用是充当一个通信双方都相互信任的第三方,由CA负责为通信双
方颁发数字证书,当拥有数字证书的双方要相互通信时,交换并且互
相验证对方的证书,由于通信双方都相互信任CA,故由CA颁发的数
字证书也被双方相互信任。
2.IPSec中的CA:
      IPSec的整个过程实际是非常复杂的,但是正是由于它需要一个极
其复杂的过程来对流量实施各种各样的处理,它才能够为网络通信提
供一个非常安全的底层环境。
IPSec对等体的认证一共有三种方法:
1.pre-shared-key认证
此种认证方法配置最简单,在小型网络环境中应用比较广泛,但是由
于需要针对每一个neighbor指明一个key,因此扩展性不是很好。
2.RSA公钥加密
RSA公钥加密相对pre-shared-key较安全,它的本质是在IKE阶段一的
第三、四条消息就开始用对方的公钥进行加密,但是配置过程比较
复杂,需要手工将对端的RSA公钥保存在本端。
3.RSA私钥加密
RSA私钥加密(即数字证书)是三种认证方式中最安全,也是扩展性
最好的。
下面将较详细的讲解RSA私钥加密在IPSec中的整个过程。
(注:本专题只讨论基于certificate认证的main-mode的IPSec协商过程。
其余认证模式以及认证类型(比如:aggressive-mode)不在本技术专题
范围之内。)
 IPSec协商过程大致可以分为下列几个步骤:
1。敏感流量触发IPSEC建立。
2。IKE阶段1
3。IKE阶段2
4。IPSEC隧道建立
5。IPSEC隧道终止
IKE阶段1:
IKE阶段1的主要目的是协商IKE-SA,最终目的是保护IKE阶
段2,IPSec-SA的安全协商。
IKE阶段1的协商共有两种模式:Main-mode , Aggressive-mode,本
专题只讨论Aggressive-mode,
Main-mode的基本过程是3次交换,6条消息。
1,2条消息:  主要目的是协商IKE_SA
包头格式如下(注:并非完整的包头,只列出其中重要的字段):
                                       
                                 2012417183224324.jpg
            
对端基于收到的transform-payload的中加密算法,散列算法,DH
组等信息,
将找到一个相匹配的IKE_SA.
同样对端也会把已经相匹配的IKE_SA封装在transform_payload
中,传递给本端,消息格式基本一致,故不再列出。
IKE_SA是双向的,即每台IPSEC路由器的入站与出站方向的SA是
一致的。
3,4消息:   DH交换
                     其目的是产生后继密钥资源。
                     DH交换的工作原理如下:
                           DH Exchange
  
      p(本端产生的随机数)                 q (对端产生的随机数)
                                 g=h^(p-1)/q
      Xa(本端产生的私钥)                   Xb(对端产生的私钥)
      Ya= g^Xa mod p                      Yb= g^Xb mod p
   (本端利用私钥计算出自已的公钥)  (对端利用私钥计算出自已
的公钥)
                                   Ya-------->
                                   <---------Yb
         (通信双方相互交换公钥,记住只交换公钥,私钥永远不交换)
                  ZZ = Yb^(Xa) mod p = Ya(Xb) mod p
(双方计算出一个共同的共享的秘密数字ZZ,也就是后面SKEYID
会话密钥中的g^xy)
       DH交换的工作原理得益于一个非常简单的数学公式:
                          (a^m)^n=(a^n)^m
                   就像(2^2)^3=(2^3)^2=64一样简单
 
     从上述DH交换的过程我们可以看到,最终生成的ZZ是由已端
的RSA私钥和对端的RSA公钥共同组成,但是双方在DH交换的
过程中,只是相互交换双方的RSA公钥,RSA私钥永远不会在线
路上传递,因为即使有窃听者,他能得到的也只是RSA公钥,因
此DH交换帮助我们在一个共享的、不安全的底层介质之上,实现
了通信双方加密密钥的安全协商。                          
Message_3 , Message_4消息格式如下:
                                
                                 2012417183236755.jpg
 
CKY_I/CKY_R:双方各自产生的随机数
KE_Payload:包含了双方各自的公钥g^xi
Nonce_Payload:双方各自产生的临时值,用于后继SKEYID的协商
当第3,4条消息交换完成之后,通信双方将会计算一个非常重要
的参数:
SKEYID(会话密钥,此密钥做为产生后继三个子密钥
SKEYID_d, SKEYID_a, SKEYID_e的密钥源):    
公式如下:SKEYID  =  prf { Ni|Nr,g^xy }
表示:将Ni与Nr的串联作为key,带入明文的g^xy中,作一个prf(伪随
机处理)。                           
 
利用此SKEYID产生一个子密钥:
SKEYID_d = prf { SKEYID, g^xy | CKY_I | CKY_R | 0 }            
                        用于最终加密数据的密钥原材料
SKEYID_a = prf { SKEYID, SKEYID_d | g^xy | CKY_I | CKY_R | 1 } 
                         用于IKE阶段2,提供数据完整性保护
SKEYID_e = prf { SKEYID, SKEYID_a | g^xy | CKY_I | CKY_R | 2 } 
                        用于加密后继的IKE消息
 
5,6条消息:   对等体之间进行认证(rsa-signature)
        采用certificate进行认证:
                           
                                 2012417183247671.jpg
 
有必要对signature_payload说明一下:
发起方首先基于IDi_b计算一个HASH(I):
HASH(I) = prf (SKEYID , g^xi | g^xr | CKY_I | CKY_R | SA | IDi_b )  
然后发起方再用自已的RSA密钥对中的RSA私钥对此HASH(I)加密。
加密的结果就存放在Signature_Payload中。
 
注意:以上消息将用SKEYID_e加密,因此main-mode保护的是一部分
的IKE阶段1, 和全部的IKE阶段2。(IKE阶段2的保护将在后文介绍)
对端在收到第5条消息之后,将按照下列步聚解封装:
1.用SKEYID_e解密。
2.解密Certificate_Payload , 获得发起方的RSA密钥对中的公钥(g^xi).
3.用g^xi解Signature_Payload 获取HASH(I)
  由于signature_payload是用发起方的RSA私钥加密的,故用发起方的
RSA公钥可以解密,满足非对称加密算法的基本原理。
4.自已计算HASH(I),将所得结果与第3步的HASH(I)进行比较,从
而完成认证。
接收方也会开始一个同样的过程,包头几乎一致辞,唯一不一样的是
接收方的HASH计算公式
        HASH(R) = prf (SKEYID , g^xi | g^xr | CKY_I | CKY_R | SA | IDr_b )  
                    
至此,IKE阶段1完成,到目前为止,通信双方还是没有为真正保护用
户数据的加密算法,散列算法等达成一致,双方只是为这一事情的协
商构建了一个安全的通道。
IKE阶段2:
     IKE阶段2只有一种模式:QM(Quick Mode)
     主要目的:协商真正用来保护用户数据的IPSec_SA.
     3条消息。
    
     Message 1 , Message 2:
 
                                 2012417183257470.jpg
 
对端收到之后,将基于本端所支持的Ipsec-sa,找到一组通信双方都
支持的SA。
比如双方都支持以3DES,SHA分别作为加密算法和散列算法。
HASH(1)= prf {SKEYID_a , Message_ID | SA | Ni | IDci_b | IDcr_b }
接收端返回的消息几乎一致,唯一不同的是HASH_payload:
HASH(2)= prf {SKEYID_a , Message_ID | SA | Ni | Nr | IDci_b | IDcr_b}
Message 3:       
          
                                 201241718336266.jpg
 
               HASH(3)= prf {SKEYID_a , 0 | Message_ID | Ni_b | Nr_b }
               message_3的作用可以简单的理解为对message_2的确认。
 
到此为止,IKE阶段2的协商全部完成,最后通信双方只剩下一件最
最重要的事情,那就是计算保护用户数据的加密密钥。
           K= prf { SKEYID_d , Protocol | SPI | Ni_b | Nr_b }
由于IPSEC_sa是单向的, 所以SPI参数是不同的,故入站与出站的
Key值不相同,故数据在加密时和解密时的密钥也是不一样的,这
是一件很有意思的事情,也充分说明了IPSec的安生性。
 
3.基于CA认证的IPSec配置实例:
下面附上在CISCO路由器上的一个基于证书认证的IpSec ×××配置
过程
 
(仅以R1为例):
Certificate配置过程:
利用SCEP获取路由器的证书
1.配置router的时钟
clock set
clock timezone
2.控制路由器memory
crypto ca certificate query(可选)
3.配置路由器主机名,域名
hostname
ip domain-name
4. 产生RSA密钥对
crypto key generate rsa
5.宣称CA
crypto ca trustpoint CA
enrollment url http://202.106.10.254/certsrv/mscep/mscep.dll
enrollment mode ra
6.获取CA的证书
crypto ca authenticate CA
7.获取路由器自已的证书
crypto ca enroll CA
 
检查CRL:
crypto ca crl request CA
检查路由器上的证书:
show crypto ca certificate
删除路由器上的证书:
conf t
crypto ca certificate chain CA
no certificate
删除被标识的CA:
no crypto ca idnetity CA
IpSec配置过程:
1.入站ACL允许ISAKMP , AH , ESP 进入。
   access-list 101 permit udp host 192.168.12.2 host 192.168.12.1 eq isakmp
   access-list 101 permit ahp host 192.168.12.2 host 192.168.12.1
   access-list 101 permit esp host 192.168.12.2 host 192.168.12.1
   access-list 101 permit ospf any any
 
   int s0
   ip access-group 101 in
2.打开ISAKMP。
   crypto isakmp enable
3.建立IKE策略。
   crypto isakmp policy 100
   encryption des
   hash sha
   authentication rsa-sig
   group 1
   lifetime 86400
4.标识身份类型
   crypto isakmp identity hostname
6.定义敏感流量
   access-list 102 per ip 172.16.10.0 0.0.0.255 172.16.20.0 0.0.0.255
7.建立transform-set
   crypto ipsec transform-set TRANS esp-sha-hmac esp-des
   mode tunnel
8.建立加密映射
   crypto map IPSEC 100 ipsec-isakmp
   match address 102
   set peer 192.168.12.2
   set transform-set TRANS
   set security-association lifetime seconds 3600
   set security-association lifetime kilobytes 4608000
9.激活加密映射
   int s0
   crypto map IPSEC
 
       到此为止,基于certificate的IPSec实现的基本过程就是如此,
希望对大家有所帮助。
-----------------------------------------------------------------------------------------------------------------------------
推荐读物:
RFC2409     --------The Internet Key Exchange (IKE)  
                                    D. Harkins, D. Carrel
                                              
RFC2459     --------Internet X.509 Public Key Infrastructure Certificate and CRL Profile
                                    R. Housley, W. Ford, W. Polk, D. Solo
                        
RFC2402     --------IP Authentication Header
                                    S. Kent, R. Atkinson
 
RFC2406     --------IP Encapsulating Security Payload (ESP)
                                    S. Kent, R. Atkinson