继BT下载网站海盗湾(Pirate Bay)采取策略将全部服务转至云端之后,天才黑客Kim Dotcom 和他的Megaupload团队也开始发力,加入这场和警方之间的“捉迷藏”中。MPEG 格式文件处理服务提供商Wired近日联系到Dotcom及其商业合作伙伴Mathias Ortmann,双方就如何保存Megaupload的修改版这一问题进行了商谈。洽谈结果是Megaupload将改头换面,变身名为 “Mega”的新服务重出江湖。
这个新服务可以安全躲过政府的突击检查,不会收到侵权起诉。据Wired透露,关键在于所有上传至Mega分享的文件“首 先会在客户的浏览器中被一键加密。这里使用的是一种叫做高级加密标准(AES)的算法。”在此之后,用户会“收到解密密钥。”新的安全性功 能中最重要的一个方面在于它将遵守版权法律的责任放给了每个独立的用户身上,因为“解密密钥不随Mega一起存储”,这样一来,“Mega就无从知道其用 户上传的内容,也无需对此负责。”这项技术同时也能更好的保护用户自己的数据,因为没有解密密钥,盗取信息者就无法读取数据。 Dotcom告知Wired:“哪怕服务器遗失,政府突击数据中心或者有人黑掉了服务器,数据也不会泄露。无论用户上传了什么到网站上,这些东西都会被妥善保管,没有密钥就无法读取。”
加密原理:
1、创建新帐号
当一个新帐号创建之后,会产生两个随机钥匙:“Master Key(主钥匙)”和”RSA Key(公私钥匙对),2048 bit”。这两个钥匙的作用会在下面讲解。 其中 Master Key 和 RSA Key 的私钥部分会使用帐号的密码(使用 AES 128 算法)加密后储存在服务器上,而 RSA Key 的公钥部分则直接明文储存在服务器上。
2、上传文件
上传一个文件时,客户端会产生一个随机钥匙(File Key),然后通过 AES 128 算法对文件内容进行加密并上传到服务器,最后这个 File Key 会使用 Master Key 加密后也上传到服务器。 简单来说文件内容的加密过程为:帐号密码 –(加密)–> Master Key –(加密)–> File Key –(加密)–> 文件名和内容 –> 服务器。
3、下载文件
下载一个文件时,客户端会下载:加密后的文件数据、加密后的 File Key、加密后的 Master Key。然后在客户端通过这样的一个过程来解密: 帐号密码 –(解密)–> Master Key –(解密)–> File Key –(解密)–> 文件名和内容。
4、共享文件
共享一个文件给另一个 Mega 用户时,相应文件的 File Key 会通过 RSA 算法加密后发送给接收者,接收者得到 File Key 之后会用自己的 Master Key 加密并储存起来。 File Key 的传输过程是: 共享者 -> File Key 明文 -> 用接收者的 RSA Public Key 加密 -> 站内发送 -> 接收者 -> 接收者的 RSA Private Key 解密 -> File Key 明文。 这一步因为文档里没有很明确的表达,所以我不知道有没有理解错误。
5、公开发布文件
公开发布一个文件(即 Public 共享)时,文件的 File Key 的明文会附加到共享地址(URL),所以下载者使用这个URL就能下载并且解密文件内容。
6、用户登录验证
用户登录时,密码并不会提交到服务器进行验证。具体过程是:服务器使用用户的 RSA Public Key 加密一个身份凭证(Access Token)并发送给用户,用户用自己的密码先尝试解密 Master Key,然后再用 Master Key 尝试解密自己的 RSA Private Key,最后用 RSA Private Key 解密 Access Token。如果用户密码正确,则能得到正确的 Access Token,用户使用正确的 Access Token 则可以进入自己的空间了。 从上面的工作原理可见,网站本身以及网络的中间环节,都不知道原始的文件内容、File Key/RSA Private Key、Master Key,因为他们被一环扣一环地加密起来,所有解密的最终关键在于用户的帐号密码,但帐号密码恰好从来都没有提交过给网站或者经过网络中间环节传输。所 以,这样的安全模型的确能够把用户的数据保护起来。