IPSECVPN連線建立(IKE)詳解
IPSEC構建站點到站點連線的基本過程
對於站點到站點的會話,構建連線的基本過程如下:
一個VPN閘道器對等體發起了到另外一個遠端的VPN閘道器對等體的會話(觸發流量)
如果沒有存在VPN的連線,那麼ISAKMP/IKE階段1開始,兩個對等體協商如何保護管理連線。
Diffie-hellman用於為管理連線中的加密演算法和HMAC功能來安全的共享金鑰。
在安全管理連線中來執行裝置驗證。
ISAKMP/IKE階段1結束,階段2開始;對等體協商引數和金鑰資訊用來保護資料連線(這是在安全管理連線下實現的,或者你也可以選擇性的再次使用Diffie hellman)
資料連線被建立,階段2結束,VPN閘道器現在可以通過資料連線來保護使用者流量。
最終,管理連線和資料連線將會超時,並重新構建連線
ISAKMP/IKE階段1中的工作模式分為主模式和積極模式(或野蠻模式)
ISAKMP/IKE階段1:
一.管理連線在階段1建立,它是一個雙向的過程。源和目標都是使用的UDP 500
二.在ISAKMP/IKE階段1將會發生三件事情:建立雙向的ISAKMP SA
1.安全關聯建立和安全引數協商(加密演算法,HASH演算法,DH組,身份認證)。
2.DH演算法(金鑰交換)
3.對等體認證(pre-shared,rsa-sig,加密隨即數)
三.ISAKMP/IKE階段1基本上負責建立一個安全的管理連線,然後,執行這
3個步驟有兩種模式:
1.主模式;(Main mode)
2.積極模式,或者被稱為侵略模式(Aggressive mode)
主模式
執行3步雙向交換過程,總共6 個資料包
主模式的好處:裝置驗證的步驟發生在安全的管理連線中,因為這個連線是在前兩個步驟中構建的,因此,兩個對等體需要傳送給對方的任何實體資訊都可以免受攻擊。
站點到站點和使用證書做裝置驗證的遠端訪問使用的預設模式
主模式管理連線的狀態:
狀態 解釋
MM_NO-STATE 處於階段1的主模式過程中,SP未協商好,SA未建立好
MM_SA_SETUP 處於主模式中,SP協商好,初始化SA建立好
MM_KEY-EXCH 處於主模式中,發生了DH交換,計算金鑰KDH,並生成許多金鑰
MM_KEY_AUTH 處於主模式中,成功完成對等體的身份認證,階段1完成,階段二開始了;
注意:這裡的第5個包應該是IDi不是IDr。X、Y就是互動的公鑰N是隨機數
1:發起者send一個cookie Ci 和SA負載(SAI:encryption algorithm,hash algorithm,authentication method,lifetime ,and so on)用來協商引數
2:響應者傳送一個SAr(已經挑選的安全引數)和cookie Cr: 如果沒有可以挑選的引數,響應者會返回一個負載拒絕;(return a notify payload rejecting proposals)
3和4: 互相交換生成KEY的材料(公鑰和一些隨機資料),一旦KEY材料被交換,將會產生四個不同 的KEY;
1: KDH=DH演算法(用自己的私鑰+對方公鑰)
2: SKEYID=hash (pre-shared key ,Ni | Nr)
3: SKEYIDd=hash(SKEYID, KDH| Ci | Cr | 0 ) 作為階段2生成KEY的材料
4: SKEYIDa = hash(SKEYID, SKEYIDd | KDH| Ci | Cr | 1) 用來ISAKMP包完整性用的key
5: SKEYIDe=hash(SKEYID,SKEYIDa | KDH| Ci | Cr | 2 ) 用來加密ISAKMP包的key
5和6:完成裝置認證,使用SKEYIDe進行加密,SKEYIDa 進行HASH認證(HASH_i,HASH_r)所涉及的演算法都是最前面兩個包協商出來的;最重要的是在這次交換中還有個ID交換(IDi,IDr);
6.HASHi = hash(SKEYID, X|Y|Ci|Cr|SAr|IDi)
7.HASHr = hash(SKEYID, X|Y|Cr|Ci|SAi|IDr)
總結:主模式=1個雙向ISAKMP SA+2次加密+3次交換+4個狀態+5個KEY+6個包+7步運算
IKE積極模式
只進行3次交換以便協商金鑰和進行驗證.
優點:建立管理連線的時候速度快;
缺點;傳送的實體資訊都是明文的,犧牲了安全性;
Cisco遠端訪問VPN中裝置驗證用的是組預共享金鑰的話,那麼預設模式就是積極模式.
狀態 解釋
AG_NO_STATE 處於階段1的積極模式中,沒有建立管理SA,沒有協商引數AG_INIT_EXCH 對等體之間已經成功協商了IKE策略引數,發生了DH交換,並生成了共享金鑰KDH
AG_AUTH 處於積極模式中,成功完成對等體的身份認證,階段1完成
第三個包是加密的
1.在第一條訊息中,發起放傳送ISAKMP報頭,安全關聯,DH公開值,臨時值和身份ID
2.在第二條訊息中,應答方用選定提議的所有引數和DH公開值進行應答,該訊息被驗證,但沒有加密.
3第三條訊息由發起方發回給應答方,該訊息被驗證,讓應答方能夠確定其中的雜湊值是否與計算得到的雜湊值相同,進而確定訊息是否有問題.積極模式沒有主模式安全,因為身份是以明文方式傳輸的且不能協商DH引數
總結:積極模式=1個雙向ISAKMP SA+1次加密+3個步驟+3個包+3個狀態+5個KEY+7步運算
ISAKMP/IKE階段2
ISAKMP/IKE階段2只有一個模式:快速模式.它定義了受保護資料連線是如何在兩個IPSEC對等體之間構成的.快速模式有兩個主要的功能:
1.協商安全引數來保護資料連線。
2.週期性的對資料連線更新金鑰資訊.
階段2所關心的事:
1.什麼流量需要被保護?(感興趣流量)
2.應當使用什麼樣的安全協議來保護流量(AH,ESP)
3.基於選擇的安全協議,資料流量是如何 被保護的?(例如使用什麼樣的HMAC功能)
4.使用什麼樣的操作模式?(傳輸模式,隧道模式)
5.當重新整理金鑰資訊的時候,是ISAKMP/IKE階段1的管理用來共享心的金鑰還是完美轉發金鑰用於重新整理金鑰?
6.資料連線的生存週期是多少?
狀態:QM-IDLE 表示階段一已成功完成,階段2開始或結束
快速模式交換3條訊息。這些訊息都是使用IKE進行保護,這意味著將使用IKE phase1中匯出來的SKEYIDe和SKEYIDa對所有分組進行加密和驗證。
1.第1條訊息來自發起方,包括ISAKMP報頭和IPSec SA 有效負載,後者包含用於大量傳輸資料的所有提議和變換。在發起方和應答方之間將交換一個新的臨時值(Ni2),它用於生成新的金鑰資訊,還可能用於防範重放攻擊。所有的IPSec金鑰都是從SKEYIDd推匯出來的,因此如果知道這個SKEYIDd的攻擊者將能夠推匯出所有用於IPSec的當前和未來的金鑰。直到重新協商IKE為止,為加強對IPSec金鑰的保護,使用完善轉發安全性(PFS)來解除未來金鑰和當前金鑰的關係。啟用PFS後,將交換新的DH公開值(X和Y)並使用計算得到的共享金鑰K
來生成金鑰資訊
2.第2條訊息由應答方傳送給發起方,其中包含選定的提議以及ISAKMP報頭,臨時值(Nr2)和HASH(2)
3.第3條也是最後一條訊息中,發起方使用HASH(3)進行驗證。這是在傳輸IPSec資料流前驗證通訊通道的有效性
雙方進行以下計算,生成金鑰4個(橫向相同,縱向不同)
第一種情況
1.KEYMAT=HASH(SKEYIDd,安全協議/Ni2/Nr2/SPI)
按同樣的方法推匯出2、3、4
第二種情況(需重新發生公鑰交換,用DH生成KDH2)
KEYMAT=HASH(DKEYIDd、安全協議/Ni2/Nr2/SPI/KDH2)
按同樣的方法推匯出2、3、4
兩個金鑰為inbound另兩個為outbound
預設是使用第一種方法,要用第二種方法需啟用PFS功能。
總結:階段2=1個模式+1個狀態+2個單向的ipsec sa+3個包+4個金鑰
本文轉自 tangfangxiao 51CTO部落格,原文連結:http://blog.51cto.com/tangfangxiao/686822
相關文章
- 連線池和連線數詳解
- JDBC 連線詳解JDBC
- oracle 左右連線詳解Oracle
- Oracle 表連線方式詳解(外連結、內連線、自連線)Oracle
- oracle連線查詢詳解Oracle
- SQL表連線方式詳解SQL
- 資料庫外連線,自然連線,內連線,條件連線,等值連線關係及詳解資料庫
- LINUX ln命令硬連線軟連線詳細解釋Linux
- SSH 連線慢的解決方案詳解
- MySQL 連線查詢超全詳解MySql
- 詳解IIS最大併發連線數
- 一張詳解SQL連線的圖SQL
- Java Hibernate 之連線池詳解Java
- 06 建立MySQL連線MySql
- laravel建立軟連線Laravel
- ElasticSearch連線池建立Elasticsearch
- HTTPS建立連線HTTP
- TCP的連線建立TCP
- ubuntu建立軟連線Ubuntu
- Connection (建立連線)
- 多圖詳解 TCP 連線管理,太全了!!!TCP
- 資料庫連線池技術詳解資料庫
- Remix-Ethereum IDE連線本地詳解REMIDE
- 【JDBC】使用OracleDataSource建立連線池用於連線OracleJDBCOracle
- 用VB連線MySQL資料庫模組(詳解)MySql資料庫
- 詳解 HermesJMS 連線 ActiveMQ(附視訊)薦MQ
- centos無法建立ssl連線CentOS
- SSH建立連線的過程
- 建立 ODBC DSN ASP 連線DSN
- 資料庫連線不能建立.資料庫
- SQLSERVER建立連線伺服器SQLServer伺服器
- 關於weget “無法建立SSL連線”的解決方法
- win10如何建立寬頻連線_windows10建立寬頻連線的方法Win10Windows
- 批次殺死MySQL連線的四種方法詳解MySql
- 批量殺死MySQL連線的幾種方法詳解MySql
- mysql5.1官方文件連線_字符集詳解MySql
- GaussDB(DWS)叢集通訊:詳解pooler連線池
- linux 建立連線命令 ln -s 軟連結Linux