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

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

✅ 检查点

  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³ 倍性能代价。

🛑 可以停在这里

走神救援

核心矛盾:要用数据就得先解密;云密码学让服务器看不到明文也能干活可搜索加密 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

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