土法炼钢兴趣小组的算法知识备份

【密码学百科】密码学与隐私:差分隐私、匿名凭证与隐私增强技术

文章导航

分类入口
cryptography
标签入口
#privacy#differential-privacy#anonymous-credentials#group-signature#ring-signature#blind-signature#unlinkability#k-anonymity#PET

目录

隐私是信息时代最核心也最脆弱的权利之一。从日常的位置数据采集到大规模的基因组数据库共享,个人信息在被收集、传输、存储和分析的每一个环节都面临着泄露的风险。密码学作为信息安全的数学基石,不仅为保密通信提供了坚实的保障,更在过去四十年间发展出一整套精妙的隐私增强技术(privacy-enhancing technologies, PET),使得在不泄露个人敏感信息的前提下完成身份认证、数据统计分析乃至金融交易成为可能。

本文是密码学百科系列的第 49 篇。在前一篇对区块链密码学的讨论基础上,本文将聚焦于密码学与隐私的深层交汇:从隐私的形式化定义出发,系统讲解差分隐私的数学机制,深入盲签名、群签名、环签名等隐私增强签名原语,进而介绍匿名凭证与可验证凭证的现代框架,并以 Monero、Zcash 和电子投票为案例讨论隐私保护在实际系统中的落地实践。

隐私增强技术:差分隐私、匿名凭证与混合网络

一、隐私的密码学定义

先看一张图,把这一节的关键关系串起来。

graph TD
    A[内容机密] --> B[元数据保护]
    B --> C[匿名性]
    C --> D[不可关联]
    D --> E[差分隐私]

在展开具体技术之前,有必要先回答一个根本性的问题:隐私究竟意味着什么?在日常语境中,隐私是一个模糊而多面的概念;但在密码学中,它需要被精确地形式化,以便我们能够严格地证明某个协议或系统确实提供了所声称的隐私保护。

密码学与安全领域对隐私的形式化研究产生了若干经典的定义层次。最基础的是匿名性(anonymity),它要求敌手无法确定某个动作的执行者是谁。例如,在匿名通信网络中,匿名性意味着攻击者无法将一条消息与其发送者关联起来。匿名性又可以根据攻击者能力的不同进一步细分:发送者匿名性(sender anonymity)保护消息的来源;接收者匿名性(receiver anonymity)保护消息的目的地;关系匿名性(relationship anonymity)则隐藏发送者与接收者之间的通信关系。

比匿名性更强的概念是不可关联性(unlinkability)。不可关联性要求敌手无法判断两个可观察的事件(如两次交易、两次登录或两条消息)是否由同一实体执行。显然,如果一个系统满足不可关联性,则它隐含地满足匿名性——如果攻击者无法将两个事件关联到同一人,自然也无法确定某个特定事件属于谁。在电子支付场景中,不可关联性意味着即使银行知道某人取出了一枚电子硬币,也知道某人花费了一枚电子硬币,但银行无法确定这两个事件涉及的是否是同一枚硬币,更无法将支付行为追踪回取款者。

更进一步的概念是不可观察性(unobservability)。不可观察性要求敌手不仅无法确定动作的执行者,甚至无法确定某个动作是否发生过。例如,在隐蔽通信(covert communication)中,不可观察性意味着攻击者无法区分正常的网络流量与包含隐蔽消息的网络流量。这比匿名性强得多——匿名性假定攻击者知道某个动作发生了,只是不知道是谁做的;而不可观察性连动作的存在本身都加以隐藏。

在统计数据发布的语境下,隐私的形式化又有不同的路径。k-匿名性(k-anonymity)要求数据集中的每条记录在准标识符(quasi-identifier)上至少与其他 k-1 条记录不可区分。然而,k-匿名性存在已知的缺陷:同质攻击(homogeneity attack)可在同一等价类中所有记录具有相同敏感值时推断个体信息。后续提出的 l-多样性(l-diversity)和 t-接近性(t-closeness)在实际应用中仍然容易受到精巧攻击的破解。

正是由于上述传统匿名化方法的脆弱性,差分隐私(differential privacy)在 2006 年被 Cynthia Dwork 等人提出后迅速成为隐私保护的金标准。与 k-匿名性等语法层面的定义不同,差分隐私提供了一个语义层面的、可组合的数学保证,它不依赖于攻击者拥有何种背景知识。接下来我们将详细介绍差分隐私的数学框架。

二、差分隐私

差分隐私的核心直觉可以用一句话概括:无论某个个体是否参与数据集,查询结果的分布都不应发生显著变化。如果一个数据分析机制满足这一性质,那么任何个体都不会因为贡献自己的数据而承受额外的隐私风险——参与和不参与的结果几乎不可区分。

形式化定义

设 D 和 D’ 是两个相邻数据集(neighboring datasets),即它们最多在一条记录上不同。一个随机化机制 M 满足 (ε, δ)-差分隐私((ε, δ)-differential privacy),如果对于所有可能的输出集合 S,都有:

Pr[M(D) ∈ S] ≤ e^ε · Pr[M(D') ∈ S] + δ

当 δ = 0 时退化为纯 ε-差分隐私(pure ε-DP)。参数的语义如下:

参数 ε 的实际含义

ε 的取值直接决定了隐私保护的强度。为了给出具体直觉,考虑一个薪资查询场景:一个包含 n = 10000 名员工的数据库,查询”平均薪资是多少”。单条记录对均值的敏感度为 Δf = (salary_max - salary_min) / n。假设薪资范围为 0 到 1000000 元,则 Δf = 100 元。拉普拉斯机制在真实均值上添加 Lap(Δf/ε) 噪声:

噪声机制

实现差分隐私的最基本技术是添加校准噪声(calibrated noise)。对于一个数值查询 f: D → R,拉普拉斯机制(Laplace mechanism)输出 f(D) + Lap(Δf/ε),其中全局敏感度 Δf = max_{D,D’} |f(D) - f(D’)|。拉普拉斯机制满足纯 ε-DP。

对于向量值查询 f: D → R^d,高斯机制(Gaussian mechanism)更为常用。其输出 f(D) + N(0, σ²I_d),其中 σ 需满足:

σ ≥ Δ₂f · √(2 ln(1.25/δ)) / ε

这里 Δ₂f = max_{D,D’} ‖f(D) - f(D’)‖₂ 是 L2 敏感度。高斯机制满足 (ε, δ)-DP。在高维场景下,高斯噪声因其各向同性的集中性质,通常比拉普拉斯机制具有更优的效用-隐私权衡。例如,对 d 维查询,拉普拉斯机制的 L2 误差为 O(d/ε),而高斯机制为 O(√d/ε),在 d 较大时优势显著。

组合定理

差分隐私的核心理论优势在于可组合性(composability)。

基本组合定理: 若对同一数据集依次执行 k 个机制 M₁, …, M_k,分别满足 ε₁, …, ε_k-DP,则组合机制满足 (Σεᵢ)-DP。这给出了线性的隐私损失累积上界。

高级组合定理(Dwork, Rothblum, Vadhan 2010): 对任意 δ’ > 0,k 次 ε-DP 查询的组合满足 (ε’, kδ + δ’)-DP,其中:

ε' = ε · √(2k · ln(1/δ')) + k · ε · (e^ε - 1)

当 ε < 1 时简化为 ε’ ≈ ε · √(2k · ln(1/δ’))。这意味着 k 次查询的总隐私损失以 O(ε√k) 增长而非 O(kε)——对于需要执行大量查询的数据分析流水线,这提供了数量级上更紧的隐私预算管控。

Renyi 差分隐私(RDP) 进一步利用 Renyi 散度给出了更紧的组合界,其核心思想是跟踪隐私损失随机变量的矩母函数。Google 的 TensorFlow Privacy 库在训练 DP-SGD 时即采用 RDP 记账法,在数千轮训练迭代下仍能维持可用的总隐私预算。

本地差分隐私

差分隐私还有一个重要的模型区分:全局差分隐私(global DP)与本地差分隐私(local DP, LDP)。全局模型中存在可信的数据收集者;本地模型中每个用户在提交前就对自身数据进行随机化。LDP 的隐私保证更强,但统计效用显著降低——对于 n 个用户的频率估计,全局模型误差为 O(1/ε),本地模型为 O(1/(ε√n))。Apple 的 iOS 键盘统计和 Google Chrome 的 RAPPOR 协议都是 LDP 的实际部署实例。

以下 Python 代码展示了拉普拉斯机制与高斯机制的对比:

import numpy as np

def laplace_mechanism(true_value, sensitivity, epsilon):
    """拉普拉斯机制:满足纯 ε-DP"""
    scale = sensitivity / epsilon
    return true_value + np.random.laplace(0.0, scale)

def gaussian_mechanism(true_value, l2_sensitivity, epsilon, delta):
    """高斯机制:满足 (ε, δ)-DP"""
    sigma = l2_sensitivity * np.sqrt(2 * np.log(1.25 / delta)) / epsilon
    return true_value + np.random.normal(0.0, sigma)

# 薪资均值查询场景
np.random.seed(42)
n = 10000
salaries = np.random.normal(50000, 15000, size=n).clip(0, 1000000)
true_mean = salaries.mean()
sensitivity = 1000000.0 / n  # Δf = 100

print(f"真实均值 = {true_mean:.0f}\n")
for eps in [0.1, 1.0, 10.0]:
    lap_results = [laplace_mechanism(true_mean, sensitivity, eps)
                   for _ in range(1000)]
    gau_results = [gaussian_mechanism(true_mean, sensitivity, eps, 1e-5)
                   for _ in range(1000)]
    print(f"ε = {eps:>5.1f} | Laplace 标准差 = {np.std(lap_results):>8.1f} 元"
          f" | Gauss 标准差 = {np.std(gau_results):>8.1f} 元"
          f" | e^ε = {np.exp(eps):>10.1f}")

三、盲签名

盲签名(blind signature)由 David Chaum 在 1982 年提出,是隐私增强密码学中最早也最优雅的原语之一。其核心思想是:请求者可以获得签名者对某条消息的合法签名,但签名者在整个过程中完全不知道自己签名的消息内容。这个看似矛盾的要求,恰如让一个公证人在一个密封的碳纸信封上签名——公证人的签名透过碳纸印在了里面的文件上,但公证人自始至终没有看到文件的内容。

盲签名的形式化定义包含两个核心安全性质。盲性(blindness)要求签名者无法将签名过程中看到的信息与最终的签名-消息对关联起来;即使签名者在事后看到了签名,也无法判断这个签名是在哪次交互中产生的。不可伪造性(unforgeability)则要求请求者不能通过一次盲签名交互产生两个或更多的有效签名——每次交互只能得到恰好一个签名。

Chaum 最早提出的基于 RSA 的盲签名方案极为简洁。设签名者的公钥为 (n, e),私钥为 d。请求者想要获得对消息 m 的签名。协议如下:(1) 请求者随机选取盲化因子 r ∈ Z_n^*,计算盲化消息 m’ = m · r^e mod n,并将 m’ 发送给签名者;(2) 签名者使用私钥计算 s’ = (m’)^d mod n,并将 s’ 返回;(3) 请求者计算 s = s’ · r^{-1} mod n = (m · re)d · r^{-1} = m^d · r · r^{-1} = m^d mod n。最终 s 就是签名者对消息 m 的合法 RSA 签名,但签名者在整个过程中只看到了被 r^e 盲化的消息 m’,完全无法还原出 m。

盲签名最经典的应用是电子现金(e-cash)系统。Chaum 在 1983 年提出的 DigiCash 方案中,银行作为签名者,用户作为请求者。用户生成一个代表电子硬币的序列号,通过盲签名协议获得银行对该序列号的签名(即电子硬币),然后将这枚硬币用于支付。当商家收到硬币后向银行验证时,银行可以确认签名的有效性,但由于盲性,无法将这枚硬币与当初的取款交易关联起来。为了防止双重花费(double spending),系统记录已使用的序列号;一旦同一个序列号被花费两次,系统可以检测到并追踪欺诈者的身份。

现代盲签名方案已经远远超越了 Chaum 的原始构造。基于椭圆曲线的盲签名(如盲 Schnorr 签名)具有更短的签名长度和更高的计算效率。部分盲签名(partially blind signature)允许签名中包含一部分公开信息(如日期或面额),这在电子现金的面额管理中非常有用。此外,基于格的盲签名方案为后量子时代的隐私保护提供了新的选择。

四、群签名

群签名(group signature)由 Chaum 和 van Heyst 在 1991 年提出,解决的是群体匿名性问题:一个群体中的任何成员都可以代表整个群体进行签名,验证者可以确认签名确实来自该群体的某个合法成员,但无法确定具体是哪个成员。同时,在出现争议或需要追责时,一个特殊的群管理者(group manager)能够打开签名,揭示签名者的真实身份。

BSS04 模型与安全性质

群签名的安全性模型在 Boneh、Boyen 和 Shacham 的 2004 年工作(BSS04)以及 Bellare、Shi 和 Zhang 的 2005 年工作(BSZ05)中得到了严格的形式化。BSS04 模型在基于配对的构造下定义了三个核心安全性质:

四阶段操作

BSS04 模型将群签名的生命周期分解为四个算法:

撤销机制

群签名的成员撤销是一个核心工程难题。主要方案包括:

基于签名更新的撤销: 撤销成员时更新群公钥和所有未撤销成员的证书。安全性最强,但 O(n) 的更新开销在大群体中不可接受。

基于累加器的撤销(Camenisch-Lysyanskaya): 群公钥中包含一个密码学累加器(cryptographic accumulator),存储所有有效成员的集合摘要。签名时,成员需要附上自己仍在累加器中的成员资格证明(witness)。撤销一个成员时只需更新累加器——其余成员可以高效地更新自己的 witness,而被撤销成员的旧 witness 失效。

可验证局部撤销(VLR): 撤销一个成员时,只需将其撤销令牌(revocation token)添加到公开的撤销列表。验证者在验证签名时检查该列表即可判断签名者是否已被撤销,无需更新任何成员的密钥。VLR 的优势是对成员完全透明,但验证时间与撤销列表长度成线性关系。

群签名与环签名的对比

群签名与环签名(将在下一节介绍)在表面上都提供”群体匿名性”,但其信任模型有根本差异:

维度 群签名 环签名
设置 需要群管理者初始化 无设置,签名者自发选择环
可追踪性 群管理者可打开签名 无人可追踪(无条件匿名)
成员管理 需要注册、可撤销 无注册,使用任意公钥
责任机制 有——追踪证明可公开验证 无——设计上排除追责
适用场景 企业审计、合规认证 举报、隐私币

这一对比揭示了隐私系统设计中最根本的张力:群签名说”你可以匿名,但组织保留追踪你的权力”;环签名说”你的匿名是绝对的,没有任何人可以打破”。选择哪一个本质上是价值判断而非技术判断。

五、环签名

环签名(ring signature)由 Rivest、Shamir 和 Tauman 在 2001 年提出,其设计哲学与群签名有着微妙但关键的区别。与群签名不同,环签名不需要群管理者、不需要设置阶段、不需要成员注册——签名者可以自发地(spontaneously)选择任意一组公钥持有者形成一个”环”(ring),然后代表这个环进行签名。验证者可以确认签名者是环中某个公钥的持有者,但无法确定是哪一个。由于不存在群管理者,没有任何人可以打开环签名揭示签名者的身份——匿名性是无条件的和不可撤销的。

环签名的这种”自发匿名性”(spontaneous anonymity)赋予了它独特的应用价值。在举报人(whistleblower)场景中,政府官员可以用一个由所有同级别官员公钥组成的环来签署举报信息,证明举报确实来自内部人员,但任何人(包括法院)都无法确定具体是谁。

环签名的一个重要扩展是可关联环签名(linkable ring signature)。在标准环签名中,同一签名者的多次签名之间完全不可关联。可关联环签名在保持匿名性的同时,引入了一个关联标签(linking tag):如果同一签名者使用同一私钥签名两次,任何人都可以检测到这两个签名来自同一个人(但仍然不知道是谁)。这一性质对于防止双重花费至关重要——Monero 的 key image 正是可关联标签的实际部署。

从技术实现上看,环签名的构造通常基于离散对数或椭圆曲线。最初的 RST 方案使用了”陷门置换的环形组合”结构,签名者将所有环成员的公钥编织成一个循环计算链,只有持有某个私钥的签名者才能”闭合”这个环。

六、匿名凭证

匿名凭证(anonymous credential)是隐私增强技术中最具雄心的构想之一。它的目标是将现实世界中的身份凭证(如驾照、学历证明、年龄证明)搬到数字世界中,同时赋予用户前所未有的隐私控制能力:用户可以选择性地向验证者证明自己拥有某些属性(如”年满 18 岁”或”持有有效驾照”),而不泄露凭证中的任何其他信息,甚至不泄露自己的身份。

匿名凭证的理论基础主要来自 Camenisch 和 Lysyanskaya 在 2001 至 2004 年间提出的 CL 签名方案(Camenisch-Lysyanskaya signatures)。CL 凭证系统的工作流程如下:发行者(issuer)使用特殊的签名方案对用户的属性集合进行签名,生成凭证;用户在出示凭证时,不直接展示签名本身,而是使用零知识证明证明自己拥有一个关于这些属性的合法签名。这个零知识证明可以选择性地揭示部分属性而隐藏其余属性。

CL 凭证系统的核心安全性质包括:不可伪造性(unforgeability)保证用户无法伪造凭证或声称自己拥有未被发行者认证的属性;多次出示不可关联性(multi-show unlinkability)是最关键的隐私性质——用户多次向同一个或不同的验证者出示同一张凭证时,验证者无法判断这些出示是否来自同一个用户。这与传统的数字证书形成了鲜明对比:如果你每次都出示同一张 X.509 证书,验证者可以通过证书中的唯一标识符追踪你的所有活动。

基于属性的凭证(attribute-based credential, ABC)是匿名凭证的一种通用扩展。在 ABC 框架中,凭证包含一组属性-值对,用户可以对属性进行灵活的断言——证明”我的年龄大于 18”而不揭示确切年龄,或证明”我的居住地在欧盟境内”而不揭示具体国家。这些断言通过区间证明(range proof)、集合成员证明(set membership proof)等高效的零知识证明实现。

IBM 的 Identity Mixer(Idemix)和微软的 U-Prove 是匿名凭证领域最具影响力的两个实际系统。Idemix 基于 CL 签名,支持完全的多次出示不可关联性;U-Prove 签名更短、验证更快,但只支持一次出示不可关联性。BBS+ 签名(基于配对密码学的多消息签名方案)是目前 W3C 可验证凭证标准中最受关注的选择性披露方案。

在介绍了盲签名、群签名、环签名和匿名凭证这四种核心隐私原语之后,有必要从”匿名性、可追责、可撤销”三个维度对它们进行系统对比:

原语 匿名性 可追责(可追踪?) 可撤销性 信任假设 典型应用
群签名 群内匿名 是(群管理者可打开) 可撤销成员资格 需要可信群管理者 企业匿名认证
环签名 环内匿名 否(无人可追踪) 不可撤销 无需可信第三方 举报、隐私币
匿名凭证 属性级匿名 视方案而定 可选 需要可信发行者 年龄验证、去中心化身份
盲签名 签名-身份不可关联 不可撤销(可检测双花) 需要可信签名者 电子现金、匿名投票

七、案例:隐私币与电子投票

密码学隐私原语的价值最终体现在实际系统中。本节深入分析三个具有代表性的案例:Monero、Zcash 和电子投票系统。它们分别展示了环签名、零知识证明和混合网络在隐私保护中的不同技术路径。

Monero:RingCT 与 Bulletproofs

Monero 基于 CryptoNote 协议构建了一套完整的交易隐私体系,其三大核心组件分别隐藏交易的三个关键信息:

发送者隐私(环签名): 发送者选择区块链上若干已有输出(包括自己的真实输出和若干诱饵输出,当前环大小为 16)组成一个环,使用可关联环签名证明自己拥有环中某个输出的支配权。关联标签 key image I = x · H_p(P)(其中 x 为私钥,P 为对应公钥,H_p 为到曲线的哈希映射)确保同一输出不会被花费两次,同时环结构隐藏了真实的交易来源。

金额隐私(RingCT): Ring Confidential Transactions(2017 年启用)使用 Pedersen 承诺 C = v·G + r·H 隐藏交易金额 v,其中 r 为致盲因子。交易的有效性通过验证输入承诺之和等于输出承诺之和(加上手续费承诺)来保证:ΣC_in = ΣC_out + C_fee,利用 Pedersen 承诺的同态性质,这等价于验证金额守恒。

金额范围证明(Bulletproofs): 仅有 Pedersen 承诺无法阻止负数金额攻击(攻击者可以构造负金额输出来凭空创造货币)。Monero 使用 Bulletproofs(Bunz 等人,2018)生成非交互式零知识范围证明,证明每个输出金额 v ∈ [0, 2^64) 而不泄露 v 本身。Bulletproofs 的证明大小仅为 O(log n)(n 为范围比特数),相比此前 Borromean 环签名方案的 O(n) 大小,将每笔交易的范围证明从约 13 KB 缩减至不到 1 KB。

接收者隐私(隐身地址): 发送者为每笔交易生成一次性目的地址 P = H_s(r·A)·G + B(其中 r 为随机数,A 和 B 是接收者的公钥对),只有接收者能用私钥识别并花费发往该地址的资金。

Zcash:Sapling 与 Groth16

Zcash 采用了与 Monero 完全不同的技术路径——基于 zk-SNARK(零知识简洁非交互式知识论证)实现交易隐私。其 Sapling 升级(2018 年)引入了显著优化的电路设计和 Groth16 证明系统。

Turnstile 模型: Zcash 维护两个价值池——透明池(t-pool,类似比特币的 UTXO 模型)和屏蔽池(z-pool,使用加密票据)。资金通过”旋转门”(turnstile)在两个池之间转移:t→z 交易将透明 UTXO 转为屏蔽票据(shielding),z→t 交易将屏蔽票据转为透明输出(deshielding),z→z 交易在屏蔽池内完成完全隐私的转账。系统通过全局验证 t-pool 余额 + z-pool 余额 = 总发行量 来确保无通胀。

Sapling 电路结构: 发送者在本地构建一个算术电路,证明以下声明而不泄露任何具体值:(a) 花费的票据(note)确实存在于全局承诺树中(Merkle 路径验证);(b) 发送者知道票据的打开信息(金额、随机数、接收者地址);(c) 票据的作废符(nullifier)正确计算(防双花);(d) 输出票据的金额之和不超过输入金额之和。整个证明使用 Groth16 方案生成,证明大小仅 192 字节(BN254 曲线上 3 个群元素),验证时间约 10 毫秒——这使得链上验证极为高效。

可信设置: Groth16 需要针对每个电路的结构化参考字符串(structured reference string, SRS)。Zcash 通过多方计算(MPC)的”Powers of Tau”仪式生成 SRS,安全假设为参与者中至少有一人诚实地销毁了自己的有毒废料(toxic waste)。Sapling 仪式有超过 90 名参与者,只要其中任何一人是诚实的,SRS 就是安全的。

电子投票中的隐私技术

密码学电子投票系统需要同时满足多个看似矛盾的安全目标:选票保密性(ballot privacy)、可验证性(verifiability)、抗胁迫性(coercion resistance)和选举正确性(election integrity)。主流技术路线包括三种:

基于混合网络(mix-net)的方案: 选票经过加密后依次通过一系列混合服务器,每个服务器对收到的密文集合进行重新加密和随机置换。经过 k 层混合后,输出的密文与输入之间的对应关系被彻底打乱。最终解密后的选票内容可以公开计票,但无法追溯到具体的投票者。安全性要求至少有一个混合服务器是诚实的。每个服务器通常需要提供正确洗牌的零知识证明(shuffle proof),以便公众可以在不知道置换具体内容的情况下验证混合过程的正确性。

基于同态加密的方案: 使用加法同态加密(如 Paillier 或 exponential ElGamal)直接在密文上计票。每张选票被加密为 E(v_i),计票结果通过计算 ΠE(v_i) = E(Σv_i) 直接从密文获得,全程无需解密单张选票。对于”是/否”投票(v_i ∈ {0, 1}),每位投票者附上一个零知识证明 π_i 证明 v_i ∈ {0, 1}(而非任意整数),防止投票者投出权重异常的选票。该方案的优势是计票效率高,但对于多候选人选举需要更复杂的编码方式。

基于盲签名的方案: 投票者将选票盲化后提交给选举机构,选举机构验证投票者资格后对盲化选票签名。投票者去盲化后得到一张经过认证的匿名选票,通过匿名信道(如 Tor)投出。选举机构无法将签名后的选票与投票者身份关联。该方案实现简单,但抗胁迫性较弱——投票者可以向胁迫者展示自己的选票内容。Helios 投票系统(Adida,2008)结合了同态计票与零知识证明,已在国际密码学协会(IACR)的理事选举中实际使用。

八、隐私保护的实际系统

在上述密码学案例之外,隐私增强技术在更广泛的互联网基础设施中也有着深入的部署。

Signal 协议(Signal Protocol)是目前最受信赖的端到端加密通信协议。它由 Moxie Marlinspike 和 Trevor Perrin 设计,被 Signal、WhatsApp 等应用采用。核心组件包括:X3DH 密钥协商协议实现异步的初始密钥交换;双棘轮算法(Double Ratchet Algorithm)在每条消息中派生新的加密密钥,提供前向安全性和未来安全性;密封发送者(Sealed Sender)机制隐藏消息的发送者身份,使得即使 Signal 的服务器也无法得知谁在与谁通信。

洋葱路由网络 Tor(The Onion Router)是互联网上最著名的匿名通信系统。Tor 通过将用户的流量经由三个随机选择的中继节点进行层层加密转发来实现发送者匿名性。每一层加密对应一个中继节点,每个节点只能看到前一跳和后一跳的地址,没有任何单个节点能同时得知通信的来源和目的地。

Apple 的 iCloud 私有中继(iCloud Private Relay)借鉴了 Tor 的多跳思想,采用双中继架构:第一个中继由 Apple 运营,知道用户 IP 但看不到目标网站;第二个中继由第三方运营,知道目标网站但看不到用户 IP。盲 RSA 签名在其中实现匿名认证——用户使用盲签名从 Apple 获取匿名令牌,向第二个中继证明合法订阅者身份,而中继无法将令牌与用户账号关联。

九、隐私合规与密码学

隐私保护不仅是技术问题,更是法律和伦理问题。密码学技术在满足日益严格的隐私法规方面发挥着不可替代的作用。

欧盟的通用数据保护条例(GDPR)第 25 条提出的”设计即隐私”(privacy by design)原则要求在系统设计之初就将隐私保护纳入考量。GDPR 中最具技术挑战性的”被遗忘权”(第 17 条)与区块链的不可篡改性产生了直接冲突。密码学提供了若干调和思路:将个人数据加密后存储在链上,删除时销毁加密密钥(计算意义上的删除);使用变色龙哈希构建可编辑区块链;或使用零知识证明在链上只存储证明而非原始数据。

中国的个人信息保护法(PIPL)在跨境传输和数据本地化方面提出了严格要求。安全多方计算(MPC)和联邦学习使得数据可以在不出境的前提下参与跨境联合分析;同态加密允许在密文上直接计算;可信执行环境(TEE)与密码学协议的结合提供了软硬件协同的隐私保护方案。

值得注意的是,隐私增强技术本身也面临法律和政策层面的挑战。执法机构对端到端加密和匿名通信技术的担忧导致了持续的公共政策辩论。密码学社区的立场是明确的:削弱加密或引入后门不仅无法有效遏制犯罪,反而会危及所有用户的安全和隐私——任何人为引入的弱点都可能被恶意行为者利用。

总结而言,密码学与隐私的交汇是一个仍在快速演进的领域。从差分隐私的 (ε, δ) 参数权衡到群签名的可追踪责任机制,从 Monero 的 RingCT 到 Zcash 的 Groth16 电路,从混合网络计票到同态加密唱票——密码学正在为数字时代的隐私权构建起坚实而精细的技术防线。随着后量子密码学的推进和零知识证明技术的日益成熟,未来的隐私保护系统将在保护个人自由的同时,支撑起一个安全、可信的数字社会。


密码学百科系列 · 第 49 篇

← 上一篇:区块链密码学 | 系列目录 | 下一篇:可证明安全

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。

2025-12-11 · cryptography

OPRF (RFC 9497) 详解:遗忘伪随机函数

在现代隐私保护协议中,我们经常遇到这样一个需求:客户端拥有一个输入 $x$,服务器拥有一个密钥 $k$,双方希望计算 $y F(k, x)$,但有两个严格的隐私限制: 1. 服务器不能知道客户端的输入 $x$,也不能知道计算结果 $y$。 2. 客户端不能知道服务器的密钥 $k$。


By .