4.3 从身份到属性:IBE 与 ABE 骨架 身份基加密(IBE)把公钥从随机串换成任意字符串——邮箱地址就是公钥;属性基加密(ABE)再把身份换成属性集合,密文绑定访问策略。格世界的通用钥匙是陷门采样:拿到某格的好基(陷门),就能按离散高斯分布采出短原像。本节先在老格上手工演示一次高斯采样,再搭出 IBE 与 ABE 的骨架。 承接 4.1、4.2 两节:加密与签名都围着"短向量"转,但两节里短向量都出自你自己之手。本节的问题是:能不能把"造短向量的能力"集中交给一个密钥机构,让它按需发短向量、别人却造不出来?答案就是陷门,而它是通往 4.3 之后的函数性原语、也是第 5 章同态方案的必经之路。
**身份基加密(IBE)**把公钥从随机串换成任意字符串——邮箱地址就是公钥;属性基加密(ABE)再把身份换成属性集合,密文绑定访问策略。格世界的通用钥匙是陷门采样:拿到某格的好基(陷门),就能按离散高斯分布采出短原像。本节先在老格上手工演示一次高斯采样,再搭出 IBE 与 ABE 的骨架。
承接 4.1、4.2 两节:加密与签名都围着"短向量"转,但两节里短向量都出自你自己之手。本节的问题是:能不能把"造短向量的能力"集中交给一个密钥机构,让它按需发短向量、别人却造不出来?答案就是陷门,而它是通往 4.3 之后的函数性原语、也是第 5 章同态方案的必经之路。
回到第一章那个格:b_1 = (4,1)、b_2 = (2,3)。陷门采样要做的事:给定目标 u(这里取 u = (1,1),不落在格上),找一个格点 v,使 v - u 很短,且选择过程带受控随机性。玩具版流程:先列出格点邻域内的全部候选(枚举 2b_2 - b_1 = (0,5)、b_1 - b_2 = (2,-2) 等),给每个候选按离散高斯权重打分,权重 \propto \exp(-\|v - u\|^2 / 2\sigma^2),取 \sigma = 3 逐个算:
| 候选 v | \|v - u\|^2 | 权重 \exp(-x/18) | 采样概率 |
|---|---|---|---|
| (2,-2) | 10 | 0.574 | 16.0% |
| (0,5) | 17 | 0.389 | 10.8% |
| (4,1) | 9 | 0.607 | 16.9% |
| (2,3) | 5 | 0.757 | 21.1% |
| 其余 12 个对称候选 | — | 合计 1.273 | 35.2% |
离目标越近的格点权重越大,但绝非必选——这份随机性是安全性的核心:机构发出去的每个短向量都带随机抖动,两次采样结果几乎必然不同,攻击者拿到多份密钥也对不出"标准答案"。没有陷门(好基)的攻击者要复现这个采样,等价于解 CVP 的随机化版本,困难度由老账本管着。真实方案(GPV 框架)把这页草稿纸推广到 n 维:机构持有随机矩阵 A 与其陷门(一组长为 \tilde{O}(n) 的好基),对任意目标 u 高效采出 e 使 A e \equiv u \pmod q 且 \|e\| 以极高概率不超过 \sigma\sqrt{2n\ln q} 量级——Falcon 签名的核心正是它(8.1 节展开)。
传统公钥基础设施里,公钥与证书绑定的成本高得吓人;IBE 的想法激进:公钥就用字符串本身——"zhang@corp.example"这种。系统里只有一个主密钥机构(PKG),流程四步:
1 建立:PKG 生成随机矩阵 A(n x m)与陷门 T(A 的好基),发布 A 与 u 2 派生公钥:对身份串 id,计算 A_id = A + H(id)·G # H 哈希到环元素,G 是固定矩阵 3 发私钥:用户向 PKG 证明身份,PKG 用陷门 T 对目标 u 在格 A_id 上做高斯采样,得短向量 e_id,私密交付 4 加解密:任何人用 A_id 加密;用户用 e_id 解密
安全性咬合在两处。其一,陷门不外泄:PKG 以外的任何人只知道随机 A,对 A + H(id) \cdot G 这种"带陷门壳"的矩阵做短原像采样,归约到最坏情况格难题(第 3 章保单照常生效)。其二,身份间不可串用:id1 的私钥对 id2 的密文毫无用处,因为两个矩阵相差一个哈希可控的偏移,短向量解不通用。这套构造是格密码的招牌成果之一——在格之前,IBE 方案要么依赖双线性对(量子脆弱),要么构造复杂到难以实现。
ABE 再进一步:解密能力由"属性是否满足策略"决定。两个变体一句话说清——密钥策略 ABE 把属性集写进用户私钥、把访问策略嵌在密文上;密文策略 ABE 反过来,密文按策略加密,私钥携带属性。格构造的通用配方:把 4.1 节的 LWE 加密中的秘密从"单个 s"扩展为"按访问结构组合的份额向量",属性对应的公开矩阵 A_{\text{attr}} 参与份额分享,解密需要凑齐满足策略的足够份额做线性组合,组合系数是公开的(线性秘密共享方案,LSSS)。骨架对照:
| IBE | 密钥策略 ABE | 密文策略 ABE | |
|---|---|---|---|
| 公钥形态 | 身份串哈希 | 属性描述 | 策略描述 |
| 私钥形态 | 身份的短原像 | 属性集的份额密钥 | 满足策略的能力 |
| 密文绑定 | 目标身份 | 访问策略 | 属性集合 |
| 典型应用 | 免证书邮件 | 企业按角色分发 | 云盘"部门与级别"门控 |
格 ABE 的现实边界也要交代:支撑的电路深度受噪声预算限制——每层组合运算都会累积噪声,超过预算解密就翻车(与第 5 章同态加密的噪声管理是同一道题),因此实战方案都声明"有界深度"。这个约束在基于双线性对的旧方案里不存在,是格路线为抗量子支付的结构性代价。
4.3 前文玩具里我们随手取了 \sigma = 3,实战里这个宽度参数有严格下界。采样质量由"统计距离"度量:宽度不够时,采样输出会向格的某些方向偏斜,泄露陷门信息。经验法则给 \sigma 划了两条线:下界约 q^{1/2} 量级保证"盲目采样"(无陷门)难以模拟;具体方案的参数表会给出与 n、q 联动的精确值。Falcon 家族为把签名压小,把 \sigma 压到接近理论下界,代价是必须用高精度浮点算连续高斯分布再离散化——这就是 8.1 节说"实现难"的算术根源:宽采样好写又安全但费字节,窄采样省字节但每一比特的舍入都可能变成侧信道。
一个绕不开的治理问题:PKG 掌握主陷门,理论上可以为任何身份造私钥、解任何密文(密钥托管问题)。工程上的缓解有三招:门限化——把主陷门拆给多个机构联合持有,凑够门限数才能派生;仲裁日志——派生行为留审计痕迹;或者干脆选无托管形态的方案(如基于证书的变体)。技术选型时这条要写进威胁模型,否则上线的 IBE 会在合规审计时被打回来。
要点速记:陷门就是格的好基,高斯采样把"造短向量"变成可控随机的服务;IBE 让字符串当公钥,PKA 派生短原像作私钥;ABE 用 LSSS 把秘密拆成属性份额,解密即凑份额;格 ABE 的深度上界来自噪声累积,与 FHE 同源同病。
本章三节把格原语的主力军清点完毕。下一章让密文自己干活:不解密、直接算——全同态加密的噪声账本更烧脑,也更迷人。