{"title":"Authenticated data structures, generically","authors":"Andrew K. Miller, M. Hicks, Jonathan Katz, E. Shi","doi":"10.1145/2535838.2535851","DOIUrl":null,"url":null,"abstract":"An authenticated data structure (ADS) is a data structure whose operations can be carried out by an untrusted prover, the results of which a verifier can efficiently check as authentic. This is done by having the prover produce a compact proof that the verifier can check along with each operation's result. ADSs thus support outsourcing data maintenance and processing tasks to untrusted servers without loss of integrity. Past work on ADSs has focused on particular data structures (or limited classes of data structures), one at a time, often with support only for particular operations. This paper presents a generic method, using a simple extension to a ML-like functional programming language we call λ• (lambda-auth), with which one can program authenticated operations over any data structure defined by standard type constructors, including recursive types, sums, and products. The programmer writes the data structure largely as usual and it is compiled to code to be run by the prover and verifier. Using a formalization of λ• we prove that all well-typed λ• programs result in code that is secure under the standard cryptographic assumption of collision-resistant hash functions. We have implemented λ• as an extension to the OCaml compiler, and have used it to produce authenticated versions of many interesting data structures including binary search trees, red-black+ trees, skip lists, and more. Performance experiments show that our approach is efficient, giving up little compared to the hand-optimized data structures developed previously.","PeriodicalId":20683,"journal":{"name":"Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages","volume":null,"pages":null},"PeriodicalIF":0.0000,"publicationDate":"2014-01-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"79","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/2535838.2535851","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 79
Abstract
An authenticated data structure (ADS) is a data structure whose operations can be carried out by an untrusted prover, the results of which a verifier can efficiently check as authentic. This is done by having the prover produce a compact proof that the verifier can check along with each operation's result. ADSs thus support outsourcing data maintenance and processing tasks to untrusted servers without loss of integrity. Past work on ADSs has focused on particular data structures (or limited classes of data structures), one at a time, often with support only for particular operations. This paper presents a generic method, using a simple extension to a ML-like functional programming language we call λ• (lambda-auth), with which one can program authenticated operations over any data structure defined by standard type constructors, including recursive types, sums, and products. The programmer writes the data structure largely as usual and it is compiled to code to be run by the prover and verifier. Using a formalization of λ• we prove that all well-typed λ• programs result in code that is secure under the standard cryptographic assumption of collision-resistant hash functions. We have implemented λ• as an extension to the OCaml compiler, and have used it to produce authenticated versions of many interesting data structures including binary search trees, red-black+ trees, skip lists, and more. Performance experiments show that our approach is efficient, giving up little compared to the hand-optimized data structures developed previously.
ADS (authenticated data structure)是一种数据结构,它的操作可以由不受信任的证明者执行,验证者可以有效地检查其结果是否可信。这是通过让证明者生成一个紧凑的证明来完成的,验证者可以与每个操作的结果一起检查。因此,ads支持将数据维护和处理任务外包给不受信任的服务器,而不会丢失完整性。过去关于ads的工作主要集中在特定的数据结构(或有限的数据结构类)上,每次一个,通常只支持特定的操作。本文提出了一种泛型方法,使用类似ml的函数式编程语言λ•(lambda-auth)的简单扩展,可以在任何由标准类型构造函数定义的数据结构上编程认证操作,包括递归类型、和和乘积。程序员像往常一样编写数据结构,并将其编译为由证明者和验证者运行的代码。使用λ•的形式化,我们证明了在抗碰撞哈希函数的标准密码学假设下,所有类型良好的λ•程序都会产生安全的代码。我们已经将λ•实现为OCaml编译器的扩展,并使用它生成许多有趣的数据结构的认证版本,包括二叉搜索树、红黑+树、跳跃表等。性能实验表明,我们的方法是有效的,与以前开发的手动优化数据结构相比,放弃的很少。