客户端加密和 server 端加密

1次阅读

共计 577 个字符,预计需要花费 2 分钟才能阅读完成。

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

帖子里说“原来阿里云盘在服务端是不加密的”然后一堆人附和,说加密就不能秒传。看来大家对加密的概念还很生疏。

对阿里云不熟,就拿 aws 的 s3 来说吧。s3 默认对于每个文件都是服务端加密的,而且是每个文件一个密码。但即使是这样,也不影响设计秒传,不影响一个用户看到他人的文件。

所谓 server 端加密,是指[文件不会明文写到磁盘上]。在上传时用随机密钥加密文件,随机密钥再用预先配置的非对称密钥加密,然后将随机密钥加密后的文件、非对称加密后的随机密钥分别存储在 aws 中。在下载时,aws 会先解析成明文,然后使用 https 传输到用户 / 业务服务器。所以无论谁去下载你的文件,aws 都会给他解密后的版本。

至于秒传,是第一次上传时保存整体的哈希,以及每一个文件块的哈希,类似 bt 种子。再次上传时,用户本地生成一个新的哈希,服务端一看,在我的 redis 里面已经有这个种子了你就秒传了,跟文件存储一点关系都没有。

如果你希望服务器不能看你的文件,那要做的是客户端加密,也就是文件已经加密好上传到服务器,服务器根本不知道如何解密当然也就没法生成缩略图或者秒传了。

所谓服务端加密指的是静态加密,写盘时加密。再严格一点给你加个内网传输加密,也就是在内网的 http 和数据库连接什么的给用 tls 保护一下。数据在内存里可都是明文。

正文完
 0