时间: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.