Encrypt a shared proof key for its recipient
03A shared proof key needs secrecy as well as token integrity; JSON Web Encryption (JWE) can carry an encrypted JWK to the recipient.
Recipient validates the JWT and decrypts the nested JWE using K-wrap to obtain K-pop. The presenter must still demonstrate possession in the chosen protocol; decryption alone is not that proof.
Source for this drawing: RFC 7800 · Read RFC section 3.3 ↗
New to this? Start hereA quick picture + helpful background
A key is different from permission.
An app, a person, and a server have different roles. Follow who asks, who grants permission, and who checks the credential. A key in the drawing is an analogy, not a literal protocol field.
Helpful first, if these ideas are unfamiliar
These pictures are analogies to help you learn. The linked RFC explains the actual rules.
Terms in this drawing
Related RFCs and changes
“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.
Keep the proof secret separate from the key that encrypts it.
- In the introduction’s symmetric example, issuer and recipient first establish a key-encryption key. The proof key is separately shared privately between issuer and presenter; either can generate it.
- cnf.jwe is a JWE Compact Serialization whose plaintext is the UTF-8 representation of a symmetric JWK. It is encrypted to a key known to the recipient. The JWT also needs data-origin authentication and integrity protection. Encrypted JWK rules require cty jwk+json unless the application knows that content by another means or convention.
- A symmetric JWK MAY instead appear in cnf.jwk if the JWT is encrypted so the secret is not disclosed. If the JWT is not encrypted, that symmetric key MUST be encrypted as in §3.3.
K-wrap/K-pop are explanatory names, not RFC field names. This sequence follows the simplified Figure1 setup; actual algorithms, secure provisioning and derived-key protocols are outside this guide. No secret bytes or valid encrypted test token are displayed.
Read the RFC section ↗