Skip lists: a probabilistic alternative to balanced trees
Communications of the ACM
The essence of compiling with continuations
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Secure communications over insecure channels
Communications of the ACM
CRYPTO '89 Proceedings of the 9th Annual International Cryptology Conference on Advances in Cryptology
Persistent Authenticated Dictionaries and Their Applications
ISC '01 Proceedings of the 4th International Conference on Information Security
Authentic Third-party Data Publication
Proceedings of the IFIP TC11/ WG11.3 Fourteenth Annual Working Conference on Database Security: Data and Application Security, Development and Directions
Intensional polymorphism in type-erasure semantics
Journal of Functional Programming
A General Model for Authenticated Data Structures
Algorithmica
Authentication and integrity in outsourced databases
ACM Transactions on Storage (TOS)
First-class nonstandard interpretations by opening closures
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Introduction to Modern Cryptography (Chapman & Hall/Crc Cryptography and Network Security Series)
Introduction to Modern Cryptography (Chapman & Hall/Crc Cryptography and Network Security Series)
Optimal trade-off for Merkle tree traversal
Theoretical Computer Science
Certificate revocation and certificate update
SSYM'98 Proceedings of the 7th conference on USENIX Security Symposium - Volume 7
Proof-infused streams: enabling authentication of sliding window queries on streams
VLDB '07 Proceedings of the 33rd international conference on Very large data bases
Proceedings of the 15th ACM conference on Computer and communications security
On the cost of persistence and authentication in skip lists
WEA'07 Proceedings of the 6th international conference on Experimental algorithms
Time and space efficient algorithms for two-party authenticated data structures
ICICS'07 Proceedings of the 9th international conference on Information and communications security
Non-interactive verifiable computing: outsourcing computation to untrusted workers
CRYPTO'10 Proceedings of the 30th annual conference on Advances in cryptology
Efficient Authenticated Data Structures for Graph Connectivity and Geometric Search Problems
Algorithmica - Special issue: Algorithms, Combinatorics, & Geometry
Optimal verification of operations on dynamic sets
CRYPTO'11 Proceedings of the 31st annual conference on Advances in cryptology
An invariant cost model for the lambda calculus
CiE'06 Proceedings of the Second conference on Computability in Europe: logical Approaches to Computational Barriers
Certificate revocation and certificate update
IEEE Journal on Selected Areas in Communications
Pinocchio: Nearly Practical Verifiable Computation
SP '13 Proceedings of the 2013 IEEE Symposium on Security and Privacy
ZQL: a compiler for privacy-preserving data processing
SEC'13 Proceedings of the 22nd USENIX conference on Security
Hi-index | 0.00 |
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.