【发布时间】:2020-01-25 10:53:37
【问题描述】:
我正在开发一个文档管理系统,为了检测文件的变化/文件的重复,我使用 sha256 来获取摘要进行比较。这是在 python 中完成的。系统可以配置为在存储之前对文件进行加密。
问题是存储未加密文件的摘要是否仍然安全。
此摘要用作存储文件的标识符,也用于检测添加到系统的文件是否已存在。为此目的,我可以接受 sha256 算法的碰撞机会。我还读到 sha256 生成的摘要不能用于重新创建原始数据。
假设无法从哈希中重建文件并且文件以加密形式存储的事实,保留原始哈希以进行比较/搜索应该是安全的......还是我应该重新考虑我的策略?这些比较将在应用程序内部进行,无论如何都不会暴露给用户。
【问题讨论】:
-
您是否假设攻击者将文件替换为旧版本?这称为回滚攻击。
-
你在InfoSec.SE问这个问题可能会更好
-
您到底关心什么?可逆性?某种基于哈希冲突的攻击?
-
文件是否唯一?因为如果它是其他地方可用的文件,它的哈希值很可能也在字典中。
-
只要你存储的文件是一定长度的纯二进制文件(不是非常小的 ascii 文本文件,小于例如 12 字节),文件数据就无法重建。对于小的 ascii 文件(甚至可以通过未加密存储的文件大小来识别),存储 SHA-256 可能会导致安全问题(暴力生成所有可能的文档)。因此,我会为文档设置最小大小为 ~20 字节。
标签: python encryption public-key-encryption sha256 hashlib