×××的基本原理
一. 什麼是×××
Virtual Private Network 虛擬專用網絡, 簡稱×××, 指的是在公用的Internet之上建立一條專用的虛擬隧道, 便於內網或遠程安全的傳輸數據.
其之所以稱爲虛擬網,主要是因爲整個×××網絡的任意兩個節點之間的連接並沒有傳統專網所需的端到端的物理鏈路,而是架構在公用網絡服務商所提供的網絡平臺,如Internet、ATM(異步傳輸模式〉、Frame Relay (幀中繼)等之上的邏輯網絡,用戶數據在邏輯鏈路中傳輸。它涵蓋了跨共享網絡或公共網絡的封裝、加密和身份驗證鏈接的專用網絡的擴展。×××主要採用了隧道技術、加解密技術、密鑰管理技術和使用者與設備身份認證技術。
二. 哪裏會用到×××
跨Internet的內網互訪, 遠程訪問, 等 ........
三. ×××的分類
1. 按層次來分:
-L2 ×××
L2F, L2TP, PPTP等
-L3 ×××
IPSec ×××, MPLS ×××
-L5 ×××
SSL ×××
2. 按類型來分:
-LAN 2 LAN ××× 站點到站點之間的×××
只有IPSec ×××
-RA(Remote Access) ××× 遠程訪問×××, 也叫Easy ×××
IPSec ×××, L2Tp, PPTP, SSL
四. 關於IPSec
IPSec即IP Security, 主要是爲IP協議提供安全性保障, 但它只是一種標準, 並不是一個技術. 它提供的安全性保障是由其召集的若干技術來來完成的. 其關係圖如下:
IPSec首先召集IKE, IKE再召集下面的各種技術 .
IKE: Internet Key Exchange因特網密鑰管理協議, 僅僅是用來進行密鑰管理的, 它是一個混合協議 .
IPsec可以不用IKE, 也可以用IKE
-用IKE, 其中的策略可以自動完成.
-不用IKE, 策略必須手動配置, 而且兩邊必須一樣.
五. 常見的安全問題
1. 數據的機密性
2. 數據的完整性
3. 身份驗證(起源認證)
4. 反重放***
以上所說的這些問題全都可以靠 ×××來解決
六. 數據的機密性
通過加密來解決. 加密算法大致可分爲兩種
1. 對稱加密算法, 加密解密使用的是同一把密鑰
加密算法 | 提供加密位數(位, bit) |
DES | 56 |
3DES | 168 |
AES | 128, 192, 256 |
RC4 | 40, 128, auto |
RC6 | 2040 |
2. 非對稱加密算法, 加密解密使用的是不同的密鑰
兩個功能:
-公鑰加密, 私鑰解密
-私鑰簽名, 公鑰解簽名
其中, 公鑰可以隨意共享, 私鑰是永遠不能共享的
加密算法 | 加密位數(位, bit) |
RSA | 512, 768, 1024 |
DH |
在×××中, 數據加密所採用的是對稱加密算法, 因爲速度快, 在相同的情況下, 比非對稱加密算法快大約1500倍.
對稱加密算法, 加密解密所採用的是相同的密鑰, 這個密鑰如何傳遞呢?
-帶外. 打電話告訴, QQ, MSN (在情況很複雜的情況下不實用)
-帶內. 在數據傳遞前, 先構建一條安全的通道來傳遞密鑰.
問題1 : 如何構建一條安全的通道來傳遞密鑰?
七. 數據的完整性
當接收到一個加密的數據包的時候, 先要確保數據是否完整. 如果數據完整, 則再解密, 如果數據不完整, 解密後數據也就沒意義了, 何必解密呢.
數據的完整性就靠HMAC(哈希MAC)來解決. HMAC屬於對稱的完整性算法(不是加密算法), 兩端較驗數據所使用的密鑰一樣. 同時也屬於不可逆算法, 不可以由hash值推導出原文.
完整性算法 | 完整性較驗位數 |
MD5 | 128 |
SHA-1 | 160 |
SHA-256 | 256 |
SHA-384 | 384 |
如果A要把一段數據完整的傳遞給B, A就要先把密鑰key先給B(通過帶內或帶外).
HMAC的工作過程:
A: 用傳輸的數據 + key 經過HMAC得到一段很小的散列值abcdef, 然後 再把散列值 + 數據發送給B.
B: 把收到的數據 + key 經過相同的HMAC算法, 得到一個散列值, 再比較與A發送過的散列值是否一樣, 如果散列值一樣, 則說明數據是完整的, 如果不一樣, 則說明數據不完整.
問題2: 如何安全的傳遞key(密鑰)?
八. 身份驗證(起源認證)
即如何證明自己的身份. 你說你是A, 如何證明你就是A
1. pre-share key預共享對稱密鑰 , 即預先共享的, 雙方都知道的密鑰
2. rsa-encry key預共享非對稱密鑰
3. rsa-sig CA(證書)
九. 反重放***
主要是中間的欺騙***, 冒充它人發送數據
可以使用序列號來解決. 即cookie
cookie是一個8字節長的隨機數, 用於標識IKE SA
問題3: 如何得到序列號 ?
十. 密鑰的傳遞問題
縱觀全局, ×××的重中之重即上面的問題1, 問題2, 也就是中間的密鑰的傳遞過程. 這個可以通過非對稱加密算法DH算法來解決.
DH算法的工作過程:
1. A和B都先共享公鑰
2. A使用自己的私鑰 + B的公鑰 用DH算法來生成一個X
3. B 使用自己的私鑰 + A的公鑰 用DH算法來生成一個X
4. A生成的X和B生成的X的值是一樣的.
5. 在傳遞密鑰時, 用X把key加密, 再傳遞給對方, 對方就可以用X解密得到key
6. DH 的缺陷, 無法解決身份驗證的問題. 如果C來冒充B和A傳遞數據, 數據一樣會被竊取.
DH的組:
group 1768位密鑰
group 21024位密鑰
group 51536位密鑰
group 7163位密鑰
十一. ×××的實現過程
1. 兩個階段
×××的實現主查靠兩步完成
-控制連接, 也叫IKE階段一
-數據連接, 也叫IKE階段二
-IKE: 因特網密鑰管理協議, 也只是一個組合, 最終密鑰並不是自己來管理的, 是由其下的子協議來完成的
1ISAKMP: Internet Security Association Key Management Protocol, 主要用於協商加密算法, 認證的方法, hash等策略,
2Oakley: md5, sha等後續的密鑰的紛發和產生
3Skyme: md5, sha等後續的密鑰的紛發和產生
-IPsec : 提供豐富的認證和數據包的加密思想, 但完成任務的並不是它自己
1認證:
2加密:
每個階段都會協商出與對方相同的策略的集體即安全安全(SA), 主要是由ISAKMP來協商, 它使用UDP的500端口, 階段一協商一個SA, 階段二協商兩個SA
2. 階段一:
階段一隻是控制連接, 沒有用戶數據的傳遞, 主要是爲階段二提供一個安全的通道. 使用UDP的500端口下的ISAKMP協議進行協商, ISAKMP報頭如下:
cookie是一個8字節的隨機數, 用來標識第一階段的SA, 即上面問題3, 反重放的解決方案.
階段一有兩種模式:
1主模式
共六步:
-第1, 2步是安全策略參數的協商
-第3. 4步是DH的協商, 交換密鑰(得出X交換出密鑰)
-skyID a : 完整性算法的密鑰
-skyID e : 加密算法的密鑰
-skyID d : 完美轉發(PFS)密鑰
-如果開啓了PFS, 則第二階段的密鑰仍然用DH傳, 即重新協商各種參數
-如果在第二階段沒有開啓PFS, 則第二階段用skeyid d 這種密鑰
-第5, 6步: 身份驗證
在三四步後, 就數據加密了, 身份驗證是在一個安全的通道里面的
2積極模式(野蠻模式)
共三步:
只用三次交換, 身份認證是以明文傳輸的且不能協商DH參數, 主要供遠程接入IKE使用
如: A----------->B
1. A->B 發送所有的policy
2. B-> A 將可用的Policy + 散列值 發送到A
3. A->B 發送散列值確認, 確保policy在中途沒有被修改......
階段一的協商最終得到第一個SA, 它是一個協商成功的策略參數集, lifetime默認是86400秒, 即一天, 當兩邊的lifetime不一樣時, 自動選擇較小的那個. 當SA超時後, 算法還是不變, 但密鑰會更換.
3. 階段二
將在下一章介紹