如何在网络浏览器中实时对客户端的文件传输进行去加密

How is it possible to on-the-fly client-side de/encrypt file transfers in a webbrowser?

本文关键字:传输 文件 加密 客户端 网络 浏览器 实时      更新时间:2023-09-26

轻松隐私过去,安全存储和传输需要安装专用的机密信息软件新的Mega透明地加密和解密您的数据在您的浏览器中,在运行中。你拿着你储存的东西的钥匙云,而不是我们。

这句话摘自新的MegaUpload文件托管服务的网站,该服务计划于本月1月19日推出。

作为一名网络开发人员,我自然对背后的技术感兴趣和好奇。

我所能找到的只是屏幕截图和声明,这让它看起来很真实,数据真的从未让客户端未加密!

文件和传输使用AES进行保护。

每个客户端都会得到一个非对称密钥对,我只能猜测原因,但我认为它将用于加密AES初始化向量和其他客户端的密钥,您希望与这些客户端共享文件。

然而,我的问题是:

从技术上讲,如何拦截文件上传/下载?

我知道RSA和AES都有加密算法,它们运行在javascript中,非常高效。

但似乎唯一支持在文件系统中操作的浏览器是chrome。

数据是如何从硬盘驱动器传输到客户端浏览器进行加密的?它是如何从那里到达硬盘上的文件的?

我不知道像API这样的文件系统。即使是html5也只支持某种类型的对象存储。

我想,使用某种浏览器插件或使用java或adobe-air小程序是很琐碎的,但他们声称不需要安装第三方软件。

还有别的办法吗?

从技术上讲,如何拦截文件上传/下载?

您不需要截取。用户使用<input type="file">元素拾取一个或多个文件,然后JavaScript读取文件输入的值并对其进行加密。上传可能会通过Ajax完成。

但似乎唯一支持在文件系统中操作的浏览器是chrome。

Chrome是第一个实现文件系统API的公司,这与API文件系统不同。文件系统API管理沙盒文件系统(不是用户真正的操作系统文件系统(;文件API从CCD_ 2元素中读取文件。API文件在大多数现代浏览器中都有更广泛的支持(但不是完美的支持(。

对于加密和上传,JavaScript可以读取用户使用文件输入专门选择的文件,并通过Ajax将加密值发送到服务器。对于下载,浏览器可以执行资源的Ajax提取、解密,并提示用户保存文件(例如,通过重定向到data: URI(。不需要对文件系统进行编程访问。