-
Notifications
You must be signed in to change notification settings - Fork 13
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
Moving DIDs and pre-rotation mechanics #46
Conversation
Signed-off-by: Stephen Curran <swcurran@gmail.com>
Enough writing! Now to create the presentations... |
@brianorwhatever or @andrewwhitehead -- ready for a review. This is definitely content that is in the "draft" stage. |
spec/implementors_guide.md
Outdated
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. |
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.
get into one environment or another or not both. | |
get into one environment or another but not both. |
spec/implementors_guide.md
Outdated
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. |
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.
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 |
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.
replacement DID attacks and enables [[ref: DID portability]], such as moving the DIDs | |
enables [[ref: DID portability]], such as moving the DIDs |
spec/implementors_guide.md
Outdated
@@ -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 |
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.
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 |
spec/implementors_guide.md
Outdated
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 |
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.
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 |
spec/implementors_guide.md
Outdated
long as: | ||
|
||
- the [[ref: SCID]] stays in the same in the new DID, |
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.
- the [[ref: SCID]] stays in the same in the new DID, | |
- the [[ref: SCID]] stays the same in the new DID, |
spec/implementors_guide.md
Outdated
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...). |
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.
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]]. |
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.
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
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.
No — it just have to have the SCID.
Signed-off-by: Stephen Curran <swcurran@gmail.com>
@brianorwhatever — back to you. Cleanups to the PR done. |
spec/implementors_guide.md
Outdated
::: 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 |
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.
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 |
spec/implementors_guide.md
Outdated
more. | ||
|
||
From time to time in that imagined future, we will may want to move our DIDs |
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.
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 |
spec/implementors_guide.md
Outdated
|
||
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 |
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.
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