我应该如何使用客户端JavaScript加密大文件?

时间:2011-12-02 02:59:32

标签: javascript cryptography aes

我正在为文件传输协议进行客户端加密(因此即使服务器也不知道该文件是什么。)我当前的方法是将文件导入浏览器文件系统,将文件分解为1 MB块,将每个块存储在内存中,使用AES加密每个块,然后连接所有块并上传。这可以防止内存过载,但效率相当低。有更好的方法吗?一种加密浏览器文件系统中整个文件的方法?谢谢!

1 个答案:

答案 0 :(得分:0)

在不首先创建credible threat model的情况下,不应使用加密或任何其他加密原语。您打算通过使用基于JavaScript的加密来防止对您的应用程序造成什么威胁?如果威胁是网络上的某人,那么我们就有出色的工具来阻止基于网络的攻击-我们将其称为HTTPS with TLS, and its free to use-和alternative cannot be made in JavaScript.

某些experimental "end-to-end" (e2e) chat applications使用基于JavaScript的加密。但是这种“承诺不达到峰值”的加密实际上并不能保护客户端免受服务器的攻击-恶意JavaScript可以访问这些密钥,而服务器选择不读取它们-这不是安全性。

基于JavaScript的加密不会阻止任何本地攻击(或RCE)或跨域攻击(XSS)-HTTPS也无法阻止这些攻击。缺乏可信的威胁参与者是为什么客户端永远不会执行加密-而是通常由应用程序服务器或backend database to encrypt sensitive fields at rest执行加密的原因。这是因为后端可以保护不受信任的客户端的机密。

如果您想更好地了解开发人员如何编写安全的应用程序,请考虑阅读OWASP Top 10(未提供“ JavaScript加密”功能。)