← Back to Home Coercion Resistance Principle →

Designing for Coercion Resistance

How to audit software for coercion risk and design systems that protect users under institutional threat, duress, and forced disclosure.

Coercion resistance is not a niche security concern. It is a structural requirement for any software used by people in high-risk environments: domestic abuse survivors, journalists, refugees, whistleblowers, patients with sensitive diagnoses, or anyone whose safety depends on controlling access to their own data.

Most security engineering addresses external attackers. Coercion resistance addresses a different threat model: what happens when the attacker has physical access to the user, the device, or the legal authority to compel disclosure?


The Coercion Threat Model

Coercion takes several forms. Each requires a different design response:

Threat Type 1

Physical Device Access

An abuser, authority, or adversary has physical access to the user's device — either with or without the user's cooperation. They can see the screen, read files, inspect installed apps, and access anything that does not require additional authentication.

Threat Type 2

Forced Authentication

The user is compelled to unlock the device or provide their password under duress. This may be a legal order (border crossing, law enforcement), a coercive relationship (abusive partner, employer), or direct physical threat.

Threat Type 3

Server-Side Subpoena or Data Request

A government, law enforcement agency, or legal adversary compels your infrastructure to disclose user data. You do not need to be malicious for this to harm your users — you only need to hold data they did not want disclosed.

Threat Type 4

Surveillance by Proximity

Someone with access to the same network, the same device, or the same household can observe the user's behavior — not necessarily the content, but the metadata. Who they contacted, when they opened an app, what they searched for.


How to Audit for Coercion Risk

For each threat type above, ask these questions about your system:

Physical Device Access Audit

Forced Authentication Audit

Server-Side Data Risk Audit

Proximity Surveillance Audit


Coercion Resistance Design Patterns

Pattern 1: Rapid Wipe

Provide a single-action mechanism for the user to wipe or hide sensitive local data quickly. This should work without going through account settings, without network access, and without a confirmation dialog that takes more than one tap.

Implementation notes

Pattern 2: Minimal Server Footprint

Store the minimum on your servers. What you do not hold, you cannot be compelled to disclose. For sensitive apps, consider a zero-knowledge architecture where the server holds only encrypted blobs and the user holds the decryption key.

Implementation notes

Pattern 3: Honest Security Claims

The most common coercion resistance failure is not a design failure — it is a documentation failure. Apps claim protection they do not provide. Users trust those claims and are harmed when they fail under pressure.

Implementation notes

Pattern 4: Exposure Minimization by Default

The less data you collect, the less damage coercion can do. Default settings should minimize data collection. Users who want to share more can opt in.

Implementation notes

Anti-Patterns to Remove


Relationship to Other Principles

Coercion resistance works in conjunction with:

Related Resources


Protective Computing — back to home