mafintosh / mafintosh/hypercore-strong-link
Not non-repudiable
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 14
- Forks
- 1
- PR merge metrics
- No merged PRs in 30d
Description
Here's an attack where I can try to convince another peer that the writer is a liar, even though they aren't.
Since a strong link is a tuple of (key, seq, tree hash), I can create a different merkle tree for a given seq and present that as a strong link to another peer. If that peer chooses to believe that link, they may believe that the hypercore they are looking at, is in fact a fork. This is because nothing in the link proves that a given tree hash was definitely part of the hypercore at some point. If the signature for the tree hash is also included, then the link has non-repudiation, meaning that the writer definitely had the block written at some point, since only the writer has access to the signing private key (basic assumption of hypercore)
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by locating the strong-link entry point in this repository and trace how the (key, seq, tree hash) tuple is created and consumed. Define the signature and verification behavior described in the issue, then validate that a link cannot present an unauthenticated tree hash as a writer-produced state.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- cryptography, distributed-systems, security
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100