功能性加密(Functional Encryption):从属性基加密到通用计算

密码学概念 · 2026-09-07

概述

功能性加密(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)
关键安全要求:只要函数密钥 sk_f 对应函数 f,解密器只能获得 f(m) 的值,无法获得关于 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 的可行性依赖于特定的复杂性假设,目前已知:
  • 基于双线性对的 FE(如 ABE)可实现多项式安全
  • 全功能性加密(FE for all circuits)需要更强的假设

从属性基加密到全功能性加密

1. 属性基加密(ABE)—— FE 的第一个实用实例

Sahai 和 Waters 提出的 ABE 是 FE 的第一个重要实例,分为两类:

密钥策略 ABE(KP-ABE):

  • 密文绑定属性集合 A
  • 密钥绑定访问结构 W
  • 解密成功当且仅当 A ∈ W
属性策略 ABE(CP-ABE):
  • 密文绑定属性集合 A
  • 密钥绑定访问结构 W
  • 解密成功当且仅当 A ∈ W
安全假设:双线性对的 q-SDH、DBDH 等假设。

2. 谓词加密(Predicate Encryption)

Katz 和 Sahai 在 2009 年提出谓词加密,将 ABE 推广为更一般的框架:

  • 密钥绑定谓词 P: {0,1}ⁿ → {0,1}
  • 解密成功当且仅当 P(m) = 1
这统一了 ABE、IBE、FE 等多个密码学原语。

3. 全功能性加密(FE for all circuits)

Goyal 等人(2018)和 Boneh 等人(2015)分别独立构造了全功能性加密方案:

  • 支持任意多项式大小电路 f: {0,1}ⁿ → {0,1}
  • 基于 LWE 假设(格密码)
  • 实现"按需解密"的终极隐私保护
关键挑战:全 FE 的密文和密钥大小随电路大小多项式增长,存在效率瓶颈。

国密视角: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+11O(n)
CP-ABE (树结构)O(depth)O(depth)O(depth)
IBE (Boneh-Franklin)11O(1)
实测环境:Pairing-based library (PBC) 0.5.14, Intel Xeon E5-2680 v4 @ 2.4GHz。

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 接口

相关实践链接

参考标准

  • 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 标识密码算法》国家标准文档