Milenage算法是3GPP(第三代合作伙伴计划)在UMTS(通用移动通信系统)和LTE(长期演进)网络中用于用户身份验证和密钥生成的关键算法。它基于OPE(One-Way Permutation on Encrypted data)和OPA(One-Way Function on Plain data with Addition)操作,为移动通信提供了强大的安全基础。3GPP TS 35.206是定义Milenage算法的官方技术规范,V6.0.0是该规范的一个版本。
Milenage算法的主要功能包括:
1. **随机数生成**:网络侧和用户设备(UE)各自生成一个随机数,称为RAND(Random Challenge)。
2. **密钥生成**:基于RAND、用户鉴权密钥KASME(Authentication and Session Key for Mobility Management Entity)以及网络分配的鉴权令牌(SQN, Sequence Number)和鉴权密钥AK (Authentication Key)计算出新的会话密钥K.
3. **签名生成**:UE使用OPA和OPE函数对RAND和SQN进行处理,生成响应值XRES和鉴权标记AUTN。
4. **鉴权检查**:网络接收UE返回的XRES和AUTN,通过同样的Milenage算法进行验证,确保数据的完整性和用户的合法性。
在实际应用中,Milenage算法的实现通常包括以下步骤:
1. **预处理**:网络侧和UE都执行预处理步骤,包括RAND的生成和KASME或AK的加载。
2. **OPA和OPE操作**:根据3GPP TS 35.206的定义,执行OPE和OPA函数,这些函数通常由加密哈希函数如SHA-1或SHA-256实现。
3. **密钥扩展**:使用密钥KASME或AK,生成多个子密钥,用于不同安全功能。
4. **签名和响应计算**:计算XRES和AUTN,其中AUTN还包括SQN和MAC(Message Authentication Code)部分。
5. **鉴权过程**:网络和UE间的XRES和AUTN的比较,如果匹配,则鉴权成功。
压缩包中的`TestMilenageAlgo`很可能是包含Milenage算法实现的源代码,可能用C、C++、Java或其他编程语言编写。这样的代码库通常包括函数实现、测试用例和配置文件,帮助开发者理解算法工作原理并验证其正确性。测试用例可能会模拟网络和UE之间的交互,包括生成随机数、计算签名和进行鉴权检查,以确保代码按照3GPP标准正确实现了Milenage算法。
学习和理解Milenage算法及其实现,对于从事移动通信网络安全、智能卡开发、终端设备制造或者网络运营的工程师来说至关重要,因为它直接影响到网络的安全性和用户体验。通过深入研究这些代码,开发者可以更好地掌握鉴权流程,增强系统的安全性,并且能够针对新的网络攻击策略进行有效的防御。
2019-12-21 19:48:30
9KB
登网鉴权
1