三、Android安全保护机制及解密方法研究(2013《技术研究》)
1.Android设备安全机制
从用户界面看,Android的安全保护机制主要体现为对于用户界面的访问控制的保护,比如在设备空闲时,用户可以锁定设备,并设置解锁口令,从而防止未授权的其他用户打开设备。
在Android设备上,常用的屏幕锁定方式包含以下几种:
此外,新版的Android操作系统还加入了与苹果iOS类似的文件系统加密机制。
2.Android图案锁定原理及解密
(1)加密
在Android设备上,用户可以通过设置锁定图案作为密码对设备用户界面进行锁定。
Android设备的锁定界面有9点组成,锁定图案需满足三个条件:至少3点、最多9点、无重复。这种解锁方式在Android存储时使用的是明文转换后采用散列方式存储。
Android设备图案锁定的加密存储过程:图案输入——>转换明文——>SHA-1散列——>存储。
(a)用户输入图案。
(b)图案转换为明文,从左上角起编号为00,至右下角止编号为08,例如Z字形转换后为00-01-02-04-06-07-08。
(c)将十六进制字符串00010204060708使用SHA-1进行散列计算,得到散列值。
(d)将散列值存储在Android设备~/data/system/gesture.key文件中。
至此,可以看出Android设备锁定图案的实质是6位数字到18位数字,且各单数位数字为零,双数位数字不重复地排列,并将这个排列进行单次SHA-1计算。
通过数学计算,由于单数位确定,双数位不重复,则,根据Android图案锁定规则可以设置的锁定图案总数为986328个,其密码容量甚至小于6位纯数字密码,所以其密码复杂度不高,破解相对容易。
(2)解密
针对图形锁定,可以采用预计算密码表方式进行暴力破解,在得到图案存储文件gesture.key的基础上(需要具有root权限),使用月50MB的密码表在1秒内即可完成所有图形锁定的破解。
3.Android字符密码加密原理及破解
(1)加密
除了采用图形设定设备之外,Android还允许用户使用4-16位的数字PIN码或者文本字符作为锁定密码。每一位密码范围为94字符,包括52个大小写英文字母+10个数字+30个除空格外的标点符号,在这种要求下输入的字符,加入Salt后进行SHA-1和MD5散列,之后,将散列结果存储于~/data/system/password.key文件中。
Android设备字符密码加密过程:字符输入——>加入Salt——>SHA-1+MD5散列——>合并散列存储。
在Android的源代码中可了解其字符密码加密过程的实现方式(com/android/internal/widget/LockPatternUtils.java)。
若用户设置了4位密码,密码容量为78074896(94^4);当设置了16位密码时,密码容量就很大了。
由此可以看出,Android设备上字符型密码锁定设备的密码强度相当高。
(2)解密
由于在SHA-1前先被加入了Salt值,所以暴力破解或预计算密码表的方式需提供Salt值。在Android操作系统中,字符型密码使用到的Salt值存储于手机设备的settings.db数据库中,该文件位于~/data/data/com.android.providers.settings/,该数据库中的secure表,存储了字符密码加密使用的Salt。同时,解密还需password.key文件中所包含的散列值,该文件存储于~/data/system/password.key。在该key文件中,包含了72字节的16进制字符串。
在得到password值与Salt之后,同样可以采用暴力破解方式对Android设备的字符型密码进行攻击(需要用到一些暴力破解工具)。
4.Android面部识别的破解
面部识别并不完全可靠和准确,并且缺乏真人判断机制,恶意用户可以用照片绕过验证。
5.Android存储加密
除了屏幕锁定,新版Android操作系统还支持Android设备内置存储空间进行加密,这种加密方式基于dmcrypt,运行于block device层,这样的加密默认只能对ext4分区进行,所以在Android3.0及以上的版本中财提供这种功能,存储加密要求首先设置至少6位且包含至少1位数字的字符型密码。
在Android存储加密中,主密钥采用AES 128位加密,主密钥在加入Salt值之后被存储于分区尾部或独立的文件中。
存储解密时,首先需要将Android设备进行完整的物理转储(可采用JTAG等方式),之后从分区尾部查找Salt值及加密后的主密钥,使用带Salt的PBKDF暴力破解的方式对密码进行测试,使用得出的密钥与SHA-256计算后的VI对主密钥进行解密,之后可使用真正主密钥对完整镜像进行解密。
6.总结
分析的是Android2.3.5,就了解下理论知识。