好的,这是系列文章的第五篇。我们将解读一个在3GPP生态系统中扮演着重要“粘合剂”角色的技术——GAA,深入探索规范的5.4章节:通用认证架构业务数据存储 (Generic Authentication Architecture Service Data Storage)。
深度解析 3GPP TS 23.008:5.4 GAA用户数据全景解析 (SIM卡的“万能钥匙”)
本文技术原理深度参考了3GPP TS 23.008 V18.1.0 (2024-06) Release 18规范中,关于“5.4 Generic Authentication Architecture Service Data Storage”的核心章节。本文旨在为读者揭示3GPP如何巧妙地利用SIM/USIM卡强大的安全能力,来为各种IP应用和服务提供统一、便捷、安全的认证服务。我们将通过用户美美访问运营商增值业务的场景,来解码GAA背后的用户数据是如何运作的。
引言:当SIM卡不止用于“打电话”和“上网”
在我们的故事中,用户美美的数字生活丰富多彩。她不仅使用5G网络高速上网、享受VoNR高清通话,她还是运营商“沃娱乐”平台的忠实用户。在这个平台上,她可以免密一键登录,观看会员专属的体育赛事直播,甚至在线订阅和管理她的各种增值业务。
美美可能会好奇:为什么访问“沃娱乐”平台时,她不需要像登录普通网站那样,繁琐地输入用户名和密码?这个平台是如何安全地知道,正在访问它的,就是美美本人,而不是其他人呢?
答案,就藏在她手机的SIM卡里,以及一个名为**GAA(Generic Authentication Architecture,通用认证架构)**的幕后英雄身上。GAA的使命,就是将SIM卡那经过全球数十亿用户验证的、电信级的安全认证能力(AKA认证),“借”给各种各样的IP应用服务使用,让SIM卡变成一把可以安全开启众多应用大门的“万能钥匙”。
而TS 23.008的5.4章节,正是这份“万能钥匙”系统的“用户授权档案”。它定义了在HSS中,需要为美美存储哪些特定的GAA相关数据,来授权和管理她使用这把“钥匙”的能力。今天,我们将化身为GAA系统的“授权管理员”,以规范中的Table 5.4 (Overview of data used for GAA services) 为指南,探索GAA背后的数据奥秘。
表格解读预备知识: GAA引入了新的“角色”:
- BSF (Bootstrapping Server Function): 引导服务器功能。它是GAA架构的“心脏”和“认证中心”。当美美需要访问一个新应用时,她的手机会先和BSF进行一次基于SIM卡的AKA认证,这个过程被称为**“引导(Bootstrapping)”**。
- NAF (Network Application Function): 网络应用功能。泛指任何一个希望使用GAA进行用户认证的应用服务器,比如“沃娱乐”的直播服务器。
- HSS (Home Subscriber Server): 依然是GAA签约数据的权威存储地。
1. 身份与服务标识:定义“谁”可以使用“什么”GAA服务
这组参数定义了用户在GAA体系中的身份,以及GAA所服务的应用是什么。
Private User Identity (IMPI) [Clause 3.1.1] Stored in: HSS (M), BSF (M), NAF (C) | TYPE: P
- 参数解读: 私有用户身份(IMPI)。在GAA的语境中,它再次扮演了认证锚点的角色。BSF需要使用IMPI去HSS查询用户的GAA签约数据和认证密钥。GAA可以使用IMS域的IMPI,也可以使用基于IMSI衍生的IMPI。
- 场景演绎: 当美美的手机向BSF发起“引导”请求时,这个请求中就携带着她的IMPI。BSF拿着这个IMPI,向HSS“验明正身”,请求获取用于和美美SIM卡进行AKA认证的“认证向量”。
GAA Service Type / Identifier (GST/GSID) [Clauses 3.10.1, 3.10.2] Stored in: HSS (M), BSF (M), NAF (M) | TYPE: P
- 参数解读: GAA服务类型/标识符。这组参数用于唯一地标识一个使用了GAA的应用服务。例如,运营商可以将旗下所有的视频类服务定义为一个GST,再为“沃娱乐”的体育直播分配一个独特的GSID。
- 场景演绎: 在访问“沃娱乐”直播前,美美的手机需要先向BSF表明:“我这次认证,是为了访问GSID为‘LiveSports-001’的这个服务”。这使得HSS可以进行更精细化的授权(见下文)。
2. 授权与安全配置:精细化管理“钥匙”的权限
这是GAA签约数据的核心。它定义了美美这把“万能钥匙”到底能开哪些“门”,以及开门的方式有何不同。
GBA User Security Settings (GUSS) [Clause 3.10.3] Stored in: HSS (M), BSF (M) | TYPE: P User Security Setting (USS) [Clause 3.10.4] Stored in: HSS (M), BSF (M), NAF (M) | TYPE: P GAA Authorization flag [Clause 3.10.6] Stored in: HSS (C), BSF (C), NAF (C) | TYPE: P
- 参数解读: 这组参数共同构成了一个强大的授权策略矩阵。
- GUSS (GBA用户安全设置): 是一个总的用户安全配置档案,与用户的IMPI关联。
- USS (用户安全设置): GUSS内部可以包含多个USS。每个USS是针对一个特定GAA服务(由GSID标识)的精细化配置。它定义了用户在使用该服务时,被允许使用哪些公共身份(UID)、以及拥有哪些授权标志(Authorization flag)。
- GAA Authorization flag: 一个整数代码,代表一项具体的授权操作。
- 场景演绎: 让我们看看HSS中为美美配置的GUSS,是如何体现精细化授权的:
- 美美的GUSS档案:
- USS for “沃娱乐直播” (GSID: LiveSports-001):
- 允许使用的公共身份 (UID):
[email protected] - 授权标志: [
flag_A: 允许观看标清流,flag_B: 允许观看高清流 ]
- 允许使用的公共身份 (UID):
- USS for “业务管理门户” (GSID: SelfService-002):
- 允许使用的公共身份 (UID):
[email protected] - 授权标志: [
flag_X: 允许查询话费,flag_Y: 允许变更套餐 ]
- 允许使用的公共身份 (UID):
- USS for “沃娱乐直播” (GSID: LiveSports-001):
- 美美的GUSS档案:
- 认证与授权流程:
- 美美打开“沃娱乐”App,App告诉手机需要访问GSID为
LiveSports-001的服务。 - 手机向BSF发起引导请求,携带IMPI和GSID。
- BSF向HSS查询,获取美美的GUSS,并找到对应的USS。BSF发现美美被授权使用此服务。
- BSF与美美的SIM卡完成AKA认证,双方协商出一个会话密钥(Ks)。
- BSF生成一个**B-TID(引导事务标识符)**作为这次成功认证的“票据号”,并将密钥Ks与B-TID关联存储起来。
- 手机现在拿着这个B-TID,去访问“沃娱乐”直播服务器(NAF)。
- NAF收到B-TID后,向BSF查询:“请告诉我B-TID为‘…’的这个会话的密钥,以及用户的授权信息”。
- BSF将密钥Ks和USS中的授权标志
[flag_A, flag_B]回复给NAF。 - NAF现在知道了:1) 访问者是合法的(因为它可以用Ks与手机进行加密通信);2) 该用户有权观看高清流。于是,NAF向美美的手机推送了高清直播源。
- 美美打开“沃娱乐”App,App告诉手机需要访问GSID为
通过这套机制,复杂的认证过程被集中在了BSF,而应用服务器(NAF)只需进行简单的查询,即可获得可靠的用户身份和精细的授权信息。
3. 会话与密钥管理:保障一次性会话的安全
Bootstrapping Transaction Identifier (B-TID) [Clause 3.10.7] Stored in: BSF (M), NAF (M) | TYPE: T
- 参数解读: 引导事务标识符,是BSF在一次成功的AKA认证后,生成的唯一、有时效性的“会话凭证”。它就像是一张有时效的“电影票”,美美的手机拿着它,就可以在有效期内,去访问(一个或多个)授权的NAF。
- 场景演绎: 上述流程中生成的B-TID,其格式通常是
base64(RAND)@bsf.operator.com。它既是唯一的(RAND是随机的),又包含了BSF的地址信息,方便NAF进行查询。
Key Lifetime / Key Expirytime [Clauses 3.10.8, 3.10.13] Stored in: HSS, BSF (M), NAF (M) | TYPE: P/T
- 参数解读: 这些参数定义了通过GAA协商出的会话密钥(Ks)的有效期。
Key Lifetime是HSS中签约的、一个密钥可以使用的最长时长。Key Expirytime则是BSF在一次具体认证中,计算出的这个密钥实际的过期时间点。 - 场景演绎: HSS中可能规定,GAA密钥的生命周期最长为8小时。当美美在早上9点完成认证后,BSF会计算出
Key Expirytime为当天下午5点,并将这个信息告知NAF。NAF会记录下来。如果美美在下午5点01分,还使用旧的B-TID来请求数据,NAF就会拒绝她,并提示她需要重新进行GAA引导(即重新认证)。这确保了会话密钥的定期更新,大大提升了安全性。
FAQ环节
Q1:GAA和IMS认证有什么关系?它们可以互相替代吗? A1:GAA和IMS认证是两种不同的机制,但它们可以共享同一个安全基础。
- IMS认证: 是专门为IMS系统设计的,基于SIP协议的摘要认证(Digest AKA)。它在IMS注册流程中完成,主要目的是让用户接入IMS核心网。
- GAA: 是一种通用的认证框架,它的目的是将AKA认证能力“赋能”给任意的IP应用(NAF),而这些应用本身不需要懂复杂的AKA协议。
它们可以共享HSS中的认证数据。一个用户可以在HSS中只拥有一份认证档案(包含根密钥Ki),这份档案既可以用于生成IMS认证的AV,也可以用于生成GAA认证的AV。在
Clause 3.1.1中提到,GAA引导可以使用IMS域的认证数据。
Q2:为什么需要BSF这个中间角色?让NAF(应用服务器)直接和HSS通信不行吗? A2:引入BSF是为了安全、解耦和效率。
- 安全: HSS是运营商最核心、最敏感的数据库,存储着所有用户的根密钥信息。让成千上万、甚至可能是第三方的NAF直接与HSS对接,会带来巨大的安全风险。BSF作为统一的、受信任的“认证网关”,将HSS与外部应用隔离开来。
- 解耦: NAF只需要实现简单的、基于HTTP/Diameter的查询接口(Zn/Zh接口)与BSF通信即可,它完全不需要理解复杂的、基于MAP/Diameter的AKA认证流程。这大大降低了应用开发的复杂度。
- 效率: BSF可以对认证会话和密钥进行缓存。当一个用户在短时间内访问多个不同的NAF时,他只需要与BSF进行一次AKA认证,后续访问其他NAF时,可以直接复用这次认证的结果(B-TID和密钥),避免了重复的、耗时较长的SIM卡交互。
Q3:用户第一次使用GAA服务时,流程是怎样的?手机怎么知道BSF的地址? A3:这是一个“引导(Bootstrapping)”的过程。
- 用户手机中的应用(或操作系统)需要访问一个受GAA保护的NAF。
- NAF会拒绝该请求,并在HTTP 401 Unauthorized响应中,告诉手机BSF的地址(FQDN,如
bsf.operator.com)。 - 手机通过DNS解析,获得BSF的IP地址。
- 手机向BSF发起引导请求,后续流程就如我们上文所述。 手机通常会将BSF的地址缓存下来,以便下次使用。
Q4:GAA的用户数据(如GUSS, USS)都是永久性的,如果运营商要修改我的授权(比如我从高清会员降级为标清),是如何生效的? A4:这是通过密钥的生命周期和HSS的动态更新来实现的。
- 运营商在HSS中,修改了美美GUSS中
LiveSports-001这个服务的授权标志,移除了flag_B(允许观看高清流)。 - 这个修改是立即生效的,但对于已经建立的会话,可能不会马上感知到。
- 当美美当前的GAA会话密钥过期时(达到了
Key Expirytime),她的手机需要重新向BSF发起一次引导流程。 - 在这次新的引导中,BSF会从HSS获取到最新的GUSS数据。
- 当NAF再用新的B-TID来查询时,BSF返回给NAF的授权标志就只剩下
flag_A(允许观看标清流)了。 - NAF据此只会向美美的手机推送标清流。
Q5:GAA这种认证方式,相比我们常用的账号密码或短信验证码,有什么优势? A5:GAA提供了电信级的安全和极致的便利性。
- 更安全: GAA的安全性,根植于经过数十年攻防考验的SIM/USIM卡硬件和AKA认证算法。密钥不出卡,认证过程是双向的(用户认证网络,网络也认证用户),能够有效抵御中间人攻击、重放攻击等。账号密码容易泄露,短信验证码可能被劫持,而GAA的安全性要高出几个数量级。
- 更便利: 对于用户来说,整个过程是无感的、一键式的。无需记忆和输入任何密码,也无需等待短信。这大大提升了用户体验,特别是在移动端小屏幕上。