I have read most of Sovrin’s white papers, and scrutinised Sovrin’s codebase on GitHub and the forum if things were not clear. I have some questions, however, that remain unanswered (see below).
Alice has a Sovrin client. Her client contains a wallet, which contains, among other things, her master secret. She embeds her master secret in credential requests, and uses it to proof ownership of the credentials (i.e., claims) she receives from issuers. I’m leaving out a lot of details, but so far, no confusion.
Her wallet also contains a bunch of public-private key pairs, that she uses to communicate securely with other identity owners, such as Faber College. In particular, she uses her private key to sign the messages she sends to the College, which allows the College to make sure that the messages they receive from someone who pretends to be Alice, actually are from Alice, and that Eve did not tamper with them.
How did the College obtain Alice’s public key? Well, Alice send it to the College, along with her DID. Alice visited the College’s website, logged on (or authenticated herself to the College somehow), downloaded a connection request, generated a public-private key pair, derived a DID from her public key (i.e., she took the first 16 bytes), and responded to the connection request by sending the College, among other things, her public key and DID. Eve couldn’t tamper with the connection request, nor with Alice’s response to it, because Alice was talking to the College over a secure channel. What secured the channel? The public key infrastructure (PKI). As soon as the College received Alice’s public key and DID, the College, being a trust anchor, wrote both to the ledger.
In other words, without the PKI, neither the authenticity of Alice’s DID, nor of her public key, can be guaranteed.
What about the College’s public key? How does Alice obtain it? Alice’s client fetches it from the ledger, because it knows the College’s DID. How does it know the College’s DID? It was part of the connection request she downloaded securely, by means of the PKI.
If I am correct, then
why do Alice and the College need a DID that maps to a public key, in a ledger? What problem does it solve? If, after all, the PKI remains necessary in order to reliable share a DID? And
Alice cannot dispose of her usernames and passwords, because she needs them to authenticate to issuers, such as the College. In Sovrin’s latest white paper, however, is written that (p. 26): “Sovrin goes one step further: it not only eliminates usernames and passwords in favor of cryptographic authentication, but it adds the ability to exchange verifiable digital credentials for stronger, more flexible, and more resilient identity verification and access control.”
Most of the information above comes from the getting-started.md on GitHub (see https://github.com/hyperledger/indy-node/blob/master/getting-started.md) and from the “First-Time Provisioning” section of the white paper “The Technical Foundations of Sovrin” (p. 14).