Nickolai Zeldovich

dblp:99/5780 · DBLP profile ↗
← Back
76ranked-venue papers
4as first author
12since 2021 · last 2025
0000-0003-0238-2703ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 44 · 2 first-author · 9 since 2021Systems, architecture and hardware · 14 · 1 first-authorSecurity and privacy · 12 · 3 since 2021Computer networks · 4 · 1 first-authorDatabases, data management, data science and information retrieval · 2Theory of computation · 1
YearPublicationVenuePosition
2025 PoWER Never Corrupts: Tool-Agnostic Verification of Crash Consistency and Corruption Detection
Hayley LeBlanc, Jacob R. Lorch, Chris Hawblitzel, Yiheng Tao, Nickolai Zeldovich, Vijay Chidambaram
OSDI6
2024 Probability from Possibility: Probabilistic Confidentiality for Storage Systems Under Nondeterminism
abstract
Nondeterminism, such as system crashes, poses an important challenge to the security of storage systems by making leakages possible through secret-dependent result probabilities. This paper proposes a new possibilistic confidentiality specification prohibiting such probabilistic leakages. Our specification is preserved under simulation to enable modularity and is sequentially compositional. We implemented our specification in a framework that contains structures to implement storage systems and prove their confidentiality in a modular fashion. On top of our framework, we implemented the first crash-safe file system with a termination-insensitive version of our specification and machine-checkable confidentiality proofs. Our evaluation shows that proving confidentiality incurs 9.2x proof overhead per line of implementation code. Both our framework and file system are implemented in Coq and extracted to Haskell to obtain an executable artifact.
Atalay Mert Ileri, Nickolai Zeldovich, Adam Chlipala, M. Frans Kaashoek
CSF2
2024 Modular Verification of Secure and Leakage-Free Systems: From Application Specification to Circuit-Level Implementation
abstract
Parfait is a framework for proving that an implementation of a hardware security module (HSM) leaks nothing more than what is mandated by an application specification. Parfait proofs cover the software and the hardware of an HSM, which catches bugs above the cycle-level digital circuit abstraction, including timing side channels. Parfait's contribution is a scalable approach to proving security and non-leakage by using intermediate levels of abstraction and relating them with transitive information-preserving refinement. This enables Parfait to use different techniques to verify the implementation at different levels of abstraction, reuse existing verified components such as CompCert, and automate parts of the proof, while still providing end-to-end guarantees. We use Parfait to verify four HSMs, including an ECDSA certificate-signing HSM and a password-hashing HSM, on top of the OpenTitan Ibex and PicoRV32 processors. Parfait provides strong guarantees for these HSMs: for instance, it proves that the ECDSA-on-Ibex HSM implementation---2,300 lines of code and 13,500 lines of Verilog---leaks nothing more than what is allowed by a 40-line specification of its behavior.
Anish Athalye, Henry Corrigan-Gibbs, M. Frans Kaashoek, Joseph Tassarotti, Nickolai Zeldovich
SOSP5
2023 Verifying vMVCC, a high-performance transaction library using multi-version concurrency control
Yun-Sheng Chang, Ralf Jung 0002, Upamanyu Sharma, Joseph Tassarotti, M. Frans Kaashoek, Nickolai Zeldovich
OSDI6
2023 Private Web Search with Tiptoe
abstract
Tiptoe is a private web search engine that allows clients to search over hundreds of millions of documents, while revealing no information about their search query to the search engine's servers. Tiptoe's privacy guarantee is based on cryptography alone; it does not require hardware enclaves or non-colluding servers. Tiptoe uses semantic embeddings to reduce the problem of private full-text search to private nearest-neighbor search. Then, Tiptoe implements private nearest-neighbor search with a new, high-throughput protocol based on linearly homomorphic encryption. Running on a 45-server cluster, Tiptoe can privately search over 360 million web pages with 145 core-seconds of server compute, 56.9 MiB of client-server communication (74% of which occurs before the client enters its search query), and 2.7 seconds of end-to-end latency. Tiptoe's search works best on conceptual queries ("knee pain") and less well on exact string matches ("123 Main Street, New York"). On the MS MARCO search-quality benchmark, Tiptoe ranks the best-matching result in position 7.7 on average. This is worse than a state-of-the-art, non-private neural search algorithm (average rank: 2.3), but is close to the classical tf-idf algorithm (average rank: 6.7). Finally, Tiptoe is extensible: it also supports private text-to-image search and, with minor modifications, it can search over audio, code, and more.
Alexandra Henzinger, Emma Dauterman, Henry Corrigan-Gibbs, Nickolai Zeldovich
SOSP4
2023 Grove: a Separation-Logic Library for Verifying Distributed Systems
abstract
Grove is a concurrent separation logic library for verifying distributed systems. Grove is the first to handle time-based leases, including their interaction with reconfiguration, crash recovery, thread-level concurrency, and unreliable networks. This paper uses Grove to verify several distributed system components written in Go, including vKV, a realistic distributed multi-threaded key-value store. vKV supports reconfiguration, primary/backup replication, and crash recovery, and uses leases to execute read-only requests on any replica. vKV achieves high performance (67--73% of Redis on a single core), scales with more cores and more backup replicas (achieving about 2× the throughput when going from 1 to 3 servers), and can safely execute reads while reconfiguring.
Upamanyu Sharma, Ralf Jung 0002, Joseph Tassarotti, M. Frans Kaashoek, Nickolai Zeldovich
SOSP5
2022 Verifying Hardware Security Modules with Information-Preserving Refinement
Anish Athalye, M. Frans Kaashoek, Nickolai Zeldovich
OSDI3
2022 Groove: Flexible Metadata-Private Messaging
Ludovic Barman, Moshe Kol, David Lazar, Yossi Gilad, Nickolai Zeldovich
OSDI5
2022 Verifying the DaisyNFS concurrent and crash-safe file system with sequential reasoning
Tej Chajed, Joseph Tassarotti, Mark Theng, M. Frans Kaashoek, Nickolai Zeldovich
OSDI5
2022 Aardvark: An Asynchronous Authenticated Dictionary with Applications to Account-based Cryptocurrencies
Derek Leung, Yossi Gilad, Sergey Gorbunov 0001, Leonid Reyzin, Nickolai Zeldovich
USENIX Security Symposium5
2021 GoJournal: a verified, concurrent, crash-safe journaling system
Tej Chajed, Joseph Tassarotti, Mark Theng, Ralf Jung 0002, M. Frans Kaashoek, Nickolai Zeldovich
OSDI6
2021 Compact Certificates of Collective Knowledge
abstract
We introduce compact certificate schemes, which allow any party to take a large number of signatures on a message M, by many signers of different weights, and compress them to a much shorter certificate. This certificate convinces the verifiers that signers with sufficient total weight signed M, even though the verifier will not see—let alone verify—all of the signatures. Thus, for example, a compact certificate can be used to prove that parties who jointly have a sufficient total account balance have attested to a given block in a blockchain.After defining compact certificates, we demonstrate an effi-cient compact certificate scheme. We then show how to implement such a scheme in a decentralized setting over an unreliable network and in the presence of adversarial parties who wish to disrupt certificate creation. Our evaluation shows that compact certificates are 50–280× smaller and 300–4000 cheaper to verify than a natural baseline approach.
Silvio Micali, Leonid Reyzin, Georgios Vlachos, Riad S. Wahby, Nickolai Zeldovich
SP5
2020 Efficiently Mitigating Transient Execution Attacks using the Unmapped Speculation Contract
Jonathan Behrens, Anton Cao, Cel Skeggs, Adam Belay, M. Frans Kaashoek, Nickolai Zeldovich
OSDI6
2019 Vault: Fast Bootstrapping for the Algorand Cryptocurrency
Derek Leung, Adam Suhl, Yossi Gilad, Nickolai Zeldovich
NDSS4
2019 Argosy: verifying layered storage systems with recovery refinement
abstract
Storage systems make persistence guarantees even if the system crashes at any time, which they achieve using recovery procedures that run after a crash. We present Argosy, a framework for machine-checked proofs of storage systems that supports layered recovery implementations with modular proofs. Reasoning about layered recovery procedures is especially challenging because the system can crash in the middle of a more abstract layer’s recovery procedure and must start over with the lowest-level recovery procedure.
Tej Chajed, Joseph Tassarotti, M. Frans Kaashoek, Nickolai Zeldovich
PLDI4
2019 Notary: a device for secure transaction approval
abstract
Notary is a new hardware and software architecture for running isolated approval agents in the form factor of a USB stick with a small display and buttons. Approval agents allow factoring out critical security decisions, such as getting the user's approval to sign a Bitcoin transaction or to delete a backup, to a secure environment. The key challenge addressed by Notary is to securely switch between agents on the same device. Prior systems either avoid the problem by building single-function devices like a USB U2F key, or they provide weak isolation that is susceptible to kernel bugs, side channels, or Rowhammer-like attacks. Notary achieves strong isolation using reset-based switching, along with the use of physically separate systems-on-a-chip for agent code and for the kernel, and a machine-checked proof of both the hardware's register-transfer-level design and software, showing that reset-based switching leaks no state. Notary also provides a trustworthy I/O path between the agent code and the user, which prevents an adversary from tampering with the user's screen or buttons.
Anish Athalye, Adam Belay, M. Frans Kaashoek, Robert Morris 0005, Nickolai Zeldovich
SOSP5
2019 Verifying concurrent, crash-safe systems with Perennial
abstract
This paper introduces Perennial, a framework for verifying concurrent, crash-safe systems. Perennial extends the Iris concurrency framework with three techniques to enable crash-safety reasoning: recovery leases, recovery helping, and versioned memory. To ease development and deployment of applications, Perennial provides Goose, a subset of Go and a translator from that subset to a model in Perennial with support for reasoning about Go threads, data structures, and file-system primitives. We implemented and verified a crash-safe, concurrent mail server using Perennial and Goose that achieves speedup on multiple cores. Both Perennial and Iris use the Coq proof assistant, and the mail server and the framework's proofs are machine checked.
Tej Chajed, Joseph Tassarotti, M. Frans Kaashoek, Nickolai Zeldovich
SOSP4
2019 Yodel: strong metadata security for voice calls
abstract
Yodel is the first system for voice calls that hides metadata (e.g., who is communicating with whom) from a powerful adversary that controls the network and compromises servers. Voice calls require sub-second message latency, but low latency has been difficult to achieve in prior work where processing each message requires an expensive public key operation at each hop in the network. Yodel avoids this expense with the idea of self-healing circuits, reusable paths through a mix network that use only fast symmetric cryptography. Once created, these circuits are resilient to passive and active attacks from global adversaries. Creating and connecting to these circuits without leaking metadata is another challenge that Yodel addresses with the idea of guarded circuit exchange, where each user creates a backup circuit in case an attacker tampers with their traffic. We evaluate Yodel across the internet and it achieves acceptable voice quality with 990 ms of latency for 5 million simulated users.
David Lazar, Yossi Gilad, Nickolai Zeldovich
SOSP3
2018 Veil: Private Browsing Semantics Without Browser-side Assistance
Frank Wang, James W. Mickens, Nickolai Zeldovich
NDSS3
2018 Verifying concurrent software using movers in CSPEC
Tej Chajed, M. Frans Kaashoek, Butler W. Lampson, Nickolai Zeldovich
OSDI4
2018 Proving confidentiality in a file system using DiskSec
Atalay Mert Ileri, Tej Chajed, Adam Chlipala, M. Frans Kaashoek, Nickolai Zeldovich
OSDI5
2018 Karaoke: Distributed Private Messaging Immune to Passive Traffic Analysis
David Lazar, Yossi Gilad, Nickolai Zeldovich
OSDI3
2017 Scaling a file system to many cores using an operation log
abstract
It is challenging to simultaneously achieve multicore scalability and high disk throughput in a file system. For example, even for commutative operations like creating different files in the same directory, current file systems introduce cache-line conflicts when updating an in-memory copy of the on-disk directory block, which limits scalability.
Srivatsa S. Bhat, Rasha Eqbal, Austin T. Clements, M. Frans Kaashoek, Nickolai Zeldovich
SOSP5
2017 Verifying a high-performance crash-safe file system using a tree specification
abstract
DFSCQ is the first file system that (1) provides a precise specification for fsync and fdatasync, which allow applications to achieve high performance and crash safety, and (2) provides a machine-checked proof that its implementation meets this specification. DFSCQ's specification captures the behavior of sophisticated optimizations, including log-bypass writes, and DFSCQ's proof rules out some of the common bugs in file-system implementations despite the complex optimizations.
Haogang Chen 0001, Tej Chajed, Alex Konradi, Stephanie Wang, Atalay Mert Ileri, Adam Chlipala, M. Frans Kaashoek, Nickolai Zeldovich
SOSP8
2017 Algorand: Scaling Byzantine Agreements for Cryptocurrencies
abstract
Algorand is a new cryptocurrency that confirms transactions with latency on the order of a minute while scaling to many users. Algorand ensures that users never have divergent views of confirmed transactions, even if some of the users are malicious and the network is temporarily partitioned. In contrast, existing cryptocurrencies allow for temporary forks and therefore require a long time, on the order of an hour, to confirm transactions with high confidence.
Yossi Gilad, Rotem Hemo, Silvio Micali, Georgios Vlachos, Nickolai Zeldovich
SOSP5
2017 Stadium: A Distributed Metadata-Private Messaging System
abstract
Private communication over the Internet remains a challenging problem. Even if messages are encrypted, it is hard to deliver them without revealing metadata about which pairs of users are communicating. Scalable anonymity systems, such as Tor, are susceptible to traffic analysis attacks that leak metadata. In contrast, the largest-scale systems with metadata privacy require passing all messages through a small number of providers, requiring a high operational cost for each provider and limiting their deployability in practice.
Nirvan Tyagi, Yossi Gilad, Derek Leung, Matei Zaharia, Nickolai Zeldovich
SOSP5
2016 Sieve: Cryptographically Enforced Access Control for User Data in Untrusted Clouds
Frank Wang, James W. Mickens, Nickolai Zeldovich, Vinod Vaikuntanathan
NSDI3
2016 Alpenhorn: Bootstrapping Secure Communication without Leaking Metadata
David Lazar, Nickolai Zeldovich
OSDI2
2016 Using Crash Hoare Logic for Certifying the FSCQ File System
Haogang Chen 0001, Daniel Ziegler 0002, Tej Chajed, Adam Chlipala, M. Frans Kaashoek, Nickolai Zeldovich
USENIX ATC6
2015 Hare: a file system for non-cache-coherent multicores
abstract
Hare is a new file system that provides a POSIX-like interface on multicore processors without cache coherence. Hare allows applications on different cores to share files, directories, and file descriptors. The challenge in designing Hare is to support the shared abstractions faithfully enough to run applications that run on traditional shared-memory operating systems, with few modifications, and to do so while scaling with an increasing number of cores.
Charles Gruenwald III, Filippo Sironi, M. Frans Kaashoek, Nickolai Zeldovich
EuroSys4
2015 Amber: Decoupling User Data from Web Applications
Tej Chajed, Jon Gjengset, Jelle van den Hooff, M. Frans Kaashoek, James W. Mickens, Robert Morris 0005, Nickolai Zeldovich
HotOS7
2015 Specifying Crash Safety for Storage Systems
Haogang Chen 0001, Daniel Ziegler 0002, Adam Chlipala, M. Frans Kaashoek, Eddie Kohler, Nickolai Zeldovich
HotOS6
2015 Using Crash Hoare logic for certifying the FSCQ file system
abstract
FSCQ is the first file system with a machine-checkable proof (using the Coq proof assistant) that its implementation meets its specification and whose specification includes crashes. FSCQ provably avoids bugs that have plagued previous file systems, such as performing disk writes without sufficient barriers or forgetting to zero out directory blocks. If a crash happens at an inopportune time, these bugs can lead to data loss. FSCQ's theorems prove that, under any sequence of crashes followed by reboots, FSCQ will recover the file system correctly without losing data.
Haogang Chen 0001, Daniel Ziegler 0002, Tej Chajed, Adam Chlipala, M. Frans Kaashoek, Nickolai Zeldovich
SOSP6
2015 Vuvuzela: scalable private messaging resistant to traffic analysis
abstract
Private messaging over the Internet has proven challenging to implement, because even if message data is encrypted, it is difficult to hide metadata about who is communicating in the face of traffic analysis. Systems that offer strong privacy guarantees, such as Dissent [36], scale to only several thousand clients, because they use techniques with superlinear cost in the number of clients (e.g., each client broadcasts their message to all other clients). On the other hand, scalable systems, such as Tor, do not protect against traffic analysis, making them ineffective in an era of pervasive network monitoring.
Jelle van den Hooff, David Lazar, Matei Zaharia, Nickolai Zeldovich
SOSP4
2015 The Scalable Commutativity Rule: Designing Scalable Software for Multicore Processors
abstract
What opportunities for multicore scalability are latent in software interfaces, such as system call APIs? Can scalability challenges and opportunities be identified even before any implementation exists, simply by considering interface specifications? To answer these questions, we introduce the scalable commutativity rule: whenever interface operations commute, they can be implemented in a way that scales. This rule is useful throughout the development process for scalable multicore software, from the interface design through implementation, testing, and evaluation. This article formalizes the scalable commutativity rule. This requires defining a novel form of commutativity, SIM commutativity , that lets the rule apply even to complex and highly stateful software interfaces. We also introduce a suite of software development tools based on the rule. Our Commuter tool accepts high-level interface models, generates tests of interface operations that commute and hence could scale, and uses these tests to systematically evaluate the scalability of implementations. We apply Commuter to a model of 18 POSIX file and virtual memory system operations. Using the resulting 26,238 scalability tests, Commuter highlights Linux kernel problems previously observed to limit application scalability and identifies previously unknown bottlenecks that may be triggered by future workloads or hardware. Finally, we apply the scalable commutativity rule and Commuter to the design and implementation sv6, a new POSIX-like operating system. sv6’s novel file and virtual memory system designs enable it to scale for 99% of the tests generated by Commuter . These results translate to linear scalability on an 80-core x86 machine for applications built on sv6’s commutative operations.
Austin T. Clements, M. Frans Kaashoek, Nickolai Zeldovich, Robert T. Morris, Eddie Kohler
ACM Trans. Comput. Syst.3
2015 A Differential Approach to Undefined Behavior Detection
abstract
This article studies undefined behavior arising in systems programming languages such as C/C++. Undefined behavior bugs lead to unpredictable and subtle systems behavior, and their effects can be further amplified by compiler optimizations. Undefined behavior bugs are present in many systems, including the Linux kernel and the Postgres database. The consequences range from incorrect functionality to missing security checks. This article proposes a formal and practical approach that finds undefined behavior bugs by finding “unstable code” in terms of optimizations that leverage undefined behavior. Using this approach, we introduce a new static checker called S tack that precisely identifies undefined behavior bugs. Applying S tack to widely used systems has uncovered 161 new bugs that have been confirmed and fixed by developers.
Xi Wang 0005, Nickolai Zeldovich, M. Frans Kaashoek, Armando Solar-Lezama
ACM Trans. Comput. Syst.2
2014 VerSum: Verifiable Computations over Large Public Logs
abstract
VerSum allows lightweight clients to outsource expensive computations over large and frequently changing data structures, such as the Bitcoin or Namecoin blockchains, or a Certificate Transparency log. VerSum clients ensure that the output is correct by comparing the outputs from multiple servers. VerSum assumes that at least one server is honest, and crucially, when servers disagree, VerSum uses an efficient conflict resolution protocol to determine which server(s) made a mistake and thus obtain the correct output.
Jelle van den Hooff, M. Frans Kaashoek, Nickolai Zeldovich
CCS3
2014 Building Web Applications on Top of Encrypted Data Using Mylar
Raluca A. Popa, Emily Stark 0001, Steven Valdez, Jonas Helfer, Nickolai Zeldovich, Hari Balakrishnan
NSDI5
2014 Nail: A Practical Tool for Parsing and Generating Data Formats
Julian Bangert, Nickolai Zeldovich
OSDI2
2014 Identifying Information Disclosure in Web Applications with Retroactive Auditing
Haogang Chen 0001, Taesoo Kim, Xi Wang 0005, Nickolai Zeldovich, M. Frans Kaashoek
OSDI4
2014 Jitk: A Trustworthy In-Kernel Interpreter Infrastructure
Xi Wang 0005, David Lazar, Nickolai Zeldovich, Adam Chlipala, Zachary Tatlock
OSDI3
2013 How to Run Turing Machines on Encrypted Data
Shafi Goldwasser, Yael Tauman Kalai, Raluca A. Popa, Vinod Vaikuntanathan, Nickolai Zeldovich
CRYPTO (2)5
2013 RadixVM: scalable address spaces for multithreaded applications
abstract
RadixVM is a new virtual memory system design that enables fully concurrent operations on shared address spaces for multithreaded processes on cache-coherent multicore computers. Today, most operating systems serialize operations such as mmap and munmap, which forces application developers to split their multithreaded applications into multiprocess applications, hoard memory to avoid the overhead of returning it, and so on. RadixVM removes this burden from application developers by ensuring that address space operations on non-overlapping memory regions scale perfectly. It does so by combining three techniques: 1) it organizes metadata in a radix tree instead of a balanced tree to avoid unnecessary cache line movement; 2) it uses a novel memory-efficient distributed reference counting scheme; and 3) it uses a new scheme to target remote TLB shootdowns and to often avoid them altogether. Experiments on an 80 core machine show that RadixVM achieves perfect scalability for non-overlapping regions: if several threads mmap or munmap pages in parallel, they can run completely independently and induce no cache coherence traffic.
Austin T. Clements, M. Frans Kaashoek, Nickolai Zeldovich
EuroSys3
2013 Systematic Analysis of Defenses against Return-Oriented Programming
Richard Skowyra, Kelly Casteel, Hamed Okhravi, Nickolai Zeldovich, William W. Streilein
RAID4
2013 Asynchronous intrusion recovery for interconnected web services
abstract
Recovering from attacks in an interconnected system is difficult, because an adversary that gains access to one part of the system may propagate to many others, and tracking down and recovering from such an attack requires significant manual effort. Web services are an important example of an interconnected system, as they are increasingly using protocols such as OAuth and REST APIs to integrate with one another. This paper presents Aire, an intrusion recovery system for such web services. Aire addresses several challenges, such as propagating repair across services when some servers may be unavailable, and providing appropriate consistency guarantees when not all servers have been repaired yet. Experimental results show that Aire can recover from four realistic attacks, including one modeled after a recent Facebook OAuth vulnerability; that porting existing applications to Aire requires little effort; and that Aire imposes a 19--30% CPU overhead and 6--9 KB/request storage cost for Askbot, an existing web application.
Ramesh Chandra, Taesoo Kim, Nickolai Zeldovich
SOSP3
2013 The scalable commutativity rule: designing scalable software for multicore processors
abstract
What fundamental opportunities for scalability are latent in interfaces, such as system call APIs? Can scalability opportunities be identified even before any implementation exists, simply by considering interface specifications? To answer these questions this paper introduces the following rule: Whenever interface operations commute, they can be implemented in a way that scales. This rule aids developers in building more scalable software starting from interface design and carrying on through implementation, testing, and evaluation.
Austin T. Clements, M. Frans Kaashoek, Nickolai Zeldovich, Robert T. Morris, Eddie Kohler
SOSP3
2013 Towards optimization-safe systems: analyzing the impact of undefined behavior
abstract
This paper studies an emerging class of software bugs called optimization-unstable code: code that is unexpectedly discarded by compiler optimizations due to undefined behavior in the program. Unstable code is present in many systems, including the Linux kernel and the Postgres database. The consequences of unstable code range from incorrect functionality to missing security checks.
Xi Wang 0005, Nickolai Zeldovich, M. Frans Kaashoek, Armando Solar-Lezama
SOSP2
2013 An Ideal-Security Protocol for Order-Preserving Encoding
abstract
Order-preserving encryption - an encryption scheme where the sort order of ciphertexts matches the sort order of the corresponding plaintexts - allows databases and other applications to process queries involving order over encrypted data efficiently. The ideal security guarantee for order-preserving encryption put forth in the literature is for the ciphertexts to reveal no information about the plaintexts besides order. Even though more than a dozen schemes were proposed, all these schemes leak more information than order. This paper presents the first order-preserving scheme that achieves ideal security. Our main technique is mutable ciphertexts, meaning that over time, the ciphertexts for a small number of plaintext values change, and we prove that mutable ciphertexts are needed for ideal security. Our resulting protocol is interactive, with a small number of interactions. We implemented our scheme and evaluated it on microbenchmarks and in the context of an encrypted MySQL database application. We show that in addition to providing ideal security, our scheme achieves 1 - 2 orders of magnitude higher performance than the state-of-the-art order-preserving encryption scheme, which is less secure than our scheme.
Raluca A. Popa, Frank Li 0001, Nickolai Zeldovich
IEEE Symposium on Security and Privacy3
2013 Reusable garbled circuits and succinct functional encryption
abstract
Garbled circuits, introduced by Yao in the mid 80s, allow computing a function f on an input x without leaking anything about f or x besides f(x). Garbled circuits found numerous applications, but every known construction suffers from one limitation: it offers no security if used on multiple inputs x. In this paper, we construct for the first time reusable garbled circuits. The key building block is a new succinct single-key functional encryption scheme.
Shafi Goldwasser, Yael Tauman Kalai, Raluca A. Popa, Vinod Vaikuntanathan, Nickolai Zeldovich
STOC5
2013 Practical and Effective Sandboxing for Non-root Users
Taesoo Kim, Nickolai Zeldovich
USENIX ATC2
2013 Processing Analytical Queries over Encrypted Data
abstract
MONOMI is a system for securely executing analytical workloads over sensitive data on an untrusted database server. MONOMI works by encrypting the entire database and running queries over the encrypted data. MONOMI introduces split client/server query execution, which can execute arbitrarily complex queries over encrypted data, as well as several techniques that improve performance for such workloads, including per-row precomputation, space-efficient encryption, grouped homomorphic addition, and pre-filtering. Since these optimizations are good for some queries but not others, MONOMI introduces a designer for choosing an efficient physical design at the server for a given workload, and a planner to choose an efficient execution plan for a given query at runtime. A prototype of MONOMI running on top of Postgres can execute most of the queries from the TPC-H benchmark with a median overhead of only 1.24× (ranging from 1.03×to 2.33×) compared to an un-encrypted Postgres database where a compromised server would reveal all data.
Stephen Tu, M. Frans Kaashoek, Samuel Madden 0001, Nickolai Zeldovich
Proc. VLDB Endow.4
2012 Scalable address spaces using RCU balanced trees
abstract
Software developers commonly exploit multicore processors by building multithreaded software in which all threads of an application share a single address space. This shared address space has a cost: kernel virtual memory operations such as handling soft page faults, growing the address space, mapping files, etc. can limit the scalability of these applications. In widely-used operating systems, all of these operations are synchronized by a single per-process lock. This paper contributes a new design for increasing the concurrency of kernel operations on a shared address space by exploiting read-copy-update (RCU) so that soft page faults can both run in parallel with operations that mutate the same address space and avoid contending with other page faults on shared cache lines. To enable such parallelism, this paper also introduces an RCU-based binary balanced tree for storing memory mappings. An experimental evaluation using three multithreaded applications shows performance improvements on 80 cores ranging from 1.7x to 3.4x for an implementation of this design in the Linux 2.6.37 kernel. The RCU-based binary tree enables soft page faults to run at a constant cost with an increasing number of cores,suggesting that the design will scale well beyond 80 cores.
Austin T. Clements, M. Frans Kaashoek, Nickolai Zeldovich
ASPLOS3
2012 Improving network connection locality on multicore systems
abstract
Incoming and outgoing processing for a given TCP connection often execute on different cores: an incoming packet is typically processed on the core that receives the interrupt, while outgoing data processing occurs on the core running the relevant user code. As a result, accesses to read/write connection state (such as TCP control blocks) often involve cache invalidations and data movement between cores' caches. These can take hundreds of processor cycles, enough to significantly reduce performance.
Aleksey Pesterev, Jacob Strauss, Nickolai Zeldovich, Robert T. Morris
EuroSys3
2012 Efficient Patch-based Auditing for Web Application Vulnerabilities
Taesoo Kim, Ramesh Chandra, Nickolai Zeldovich
OSDI3
2012 Improving Integer Security for Systems with KINT
Xi Wang 0005, Haogang Chen 0001, Nickolai Zeldovich, M. Frans Kaashoek
OSDI4
2012 CPHASH: a cache-partitioned hash table
abstract
CPHash is a concurrent hash table for multicore processors. CPHash partitions its table across the caches of cores and uses message passing to transfer lookups/inserts to a partition. CPHash's message passing avoids the need for locks, pipelines batches of asynchronous messages, and packs multiple messages into a single cache line transfer. Experiments on a 80-core machine with 2 hardware threads per core show that CPHash has ~1.6x higher throughput than a hash table implemented using fine-grained locks. An analysis shows that CPHash wins because it experiences fewer cache misses and its cache misses are less expensive, because of less contention for the on-chip interconnect and DRAM. CPServer, a key/value cache server using CPHash, achieves ~5% higher throughput than a key/value cache server that uses a hash table with fine-grained locks, but both achieve better throughput and scalability than memcached. The throughput of CPHash and CPServer also scale near-linearly with the number of cores.
Zviad Metreveli, Nickolai Zeldovich, M. Frans Kaashoek
PPoPP2
2011 Relational Cloud: a Database Service for the cloud
Carlo Curino, Evan P. C. Jones, Raluca A. Popa, Nirmesh Malviya, Eugene Wu 0002, Samuel Madden 0001, Hari Balakrishnan, Nickolai Zeldovich
CIDR8
2011 Energy management in mobile devices with the cinder operating system
abstract
We argue that controlling energy allocation is an increasingly useful and important feature for operating systems, especially on mobile devices. We present two new low-level abstractions in the Cinder operating system, reserves and taps, which store and distribute energy for application use. We identify three key properties of control -- isolation, delegation, and subdivision -- and show how using these abstractions can achieve them. We also show how the architecture of the HiStar information-flow control kernel lends itself well to energy control. We prototype and evaluate Cinder on a popular smartphone, the Android G1.
Stephen M. Rumble, Ryan Stutsman, Philip Alexander Levis, David Mazières, Nickolai Zeldovich
EuroSys6
2011 A Trigger-Based Middleware Cache for ORMs
Nickolai Zeldovich, Samuel Madden 0001
Middleware2
2011 Intrusion recovery for database-backed web applications
abstract
Warp is a system that helps users and administrators of web applications recover from intrusions such as SQL injection, cross-site scripting, and clickjacking attacks, while preserving legitimate user changes. Warp repairs from an intrusion by rolling back parts of the database to a version before the attack, and replaying subsequent legitimate actions. Warp allows administrators to retroactively patch security vulnerabilities---i.e., apply new security patches to past executions---to recover from intrusions without requiring the administrator to track down or even detect attacks. Warp's time-travel database allows fine-grained rollback of database rows, and enables repair to proceed concurrently with normal operation of a web application. Finally, Warp captures and replays user input at the level of a browser's DOM, to recover from attacks that involve a user's browser. For a web server running MediaWiki, Warp requires no application source code changes to recover from a range of common web application vulnerabilities with minimal user input at a cost of 24--27% in throughput and 2--3.2 GB/day in storage.
Ramesh Chandra, Taesoo Kim, Meelap Shah, Neha Narula, Nickolai Zeldovich
SOSP5
2011 Software fault isolation with API integrity and multi-principal modules
abstract
The security of many applications relies on the kernel being secure, but history suggests that kernel vulnerabilities are routinely discovered and exploited. In particular, exploitable vulnerabilities in kernel modules are common. This paper proposes LXFI, a system which isolates kernel modules from the core kernel so that vulnerabilities in kernel modules cannot lead to a privilege escalation attack. To safely give kernel modules access to complex kernel APIs, LXFI introduces the notion of API integrity, which captures the set of contracts assumed by an interface. To partition the privileges within a shared module, LXFI introduces module principals. Programmers specify principals and API integrity rules through capabilities and annotations. Using a compiler plugin, LXFI instruments the generated code to grant, check, and transfer capabilities between modules, according to the programmer's annotations. An evaluation with Linux shows that the annotations required on kernel functions to support a new module are moderate, and that LXFI is able to prevent three known privilege-escalation vulnerabilities. Stress tests of a network driver module also show that isolating this module using LXFI does not hurt TCP throughput but reduces UDP throughput by 35%, and increases CPU utilization by 2.2-3.7x.
Yandong Mao, Haogang Chen 0001, Dong Zhou 0006, Xi Wang 0005, Nickolai Zeldovich, M. Frans Kaashoek
SOSP5
2011 CryptDB: protecting confidentiality with encrypted query processing
abstract
Online applications are vulnerable to theft of sensitive information because adversaries can exploit software bugs to gain access to private data, and because curious or malicious administrators may capture and leak data. CryptDB is a system that provides practical and provable confidentiality in the face of these attacks for applications backed by SQL databases. It works by executing SQL queries over encrypted data using a collection of efficient SQL-aware encryption schemes. CryptDB can also chain encryption keys to user passwords, so that a data item can be decrypted only by using the password of one of the users with access to that data. As a result, a database administrator never gets access to decrypted data, and even if all servers are compromised, an adversary cannot decrypt the data of any user who is not logged in. An analysis of a trace of 126 million SQL queries from a production MySQL server shows that CryptDB can support operations over encrypted data for 99.5% of the 128,840 columns seen in the trace. Our evaluation shows that CryptDB has low overhead, reducing throughput by 14.5% for phpBB, a web forum application, and by 26% for queries from TPC-C, compared to unmodified MySQL. Chaining encryption keys to user passwords requires 11--13 unique schema annotations to secure more than 20 sensitive fields and 2--7 lines of source code changes for three multi-user web applications.
Raluca A. Popa, Catherine M. S. Redfield, Nickolai Zeldovich, Hari Balakrishnan
SOSP3
2011 Secure In-Band Wireless Pairing
Shyamnath Gollakota, Nabeel Ahmed, Nickolai Zeldovich, Dina Katabi
USENIX Security Symposium3
2010 Locating cache performance bottlenecks using data profiling
abstract
Effective use of CPU data caches is critical to good performance, but poor cache use patterns are often hard to spot using existing execution profiling tools. Typical profilers attribute costs to specific code locations. The costs due to frequent cache misses on a given piece of data, however, may be spread over instructions throughout the application. The resulting individually small costs at a large number of instructions can easily appear insignificant in a code profiler's output. DProf helps programmers understand cache miss costs by attributing misses to data types instead of code. Associating cache misses with data helps programmers locate data structures that experience misses in many places in the application's code. DProf introduces a number of new views of cache miss data, including a data profile, which reports the data types with the most cache misses, and a data flow graph, which summarizes how objects of a given type are accessed throughout their lifetime, and which accesses incur expensive cross-CPU cache loads. We present two case studies of using DProf to find and fix cache performance bottlenecks in Linux. The improvements provide a 16-57% throughput improvement on a range of memcached and Apache workloads.
Aleksey Pesterev, Nickolai Zeldovich, Robert T. Morris
EuroSys2
2010 An Analysis of Linux Scalability to Many Cores
Silas Boyd-Wickizer, Austin T. Clements, Yandong Mao, Aleksey Pesterev, M. Frans Kaashoek, Robert Morris 0005, Nickolai Zeldovich
OSDI7
2010 Intrusion Recovery Using Selective Re-execution
Taesoo Kim, Xi Wang 0005, Nickolai Zeldovich, M. Frans Kaashoek
OSDI3
2010 Tolerating Malicious Device Drivers in Linux
Silas Boyd-Wickizer, Nickolai Zeldovich
USENIX ATC2
2010 Making Linux Protection Mechanisms Egalitarian with UserFS
Taesoo Kim, Nickolai Zeldovich
USENIX Security Symposium2
2009 Improving application security with data flow assertions
abstract
Resin is a new language runtime that helps prevent security vulnerabilities, by allowing programmers to specify application-level data flow assertions. Resin provides policy objects, which programmers use to specify assertion code and metadata; data tracking, which allows programmers to associate assertions with application data, and to keep track of assertions as the data flow through the application; and filter objects, which programmers use to define data flow boundaries at which assertions are checked. Resin's runtime checks data flow assertions by propagating policy objects along with data, as that data moves through the application, and then invoking filter objects when data crosses a data flow boundary, such as when writing data to the network or a file.
Alexander Yip, Xi Wang 0005, Nickolai Zeldovich, M. Frans Kaashoek
SOSP3
2009 Nemesis: Preventing Authentication & Access Control Vulnerabilities in Web Applications
Michael Dalton, Christoforos E. Kozyrakis, Nickolai Zeldovich
USENIX Security Symposium3
2008 Securing Distributed Systems with Information Flow Control
Nickolai Zeldovich, Silas Boyd-Wickizer, David Mazières
NSDI1
2008 Hardware Enforcement of Application Security Policies Using Tagged Memory
Nickolai Zeldovich, Hari Kannan, Michael Dalton, Christoforos E. Kozyrakis
OSDI1
2006 Making Information Flow Explicit in HiStar
Nickolai Zeldovich, Silas Boyd-Wickizer, Eddie Kohler, David Mazières
OSDI1
2005 The Collective: A Cache-Based System Management Architecture
Ramesh Chandra, Nickolai Zeldovich, Constantine P. Sapuntzakis, Monica S. Lam
NSDI2
2003 Virtual Appliances for Deploying and Maintaining Software
Constantine P. Sapuntzakis, David Brumley, Ramesh Chandra, Nickolai Zeldovich, Jim Chow, Monica S. Lam, Mendel Rosenblum
LISA4
2003 Multiprocessor Support for Event-Driven Programs
Nickolai Zeldovich, Alexander Yip, Frank Dabek, Robert T. Morris, David Mazières, M. Frans Kaashoek
USENIX ATC, General Track1