3 个版本 (重大更改)
0.3.0 | 2024 年 3 月 17 日 |
---|---|
0.2.0 | 2024 年 3 月 17 日 |
0.1.0 | 2024 年 3 月 3 日 |
#1098 in 加密学
每月 22 次下载
340KB
403 行
provenance-rs
Provenance 是一种协议,用于安全地指定图像、视频等的历史所有权。它最终可以告诉你图像是否由 AI 生成。
这是 provenance 协议的参考实现。
它解决了什么问题?
在没有 provenance-rs 的情况下
- 你看到了一张教皇穿着病态的气垫夹克的照片。
- 你不知道教皇竟然有这么多潮品。生活真美好。
- 你的朋友告诉你,这张图片实际上是 AI 生成的。
- 你感到怀疑,不知道该相信谁。
- 经过一番争论,你的朋友说服你,教皇并没有那么多时尚感。
- 你的失望难以言表,你的这一天毁了。
有了 provenance-rs
- 你看到了一张教皇穿着病态的气垫夹克的照片。
- 🚨 这张图片没有任何来源 🚨。如果照片是真的,为什么没有人声称拥有它?摄影师可能通过将照片卖给新闻网站赚很多钱,所以为什么他们不用
provenance
在照片上署名呢? - 你决定图片不可信,然后继续你的日子。
它是如何工作的?
provenance 协议背后的想法是,好的行为者应该愿意在他们的作品上签名。一个信誉良好的摄影师在分享在线照片之前签署照片应该没有问题,这样每个人都知道是谁拍了照片(如果照片看起来可疑,可以向谁提问)。
一个坏的行为者可能不会想签署他们的照片,因为他们会试图将其伪造成来自可信赖来源的照片。如果坏的行为者自己签署了照片,那么每个人都会知道它来自一个不可信赖的来源,并且会很快将其排除。
如果你发现一张看起来可疑且无人签名的照片,你应该感到可疑。为什么一个好的行为者不会声称拥有照片?只有不可信赖的行为者不会签署照片,所以你应该极其小心地处理照片,并预期它在某些方面是伪造的。
但我不想让每个人都知道我发布的所有内容
没关系!互联网是匿名的,这很棒。对于发送搞笑照片或迷因给朋友或者随意在网上发布内容,你并不真的关心验证迷因是否来自可信赖的来源。所以没有必要使用 provenance 协议。
然而,目前还没有办法知道图片和视频的来源。虽然我们并不真正关心是谁创造了最新的梗格式,但如果我们在网上看到一张可疑或指控性的照片,我们能够知道是谁拍摄的这张照片,他们是否使用Photoshop编辑了照片,以及这张照片是如何在互联网上传播的,这一点至关重要。
在现代互联网上,虚假信息泛滥,要求问责制是应对这一问题的方法之一。
我该如何使用它?
作为终端用户,你应该要求你使用的服务(社交媒体、新网站等)使用来源协议,这样你就可以知道你的信息来自哪里。如果你看到一张没有来源的照片或视频,你应该保持怀疑态度。
它是如何工作的?(幕后)
来源协议被设计成在数据被修改和共享时,为一条数据分配多个所有权的层次。在每一步,一个组织或设备的私有加密密钥被用来对数据条目进行数字签名。然后,这个签名与原始数据一起传递。任何人都可以通过将签名与组织或设备的公钥进行比较,来确认数据是由该组织/设备签名的,并且在签名之后数据没有被篡改。
一个例子可能会有帮助
- 约翰正在森林中散步,并留下了他的佳能相机和一些老虎。其中一只老虎用相机拍了一张自拍。
- 当相机拍摄自拍时,它使用该相机唯一的私有密钥对图像进行签名,并将签名与图像一起存储为单个文件。这个签名验证了这张照片来自那台佳能相机。
- 约翰对照片感到惊讶,但白平衡不对。他将包含原始照片和相机签名的文件上传到电脑,并使用Adobe Illustrator调整白平衡。
- 当他保存文件时,Adobe Illustrator对编辑后的照片+相机签名对进行签名,从而将原始照片由特定相机拍摄的来源与原始照片以某种方式被Adobe Illustrator编辑的来源结合起来。
- 然后,约翰将签名和编辑后的照片上传到他的最喜欢的社交媒体网站
www.share-it.com
,使用他的用户名@john
。Share-It为他们的用户@john
分配了一个公钥-私钥对,并使用@john
的密钥对上传的图像进行签名。 - 起初,没有人相信这张照片,但照片有来源。他们可以查看来源,并确切地知道
- 用户
@john
将照片上传到了www.share-it.com
- 照片是在Adobe Illustrator中编辑的
- 照片是由佳能相机拍摄的
- 用户
- 现在,并不能保证你信任用户
@john
、Share-It、Adobe或佳能。他们可能没有安全地处理他们的秘密或存在其他漏洞。但至少现在你知道该指责谁了。
将上述内容与没有来源协议会发生的情况进行比较。某个用户 @john
会将一张令人难以置信的照片上传到Share-It,而每个人只能多少有点信任这张照片没有被编辑?或者进行一些严肃的数字侦探工作,试图弄清楚这张照片是否被篡改。
如何实现它?(作为开发者)
这个Rust包提供了可追溯协议的参考实现。您可以使用 cargo add provenance-rs
将其用作库。
待办事项:或者使用
cargo install provenance-rs
安装它作为命令行工具。
灵感
可追溯协议受到抗原呈递的启发,这是一种健康细胞向经过的免疫细胞展示其内部片段的过程,以证明健康细胞没有被病毒占领。经过的免疫细胞会杀死以下任何一种细胞:1) 没有展示任何内部片段或2) 展示了错误类型的内部片段。
依赖关系
~7–22MB
~313K SLoC