時間:2022/03/21
一.協議分析
下圖是5G中EAP-TLS協議的整體流程圖:
協議步驟:
(1)開始時,UE向網絡端發送連接請求,該請求中包含隱藏后的SUCI(將用戶永久標識SUPI用歸屬網絡中網元UDM的公鑰進行加密)和一個隨機數RUE(這里這個隨機數的作用未知,在后面的認證過程中並未用到),該請求被發送給了服務網絡。
(2)服務網絡在收到該連接請求后,在原有消息的基礎加入本服務網絡的名字SEAFN,並將消息轉發給歸屬網絡。
(3)歸屬網絡中的AUSF首先檢查消息中的SEAFN表示的是否是一個合法的服務網絡名字,若是,則將消息轉發給歸屬網絡中的UDM。然后UDM使用自己的私鑰對消息中的SUCI進行解密后得到SUPI,判斷該UDM是否是一個合法用戶的身份標識。
(4)如果上述過程通過,UDM向AUSF發送解析到的SUPI和選擇的身份認證協議(這里選擇的是EAP-TLS協議)。
(5)AUSF通過服務網絡向UE發送TLS_START消息,表示EAP-TLS認證過程的開始。
(6)UE生成一個新的隨機數RUE1,然后將該隨機數和自己支持的密碼學算法通過服務網絡發送給歸屬網絡中的AUSF。
(7)AUSF生成一個隨機數RAUSF,然后將該隨機數和自己的證書以及自己支持的密碼學算法通過服務網絡發送給歸屬網絡中的UE。
(8)當UE收到上面的消息后,首先驗證AUSF證書的有效性。如果證書有效,UE生成一個新的隨機數Rprekey,然后通過Rprekey、RUE1和RAUSF三個隨機數生成會話密鑰Ksession。之后計算之前握手信息的哈希值(比如上圖中消息2、3、4的哈希值)。計算完這些之后,UE通過SEAF向AUSF發送如下消息:用AUSF公鑰加密的隨機數Rprekey、UE的證書、使用UE私鑰簽名的消息哈希值、使用會話密鑰加密的消息哈希值。
(9)AUSF收到消息后首先檢查UE證書的有效性,然后使用自己公鑰解密獲得隨機數Rprekey,並且使用上述的三個隨機數值來計算會話密鑰Ksession,之后對比使用UE的公鑰來解密獲得消息哈希值和用會話密鑰解密的消息哈希值是否相等,若相等,則AUSF自己再計算之前握手消息的哈希值,與從UE發送過來的消息哈希值再次進行對比,若相等,則AUSF使用會話密鑰加密上述計算的消息哈希值,將加密后的消息哈希值發送給UE。
(10)UE收到AUSF發送來的加密消息哈希值之后,使用會話密鑰進行解密,然后將解密后的消息哈希值與自己計算的消息哈希值做對比,如果相同,則UE認為通過了認證,發送消息EAP_TLS給SEAF,SEAF將該消息轉發給AUSF。
(11)當AUSF收到消息EAP_TLS,它會基於隨機數Rprekey來生成錨密鑰Kseaf,然后將該錨密鑰、UE的身份SUPI和認證成功消息發送給SEAF。
(12)SEAF將認證成功消息轉發給UE,UE在收到該消息后,使用與AUSF相同的方法來生成錨密鑰Kseaf,該錨密鑰會被用來保證UE與網絡之間接下來通信的安全。
參考文獻:
[1] Zhang J, Yang L, Cao W, et al. Formal analysis of 5g eap-tls authentication protocol using proverif[J]. IEEE access, 2020, 8: 23674-23688.