Mega的加密如何用于共享?

时间:2013-08-20 22:36:41

标签: encryption aes

我有一些问题要找到一种方法来实现可以与多个收件人共享的任意数据的加密。 Mega似乎正是如此。据我所知,它在上传到Web服务器之前对数据进行加密。仍然可以与其他人共享该文件。如何通过加密完成?

想象一下以下场景:

  1. 用户Alice将文件上传到服务器,正在加密
  2. Alice希望与Bob和Dave分享该文件。 Bob和Dave如何访问该文件并查看其原始内容(已解密)?

2 个答案:

答案 0 :(得分:8)

  

如何通过加密完成?

答案是symmetric-key algorithm。 Mega利用HTML5提供的浏览器内对称密钥加密。请参阅问题" MEGA在内部使用哪些加密算法?"下方。

正如onemouth所说,你的数据全局用主密钥加密。

  

每个用户还有一对公钥/私钥对。每个文件都是   在不同的会话密钥下加密。会话密钥已加密   在用户的主密钥下。

了解它的工作原理意味着查看所有组件并了解它们如何互操作。 Mega解释了在其网站上加密对称/共享密钥的过程:

(嵌入式链接和引用文本中强调的文字由我添加)

  

<强> What encryption algorithms does MEGA use internally?

     

对于批量传输,AES-128(我们认为CPU较高   AES-192和AES-256的使用超过了理论上的安全性   好处,至少在量子计算机出现之前)。   下载后完整性检查是通过分块变体完成的   CCM的效率低于OCB,但不受阻碍   专利。

     

用于在用户之间建立共享密钥并删除   文件放入收件箱, RSA-2048 (密钥长度选为中间   之间的理由太过不安全&#34;并且&#34;太慢&#34;)。全加密,   解密和密钥生成是在JavaScript 中实现的   将吞吐量限制为几MB / s并导致显着的CPU负载。我们   期待在所有主流浏览器中实施提议的HTML5 WebCrypto API,这将消除这一点   瓶颈。 JavaScript的内置随机数生成器得到增强   通过鼠标/键盘timing-driven RC4 entropy pool以及   加密。*随机性available(Chrome和Firefox只在   时刻 - Internet Explorer和Safari生成的密钥较少   比他们可能更安全。)

     

<强> How does folder sharing work?

     

您可以与朋友,家人或朋友共享云端硬盘的任何子树   合作伙伴。邀请是通过电子邮件地址。没有的受邀者   帐户尚未收到带有注册链接的电子邮件通知。   或者,您可以创建指向任何文件夹的公共链接   导出特定于文件夹的加密密钥,使其无需访问   MEGA账号。然后你有责任安全地传输   收件人的文件夹密钥。

     

要创建,修改或删除共享,只需右键单击文件夹即可   在文件管理器中,选择“共享”。有三种访问权限   级别:只读,读/写(可以添加文件,但不能删除),   和完整(可以添加和删除文件)。如果您添加了电子邮件   还没有帐户的地址,您需要在线   收件人完成注册过程后至少一次   您可以将共享密钥加密到他新创建的公钥。

     

<强> Is data that I put in shared folders as secure my other data?   共享文件夹本质上只有最不安全的安全文件   会员。

您现在拥有另一个委托给X个人的密钥,而不仅仅是一个主密钥。您的安全性与您对X人的信任一样伟大。

Mega上的每个文件都有一个唯一的ID。因此,如果凭据是:

fileId=Abc123Ab
shareKey=abcdefghijklmnopqrstuvwxyz0123456789ZYXWVUT
https://mega.co.nz/#!fileId!shareKey

试图下载

https://mega.co.nz/#!fileId

将导致下载加密文件。除非用户具有共享解密密钥,否则无法解密该文件。你如何获得&#34; shareKey&#34;某人取决于你。但任何有权访问该shareKey的人都可以解密下载的文件,因此通过电子邮件或其他未加密的媒体发送完整的URL是一个坏主意。一旦生成了shareKey(通过&#34;获取链接&#34;在webapi中),就无法更改。

另外,

  

然而,我们的核心服务器基础架构的妥协构成了   额外的风险:可以操纵公钥和关键请求   可能是伪造的。

他们所说的是在没有共享的情况下出现的安全问题,因为个人私钥的个别威胁会受到影响。

  

Is my stored data absolutely secure? 所有安全都是相对的。该   存在以下攻击媒介 - 它们并非特定于MEGA,而是我们   希望您了解风险:个人账户受到危害   由:

     
      
  • 计算机上的间谍软件。一个简单的键盘记录器就足够了,但是会话凭证和密钥也可以从内存中提取出来   文件系统。
  •   
  • 肩上冲浪。当有人可以看你的按键时,请不要输入密码。
  •   
  • 密码暴力破解。使用强密码。
  •   
  • 网络钓鱼。在输入之前,请始终确认您的连接的安全状态(https://)和正确的域名(mega.co.nz)   你的密码。可以通过以下方式进行大规模攻击:
  •   
  • A&#34;中间的人&#34;攻击。需要发布有效的重复SSL证书以及DNS伪造和/或对BGP的攻击   路线(DigiNotar风格的场景)。
  •   
  • 获取托管https://mega.co.nz/index.html的网络服务器并使用伪造替换该文件的权限   版本(这不会影响通过已安装的应用程序库的访问)。   请注意,操纵我们的分布式静态内容CDN上的内容   不会造成安全风险,因为所有活动内容都是从中加载的   index.html需要使用加密哈希进行验证(请考虑   它作为某种&#34;安全启动&#34;对于网站)。这种类型的攻击   需要向客户端发送恶意代码,因此   可检测的。
  •   
  • 获取对我们的核心服务器基础架构的访问权限并在现有共享上创建伪造的密钥请求。此类攻击仅影响数据   在具有共享文件夹的帐户中,可在客户端检测到   同样。
  •   

此外,并非所有数据都是私密的,大多数用户可识别的信息都是未加密存储的。

  

Is all of my personal information subject to encryption? 不。只有档案   数据和文件/文件夹名称已加密。我们需要的信息   操作访问权限,例如电子邮件地址,IP地址,文件夹   结构,文件所有权和付款凭证,存储和   处理未加密。有关详细信息,请参阅我们的隐私政策。

可以在https://mega.co.nz/#doc

的API文档中获得更多详细信息
  

12.2密码学

     

所有对称加密操作均基于AES-128。它以文件和密码块链接模式运行   文件夹属性块和计数器模式下的实际文件数据。   每个文件和每个文件夹节点使用自己随机生成的128位   键。文件节点对属性块和文件使用相同的密钥   数据,加上64位随机计数器起始值和64位元MAC   验证文件的完整性。每个用户帐户都使用对称   ECB的主密钥加密它保留在自己的节点的所有密钥   树木。该主密钥存储在MEGA的服务器上,用a进行加密   从用户的登录密码派生的哈希。文件完整性是   使用分块CBC-MAC验证。块大小从128 KB开始   增加到1 MB,这是所需空间之间的合理平衡   存储块MAC和平均开销   完整性检查部分读取。除了对称密钥,   每个用户帐户都有一个2048位RSA密钥对,用于安全地接收数据   例如共享密钥或文件/文件夹密钥。它的私有组件是   用用户的对称主密钥加密存储。

     

12.3共享文件夹

     

该文件夹的所有者全权负责管理访问权限; 股票是不可传递的(无法创建股票   在传入共享中的文件夹)。共享文件夹中的所有参与者   通过公共共享特定密钥获得加密访问权限   从所有者传递(理论上,来自参与者的任何人)   这一份额,但这将在该方面造成重大的安全风险   新参与者对核心基础设施妥协的事件   通过RSA。共享文件夹中节点的所有键,包括其中的   根节点,加密到此共享密钥。党增加一个新的   节点到共享文件夹负责提供适当的   节点/共享特定密钥。缺少节点/共享特定的密钥只能是   由股东提供。

     

12.4未经身份验证的交付

     

MEGA支持安全的未经身份验证的数据传输。任何完全   注册用户可以通过其收件箱接收文件或文件夹   他们的RSA公钥。

最终,您信任他们通过HTTPS验证的javascript代码。然后,您信任您的JavaScript引擎(Web浏览器)以正确处理事务。最后,您相信您的操作系统不允许其他正在运行的进程嗅出RAM中未加密的私钥(请参阅https://nzkoz.github.io/MegaPWN/)。

当然可以采取预防措施,但它是目前可用的最佳选择之一。在使用GPG上传到Mega之前,您始终可以对文件进行加密,以缓解上述一些问题。

答案 1 :(得分:2)

在Mega中,每个用户都有一个master key。每个用户还有一对公钥/私钥对。并且每个文件都使用不同的会话密钥加密。会话密钥在用户的主密钥下加密。

如果Alice想要与Bob分享她的文件,首先她使用她的主密钥解密文件的会话密钥,然后她在Bob的公钥下加密会话密钥。

现在Bob可以使用他的私钥来解密Alice的文件。

以上只是一个直观的解释。您可以从Mega的api(及其源代码)中找到更多信息。