IPsec相關的一些基本概念
問題提出:什麼是xfrm,racoon,netkey,PF_KEY,netlink,clips,26sec,Setkey,KAME,ipsec?
IPsec:Internet Protocol Security是一種開放標準的框架結構,通過使用加密的安全服務以確保在網路上程式保密而安全的通訊。IPsec IP層協議安全主要包括一個IP包程式模組和一個金鑰交換模組,IPsec包的處理模組是基本IPsec安全策略(SP)和安全關聯(SA)的。
PF_KEY:PF_KEY是金鑰管理套接子,在UNPV13e 第19章有介紹。
klips或是NETKEY:實現IP資料包的安全接受或傳送的程式。在核心域中執行,主要負責控制管理SA及金鑰,同時處理資料包的加密和解密工作。
klips主要由以下模組組成:通訊介面socket PF_KEY(klips是pluto自帶的,而這個PF_KEY是clips自帶的,Linux核心也有PF_KEY的實現,所以這兩種PF_KEY是不一樣的),負責註冊和初始化模組,資料包處理和轉發模組,資料包的接收和處理模組,SA的管理模組,SHA1、MD5演算法實現模組,路由器的基數實現模組,PF_KEY2協議實現模組,其它一些相關子模組。KLIPS不支援IPv6
NETKEY:又稱26sec,通訊介面socket netlink, 該部分實現包含在2.6核心中,實際是對KAME專案的重寫。
xfrm:指處理IP資料包的網路框架。是IPSec SPD/SAD的管理模組,與原網路架構的路由和網路資料處理密切相關,策略檢查、SA的獲取都屬於xfrm.支援pf_key和netlink.
racoon:一個金鑰管理守護程式,實現使用者中的IKE金鑰協商模組,主要用於自動方式下與通訊對端相應模組的SA協商(相當於openswan的pluto吧),配置管理模組由Setkey實現,用來手動配置SP、SA,完成SPD、SAD的人工管理(相當於openswan的whack?)。為實現racoon和Setkey模組與核心互動,需使用PF_KEYv2套接字
pluto:金鑰交換協議(IKE)的守護程式。主要實現IKE協議,以及完成SA的互動。如果pluto使用clips,則使用PF_KEY套接字;如果pluto使用NETKEY,則使用NETLINK_XFRM套接字。
SA,SP,SADB等具體在程式碼中怎麼操作,程式碼中的含義是什麼?資料是怎麼組織的?
IKE,ipsec,pluto的深入理解?
安全策略(Security Policy,簡寫為SP):定義對滿足條件IP報文進行安全處理的規則。即下面的一條路由。或者另一描述:安全策略是用來識別一個資料包是應該處理、忽略、還是應該丟棄。
安全關聯(SecurityAssociation,簡寫為SA):這是這組協議中最重要的一個概念,是RFC文件中要求所有實現中必須包含的一個概念。它為當前IP報文的鑑別、加密處理提供必要的演算法標識和演算法相關的引數。安全關聯是由當前IP報文的目的地址、SPI值及協議這個三元組(即SAID)唯一確定的
安全引數指標(SecurityParameter Index ,簡寫為SPI):是一個32位的整數,用來標識當前IP報文所對應的安全關聯
安全策略資料庫(Security PolicyDatabase,簡寫為SPDB):存放所有本機安全策略的集合
安全關聯資料庫(SecurityAssociation Database ,簡寫為SADB):是存放本機所有安全關聯的集合
pluto可支援核心使用KLIPS或NETKEY實現IPSEC,前者的通訊介面socket是PF_KEY, 後者的通訊介面是netlink, 另外也支援核心無IPSEC的情況(NO_KERNEL), 不過基本就沒什麼意義。KLIPS的IPSEC實現是通過構造ipsec*虛擬網路卡來實現的, 將資料從該網路卡傳送, 就意味著對資料進行加密; 從該網路卡獲取資料, 就是對資料包進行解密。因此安全策略(SP)實際是根據路由來進行的,因此配置加密路由就是配置安全策略,因此專門引入了eroute概念來描述這類路由。(此段引用yfydz的openswan實現)
轉自:http://www.voidcn.com/blog/jeason29/article/p-3409010.html
相關文章
- CSS佈局相關基本概念CSS
- Linux 檔案系統相關的基本概念Linux
- 資料結構——圖相關基本概念資料結構
- Vue的一些相關面試題Vue面試題
- 一些與iphone相關的尺寸iPhone
- clickhouse的一些相關知識
- TensorFlow筆記(1)——TensorFlow中的相關基本概念筆記
- 一些運維相關的建議運維
- 一些安全相關的HTTP headerHTTPHeader
- CSS與中文相關的一些特性CSS
- 一些程式設計相關的分享程式設計
- Data Guard相關的一些設定
- Oracle 的一些基本概念Oracle
- latch相關一些資料
- solaris10_oracle10g asm_相關基本概念OracleASM
- 一些安全相關的HTTP響應頭HTTP
- ssd相關的一些資料介紹
- 與Windows Phone 7 相關的一些概念Windows
- Oracle優化相關的一些引數Oracle優化
- 一些Android Studio相關的配置Android
- nodejs的TCP相關的一些筆記NodeJSTCP筆記
- 關於Selenium Chrome Driver相關的一些資源Chrome
- hadoop一些相關知識Hadoop
- Java Record 的一些思考 - 序列化相關Java
- 一些與linux相關的名詞(轉)Linux
- 轉 儲存的一些基本概念
- WebLogic中的一些基本概念Web
- index block split相關一些知識IndexBloC
- 關於一些php面試之物件導向的相關知識PHP面試物件
- 課時40:類與物件:一些相關的BIF物件
- 整理了一些前端設計相關的網站前端網站
- oracle-一些檢視效能相關的檢視Oracle
- 關於相機相簿的一些實用技術
- AmS中的一些重要排程相關變數變數
- 資料結構的一些基本概念資料結構
- 儲存的一些基本概念(HBA,LUN)
- 談談關於PHP的程式碼安全相關的一些致命知識PHP
- 【總結】日常遇到的一些問題相關知識