如何在nginx上进行即时解密?

4
我用AES 256加密文件并存储在nginx上,通过GET请求打开它们,并使用密钥作为查询参数。例如http://www.my_secure_nginx.com/files/secret_audio.mp3?key=mysecretkey。您能否提供解决方案以在nginx文件服务器上执行此操作(可能是现有的过滤器),以保持分块响应。换句话说,我需要在nginx上实时解密文件。

我对这个话题也很感兴趣。你有没有已经准备好的示例代码?比如解密代理流量的代码? - aze2201
1个回答

0

最简单的方法是为Lua中的nginx编写自己的模块。Lua-resty-string模块已经支持AES。添加一些文件处理代码和读取代码,就完成了。Lua模块非常快,因为它们在非阻塞I/O中工作。

记住的重要部分是处理填充 - 必须将原始文件大小存储在某个地方(DB、xattr等),并传递给或由nginx读取。

另一个非平凡的主题是随机访问的最终支持。数据必须以CTR模式进行AES加密。XTS、CBC、CFB也可以,但需要更多的开发工作。


CTR模式的困难在于相同的密钥永远不能与不同的数据重复使用。这就是大多数CTR违规行为的根源所在。 - zaph
数据安全是一个多层次的话题 - 即使是最强大的算法也可能因为不理解解决方案复杂性而变得脆弱。通过使用每个文件的良好随机密钥盐来强制执行一次写入/多次读取(WORM),可以提高CTR。对于多次写入,确实存在问题,因为密钥应该保持给定块相同。可能的解决方案是将其转换为版本化的WORM文件系统。每次新写入都会创建新的盐,从而创建整个文件或仅更改部分的新版本。 - gertas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接