只要一点耐心,就能破解数百万安卓手机的全盘加密

简介:

只需要几个常见的漏洞、一些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(转载)

目录
相关文章
|
2月前
|
监控 安全 Android开发
【新手必读】Airtest测试Android手机常见的设置问题
【新手必读】Airtest测试Android手机常见的设置问题
|
2月前
|
机器学习/深度学习 人工智能 Android开发
安卓智能手机操作系统演化史
【2月更文挑战第5天】 本文通过对安卓智能手机操作系统的演化历程进行探讨,分析了安卓系统从诞生至今的发展脉络和关键技术革新,从最初的版本到如今的最新版本,探讨了其在移动互联网时代的重要作用,以及未来可能的发展方向。
|
3月前
|
JavaScript Android开发
手机也能搭建个人博客?安卓Termux+Hexo搭建属于你自己的博客网站
手机也能搭建个人博客?安卓Termux+Hexo搭建属于你自己的博客网站
33 0
|
4月前
|
XML Java Android开发
Android Studio开发之使用内容组件Content获取通讯信息讲解及实战(附源码 包括添加手机联系人和发短信)
Android Studio开发之使用内容组件Content获取通讯信息讲解及实战(附源码 包括添加手机联系人和发短信)
72 0
|
1月前
|
Web App开发 前端开发 网络安全
前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
【2月更文挑战第21天】前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
46 1
前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
|
1月前
|
网络协议 关系型数据库 MySQL
安卓手机termux上安装MariaDB数据库并实现公网环境下的远程连接
安卓手机termux上安装MariaDB数据库并实现公网环境下的远程连接
|
1月前
|
JavaScript Android开发
手机也能轻松搭建个人博客,使用安卓Termux+Hexo建立自己的网站
手机也能轻松搭建个人博客,使用安卓Termux+Hexo建立自己的网站
|
2月前
|
安全 Android开发
如何在Android手机上安装第三方应用?
【2月更文挑战第4天】在Android系统中,安装第三方应用是一个常见的需求。本文将介绍如何在Android手机上安装第三方应用,并提供详细的步骤和注意事项。
149 2
|
3月前
|
安全 网络协议 Linux
【公网远程手机Android服务器】安卓Termux搭建Web服务器
【公网远程手机Android服务器】安卓Termux搭建Web服务器
58 0
|
4月前
|
Android开发
安卓手机快速过检测完成某某学习
安卓手机快速过检测完成某某学习
22 0