我们试着用FBI的方法破解了一台安卓机

FBI和苹果的撕逼大戏可谓高潮不断,如今FBI已经斥资请入第三方破解了该犯罪枪手的iPhone 5c,由此又带来一系列问题:iPhone到底安不安全?执法部门是否应该公布破解方法?

不妨往另一个方向思考。如果枪手用的是Android手机呢?鉴于Android仍是智能手机市场的另一大阵营,使用Android系统的公司也更多,我们做了一个实验,把FBI的方法原封不动地用来测试Android系统的安全性能与破解难度。

我知道你可能看不下去太技术向的东西,所以先把结论放上来:

1. 总的来说,安装了iOS和Android最新版本的设备对离线攻击的抵御能力是类似的,前提是厂商和用户对设备做了正确的配置。老旧版本的系统可能稍微脆弱一点,不用十秒就能被破解了。此外,系统配置和软件缺陷也会降低两大阵营手机的安全性。

2. 不过,在线上攻击方面,我们找出了一些差别,这是由用户和远程管理配置两方面原因带来的。一开始,Android的默认设置对线上攻击的抵御力更强,但我们用于测试的Nexus 4却不允许用户设置锁屏密码的最大输入次数(其他设备可能有所差异)。iOS设备的安全功能更全面,但用户必须事先手动开启这些功能。

3. 远程控制软件也可能降低Android系统的安全性,这取决于具体的软件。此前,FBI尝试重设iPhone 5c的密码以失败告终,然而我们这次实验里却用这种方法破解了Android系统。

给小白的背景科普

在智能手机上进行数据加密会产生一串密钥,这是手机结合用户的解锁密码(一般是四位或六位密码)和专属该设备的一长串复杂数字生成的。攻击者可以选择直接破解这串密钥,或者分别破解解锁密码和设备编号以及它们的组合。总之,破译这串密钥一点也不轻松,但有时候,从加密手机里获取数据根本就不需要破解它的密码。

你可以尝试在目标手机里安装一个定制的应用程序来提取信息。2011年3月,谷歌就实现了远程安装程序,清理被流氓软件感染的手机,不知道现在的Android系统是否还允许这一功能。

许多应用会用到Android的备份API。因此,手机上安装的应用只要备份了数据,就能够直接从备份的站点上读取。如果目标数据存储在可移动的SD卡上,那么SD卡是可以加密的。但是,目前只有最新版本的Android系统允许用户加密SD卡,也不是所有应用会把数据在SD卡上进行加密。

一些手机有指纹识别器,这种时候拿一张手机主人的指纹照片就行了。

另一些手机还修改了操作系统,让用户能够在正常操作之外读取设备数据,这可能削弱安全性。

如果以上方法都不奏效,那只好硬碰硬破译密码了。

“强力”攻击

在所谓的“强力”(brute force)攻击中,攻击者能够把所有可能的密码组合都试一遍,直到试到正确的组合,强行破解手机。

“强力”攻击主要分为两种,离线的和线上的。在一些情况下,离线攻击更简单,只需把数据从设备上复制下来,存到更强大的电脑上,然后用一些专用的软件或其他技术来尝试所有的密码组合。但是,因为这种方法太认死理,要不就是尝试所有的加密密钥,要不就是分别找出用户的密码和设备号。

我们试着用FBI的方法破解了一台安卓机

安卓机上生成加密密钥的简要机理。

举个栗子,如果要强力破解一串标准的128位AES密钥,你得尝试的密码共有一千万的十次幂个(10的38次方)。就算你用超级计算机,也得花上亿万年才能破解出来。

相对来说,猜密码可能稍快一点:六位数字的PIN也就一百万种组合而已。如果密码里还包括字母和特殊符号,也不过是几千亿种组合嘛。但是别忘了,后面还跟着一串不比密钥简单的设备号。

线上攻击是指直接攻击手机。因为设备号能够直接从OS中读取,这种方法需要尝试的密钥组合远比前一种要少。但是,用户能够设定手机来防御这类线上攻击,比如在错误的密码输入之后设置延时,这样就延长了破解所需的时间,甚至设定在输入错误多少次之后直接删除数据。苹果的iOS系统就有以上功能,能够在密码输入错误后自动加入延时,用户也能自己设置在密码输入错误十次后抹除设备数据。

实验开始

不同手机厂商会对自家的Android设备进行不同的配置。鉴于Nexus用的是谷歌的标准配置,我们这次就用了一台装有Android 5.1.1、允许全盘加密的Nexus 4来进行试验。

实验前,我们让手机处于锁屏状态。Android允许使用PIN、密码和手势密码,本实验对三种方式都做了尝试。我们手动设置了手机的密码,但解密过程是随机进行尝试的。

首先,在五次密码输入错误后,Android在下一次输入密码前加入了三十秒的延迟。跟iPhone不同的是,Android的延迟时间不会随着失败次数的增加而延长。在四十次尝试之后,我们发现每输入五次错误才会出现一次三十秒的延时。手机会记录密码连续输入的次数,但也的确删除了数据(或许其他厂商的Android手机会采取跟iOS类似的加长延时方式。)

我们试着用FBI的方法破解了一台安卓机

有了这些延时,强力破解六位PIN(也就是一百万种组合)所需的时间得以延长,但最糟糕的情况下也不过是多了69天。如果密码是六位字母,那么即使只用小写字母,这些延长的时间加起来可长达58年。

输入密码错误十次后,手机显示需要重启设备。输入错误二十次、重启了两次后,Android系统开始计算错误次数,到达一定次数会触发设备抹除数据。攻击继续进行下去,到了第30次,设备抹除了所有数据,恢复了出厂设置。

我们试着用FBI的方法破解了一台安卓机

在离线攻击情况下,Android和iOS并无多大差异,但到了线上攻击差异就显著了。在iOS系统中,一旦达到了特定次数的密码输入错误,锁屏和启动过程都能抹除用户数据,但用户必须事先开启该功能。在Android系统中,密码输入错误达到特定次数后,只有启动过程会删除用户数据。然而,我们此次用到的Nexus 4并不能设置锁屏密码错误的限制次数。尽管如此,Android和iOS都能开启远程管理,这样就都能在错误达到一定次数后删除数据。

还能开挂?

FBI和苹果的案子里涉及的iPhone 5c的主人实为其中一名枪手的雇主,上面装有移动设备管理(MDM)软件,让公司跟踪手机并远程实现其他功能。在Android手机上,这样的MDM应用往往作为“设备管理员”安装在设备上,在iOS系统中则要用管理工具Apple Configurator来进行设置。

我们试着用FBI的方法破解了一台安卓机

我们用来测试的MDM成功地重设了密码,然后用新的密钥派生函数来生成了新的密钥。

我们给这次实验的Nexus 4开发了自己的MDM应用,经检验能够跳过用户来重设密码,我们便能直接用新密码来解锁手机。要远程实现这点,手机必须开机并连接网络,MDM程序也必须设置成允许通过MDM服务器远程控制重设密码。

如果攻击者想要得到厂商或软件公司的帮忙来进行破解,Android阵营的情况比iOS更为复杂。一般来说,操作系统软件都有一个专属的数字码,只有拥有正确数字码的公司能够对操作系统进行升级,这就可能给攻击者留下了乘机而入的“后门”。对于iOS系统,管好苹果公司就可以了,但生产销售Android手机的公司可谓浩如烟海。

谷歌是Android操作系统的主要开发者,也为其推出的旗舰手机Nexus背书。三星为三星手机背书。一些手机运营商也可能参与其中。另外,许多用户用的是Android的定制版本,开发不同版本软件的这些公司都值得FBI发愁。

虽然坊间已在谣传各种破解iPhone的方法,但苹果方面也宣称,一旦破解方法泄露便能反过来对漏洞进行“反破解”,进一步加密iOS系统,且看FBI花的一百万美金能够支撑多久。

本文文字及图片出自 钛媒体

余下全文(1/3)
分享这篇文章:

请关注我们:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注