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

Rap*_*hie 7 javascript cryptography aes

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

roo*_*ook 1

在没有首先创建可信的威胁模型的情况下,不应使用加密或任何其他加密原语。您计划通过使用基于 JavaScript 的加密来防止应用程序面临哪些威胁?如果威胁是网络上的某个人,那么我们有很棒的工具来防止基于网络的攻击 - 我们将其称为带有 TLS 的 HTTPS,并且它可以免费使用- 并且无法用 JavaScript 进行替代。

一些实验性“端到端”(e2e) 聊天应用程序使用基于 JavaScript 的加密。但这种“承诺不达到峰值”的加密实际上并不能保护客户端免受服务器的侵害 - 恶意 JavaScript 可以访问这些密钥,而服务器选择不读取它们 - 这不是安全性。

基于 JavaScript 的加密无法阻止任何本地攻击(或 RCE)或跨域攻击(XSS)——HTTPS 也无法阻止这些攻击。由于缺乏可信的威胁行为者,加密永远不会由客户端完成,而是通常由应用程序服务器或后端数据库执行,以加密静态的敏感字段。这是因为后端可以保护机密免受不受信任的客户端的侵害。

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