-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
✨ Adds key identifier field to KAO #21
✨ Adds key identifier field to KAO #21
Conversation
- This will simplify key rotation on the KAS, while maintaining support for 'legacy' or 'past' keys.
- Adds v2 format, with `kid` in response` - Allows returning the value in JWK format
Converting to draft while I implement a proof of concept in opentdf/backend and opentdf/client-web |
Backend Proof of concept: https://github.com/opentdf/backend/pull/521 |
schema/tdf/KeyAccessObject.md
Outdated
@@ -25,6 +26,7 @@ A Key Access Object stores not only a wrapped (encrypted) key used to encrypt th | |||
|`keyAccess`|Object|KeyAccess object stores all information about how an object key OR key split is stored, and if / how it has been encrypted (e.g., with KEK or pub wrapping key).|Yes| | |||
|`type`|String|Specifies how the key is stored.<p>Possible Values: <dl><dt>remote</dt><dd>The wrapped key (see below) is stored using Virtru infrastructure and is thus not part of the final TDF manifest.</dd><dt>wrapped</dt><dd>Default for TDF 3.x and newer, the wrapped key is stored as part of the manifest.</dd><dt>remoteWrapped</dt><dd>Allows management of customer hosted keys, such as with a *Customer Key Server*. This feature is available as an upgrade path.</dd></dl>|Yes| | |||
|`url`|String|A url pointing to the desired KAS deployment|Yes| | |||
|`kid`|String|Identifier for the KAS public key.|Recommended| |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we be more descriptive about how the KID is generated?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've added some detail here about what we currently use in our reference implementation and other alternatives, and also added a note in the swagger for the relevant endpoint
Proposed Changes
MINOR enhancement
kid
, which identifies which KAS key was used to wrap the data encryption key.kas_public_key
endpoint to allow return thekid
. Unfortunately this is a major update for that field, so to maintain backward compatibility I'm adding it as an additional request parameter to the endpointIntended use:
Checklist
draft-<change>
git tag -s 4.1.0 -m "Spec version 4.1.0 - did a thing"
)