I am a Computer Science Ph.D. candidate at
Robbert van Renesse.
I hold a B.S. in Computer Science from
from whence I graduated in 2012.
My research, at present, is at the intersection of
I'm working on generalizations of
as well as languages in which to express their proofs and policies.
I also work on adapting classic and / or interesting distributed algorithms to an
setting, and creating languages in which to express them.
I am presently working on
a framework for block-based distributed systems, such as
The core idea is to separate Storage from Consensus: not all servers need store all blocks.
By nature, when blocks refer to each other by hash, they form a
but most applications want a more specific data structure than any old DAG (for example, a chain).
Each data structure therefore requires a set of Integrity servers to decide which blocks belong.
References to blocks contain attestations from storage servers that they are available, as well as attestations from Integrity servers.
Read more in
my 2017 Shenzhen Blockchain Winter School talk.
We hope to publish our work on
Robbert van Renesse,
and I have formalized a model of
which differs from the traditional model in three ways:
To our knowledge, we are the first to be heterogeneous in all three ways, and the first to have heterogeneous observers with optimal runtime.
For more information, see
Not all failures are created equal: failure modes can specify some Crash failures in addition to some
Not all participants are created equal: we can express beliefs about correlated failures and differently trusted participants.
Not all Observers are created equal: In any distributed consensus, someone is ultimately viewing the participants' output, and deciding when to consent on a value.
We account for observers with different opinions, within certain limitations.
I aim to develop a new language, tentatively called
in which to express low-level distributed algorithms with provable Information Flow Control based security properties.
We can divide existing languages into three categories: languages with enforced Information Flow Control secure type systems, languages with distributed and networking primitives, and languages which can express low-level protocols (without major structural assumptions on what the application must look like).
There are languages in each category, and even each pair, but as yet, no language fits into all three.
I aim to bridge this gap.
More details can be found in my Thesis Proposal presentation
or in the affiliated
abstruse technical report.
In our CCS 2016 paper,
Robbert van Renesse,
and I present
Safe Serializable Secure Scheduling: Transactions and the Trade-off Between Security and Consistency.
Modern applications often operate on data in multiple administrative domains.
In this federated setting, participants may not fully trust each other.
These distributed applications use transactions as a core mechanism for ensuring reliability and consistency with persistent data.
However, the coordination mechanisms needed for transactions can both leak confidential information and allow unauthorized influence.
By implementing a simple attack, we show these side channels can be exploited.
However, our focus is on preventing such attacks.
We explore secure scheduling of atomic, serializable transactions in a federated setting.
While we prove that no protocol can guarantee security and liveness in all settings, we establish conditions for sets of transactions that can safely complete under secure scheduling.
Based on these conditions, we introduce staged commit, a secure scheduling protocol for federated transactions.
This protocol avoids insecure information channels by dividing transactions into distinct stages.
We implement a compiler that statically checks code to ensure it meets our conditions, and a system that schedules these transactions using the staged commit protocol.
Experiments on this implementation demonstrate that realistic federated transactions can be scheduled securely, atomically, and efficiently.
I have adapted Robbert van Renesse's
algorithm to a world in which not everyone has the same idea of who can fail, and what "failure" means.
We take advantage of the richer notion of "trust" provided by the
Decentralized Label Model,
allowing each participant to express their failure assumptions.
Based upon earlier work by Andrew Myers and
as a statically-checkable program property within the Decentralized Label Model, as well as the notion of
for increased integrity of availability through replication, I've developed an adapted version
of fast consensus featuring asymmetric trust and notions of "failure" in terms of availability and integrity.
A draft is available on arXiv.
Similarly, I've adapted Robbert van Renesse's
Nysiad: Omission tolerant to Byzantine Tolerant Conversion Algorithm
in terms of Information Flow.
I investigated some potential "slowdown" cases of the classic
algorithm, and developed some
to aviod them.
and I worked on a machine learning project in
webcomic author identification.
With carefully tuned features, neural nets, and SVMs, we were able to determine the correct author of samples from a group of ten authors with 94 percent accuracy.
In the summer of 2012, I interned at the Google LA office, where I worked on preventing Google's ads from appearing on porn sites. This was part of a large-scale machine learning project featuring whole-internet size datasets and massively parallelized algorithms. It also involved downloading a lot of porn.
In the summer of 2011, I worked on
"Branching Messaging for Anonymous Communication"
In the summer of 2010,
I worked with the NuSIM team at Caltech
to validate and verify the NuSTAR space telescope prior to launch.
My Summer Undergraduate Reasearch Fellowship at JPL, working on a Lunar Web Registry Service Under OpenGIS Specifications in 2009