三、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,就了解下理论知识。

更多相关文章

  1. Android字符串资源文件format方法使用实例
  2. Android(安卓)display架构分析二-SW架构分析
  3. 解放双手,在PC端进行Android真机调试
  4. android 工具类之--TextUtils
  5. Android加密之全盘加密详解
  6. eScan Mobile Security for Android:适用于Android系统的eScan移
  7. 开启andriod手机的adbd,进行无线adb调试
  8. Android(安卓)上的低功耗蓝牙实践
  9. Android(OPhone) 学习笔记 - SharedPreferences

随机推荐

  1. Android中的AppWidget
  2. Android(安卓)技能树
  3. Android尺寸单位
  4. Android初始化语言 (init.*.rc、init.con
  5. android 获取系统分辨率
  6. 传智播客的安卓基础视频-20151228-Androi
  7. Android连接上google
  8. android sdk manager安装SDK出现错误解决
  9. 简单学习Android(安卓)TextView
  10. android第二天课程