AES加密機制在IPSec協(xié)議中的應用

目前,IPSec是VPN構建中使用最為廣泛的一種協(xié)議,將來可能成為IP-VPN的標準。在基于IPSec的VPN實現中,加密算法的選擇是核心問題,它直接影響到系統(tǒng)的安全性。正是如此,由于AES加密算法具有卓越的性能,使用AES加密機制能夠充分保證IPSec VPN系統(tǒng)的安全和效率。

一、IPSec體系結構

IPSec是IP Security(IP安全)的縮寫,是由IETF IPSec工作組提出的將安全機制引入TCP/IP網絡的一系列標準。設計IPSec的目的足為IPv4和IPv6提供可互操作的、高性能的、基于加密技術的通信安全。IPSec協(xié)議主要由IP驗證頭(IPAuthentication Header, AH)、封裝安全載荷(EncapsulatingSecurity Payload,ESP)以及Internet密鑰交換(Internet KeyExchange,IKE)3個子協(xié)議組成,同時還涉及認證、加密算法和安全關聯(lián)(Security Association,SA)等方面。它們之間的關系如圖1所示。

AES加密機制在IPSec協(xié)議中的應用

封裝安全載荷(ESP)可確保IP數據包的機密性、數據的完整性以及對數據源認證。此外,它也能負責對重放攻擊的抵抗。IP驗證頭(AH)與ESP類似,也提供了數據完整性、數據源認證以及抗重放攻擊的能力。但它不能用來保證數據的機密性。Internet密鑰交換(IKE)協(xié)議足由“Internet安全關聯(lián)和密鑰管理”(ISAKMP)協(xié)議、Oaklay協(xié)議和SKEME協(xié)議組成的一種“混合型”協(xié)議,并在ISAKMP規(guī)定的框架內運作。IKE協(xié)議定義了通信實體間進行身份認證、SA創(chuàng)建、加密算法協(xié)商以及共享會話密鑰生成的方法。

二、AES加密機制在IPSec協(xié)議中的應用

Rijndael加密算法是一個分組迭代加密算法,采用可變的密鑰長度和分組長度,能夠有效地抵抗差分和線性分析的攻擊,確保了算法的安全性。但為了滿足AES的要求,Rijndael加密算法固定分組長度為128位,密鑰長度和輪數可變。NIST為AES加密算法和其它一些聯(lián)邦信息處理標準(FIPS)已經認可的密碼算法定義了5種操作模式,密碼分組鏈接(Cipher Block Chaining,CBC)模式,電子密碼本(ElectronicCodeBook,ECB)模式,密碼反饋(Cipher FeedBack,CFB)模式,輸出反饋(Output FeedBack,OFB)模式和計數(Counter, CTR)模式。IETF IPSec工作組下一步正試圖使AES成為IPSec ESP中的默認加密算法,要求所有IPSec實現必須兼容AES加密算法。

下面主要分析在IPSec ESP中應用AES密碼分組鏈接模式(AES-CBC)和AES計數模式(AES-CTR)的加密機制。

1、ESPAES-CBC加密機制

對稱分組加密算法的CBC模式是一種非常理想的操作模式,也是ESP加密機制中的需求模式。在AES-CBC加密過程中,明文被加密之前要與前面的密文進行異或運算。
ESP AES-CBC需要一個顯示的初始化向量(IV),用于與第一個明文分組在加密之前進行異或運算。設加密密鑰為K,明文P以128位大小分組為P1P2…Pj…,圖2展示了AES-CBC是如何工作的。

AES加密機制在IPSec協(xié)議中的應用

下面就IPSec ESP中應用AES-CBC加密機制值得注意的一些事項進行分析。

(1)初始化向量(IV)

IV不需要保密,它可以以明文形式與密文一起傳送。Ⅳ值必須選取事先無法預測的隨機數值,大小和AES分組大小相同。IVs的選取不可以使用計數器方式或者低漢明距的數據源,以防止AES-CBC加密多個數據包中存在的非常相似的明文。

(2)密鑰長度和加密輪數

AES支持3種密鑰長度:128位,192位和256位。所有的實現必須支持默認的密鑰長度128位,同時可以支持192位和256位。對于不同的密鑰長度必須使用相應的加密輪數,具體情況見表1。

AES加密機制在IPSec協(xié)議中的應用

(3)分組大小和明文填充

AES使用128位分組大小。填充要求使得最后一個明文短分組在加密之前進行適當的填充處理,使其為128位分組大小。這里需要填充的明文還包括ESP中定義的ESP填充長度域和其它一些域的數據。

(4)IKE協(xié)商和密鑰材料

對于IKE階段l協(xié)商,IANA給AES-CBC加密算法分配了ID為7的標識符。在階段2協(xié)商中,IANA為ESP_ AES分配了ESP變換標識符12。由于AES允許使用可變的密鑰
長度,因此密鑰長度的屬性須在階段1、2協(xié)商中具體指定。

IKE使用一個偽隨機函數(Pseudo-random Function,PRF)生成密鑰材料。PRF反復使用可以生成任意長度的密鑰材料(KEYMAT)。在IPSec中使用AES時,密鑰材料長度由協(xié)商的Diffie-Hellam(DH)群和協(xié)商的密鑰長度確定。在IKE中,AES使用密鑰長度為128位、192位和256位時,分別需要大約3 200位、8 000位和15 400位強度的DH群。密鑰選取KEYMAT的開始位,長度為密鑰長度。

(5)HASH算法

作為SHA-1的后繼算法,SHA-256,SHA-384和SHA-512輸出分別為3種不同的長度(256位,384位和512位),對于AES的3種不同密鑰長度(128位,192位和256位)在IKE的生成和ESP的認證是足夠的。AES密鑰長度為128位時,目前HMAC-SHA-I[9J和HMAC-MD5cloJ仍然擁有足夠的強度用于IKE中生成AES的128位密鑰和ESP中認證AES使用128位密鑰的加密。

2、 ESPAES-CTR加密機制

計數(CTR)模式是NIST為對稱分組加密算法新開發(fā)的一種操作模式。AES-CTR加密機制對于高速網絡,具有許多引人的特性。首先,AES-CTR使用AES分組密碼加密連續(xù)的計數分組(CTRBLK:Counter Block)生成密鑰流。數據文件加密、解密時,明、密文與密鑰流進行異或運算。AES-CTR易于實現,可以進行流水線和并行處理。多個獨立的AES加密實現可以用于提高效率。例如,AES-CTR加密處理可以進行雙機并行實現,從而達到雙倍效率的吞吐量。AES-CTR支持密鑰流的預計算。預計算處理能夠減少數據包的延遲性。無論對于加密還是解密,AES-CTR僅使用AES的加密操作。這使得AES-CTR相較于AES其它模式實現更為精簡。如果AES-CTR得到正確使用,能夠提供很強的保密性。Bellare,Desai,Jokipii,Rogaway證明了同一個分組加密算法的CTR模式擁有不低于CBC模式的安全強度。

為了使用AES-CTR加密一個數據包,加密者需要分割明文P為128位的分組,P= P1P2......Pn。最后的分組Pn不需要是128位,即可以少于128位。AES對每個計數分組
(CTRBLK)加密后生成128位密鑰流。每個明文分組與密鑰流分組進行異或運算生成密文C= C1C2 ......Cn。

CTRBLK的前96位由一個32位的nonce值和64位的IV值組成,其余32位是一個初始化為1的分組計數器(Block_Counter)值。表2是一個計數分組的格式。

AES加密機制在IPSec協(xié)議中的應用

其中,分組計數器按分組次序進行遞增加l運算,從而生成連續(xù)的CTRBLK,AES再加密這些CTRBLK生成用于文件加密、解密的密鑰流。圖3為加密、解密n個明、密文分組情況。

AES加密機制在IPSec協(xié)議中的應用

在圖3中,AESk()函數為使用密鑰K執(zhí)行AES加密操作。

TRUNC()函數用于截短最后一個AES加密輸出的密鑰流分組,使其長度與明、密文分組的長度相同,并輸出截取的位。

在ESP中使用AES-CTR除了與AES-CBC相類似的情形外,還需要注意以下幾個方面。

(1)初始化向量(IV)

AES-CTR需要一個顯示的IV,大小為64位。IV必須由加密者以某種方法選取,并確保對給定的密鑰該Ⅳ值僅使用1次。加密者可以使用任何確保IV值唯一性的方法。通常的方法有使用按數據包次序進行遞增加l運算的計數器或者一個線性反饋移位寄存器(LFSRs)。

(2)分組大小和明文填充

AES使用128位分組大小。所以,每個AES加密操作生成128位的密鑰流。AES-CTR加密時密鑰流與明文進行異或運算,解密時密鑰流與密文進行異或運算。如果密鑰流的長度比明文或密文更長,那么簡單地丟棄超出的密鑰流位即可。因此,AES-CTR不要求填充明文長度到分組大小的倍式。

(3)IKE協(xié)商、密鑰材料以及nonce值

對于IKE階段1協(xié)商,目前IANA還未給使用顯示IV的AES-CTR分配ID標識符。階段2協(xié)商中,IANA為AES—CTR分配了ESP變換標識符13。

AES-CTR實現須使用新的密鑰。IKE能夠建立如此的密鑰。KEYMAT大小必須是所需AES密鑰長度再加上32位。

nonce值通常選取KEYMAT的后32位。nonce值無須保密,但它在指派之前必須無法預測。

(4) ESP鑒別

由于AES-CTR本身的特性,攻擊者得到了正確密文就可以輕易地偽造有效的密文。

假設加密者使用密鑰流分組K1,K2,K3加密明文分組P1,P2,P3,生成密文分組C1,C2,C3。如果攻擊者能夠得到這些密文分組,就可使用自己的明文分組Q1,Q2,Q3來偽造出新的明文分組,從而達到攻擊的目的。具體情形如下:

AES加密機制在IPSec協(xié)議中的應用

這樣,解密者得到就是攻擊者生成的偽造明文Qi+Pi{i=1,2,3),而非最初的明文。因此,AES-CTR必須聯(lián)合使用一個非空的ESP鑒別方法,否則就可能存在災難性的后果。使用HMAC-SHA-1-96是一個可靠的選擇。

(5)計數分組(CTRBLK)

如果加密者能夠正確使用AES-CTR,就能獲得很強的數據保密性。然而不幸的是,AES-CTR非常容易錯誤使用。對于同一個密鑰,如果加密者使用相同的CTRBLK加密了多個數據包,那么相同的密鑰流也就用于加密了多個明文,從而極大地削弱數據的保密性。

下面就是密鑰流分組K1,K2,K3同時加密兩個明文分組P1,P2,P3和Q1,Q2,Q3的情形。此時,可以得到兩個密文分組P1+K1+Q1。Ki(i =1,2,3)。如果攻擊者能夠獲得這兩個密文分組,并進行如下的計算:

AES加密機制在IPSec協(xié)議中的應用

那么,攻擊者就得到了兩個明文之間的異或關系,并可以相對容易地分離它們。因此,對于同一個密鑰來說,加密者必須使用任何能夠保證CTRBLK的唯一性方法,以免出現以上災難性的后果。

小知識之IPSec協(xié)議

“Internet 協(xié)議安全性 (IPSec)”是一種開放標準的框架結構,通過使用加密的安全服務以確保在 Internet 協(xié)議 (IP) 網絡上進行保密而安全的通訊。Microsoft_ Windows_ 2000、Windows XP 和 Windows Server 2003 家族實施 IPSec 是基于“Internet 工程任務組 (IETF)”IPSec_工作組開發(fā)的標準。