01. Identity¶
Status: Draft.
1. Intent¶
A person is identified by a master signing key. It is created on their first device, it signs the keys that sign their devices, and other people pin it after verifying it in person. There is no account, no server and no name required. See ADR 0017.
2. The master key¶
The master public key is the person as far as the protocol is concerned. Its textual form
is a multibase string with a multicodec prefix, so the algorithm is self-describing. The
algorithm is Ed25519 (ADR 0027), so every key renders as
z6Mk…. Signatures over device bindings, device principals and known persons (chapter 02)
must chain to it. A master key does not expire; rebuilding (chapter 07) is a response to
loss or compromise, not a scheduled event.
3. Key structure and configuration¶
Every person has three keys (ADR 0031):
- the master key, which is the person;
- a self-signing key, signed by the master key and held by every device the user marks as an introducer, used to sign bindings and principals;
- a user-signing key, signed by the master key, used to sign known persons and group acceptances.
Two things are the user's choice, made to their own requirements: where the master private key lives (on the first device, or offline or derived from a passphrase) and which devices are introducers. A strict setup limits introducers to one or two devices; everything else can be paired but cannot pair others.
flowchart TB
M["Master key<br/>the person; private key wherever the user chooses"]
SS["Self-signing key<br/>held by introducers"]
US["User-signing key<br/>records other people"]
B["binding<br/>my account on a device"]
P["principal<br/>a device I use"]
K["person<br/>another person's master key"]
M -- signs --> SS
M -- signs --> US
SS -- role --> B
SS -- role --> P
US -- role --> K
All three keys and the display name travel together in the signed person fact.
4. Referring to other people¶
Another person is known by their master key once it has been verified in person in the ceremony of chapter 02 and signed with the person role. There is no remote path to this; the in-person step is a security feature (ADR 0030).
Each person has a person fact (see
org.ligatureprotocol.person): their master key, their
self-chosen display name, and their self-signing and user-signing public keys with the
master key's signatures over them, carried in an envelope signed by the self-signing key
(chapter 06 section 3). It is handed
over in the ceremony and gossiped like any other fact (chapter 06); it is what a verifier
uses to check a binding's signature back to the master key, and what a prompt shows instead
of the key (ADR 0032). Whether an
implementation lets a user relabel a known person locally is a user-interface matter that
no other device sees.