一句话:提出 F* 库 Waldo,通过网络轨迹不可区分性直接验证隐私保护协议,并发现 TLS ECH 规范缺陷。
互联网用户依赖协议保护身份与访问网站等隐私信息。形式验证可在设计阶段发现破坏保护的细微缺陷,但需对随机采样、密码原语和并发执行进行概率推理。现有方法要么使用符号模型,以精度换取自动化,要么使用更精确的计算模型,但难以自动化且需要密码学专长。本文提出一种验证隐私保护协议的新方法,精度高于符号模型,又比计算模型更易用。它将隐私形式化为协议可能诱导的网络轨迹的不可区分性,从而支持直接式隐私证明,而非计算模型中的间接博弈证明;并借鉴分布式系统验证思想,为并发协议构建可靠的同步模型以简化自动化。该框架在 F* 中实现为 Waldo 库。作者在 TLS ECH 扩展和 PIR 协议两个大型案例中验证不可区分性,并发现 TLS ECH 规范中被其他模型遗漏的微妙缺陷。
Internet users rely on the protocols they use to protect their private information including their identity and the websites they visit. Formal verification of these protocols can detect subtle bugs that compromise these protections at design time, but is a challenging task as it involves probabilistic reasoning about random sampling, cryptographic primitives, and concurrent execution. Existing approaches either reason about symbolic models of the protocols that sacrifice precision for automation, or reason about more precise computational models that are harder to automate and require cryptographic expertise. In this paper we propose a novel approach to verifying privacy-preserving protocols that is more precise than symbolic models yet more accessible than computational models. Our approach permits direct-style proofs of privacy, as opposed to indirect game-based proofs in computational models, by formalizing privacy as indistinguishability of possible network traces induced by a protocol. We ease automation by leveraging insights from the distributed systems verification community to create sound synchronous models of concurrent protocols. Our verification framework is implemented in F* as a library we call Waldo. We describe two large case studies of using Waldo to verify indistinguishability; one on the Encrypted Client Hello (ECH) extension of the TLS protocol and another on a Private Information Retrieval (PIR) protocol. We uncover subtle flaws in the TLS ECH specification that were missed by other models.
@article{paperbot1837,
title = {Verifying Indistinguishability of Privacy-Preserving Protocols},
author = {Kirby Linvill and Gowtham Kaki and Eric Wustrow},
journal = {Proceedings of the ACM on Programming Languages},
volume = {7},
number = {OOPSLA2},
year = {2023},
doi = {10.1145/3622849}
}