天天看點

隻要一點耐心,就能破解數百萬安卓手機的全盤加密

隻需要幾個常見的漏洞、一些gpu和一些時間。

安卓在數百萬裝置上的全盤加密功能能夠輕易被暴力破解,這情況比人們之前的預期要糟糕的多。而且,已經有工作代碼能證明這一點。

通常而言,如果有人拿到了你使用高通骁龍處理器的手機,就有可能通過一個很容易使用的python腳本來破解其檔案系統的内容,而不需要知道密碼或pin。

技術細節

安卓會通過一個随機生成的128位裝置加密密鑰 (device encryption key, dek) 來加密裝置的檔案系統。安卓使用使用者的pin或者密碼來加密dek,并将它存儲在裝置加密過的檔案系統上。從實體上來講,它也在裝置的閃存晶片中。當你輸入正确的pin或密碼時,裝置可以解鎖dek,并使用密鑰來解鎖檔案系統。

不過,它也不像上面說的這麼簡單:dek實際上是使用使用者的pin或密碼,外加一個被稱為keymaster key blob的加密資料塊來進行加密的。這個資料塊包含一個由keymaster程式生成的2048位rsa密鑰,它運作在裝置處理器上的一個安全區域上。keymaster會建立rsa密鑰,将其存儲在資料塊中,并為安卓系統建立一份加密過的拷貝版本。

必須意識到,安卓系統和你的移動應用運作在處理器的非安全區域上。安卓沒有通路keymaster的安全世界的權限,是以它無法知曉資料塊裡的rsa密鑰。安卓隻能獲得這個資料塊的加密版本,而隻有keymaster能夠解密它。

當你輸入pin或密碼時,安卓拿到加密過的資料塊,并将它和使用scrypt處理過的pin或密碼一起,傳回運作在處理器安全區域上的keymaster。keymaster将私密地使用處理器中帶有的私鑰來對資料塊進行解密,獲得長rsa密鑰。然後,它将私密地使用scrypt處理過的pin或密碼,外加長rsa密鑰,來制造一個rsa簽名,并将簽名發回給安卓。之後安卓使用一系列算法來處理這一簽名,并最終解密dek,解鎖裝置。

是以,全部流程都基于keymaster的資料塊。資料塊包含解密dek所需的長rsa密鑰。安卓隻擁有加密後的資料塊,而隻有使用者才有pin或密碼。此外,隻有keymaster才能解密加密過的資料塊。

如果你能解密資料塊并提取其rsa密鑰,你就有走過了解密檔案系統的大半部分流程:這時你就可以真的開始暴力破解pin或密碼,來完成解鎖流程。理想情況下,你永遠無法獲得解密後的資料塊。然而,總有例外。

漏洞

安卓定義了keymaster的工作方法,但将實作工作留給了硬體制造商。高通在其arm适配的骁龍系統中提供了keymaster。骁龍是基于晶片的系統,被數以百萬計的手機、平闆和其它電子産品使用。keymaster運作在處理器的trustzone裡,它是在多個arm核心之間的一個獨立區域。作業系統在trustzone之外運作,而且,理想情況下,無法幹預安全區。特定的功能,比如加密和指紋掃描,都運作在被保護的trustzone上。

安全研究人員gal beniamini一直在研究高通的trustzone代碼,如今他釋出了一份詳細報告,描述如何從裝置keymaster中提取密鑰。

高通在trustzone中運作一個小核心,它提供了所謂的qsee功能:qualcomm secure execution enviromment,小應用被允許在安卓之外,在qsee上運作。

高通的keymaster正是qsee應用。beniamini較長的描述了如何通過利用某個安卓核心安全漏洞,加載你自己的qsee應用,之後,在受保護的空間裡,利用一個高通trustzone核心的提權漏洞,擷取整個qsee空間的控制權。之後,你就可以偷窺keymaster并且提取解密後的資料塊。

使用這一資料塊,你就有可能通過暴力破解餘下的密鑰:pin或密碼,來解密檔案系統。但如果沒有資料塊的rsa私鑰,這将完全不可能。

這一部分是安全漏洞,另一方面也是設計瑕疵:keymaster讓關鍵密鑰能夠被軟體使用,但軟體是在一個隔離的花園裡運作的,是以,黑客的人物應該是越過隔離,并且拿到裡邊的獎勵。惡意應用可以通過攻擊安卓核心掌握qsee區域,來開始這一過程;或者,陷阱短信可以溜進stagefright,并且切入trustzone。

此外,fbi表示,有可能在一個trustzone已經被黑客控制的裝置上刷入定制安卓固件,并且提取keymaster密鑰,并進一步制造暴力破解并擷取整個系統權限的可能性。

“安卓在所有的裝置之間都使用完全相同的全盤加密政策。該政策基于keymaster子產品,來将密鑰與裝置的硬體綁定。我的研究表明,完全可以在高通的裝置上繞過這一綁定過程。此外,該政策也有可能适用于其它soc制造商的産品。”

====================================分割線================================

本文轉自d1net(轉載)

繼續閱讀