https://www.v2ex.com/t/1073207
帖子里说“原来阿里云盘在服务端是不加密的”然后一堆人附和,说加密就不能秒传。看来大家对加密的概念还很生疏。
对阿里云不熟,就拿 aws 的 s3 来说吧。s3 默认对于每个文件都是服务端加密的,而且是每个文件一个密码。但即使是这样,也不影响设计秒传,不影响一个用户看到他人的文件。
所谓 server 端加密,是指[文件不会明文写到磁盘上]。在上传时用随机密钥加密文件,随机密钥再用预先配置的非对称密钥加密,然后将随机密钥加密后的文件、非对称加密后的随机密钥分别存储在 aws 中。在下载时,aws 会先解析成明文,然后使用 https 传输到用户/业务服务器。所以无论谁去下载你的文件,aws 都会给他解密后的版本。
至于秒传,是第一次上传时保存整体的哈希,以及每一个文件块的哈希,类似 bt 种子。再次上传时,用户本地生成一个新的哈希,服务端一看,在我的 redis 里面已经有这个种子了你就秒传了,跟文件存储一点关系都没有。
如果你希望服务器不能看你的文件,那要做的是客户端加密,也就是文件已经加密好上传到服务器,服务器根本不知道如何解密当然也就没法生成缩略图或者秒传了。
所谓服务端加密指的是静态加密,写盘时加密。再严格一点给你加个内网传输加密,也就是在内网的 http 和数据库连接什么的给用 tls 保护一下。数据在内存里可都是明文。
1
caola 70 天前
像这种网盘也许他的硬盘是加密就已经顶天了,别指望给你每个文件单独加密。单独加密了可不利于他检索你的”敏感“内容文件
|
2
lairdnote 70 天前
铭感是一方面。 给一个 https 加密已经是对的起了。
|
3
whileFalse OP @caola 阿里云 oss 就是照着 s3 做的。至于阿里云盘是不是用阿里云 oss 我不清楚,你可以看下他的返回 header 。
|