tech, volunteers, public safety, collective intelligence, articles, tools, code and ideas
More commonly known as a Dead Man’s Switch, a Dead Person Switch (DPS) is a system that can hold a secret on behalf of a person, and govern its release should they become unavailable.
Use cases for a DPS system include final messages to loved ones, the distribution of assets after death, and the controlled release of a damaging secret to disincentivise an attack on the owner of a DPS (the subject).
This was the subject of my MSc dissertation in Software & Systems Security, which focuses on the needs of an investigative journalist. It’s available to download here:
Little formal work exists on the topic, although time-release cryptography (related) is an active field of research.
A simple, very high level representation for a Dead Person Switch might look like this:
This seems simple enough, but hides a number of underlying questions - particularly around how such a system can hope to keep the subject’s secret safe…
Could you use encryption to protect the secret inside a DPS?
At face value, a DPS seems to be in conflict with the classic idea of cryptography.
Under ordinary circumstances, a user may encrypt a secret in such a way that they can decrypt it again with a secret key. That key is protected by the user until they need to perform the decryption.
However, the DPS needs to be able to decrypt the secret when the user does not return (and then only under the right circumstances). For classic cryptography, this creates a problem: Where do you keep the key? If you stored it in the same service, then you might as well not encrypt the secret at all - it’s recoverable by any attacker (including any insiders who operate your DPS). If elsewhere, how will you protect it there, and how will you trust the new service that stores it?
A number of interesting solutions exist:
Each of these proposed solutions relies on a third party that could potentially be compromised, bribed, or legally required to release the key. At least distributing fragments of the key amongst friends could provide a little resilience…
The work I completed for the dissertation is divided into 3 sections:
Through desk research, study, and survey I derived the following requirements for a DPS:
These then provided a framework for consistently evaluating the existing systems, and new designs.
Having explored a variety of options for the implementation of a DPS, I proposed and evaluated three potential designs:
Designing a DPS using the principles of secure design gave me a strong baseline which I could then compare with existing systems, and the more exotic proposed designs. I presented a (fairly) simple microservice architecture design - clearly illustrating the various components, and easy to reason with.
This has all the strengths and weaknesses of current cloud services. It can be protected from outsiders through access control mechanisms, but has strong vulnerabilities to insiders (including staff at the cloud service provider), legal constraints, and denial of service attacks.
dApps show a lot of promise. Networks that can execute smart contracts (such as Ethereum) offer a number of guarantees around availability and reliability that are very important to a DPS. However, smart contracts alone are not enough - it’s important to be able to store, protect, and retrieve secrets. Smart contracts cannot keep secrets, as they are execute in a VM that runs on any participating node in their network.
Some solutions hide the subject’s secret key in another service. This transfers the risk with the key, and relies on strong controls to protect the new service.
A number of networks, such as the SECRET network, have formed in recent years that can support secret contracts - smart contracts that are able to protect their state and inputs from observation by the nodes that execute them. At current time, this is achievable through Trusted Execution Environments (TEE). Enclaves inside a CPU (such as Intel’s SGX) can protect the confidentiality of secrets, and prove the integrity of their results. Networks such as SECRET execute secret contracts in TEE enclaves on their nodes.
A design that incorporates a smart contract and secret contract could prove a very promising solution.
Witness encryption is a particularly interesting area of research - offering encryption schemes that do not rely on a given key to decrypt a secret. The provision of a witness, something that conforms to a set of rules (described by a mapping in an NP language), can be used in place of a key.
The development of a witness-based DPS relies on a number of steps, and assumptions:
This is a very exciting idea! A passive blob of data that can be distributed publicly protects your secret while you are alive, but becomes easy to decrypt after death. The caveat, of course, is that this is predicated on assumption and speculation. It may prove possible, but there may also be good reasons why such conditions do not lend themselves to witness encryption schemes.
I was able to evaluate the existing systems and proposed designs against the requirements for a DPS, giving each a score per requirement. Here’s a matrix of it for reference:
It’s pretty clear that the existing systems each have strengths and weaknesses, and that none were consistently strong across the board.
The proposed designs represent distinct approaches to the implementation of a DPS, and certainly seem to meet more of the requirements.
Of the proposed designs, I concluded that the dApp design is the strongest that can currently be implemented.
The witness encryption design presents a strong hypothetical alternative, but does need some further research.
The project opened up some rather interesting questions which might make good avenues for further research, and it’s a topic I’d be glad to stay connected with in future.
If you’d like to know more, feel free to give it a read and reach out - I’d be glad to chat about it.