Interactive explainer

Ser, explained

Ser is a verification server. It checks a request that comes from an iPhone. If the checks pass, it adds a credential to a public book. Other apps can read that book.

Below, eight short stories show how it works. Each story has a design that fails and a design that works. Click through the steps and see where the first one breaks.

Jump to the stories ↓

Ser in one picture

  1. Alice next to her iPhone

    1 Alice enrolls

    Alice looks at her iPhone. Face ID unlocks a key inside the phone. The phone sends Ser a signed request. Her face never leaves the phone.

  2. The Ser server

    2 Ser checks and writes

    Ser checks the request. If it passes, Ser adds a credential to its public book. A public number (the “nullifier”) names each credential.

  3. Bob

    3 Bob’s app reads the book

    Bob runs a chat app. His app looks up a number in the public book. Bob has no Apple device. He only reads.

The four characters

Scenarios

Tip: press the left and right arrow keys to step.

Where it is today

Face ID and App Attest alone do not prove that one person has one credential. The scenarios above are a plain-language reading of the project docs. They are not the specification.

Words used on this page
Nullifier
The public number that names a credential. The same enrolled key always gives the same number.
Credential
An entry in Ser’s public book. Anyone can look it up. Looking it up does not prove who holds it.
Secure Enclave
A protected part of the iPhone. It keeps a key and signs with it. The key cannot be copied out.
Holder key
The P-256 key in the Secure Enclave. Face ID unlocks it for each signature.
App Attest
An Apple service. It gives a statement that a genuine copy of an app made a request. It uses a separate key.
Challenge
A fresh, one-time request from Ser. It has a random ID, a random nonce and a 2-minute expiry.
Nonce
A random number used once.
Audience
Who a signature is meant for, such as one app. It stops a signature from working somewhere else.
Presentation
A fresh Face ID signature for one app. It shows that the holder is present now.
Profile
A rule set in the server’s own configuration. It says which checks and which pinned key apply.
Zero-knowledge (ZK) proof
A proof of a fact that hides some of the inputs.
Pseudonym
A name for Alice that works in one app only. Other apps get a different one.