Crates.io | provenance-rs |
lib.rs | provenance-rs |
version | 0.3.0 |
source | src |
created_at | 2024-03-03 10:22:41.288614 |
updated_at | 2024-03-17 13:01:37.484802 |
description | A history-of-ownership protocol for securely proving where a document came from. |
homepage | https://github.com/beyarkay/provenance-rs |
repository | https://github.com/beyarkay/provenance-rs |
max_upload_size | |
id | 1160511 |
size | 398,180 |
Provenance is a protocol for securely specifying the historical ownership of images, videos, and more. It conclusively tells you whether or not an image was AI generated.
This is the reference implementation for the provenance protocol.
Without provenance-rs:
With provenance-rs:
provenance
?The idea behind the provenance Protocol is that good actors should be happy to sign their work. A reputable photojournalist should have no problem with signing a photo that they took before sharing it online, so that everyone knows who took the photo (and who to ask questions of if the photo looks suspicious).
A bad actor probably wouldn't want to sign their photo, because they would want to try and pass it off as being from a reputable source. If the bad actor signed the photo themselves, then everyone would know it's from an untrustworthy source and would quickly discount it.
If you come across a photo that looks suspicious and isn't signed by anyone, you should be suspicious. Why would a good actor not claim ownership over the photo? Only an untrustworthy actor would not sign a photo, so you should treat the photo with extreme caution, and expect that it's faked in some way.
That's okay! The internet is anonymous and that's great. For sending funny photos or memes to friends or just casually posting things online, you don't really care about verifying that the meme came from a reputable source. So there's no need to use the provenance protocol.
However, right now there's no way to know where images and videos came from. While it's not really important that we know who came up with the latest meme format, it's vitally important that if we see a suspicious or incriminating photo online, that we be able to tell who took the photo, if they used Photoshop to edit the photo, and how that photo got shared around the internet.
Misinformation is rampant on the modern internet, and requiring accountability is one way to combat it.
As an end user, you should request that the services you use (social media, new websites, etc) should use the provenance protocol so that you can know where your information comes from. If you see a photo or video that doesn't have provenance, you should be suspicious
The provenance protocol is designed so that multiple layers of ownership are assigned to one piece of data as it gets modified and shared. At each step, an organisation or device's private cryptographic key is used to digitally sign the piece of data. This signature is then passed along with the original data. Anybody can confirm, by comparing the signature with the organisation or device's public key, that the data was signed by that organisation/device, and that the data hasn't been tampered with after signing.
An example might help:
www.share-it.com
under his username @john
. Share-It has assigned
their user @john
a public-private key pair, and signs the uploaded image
with @john
's key pair.@john
uploaded the photo to www.share-it.com
@john
, Share-It, Adobe, or
Canon. They might not handle their secrets securely or some other
vulnerability. But at least now you know who to point fingers at.Compare the above to what would happen without the provenance protocol. Some
user @john
would upload an unbelievable photo to Share-It, and everyone would
just have to kinda trust that the photo's not edited? Or do some serious
digital sleuthing to try and figure out if the photo's been doctored.
This rust crate provides the reference implementation of the provenance
protocol. You can cargo add provenance-rs
to use it as a library.
TODO: or
cargo install provenance-rs
to install it as a command line tool.
The provenance protocol is inspired by antigen presentation, a process where healthy cells showcase fragments of their internals to passing immune cells as proof that the healthy cells haven't been taken over by a virus. Passing immune cells kill any cells that either 1) aren't presenting any internal fragments or 2) are presenting the wrong sort of internal fragments.