Jon Howell

dblp:55/3274 · DBLP profile ↗
← Back
41ranked-venue papers
7as first author
10since 2021 · last 2024
0000-0002-1781-2473ORCID · corroborated

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

Software engineering, systems software and programming languages · 21 · 2 first-author · 9 since 2021Systems, architecture and hardware · 10 · 3 first-author · 1 since 2021Computer networks · 4 · 1 first-authorSecurity and privacy · 4 · 1 first-authorArtificial intelligence and machine learning · 2 · 1 first-authorHuman-computer interaction and ubiquitous computing · 2Databases, data management, data science and information retrieval · 1Applied, interdisciplinary, general and emerging computing · 1
YearPublicationVenuePosition
2024 Anvil: Verifying Liveness of Cluster Management Controllers
Xudong Sun 0013, Jiawei Tyler Gu, Zicheng Ma, Tej Chajed, Jon Howell, Andrea Lattuada 0001, Oded Padon, Lalith Suresh 0001, Adriana Szekeres, Tianyin Xu
OSDI6
2024 Verus: A Practical Foundation for Systems Verification
abstract
Formal verification is a promising approach to eliminate bugs at compile time, before they ship. Indeed, our community has verified a wide variety of system software. However, much of this success has required heroic developer effort, relied on bespoke logics for individual domains, or sacrificed expressiveness for powerful proof automation.
Andrea Lattuada 0001, Travis Hance, Jay Bosamiya, Matthias Brun 0002, Chanhee Cho, Hayley LeBlanc, Pranav Srinivasan, Reto Achermann, Tej Chajed, Chris Hawblitzel, Jon Howell, Jacob R. Lorch, Oded Padon, Bryan Parno
SOSP11
2023 Beyond isolation: OS verification as a foundation for correct applications
abstract
Verified systems software has generally had to assume the correctness of the operating system and its provided services (like networking and the file system). Even though there exist verified operating systems and file systems, the specifications for these components do not compose with applications to produce a fully verified high-performance software stack.
Matthias Brun 0002, Reto Achermann, Tej Chajed, Jon Howell, Gerd Zellweger, Andrea Lattuada 0001
HotOS4
2023 Sharding the State Machine: Automated Modular Reasoning for Complex Concurrent Systems
Travis Hance, Yi Zhou 0025, Andrea Lattuada 0001, Reto Achermann, Alexander Conway 0001, Ryan Stutsman, Gerd Zellweger, Chris Hawblitzel, Jon Howell, Bryan Parno
OSDI9
2023 Leaf: Modularity for Temporary Sharing in Separation Logic
abstract
In concurrent verification, separation logic provides a strong story for handling both resources that are owned exclusively and resources that are shared persistently (i.e., forever). However, the situation is more complicated for temporarily shared state, where state might be shared and then later reclaimed as exclusive. We believe that a framework for temporarily-shared state should meet two key goals not adequately met by existing techniques. One, it should allow and encourage users to verify new sharing strategies. Two, it should provide an abstraction where users manipulate shared state in a way agnostic to the means with which it is shared. We present Leaf, a library in the Iris separation logic which accomplishes both of these goals by introducing a novel operator, which we call guarding, that allows one proposition to represent a shared version of another. We demonstrate that Leaf meets these two goals through a modular case study: we verify a reader-writer lock that supports shared state, and a hash table built on top of it that uses shared state.
Travis Hance, Jon Howell, Oded Padon, Bryan Parno
Proc. ACM Program. Lang.2
2023 Verus: Verifying Rust Programs using Linear Ghost Types
abstract
The Rust programming language provides a powerful type system that checks linearity and borrowing, allowing code to safely manipulate memory without garbage collection and making Rust ideal for developing low-level, high-assurance systems. For such systems, formal verification can be useful to prove functional correctness properties beyond type safety. This paper presents Verus, an SMT-based tool for formally verifying Rust programs. With Verus, programmers express proofs and specifications using the Rust language, allowing proofs to take advantage of Rust's linear types and borrow checking. We show how this allows proofs to manipulate linearly typed permissions that let Rust code safely manipulate memory, pointers, and concurrent resources. Verus organizes proofs and specifications using a novel mode system that distinguishes specifications, which are not checked for linearity and borrowing, from executable code and proofs, which are checked for linearity and borrowing. We formalize Verus' linearity, borrowing, and modes in a small lambda calculus, for which we prove type safety and termination of specifications and proofs. We demonstrate Verus on a series of examples, including pointer-manipulating code (an xor-based doubly linked list), code with interior mutability, and concurrent code.
Andrea Lattuada 0001, Travis Hance, Chanhee Cho, Matthias Brun 0002, Isitha Subasinghe, Yi Zhou 0025, Jon Howell, Bryan Parno, Chris Hawblitzel
Proc. ACM Program. Lang.7
2023 Counterexample Driven Quantifier Instantiations with Applications to Distributed Protocols
abstract
Formally verifying infinite-state systems can be a daunting task, especially when it comes to reasoning about quantifiers. In particular, quantifier alternations in conjunction with function symbols can create function cycles that result in infinitely many ground terms, making it difficult for solvers to instantiate quantifiers and causing them to diverge. This can leave users with no useful information on how to proceed. To address this issue, we propose an interactive verification methodology that uses a relational abstraction technique to mitigate solver divergence in the presence of quantifiers. This technique abstracts functions in the verification conditions (VCs) as one-to-one relations, which avoids the creation of function cycles and the resulting proliferation of ground terms. Relational abstraction is sound and guarantees correctness if the solver cannot find counter-models. However, it may also lead to false counterexamples, which can be addressed by refining the abstraction and requiring the existence of corresponding elements. In the domain of distributed protocols, we can refine the abstraction by diagnosing counterexamples and manually instantiating elements in the range of the original function. If the verification conditions are correct, there always exist finitely many refinement steps that eliminate all spurious counter-models, making the approach complete. We applied this approach in Ivy to verify the safety properties of consensus protocols and found that: (1) most verification goals can be automatically verified using relational abstraction, while SMT solvers often diverge when given the original VC, (2) only a few manual instantiations were needed, and the counterexamples provided valuable guidance for the user compared to timeouts produced by the traditional approach, and (3) the technique can be used to derive efficient low-level implementations of tricky algorithms.
Orr Tamir, Marcelo Taube, Kenneth L. McMillan, Sharon Shoham, Jon Howell, Guy Golan-Gueta, Shmuel Sagiv
Proc. ACM Program. Lang.5
2022 Linear types for large-scale systems verification
abstract
Reasoning about memory aliasing and mutation in software verification is a hard problem. This is especially true for systems using SMT-based automated theorem provers. Memory reasoning in SMT verification typically requires a nontrivial amount of manual effort to specify heap invariants, as well as extensive alias reasoning from the SMT solver. In this paper, we present a hybrid approach that combines linear types with SMT-based verification for memory reasoning. We integrate linear types into Dafny, a verification language with an SMT backend, and show that the two approaches complement each other. By separating memory reasoning from verification conditions, linear types reduce the SMT solving time. At the same time, the expressiveness of SMT queries extends the flexibility of the linear type system. In particular, it allows our linear type system to easily and correctly mix linear and nonlinear data in novel ways, encapsulating linear data inside nonlinear data and vice-versa. We formalize the core of our extensions, prove soundness, and provide algorithms for linear type checking. We evaluate our approach by converting the implementation of a verified storage system (about 24K lines of code and proof) written in Dafny, to use our extended Dafny. The resulting system uses linear types for 91% of the code and SMT-based heap reasoning for the remaining 9%. We show that the converted system has 28% fewer lines of proofs and 30% shorter verification time overall. We discuss the development overhead in the original system due to SMT-based heap reasoning and highlight the improved developer experience when using linear types.
Jialin Li 0001, Andrea Lattuada 0001, Yi Zhou 0025, Jonathan Cameron, Jon Howell, Bryan Parno, Chris Hawblitzel
Proc. ACM Program. Lang.5
2021 An incremental path towards a safer OS kernel
abstract
Linux has become the de-facto operating system of our age, but its vulnerabilities are a constant threat to service availability, user privacy, and data integrity. While one might scrap Linux and start over, the cost of that would be prohibitive due to Linux's ubiquitous deployment. In this paper, we propose an alternative, incremental route to a safer Linux through proper modularization and gradual replacement module by module. We lay out the research challenges and potential solutions for this route, and discuss the open questions ahead.
Jialin Li 0001, Samantha Miller, Danyang Zhuo, Ang Chen 0001, Jon Howell, Thomas E. Anderson
HotOS5
2021 Introduction to the Special Section on USENIX OSDI 2020
abstract
No abstract available.
Jon Howell
ACM Trans. Storage2
2020 Storage Systems are Distributed Systems (So Verify Them That Way!)
Travis Hance, Andrea Lattuada 0001, Chris Hawblitzel, Jon Howell, Rob Johnson 0001, Bryan Parno
OSDI4
2016 Radiatus: a Shared-Nothing Server-Side Web Architecture
abstract
Web applications are a frequent target of successful attacks. In most web frameworks, the damage is amplified by the fact that application code is responsible for security enforcement. In this paper, we design and evaluate Radiatus, a shared-nothing web framework where application-specific computation and storage on the server is contained within a sandbox with the privileges of the end-user. By strongly isolating users, user data and service availability can be protected from application vulnerabilities.
Raymond Cheng 0001, William Scott 0002, Paul M. Ellenbogen, Jon Howell, Franziska Roesner, Arvind Krishnamurthy, Thomas E. Anderson
SoCC4
2016 Slicer: Auto-Sharding for Datacenter Applications
Atul Adya, Daniel Myers, Jon Howell, Jeremy Elson, Colin Meek, Vishesh Khemani, Stefan Fulger, Pan Gu, Lakshminath Bhuvanagiri, Jason Hunter, Roberto Peon, Larry Kai, Alexander Shraer, Arif Merchant, Kfir Lev-Ari
OSDI3
2015 IronFleet: proving practical distributed systems correct
abstract
Distributed systems are notorious for harboring subtle bugs. Verification can, in principle, eliminate these bugs a priori, but verification has historically been difficult to apply at full-program scale, much less distributed-system scale.
Chris Hawblitzel, Jon Howell, Manos Kapritsos, Jacob R. Lorch, Bryan Parno, Michael Lowell Roberts, Srinath Setty, Brian Zill
SOSP2
2015 Geppetto: Versatile Verifiable Computation
abstract
Cloud computing sparked interest in Verifiable Computation protocols, which allow a weak client to securely outsource computations to remote parties. Recent work has dramatically reduced the client's cost to verify the correctness of their results, but the overhead to produce proofs remains largely impractical. Geppetto introduces complementary techniques for reducing prover overhead and increasing prover flexibility. With Multi QAPs, Geppetto reduces the cost of sharing state between computations (e.g, For MapReduce) or within a single computation by up to two orders of magnitude. Via a careful choice of cryptographic primitives, Geppetto's instantiation of bounded proof bootstrapping improves on prior bootstrapped systems by up to five orders of magnitude, albeit at some cost in universality. Geppetto also efficiently verifies the correct execution of proprietary (i.e, Secret) algorithms. Finally, Geppetto's use of energy-saving circuits brings the prover's costs more in line with the program's actual (rather than worst-case) execution time. Geppetto is implemented in a full-fledged, scalable compiler and runtime that consume LLVM code generated from a variety of source C programs and cryptographic libraries.
Craig Costello, Cédric Fournet, Jon Howell, Markulf Kohlweiss, Ben Kreuter, Michael Naehrig, Bryan Parno, Samee Zahur
IEEE Symposium on Security and Privacy3
2014 Ironclad Apps: End-to-End Security via Automated Full-System Verification
Chris Hawblitzel, Jon Howell, Jacob R. Lorch, Arjun Narayan, Bryan Parno, Danfeng Zhang, Brian Zill
OSDI2
2014 Missive: Fast Application Launch From an Untrusted Buffer Cache
Jon Howell, Jeremy Elson, Bryan Parno, John R. Douceur
USENIX ATC1
2013 Embassies: Radically Refactoring the Web
Jon Howell, Bryan Parno, John R. Douceur
NSDI1
2013 Pinocchio: Nearly Practical Verifiable Computation
abstract
To instill greater confidence in computations outsourced to the cloud, clients should be able to verify the correctness of the results returned. To this end, we introduce Pinocchio, a built system for efficiently verifying general computations while relying only on cryptographic assumptions. With Pinocchio, the client creates a public evaluation key to describe her computation; this setup is proportional to evaluating the computation once. The worker then evaluates the computation on a particular input and uses the evaluation key to produce a proof of correctness. The proof is only 288 bytes, regardless of the computation performed or the size of the inputs and outputs. Anyone can use a public verification key to check the proof. Crucially, our evaluation on seven applications demonstrates that Pinocchio is efficient in practice too. Pinocchio's verification time is typically 10ms: 5-7 orders of magnitude less than previous work; indeed Pinocchio is the first general-purpose system to demonstrate verification cheaper than native execution (for some apps). Pinocchio also reduces the worker's proof effort by an additional 19-60x. As an additional feature, Pinocchio generalizes to zero-knowledge proofs at a negligible cost over the base protocol. Finally, to aid development, Pinocchio provides an end-to-end toolchain that compiles a subset of C into programs that implement the verifiable computation protocol.
Bryan Parno, Jon Howell, Craig Gentry, Mariana Raykova 0001
IEEE Symposium on Security and Privacy2
2013 How to Run POSIX Apps in a Minimal Picoprocess
Jon Howell, Bryan Parno, John R. Douceur
USENIX ATC1
2012 Flat Datacenter Storage
Ed Nightingale, Jeremy Elson, Jinliang Fan, Owen S. Hofmann, Jon Howell, Yutaka Suzue
OSDI5
2011 Rethinking the library OS from the top down
abstract
This paper revisits an old approach to operating system construc-tion, the library OS, in a new context. The idea of the library OS is that the personality of the OS on which an application depends runs in the address space of the application. A small, fixed set of abstractions connects the library OS to the host OS kernel, offering the promise of better system security and more rapid independent evolution of OS components.
Donald E. Porter, Silas Boyd-Wickizer, Jon Howell, Reuben Olinsky, Galen C. Hunt
ASPLOS3
2011 The web interface should be radically refactored
abstract
The Web API conflates two conflicting goals: serving developers by supporting a wide and growing suite of functionality, and providing applications with an isolated execution environment. We propose to split the API into two levels of interface: a low-level interface that governs the relationship between the application and the browser, and a set of high-level interfaces that govern the relationship between the application and its developer. We delineate a tiny set of properties needed by the low-level interface. We argue that this restructuring provides significant benefit to both developers and users.
John R. Douceur, Jon Howell, Bryan Parno, Michael Walfish
HotNets2
2010 Mugshot: Deterministic Capture and Replay for JavaScript Applications
James W. Mickens, Jeremy Elson, Jon Howell
NSDI3
2010 Crom: Faster Web Browsing Using Speculative Execution
James W. Mickens, Jeremy Elson, Jon Howell, Jacob R. Lorch
NSDI3
2010 The Utility Coprocessor: Massively Parallel Computation from the Coffee Shop
John R. Douceur, Jeremy Elson, Jon Howell, Jacob R. Lorch
USENIX ATC3
2008 Do I live in a flood basin?: synthesizing ten thousand maps
abstract
The recent introduction of simple, web-based geographic visualization interfaces has unleashed a tidal wave of new geographic content now available on the Internet. There has been enormous attention on the development of data interchange standards and programming interfaces that make all this content interoperable, but far less thought about how the user experience should change when users have their choice of 10,000 maps.To inform the design of online mapping systems, we investigate the case of queries that require correlation of multiple maps---that is, discovery and synthesis of several map layers. We based our study on interviews with expert users of maps: archivists and librarians. This paper describes our user-task taxonomy distilled from these interviews, and presents MapSynthesizer, a prototype system that allows users to efficiently query, discover, and integrate many maps from a corpus of thousands.
Miguel Elías, Jeremy Elson, Danyel Fisher, Jon Howell
CHI4
2008 Low-cost orthographic imagery
abstract
Commercial aerial imagery websites, such as Google Maps, MapQuest, Microsoft Virtual Earth, and Yahoo! Maps, provide high- seamless orthographic imagery for many populated areas, employing sophisticated equipment and proprietary image postprocessing pipelines. There are many areas of the world with poor coverage where locals might benefit from recent, high-resolution orthographic imagery, but which do not fit into the schedules and scaling model of the big sites.
Péter Pesti, Jeremy Elson, Jon Howell, Drew Steedly, Matthew Uyttendaele
GIS3
2008 Leveraging Legacy Code to Deploy Desktop Applications on the Web
John R. Douceur, Jeremy Elson, Jon Howell, Jacob R. Lorch
OSDI3
2008 Handling Flash Crowds from Your Garage
Jeremy Elson, Jon Howell
USENIX ATC2
2007 Asirra: a CAPTCHA that exploits interest-aligned manual image categorization
abstract
Article Share on Asirra: a CAPTCHA that exploits interest-aligned manual image categorizationCCS '07: Proceedings of the 14th ACM conference on Computer and communications securityOctober 2007 Pages 366–374https://doi.org/10.1145/1315245.1315291Online:28 October 2007Publication History 51citation868DownloadsMetricsTotal Citations51Total Downloads868Last 12 Months74Last 6 weeks8 Get Citation AlertsNew Citation Alert added!This alert has been successfully added and will be sent to:You will be notified whenever a record that you have chosen has been cited.To manage your alert preferences, click on the button below.Manage my AlertsNew Citation Alert!Please log in to your account Save to BinderSave to BinderCreate a New BinderNameCancelCreateExport CitationPublisher SiteGet Access
Jeremy Elson, John R. Douceur, Jon Howell, Jared Saul
CCS3
2007 MashupOS: Operating System Abstractions for Client Mashups
Jon Howell, Collin Jackson, Helen J. Wang, Xiaofeng Fan
HotOS1
2007 Protection and communication abstractions for web browsers in MashupOS
abstract
Web browsers have evolved from a single-principal platform on which one site is browsed at a time into a multi-principal platform on which data and code from mutually distrusting sites interact programmatically in a single page at the browser. Today's "Web 2.0" applications (or mashups) offer rich services, rivaling those of desktop PCs. However, the protection andcommunication abstractions offered by today's browsers remain suitable onlyfor a single-principal system--either no trust through completeisolation between principals (sites) or full trust by incorporating third party code as libraries. In this paper, we address this deficiency by identifying and designing the missing abstractions needed for a browser-based multi-principal platform. We have designed our abstractions to be backward compatible and easily adoptable. We have built a prototype system that realizes almost all of our abstractions and their associated properties. Our evaluation shows that our abstractions make it easy to build more secure and robust client-side Web mashups and can be easily implemented with negligible performance overhead.
Helen J. Wang, Xiaofeng Fan, Jon Howell, Collin Jackson
SOSP3
2006 The SMART way to migrate replicated stateful services
abstract
Many stateful services use the replicated state machine approach for high availability. In this approach, a service runs on multiple machines to survive machine failures. This paper describes SMART, a new technique for changing the set of machines where such a service runs, i.e., migrating the service. SMART improves upon existing techniques in three important ways. First, SMART allows migrations that replace non-failed machines. Thus, SMART enables load balancing and lets an automated system replace failed machines. Such autonomic migration is an important step toward full autonomic operation, in which administrators play a minor role and need not be available twenty-four hours a day, seven days a week. Second, SMART can pipeline concurrent requests, a useful performance optimization. Third, prior published migration techniques are described in insufficient detail to admit implementation, whereas our description of SMART is complete. In addition to describing SMART, we also demonstrate its practicality by implementing it, evaluating our implementation’s performance, and using it to build a consistent, replicated, migratable file system. Our experiments demonstrate the performance advantage of pipelining concurrent requests, and show that migration has only a minor and temporary effect on performance.
Jacob R. Lorch, Atul Adya, William J. Bolosky, Ronnie Chaiken, John R. Douceur, Jon Howell
EuroSys6
2006 Distributed Directory Service in the Farsite File System
John R. Douceur, Jon Howell
OSDI2
2002 FARSITE: Federated, Available, and Reliable Storage for an Incompletely Trusted Environment
Atul Adya, William J. Bolosky, Miguel Castro 0001, Gerald Cermak, Ronnie Chaiken, John R. Douceur, Jon Howell, Jacob R. Lorch, Marvin Theimer, Roger Wattenhofer
OSDI7
2002 Cooperative Task Management Without Manual Stack Management
Atul Adya, Jon Howell, Marvin Theimer, William J. Bolosky, John R. Douceur
USENIX ATC, General Track2
2000 A Formal Semantics for SPKI
Jon Howell, David Kotz
ESORICS1
2000 Practical Mobile Robot Self-Localization
abstract
A map-making robot integrates accumulated sensor data into a data structure that can be used for future localization or planning operations. Localization is the process of determining the robot's location within its environment. This paper describes experiments in which a robot simultaneously makes a map and localizes to that map. The map is a collection of tangent vectors constructed from stored sonar readings localized to a series of estimated poses. The vectors retain sensed surface normal information to improve accuracy. The localization scheme is a Hough transform into a space described by the robot's current sonar scan. The Hough transform finds a best fit in the presence of both sporadic sensor noise and discretization error.
Jon Howell, Bruce Randall Donald
ICRA1
2000 End-to-End Authorization
Jon Howell, David Kotz
OSDI1
2000 A programming model for active documents
abstract
Traditionally, designers organize software system as active end-points (e.g.applications) linked by passive infrastructures (e.g.networks).Increasingly, however, networks and infrastructures are becoming active components that contribute directly to application behavior.Amongst the various problems that this presents is the question of how such active infrastructures should be programmed.We have been developing an active document management system called Placeless Documents.Its programming model is organized in terms of properties that actively contribute to the functionality and behavior of the documents to which they are attached.This paper discusses active properties and their use as a programming model for active infrastructures.We have found that active properties enable the creation of persistent, autonomous active entities in document systems, independent of specific repositories and applications, but present challenges for managing problems of composition.
Paul Dourish, W. Keith Edwards, Jon Howell, Anthony LaMarca, John Lamping, Karin Petersen, Michael Salisbury, Douglas B. Terry, James D. Thornton
UIST3