5.3 密码学隐私增强技术 PETs 总览


5.3 密码学隐私增强技术 PETs 总览

**隐私增强技术(PETs)**指在不牺牲可验证性的前提下限制信息泄露的密码学工具族:按防护目标分为隐藏身份(混币、环签名、隐形地址)、隐藏内容(机密交易、同态加密、安全多方计算)、隐藏知识本身(零知识证明)与物理层隔离(可信执行环境)。本节建立仪器谱系与选型矩阵,把成本账摊开,为后两节的深拆打底。

检验科的仪器柜分四层

上一节的分析流水线证明了一件事:光靠"不写名字"挡不住任何观察者。检验科因此备了满满一柜仪器,按"藏什么"分层摆放。第一层藏身份:观察者知道有交易发生,但认不出谁是谁——混币池打散控制权历史,环签名把真实签名者藏进人群,隐形地址让收款方每次收款都换新面孔。第二层藏内容:交易发生、身份可辨,但金额与资产类别加密——机密交易用承诺方案隐藏金额且保持可验证,同态加密允许密文上直接计算,安全多方计算让多方合力算结果而互不见底牌。第三层最激进,藏知识本身:零知识证明让你证明"我有权做这件事"而不透露任何支撑事实——它不是给信息上锁,是让验证与知晓分离。第四层在物理层动手:可信执行环境把计算关进硬件隔离区,观察者(包括操作系统)只见输出不见过程。

四层仪器的通用设计哲学值得先记下:隐私不是加密一切,而是精确控制"谁在什么条件下能看到什么"。全加密的账本无法被矿工验证,等于放弃了区块链的立身之本;PETs 的全部巧思在于"遮住内容、保留证明力"。

机制速览:每种仪器一段话

混币与隐私池:多笔输入打散重分配输出,切断输入输出对应关系。原理朴素,匿名性依赖参与者多样性——池子小、时间模式一致则形同虚设。环签名:一组公钥共同构成"环",签名可被验证出自环中某人、但无法定位是谁。匿名集等于环成员数,代价是每笔交易都要拖着"人群"一起验。隐形地址:付款方为每笔付款派生一次性收款地址,只有收款方能认领——收款关系对外人不可见。机密交易:金额以密码学承诺的形式上链,验证者能确认"输入承诺之和等于输出承诺之和"却读不出金额——账平的证明与金额的保密并存。同态加密:密文加法或乘法的结果解密后与明文运算一致,链下托管数据、链上只验证明成为可能。安全多方计算:多方各持秘密输入,合力计算约定函数而互不泄露输入——联盟风控与联合统计的主力。零知识证明:证明某陈述为真而不泄露任何额外信息,5.4 节整个交给它。可信执行环境:硬件隔离区内的计算带远程证明,快但把信任押给芯片厂商。差分隐私:在统计发布前注入校准噪声,使个体存在与否不影响输出分布——链上数据分析与公开报表的护栏。

选型矩阵:威胁问句到仪器的映射

工具选型从威胁模型出发。把上节的攻击者三问(这是同一个人吗、钱从哪来、这笔交易特殊吗)扩展成一张问句到仪器的路由表:

def select_pet(threat_model): """按威胁问句路由到仪器组合""" picks = [] q = threat_model if q.linkability: # "这两笔是同一人吗" if q.trust_third_party: picks.append("混币池(简单,需信任运营)") else: picks.append("环签名 + 隐形地址(自trustless)") if q.amount_visible: # "金额多少能读吗" picks.append("机密交易(Pedersen 承诺 + 区间证明)") if q.data_hosted_offchain: # "托管方能读我的数据吗" picks.append("同态加密 或 安全多方计算") if q.proof_needed: # "既要证明 又不能亮底牌" picks.append("零知识证明(zk-SNARK 或 zk-STARK)") if q.statistical_release: # "公开发布统计会泄露个体吗" picks.append("差分隐私(预算 eps 控制)") if q.hardware_ok: # "接受把信任押给硬件厂商吗" picks.append("可信执行环境(高性能兜底)") return picks or ["无对应威胁 -> 先写威胁模型,再谈工具"] print(select_pet({"linkability": True, "trust_third_party": False, "amount_visible": True, "proof_needed": False, "data_hosted_offchain": False, "statistical_release": False, "hardware_ok": False})) # -> ['环签名 + 隐形地址(自trustless)', '机密交易(Pedersen 承诺 + 区间证明)']

路由表的第二行值得展开:机密交易的"账平可验"靠的是承诺方案的代数性质——承诺对加法封闭(两个金额承诺的乘积可"相加"成总承诺),配合一个证明每个金额落在合法区间的零知识小证明。这也是 PETs 谱系的普遍现象:主力仪器几乎都以零知识证明为最后一块拼图,5.4 节的地位由此而来。

成本账:隐私的价签

隐私不是免费的,价签分四种货币。

仪器 计算开销 数据开销 信任假设 主要失效姿势
混币池 运营方不记日志 参与者少、时间模式暴露
环签名 每笔拖全环公钥 环成员选择不当缩小匿名集
隐形地址 付款方私钥泄露历史全暴露
机密交易 中高 证明约千字节级 实现漏洞导致金额伪造
同态加密 高(近似全同态极高) 密文膨胀 密钥管理 侧信道与参数老化
安全多方计算 高(随方数增长) 通信膨胀 多数方不合谋 合谋阈值失守
零知识证明 证明生成高、验证低 证明数百字节级 视方案:可信设置有无 电路漏洞、参数废料
可信执行环境 极低 极低 芯片厂商与实现 侧信道、固件漏洞
差分隐私 噪声参数诚实 预算耗尽后的累积泄露

用一段代码把"匿名集收益递减"与"成本递增"的交叉点可视化成数字:

def anonymity_vs_cost(ring_size: int): """环签名:匿名集收益对数增长,成本线性增长""" import math # 猜中真实签名者的概率 = 1/环大小;信息论下限按 log2 衡量 bits_of_privacy = math.log2(ring_size) tx_size_kb = 0.3 + ring_size * 0.1 # 每个环成员带公钥与映像数据 verify_ms = 2 + ring_size * 0.7 # 验签时间随环线性增长 return bits_of_privacy, tx_size_kb, verify_ms for n in (4, 8, 16, 32, 64, 128): bits, kb, ms = anonymity_vs_cost(n) print(f"环大小 {n:>3}: 隐私 {bits:4.1f} 比特 | 交易 {kb:5.1f} KB | 验证 {ms:5.1f} ms")

环从四到八,隐私比特翻倍、体积也近乎翻倍;从六十四到一百二十八,同样的翻倍要再付出一倍体积——隐私的边际收益对数递减,边际成本线性递增,每个隐私链的默认参数都是这条曲线上的一个选点,5.6 节看两条真实产线怎么选。

⚠️ 集成 PETs 的三条现场纪律:其一,组合 ≠ 叠加,匿名性的短板永远由最弱的仪器决定(环签名环环相扣、金额却明文,等于匿名了身份泄露了行为);其二,"信任假设"列比"开销"列更常被低估,可信设置与运营方日志是历史事故高发地;其三,隐私功能的可用性决定其安全——确认要等半小时的隐私交易会逼用户放弃隐私选项,可用性即安全性在检验科同样成立。

💡 判词:第一层藏身份,第二层藏内容,第三层藏知识,第四层藏过程;选仪器先问攻击者会问哪句。

攻防边界:谱系层的通用弱点

谱系级的通用弱点有三。元数据不归密码学管:交易时间、网络来源、金额模式、与锚点的接触,都在密码学承诺的射程之外——差分隐私与流量混淆是补丁不是根治。参数与实现是永恒软肋:正确性证明覆盖数学,覆盖不了工程(随机数劣化、侧信道、电路写错)。匿名集是社会性资产:再强的密码学,也保不住一个没人用的隐私池——匿名的强度与你混入的人群同宽。带着这三条通用弱点,下一节打开柜中最重的仪器:零知识证明,看它如何把"验证与知晓分离"做到极致。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U