Key binding
Key binding is proof that whoever presents a credential holds the private key bound to it.
With SD-JWT VC this happens through a key binding JWT signed with the key from the cnf claim and containing a hash of the presented parts. Without key binding, anyone who copies a credential could present it as their own.
Example
A mandate contains the agent's public key. When the agent presents the mandate, it also signs a key binding JWT with recipient and time. A stolen mandate without the private key is therefore worthless.
How it differs
A bearer credential without key binding works like cash: whoever holds it can use it. With key binding, it resembles a card with a PIN. Delegation goes further and passes authority on to another key.
In practice
- Generate the agent's private key in a protected environment and never hand it over; the mandate contains only the public part.
- Check the recipient and time in the key binding JWT. Evidence created for a different recipient or hours ago should be declined.
- Rotate keys regularly and immediately revoke mandates whose keys may be compromised, using the status list.
Role in KYA
KYA verifies the key binding JWT against the key in the credential, plus recipient, time and the hash over the presented details. Without key binding, the link to the agent is not proven.
Related check: Agent and principal (subject_agent_binding). Do all parts name the same agent, is the principal named, does the agent hold the bound key?
Frequently asked questions
What is key binding?
Binding a credential to its holder's key. Only whoever holds the private key can present the credential validly.
What is the key binding JWT for?
With every presentation, it proves that the holder owns the key and ties the presentation to recipient and time. This prevents reuse.
What happens without key binding?
Then anyone who holds the credential can present it. For agent mandates, that is a considerable risk.
Where does an agent's private key live?
Ideally in protected storage, such as a hardware module or a managed key service. The agent uses it to sign without reading it out.
Is key binding needed for every credential?
For credentials an agent acts with, yes. Without key binding, an intercepted mandate could be used by another agent. For purely informational credentials, it can be unnecessary.