🏠 总目录📚 本教程 22 · 云密码学 ← →
📑 本页目录(点开跳转)

22 · 云密码学:把数据交给不信任的机器

⏱ 24 分钟 | ⭐ "加密后还能用"这件事


🎯 一句话

传统加密有个尴尬前提:要用数据,就得先解密。 云密码学问的是:能不能让服务器在【看不到明文】的前提下,替我搜索、计算、甚至跑模型?


🕳️ 一、问题长什么样

关键信息


🔍 二、可搜索加密(SSE)

目标:服务器能判断"哪些密文包含关键词 W",但不知道 W 是什么。

操作步骤

  1. 客户端为每个关键词建一个【加密索引】
  2. 搜索时发一个【陷门 trapdoor】(关键词的确定性变换)
  3. 服务器用陷门在索引里匹配,返回命中的密文 ID
  4. —— 全程不知道关键词内容 ✅

⚠️ 但泄露是真实存在的

泄露类型 内容
访问模式 哪些文档被返回了
搜索模式 同一个词是否被搜过两次
数据量 结果有多少条

💥 泄露滥用攻击(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 的瓶颈几乎从来不是计算而是通信轮数——和分布式训练撞的是同一堵墙,优化思路(减少轮次、批量化)也一样

✅ 检查点

  1. 云密码学要解决的核心矛盾是什么?
  2. 可搜索加密会泄露哪三类信息?
  3. 什么是泄露滥用攻击?它给出的教训是什么?
  4. RSA 为什么天然有乘法同态?这个性质在第 14 章是什么、在这里是什么?
  5. FHE 的核心困难是什么?Gentry 的突破叫什么、做了什么?
  6. FHE 目前的性能代价大概是多少?
  7. MPC 的两条技术路线?举一个真正落地的应用。
  8. ORAM 解决什么问题?代价是什么?
  9. 面对"云上数据安全"需求,第一步该问什么?
👀 答案
  1. 要用数据就得先解密。云密码学想让服务器在看不到明文的前提下仍能搜索/计算。
  2. 访问模式(哪些文档被返回)、搜索模式(同一个词是否搜过两次)、数据量(结果条数)。
  3. 攻击者利用背景知识(如词频分布)仅凭访问模式就能还原大部分查询关键词(2015 年 Cash 等人的结果恢复率超 90%)。教训:"服务器看不到明文"不等于"服务器学不到信息"。
  4. 因为 E(m₁)·E(m₂) = m₁^e·m₂^e = (m₁m₂)^e = E(m₁m₂)。在第 14 章它是教科书 RSA 的漏洞(可被利用伪造),在这里是核心特性——同一个数学性质在不同场景可以是缺陷也可以是功能。
  5. 每次运算让密文噪声变大,超过阈值就解密出错。突破叫自举(bootstrapping)——让密文同态地解密自己,产出噪声重置过的新密文,于是可以无限次运算。
  6. 密文膨胀 1000× 以上,速度慢 10³–10⁶ 倍。
  7. 秘密分享(Shamir)和混淆电路 + 不经意传输。落地应用:广告转化归因用隐私求交(PSI),双方都不交出用户名单。
  8. 解决访问模式泄露——云连"你读了哪个位置"都不知道。代价:每次真实访问要伴随大量伪访问(Path ORAM 约 log n 倍开销),用带宽换隐私。
  9. 先问"云服务商在你的威胁模型里到底算什么"。绝大多数需求用密钥管理 + 访问控制就够了;云密码学是为"连云服务商都不能信"的场景准备的,要先确认你真在那个场景,再考虑付 10³ 倍性能代价。

🛑 可以停在这里

⚡ 走神救援

先记住这几件事

下一节 👉 23-后量子密码.md ⭐

打卡记录保存在你的浏览器里,首页能看到总进度