对单个文件加密是不是无法做到绝对安全?

2021-05-20 11:23:34 +08:00
 join
我想设计一个文件格式,需要满足以下特点:
1. 加密,能多安全有多安全。
2. 可以对整个文件搜索。
3. 数据一直是增量的,但不会增长太块,假设每天增长 100kb 好了。
4. 这个文件可以同步放到公有云上面。
5. 用户可以使用弱密码,因为频繁使用强密码很难记得住,输入也麻烦。

现在我认为自己可能有几个逻辑上的悖论:
1. 加密和搜索是冲突的,如果我要做搜索功能,需要解密所有数据,然后临时放到磁盘或内存,这一步就很难保证安全。
2. 弱密码和绝对安全是冲突的,我设计的是加密文件格式,理论上拿到这个文件后暴力穷举就可以了。否则只能做到像 bitcoin 那样使用复杂的密码增加暴力破解的难度。
3. 如果数据是增量的,数据越大,搜索就会越耗时间。写入和读取可分区块来做。
3952 次点击
所在节点    信息安全
30 条回复
sillydaddy
2021-05-20 12:13:14 +08:00
@vk42 >“而且和 lz 需求并不太符合,lz 是要本地搜索”

楼主说的是“加密和搜索是冲突的,如果我要做搜索功能,需要解密所有数据,然后临时放到磁盘或内存,这一步就很难保证安全。”
意思就是,楼主想在不解密的情况下,实现一些操作,这样尽量减少暴露明文数据的风险。如果这样理解的话,全同态加密就是为了做这个事情的。本地或者云,差别不大——因为它们都不被楼主信任。
join
2021-05-20 12:16:08 +08:00
@sillydaddy 其实也不用做到你说的这样。从用户的角度考虑,我需要在搜索的同时保证数据安全,只要能保证解密后的数据临时存放的那个地方安全就可以了。
vk42
2021-05-20 12:18:06 +08:00
按 lz 后面#6 的补充来看他并没有需要本地不可信。本地完全不可信那这个问题就没有意义了,你要在哪里做明文加密呢?另外本地环境比同态方便得多的 TEE 方案很多,真没怎么见过在本地用同态的……
0TSH60F7J2rVkg8t
2021-05-20 12:26:39 +08:00
楼主可参考 Cryptomator 的安全方案:
https://docs.cryptomator.org/en/latest/security/architecture/
swulling
2021-05-20 12:37:20 +08:00
如果条件是

> 本地绝对可信,只需要保证用户可以把一个加密的文件放到任意的公有云上而不被破解

那干脆本地放弃加密,在上传的时候对称加密即可,密钥保存到本地。
join
2021-05-20 12:42:23 +08:00
@ahhui 谢谢,其实我的设想更类似于 1password 密码管理器的文件格式这样的。
@swulling 那可以 dropbox 同步的密码管理器安全性如何?是不是你说的这样?
chinvo
2021-05-20 13:36:46 +08:00
同态加密可以对密文进行运算和检索.
way2explore2
2021-05-20 13:50:42 +08:00
同态加密了解一下,如果题主能实现高性能同态加密,我一定投你
no1xsyzy
2021-05-20 14:08:46 +08:00
KeePass 就是单文件加密,只在本地解密
可以用密钥文件来防止暴破数据库,需要分开存储(比如把密钥文件放在随身的 U 盘里,要暴破还需要同时去暴破这些比特比如 1024 bit )。

远端搜索的话只能靠同态加密了。但是再怎么同态,总会粗略暴露「搜索的命中次数」(通过搜索结果的大小)
那样的话用户追踪仍然是有迹可循的。
ochatokori
2021-05-20 15:01:10 +08:00
如果加密方法不和内容位置相关的话是不是可以做到加密搜索?
比如
明文: abcdef
加密方法: (a,密钥)=>1,(b,密钥)=>2...
密文:123456
那搜索的时候只要(关键词,秘钥)=>密文关键词

在密文里面搜索 密文关键词 然后再解出来这样

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

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

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

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

© 2021 V2EX