📑 本页目录(点开跳转)
22 · 云密码学:把数据交给不信任的机器
⏱ 24 分钟 | ⭐ "加密后还能用"这件事
🎯 一句话
传统加密有个尴尬前提:要用数据,就得先解密。 云密码学问的是:能不能让服务器在【看不到明文】的前提下,替我搜索、计算、甚至跑模型?
🕳️ 一、问题长什么样
你把数据存到云上:
├─ 不加密 → 云服务商、被入侵的攻击者、内部员工都能看 💀
└─ 加密 → 安全了,但云【什么也做不了】
搜索?统计?跑模型?统统得下载回本地解密 😖
⭐ 云密码学 = 在这两者之间找中间地带
🔍 二、可搜索加密(SSE)
目标:服务器能判断"哪些密文包含关键词 W",但不知道 W 是什么。
① 客户端为每个关键词建一个【加密索引】
② 搜索时发一个【陷门 trapdoor】(关键词的确定性变换)
③ 服务器用陷门在索引里匹配,返回命中的密文 ID
—— 全程不知道关键词内容 ✅
⚠️ 但泄露是真实存在的
| 泄露类型 | 内容 |
|---|---|
| 访问模式 | 哪些文档被返回了 |
| 搜索模式 | 同一个词是否被搜过两次 |
| 数据量 | 结果有多少条 |
💥 泄露滥用攻击(leakage-abuse attack): 攻击者只要有一点背景知识(比如知道数据集的词频分布), 仅凭访问模式就能还原出大部分查询关键词 —— 2015 年 Cash 等人的工作显示,恢复率可以超过 90%。
🔑 教训:"服务器看不到明文"不等于"服务器学不到信息"。 这一章所有方案都要用这个标准去审视。
🧮 三、同态加密(HE):直接在密文上算
Enc(a) ⊕ Enc(b) = Enc(a + b) ⭐ 不解密就完成了加法
| 类型 | 能做什么 | 代表 |
|---|---|---|
| 部分同态 PHE | 只支持一种运算 | RSA(乘法)、Paillier(加法) |
| 有限层数 SHE | 有限次加乘 | BGV/BFV 浅电路 |
| 全同态 FHE ⭐ | 任意次加法和乘法 | Gentry 2009 起 |
💡 为什么 RSA 天然有乘法同态
$$E(m_1)\cdot E(m_2) = m_1^e \cdot m_2^e = (m_1m_2)^e = E(m_1m_2)$$
🔗 第 14 章说这个同态性是教科书 RSA 的漏洞(可被利用伪造)。 这里它变成了特性。 ⭐ 同一个数学性质,在一个场景是缺陷,在另一个场景是功能 —— 密码学里这种事很多。
FHE 的关键困难与突破
困难:每次运算都会让密文里的【噪声】变大
噪声超过阈值 ⟹ 解密出错 💀
⭐ Gentry 2009 的突破 ——【自举 bootstrapping】:
让密文"同态地解密自己",产出一个噪声重置过的新密文
→ 于是可以无限次运算
| 现实 | 数字 |
|---|---|
| 密文膨胀 | 明文的 1000× 以上 |
| 速度 | 比明文计算慢 10³–10⁶ 倍 ⭐ |
| 适用 | 计算简单、隐私价值极高的场景 |
💡 不要被"全同态"三个字迷惑: 目前它在低次多项式、小规模统计上可用(如加密数据库的求和、简单推理), 通用计算仍然不现实。 但 CKKS(支持近似实数运算)让加密机器学习推理开始有落地案例。
🤝 四、安全多方计算(MPC)
目标:多方各持私有输入,共同算出结果,谁也不泄露自己的输入。
经典例子 —— 百万富翁问题:
两个富翁想知道谁更有钱,但都不愿说出自己的资产额
现代应用:
· 多家医院联合统计,不共享病历
· 多家银行联合风控,不共享客户名单
· ⭐【隐私求交 PSI】:找出两个名单的交集,交集之外互不可见
两条主流技术路线:
| 路线 | 思路 |
|---|---|
| 秘密分享 | 把输入拆成若干份分发,任何单方看不出信息(第 19 章 Shamir) |
| 混淆电路 | 一方把函数编译成"加密的真值表",另一方用不经意传输取值 |
💡 一个 MPC 已经真正落地的例子: 广告转化归因 —— 广告平台和商家想知道"看过广告的人里有多少买了东西", 但双方都不能把用户名单给对方。PSI 正好解决它,现在是主流方案。
🔐 五、其他值得知道的原语
| 原语 | 一句话 |
|---|---|
| 属性基加密 ABE | 密文规定"满足某条件的人才能解密"(如"部门=财务 且 级别≥3") |
| 代理重加密 PRE | 云能把"给 A 的密文"转成"给 B 的密文",全程看不到明文 |
| 不经意 RAM(ORAM) ⭐ | 隐藏访问模式本身 —— 云连"你读了哪个位置"都不知道 |
| 可验证计算 | 云返回结果 + 证明,你能确认它没算错(第 21 章) |
| 保序/保留格式加密 | 密文保持顺序或格式,方便旧系统 —— ⚠️ 泄露很多,慎用 |
⭐ ORAM 值得单独说:它正是第二节那个"访问模式泄露"的正面解法。 代价是每次真实访问要伴随大量伪访问(Path ORAM 约 log n 倍开销)。 这是一个用带宽换隐私的典型交易。
🧭 六、怎么选(务实的建议)
⭐ 先问一句:你的威胁模型里,云服务商到底算什么?
① 云是【可信但可能被入侵】
→ 静态加密 + KMS + 严格访问控制就够了(第 19 章)
→ 别上 FHE,性价比极差
② 云是【诚实但好奇】(会看,但不会主动破坏)
→ SSE / MPC / 同态统计 可以考虑
③ 云是【恶意的】
→ 需要可验证计算 + ORAM,成本非常高
④ 只是【合规要求】数据不出域
→ 联邦学习 / 本地计算往往更实际
🔑 最实用的一条判断: 绝大多数"云上数据安全"需求,用第 19 章的密钥管理 + 访问控制就解决了。 云密码学是为那些连云服务商都不能信的场景准备的 —— 先确认你真的在那个场景里,再考虑付出 10³ 倍的性能代价。
🔗 和站内其他章的关系
| 相关的地方 | 和这一章的关系 |
|---|---|
| 第 14 章 RSA 同态性 | 在那是漏洞,在这是特性 ⭐ |
| 第 19 章 Shamir 秘密分享 | MPC 的一条主线 |
| 第 21 章 ZKP | 可验证计算的实现手段 |
| 第 8 章安全定义 | 泄露也要写进定义里才有意义 |
| 第 3 章完美保密 | 完美保密不泄露任何信息,这里是有控制地泄露一点 |
| 大模型 · 本地部署与开源生态 | ⚠️ 先去那边算一次账:本章所有方案都在回答「数据不出内网还想借云端算力」,而现实里多数场景本地部署比 HE / MPC 便宜好几个数量级 ⭐ |
| 大模型 · 合规与伦理 | 那边深挖清单里的联邦学习、差分隐私、机器遗忘,和本章的 MPC / HE 是同一个问题的不同切法:谁能看到什么 |
| AI 基础设施 · 数据并行与 AllReduce | MPC 的瓶颈几乎从来不是计算而是通信轮数——和分布式训练撞的是同一堵墙,优化思路(减少轮次、批量化)也一样 |
✅ 检查点
- 云密码学要解决的核心矛盾是什么?
- 可搜索加密会泄露哪三类信息?
- 什么是泄露滥用攻击?它给出的教训是什么?
- RSA 为什么天然有乘法同态?这个性质在第 14 章是什么、在这里是什么?
- FHE 的核心困难是什么?Gentry 的突破叫什么、做了什么?
- FHE 目前的性能代价大概是多少?
- MPC 的两条技术路线?举一个真正落地的应用。
- ORAM 解决什么问题?代价是什么?
- 面对"云上数据安全"需求,第一步该问什么?
👀 答案
- 要用数据就得先解密。云密码学想让服务器在看不到明文的前提下仍能搜索/计算。
- 访问模式(哪些文档被返回)、搜索模式(同一个词是否搜过两次)、数据量(结果条数)。
- 攻击者利用背景知识(如词频分布)仅凭访问模式就能还原大部分查询关键词(2015 年 Cash 等人的结果恢复率超 90%)。教训:"服务器看不到明文"不等于"服务器学不到信息"。
- 因为 E(m₁)·E(m₂) = m₁^e·m₂^e = (m₁m₂)^e = E(m₁m₂)。在第 14 章它是教科书 RSA 的漏洞(可被利用伪造),在这里是核心特性——同一个数学性质在不同场景可以是缺陷也可以是功能。
- 每次运算让密文噪声变大,超过阈值就解密出错。突破叫自举(bootstrapping)——让密文同态地解密自己,产出噪声重置过的新密文,于是可以无限次运算。
- 密文膨胀 1000× 以上,速度慢 10³–10⁶ 倍。
- 秘密分享(Shamir)和混淆电路 + 不经意传输。落地应用:广告转化归因用隐私求交(PSI),双方都不交出用户名单。
- 解决访问模式泄露——云连"你读了哪个位置"都不知道。代价:每次真实访问要伴随大量伪访问(Path ORAM 约 log n 倍开销),用带宽换隐私。
- 先问"云服务商在你的威胁模型里到底算什么"。绝大多数需求用密钥管理 + 访问控制就够了;云密码学是为"连云服务商都不能信"的场景准备的,要先确认你真在那个场景,再考虑付 10³ 倍性能代价。
🛑 可以停在这里
⚡ 走神救援
核心矛盾:要用数据就得先解密;云密码学让服务器看不到明文也能干活。可搜索加密 SSE:发陷门让服务器在加密索引上匹配;⚠️但泄露访问模式/搜索模式/数据量,💥⭐泄露滥用攻击只靠背景知识(词频分布)仅凭访问模式就能还原 90% 以上的查询词 —— 🔑"看不到明文"≠"学不到信息",这是审视本章所有方案的标准。同态加密:Enc(a)⊕Enc(b)=Enc(a+b)。⭐RSA 天然有乘法同态((m₁m₂)^e),在第 14 章它是漏洞,在这里是特性——同一个数学性质在不同场景可以是缺陷也可以是功能。FHE 的困难是噪声随运算增长,⭐Gentry 2009 的自举 bootstrapping = 让密文同态地解密自己,噪声重置 → 可无限运算。⚠️现实代价:密文膨胀 1000×、速度慢 10³–10⁶ 倍,目前只在低次多项式/小规模统计可用(CKKS 让加密推理开始落地),通用计算仍不现实。MPC:各方不泄露输入共同算结果,两条路线是秘密分享(第 19 章 Shamir)和混淆电路+不经意传输;⭐真正落地的例子是广告转化归因用 PSI(双方都不交出名单)。其他原语:ABE(按属性解密)、PRE(代理重加密)、⭐ORAM 隐藏访问模式本身(正是 SSE 泄露的正面解法,代价 log n 倍伪访问,用带宽换隐私)、可验证计算(第 21 章)、⚠️保序加密泄露多慎用。🔑⭐最实用的判断:先问云在你的威胁模型里算什么 —— 绝大多数需求用密钥管理+访问控制(第 19 章)就够了,云密码学是给"连云服务商都不能信"的场景准备的,先确认你真在那儿再付 10³ 倍代价。
下一节 👉 23-后量子密码.md ⭐