Store the proof of a webpage saved with SingleFile in Bitcoin
blog.woleet.io
blog.woleet.io
TLSNotary (tlsnotary.org) is an example of a project that attempts to use a (modified) TLS connection for non-repudiation (which is roughly the property that we would want here), but it requires a trusted third party to act as the notary.
It's possible this project is taking a similar approach (which would be fine, for those who trust the trusted third party). But given the lack of technical detail, and reading between the lines, I don't see a reason to believe this is the case.
(Happy to be wrong, though! Maybe a more detailed description would help us understand what's going on.)
The point of this service is to prove data existed at a certain time. It can't prove the authenticity of the data.
> It is therefore quite natural that this collaboration was born, allowing all users of the extension to retrieve a neutral, irrefutable and usable evidence worldwide, including in court.
[1] https://github.com/gildas-lormeau/SingleFile/blob/master/ext...
The publisher server must support it, but this results in the document being signed with the publisher's certificate. This won't "date" the signature, but combined with a blockchain solution like this could prove that a web server delivered content X at date Y.
Thanks for saying it so clearly, this is exactly the first thing I thought (and it reduces the value of the functionality by heaps, since everything can be forged).
This wasn't clear from the link, as there was very little technical information provided.
Do you have documentation of how this is done?
So for that, it's useful.
If so, one should be aware of a kinda sneaky attack that might be feasible.
Let's say I want to prove my clairvoyance by predicting the winner of the 2020 presidential election. I generate a text file containing the name of my pick. Then I hash the result. Next, I publish the hash value to the block chain using an OP_RETURN output.
On November 4, 2020, I publish the transaction ID containing the hash of my predicted winner. I also publish the text file used to generate the hash value. Clearly, I must have known that hash value when the transaction was confirmed, implying that I knew the winner of the election at that time as well.
Except I cheated. Instead of making just one transaction, I made two. The second one contained an OP_RETURN output with the hash value of a document containing the name of the opponent.
On the day after Election Day, I simply publish the transaction ID I know to contain the winner, and never mention the existence of the other transaction.
Depending on how SingleFile works, it may be possible to do a similar attack.
Also, you don't exactly get a proof that pinpoints the date. Rather, you get proof that the hash value existed as of the date the Bitcoin transaction gets its first confirmation.
Another way to prevent "double spending"/attacks like these, you can burn Bitcoin with each publishing of the hash, ensuring that it is at least costly for an attacker to preemptively timestamp all of the probability space.
Your security analysis looks correct to me.
[1]: https://roughtime.googlesource.com/roughtime
[2]: https://groups.google.com/a/chromium.org/d/msg/proto-roughti...
However, there are solutions that can protect against this type of attack. The attack you describe above is similar to what is known as a "double-spend" attack. Using a digital signature you can prove that a particular key (and therefore user) signed a particular transaction, but cryptography alone cannot prove that there was not another competing transaction that spends the same funds. Prior to Bitcoin, digital currencies required a central database to prevent these double-spends. With Bitcoin and subsequent cryptocurrencies this attack is prevented via a distributed database with a consensus algorithm.
Peter Todd (and others) have generalized prevention of double-spends to the idea of a "single-use seal" which can be implemented using the Bitcoin blockchain as an implementing decentralized service. [1] The idea is that there is some kind of formal protocol used (a higher layer in the protocol stack) and in the example above, the political prognosticator ties the hash of their single prediction of the winner of the presidential election to a particular Bitcoin UTXO (unspent transaction output) which serves a "single-use seal". The combination of the higher-layer messaging protocol and the "lock" to a single commitment tied to the UTXO limits the prognosticator to a single prediction. They don't have to reveal their prediction at the time it is made, but they do have to publicly (or privately) commit via a higher-level protocol to the single prediction.
[1] https://petertodd.org/2016/commitments-and-single-use-seals
Update: For the content hash of the (SingleFile) web page, you could have a sequence of these single-use seals each creating a new, linked transaction (UTXO) every time the website content is changed. This would allow users to verify the current content or what the content was at a particular time in history. As long as the root of this chain was somehow published (uniquely) at some start time in the past (in OpenSeals Terminology [2] this is called a "Root Proof".
[2] https://github.com/rgb-org/spec/blob/develop/01-OpenSeals.md...
With Woleet, you must keep the original payload (file + personal identification) that was timestamped, for eternity. In the event of a copyright violation, you must be able to prove in front of a judge that hash of the file in your possession is indeed what exists on the Bitcoin blockchain.
With IPFS, you only need to save the hash of the payload (or a human-readable name, with IPNS [2]), to convince the judge that you authored the original file at a certain point in time. Additionally, IPFS has version control. This means that if you want to prove to a court that some revision to the T&Cs of your product were made before a certain date, it makes more sense to use IPFS.
[1] https://ipfs.io [2] https://docs.ipfs.io/guides/concepts/ipns
IPFS doesn't seem to have anything about "version control" as onyb mentioned.
https://opentimestamps.org/ https://petertodd.org/2016/opentimestamps-announcement
Journalists have a bad habit of linking to tweets which are often ephemeral because accounts are deleted, tweets are deleted, or accounts go private.
Another problem is where publishers themselves change the open graph meta (or whatever it's called) after a tweet has been published. One memorable example (for me) is where Washington Post changed the image on an article about Alexandria Ocasio Cortez's Jewish heritage depicting her with her hands clasped similar to the Happy Merchant meme[0]. Obviously they realized the resemblance enough to change the image, but didn't comment on it. If you look at the original tweet[1] now, you can see the replies look completely out of context because they changed it.
[0]:https://knowyourmeme.com/memes/happy-merchant [1]:https://twitter.com/washingtonpost/status/107212454556018278...
A few questions, how does notarising the tls handshake vs the entire document differ in terms of “proof”.
Is one form of proof better than the other? Or do they prove something different?
If a video surfaces that’s faked from an existing hashed one, that’s a very easy proof.
As a product it could be an independent video verification service.
On-demand: A client wants to release a video and make sure that it’s trusted. They contact the company first, some process is done to make sure that they represent who they say they represent, and the content is hashed and added to the blockchain prior to release.
Ongoing: when a client uploaded a video to the web, the system would automatically grab it, generate the hash, and add it to the blockchain along with the metadata of where it was found and who the client was.
For large clients, it could even include video cold storage.
For marketing/promotion, the company could automatically process public media from well-established social media feeds.
It would be up to the creator (or some third party) to keep the original unedited video so that if there was ever a dispute about a fake surfacing that original could be undeniably verified to be the authentic one.
The website, and the metadata about when it was stored including a signature from etched.page can be unpacked directly from chain.
The website proof on btc blockchain seems to touch on these concepts.
The W3C Digital Verification Community Group is working on a number of interesting solutions for digital verification as well. https://www.w3.org/community/digital-verification/ https://w3c-dvcg.github.io/http-signatures/
Does anyone have any experience working with the w3 digital verification stuff to help inform us on how this is progressing in the wild?
as a result of this model, there's no way to verify the content is 'correct', since the user can arbitrarily modify it before submitting
so my understanding of this is that cryptographically it can be used to say that a user submitted some content at a given time.
what's the use case for this?
Indeed, once it becomes commonplace, videos that do not have a blockchain record recorded close to creation time will be suspect. The less time an AI has to alter a video, the less likely alteration is.
FYI, the SHA256 of the page is stored in Bitcoin, not the full page.
C:// Content Addressable Files over Bitcoin https://c.bitdb.network
I also use httrack to download files offline, which I can then have DEVONThink index. Bam, offline search engine!
Does it even run on a Linux server? The website is super low on information.