Using Proof to Verify the Controller of a Decentralized Identifier
In Sidetree, the owner of the DID is the only . Concretely, only the public keys of the DID Document being processed can verify who can perform operations on the DID Document, such as DID Document modification or revocation. But the DID specs defines that we can delegate another entity that can do DID Document operations on behalf of the owner, by adding a _controller_ attribute. Furthermore, we can also add an optional _proof_, a signature generated by either the owner or a controller! A controller signing the proof means that a third party entity (the controller) is attesting the integrity of the DID Document. Below is a sample of a DID Document persisted to the Sidetree network. The proof is signed not by the owner but by a controller whose DID is did:example:bcehfew7h32f32h7af3.
{
"@context": "https://www.w3.org/2019/did/v1",
"id": "did:example:123456789abcdefghi",
"controller": "did:example:bcehfew7h32f32h7af3",
"publicKey": [{
"id": "#keys-1",
"type": "Secp256k1VerificationKey2018",
"controller": "did:example:123456789abcdefghi",
"publicKeyHex": "02b97c30de767f084ce3080168ee293053ba33b235d7116a3263d29f1450936b71"
}],
"proof": {
"type": "LinkedDataSignature2015",
"created": "2016-02-08T16:02:20Z",
"creator": "did:example:bcehfew7h32f32h7af3#keys-1",
"signatureValue": "QNB13Y7Q9...1tzjn4w=="
}
}
Here is a simple scenario: Suppose you received a telemetry message somewhere from an insecure network. The message is telling you that it this is the GPS location of a certain person around this time. The message is signed by some specific device DID and is also saying that the message is coming from IoT Exchange Telemetry, a well known trusted telemetry service. How would you know that the message is not tampered? How will you prove the authenticity of the device DID?
First, you use the device DID to resolve the DID Document from any Universal Resolver. You use the public key from the DID Document to verify the signature of the message. Valid signature means you have proven the ownership of the message. Now you want to know if the device is really from IoT Exchange Telemetry. You check the device DID Document again and look at the proof attribute. You see that the _creator_ is the DID of IoT Exchange Telemetry, a publicly published trusted DID. You verify the _signatureValue_ in that proof against the _creator_. You do this by resolving the DID Document of _creator_ DID and use the public key to validate _signatureValue_.
Comments
Post a Comment