MEGA云存储服务加密可被攻破

来源:岁月联盟 编辑:猪蛋儿 时间:2022-07-04

研究人员发现攻破MEGA云存储服务加密的新方法。

ETH Zurich安全研究人员发现MEGA云存储服务中的关键安全问题,可被攻击者利用来打破用户数据的机密性和完整性。

背景

MEGA是top级的云存储服务平台,有超过2.5亿用户、1000万日活用户和1000%20PB的数据存储量,旨在为用户提供用户控制的端到端加密。与DropBox、Google%20Drive、iCloud和微软%20OneDrive等竞争平台不同的是,MEGA称其可以为用户提供的安全保证:MEGA称其是一家隐私公司,可以为用户提供用户控制的端到端加密(User-Controlled%20end-to-end%20Encryption,UCE)。

MEGA分层密钥

MEGA客户端的分层密钥如上图所示,分层密钥的根本是用户选择的密码。基于该密码,MEGA客户端可以派生出认证密钥和加密密钥。认证密钥用于识别用户,加密密钥用于加密随机生成的master key,然后master key用于加密用户的其他密钥材料。

对每个账户来说,密钥材料包括一系列非对称密钥,包括RSA密钥对、Curve25519密钥对、Ed25519密钥对。此外,对于用户上传的每个文件或文件夹,会生成一个名为node key的新对称加密密钥。客户端用户给AES-ECB模式和master key对私有的非对称密钥和node key进行加密,保存在MEGA服务器上以支持多设备的访问。新设备上的用户可以输入密码,进行认证,并取回加密密钥材料,并用通过密码派生出的加密密钥解密。

5种攻击

研究人员一共发现了5种针对MEGA云存储服务加密的攻击,分别是RSA密钥恢复攻击、明文攻击、framing攻击、完整性攻击和GaP-Bleichenbacher攻击。其中后4类攻击是RSA密钥恢复攻击的扩展。

RSA密钥恢复攻击

MEGA 使用RSA加密用于在用户之间共享node key,交换用户登录时的session ID。每个用户都有一个公开的RSA key pkshare和skshare,MEGA或其他用户使用pkshare来加密数据,使用skshare来解密数据。RSA私钥以加密的形式保存在MEGA服务器上。

由于MEGA服务器上保存的用户加密密钥缺乏完整性保护,因此任何控制MAGA核心基础设施的实体都可以篡改加密RSA使用,并使客户端泄露session ID交换时使用的RSA模的大素数。具体来说,客户端使用使用解密并发送给服务器过程中的session ID会泄露大素数大于或小于攻击者选择的值。因此,攻击者可以在1023次客户端登录尝试后恢复出RSA私钥。如果使用格密码分析,所需的登录次数可以减少到512次。

明文恢复攻击

MEGA加密用于分享的私钥、会话密钥转移等都使用AES-ECB模式。此外,文件和文件夹密钥也使用相同的加密方式。对于给定密文,MEGA可以使用用户的master key计算明文。因此,攻击者可以访问加密的敏感密钥材料,并解密受害者的数据。

使用RSA公钥加密的加密后的RSA私钥、session ID从MEGA服务器发送给用户时,认证过程中解密oracle会增加。MEGA就可以覆写2个目标密文区块的session ID交换过程中的部分RSA私钥密文。然后使用客户端返回的session ID来恢复2个目标区块的明文。由于master key没有进行密钥隔离,且所有的密钥材料都使用AES-ECB模式保护,因此攻击者在恢复RSA私钥后,就可以利用这一论点解密node key,受害者的ed25519签名密钥和curve25519会话密钥等。

Framing攻击

Framing攻击允许MEGA以受害者的名义伪造数据,并保存在目标的云存储中。前几种攻击允许攻击者使用被黑的密钥修改现有文件,而本攻击允许敌手在保留现有文件的同时新增文件。

Forged image

为创建新的文件密钥,攻击者使用MEGA用作node key的特殊格式。在加密之前,node key会编码为混淆的密钥对象,其中包含node key和用于文件或文件夹加密的信息。攻击者首先通过密文恢复攻击解密随机的样本密钥密文,解密过程一定会成功,因为用于加密密钥材料的AES-ECB加密模式不需要提供检密文完整性保护。最终生成的字符串是在攻击者控制下的,但是可以用作混淆的密钥对象,因为文件密钥和完整性信息都可以是任意字符串。因此,攻击者可以分解解密的字符串为文件密钥、随机数、MAC标签。然后修改要插入到受害者云的目标文件,以绕过完整性保护。攻击者可以插入单个AES区块到选定位置的文件中,最后,使用已知的文件密钥来加密文件,并将结果上传到受害者云存储中。

PoC参见:https://mega-awry.io/videos/framing_attack_poc.mp4

完整性攻击

攻击利用MEGA的混淆密钥对象结构来操纵加密的node key使得解密的密钥变成全0。攻击者知道密钥,因此密钥操纵攻击可以用于伪造文件。与framing攻击不同的是,攻击者只需要访问单个明文块和对应的密文即可。比如,攻击者使用MEGA协议作为公共文件分析来获取对:用户公共分享文件或文件夹时,会创建一个对应node key密文的链接。获得该链接的恶意云服务提供商知道明文和对应的密文,因此文件创建时后者被上传到MEGA。这可以用作密钥操纵的开始点,允许伪造的文件密文被上传到受害者云。

GaP-Bleichenbacher攻击

GaP-Bleichenbacher攻击是PKCS#1 v1.5 padding Bleichenbacher攻击的一个变种,研究人员将其命名为Guess-and-Purge (GaP) Bleichenbacher攻击。MEGA使用该攻击利用MEGA会话功能中会话密钥交换过程中的padding oracle可以解密RSA密文。

补丁

MEGA决定在RSA私钥格式中引入额外的客户端检查以应对RSA密钥恢复攻击。该检查可以直接预防RSA密钥恢复攻击,因此也可以应对其他4类攻击。 

论文下载地址:https://mega-awry.io/pdf/mega-malleable-encryption-goes-awry.pdf

PoC代码参见:https://github.com/MEGA-Awry/attacks-poc

本文来源于:https://mega-awry.io/如若转载,请注明原文地址