ts_135206v130000p-Specification of the MILENAGE Algorithm Set

##  3GPP MILENAGE 算法集笔记

### 1. 概述

**MILENAGE** 是 3GPP 为 UMTS 和 LTE 系统设计的认证和密钥生成算法集示例。

- 包含七个安全函数:f1, f1*, f2, f3, f4, f5, f5*
    - f1: 网络认证码 MAC-A
    - f1*: 重新同步认证码 MAC-S
    - f2: 响应 RES
    - f3: 机密性密钥 CK
    - f4: 完整性密钥 IK
    - f5: 匿名密钥 AK
    - f5*: 重新同步匿名密钥 AK
- 算法由运营商指定,而非完全标准化。

### 2. 算法框架

MILENAGE 算法集基于以下组件:

- **分组密码加密函数 E[]**: 
    - 输入:128 位输入 x 和 128 位密钥 k
    - 输出:128 位输出 y = E[x]k
    - 示例中采用 Rijndael 算法(128 位密钥和块大小)
- **128 位操作符变量 OP**: 
    - 用于区分不同运营商的算法功能
    - 运营商可选择 OP 的值,算法安全性不依赖于 OP 是否公开

### 3. 算法流程

1. **计算 OPc**: 
    - OPC = OP ⊕ E[OP]K
2. **计算 TEMP**: 
    - TEMP = E[RAND ⊕ OPC]K
3. **构建 IN1**: 
    - IN1[0-47] = SQN[0-47]
    - IN1[48-63] = AMF[0-15]
    - IN1[64-111] = SQN[0-47]
    - IN1[112-127] = AMF[0-15]
4. **定义常数 c1-c5 和旋转量 r1-r5**:
    - c1: 全零
    - c2: 除最后一位外全零
    - c3: 除倒数第二位外全零
    - c4: 除倒数第三位外全零
    - c5: 除倒数第四位外全零
    - r1 = 64, r2 = 0, r3 = 32, r4 = 64, r5 = 96
5. **计算输出块 OUT1-OUT5**:
    - OUT1 = E[TEMP ⊕ rot(IN1 ⊕ OPC, r1) ⊕ c1]K ⊕ OPC
    - OUT2 = E[rot(TEMP ⊕ OPC, r2) ⊕ c2]K ⊕ OPC
    - OUT3 = E[rot(TEMP ⊕ OPC, r3) ⊕ c3]K ⊕ OPC
    - OUT4 = E[rot(TEMP ⊕ OPC, r4) ⊕ c4]K ⊕ OPC
    - OUT5 = E[rot(TEMP ⊕ OPC, r5) ⊕ c5]K ⊕ OPC
6. **生成函数输出**:
    - f1: MAC-A = OUT1[0-63]
    - f1*: MAC-S = OUT1[64-127]
    - f2: RES = OUT2[64-127]
    - f3: CK = OUT3[0-127]
    - f4: IK = OUT4[0-127]
    - f5: AK = OUT2[0-47]
    - f5*: AK = OUT5[0-47]

### 4. 实现注意事项

- **OPc 计算位置**: 
    - 建议在 USIM 外部计算 OPc 并存储,以降低 USIM 复杂度并提高 OP 安全性
- **自定义分组密码**: 
    - 可选择其他分组密码,但需确保其安全性。
    - 密钥函数需满足特定密码学要求。
- **进一步自定义**: 
    - 可选择不同的常数 c1-c5 和旋转量 r1-r5,但需保证 (ci, ri) 唯一
    - 建议 c1 为偶数,c2-c5 为奇数。
- **侧信道攻击防护**: 
    - 需考虑防护差分功耗分析等侧信道攻击。

上一篇:Spring Boot编程训练系统:最佳实践与技巧


下一篇:sqoop import将Oracle数据加载至hive,数据量变少,只能导入一个mapper的数据量