Skip to content
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

Moving DIDs and pre-rotation mechanics #46

Merged
merged 5 commits into from
Apr 16, 2024
Merged

Moving DIDs and pre-rotation mechanics #46

merged 5 commits into from
Apr 16, 2024

Conversation

swcurran
Copy link
Collaborator

Signed-off-by: Stephen Curran swcurran@gmail.com

Signed-off-by: Stephen Curran <swcurran@gmail.com>
@swcurran
Copy link
Collaborator Author

Enough writing! Now to create the presentations...

@swcurran
Copy link
Collaborator Author

@brianorwhatever or @andrewwhitehead -- ready for a review. This is definitely content that is in the "draft" stage.

service the hash of the "next key" as defined in this specification. For
example, an entity might have the "active" DID/key hosted by one Cloud
Provider, and the "next key" by another, on the theory that an attacker might
get into one environment or another or not both.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
get into one environment or another or not both.
get into one environment or another but not both.

2. Locally generate a pre-rotation key hash for a new key that will soon become the "active" key.
3. Add a [[ref: DID log]] entry that includes the items from the previous two steps, and signs the proof using an authorized key (that presumably it controls, though not required).
1. Although the [[ref: DID log]] could be published now, probably best to hold off and publish it after adding another entry.
4. Get a new pre-rotation from the isolated service.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
4. Get a new pre-rotation from the isolated service.
4. Get a new pre-rotation key from the isolated service.

spec/abstract.md Outdated
as moving the DIDs web location (and so the DID string itself) while retaining
the DID's history.
unique, embedded in the DID, and derived from the initial DIDDoc. The SCID
replacement DID attacks and enables [[ref: DID portability]], such as moving the DIDs
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
replacement DID attacks and enables [[ref: DID portability]], such as moving the DIDs
enables [[ref: DID portability]], such as moving the DIDs

@@ -13,18 +13,124 @@ The Typescript implementation is currently less than 1000 lines of Typescript co

### Using Pre-Rotation Keys

Best practices are that the [[ref: DID Controller]] generates the active key for the DIDDoc where it can be used for "production" purposes, and generates the "next key" in an isolated location from production
The purpose of using pre-rotation keys is to prevent the loss of control over a
DID in the face of a compromised private key used to control the DID. The cost
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
DID in the face of a compromised private key used to control the DID. The cost
DID in the face of a compromised private key used to control the DID. The tradeoff

4. Get a new pre-rotation from the isolated service.
5. Get the full key-rotation key reference for the pre-rotation hash created for the last [[ref: DID log entry]].
6. Add a [[ref: DID Log]] entry that includes the items from the previous two step
7. If they key rotated in the previous [[ref: DID log entry]] was a/the
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
7. If they key rotated in the previous [[ref: DID log entry]] was a/the
7. If they key rotated in the previous [[ref: DID log entry]] was

long as:

- the [[ref: SCID]] stays in the same in the new DID,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- the [[ref: SCID]] stays in the same in the new DID,
- the [[ref: SCID]] stays the same in the new DID,

Consider being able to replace the current identifiers we are given (email
addresses, phone numbers) with `did:tdw` DIDs. Comparable hosting platforms
might publish our DIDs for us (ideally us still hosting own private keys...).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
might publish our DIDs for us (ideally us still hosting own private keys...).
might publish our DIDs for us (ideally us still in custody of our own private keys...).

@@ -379,6 +387,12 @@ items are defined below.
- See the section of this specification [Using Pre-Rotation
Keys](#using-pre-rotation-keys) for non-normative guidance in using
pre-rotation keys.
- `moved`: A string that is a new `did:tdw` DID string. The new `did:tdw`:
- **MUST** contain the same [[ref: SCID]].
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want to limit the location of the SCID to be the same as in the original DID? I don't think so and don't see any technical reason to do that but thought its worth asking

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No — it just have to have the SCID.

Signed-off-by: Stephen Curran <swcurran@gmail.com>
@swcurran
Copy link
Collaborator Author

@brianorwhatever — back to you. Cleanups to the PR done.

::: todo
The primary goal of pre-rotation keys is to ensure that even if an attacker
gains access to the current active key, they will not be able to take control of
the DID. This safeguard is achieved because the attacker could simply rotate to
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
the DID. This safeguard is achieved because the attacker could simply rotate to
the DID. This safeguard is achieved because the attacker could not simply rotate to

more.

From time to time in that imagined future, we will may want to move our DIDs
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
From time to time in that imagined future, we will may want to move our DIDs
From time to time in that imagined future, we may want to move our DIDs


From time to time in that imagined future, we will may want to move our DIDs
from one hosting service to another, just as we move from one email or cell
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
from one hosting service to another, just as we move from one email or cell
from one hosting service to another, just as we move from one email or mobile

Signed-off-by: Stephen Curran <swcurran@gmail.com>
@brianorwhatever brianorwhatever merged commit 00e90dd into decentralized-identity:main Apr 16, 2024
1 check passed
@swcurran swcurran deleted the move-did branch June 10, 2024 13:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants