IMS AKA鉴权及应用流程详解

@auth doubleRabbit
@date 2017-03-14

目的

  • 了解鉴权及通信类业务相关鉴权算法的概念原理
  • 了解IMS注册流程
  • 了解IMS鉴权流程应用

鉴权含义

鉴权是指用户访问系统的权利,是提升系统安全性的一种方式,传统鉴权方法就是用户名与密码。
鉴权与授权的区别联系。逻辑上授权过程发生在鉴权之后,而实际中有时鉴权与授权对于用户来说体现为同一过程。例如在EPC附着过程中,先发生AIA鉴权过程,再发生ULR位置更新过程(授权)。
接下来讲的是针对通信类业务应用场景,具体涉及IMS注册流程。

鉴权类型

单向鉴权:用户鉴权,即网络对用户鉴权,防止非法用户接入网络。
双向鉴权:用户鉴权与网络鉴权。网络鉴权即用户鉴权网络,防止用户接入了非法的网络,例如伪基站。
手机入网采用信号强弱来进行选择,伪基站一般发射功率大,相信很多人在2G/3G情况下都碰到过这种情况下,当你到过某一区域时,手机突然离线马上又上线,收到诈骗与广告信息,此时打不通电话,离开一段距离后,又恢复正常。这是由于2G/3G时代采用单向鉴权,伪基站鉴权用户时直接通过,附着上然后获取到了你的手机号与卡信息,给你发信息,如果双向鉴权的话,伪基站不知道卡的密码信息,手机鉴权网络是肯定不通过的。

鉴权机制与算法

鉴权机制

鉴权机制是指鉴权过程的执行方式,机制它规范了业务的操作流程。
摘要认证,HTTP/1.0中包括了基本访问鉴别方案,该方案是采用明文的用户名与密码在网络传输,这样非常的不安全,后来发展成为基于哈希加密方式的摘要认证方式,摘要认证的基本意思为取需要认证的一部分信息,然后利用哈希加密方法计算得出其比较值。其根据使用协议分为HTTP摘要认证与SIP摘要认证,两者的计算方法一样,只是涉及到协议的字段含义不一样而己。
SIP摘要:适用于无ISIM 卡的移动和固定终端
HTTP摘要
IMS AKA(AKAV1_MD5与AKAV2_MD5):适用于具有ISIM 卡的移动和固定终端,是对HTTP摘要认证的扩展,主要用于用户的认证和会话密钥的分发
EARLY_IMS
NASS_BUNDLED

鉴权机制 鉴权类型
HTTP摘要 单向
SIP摘要 单向
IMS AKA 双向

鉴权算法

鉴权算法是指鉴权过程中相关值(原始值、中间值及终值)的生成方法。

MD5

Message Digest Algorithm MD5,为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。另外散列函数还有sha-1,具有以下特点。
- 压缩性:任意长度的数据,算出的MD5值长度都是固定的
- 容易计算:从原数据计算出MD5值很容易
- 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别
- 强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的
MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。目前各个版本语言都有其开源的实现,如linux系统下的实现文件(md5.h/md5.c)。

Base64

Base64是一种用64个字符来表示任意二进制数据的方法。其64个字符如下。
['A', 'B', 'C', ... 'a', 'b', 'c', ... '0', '1', ... '+', '/']
然后对二进制数进行处理,以每3个字节一组,共24位,再次进行划分为4组,以6bit表示一组,最后以6bit一组所代表的数值进行查64个字符表中该位置所对应的字符,所得出的字符即为编码后的字符。可想而知Base64编码会把3字节的二进制数据编码为4字节的文本数据,长度增加33%。

如果要编码的二进制数据不是3的倍数,最后会剩下1个或2个字节怎么办?Base64用\x00字节在末尾补足后,再在编码的末尾加上1个或2个=号,表示补了多少字节,解码的时候,会自动去掉。
Base64适用于小段内容的编码,比如数字证书签名、Cookie的内容等。
示例:
EFHcj+MdcOJcptPq9IiBG+K8+3koDIAALYGFWwW8BZM=
解码:以上示例总为44个字符,即44*6=264个bit,由于末尾有一个=表示补充了1个字节8位,所以真实长度为264-8=256位,即标准32个字节。

AKA

AKA机制是由IETF制定、并被3GPP采用,广泛用于3G无线网络的鉴权机制。IMS的鉴权机制沿用了这种机制的原理和核心算法,算法的详细介绍查阅TS33.102文档。

以上为AKA算法的原理结构图,AKA算法有MilenageXOR两种具体实现方式,一般常用Milenage实现方式,目前对于算法基本(f1-f5)实现均有不同语言的开源实现。

参数 长度(bits) 备注
SQN 48 序列号
AK 48 匿名钥匙
CK 128 加密密钥
IK 128 完整性密钥
AMF 16 鉴权管理域
MAC 64 消息鉴权码
MAC-A 64 网络鉴权码,一般鉴权时作为MAC值
MAC-S 64 重同步鉴权码,重同步鉴权时作为MAC值
RES 64 鉴权响应
XRES 64 期望鉴权响应,HSS下发给MME,UE响应后计算响应与此比较,一致则通过
c1,c2,c3,c4,c5 128 常数,与或运算的中间变量
r1,r2,r3,r4,r5 0-127的整数,目标参数的周期性旋转量

Milenage算法使用的符号含义

符号 备注
= 等于
十字圆 与或运算
|| 串联运算,如0000||1111=00001111

IMS业务流程

注册流程

IMS作为IP融合架构下统一的呼叫会话控制中心,详细的网元意图在些不表,涉及到的协议为SIP、Diameter,在UE接入注册时需要执行鉴权过程,如下图所示。

鉴权关键点:
1,第6步SCSCF向HSS通过MAR请求鉴权向量AV,图为五元向量组,实际为四元向组(AUTH,XRES,CK,IK);
2,第16步SCSCF计算UE的挑战回应。
抓包流程如下

信令内容如下
1,UE发起REGISTER消息,携带注册内容与鉴权相关参数,nonce与response均为空;

Security-Client: ipsec-3gpp;alg=hmac-sha-1-96;prot=esp;mod=trans;ealg=des-ede3-cbc;spi-c=10056063;spi-s=50257488;port-c=31100;port-s=31800,ipsec-3gpp;alg=hmac-sha-1-96;prot=esp;mod=trans;ealg=aes-cbc;spi-c=10056063;spi-s=50257488;port-c=31100;port-s=31800,ipsec-3gpp;alg=hmac-sha-1-96;prot=esp;mod=trans;ealg=null;spi-c=10056063;spi-s=50257488;port-c=31100;port-s=31800,ipsec-3gpp;alg=hmac-md5-96;prot=esp;mod=trans;ealg=des-ede3-cbc;spi-c=10056063;spi-s=50257488;port-c=31100;port-s=31800,ipsec-3gpp;alg=hmac-md5-96;prot=esp;mod=trans;ealg=aes-cbc;spi-c=10056063;spi-s=50257488;port-c=31100;port-s=31800,ipsec-3gpp;alg=hmac-md5-96;prot=esp;mod=trans;ealg=null;spi-c=10056063;spi-s=50257488;port-c=31100;port-s=31800
Authorization: Digest username="460001023420005@ims.mnc000.mcc460.3gppnetwork.org",
realm="ims.mnc000.mcc460.3gppnetwork.org",
uri="sip:ims.mnc000.mcc460.3gppnetwork.org",
nonce="",response=""

2,SCSCF针对初始注册发起401鉴权挑战,注入nonce值;

WWW-Authenticate: Digest nonce="EFHcj+MdcOJcptPq9IiBG+K8+3koDIAALYGFWwW8BZM=",
algorithm=AKAv1-MD5,
realm="ims.mnc000.mcc460.3gppnetwork.org",
ik=c38457266f24afc342f74258a1c9bd48,
ck=8301e8fb4ac1a2e45e591c3a00c08a2f

3,UE回应挑战,SCSCF鉴权用户响应

Authorization: Digest nonce="EFHcj+MdcOJcptPq9IiBG+K8+3koDIAALYGFWwW8BZM=",
username="460001023420005@ims.mnc000.mcc460.3gppnetwork.org",
uri="sip:ims.mnc000.mcc460.3gppnetwork.org",
realm="ims.mnc000.mcc460.3gppnetwork.org",
algorithm=AKAv1-MD5,
response="230aecb0480f1db901de081c8b62b964",
integrity-protected="yes"

IMS AKA鉴权流程

IMS AKA鉴权流程涉及到终端UE、PCSCF、SCSCF及HSS网元,UE与HSS共享统一的密钥,HSS充当鉴权中心生成鉴权向量,不会将原始的密钥暴露在网络上,PCSCF与UE之间建立IPSEC安全通道,直接与UE之间传输通信,SCSCF负责以HSS的鉴权向量为基准真正执行鉴权决策过程。大体流程如上一节己讲,接下来讲一下与鉴权相关的具体实现过程。
1,UE发起初始REGISTER请求,即一个不带integrity-protected参数的或者在认证头中integrity-protected参数设为No的REGISTER请求,且Authorization头域中NONCERESPONSE字段值为空,指明鉴权机制为摘要认证,消息经P/ICSCF传递给SCSCF,SCSCF向HSS发送MAR请求鉴权向量,HSS生成四元鉴权向量组过程如下;

AV = AUTH||XRES||CK||IK
AUTH = SQN@AK || AMF || MAC
MAC = F1K(SQN || RAND || AMF)
CK = F3K(RAND)
IK = F4K(RAND)
AK = F5K(RAND)
XRES = F2K(RAND)

2,SCSCF收到鉴权向量后,将AUTH值经过Base64编码后填充到401响应的Authorization头域中的nonce字段中,并且将IK与CK值填充到ik与ck字段中,这两值不需要编码,因为属于内部网元之间的数据交换;
3,PCSCF收到SCSCF发送的响应,协商建立与UE之间的IPSEC通道,并且将CK与IK字段去掉,然后将消息发送给UE;
4,UE收到401呼应后,通过如下方法计算XMAC值与NONCE值中的MAC值进行比较,如果通过则发起第二次REGISTER请求(CSeq递增),说明用户鉴权网络成功,否则继续发送第一次REGISTER请求;

5,SCSCF收到第二次REGISTER请求后,该请求携带UE计算好的RESPONSE值,SCSCF按摘要认证的方式计算出期望的RESPONSE值,如果两者一致则说明网络鉴权用户成功,从而完成整个双向鉴权的过程,否则返回错误响应。

A1 = unq(username-value) ":" unq(realm-value) ":" passwd   // 特别注意此处的passwd即为从HSS获取的xres值
A2 = Method ":" digest-uri-value
RESPONSE=MD5(MD5(A1),":" nc-value":" unq(cnonce-value)":" unq(qop-value)":" MD5(A2))

参考文档

IMS:移动领域的IP多媒体概念和服务
RFC 2617 摘要认证
RFC 3261 初始会话控制协议
RFC 3588 Diameter基础协议
3GPP TS35.206 33.102 AKA核心算法

Q&A

如有讲述不当之处,请批评指正。

IMS AKA鉴权及应用流程详解相关推荐

  1. 5G UE鉴权流程详解 UE Authentication

    名词 SUCI (Subscription Concealed Identifier)订阅隐藏标识符 SUPI (Subscription Permanent Identifier)订阅永久标识符 S ...

  2. aka鉴权 ims_ims 注册鉴权认证过程

    移动通信的安全问题正越来越多地受到关注.2G网络主要传输语音业务,采用的是单向的用户认证方案,即网络能够验证用户身份是否合法,而用户无法确认其所连接的网络服务是否可靠.然而,3G网络将会演变成一个覆盖 ...

  3. ims 注册鉴权认证过程

    摘要:IP多媒体子系统(IMS)作为3G网络的核心控制平台,其安全问题正面临着严峻的挑战.IMS的接入认证机制的实现作为整个IMS安全方案实施的第一步,是保证IMS系统安全的关键.基于认证和密钥协商( ...

  4. UE发起的PDU Session Establishment流程详解(1)

    相关文章会在公众号同步更新.公众号:5G通信大家学 持续更新的相关5G内容都是直接根据3GPP整理,保证更新内容的准确性,避免通过二手,甚至多手的资料,以讹传讹误导网友. 在介绍完流程详解后,会整理专 ...

  5. UE发起的PDU Session Establishment流程详解(2)

    相关文章会在公众号同步更新.公众号:5G通信大家学 持续更新的相关5G内容都是直接根据3GPP整理,保证更新内容的准确性,避免通过二手,甚至多手的资料,以讹传讹误导网友. 在介绍完流程详解后,会整理专 ...

  6. 2016 年最新苹果开发者账号注册流程详解(个人账号篇)

    苹果宣布 Search Ads 重磅上线的同时,也向开发者传达了一个好消息:申请注册 Search Ads 即可获得 100 美元账户余额.虽然竞价广告目前仅限美国区,但此项福利却在中国区引发了一场规 ...

  7. .jpg图片转化流程详解

    .jpg文件转化流程详解 概要 色彩空间转换 缩减采样 图像分成8×8像素块 离散余弦变换 量化 压缩 理解质量参数 总结 原文地址 本篇文章翻译自谷歌出的优化视频里面的光头佬(Colt McAnli ...

  8. 跨境电商三单对碰三单申报流程详解

    跨境电商三单对碰三单申报流程详解 概要:三单申报是指"电子订单.电子运单.支付凭证". 1.电子订单: 适合申报企业类型"电商企业.电商交易平台.电商境内代理企业&quo ...

  9. Android事件流程详解

    Android事件流程详解 网络上有不少博客讲述了android的事件分发机制和处理流程机制,但是看过千遍,总还是觉得有些迷迷糊糊,因此特地抽出一天事件来亲测下,向像我一样的广大入门程序员详细讲述an ...

最新文章

  1. 收藏 | Google 发布关于机器学习工程的最佳实践
  2. 【错误记录】Windows 系统 bat 脚本报错 ( Java 生成 bat 脚本乱码处理 | 输出 GB2312 字符串 | Windows 中的换行时 \r\n )
  3. android面试小结
  4. kettle将文件路径定义为_kettle_步骤解释
  5. 【Trie】bzoj1212 [HNOI2004]L语言
  6. 如何使用.NET Core,SQL和HTML和JavaScript构建CRUD应用程序
  7. win2008支持mysql asp.net_Win7、win2008中让IIS7支持asp的方法
  8. stl:空间配置器的标准接口
  9. AdobeFlashPlayer:GPU加速原理解析
  10. socksCap32+socks2http软件
  11. 想去掉抖音短视频里的水印,有没有一键去水印的方法?
  12. 互联网日报 | 1月10日 星期日 | 小米之家千店同开;蔚来发布首款旗舰轿车ET7;LVMH完成收购Tiffany...
  13. 带符号整数中负数采用什么编码_转载:二进制编码--负数
  14. 苏宁大数据怎么运营_苏宁大数据离线任务开发调度平台实践
  15. sugarnms如何快速实现网管软件定制开发?
  16. 《小岛经济学》八、金本位的破灭、房地产的泡沫
  17. QT之qss教程- QScrollBar
  18. 面向端到端的情感对话生成研究综述
  19. Linux下安装JDK教程,老爷爷看了都说会了!
  20. branca.colormap自带的json文件对颜色的定义

热门文章

  1. 树莓派python闹钟_使用树莓派和DS3231制作实时闹钟
  2. 安卓系统主板手机开发板,MTK 5G 通讯模块主板芯片全解
  3. My SQL数据库基础知识点全面总结笔记(下)
  4. 软件设计师必考精华 - 计算机网络
  5. 卫生人员职称计算机考试成绩查询,中国卫生人才网中国卫生人才网-2021卫生职称考试成绩查询网站...
  6. CSDN博客给我带来的一些诱惑和选择机会(二):HR“邀请于我”,猎头“有求于我”...
  7. dovecot+mysql+空壳邮件
  8. 阿里云云计算acp认证考试是什么?阿里云认证体系
  9. git 回退的三种方式
  10. java 向List最前面插入元素