-
Notifications
You must be signed in to change notification settings - Fork 15
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
Default to allowing portable=true
#173
Comments
So two parts — changing the default to “true” for portable on creation, and a “lock” mechanism. A DID Controller that is not certain can set Assumption: The lock mechanism would be something like: A challenge with that is that it would have to be based on I think that |
Yeah, two different things, but I wanted to raise the idea of a lock mechanism along with changing default, as it might address the concerns of people who wanted it Specifying lock-in period: I would suggest sticking to seconds like HSTS does with
True, there's a 72-hour window in which a "higher authority rotation key" can override a change:
|
The issue
The spec currently states:
It's big ask to expect a user to know beforehand whether they want portability or not, and explicitly ask for. In general, the Web has defaulted to allowing things to be portable: you can move hosts, domain registrars, etc.
I can see the security argument for locking it, but I see this as similar to DNSSEC or HSTS. Crucially, neither DNSSEC or HSTS are usually on by default. If a user so chooses, like using these two mechanisms, to set
portable=false
that's fine but we should not expect people by default to have their DIDs as non-portable.Example scenario
example-company.io
, and creating a did:webvhexample-company.com
It's very unlikely that the user would have anticipated this "need" to have their DID portable many years in advance of needing to move it, and choosing at the time. Therefore, the default setting for
portable
should betrue
.Portable, after timelock
An associated thought is that even for users who chose to not opt-in to portability, only being able to choose it once - at genesis - is a bad idea. An alternative suggestion here is to allow for portability even after genesis, while balancing security.
As an analogy, this would be similar to HSTS or DNSSEC: instead of portability being possible immediately, it would only be possible after the passage of a defined period of time set when portability is turned on (whether at genesis or some point after genesis). This would mean in addition to
portable=true/false
there would also be a parameter likeportabilityLockDuration=XXXXX
(I would use seconds like in HSTS). In HSTS, for example, HSTS preloading is only done if the max age for HSTS timelock is at least one year.. In practice this means if someone compromises the TLS certificates, there's a certain minimum duration, e.g., 1 year that the certificate can be pinned for.This would sufficient time in case of a malicious portability request was made for the DID author to off-channel be able to signal/inform people that there was something wrong, and can't immediately be use by an attacker to port the DID. The spec already talks about DID to HTTPS transformation, so aligning with HSTS preload time as a lock duration is also conceptually close.
If timelocks are play
We can modify the spec as follows to take into account portability by default and timelocks as:
The text was updated successfully, but these errors were encountered: