功能性加密(Functional Encryption):从属性基加密到通用计算
概述
功能性加密(Functional Encryption, FE)是密码学中最具革命性的概念之一,由 Sahai 和 Waters 在 2005 年首次提出。与传统加密不同,FE 允许密钥持有者仅获取明文 m 在特定函数 f 上的计算结果 f(m),而非明文本身。
这种"精确权限控制"的能力,为解决数据共享中的隐私保护问题提供了全新的理论框架。本文从基本概念出发,逐步深入 FE 的安全模型、构造方法及其与国密标准的映射关系。
核心思想与数学定义
1. 基本形式
功能性加密方案由四个多项式时间算法组成:
- Setup(1^λ):生成系统主密钥 pk 和主密钥 mk
- KeyGen(mk, f):根据函数 f 生成函数密钥 sk_f
- Encrypt(pk, m):使用明文 m 加密生成密文 C
- Decrypt(C, sk_f):使用函数密钥解密,输出 f(m)
2. 与公钥加密的对比
| 特性 | 公钥加密(PKE) | 功能性加密(FE) |
|---|---|---|
| 解密能力 | 完整明文 m | 仅 f(m) |
| 密钥粒度 | 粗粒度(所有/none) | 细粒度(按函数定制) |
| 应用场景 | 通用保密通信 | 数据共享、权限控制 |
| 安全性模型 | IND-CPA | 选择明文安全(CP-FE) |
安全模型:选择性安全与适应安全
1. 选择性安全(Selective Security)
在选择性安全模型中,敌手必须在查询挑战之前声明目标消息 m₀, m₁,然后获得加密挑战。这相当于"预先承诺"的攻击场景。
安全性定义:敌手无法区分 Encrypt(pk, m₀) 和 Encrypt(pk, m₁),即使拥有任意函数 f 的密钥(只要 f(m₀) = f(m₁))。
2. 适应安全(Adaptive Security)
适应安全模型允许敌手在获得挑战密文后,自适应地查询函数密钥。这是更强的安全保证,但构造更为复杂。
3. 完美安全 vs 计算安全
- 完美安全:即使无限计算能力的敌手也无法获得额外信息
- 计算安全:基于计算复杂性假设的安全(如 LWE、双线性对)
- 基于双线性对的 FE(如 ABE)可实现多项式安全
- 全功能性加密(FE for all circuits)需要更强的假设
从属性基加密到全功能性加密
1. 属性基加密(ABE)—— FE 的第一个实用实例
Sahai 和 Waters 提出的 ABE 是 FE 的第一个重要实例,分为两类:
密钥策略 ABE(KP-ABE):
- 密文绑定属性集合 A
- 密钥绑定访问结构 W
- 解密成功当且仅当 A ∈ W
- 密文绑定属性集合 A
- 密钥绑定访问结构 W
- 解密成功当且仅当 A ∈ W
2. 谓词加密(Predicate Encryption)
Katz 和 Sahai 在 2009 年提出谓词加密,将 ABE 推广为更一般的框架:
- 密钥绑定谓词 P: {0,1}ⁿ → {0,1}
- 解密成功当且仅当 P(m) = 1
3. 全功能性加密(FE for all circuits)
Goyal 等人(2018)和 Boneh 等人(2015)分别独立构造了全功能性加密方案:
- 支持任意多项式大小电路 f: {0,1}ⁿ → {0,1}
- 基于 LWE 假设(格密码)
- 实现"按需解密"的终极隐私保护
国密视角:SM9 与功能性加密
1. SM9 中的函数加密思想
SM9 标识密码算法(GM/T 0044-2016)虽然不直接等同于 FE,但蕴含了 FE 的核心思想:
标识即密钥:用户的标识 ID 直接作为公钥,私钥由密钥生成中心(KGC)根据 ID 派生。这与 KP-ABE 中"密钥绑定属性"的思想一致。
安全参数映射:
- SM9 使用素数阶椭圆曲线群 G₁, G₂
- 配对函数 e: G₁ × G₂ → G_T
- 签名密钥 d_ID = [t₂]P₁,其中 t₂ = s × t₁^(-1) mod N
2. 国密场景下的 FE 应用
数据分类共享:企业可根据部门属性(如"财务"、"人事")生成不同密钥,各部门仅能解密对应属性的文档。
医疗数据保护:患者记录绑定健康属性,医生密钥仅能解密与其诊疗相关的子集数据。
政务数据开放:政府可按"公开"、"内部"、"机密"三级属性控制数据访问。
3. 与 GB/T 39786 的映射
GB/T 39786-2021《信息安全技术 信息系统密码应用基本要求》中的等级保护要求,与 FE 的细粒度访问控制天然契合:
- 第三级要求"访问控制":FE 可提供比传统 RBAC 更细粒度的数据级控制
- 第四级要求"数据完整性":FE 可结合 MAC 实现访问审计
性能特征与工程实践
1. 典型性能数据
基于双线性对的 ABE 方案(配对次数估算):
| 方案类型 | 加密配对次数 | 解密配对次数 | 密钥大小 |
|---|---|---|---|
| KP-ABE (AND 门) | n+1 | 1 | O(n) |
| CP-ABE (树结构) | O(depth) | O(depth) | O(depth) |
| IBE (Boneh-Franklin) | 1 | 1 | O(1) |
2. 实现注意事项
曲线选择:
- SM9 使用配对友好椭圆曲线(GM/T 0044.1-2016 定义),基点 G 的阶 n 是素数
- 注意基点 G 的阶 n 必须是素数
- 配对友好性:需满足 embedding degree k ≥ 6
- 密钥派生必须使用标准 KDF(如 SM9 的 H1/H2 函数)
- 避免重复使用相同的随机数 r
- 密文格式应包含完整性校验
3. 与国密库的兼容性
Python 生态中:
gmssl库不支持 FE/ABE,需使用pairing-based-cryptography或pbc- Tongsuo(openssl 国密分支)提供 SM9 标准 API,但无通用 FE 接口
相关实践链接
- SM9 标识密码算法详解 — 国密 SM9 的签名与加密实现
- 配对密码学基础 — 双线性对原理与安全分析
- GB/T 39786-2021 密码应用基本要求解读 — 国密合规框架
- SM9 标识密码签名算法深度解析 — SM9 IBS 的数学推导
- SM9 密钥交换协议详解 — GM/T 0044.3 的 IKE 实现
参考标准
- GM/T 0044-2016《SM9 标识密码算法》— 国密 SM9 标准,含 4 个子标准
- GB/T 39786-2021《信息安全技术 信息系统密码应用基本要求》
- NIST SP 800-56C Rev. 2《Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography》(参考标准文档)
参考资料
- Sahai, A., & Waters, B. (2005). Fuzzy Identity-Based Encryption. EUROCRYPT 2005.
- Sahai, A., & Waters, B. (2007). How to Hack Zero Knowledge. EUROCRYPT 2007.
- Goyal, V., et al. (2018). Functional Encryption for Poly-size Circuits from LWE. TCC 2018.
- Boneh, D., et al. (2015). Fully Functional Encryption: Private Equality Testing. CRYPTO 2015.
- GM/T 0044-2016《SM9 标识密码算法》国家标准文档