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

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

目录

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

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

一、隐私的密码学定义

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

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

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

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

在统计数据发布的语境下,隐私的形式化又有不同的路径。k-匿名性(k-anonymity)要求数据集中的每条记录在准标识符(quasi-identifier)上至少与其他 k-1 条记录不可区分。例如,如果准标识符是邮政编码、性别和出生年份,k-匿名性要求数据集中至少有 k 条记录具有相同的邮政编码、性别和出生年份组合。然而,k-匿名性存在已知的缺陷:如果同一等价类中的所有记录具有相同的敏感属性值,攻击者仍然可以确定个人的敏感信息(这被称为同质攻击)。为了弥补这一缺陷,后续研究提出了 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]

其中 ε 是隐私预算(privacy budget),也称隐私损失参数。ε 越小,隐私保护越强——当 ε 趋近于零时,M(D) 和 M(D’) 的分布几乎完全相同,意味着单个个体的数据对输出几乎没有影响。在实际应用中,ε 的值通常在 0.1 到 10 之间选取,具体取决于应用场景对隐私与数据效用之间权衡的要求。

差分隐私还有一个常用的松弛版本,称为 (ε, δ)-差分隐私((ε, δ)-differential privacy),其定义为:

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

其中 δ 通常取一个密码学意义上可忽略的值(如 1/n^2,n 为数据集大小)。δ 项允许差分隐私保证以微小的概率失效,这在许多场景下使得机制的设计更加灵活。

实现差分隐私的最基本技术是添加校准噪声(calibrated noise)。对于一个数值查询 f: D → R(如”数据集中满足条件 X 的记录有多少条”),拉普拉斯机制(Laplace mechanism)是最经典的方案:将查询结果加上服从拉普拉斯分布的随机噪声,即输出 f(D) + Lap(Δf/ε),其中 Δf 是查询 f 的全局敏感度(global sensitivity),定义为 Δf = max_{D,D’} |f(D) - f(D’)|,最大值取遍所有相邻数据集对。直觉上,敏感度衡量的是单个个体的数据变化对查询结果的最大影响——敏感度越大,需要添加的噪声越多以掩盖个体的贡献。

对于向量值查询,高斯机制(Gaussian mechanism)则更为常用:输出 f(D) + N(0, σ^2),其中 σ 的选取需要满足 (ε, δ)-差分隐私的要求。高斯机制在高维场景下通常比拉普拉斯机制具有更好的效用,因为高维高斯分布的集中性质使得噪声的实际影响相对更小。

差分隐私还有一个重要的变体区分:全局差分隐私(global differential privacy)与本地差分隐私(local differential privacy, LDP)。在全局模型中,存在一个可信的数据收集者(curator),所有用户将真实数据提交给收集者,收集者在汇总后的查询结果上添加噪声。在本地模型中,不存在可信的第三方——每个用户在提交数据之前就在本地对自己的数据进行随机化扰动。本地差分隐私的隐私保证更强(即使数据收集者是恶意的也能保护用户),但代价是统计效用的显著降低——对于 n 个用户的计数查询,全局模型的误差为 O(1/ε),而本地模型的误差为 O(√n/ε)。Apple 在其 iOS 系统中使用的键盘输入频率统计、Google 在 Chrome 浏览器中使用的 RAPPOR 协议,都是本地差分隐私的实际部署实例。

差分隐私的一个关键理论性质是可组合性(composability)。基本组合定理(basic composition theorem)指出,如果对同一数据集进行 k 次查询,每次满足 ε_i-差分隐私,则总体满足 (Σε_i)-差分隐私。更精细的高级组合定理(advanced composition theorem)利用集中不等式(concentration inequality)给出了更紧的界:k 次 ε-差分隐私查询的总体隐私损失大约为 O(ε√(k ln(1/δ)))。这一性质使得差分隐私可以在复杂的数据分析流水线中逐步跟踪和控制隐私预算的消耗。

以下 Python 代码展示了拉普拉斯机制的简化实现:

import numpy as np

def laplace_mechanism(true_value, sensitivity, epsilon):
    """
    拉普拉斯机制:在真实查询结果上添加校准噪声以满足 ε-差分隐私。

    参数:
        true_value   -- 查询的真实结果(数值)
        sensitivity  -- 查询的全局敏感度 Δf
        epsilon      -- 隐私预算 ε(越小隐私保护越强)
    返回:
        添加拉普拉斯噪声后的查询结果
    """
    scale = sensitivity / epsilon  # 拉普拉斯分布的尺度参数 b = Δf/ε
    noise = np.random.laplace(loc=0.0, scale=scale)
    return true_value + noise


# ---- 演示:差分隐私保护下的计数查询 ----

np.random.seed(42)

# 模拟一个包含 10000 条记录的数据集,每条记录的敏感属性为 0 或 1
dataset = np.random.binomial(1, 0.3, size=10000)
true_count = int(dataset.sum())  # 真实计数

# 计数查询的全局敏感度为 1(增删一条记录最多改变计数 1)
sensitivity = 1.0

# 在不同隐私预算下运行拉普拉斯机制
for eps in [0.1, 0.5, 1.0, 5.0]:
    results = [laplace_mechanism(true_count, sensitivity, eps) for _ in range(1000)]
    mean_result = np.mean(results)
    std_result = np.std(results)
    print(f"ε = {eps:>4.1f} | 真实值 = {true_count} | "
          f"平均估计 = {mean_result:.1f} | 标准差 = {std_result:.1f}")

# 输出示例:
# ε =  0.1 | 真实值 = 2991 | 平均估计 = 2990.7 | 标准差 = 14.1
# ε =  0.5 | 真实值 = 2991 | 平均估计 = 2991.0 | 标准差 = 2.8
# ε =  1.0 | 真实值 = 2991 | 平均估计 = 2991.0 | 标准差 = 1.4
# ε =  5.0 | 真实值 = 2991 | 平均估计 = 2991.0 | 标准差 = 0.3

从输出可以直观地看到,ε 越大(隐私保护越弱),噪声的标准差越小,查询结果越准确。这就是差分隐私中隐私与效用之间的基本权衡。

笔者认为,差分隐私在所有隐私增强技术中占据着一个独一无二的位置——它是唯一一种能够提供定量隐私保证的技术。群签名可以告诉你「签名者是匿名的」,环签名可以告诉你「签名者不可追踪」,但它们都无法回答「到底泄露了多少信息」这个量化问题。差分隐私的 ε-预算机制则可以精确地说:「这个查询对任何个体的信息泄露不超过 ε 比特。」这种可量化性使得差分隐私成为唯一一种可以进行工程化的隐私权衡——你可以像调节音量旋钮一样调节 ε 的值,在隐私和数据效用之间找到精确的平衡点。更深刻的是,差分隐私的可组合性定理(composition theorem)使得多次查询的总隐私损失可以精确计算,这为「隐私预算管理」提供了严格的数学框架。从工程实践来看,这正是 Apple、Google 等公司大规模采用差分隐私的根本原因——它不仅提供隐私保护,还提供关于隐私保护程度的可审计证据,而后者在面对监管审查时几乎与前者同样重要。

三、盲签名

盲签名(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),系统记录已使用的序列号;一旦同一个序列号被花费两次,系统可以检测到并追踪欺诈者的身份。

盲签名在电子投票(e-voting)中也有重要应用。投票者将自己的选票盲化后提交给选举机构,选举机构验证投票者的资格后对盲化选票进行签名。投票者去盲化后得到一张经过认证的匿名选票,可以通过匿名信道投出。由于盲性,选举机构无法将签名后的选票与投票者的身份关联起来,从而保证了投票的秘密性。

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

四、群签名

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

群签名的安全性模型由 Bellare、Shi 和 Zhang(BSZ 模型)在 2005 年给出了严格的形式化。该模型定义了两个核心性质。完全匿名性(full anonymity)要求即使是拥有群私钥的其他成员也无法确定某个签名的生成者身份;更强的是,即使敌手可以自适应地查询打开预言机(open oracle),只要不查询目标签名的打开结果,匿名性仍然成立。完全可追踪性(full traceability)要求即使所有群成员联合起来也无法产生一个不可追踪的签名——群管理者始终能够打开任何合法签名并将其追溯到具体的成员。

群签名的工作流程包含以下几个阶段。在设置阶段,群管理者生成群公钥(group public key)和管理者私钥(opening key)。在加入阶段,新成员与群管理者执行交互式协议,获得自己的成员证书(membership certificate)和签名密钥。在签名阶段,成员使用自己的签名密钥和成员证书对消息进行签名,生成群签名。在验证阶段,任何人都可以使用群公钥验证签名的有效性,但无法得知签名者的身份。在打开阶段,群管理者使用管理者私钥(打开密钥)解密签名中嵌入的身份信息,揭示签名者。

群签名的一个重要变体是可验证局部撤销(verifier-local revocation, VLR)群签名。在标准群签名中,成员撤销通常需要更新所有未被撤销成员的密钥或证书,开销巨大。VLR 群签名解决了这一问题:撤销一个成员时,只需将其撤销令牌(revocation token)添加到一个公开的撤销列表中,验证者在验证签名时检查该列表即可判断签名者是否已被撤销,而无需更新任何成员的密钥。

群签名在企业场景中有着广泛的应用。例如,一家公司的员工可以使用群签名代表公司签署文件,外部合作方可以验证签名确实来自该公司的某个授权员工,但无法得知具体是谁。当出现法律纠纷时,公司的管理层(群管理者)可以打开签名揭示具体的签名人。在匿名认证场景中,群签名允许用户证明自己属于某个授权群体(如某个组织的成员、某个年龄段的人群),而不泄露自己的具体身份。

五、环签名

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

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

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

可关联环签名在隐私币(privacy coin)中得到了最为广泛的实际部署。CryptoNote 协议(2012 年)首先将可关联环签名应用于数字货币,其继承者 Monero 在此基础上进一步发展。在 Monero 的交易模型中,发送者选择区块链上的若干已有输出(包括自己的真实输出和若干诱饵输出)组成一个环,然后使用可关联环签名证明自己拥有环中某个输出的支配权。关联标签(在 Monero 中称为 key image)确保同一输出不会被花费两次,而环结构则隐藏了真实的交易来源。

从技术实现上看,环签名的构造通常基于离散对数或椭圆曲线。最初的 RST 方案使用了类似于”陷门置换的环形组合”结构,签名者将所有环成员的公钥编织成一个循环计算链,只有持有某个私钥的签名者才能”闭合”这个环。后续的方案在效率上做了大量改进——Monero 最初使用的环签名大小与环成员数成线性关系,后来切换到基于 Bulletproofs 的方案大幅缩小了签名尺寸。

六、匿名凭证

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

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

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

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

IBM 的 Identity Mixer(Idemix)和微软的 U-Prove 是匿名凭证领域最具影响力的两个实际系统。Idemix 基于 CL 签名,支持完全的多次出示不可关联性和丰富的属性断言;U-Prove 基于不同的密码学构造,签名更短、验证更快,但只支持一次出示不可关联性(single-show unlinkability),即用户每次出示凭证时使用不同的令牌,同一令牌的两次出示可以被关联。两者各有优劣,适用于不同的应用场景。

一个经常被忽视的观点是:匿名凭证可能是密码学领域中「技术成熟度」与「实际部署率」之间差距最大的原语。Idemix 和 U-Prove 的核心密码学构造已经经过了二十年的理论审查和多次独立实现,BBS+ 签名为选择性披露提供了高效且标准化的方案,W3C 的可验证凭证规范为数据格式和交互流程提供了工业标准——从技术栈的角度看,匿名凭证已经「准备好了」。但在实际部署中,它们几乎无处可见。笔者认为,根本原因是一个经典的鸡生蛋问题:没有验证者接受匿名凭证,因为没有发行者签发它们;没有发行者签发匿名凭证,因为没有验证者接受它们。打破这个僵局需要一个足够大的生态系统推动者——政府的数字身份计划(如欧盟的 eIDAS 2.0)可能正是这个推动力,因为它有能力同时扮演发行者和验证者的角色,从而在一个受控的生态中启动网络效应。

在介绍了盲签名、群签名、环签名和匿名凭证这四种核心隐私原语之后,有必要从「匿名性、可追责、可撤销」三个维度对它们进行系统对比,以帮助读者在实际设计中做出正确的选型:

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

个人观察: 这张矩阵揭示了隐私增强系统设计中最根本的张力——匿名性与可追责性之间的不可调和。群签名和环签名的差异恰好体现了这一光谱的两端:群签名说「你可以匿名,但组织保留追踪你的权力」;环签名说「你的匿名是绝对的,没有任何人可以打破」。两者都有合理的应用场景,但选择哪一个本质上是一个价值判断而非技术判断——你更信任组织的自律,还是更看重个体的绝对自由?在实际系统设计中,我发现大多数场景其实需要的是一个可调节的旋钮,而非非此即彼的二元选择。可关联环签名就是这种中间地带的尝试:它在保持匿名性的同时引入了「同一密钥的双重使用可检测」这一最小限度的可追责性,恰好满足了「防双花但不泄露身份」的需求。未来的隐私系统设计,很可能会朝着这种精细化的「隐私刻度盘」方向发展,而不是在完全匿名和完全透明之间做粗暴的取舍。

七、可验证凭证与去中心化身份

近年来,匿名凭证的理念在更广泛的数字身份领域找到了新的落地点。万维网联盟(W3C)制定的可验证凭证(Verifiable Credentials, VC)标准和去中心化标识符(Decentralized Identifiers, DID)规范,正在构建一个以用户为中心的数字身份基础设施。

可验证凭证的数据模型定义了三个核心角色:发行者(issuer)颁发凭证,持有者(holder)持有并出示凭证,验证者(verifier)验证凭证的真实性。凭证以结构化的 JSON-LD 格式表示,包含发行者的数字签名。关键的设计理念是:持有者可以在不联系发行者的情况下向验证者出示凭证,验证者可以独立验证凭证的签名——这消除了对中心化身份提供者的依赖。

去中心化标识符(DID)为可验证凭证提供了身份层基础。DID 是一种新型的全球唯一标识符,不依赖于任何中心化注册机构。DID 的格式为 did:method:specific-id,其中 method 指定了 DID 的解析方法(如 did:web 使用 Web 域名、did:ion 使用比特币区块链)。每个 DID 关联一个 DID 文档(DID Document),其中包含公钥、认证方法和服务端点等元数据。

在隐私保护方面,可验证凭证标准正在积极集成先进的密码学技术。BBS+ 签名(BBS+ signatures)是目前最受关注的方案之一。BBS+ 是一种基于配对密码学(pairing-based cryptography)的多消息签名方案,天然支持选择性披露(selective disclosure):一个 BBS+ 签名可以覆盖多个消息(属性),持有者在出示时可以通过零知识证明只揭示部分消息而隐藏其余消息,同时证明签名的有效性。与简单的 JWT(JSON Web Token)相比,BBS+ 凭证的隐私优势是质的飞跃——JWT 要么完整出示、要么不出示,没有选择性披露的能力。

BBS+ 签名的零知识披露过程大致如下:设发行者使用 BBS+ 对属性集合 (a₁, a₂, …, a_n) 签名得到签名 σ。持有者想要向验证者揭示属性子集 {a_i : i ∈ D}(D 为披露属性的索引集),同时隐藏其余属性。持有者构造一个零知识证明,证明”我持有一个有效的 BBS+ 签名 σ,签名覆盖的消息中第 i 个位置的值为 a_i(对于所有 i ∈ D),其余位置的值我知道但不揭示”。验证者检查证明后可以确信持有者确实持有覆盖这些属性的合法凭证,但对未披露的属性一无所知。

更进一步,基于零知识证明的可验证凭证可以支持谓词证明(predicate proof):不仅可以选择性地揭示属性值,还可以证明属性满足某种条件而不揭示属性本身。例如,证明”出生日期早于 2008 年 1 月 1 日”(即年满 18 岁)而不揭示确切的出生日期。这种能力将隐私保护推进到了最小化披露(minimal disclosure)的极致。

八、隐私保护的实际系统

密码学隐私原语的价值最终体现在实际系统中。以下介绍几个在全球范围内广泛部署的隐私保护系统,它们展示了密码学理论与工程实践的深度结合。

Signal 协议(Signal Protocol)是目前最受信赖的端到端加密通信协议。它由 Moxie Marlinspike 和 Trevor Perrin 设计,被 Signal、WhatsApp、Facebook Messenger 等应用采用,保护着数十亿用户的通信隐私。Signal 协议的核心组件包括:X3DH(Extended Triple Diffie-Hellman)密钥协商协议实现异步的初始密钥交换;双棘轮算法(Double Ratchet Algorithm)在每条消息中派生新的加密密钥,提供前向安全性(forward secrecy)和未来安全性(post-compromise security);密封发送者(Sealed Sender)机制隐藏消息的发送者身份,使得即使 Signal 的服务器也无法得知谁在与谁通信。Signal 协议体现了一个重要的设计理念:最好的隐私保护是让服务提供者自身也无法获取用户的隐私数据——不是依赖信任,而是通过密码学消除信任的必要。

洋葱路由网络 Tor(The Onion Router)是互联网上最著名的匿名通信系统。Tor 通过将用户的流量经由三个随机选择的中继节点(入口节点、中间节点和出口节点)进行层层加密转发来实现发送者匿名性。每一层加密对应一个中继节点,每个节点只能看到前一跳和后一跳的地址,没有任何单个节点能同时得知通信的来源和目的地。Tor 的安全性依赖于诚实多数假设——只要入口节点和出口节点不是同一个攻击者控制的,用户的匿名性就得到保护。

Apple 的 iCloud 私有中继(iCloud Private Relay)借鉴了 Tor 的多跳思想,但采用了不同的架构来兼顾性能和隐私。Private Relay 使用恰好两个中继:第一个中继由 Apple 运营,知道用户的 IP 地址但看不到目标网站;第二个中继由第三方合作伙伴运营,知道目标网站但看不到用户的 IP 地址。通过这种双盲架构,没有任何单一实体能同时获知”谁在访问什么”。盲 RSA 签名(blind RSA signature)在其中扮演关键角色——用户使用盲签名从 Apple 获取匿名认证令牌,然后用这些令牌向第二个中继证明自己是合法的 iCloud 订阅者,而第二个中继无法将令牌与用户的 Apple 账号关联。

Google 的隐私沙箱(Privacy Sandbox)项目则从广告技术的角度探索隐私保护方案。其核心目标是在逐步淘汰第三方 Cookie 的同时,为广告主提供足够的广告效果衡量能力。主要技术包括:Topics API 使用本地机器学习推断用户的兴趣主题,只向广告主披露粗粒度的主题而非详细的浏览历史;Attribution Reporting API 使用差分隐私和聚合技术来衡量广告转化效果,同时限制个体级别的数据泄露;Private Aggregation API 允许在受信任执行环境(trusted execution environment, TEE)中汇总跨站数据。

九、隐私合规与密码学

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

欧盟的通用数据保护条例(General Data Protection Regulation, GDPR)是全球最具影响力的隐私法规。GDPR 第 32 条明确提到加密(encryption)和假名化(pseudonymisation)作为保护个人数据的适当技术措施。GDPR 第 25 条提出的”设计即隐私”(privacy by design)原则要求在系统设计之初就将隐私保护纳入考量,而非事后补救。这一原则与密码学社区长期倡导的理念不谋而合——通过密码学机制从架构层面消除隐私风险,而非依赖组织政策或访问控制来防范。

GDPR 中最具技术挑战性的条款之一是”被遗忘权”(right to erasure / right to be forgotten)。第 17 条赋予数据主体要求数据控制者删除其个人数据的权利。然而,当个人数据被存储在区块链上时,这一权利与区块链的不可篡改性(immutability)产生了直接冲突。区块链上写入的数据在技术上无法被删除或修改——这正是区块链的核心价值所在。密码学为调和这一矛盾提供了若干思路。一种方案是将个人数据加密后存储在链上,删除时只需销毁加密密钥——虽然密文仍然存在于区块链上,但在计算意义上已无法被解读,某些法律解释认为这等效于删除。另一种方案是使用变色龙哈希(chameleon hash)构建可编辑区块链(redactable blockchain),允许在知道陷门的条件下修改历史区块而不破坏链的完整性。此外,零知识证明允许在链上只存储证明而非原始数据,从根本上避免了个人数据上链的问题。

中国的个人信息保护法(PIPL)于 2021 年施行,在个人信息跨境传输、知情同意和数据本地化等方面提出了严格要求。密码学技术在满足这些要求方面具有独特优势:安全多方计算(MPC)和联邦学习(federated learning)使得数据可以在不出境的前提下参与跨境联合分析;同态加密(homomorphic encryption)允许在密文上直接计算,使得数据处理者无需接触明文即可完成分析任务;可信执行环境(TEE)与密码学协议的结合提供了软硬件协同的隐私保护方案。

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

总结而言,密码学与隐私的交汇是一个仍在快速演进的领域。从差分隐私的数学严谨性到盲签名和环签名的精巧构造,从匿名凭证的理论优美到 Signal 和 Tor 的工程实践,密码学正在为数字时代的隐私权构建起坚实的技术防线。随着后量子密码学的推进和零知识证明技术的日益成熟,我们有理由期待未来的隐私保护系统将变得更加强大、高效和普及——在保护个人自由的同时,支撑起一个安全、可信的数字社会。


密码学百科系列 · 第 49 篇

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


By .