子標題:ipsec rekey是否會導致丟包
author: classic_tong
前言
什么叫rekey。
rekey是指ipsec的通信兩端定期更換加密信道秘鑰的機制。
為了安全性考慮,隨着秘鑰使用時間的延遲,對稱秘鑰被破解的可能性會逐漸增大。所以,定期更換
對稱秘鑰,是保證ipsec安全性的必要手段。
我們知道key有兩個key,IKE sa的key和child sa(ipsec sa)的key。所以rekey也有兩個,ike rekey
和child rekey。
這里只討論child sa的rekey。
所有內容,都來自這里:https://tools.ietf.org/html/rfc7296#section-2.8
一 概念
rekey是指,一旦滿足rekey條件(soft條件)時,會向另一端發送一個CREATE_CHILD_SA請求消息,另一個端回復
一個CREATE_CHILD_SA響應消息。從而協商出一個新的sa的過程。
這個時候,舊的SA並沒有被刪除,一旦瞞住刪除條件(hard條件)時,舊的SA會被滿足條件的一段,通過INFORMATION條件觸發刪除。
rekey的觸發條件分三種,時間觸發,報數觸發,字節數觸發。其中各又被分為soft和hard兩種條件。用來分別觸發上邊的描述。
例如:設置了時間觸發為100秒。就是指child sa在協商建立之后的100秒,會啟動rekey流程。
在這個例子里,已strongswan的實現為例,hard = 100秒 + random秒。soft = hard × 90%
也就是在soft秒的時候,一端會建立新的sa。到hard秒的時候會刪掉舊的sa。
報數與字節數同理,soft永遠會先於hard條件到達。
這里。請注意這個時間差(hard - soft),這是rekey機制的一個潛在的條件。在這個時間段內,必須做好兩件事情,才能保證
rekey過程的平滑,也就是ESP包不丟失。
第一件事情是完成兩端的新SA的建立。
第二件事情是兩端都完成流量從舊SA到新SA的切換。
在ikev2中,以上觸發條件是在ipsec的兩端本地設置的。彼此不協商。誰先到底條件,誰就會發起rekey。
在ikev1中,以上條件是協商處理的。我們只討論ikev2.
二 流程
rekey的常規流程邏輯是不會導致丟包的,利用下圖,做詳情講解:
該圖的左邊是首先發生rekey的一方,右邊是ipsec鏈接的另一方。
1. 左邊到達rekey的soft觸發條件。
2. 左邊發送新建sa的請求消息。
3. 右邊收到消息后,開始在本地創建新的SA。
4. 右邊發送新建sa的響應消息。但是這里有一個條件就是在發送這個包之前,必須保證本地的新SA已經完全就緒,並且隨時可用。
在這之后,右邊必須仍舊使用舊的SA發送ESP消息。
5. 左邊收到響應消息后,在本地完成新SA的創建過程。
新的SA建立好之后,右邊將切換使用新的SA給對端發送ESP消息。
6. 右邊收到的新SA發送過來的消息之后,並且解密成功。這個時候說明左邊的新SA已經就緒了。
於是右邊將流量從舊的SA切換到新的SA上面去。
7. 右邊可以使用新的SA發送ESP消息了。
至此,新的SA已經完成了建立和切換的過程,並且不會導致丟包。
8. 左邊到達rekey的hard條件
9. 左邊發送刪除舊SA的請求。
10,右邊回應刪除舊SA的請求。
至此,rekey過程完成。
需要特別說明的是,又可以在rekey期間,左邊並沒有需要發給對方的ESP報文時。它會發一個假的過去,觸發對方切換SA。
或者,當右邊沒有收到任何新SA的ESP報文,但是卻收到了舊SA的刪除請求時,它也會進行SA的切換。(也就是說沒有收到圖中的5,直接收到了9)
總結一下,這里邊兩個關鍵的邏輯在4和6上面。
只要是正確的ipsec實現,4上面都不會有問題。所以在6的一些特殊情況下,會導致rekey期間的丟包。
比如,hard減去soft的時間過短,短到左邊的sa創建流程沒有及時完成,便觸發了右邊的流量切換。
三 多出來的SA
第一小節中random的作用是為了防止兩端同時rekey的出現。
例如我們一般在配置兩邊的ipsec隧道時,通常會采用相同的配置,如rekey time=3600秒。
這個時候如果沒有random時間,兩邊會同時發起rekey。
同時發起rekey的情況下,兩側的新建sa都會成功,這個時候會出現三個SA。
每一端都會各自獨立檢測這個場景,然后發現同時rekey的出現。然后會由發起的人來刪除nonce比較小的那個一個SA。
以此到達刪除重復sa的目的。
四 其他
RFC里,讀到一句話,也不知道什么情況下會出現TS和算法會和就的SA不同。
Note that, when rekeying, the new Child SA SHOULD NOT have different Traffic Selectors and algorithms than the old one.