Skip to content
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

Define a mechanism for auditability / change tracking #13

Open
rhiaro opened this issue Oct 19, 2020 · 11 comments
Open

Define a mechanism for auditability / change tracking #13

rhiaro opened this issue Oct 19, 2020 · 11 comments

Comments

@rhiaro
Copy link
Member

rhiaro commented Oct 19, 2020

The read mechanism does not provide any sort of auditability on the DID, which leaves this DID Method open to insider-threat attacks, among others.

(I'm sure there are more grown-up (less single-service-dependent) ways to do this, but we could start by snapshotting the DID doc with archive.org 😄 )

@dmitrizagidulin
Copy link
Collaborator

dmitrizagidulin commented Oct 20, 2020

+1. I think the proposal so far is to add KERI-like mechanisms (a chain of backwards hashlinks, plus outside observers).

@dlongley
Copy link

+1. I think the proposal so far is to add KERI-like mechanisms (a chain of backwards hashlinks, plus outside observers).

We need to be careful here. This is insufficient if the chain can be severed/reset back to some point in the past and continued from there.

@dmitrizagidulin
Copy link
Collaborator

@dlongley would that not be addressed by outside observers?

@kdenhartog
Copy link
Contributor

+1. I think the proposal so far is to add KERI-like mechanisms (a chain of backwards hashlinks, plus outside observers).

We need to be careful here. This is insufficient if the chain can be severed/reset back to some point in the past and continued from there.

Isn't that true of any DID Method that's based on a blockchain as well? For example by producing a longer chain on BTC that invalidates a BTCR update and the new longest chain includes a different update then it would be susceptible to this too. The tradeoff between conducting this attack on BTCR vs did:web is the feasibility of the attack. In the case of an external adversary on did:web they compromise the server/resolution to conduct this attack. On BTCR they have to attack the entire chain, but both are theoretically possible.

The main difference in my mind is that the Server admin (who could also be the DID Controller) has an easier time to do a revision if they wanted to do that (just as they could without any mechanism).

@dlongley
Copy link

dlongley commented Dec 3, 2020

@kdenhartog,

Isn't that true of any DID Method that's based on a blockchain as well? For example by producing a longer chain on BTC that invalidates a BTCR update and the new longest chain includes a different update then it would be susceptible to this too.

First, not every blockchain works that way, some have consensus with finality of 1 instead of some lower probabilistic finality. Second, this is about roots of authority. Either the DID method allows the DID controller to change history without detection (bad), another single party (such as the domain controller in the case of did:web) can change history without detection (bad), or there's some combination of immutable history and/or community dispersed authority/transparency to see changes. The blockchain-based methods generally offer something in this last category while did:web currently does not, falling into at least one of the first two categories.

The tradeoff between conducting this attack on BTCR vs did:web is the feasibility of the attack. In the case of an external adversary on did:web they compromise the server/resolution to conduct this attack. On BTCR they have to attack the entire chain, but both are theoretically possible.

Yes, both are theoretically possible but no where remotely near the same difficulty. Also, the BTCR protects against insider attacks, putting insiders into the same boat as any other attacker, whereas did:web gives them special privileges. This part is not the same. I see you mention this next:

The main difference in my mind is that the Server admin (who could also be the DID Controller) has an easier time to do a revision if they wanted to do that (just as they could without any mechanism).

Yes.

@dlongley
Copy link

dlongley commented Dec 3, 2020

@dmitrizagidulin,

would that not be addressed by outside observers?

Yes, but we can't just hand wave. We need to build into did:web's protocol how that observing is done/how observers are chosen and checked -- how observer consensus works (or doesn't/error margins), etc.

@OR13
Copy link
Collaborator

OR13 commented Jun 27, 2022

I suggest we close this issue, the complexity is not worth it, and there are other DID Methods with better audit-ability for this use case.

@kdenhartog
Copy link
Contributor

+1, I'd venture to guess because the controller and host are collapsed in this system in a way that allows them to collude with out detecting it there's no way that this ends up working properly and any solution will be subvert-able when that case is true.

@dmitrizagidulin
Copy link
Collaborator

+1 to closing.

@gribneau
Copy link
Contributor

+1 to closing

@gribneau
Copy link
Contributor

As an aside, if somebody did want to do this, HTTP has had support for validation of content by hash for quite some time.

One could specify that entity tags be some reliable hash, and write them to some blockchain. (The underlying specification is silent as to how entity tags should should be calculated, but SHA1 over the content is commonly used. One could specify something more modern if desired.)

Doing this, though, begs the question of diversity among implementations.

https://datatracker.ietf.org/doc/html/rfc7232#section-2.3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants