Transparency protocols are protocols whose actions can be publicly monitored by observers (such observers may include regulators, rights advocacy groups, or the general public). The observed actions are typically usages of private keys such as decryptions, and signings. Examples of transparency protocols include certificate transparency, cryptocurrency, transparent decryption, and electronic voting. These protocols usually pose a challenge for automatic verification, because they involve sophisticated data types that have strong properties, such as Merkle trees, that allow compact proofs of data presence and tree extension. We address this challenge by introducing new features in ProVerif, and a methodology for using them. With our methodology, it is possible to describe the data type quite abstractly, using ProVerif axioms, and prove the correctness of the protocol using those axioms as assumptions. Then, in separate steps, one can define one or more concrete implementations of the data type, and again use ProVerif to show that the implementations satisfy the assumptions that were coded as axioms. This helps make compositional proofs, splitting the proof burden into several manageable pieces. We illustrate the methodology and features by providing the first formal verification of the transparent decryption and certificate transparency protocols with a precise modelling of the Merkle tree data structure.
翻译:透明度协议是一种协议,其操作可以被观察者公开监视(这些观察者可能包括监管机构、维权组织或普通公众)。被观察的操作通常是使用私钥的操作,例如解密和签名。透明度协议包括证书透明度、加密货币、透明解密和电子投票等。这些协议通常为自动验证带来挑战,因为它们涉及到具有强属性的复杂数据类型,例如Merkle树,其允许数据存在和树扩展的紧凑证明。我们通过引入ProVerif的新功能和一种使用方法来应对这一挑战。使用我们的方法,可以相当抽象地描述数据类型,使用ProVerif公理证明协议的正确性。然后,可以定义一个或多个数据类型的具体实现,使用ProVerif显示实现满足作为公理编码的假设。这有助于构成证明,将证明负担分解为几个可管理的部分。我们通过提供精确建模Merkle树数据结构的透明解密和证书透明度协议的第一个形式验证来说明该方法和特性。