事件:2021/11/15
一.協議分析
對於5G AKA協議,它主要分為兩個階段,分別是注冊階段和挑戰-響應階段,下面將對這兩個階段分別進行介紹。
1.注冊階段
注冊階段其實並不是5G AKA協議獨有的階段,在5G公網要執行認證協議時都要經歷這個階段,而且完全相同,具體如下圖所示:
紅框部分是三個實體在開始前就知道的知識。
在注冊的過程中,UE側方框的部分是通過ECIES組件來對SUPI(5G中的用戶標識符)進行隱藏(隱藏后的SUPI變成了SUCI),從而解決了5G之前IMSI號以明文傳輸的問題,是5G在保護用戶隱私上的一大進步。這里在計算SUCI時引入了公鑰算法(通過橢圓曲線),主要原因在這里對稱密鑰體制失去了作用,UE是很多的,引入對稱密鑰后就不知道該用哪個UE的對稱密鑰進行解密了,但是公鑰體制的引入也導致了后面會出現難以抗量子的問題(這也是3GPP目前在討論的)。計算完成SUCI后,UE將SUCI和IDHN發送給SN(服務網絡),服務網絡的選擇一般是通過信號強度。SN收到后將自己的IDSN加入進去,然后發送給HN,HN再通過ECIES組件將SUCI還原成SUPI。這樣注冊過程就結束了,就像上面說的,注冊過程其實主要完成了傳遞SUCI的過程,HN有了SUCI后就會通過UDM(HN中的一個實體)來查取用戶的訂閱數據,來判斷選擇哪一個認證方法,這里一般選擇5G AKA(因為是首選,只要設備支持就選它)。
2.挑戰-響應階段
該階段不能說是5G AKA協議獨有的,只能說是獨特的,具體如下所示:
灰框中的部分也是各個實體實現已有的知識(理解協議時要注意已知的)。
接着注冊過程之后說,在注冊過程之后選擇出了認證協議,這里假設是5G AKA協議。然后HN側生成了一個認證四元組(計算過程如方框所示),其中R是一個128比特的隨機數;AUTN是一個認證令牌,要注意令牌中含有的信息,包括一個AK和SQNHN的異或值(即CONC)和一個MAC值;HXRES*是期待響應值的哈希,這里也是5G和4G的AKA協議不同之處,體現出了HN開始對SN沒有那么信任了,有利於防止惡意的SN;最后是一個KSEAF,這是一個生成的錨密鑰,用在下面認證成功后的密鑰派生。而且在計算HXRES*和KSEAF的時候也引入了SName,也是與4G認證協議的不同之處。
SN在收到HN發送的認證四元組后,將其中的隨機數R和認證令牌AUTN發送給了UE。
UE收到SN發送給自己的消息后,首先對AUTN進行了拆分,拆分成了CONC和MAC,然后為了還原序列號SQNHN,就先通過共享密鑰k和收到的隨機數R計算出了AK(這里AK的作用就是在消息中隱藏序列號),然后與CONC異或后得到SQNHN,得到序列號后再自己計算一下MAC(注意這里計算MAC時用的是收到的HN側序列號,而不是UE側的序列號),與接收到的MAC值進行對比,會有下面三種情況:
- 如果MAC值相同並且UE側的序列號小於HN側的序列號(防重放)就完成了對HN的認證(基於共享密鑰k)。
- 如果MAC值相同但是UE側的序列號大於HN側的序列號,那么UE會認為產生了序列號失步的問題,就會進行重新同步,UE側會生成一個數據包給HN,由於這里行為與上面一種情況的不同,就引入了5G AKA中的一種著名攻擊:可鏈接性攻擊(暴露用戶的隱私),解決這種攻擊的主要方法是消除或者掩飾這種行為上的不一致性(目前3GPP也在討論)。
- 如果MAC值不同,則認證失敗。
如果UE完成了對HN的認證(也就是上面的情況一),那么UE側會生成RES*和KSEAF,將響應值RES*發送給SN來進行認證。
SN在收到響應值后進行哈希,比較與HN發給自己的值是否相同,如果相同,則SN成功認證了UE,不同則認證失敗。與4G認證協議不同的是,SN在認證成功后還要發送給HN,這也是為了防止惡意的SN。
HN收到SN發給自己的響應值也進行對比,如果相同則HN完成了對UE的認證,那么整個認證過程也就徹底完成了。
二.與4G認證協議的不同之處
在了解完了5G AKA整個協議的原理之后,下面看一下與4G認證協議的對比,與4G認證協議相比,5G AKA的不同之處在於:
- 在注冊階段引入了公鑰體制(可能並不算不同,具體要看是否把注冊階段放入到5G AKA的流程中)
- 在計算挑戰值和響應值時引入了SName
- 在將期待的響應值傳給SN時進行了哈希
- 在SN完成了對UE的認證后還要進行HN對UE的認證
如果有錯誤之處歡迎在評論區指正,有研究協議及形式化分析的小伙伴可以加個好友進行交流,thanks!!!