MEGA云存儲服務加密可被攻破
研究人員發現攻破MEGA云存儲服務加密的新方法。
ETH Zurich安全研究人員發現MEGA云存儲服務中的關鍵安全問題,可被攻擊者利用來打破用戶數據的機密性和完整性。
背景
MEGA是top級的云存儲服務平臺,有超過2.5億用戶、1000萬日活用戶和1000 PB的數據存儲量,旨在為用戶提供用戶控制的端到端加密。與DropBox、Google Drive、iCloud和微軟 OneDrive等競爭平臺不同的是,MEGA稱其可以為用戶提供的安全保證:MEGA稱其是一家隱私公司,可以為用戶提供用戶控制的端到端加密(User-Controlled end-to-end Encryption,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以受害者的名義偽造數據,并保存在目標的云存儲中。前幾種攻擊允許攻擊者使用被黑的密鑰修改現有文件,而本攻擊允許敵手在保留現有文件的同時新增文件。

為創建新的文件密鑰,攻擊者使用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/
原文來源:嘶吼專業版