危機四伏
隨着GRE和L2TP的廣泛應用,民間組織天地會也與時俱進,在總舵和各個分舵之間部署了GRE和L2TP。總舵和分舵通過GRE隧道和L2TP隧道傳遞消息,互通有無,反清復明事業開展得如火如荼。但好景不長,總舵和分舵之間傳遞的機密信息被官府查獲,分舵的堂主幫衆悉數被抓,一時間Internet上暗潮洶涌,天地會危機四伏。
事關幫派存亡,陳總舵主趕忙召集會議商討對策,究其原因,無論是GRE還是L2TP,建立的隧道都沒有任何安全加密措施,總舵和分舵之間的消息在GRE隧道或L2TP隧道中都是明文傳輸,機密信息很容易就被官府獲取。如何保證信息安全傳輸是擺在天地會面前的一道難題,購買專線是個解決方法,但由於四十二章經中的寶藏還未找到,天地會的財力不足以搭建總舵到各個分舵的專線,所以還得利用現有的公共資源---Internet來想辦法。
遍訪高人之後,天地會終於找到了解決問題之道:IPSec(IP Security)。作爲新一代的VPN技術,IPSec可以在Internet上建立安全穩定的專用線路。與GRE和L2TP相比,IPSec更加安全,能夠保證總舵與分舵之間消息的安全傳輸。
兩大絕技
要說這IPSec可不簡單,它不是一個單一的招式,而是一整套招法。IPSec巧妙借用了密碼學門派所擅長的易容障眼之法,融會到自創的AH(Authentication Header,驗證頭)和ESP(Encapsulating Security Payload,封裝安全載荷)兩大絕技中,既可改頭換面瞞天過海,也能驗明正身完璧歸趙。即便消息被截獲了也沒人能看懂,被篡改了也能及時發現。
- 改頭換面,瞞天過海---加密
IPSec借用了易容術的巧妙之處,一方傳遞消息之前,先使用加密算法和加密密鑰,將消息改頭換面,該過程稱爲加密;另一方收到消息後,使用相同的加密算法和加密密鑰,逆向將消息恢復爲真實面貌,該過程稱爲解密。而消息在傳遞過程中絕不以真容示人,令竊密者一無所獲。
當天地會的總舵和分舵需要互通消息時,雙方事先商議好相同的加密算法和加密密鑰,假設總舵要向分舵發佈命令“八月十五,太湖岸邊,共舉大事”,總舵先使用顛三倒四加密算法,將文字顛倒位置,然後再將加密密鑰“反清復明”插入其中,加密後的命令最終變成“反十五太湖清岸邊共舉復大事八月明”這樣的一段消息,然後傳遞出去。即使該消息在路上被官府截獲,也會讓官府看的一頭霧水,不會發現任何蛛絲馬跡。而分舵收到消息後,使用相同的顛三倒四加密算法和加密密鑰“反清復明”,便可將消息恢復成原始的命令“八月十五,太湖岸邊,共舉大事”。
總舵和分舵使用相同的密鑰來加密和解密,這種方式也叫對稱加密算法,主要包括DES、3DES和AES
項目 |
DES |
3DES |
AES |
全稱 |
Data Encryption Standard |
Triple Data Encryption Standard |
Advanced Encryption Standard |
密鑰長度 |
56位 |
168位 |
128位、192位、256位 |
安全級別 |
低 |
中 |
高 |
- 驗明正身,完璧歸趙---驗證
古有藺相如忠肝義膽,完璧歸趙,今有IPSec火眼金睛,明辨是非。一方傳遞消息之前,先使用驗證算法和驗證密鑰對消息進行處理,得到簽字畫押的文書,即簽名。然後將簽名隨消息一同發出去。另一方收到消息後,也使用相同的驗證算法和驗證密鑰對消息進行處理,同樣得到簽名,然後比對兩端的簽名,如果相同則證明該消息沒有被篡改。
除了對消息的完整性進行驗證,IPSec還可以對消息的來源進行驗證,即驗明消息的正身,保證消息來自真實的發送者。
通常情況下,驗證和加密配合使用,加密後的報文經過驗證算法處理生成簽名。常用的驗證算法有MD5和SHA系列。
項目 |
MD5 |
SHA1 |
SHA2 |
全稱 |
Message Digest 5 |
Secure Hash Algorithm 1 |
Secure Hash Algorithm 2 |
簽名長度 |
128位 |
160位 |
SHA2-256:256位 SHA2-384:384位 SHA2-512:512位 |
安全級別 |
低 |
中 |
高 |
IPSec的兩大絕技中,AH只能用來驗證,沒有加密的功能,而ESP同時具有加密和驗證的功能,AH和ESP可以單獨使用也可以配合使用。
安全封裝
天地會不能將反清復明的招牌掛於明處,所以只能用合法生意作爲掩護。例如,總舵對外的公開身份是當鋪,分舵對外的公開身份是票號,當鋪和票號之間正常的生意往來就是最好的保護傘。在爲了更好地利用這個保護傘,IPSec設計了兩種封裝模式:
- 明修棧道暗度陳倉---隧道模式
在隧道模式下,AH頭或ESP頭被插到原始IP頭之前,另外生成一個新的報文頭放到AH頭或ESP頭之前:
隧道模式使用新的報文頭來封裝消息,可以保護一個網絡的消息,適用於兩個網關之間通信,是比較常用的封裝模式。總舵和分舵內部私網之間的信息經過加密和封裝處理後,在外看來只是總舵和分舵的公開身份(公網地址),即當鋪和票號之間的通信,不會被人懷疑。
- 開門見山直來直往---傳輸模式
在傳輸模式中,AH頭或ESP頭被插入到IP頭與傳輸層協議頭之間:
傳輸模式不改變報文頭,隧道的源和目的地址就是最終通信雙方的源和目的地址,通信雙方只能保護自己發出的消息,不能保護一個網絡的消息。所以該模式只適用於兩臺主機之間通信,不適用於天地會總舵和分舵內部私網之間通信。
互信盟友
IPSec中通信雙方建立的連接叫做安全聯盟SA(Security Association),顧名思義,通信雙方結成盟友,使用相同的封裝模式、加密算法、加密密鑰、驗證算法、驗證密鑰,相互信任親密無間。
安全聯盟是單向的邏輯連接,爲了使每個方向都得到保護,總舵和分舵的每個方向上都要建立安全聯盟。總舵入方向上的安全聯盟對應分舵出方向上的安全聯盟,總舵出方向上的安全聯盟對應分舵入方向上的安全聯盟。
爲了區分這些不同方向的安全聯盟,IPSec爲每一個安全聯盟都打上了唯一的標識符,這個標識符叫做SPI(Security Parameter Index)。
建立安全聯盟最直接的方式就是分別在總舵和分舵上人爲設定好封裝模式、加密算法、加密密鑰、驗證算法、驗證密鑰,即手工方式建立IPSec安全聯盟。
初顯神威
瞭解到IPSec的強大威力後,天地會陳總舵主決定先在總舵和一個分舵之間使用手工方式部署IPSec隧道,對總舵和分舵內部網絡之間傳遞的消息進行保護,驗證IPSec隧道的安全效果。
爲了讓加密、驗證、安全聯盟的配置關係更清晰,IPSec爲手工方式定義了四個步驟:
1、 定義需要保護的數據流
只有總舵和分舵內部網絡之間交互的消息才被IPSec保護,其他消息不受保護。
2、 配置IPSec安全提議
總舵和分舵根據對方的提議,決定能否成爲盟友。封裝模式、ESP、加密算法和驗證算法均在安全提議中設置。
3、 配置手工方式的IPSec安全策略
指定總舵和分舵的公網地址、安全聯盟標識符SPI,以及加密密鑰和驗證密鑰。
4、 應用IPSec安全策略
手工方式的IPSec配置關係如下圖所示:
天地會總舵和分舵的關鍵配置和解釋如下:
配置項 |
天地會總舵 |
天地會分舵 |
ACL |
acl number 3000 rule 5 permit ip source 192.168.0.0 0.0.0.255 destination 172.16.0.0 0.0.0.255 |
acl number 3000 rule 5 permit ip source 172.16.0.0 0.0.0.255 destination 192.168.0.0 0.0.0.255 |
IPSec安全提議 |
ipsec proposal pro1 transform esp encapsulation-mode tunnel esp authentication-algorithm sha1 esp encryption-algorithm aes |
ipsec proposal pro1 transform esp encapsulation-mode tunnel esp authentication-algorithm sha1 esp encryption-algorithm aes |
IPSec安全策略 |
ipsec policy policy1 1 manual security acl 3000 proposal pro1 tunnel local 1.1.1.1 tunnel remote 2.2.2.2 sa spi inbound esp 54321 sa spi outbound esp 12345 sa string-key inbound esp huawei@123 sa string-key outbound esp huawei@456 |
ipsec policy policy1 1 manual security acl 3000 proposal pro1 tunnel local 2.2.2.2 tunnel remote 1.1.1.1 sa spi inbound esp 12345 sa spi outbound esp 54321 sa string-key inbound esp huawei@456 sa string-key outbound esp huawei@123 |
應用IPSec安全策略 |
interface GigabitEthernet0/0/1 ip address 1.1.1.1 255.255.255.0 ipsec policy policy1 |
interface GigabitEthernet0/0/0 ip address 2.2.2.2 255.255.255.0 ipsec policy policy1 |
注:除了上述IPSec的配置之外,防火牆安全策略也需要配置,允許總舵和分舵之間建立安全聯盟,以及允許總舵私網和分舵私網之間互訪。
部署完成後,總舵內部網絡向分舵內部網絡發出ping消息,分舵內部網絡回覆ping消息,天地會在Internet上模擬官府設卡檢查,發現兩個方向的ping消息都已經被IPSec安全聯盟保護。兩個方向上IPSec安全聯盟的標識符SPI分別爲0x3039(十進制12345)以及0xd431(十進制54321),與上文配置相符。
分析報文的內容,發現ping消息已經被加密,面目全非無法辨識,這樣即使該消息真的被官府查獲,也不能獲取到任何有價值的信息。
爲了對比ESP和AH的作用,天地會又使用IPSec中的另一絕技AH來建立安全聯盟。AH只有驗證功能,沒有加密的功能,官府從查獲到的消息中看到私網報文頭和ping消息真容。因此,如果要實現加密,還是要使用ESP,或者AH和ESP配合使用。
自從使用了IPSec後,天地會總舵和分舵之間通信順暢,沒過多久,又新發展了好幾個分舵,新建立的分舵也要和總舵建立IPSec隧道。如果繼續使用手工方式的話,每個分舵都需要配置各種參數,工作量大也不便於維護。IPSec也考慮到了這種情況,除了手工方式之外,IPSec還支持總舵和分舵自動協商建立IPSec安全聯盟,該招式名爲IKE。欲知IKE詳情,請聽下回分解。