mega网盘怎样保证安全其加密原理是怎么样的

转自:最安全的网盘MEGA的加密原理 | 宋瑞华
加密原理:
1、创建新帐号 【mega网盘怎样保证安全其加密原理是怎么样的】 当一个新帐号创建之后,会产生两个随机钥匙:“Master Key(主钥匙)”和”RSA Key(公私钥匙对),2048 bit”。这两个钥匙的作用会在下面讲解。
其中 Master Key 和 RSA Key 的私钥部分会使用帐号的密码(使用 AES 128 算法)加密后储存在服务器上,而 RSA Key 的公钥部分则直接明文储存在服务器上。
2、上传文件上传一个文件时,客户端会产生一个随机钥匙(File Key),然后通过 AES 128 算法对文件内容进行加密并上传到服务器,最后这个 File Key 会使用 Master Key 加密后也上传到服务器。
简单来说文件内容的加密过程为:帐号密码 –(加密)–\u0026gt; Master Key –(加密)–\u0026gt; File Key –(加密)–\u0026gt; 文件名和内容 –\u0026gt; 服务器。
3、下载文件下载一个文件时,客户端会下载:加密后的文件数据、加密后的 File Key、加密后的 Master Key。然后在客户端通过这样的一个过程来解密:
帐号密码 –(解密)–\u0026gt; Master Key –(解密)–\u0026gt; File Key –(解密)–\u0026gt; 文件名和内容。
4、共享文件共享一个文件给另一个 Mega 用户时,相应文件的 File Key 会通过 RSA 算法加密后发送给接收者,接收者得到 File Key 之后会用自己的 Master Key 加密并储存起来。
File Key 的传输过程是:
共享者 -\u0026gt; File Key 明文 -\u0026gt; 用接收者的 RSA Public Key 加密 -\u0026gt; 站内发送 -\u0026gt; 接收者 -\u0026gt; 接收者的 RSA Private Key 解密 -\u0026gt; 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,因为他们被一环扣一环地加密起来,所有解密的最终关键在于用户的帐号密码,但帐号密码恰好从来都没有提交过给网站或者经过网络中间环节传输。所 以,这样的安全模型的确能够把用户的数据保护起来。

■网友
最高赞回答有一些瑕疵:实际上注册账户后生成的RSA密钥对中,公钥是直接明文上传服务端,私钥由Master Key加密上传,构成一个加密链条。
Mega的理念非常好,不过不能去不存在的地方谋生的话,是不敢效仿的。Mega用了最少的信息来作为鉴别用户唯一性的依据,那就是Master key与那个RSA密钥对。为了不泄露相关信息给云端或者是远程攻击者,所有依赖用户密码的加密解密全数在本地客户端完成。
注册账户阶段,会通过随机算法生成该用户唯一的Master Key与RSA密钥对。然后通过Master key加密RSA私钥、用户密码加密Master key的方式来保障二者的安全。密码将永远在客户端内活动。
文件上传和下载,也是从客户端加密。关键点是,每一个文件的上传,都会从本地随一个File key用来唯一加密该文件。随后该File同RSA的私钥一样被Master key加密上传。下载解密反之亦然
传文件给其他人其实只要得到file key就可以了,把file key明文和文件地址一起丢出去就可以,各种mega资源连接的末尾就是文件的file key。要私某人的话,可以用PGP之类的非对称加密工具保证key的安全性。


推荐阅读