Open paulobmarcos opened 5 years ago
Cool, let's chat.
Some thoughts on this (derived largely from https://github.com/ipfs-shipyard/pm-idm/issues/2#issuecomment-451032749).
There are two types of functions that we tend to worry about here:
We also need to take into account the threat model and timing around revocation/rotation. For example:
Below are some thoughts on how to solve this using a blockchain/global consensus system (which while not in the IPID spirit, is what most of the DID space is using) and an IPNS/eventual consistency system. I will use as a short-hand blockchain = global consensus system and IPNS = eventual consistency system.
Eventually consistent systems' lack of total global order makes using the breakdown of "before" vs "after" generally difficult, since depending on the state of the network "after" can always look like "before".
IPNS[U] = DID'
. If there exists a record IPNS[U] then the current record is out of date. If there is exactly one update published then the update can be used, however if there is more than one update then flag that the key has been compromised => revocation.The security tradeoff here with a blockchain is related to availability, if an attacker can eclipse or distort a users' view of IPNS to see only one update instead of two then they are successful. Given that this is a forking attack some of the standard solutions to mitigate forking attacks can be employed (e.g. Keybase uses user tracking of keys, but any sort of embedding DIDs into other data to increase the amount of the network that needs to be forked is useful)
As with blockchains this is very difficult to figure out after the key has been compromised. Additionally, since before and after are harder to tell apart here, we have difficulty even before the key has been compromised.
However, there are some options for key rotation that are viable and exist outside the IPNS/blockchain system.
It is worth noting that if we wanted to, we could use our solution to rotation to help with revocation. For example, if users were willing to use a single trusted authority for key rotation it could also be used for discovering/dealing with revocation. However, these schemes are generally not as easy to work with (or secure) as the revocation schemes so separating revocation from rotation is likely a good way to go.
At the time of this issue, the DID spec mentions that:
A discussion on how we can further develop the IPID specification to establish how the revocation is performed and tracked would be worthwhile.