如何通过技术手段证明一个文件的作者?

3 天前
 shendaowu
如果不能彻底证明,大体上证明也行。或者说可以作为证据。再退一步,用某种手段之后其他人再伪造证据就很难了也行。也可以继续往后退。希望大佬说方法的时候能提一下退到什么程度了。

我现在用的方法是在文件中包含并声明文件的创作者在网上的常用 ID ,然后把文件的 SHA256 写到比特币和以太坊的区块链里。只写这个 SHA256 ,其他的什么都没有。如果我的所有账号都被盗的话是否就不行了?我搜了一下,直接公布身份证号的 SHA256 风险很大,能撞出来。有没有其他的改良的方法?身份证号再加上一句不公开的话?这还有证明的效力吗?如果万一有人抄袭,公证处能公正吗?大概要多少钱?我感觉这种方法可能是有漏洞的,毕竟别人可能说是别人“栽赃”我,就是说可能有另外一个人做了这些证明的工作,并且我也接受了这个人的“栽赃”。另外其他技术上的漏洞还有没有?

我问了一下 ChatGPT ,它说要还要同时在区块链中写入作者、创建时间和文件名。但是比特币才能写入 80 个字符,感觉会写不下。存 SHA256 的时候不二次转换?但是这可能会导致一些人获取的时候不那么方便。所谓二次转换是存储在比特币的区块链里的数据要转换成 0x 那种表示方式在区块链浏览网站显示的时候才不需要转换。如果不转换可以节省一点空间。
2064 次点击
所在节点    问与答
27 条回复
EchoWhale
3 天前
你是否在找“数字签名”?
churchmice
3 天前
lz 的奇思妙想挺多的
你这问题就是数字签名,跟区块链啥的都扯不上关系
你是否已经魔怔,啥玩意都要跟区块链上走一遭
shendaowu
3 天前
#1 @EchoWhale 我忘了说了,这个还需要证明时间,我搜了一下数字签名好像并不能证明时间,可能还需要配合可信时间戳。另外这两个想要靠谱好像都需要比较多的钱吧?在比特币和以太坊里写几块钱就行了,效果还不差。
shendaowu
3 天前
#2 @churchmice 请看我三楼回复。
hcocoa
3 天前
@shendaowu #3 你随便找一个安装包右键属性-数字签名,看看有没有时间戳
Tiller
3 天前
@shendaowu 数字签名怎么可能没记录时间戳啊。。你直接打开微信的程序看一眼不就好了
shendaowu
3 天前
#5 @hcocoa
#6 @Tiller

我问了一下 ChatGPT ,他说普通数字签名附带的时间戳的效力不如可信时间戳,不过我不确定是不是幻觉。如果事实如 ChatGPT 所说的话,感觉你们两个有点类似那个对哈希一知半解,结果把自己的身份证号的 SHA256 发到知乎,然后身份证号被撞出来的那个人。
DAMNCRAB
3 天前
打印出来 邮政邮给自己 不拆(
WhatMelon
3 天前
@shendaowu 身份证号 18 位,撞出来 10^18 尝试(不考虑 x),实际上把自然人年龄,各个省市的身份证前缀确定下去还能减少尝试次数

但是普遍说的私钥都是 2^256 次尝试吧
Tiller
3 天前
@shendaowu 真是魔怔人。CA 证书选择权威机构,基本不可能被伪造,在进行写入时间戳确保证书在过期或者被吊销之后都可以保证有效。

你告诉我其他人怎么伪造一个 CA 证书?

你的问题是如何用技术手段证明一个文件的作者,用证书数字签名不就够了吗?

如果你把问题改成“如何证明作者在某个时间写了某个软件?”,那就麻烦出门直奔邮政,挂一封挂号信,寄给自己。

我往身份证号里面加盐,同样能够用 sha256 ,你来撞一个给我看看?
olaloong
3 天前
@hcocoa #5 @Tiller #6 是要有可信时间戳的,点开数字签名详细信息,附署里那个签名就是可信时间戳的。毕竟好的数字签名,不仅要防止第三方伪造,也不能让所有者伪造。

@shendaowu #4 文件不大还是邮寄一份给自己吧,靠谱。区块链什么的真搞起来法院不一定认
0o0o0o0
3 天前
数字签名的时间戳也是由时间戳提供机构提供的,和 CA 差不多,也就是说这个可信性也是中心化的,你只要信任这个机构就可以。
shendaowu
3 天前
#10 @Tiller 我想起来了。应该有的可信时间戳是基于比特币的。只要比特币不崩,那么一直就是可信的。不必考虑人为的因素。我搜了一下,好像有黑客入侵过证书颁发机构,并造成过不好的影响。当然能不能伪造我就不知道了。我也不想问 ChatGPT 了,大佬如果知道的话能不能直接告诉我一下?另外我描述里说了。我还想证明是我这个人是那个文件的作者,而不是关联到一些账号和证书上。当然如果不能就算了。
shendaowu
3 天前
@0o0o0o0 #12 我之前好像听说过基于区块链的可信时间戳,现在还有没有我不知道。我这记性,我前几天就使用过一个据说是基于比特币的可信时间戳: https://opentimestamps.org/ 。不过我有点看不明白具体是怎么证明的,所以我主要要是打算用这个网站作为一个辅助,主要还是自己把文件的 SHA256 保存在比特币的区块链里。
michel00l
3 天前
代码打包 ->生成 hash-> hash 打印邮政盖戳 ->代码包时间戳 get
从而时间维度上证明代码包的原创性

司法实践的话建议问问律师
Kaiv2
3 天前
文件: hash
文件 + 时间戳: hash
同时发布到各个平台
paopjian
2 天前
你是来推销比特币的吧, 三句话不离比特币区块链
dhb233
2 天前
就是文件签名机制,上链的话,应该只把哈希值上链,元数据还是在链外存储。
要说方便的问题,那不太可能,文件内容你总是上不了链的。
至于说时间戳,要么第三方签名确保时间戳的有效性。
要么就是签名文件的时候,加上外部和时间相关的随机数据,比如相关时间段的区块哈希值
dhb233
2 天前
@dhb233 使用哈希值这个好像有点多余。。如果上链,可能直接按照上链时间来算也差不多。毕竟历史区块的哈希值还是很容易获取。
如果要保证使用历史时间戳签名的时间准确性,那时间戳相当于数据,这个验证是没有很好的办法的。
shendaowu
2 天前
@paopjian #17 感谢。你的话让我小悟了一下。我悟到在网上发言大部分人都会假设你有最坏的动机。这样想就感觉好多了,没有那种类似所有人都在针对我的感觉了。毕竟别人很可能也不是因为跟我有仇,只是不想被骗而已。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1094200

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX