IPSec

IPsec(IP Security):
保護IP協議安全通信的標準,主要對IP進行加密和認證,以及第三層穿隧技術技術
IETF1995制定,符合IPv4環境也是IPv6標準,並包含了ah和esp
1998更新到第2版,增加了加解密技術,密碼管理,身份驗證
主要提供服務為:認證,加密,金鑰管理

應用:
可在lan,wan,及internet上進行安全的通訊,各廠商普遍支援的規格
建立網路兩端傳輸資料加密,但傳輸兩端須支援IPSec,可防範LAN的駭客(Transport mode)
建立兩個網路間的加密安全通訊,也就是VPN(tunnel mode)
可同時用Internet與VPN的多點傳輸功能(包括Internet/Intranet/Extranet/Remote Access 等)
ex:DMVPN,VTI

優點:
因IP層有安全機制,所以可向上保護應用層或傳輸層整個網路通訊的內容
不增加額外負擔,可避免firewall被穿透,位於傳輸層底部,可支援路徑選擇協定

功能:
可保護路徑,防止被阻斷通訊線路或將訊息導向別處
可讓系統選擇想要的組合,用於多重服務,演算法,及單元規模的架構
演算法可選:AES,3DES,RC5,IDEA,3IDEA,CAST,blowfish,需支援cbc模式的des
port分配:ike使用udp 500,ah使用ip portocol 51,esp使用ip protocol 50

IPSec的運作
1兩端建立SA(Security Associations,安全聯結)
雙方選擇使用IPSec的方式,ex:選擇何種安全功能,加密演算法,金鑰原則,…等
2金鑰交換
用非對稱加密,讓雙方各自擁有相同的Secret Key
3使用ipsec傳輸資訊

…… 

安全性協定的服務(加在ip表頭後)
AH(確認性協定):認證,資料完整性
 提供存取控制,確認資料來源,拒絕重送封包,非連線傳輸完整性
ESP加密協定:加密
 提供存取控制,拒絕重送封包,保密性,限制訊息傳輸保密性
ESP加密與AH確認性協定:提供以上全功能,先加密後確認

SA(security association,安全性關聯):介於兩終端點間的單工連結,若要雙向安全則要建兩個SA
辨識安全連結用參數:
 SPI(安全參數索引):在某個區域內才有意義的一串位元,用於指定SA
 IP目的端位址:記錄unicast的位址,SA目的端
 安全協定ID:指出是AH或ESP的安全連結
SA資料庫定義的參數
 sequence number counter(序號計數器):32bit,用來產生ah,esp標頭的序號欄位
 sequence counter overflow(序號計數器溢位旗標):
 anti-replay window(防止重送窗口):用來決定ah,esp封包是否為重送封包
 AH資訊:認證演算法,金鑰,金鑰生命週期,AH所使用相關參數
 ESP資訊:加密及認證演算法,金鑰,初始值,金鑰生命週期, ESP相關參數
 lifetime of this SA(SA的期限):經過此時間後會換新的SA和SPI
 IPsec協定模式:有tunnel,transport,wildcard等模式
 pathMTU(路徑最大傳送單位):
模式可分:
 transport mode(傳輸模式):保護封包內資料部分,如tcp,udp,icmp,常被用在區網內通訊兩端
 tunnel mode(通道模式):保護整個封包,將整個封包變成新封包的資料部分,並產生新表頭
SA bundle(安全連結束):一個訊息多個SA,有兩種做法:
 transport adjacency(傳輸連接):只能結合一層AH,ESP協定
 iterated tunneling(重複開啟通道):允許巢狀多重階層
 兩方法可相互運用:
  確認在加密:內層AH傳輸模式外層ESP通道模式(transport-tunnel bundle)
  加密在確認:內層ESP傳輸模式外層AH傳輸模式(傳輸連接),ESP傳輸模式後在加確任欄位,ESP通道模式後在加確任欄位

ps:
IPsec通道模式
優點:非常串流化,可調性高,相容性佳,連線參數不常變,可避免流量分析攻擊
缺點:不考慮舊系統問題,驗證或路由解譯困難,通常需要手動進行,通常只支援tcp/ip,增大封包
應用:閘道器之間連線,通道終止於非最終目地端(ex防火牆)時 

…….

鑰匙管理:
手動:用系統自己的金鑰以及其他系統的金鑰,以手動方式設定系統
自動:使用ISAKMP/oakley(已被選為IPv6的IPSec金鑰管理協定)
oakley鑰匙產生協定:根據diffie-hellman演算法發展而來,並提供安全功能
ISAKMP網路安全連結與鑰匙管理協定:提供網路上鑰匙管理架構,定義建立,協商,修改,刪除sa的程序及封包格式
主協定為IKE(Internet Key Exchange),可用在進行連線系統間的交互認證與保全聯系,由IETF所實作,但缺點很多
1995公佈許多網路安全相關技術標準RFC 1825,RFC 1826,RFC 1827,RFC 1828,RFC 1829,RFC 1851,RFC 2085,RFC 2104

目前主要的金鑰管理協定有:
SKIP(Simple Key-management for IP)
 較為簡單,可應用在IPv4與IPv6
 由Sun Microsystem所發展,目有三種版本:Sun, TIK,和ELVIS+SKIP
 SKIP金鑰管理的觀念是階層式的金鑰管理。利用Diffie Hellman的公開金鑰對而達到共享
 因安全考量,公開金鑰應至憑證管理中心申請憑證,所以IPSec的使用也需要每一國家的PKI來配合。
ISAKMP/Oakley(Internet Security Association Key Management Protocol/Oakley)
 可應用在IPv4與IPv6,可應用於較多的協定
 IPv6已決定使用ISAKMP與Oakley金鑰交換的合併協定
 Oakley金鑰交換協定是由亞利桑那大學所提出,與SEKME有相當多的共同部份
 ISAKMP有兩個操作階段
  階段一:相關的一些安全屬性經協商並產生一些金鑰等。這些內容構成第一個ISAKMP SA,與IPSec SA不一樣的是它是雙向的
  階段二:則是以ISAKMP SA的安全環境來建立AH或ESP的SA。
 其他如Photuris及SKEME(Photuris延伸)等
IKE(Internet Key Exchange) ISAKMP/Oakley的改名
 ISAKMP使用Oakley的一些模式和SKEME快速rekey的觀念合併而成
 它有(1)Main Mode (2)Aggressive Mode (3)Quick Mode(4)New group mode等四種模式

…….

ESP(Encapsulating Security Payload,安全負載封裝)格式如下:
security parameters index(安全參數索引) 32bit:辨識一個安全連結
sequence number(序號) 32bit:單純地遞增計數值,可防重送攻擊
payload data(負載資料) 可變bit:transport mode為tcp區段,tunnel mode為一個ip封包
padding(附加位元組) 0-255bit:用來擴充成想要的長度,以達演算法需求或混淆負載長度
padlength(附加部分長度) 8bit:指出附加位元組個數
next header(後續標頭) 8bit:辨識負載資料的類型
authentication data(確認性資料)(選擇性) 32倍數可變bit:含此封包確認值,範圍在esp標頭到後續標頭

… 

AH(authentication header,確認性標頭)格式如下:
next header(後續標頭) 8bit:指出接在此標頭後的類型
payload length(負載長度) 8bit:確認性資料為96bit則值為4(3+1)
reserved(保留部份) 16bit
SPI(安全參數索引) 32bit:辨識一個安全連結
sequence number(序號) 32bit:單純地遞增計數值,可防重送攻擊
authentication data(確認性資料) 32倍數可變bit:預設96bit,含訊息確任碼icv或mac,範圍除了可變欄位外都確認
mac演算法有:hmac-md5-96,hmac-sha-1-96

參考資料包括以下來源
http://www.microsoft.com/taiwan/technet/columns/profwin/13-IPSec-1.mspx
http://technet.microsoft.com/zh-tw/library/dd125446.aspx