新的巨型站点加密有多安全?

信息安全 加密
2021-08-13 09:27:22

新的Mega站点,Megaupload 的继承者,声称所有信息都使用只有用户可以访问的对称密钥加密。

此处列出了通用术语

存储在 MEGA 上的所有文件均已加密。与 MEGA 之间的所有数据传输均经过加密。虽然大多数云存储提供商可以并且确实声称相同,但 MEGA 是不同的 - 与云存储提供商持有解密密钥的行业规范不同,使用 MEGA,您可以控制加密,您持有密钥,并且您决定授予谁或拒绝访问您的文件,而无需安装任何有风险的软件。这一切都发生在您的网络浏览器中!

开发人员页面中,有一些关于 AES 128 位、64 位随机位作为初始值等的详细信息,但我找不到有关最终用户如何获得这种保护的详细信息。

有人他们的加密/安全性如何真正起作用吗?真的安全吗?

4个回答

细节相对稀缺,但您链接到的 ht开发人员页面的第 5 节描述了他们应用的加密类型。底线:他们没有明确说出来,但它基本上是CCM 模式,尽管在 IV 管理方面有一些简化。他们不谈论填充和长度编码,这可能是一个问题。

此外,文件被分割成块,每个块都有自己的 MAC,因此您可以单独“处理”块。但是,MAC的东西好像没有序号;就文本而言,第二个块的 MAC 的 IV 是第一个块的 CBC-MAC,这很糟糕,因为它可能被恶意个人更改。在实践中,这意味着每块 MAC 只有在您从头开始按适当顺序流式传输数据时才有用;随机访问很容易受到攻击。

使用每个文件密钥的主要概念是合理的,但它需要对密钥进行一些仔细的处理,并且页面上没有足够的细节来确定事情是否正确完成。整个事情都散发着自制建筑的味道,众所周知,自制建筑是易受攻击的沃土。

似乎今天有媒体概述了 Mega 采用的安全方法存在安全漏洞,请参阅这篇文章,该文章对 Alan Woodward 的研究发表评论。

主要缺陷总结:

  1. SSL 密钥的密钥长度
  2. 相信超级管理员无法通过 javascript 中的服务器更改捕获密钥
  3. 可预测的随机数生成
  4. 丢失密码=丢失数据

无论 MEGA 或其他任何人怎么说,单独的加密都无法保护您的信息。我会想象 MEGA 使用与其他人相同的加密。可能对 MEGA 云中的静态数据进行全盘加密 (FDE / AES) 并结合 Internet 协议安全 (IPsec),以保护 PC / MEGA 云存储之间的通信。两种形式的加密都使用 128 位或 256 位密钥。

可悲的消息是 128 位或 256 位加密都已被黑客入侵。事实上,最近一些以色列黑客在 2 小时内破解了 GSM 128bit 密钥。因此,蛮力黑客攻击是一项挑战(即运行序列号,直到您找到匹配项)或闯入位于目标框中的密钥库。FDE 通过使用嵌入在内存中的密钥库来工作。闯入内存,您将获得用于解锁的钥匙。因此,优秀的黑客可以通过多种方式破解加密。好消息是大多数加密数据会阻止大约 90% 的人口。但是,您需要担心的是那 10%。:)

128 AES 代码由用户审查,以保证实施的高质量。这里是主要项目,但这里是关于 Mega 的密码学关于开发的博客在这里

代码透明度正在逐步提供。SDK 代码自 2014 年以来一直可用,我们现在正在公开我们的 Web 客户端和浏览器扩展的代码。

2016 年 cryptopp.h 的变化

  • decodeintarray 功能
  • serializekey 功能

2016 年 cryptopp.cpp 的变化

  • AsymmCipher::serializeprivkforjs不对称密码中的大量清理;静态常数很容易被猜到(0123456789abcdef);
  • 更多清洁和更易读的代码(变量名,结构等)

sdk/tests/paycrypt_test.cpp

  • 固定长度 BASE64_IV、BASE65_ENCKEY、BASE64_HMACKEY、KEYS
  • 主要测试 PayCrypter:hybridEncrypt

测试

只有一个主要测试,其中只有一个加密贡献者。代码 sdk/tests/ paycrypt_test.cpp主要测试PayCrypter:hybridEncrypt

//Test PayCrypter:hybridEncrypt()
string finalResult;
string contentString = CONTENT;
ASSERT_TRUE(payCrypter.hybridEncrypt(&contentString, pubkdata, pubkdatalen, &finalResult, false));

这似乎正在使用非对称密钥方案,即它可能对非常长的消息效率低下。主要风险(维基百科)显然在密钥封装及其安全定义中,其中数据封装必须稍强。通过比较键的初始化,代码中似乎就是这种情况。