如何让一个文件永远携带一个信息,并且不可更改,不影响该文件正常使用?

2020-06-07 16:43:29 +08:00
 tctc4869

如题。对一个文件内部写入一个字符串信息,并且写入后,无法再次写入,不可更改。或者让更改难度难度很大,就像破解反编译 c++一样

不会影响到文件的使用,切换了操作系统也不会发生改变。至少能包含大多数文件格式,文本文件,图片,文档文件等,能被程序读取写入的信息。专业性质的文件不包括在内。

如何做到?用什么工具?或者什么编程开发语言能做到

8771 次点击
所在节点    程序员
66 条回复
mingl0280
2020-06-07 16:45:09 +08:00
签名
LnTrx
2020-06-07 16:45:57 +08:00
PDF+数字签名?
retanoj
2020-06-07 16:46:30 +08:00
如果对“文件”所在环境没有限制,那好像是无解的
mingl0280
2020-06-07 16:49:46 +08:00
@retanoj 对,离线文件无论如何做反修改都没啥用,签名+联网验证是唯一的解决方案
hello2060
2020-06-07 16:53:02 +08:00
文件就是一堆二进制数据,不可能无法编辑的。也就是说数据肯定可以被破坏。那你打开的时候必须判断文件是否有效,无效肯定就不打开了,所以不存在不影响使用的问题。
tctc4869
2020-06-07 16:57:42 +08:00
@retanoj 如果就考了一个操作系统呢?比如只在 Windows 上
nguoidiqua
2020-06-07 16:58:27 +08:00
你想想别人大费周章搞区块链、搞共识算法到底是为什么?

因为没有这样的技术。
retanoj
2020-06-07 17:04:42 +08:00
@tctc4869
那感觉可以参考已存在的各种“数据防泄密( DLP )”系统
nightwitch
2020-06-07 17:09:37 +08:00
GPG 对文件进行签名, 在其他系统上验签后提取文件。
reus
2020-06-07 17:13:50 +08:00
做不到
neteroster
2020-06-07 17:24:52 +08:00
「对一个文件内部写入一个字符串信息,并且写入后,无法再次写入,不可更改。」做不到。
能做到的是用类似 GPG 的软件签名,确保数据被更改后能被发现。
systemcall
2020-06-07 17:30:32 +08:00
感觉不行
如果是做 DRM 的话,倒是可以考虑数字水印。别的东西就不太清楚了。
如果是公司里面用,有很多保密系统可以考虑。可以控制硬件的情况下,也有很多方法,发现破解了就 ban 机
jugelizi
2020-06-07 17:32:57 +08:00
说下你的原始需求 感觉你的想法已经偏离了
Leon6868
2020-06-07 17:36:27 +08:00
如果对于文本文档,这个问题好像无解,因为文档在可视层面是可以直接复制的
只能增加发现和修改水印的难度(比如无宽字符)

视频的话,还可以用一下水印,不过也只能增加破解难度
CNife
2020-06-07 17:44:18 +08:00
你要的是类似水印的功能,一般只能针对特定用途、特定数据类型专门定制,很难搞一个通用的。
比如,图片的水印就是图片携带的,很难更改(除非用专门的去水印算法和工具),不影响图片的使用(人在看图片时可以「手动」忽略水印,只关注图片本身)。
我有一个学长,硕士毕业论文做的地图水印,同样需要针对地图,提取地物的特征来制作水印,再嵌入到地图里,做到既不被普通用户发现,又能抵抗简化、旋转、放缩等去水印攻击。当然,具体的算法我也不懂,只是简单说一说水印功能的复杂性。
像纯文本这样的文件就很难搞水印,因为所有数据都直接暴露给了用户,用户不需要任何额外工具就能看到文件每一个比特,改动任何一个字节的数据都能被用户发现。
从信息的角度看,水印一定会改变原文件的信息量,扭曲原文件的信息,像视频、图片这样冗余信息量大、用户无法直接看到每一个字节的数据就容易做水印,但很难有一个通用的数据水印。
dream7758522
2020-06-07 17:45:04 +08:00
这不就是给文件加签名吗?无法再次写入,不可更改。
xiangyuecn
2020-06-07 17:52:06 +08:00
加上这个:“对一个文件内部写入一个字符串信息” 限制,无解。

去掉这个:“对一个文件内部写入一个字符串信息” 限制,n 个解。

简单点的计算文件 hash,一个文件写入后无法再次写入==不可更改,更改难度奇大( md5 碰撞倒是有例子,sha1 文件不知道有没有例子),涵盖所有类型文件,任意主流操作系统兼容😂
imn1
2020-06-07 17:56:54 +08:00
“不能被轻易修改”,符合这条基本都是鉴权加密
其他写入但不影响使用就很容易
tctc4869
2020-06-07 17:57:03 +08:00
@xiangyuecn md5 sha1 与这个无关。我的是把文件内塞入签名信息。
tctc4869
2020-06-07 18:03:59 +08:00
@CNife 好吧,如果缩小范围,只考虑图片文件,视频文件,pdf 文件,epub,音频文件,只考虑这些的话,那有软件能做么?我是说塞入字符串去,然后又能被读出来,有相关软件么?

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

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

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

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

© 2021 V2EX