有没有什么性价比比较高的对称加密算法,适合用于关系型数据库的逐行加密?

2021-06-25 05:19:13 +08:00
 LeeReamond

如题,需求是有一客户端业务,希望进行一个加密,防止低成本破解。目前想法是服务端生成秘钥,每次客户端读取数据就重新获取一次 token 。

问题是,希望能在加密的同时保证一定程度的关系型数据库的能力,比如获取主键范围 10-100 的 90 行数据,不用进行整个数据库的加密和解密。

数据量不是很大,大概十万行以内,每行几十列。有合适的加密算法适合逐行加密吗,可以做到不给客户端太大的卡顿?

1206 次点击
所在节点    问与答
10 条回复
kxjhlele
2021-06-25 06:07:57 +08:00
用程序加密数据在插入数据库不就好了,
LeeReamond
2021-06-25 06:15:23 +08:00
@kxjhlele 每行都需要加密解密,需要一个时间和空间复杂度都合适的算法
kxjhlele
2021-06-25 07:34:49 +08:00
支持 avx 加速的,随便哪个都足够你用了,才 10 万行,几十列,us 秒级别的
LeeReamond
2021-06-25 08:41:01 +08:00
@kxjhlele 大佬有没有连接指个路。搜 avx 加速+加密算法没有什么有效信息
min
2021-06-25 10:13:01 +08:00
snoopyhai
2021-06-25 10:17:53 +08:00
我想知道,这样加密,你不模糊搜索了么?
3dwelcome
2021-06-25 11:32:06 +08:00
客户端加什么密哦。

因为在客户端加密,然后客户端解密,安全性都是自我安慰。远不如服务器对数据加密,客户端解密来的安全。
LeeReamond
2021-06-25 11:33:33 +08:00
@3dwelcome 是服务端加密,只不过解密既然放到前端总是有办法解的,成本问题
3dwelcome
2021-06-25 11:42:45 +08:00
@LeeReamond 有服务器就比较好办。

如果是我的话,加密时,服务器提供按照 TableName + RowID 组合生成对应每条记录的密钥 API,并对数据库内容进行加密。

前端解密时,通过访问服务器 API 获取单条数据的解密密钥。这样就没办法直接拖库了。
3dwelcome
2021-06-25 11:48:40 +08:00
至于具体的算法,都写在 TLS 规范里的。

个人推荐 google 的 ChaCha20,因为足够简单,JS 可实现。

当然有条件调用 CPU 硬件加速,AES 应该是首选。

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

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

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

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

© 2021 V2EX