2023年7月31日发(作者:)

.历丽■doi:10.3969,j.issn.1671・1122.2013.01.019Android安全保护机制及解密方法研究孙奕(厦门市美亚柏科信息股份有限公司,福建厦门361008)摘要:随着移动通信技术的快速发展,越来越多的用户开始使用智能手机,来自IDC的数据显示,仅在2012年第三季度,全球主要智能手机制造商销售了超过1亿7千9百万部智能移动设备,而其中绝大多数设备是采用谷歌Android操作系统的智能手机。在当前的Android操作系统中,系统的安全保护措施主要依赖于锁定密码、文件系统加密等机制,文章主要针对以下3个方面进行了相关研究,包括:Android屏幕图案锁定算法和破解;Android屏幕密码锁定算法及破解;Android存储加密原理。关键词:Android安全;Android密码破解;手机取证中图分类号:TP393.08文献标识码:A文章编号:1671—1122(2013)01—0071—04AndroidSecurityProtectionMechanismandDecryptionSUNYi(MeiyaPicoInformationCo.,Ltd.Xiamen,XiamenFujian361008,China)Abstract:Withthefastdevelopmentofmobilecommunicationtechnology,moreandmorepeoplechoosesmartphones,accordingtothelateststatisticsfromIDCreports,vendorsshippedmoremobiledevicesinthethirdquarterof2012,mostofthemarethan197millionsmartwithAndroidOSfromGoogle.Inpresentversionofprotectionmechanism.ThispaperCOVfffStheAndroid,Sgl-∞nlockandfileAndroidsystemeneryptionaretwomajorsecurityresearchofthreekindsofsecurityprotectionsa啪lockpatternonalgorithmofAndroidmobileanddecryption,Androiddevices:inthispaper,somehottopicarestudied:Screenlockpasscodealgorithmanddecryption,StorageencryptionKeyAndroiddevices.passworddeeryption;smartphonefommicswords:androidsecurity;sndroidO引言随着移动通信技术的高速发展,手机、平板电脑等移动设备已经逐渐深入人们的生活,越来越多的人开始重视移动设备的安全,手机的安全保护机制从早期的依靠UICC卡(如SIM、UIM)的PIN码保护,到设置独立的手机保护密码,直至现在主流智能手机操作系统的多重层级密码保护和文件系统保护,不断增强的安全机制在为用户带来安全的同时,也为手机取证工作的开展带来了难度。手机取证是电子数据取证技术的一个具体分支,是从手机以及各类移动通信设备中提取和恢复证据的理论和方法体系,手机取证技术的发展与移动通信技术的发展是同步的,当今手机取证技术关注的问题包括删除数据恢复、加密信息解密以及各类应用程序的提取和解析等。本文主要从手机取证的角度,对Android智能手机及平板电脑(下文统称“Android设备”)的主要安全机制的原理、可靠性、解密策略和主要解密方法进行探讨,目的是使广大从事手机取证和移动信息安全技术的人员了解Android设备的加密和解密方法,为后续的数据提取、分析和恢复清除障碍。1Android设备安全机制众所周知,灿凼瑚操作系统是谷歌推出的—种基于“rlll)【的移动设备平台操作系统,从宏观意义上讲,Android的安全机制涵盖的层面很广比如,在应用程序层面上,Android操作系统中默认的收稿时问:2012-12—24作者简介:孙奕(1986一),男,工程师,硕士研究生,主要研究方向:电子数据取证、密码破解。万方数据丽丽程序安装需要进行证书认证,在程序安装时,用户能够得到该程序的权限提示,诸如访问短信、联系人和网络功能的程序都需要用户确认同意之后才可安装;在安装完成后,每个应用程序的运行都将使用独立的用户和ID,并且应用程序运行于Dalvik虚拟机中,这种机制保证了应用程序使用独立的进程、内存及存储。而从用户界面上看,Android的安全保护机制主要体现为对于用9ed4e48。一散列计算,得到散列值6a06269b3452e366407181albf92ea73e4)将散列值6a062b9b3452e366407181albf92ea73e9ed4c48存储在Android设备一\data\system\gesture.key文件中。从上述过程我们可以看出,Android设备锁定图案的实质是6位数字到18位数字,且各单数位数字为零,双数位数字不重复地排列,并将这个排列进行单次SHA-1计算。通过数学计算可知,由于单数位确定,双数位不重复,则根据Android图案锁定规则可以设置的锁定图案总数为986328个,其密码容量甚至小于6位纯数字密码,所以其密码复杂程度不高,破解相对容易。户界面的访问控制的保护,比如在设备空闲时,用户可以锁定设备,并目设置解锁口令,从而防止未授权的其他用户打开设备。在Android设备上,常用的屏幕锁定方式包含以下几种:表1Android设备屏幕锁定方式主要安全机制PIN码锁定图案密码保护面部解锁内容纯数字。4—16位点组合,3-9位无重复字符组合,4-16位面部识别。需配合图案或PIN码2.2解密针对此类图形锁定,可以采用预计算密码表方式进行暴力破解,在得到图案存储文件gesture.key的基础上(需要具此外,新版本的Android操作系统中还加入了与苹果iOS类似的文件系统加密机制。2备root权限),使用约50MB的密码表在1秒内即可完成所有图形锁定的破解。Android图案锁定原理及解密e0376c.88105abe0120ec56‘4c07b76267c701clf:8,,,6.0,2,5…143c496f13fbb7657£8b812d了f呲od2929S062dil9:5r7,5,0,2,5,3,1,4IH§u譬,eYeCadUCtUSjlS5e81e1C9廿edS毫舱譬1D3‘,2:B.,,‘,U.Z,5,3.哇.12.1加密在Android设备上,用户可以通过设置锁定图案作为密码对设备用户界面进行锁定,锁定界面如图2所示。ca0307哇64f8Slell509●Sfof2c幽55fsfOd8cb:8,7,6.0,2,5.4,3,18e23679cB32S31d66cfOe38ab3cldc3c3eOadcOd:6,7,6,0,2,5.4,1,3d2站46982414aa4cztc83b4eec5e97391312∞‘a7:8.7.6.0,3.1,2,4.S0a6f927d哇53b27ff7552de3cSee8475ac8aEa34e:5,',‘,0,3,l,2,5.4ff64feddoa7d7f伯晤92b617dc99鼍a7蛐6afof7d:8,7,6.0.3,1,4,2,5457e012cSa2190aad7ecbe76add7c776Bd2a74c4:8r7,6,0,3…180fc6fe9c2dd85cf71b3241f43bSl68专‘43哇3cS3:8.7,5.0.3.1.4.5.252,鼍521afObc293253988b0594d0504f040c3aeda51b:8,7.6,0,3.1,5.4,28872be09049acbc94aadbda4e79f6cea542ad645:8,7,6,0.3r2,1.4,58窳,35ee07107c4a44314302flcfOf328127ec327:8,7,5,0,3.2…44d486f4c91cdb8baac263aSleebcaOc595cc7808:8,7,6,0,3…24020534569764864f5b52t08t237f3a96ef230再el:5,7,6,0,3,2.1,5,415c9f7c7b膏21811dcc蛐S2019202童S1270哇3d6a2f:8,7.6,0.3.2.5,1.476ab2‘7盆'12681e眦7a54lObl泓oafcala76a6af:8.7,6,0.3,2,5.4,1e9662e4799clec8eb426‘940b0074egdaefad45f:8.7.6,0,3.4,1,2,55.Ic6E哟b丑S6b0敏lc2f6acl048e3del9c374Ll■iS3dege:8,7,6,0,3,4,1,5,2图3Androidm定图形密码表3Android字符密码加密原理及破解3.1加密除了可以采用图形设定设备之外,Android还允许用户使图2Android4.0的图案锁定界面Android设备的锁定界面由9点构成,锁定图案需满足三个要求:至少3点、最多9点、无重复点,这种看似复杂的解锁用4—16位的数字PIN码或者文本字符作为锁定密码。相对于图形来讲,字符型密码的复杂度更高,在默认情况下,Android允许用户设置4一16位的字符密码,每一位密码范围方式在AndIDid存储时使用的是明文转换后采用散列方式存储。Android设备图案锁定的加密存储过程:图案输入一>转换明文->SHA一1散列->存储为94字符,包括52个大小写英文字母+10个数字+30个除空格外的标点符号,在这种要求下输入的字符,加入Salt后进行1)用户输入图案,假设用户输入如图2所示的图案(即形如字母Z的图形)。2)将图案转换为明文数字,从左上角起编号为oo,至右下角止编号为08,则上述图形转换后为00—01—02—04一06—07一08。SHA一1和MD5散列,之后,将散列结果存储于一\data\system\password.key3婵1:中。Android设备字符密码加密过程:字符输入_>加入Sah->SHA-I+MD5散列_>合并散列存储。在Android的源代码中可了解其字符密码加密的过程实现方式(com/android/internal/widget/LoekPatternUtils.java),如图4所示:3)将十六进制字符串00010204060708使用SHA一1进行72...........................——万方数据J。。。。。。。。。。。。。。。。。。。_。。。。___。。。。。。。。●。。。。。。。。——/加13年第01期,车+Generateuseaahashforthegivenpassword.Toavoidbruteforceattacks。wesecure,butitislocationleastsecondlevelofprotection.First在这个Key文件中,包含了72字节的16进制字符串,这72字节字符串由包含Salt的原始数据分别计算SHA一1和saltedhash.mostata+NotthehveliSthat+thefileisMD5之后的散列值组合而成,下面是一个Android2.3.5设备中提取出的Key3吲tt:的示例:表2password.key文件的组成877D44DCB24A57004D86C1FE9925AE59BD7羽£8EOAF25262084D7CODF5E01D28CE9CD667Donlyreadablebythesystemthe+@parampasswordgesturepattern.‘@returnthehashtithepatterninabytearray.inaprocess.+,publicbyte[】passwordToHash(Stringpassword)Iif(password—null){returnnull;Password.key文件中的值877D44DCB24A57004D86C1FE9925AAF25262084D7CODF5EOID28CE9CD6E59BD78E8E067D)StringMgo=null;byte[】hashed=null;tryI带Salt数据计算SHA-I的散列值带Salt数据计算MD5的散列值在得到Tpassword值与Sah之后,我们便可采用暴力破解的方式对Android设备的字符型密码进行攻击。对于Android设备中字符型密码的暴力破解可以采用常见的散列暴力破解软件来进行,我们以上面几幅图中获取的信息byte[】saltedPassword=(password+getSalt()).getBytes0;byte[】shal=MessageDigest.getInstance(algo=”SHA-1’’).digest(saltedPassword);byte[】rod5=MessageDige8t.getInstance(algo:”MD5”).digest(saltedPassword);hashed=(toHex(shal)‘+toHex(md5)).getBytes0;lcatch(NoSuchAlgorithmExceptione)ILog.w(TAG.”FailedtoencodestringbecauseofmissingMgorithm:”+algo);}return为例,演示如何进行暴力破解:1)提取密码的MD散列值,拆分方法见表2。2)从setting.db中提取Salt值:6581726032413746791,将其转换为十六进制值5856FCF47AF66667.3)将上述两个值加入散列暴力破解软件,并设置相关掩码。4)运行破解软件进行破解。hashed;图4Andmid字符型加密源代码使用此种加密方法后,假设用户按照系统要求的最小位数4位设置密码,密码容量为78074896个,即7千8百万个,而当用户设置了最高16位密码时,其密码容量达到了惊人的371574290834l0091685945089785856个,即3.7"1031个密码,由此可以看出,Android设备上字符型密码锁定设备的密码强度相当高。3.2解密从图4所引用的Android源代码中我们可知,字符型密码在进行SHA—I前首先被加入了Salt值,而如果需要使用暴力破解或预计算密码表的方式需要提供Salt值,在Android操作系统中,字符型密码使用到的Salt值存储于手机设备的settings.db数据库中,该文件位于:-/datMdata/com.android.providers.settings/图6暴力破解结果在该数据库中的se一表,储存了字符密码加密.伽的SaL6203在以上的演示中,作者使用了一台显卡为nVidiaNVS3100M的ThinkPadT410笔记本电脑,该机器显卡具有两个显示核心,配合CUDA技术,仅用了1秒即破解出了密码“1234”,779796Iocksc….Iockoubnemptceadl;呻backg…d—da协bluet∞thbluH。othoR9439386651破解速度可达88312个,每秒。当然,破解密码的时间与密码长度和复杂度直接相关,假设使用作者测试这台笔记本电脑直接进行暴力破解,以3种不同的字符集范围及长度耗费的预计时间如下:表3暴力破解耗时预计4位完整字符集78074896/88312/606.4656667687977991setheacprlor;ty50(9:711D=2CDF10CO01805~b:leB∞lockdate806adbenabledDanerr,autolock070811Iocks㈣npas~rd_type1310726位完整字符集94‘6,88312/360Q/244—16位完整字符集94"16/88312/3600/24/36514.734分钟图590.413天13341950662270341883.961年settings.db中存储的Salt这样的结果就是天文数字了'对于这种类型的密码破解,可以采用以下几种方式进行优化:1)使用高性能破解硬件,如选用高性能显卡,使用CUDA技术或Stream技术采取GPU或CPU+GPU方式进行密同时,解密还需获得前文描述加密部分所提到的password.key文件中所包含的散列值,该文件存储于以下位置:~\data\system\password.key万方数据磊虱码破解,从而大幅度提高密码破解速度,如换用一块nVidiaGTX680显卡,可将密码破解速度提高至每秒50万个以上。2)降低密码复杂程度,对于大多数使用者来说,字符型密码一般不会选择符号等特殊字符,采用密码分析策略,可在Android存储加密中,主密钥采用AES128位加密,主密钥在加入Salt值之后被存储于分区尾部或独立的文件中。在进行存储解密时,首先需要将Android设备进行完整的物理转储(可采用JTAG等方式),之后从分区尾部查找Salt以首先尝试全数字破解,如无结果,再尝试数字+小写英文字母等方式,减少需进行破解的密码容量,结合上面采用多块GPU加速方式进行破解,可以在1.2天之内完成10—11位值以及加密后的主密钥,使用带Salt的PBKDF暴力破解的方式对密码进行测试,使用得出的密钥与SHA-256计算后的VI对主密钥进行解密,之后便可使用真正主密钥对完整镜像进行解密。数字+大写/d,写字符密码的破解。掌握了破解方法后,也可以采用编写python脚本的方式实现自动化字符密码破解,但这种方式主要使用CPU进行密码破解,速度较慢,不适用于复杂密码的暴力破解。上文中由于存储加密与设备锁定密码设置相同,在进行存储加密破解时。可以首先对全字符锁定密码进行暴力破解之后再进行存储加密破解。用于演示的数据采用CPU暴力破解用时3秒左右得出结果。№”删w—}x竹岁。:掣keyten-.32’K.v(1看哺)tV0、ZBpit)/H“~‘8“ao…——鲥Ⅲ2Bb‘lI、、7图7使用python脚本对Android字符型密码进行暴力破解4Android面部识别的破解在Android4.0及以上版本中除了.上面提到的图案解锁和字‰。州Ⅲ,———I…Esslv=一,sn嘧脚——}卧恻一“…圈8Android存储加密的原理符解锁外,还增加了面部识别解锁,用户可以使用自己的面部特征作为验证身份唯一性的标志来锁定设备,这种方法通过采集人类面部图像,并通过特定的算法(如双眼或五官特征及间距)判断同一性,这种锁定,解锁方式省去了繁琐的密码输6结束语在当今的手机和移动设备取证工作中,Android设备占据了较大的比重,对于Android设备中安全机制的研究目前是手机取证领域重点关注的方向之・,从事电子数据取证、信息安全相关行业的技术人员对于Android加密原理及解密方法方面具备较为普遍的需求。本文主要分析了当前主流Android操作系统安全机制中的入过程,受到了用户的积极回应。但是,由于面部识别并不能做到完全可靠、准确的识别,并且,缺乏真人判断机制,因此,恶意用户可以采用授权用户照片等方式来绕过这个验证。正是由于上述原因,目前,AndroidAndroid4.1Jelly4.0IceCreamSandwich、Bean以及Android4.2JellyBean在用户选加密机制,详细介绍了各类加密方式的原理和算法,并根据其计算难度给出了解密思路及方法,为广大专业技术人员提供了较为有力的理论依据和实践指导。同时,由于篇幅等条件所限,本文没有针对接下来逐渐占据主流地位的Android3.x/4.择面部识别解锁的同时,还需要用户选择PIN数字密码或者图案锁定进行辅助,所以,对于所有采用面部识别锁定的Android设备,可以选择采用针对图案锁定和字符锁定的破解方式进行破解。由于本文探讨范围的限制,关于Android设备面部识别算法的原理不再赘述。5X使用的存储加密进行深入的解密分析,在今后的研究中,作者将另外专门针对此类加密进行介绍。◆(责编杨晨)Android存储加密除了屏幕锁定外,新版本的Android操作系统还支持对参考文献:[1】AndrewHoog.AndroidForensics[MI.Waltham:Syngress,2011.SecurityfortheAndroid【2】2JeffSix.ApplicationO’P.eUy,2011.Platform【M】.Sebastopol:RecognitioninAndroid设备内置存储空间进行加密,这种加密方式基于dm—crypt,运行于blockdevice层,这样的加密默认只能对ext4分区进行,所以在Android3.0及以上的版本中才提供这种功能,存储加密要求首先设置至少六位g/g含至少一位数字的字符型密码。【3GuillaumeDave,xhlgMobile【4】NoteshtmlChao,KishoreSriadibhath.FacePhoneS冈.StanfordonUniversity.theimplementationofencryptioninAndroid3.0,【z】.http://source.android.com/tech/encryption/android_crypto_implementation.万方数据

2023年7月31日发(作者:)

.历丽■doi:10.3969,j.issn.1671・1122.2013.01.019Android安全保护机制及解密方法研究孙奕(厦门市美亚柏科信息股份有限公司,福建厦门361008)摘要:随着移动通信技术的快速发展,越来越多的用户开始使用智能手机,来自IDC的数据显示,仅在2012年第三季度,全球主要智能手机制造商销售了超过1亿7千9百万部智能移动设备,而其中绝大多数设备是采用谷歌Android操作系统的智能手机。在当前的Android操作系统中,系统的安全保护措施主要依赖于锁定密码、文件系统加密等机制,文章主要针对以下3个方面进行了相关研究,包括:Android屏幕图案锁定算法和破解;Android屏幕密码锁定算法及破解;Android存储加密原理。关键词:Android安全;Android密码破解;手机取证中图分类号:TP393.08文献标识码:A文章编号:1671—1122(2013)01—0071—04AndroidSecurityProtectionMechanismandDecryptionSUNYi(MeiyaPicoInformationCo.,Ltd.Xiamen,XiamenFujian361008,China)Abstract:Withthefastdevelopmentofmobilecommunicationtechnology,moreandmorepeoplechoosesmartphones,accordingtothelateststatisticsfromIDCreports,vendorsshippedmoremobiledevicesinthethirdquarterof2012,mostofthemarethan197millionsmartwithAndroidOSfromGoogle.Inpresentversionofprotectionmechanism.ThispaperCOVfffStheAndroid,Sgl-∞nlockandfileAndroidsystemeneryptionaretwomajorsecurityresearchofthreekindsofsecurityprotectionsa啪lockpatternonalgorithmofAndroidmobileanddecryption,Androiddevices:inthispaper,somehottopicarestudied:Screenlockpasscodealgorithmanddecryption,StorageencryptionKeyAndroiddevices.passworddeeryption;smartphonefommicswords:androidsecurity;sndroidO引言随着移动通信技术的高速发展,手机、平板电脑等移动设备已经逐渐深入人们的生活,越来越多的人开始重视移动设备的安全,手机的安全保护机制从早期的依靠UICC卡(如SIM、UIM)的PIN码保护,到设置独立的手机保护密码,直至现在主流智能手机操作系统的多重层级密码保护和文件系统保护,不断增强的安全机制在为用户带来安全的同时,也为手机取证工作的开展带来了难度。手机取证是电子数据取证技术的一个具体分支,是从手机以及各类移动通信设备中提取和恢复证据的理论和方法体系,手机取证技术的发展与移动通信技术的发展是同步的,当今手机取证技术关注的问题包括删除数据恢复、加密信息解密以及各类应用程序的提取和解析等。本文主要从手机取证的角度,对Android智能手机及平板电脑(下文统称“Android设备”)的主要安全机制的原理、可靠性、解密策略和主要解密方法进行探讨,目的是使广大从事手机取证和移动信息安全技术的人员了解Android设备的加密和解密方法,为后续的数据提取、分析和恢复清除障碍。1Android设备安全机制众所周知,灿凼瑚操作系统是谷歌推出的—种基于“rlll)【的移动设备平台操作系统,从宏观意义上讲,Android的安全机制涵盖的层面很广比如,在应用程序层面上,Android操作系统中默认的收稿时问:2012-12—24作者简介:孙奕(1986一),男,工程师,硕士研究生,主要研究方向:电子数据取证、密码破解。万方数据丽丽程序安装需要进行证书认证,在程序安装时,用户能够得到该程序的权限提示,诸如访问短信、联系人和网络功能的程序都需要用户确认同意之后才可安装;在安装完成后,每个应用程序的运行都将使用独立的用户和ID,并且应用程序运行于Dalvik虚拟机中,这种机制保证了应用程序使用独立的进程、内存及存储。而从用户界面上看,Android的安全保护机制主要体现为对于用9ed4e48。一散列计算,得到散列值6a06269b3452e366407181albf92ea73e4)将散列值6a062b9b3452e366407181albf92ea73e9ed4c48存储在Android设备一\data\system\gesture.key文件中。从上述过程我们可以看出,Android设备锁定图案的实质是6位数字到18位数字,且各单数位数字为零,双数位数字不重复地排列,并将这个排列进行单次SHA-1计算。通过数学计算可知,由于单数位确定,双数位不重复,则根据Android图案锁定规则可以设置的锁定图案总数为986328个,其密码容量甚至小于6位纯数字密码,所以其密码复杂程度不高,破解相对容易。户界面的访问控制的保护,比如在设备空闲时,用户可以锁定设备,并目设置解锁口令,从而防止未授权的其他用户打开设备。在Android设备上,常用的屏幕锁定方式包含以下几种:表1Android设备屏幕锁定方式主要安全机制PIN码锁定图案密码保护面部解锁内容纯数字。4—16位点组合,3-9位无重复字符组合,4-16位面部识别。需配合图案或PIN码2.2解密针对此类图形锁定,可以采用预计算密码表方式进行暴力破解,在得到图案存储文件gesture.key的基础上(需要具此外,新版本的Android操作系统中还加入了与苹果iOS类似的文件系统加密机制。2备root权限),使用约50MB的密码表在1秒内即可完成所有图形锁定的破解。Android图案锁定原理及解密e0376c.88105abe0120ec56‘4c07b76267c701clf:8,,,6.0,2,5…143c496f13fbb7657£8b812d了f呲od2929S062dil9:5r7,5,0,2,5,3,1,4IH§u譬,eYeCadUCtUSjlS5e81e1C9廿edS毫舱譬1D3‘,2:B.,,‘,U.Z,5,3.哇.12.1加密在Android设备上,用户可以通过设置锁定图案作为密码对设备用户界面进行锁定,锁定界面如图2所示。ca0307哇64f8Slell509●Sfof2c幽55fsfOd8cb:8,7,6.0,2,5.4,3,18e23679cB32S31d66cfOe38ab3cldc3c3eOadcOd:6,7,6,0,2,5.4,1,3d2站46982414aa4cztc83b4eec5e97391312∞‘a7:8.7.6.0,3.1,2,4.S0a6f927d哇53b27ff7552de3cSee8475ac8aEa34e:5,',‘,0,3,l,2,5.4ff64feddoa7d7f伯晤92b617dc99鼍a7蛐6afof7d:8,7,6.0.3,1,4,2,5457e012cSa2190aad7ecbe76add7c776Bd2a74c4:8r7,6,0,3…180fc6fe9c2dd85cf71b3241f43bSl68专‘43哇3cS3:8.7,5.0.3.1.4.5.252,鼍521afObc293253988b0594d0504f040c3aeda51b:8,7.6,0,3.1,5.4,28872be09049acbc94aadbda4e79f6cea542ad645:8,7,6,0.3r2,1.4,58窳,35ee07107c4a44314302flcfOf328127ec327:8,7,5,0,3.2…44d486f4c91cdb8baac263aSleebcaOc595cc7808:8,7,6,0,3…24020534569764864f5b52t08t237f3a96ef230再el:5,7,6,0,3,2.1,5,415c9f7c7b膏21811dcc蛐S2019202童S1270哇3d6a2f:8,7.6,0.3.2.5,1.476ab2‘7盆'12681e眦7a54lObl泓oafcala76a6af:8.7,6,0.3,2,5.4,1e9662e4799clec8eb426‘940b0074egdaefad45f:8.7.6,0,3.4,1,2,55.Ic6E哟b丑S6b0敏lc2f6acl048e3del9c374Ll■iS3dege:8,7,6,0,3,4,1,5,2图3Androidm定图形密码表3Android字符密码加密原理及破解3.1加密除了可以采用图形设定设备之外,Android还允许用户使图2Android4.0的图案锁定界面Android设备的锁定界面由9点构成,锁定图案需满足三个要求:至少3点、最多9点、无重复点,这种看似复杂的解锁用4—16位的数字PIN码或者文本字符作为锁定密码。相对于图形来讲,字符型密码的复杂度更高,在默认情况下,Android允许用户设置4一16位的字符密码,每一位密码范围方式在AndIDid存储时使用的是明文转换后采用散列方式存储。Android设备图案锁定的加密存储过程:图案输入一>转换明文->SHA一1散列->存储为94字符,包括52个大小写英文字母+10个数字+30个除空格外的标点符号,在这种要求下输入的字符,加入Salt后进行1)用户输入图案,假设用户输入如图2所示的图案(即形如字母Z的图形)。2)将图案转换为明文数字,从左上角起编号为oo,至右下角止编号为08,则上述图形转换后为00—01—02—04一06—07一08。SHA一1和MD5散列,之后,将散列结果存储于一\data\system\password.key3婵1:中。Android设备字符密码加密过程:字符输入_>加入Sah->SHA-I+MD5散列_>合并散列存储。在Android的源代码中可了解其字符密码加密的过程实现方式(com/android/internal/widget/LoekPatternUtils.java),如图4所示:3)将十六进制字符串00010204060708使用SHA一1进行72...........................——万方数据J。。。。。。。。。。。。。。。。。。。_。。。。___。。。。。。。。●。。。。。。。。——/加13年第01期,车+Generateuseaahashforthegivenpassword.Toavoidbruteforceattacks。wesecure,butitislocationleastsecondlevelofprotection.First在这个Key文件中,包含了72字节的16进制字符串,这72字节字符串由包含Salt的原始数据分别计算SHA一1和saltedhash.mostata+NotthehveliSthat+thefileisMD5之后的散列值组合而成,下面是一个Android2.3.5设备中提取出的Key3吲tt:的示例:表2password.key文件的组成877D44DCB24A57004D86C1FE9925AE59BD7羽£8EOAF25262084D7CODF5E01D28CE9CD667Donlyreadablebythesystemthe+@parampasswordgesturepattern.‘@returnthehashtithepatterninabytearray.inaprocess.+,publicbyte[】passwordToHash(Stringpassword)Iif(password—null){returnnull;Password.key文件中的值877D44DCB24A57004D86C1FE9925AAF25262084D7CODF5EOID28CE9CD6E59BD78E8E067D)StringMgo=null;byte[】hashed=null;tryI带Salt数据计算SHA-I的散列值带Salt数据计算MD5的散列值在得到Tpassword值与Sah之后,我们便可采用暴力破解的方式对Android设备的字符型密码进行攻击。对于Android设备中字符型密码的暴力破解可以采用常见的散列暴力破解软件来进行,我们以上面几幅图中获取的信息byte[】saltedPassword=(password+getSalt()).getBytes0;byte[】shal=MessageDigest.getInstance(algo=”SHA-1’’).digest(saltedPassword);byte[】rod5=MessageDige8t.getInstance(algo:”MD5”).digest(saltedPassword);hashed=(toHex(shal)‘+toHex(md5)).getBytes0;lcatch(NoSuchAlgorithmExceptione)ILog.w(TAG.”FailedtoencodestringbecauseofmissingMgorithm:”+algo);}return为例,演示如何进行暴力破解:1)提取密码的MD散列值,拆分方法见表2。2)从setting.db中提取Salt值:6581726032413746791,将其转换为十六进制值5856FCF47AF66667.3)将上述两个值加入散列暴力破解软件,并设置相关掩码。4)运行破解软件进行破解。hashed;图4Andmid字符型加密源代码使用此种加密方法后,假设用户按照系统要求的最小位数4位设置密码,密码容量为78074896个,即7千8百万个,而当用户设置了最高16位密码时,其密码容量达到了惊人的371574290834l0091685945089785856个,即3.7"1031个密码,由此可以看出,Android设备上字符型密码锁定设备的密码强度相当高。3.2解密从图4所引用的Android源代码中我们可知,字符型密码在进行SHA—I前首先被加入了Salt值,而如果需要使用暴力破解或预计算密码表的方式需要提供Salt值,在Android操作系统中,字符型密码使用到的Salt值存储于手机设备的settings.db数据库中,该文件位于:-/datMdata/com.android.providers.settings/图6暴力破解结果在该数据库中的se一表,储存了字符密码加密.伽的SaL6203在以上的演示中,作者使用了一台显卡为nVidiaNVS3100M的ThinkPadT410笔记本电脑,该机器显卡具有两个显示核心,配合CUDA技术,仅用了1秒即破解出了密码“1234”,779796Iocksc….Iockoubnemptceadl;呻backg…d—da协bluet∞thbluH。othoR9439386651破解速度可达88312个,每秒。当然,破解密码的时间与密码长度和复杂度直接相关,假设使用作者测试这台笔记本电脑直接进行暴力破解,以3种不同的字符集范围及长度耗费的预计时间如下:表3暴力破解耗时预计4位完整字符集78074896/88312/606.4656667687977991setheacprlor;ty50(9:711D=2CDF10CO01805~b:leB∞lockdate806adbenabledDanerr,autolock070811Iocks㈣npas~rd_type1310726位完整字符集94‘6,88312/360Q/244—16位完整字符集94"16/88312/3600/24/36514.734分钟图590.413天13341950662270341883.961年settings.db中存储的Salt这样的结果就是天文数字了'对于这种类型的密码破解,可以采用以下几种方式进行优化:1)使用高性能破解硬件,如选用高性能显卡,使用CUDA技术或Stream技术采取GPU或CPU+GPU方式进行密同时,解密还需获得前文描述加密部分所提到的password.key文件中所包含的散列值,该文件存储于以下位置:~\data\system\password.key万方数据磊虱码破解,从而大幅度提高密码破解速度,如换用一块nVidiaGTX680显卡,可将密码破解速度提高至每秒50万个以上。2)降低密码复杂程度,对于大多数使用者来说,字符型密码一般不会选择符号等特殊字符,采用密码分析策略,可在Android存储加密中,主密钥采用AES128位加密,主密钥在加入Salt值之后被存储于分区尾部或独立的文件中。在进行存储解密时,首先需要将Android设备进行完整的物理转储(可采用JTAG等方式),之后从分区尾部查找Salt以首先尝试全数字破解,如无结果,再尝试数字+小写英文字母等方式,减少需进行破解的密码容量,结合上面采用多块GPU加速方式进行破解,可以在1.2天之内完成10—11位值以及加密后的主密钥,使用带Salt的PBKDF暴力破解的方式对密码进行测试,使用得出的密钥与SHA-256计算后的VI对主密钥进行解密,之后便可使用真正主密钥对完整镜像进行解密。数字+大写/d,写字符密码的破解。掌握了破解方法后,也可以采用编写python脚本的方式实现自动化字符密码破解,但这种方式主要使用CPU进行密码破解,速度较慢,不适用于复杂密码的暴力破解。上文中由于存储加密与设备锁定密码设置相同,在进行存储加密破解时。可以首先对全字符锁定密码进行暴力破解之后再进行存储加密破解。用于演示的数据采用CPU暴力破解用时3秒左右得出结果。№”删w—}x竹岁。:掣keyten-.32’K.v(1看哺)tV0、ZBpit)/H“~‘8“ao…——鲥Ⅲ2Bb‘lI、、7图7使用python脚本对Android字符型密码进行暴力破解4Android面部识别的破解在Android4.0及以上版本中除了.上面提到的图案解锁和字‰。州Ⅲ,———I…Esslv=一,sn嘧脚——}卧恻一“…圈8Android存储加密的原理符解锁外,还增加了面部识别解锁,用户可以使用自己的面部特征作为验证身份唯一性的标志来锁定设备,这种方法通过采集人类面部图像,并通过特定的算法(如双眼或五官特征及间距)判断同一性,这种锁定,解锁方式省去了繁琐的密码输6结束语在当今的手机和移动设备取证工作中,Android设备占据了较大的比重,对于Android设备中安全机制的研究目前是手机取证领域重点关注的方向之・,从事电子数据取证、信息安全相关行业的技术人员对于Android加密原理及解密方法方面具备较为普遍的需求。本文主要分析了当前主流Android操作系统安全机制中的入过程,受到了用户的积极回应。但是,由于面部识别并不能做到完全可靠、准确的识别,并且,缺乏真人判断机制,因此,恶意用户可以采用授权用户照片等方式来绕过这个验证。正是由于上述原因,目前,AndroidAndroid4.1Jelly4.0IceCreamSandwich、Bean以及Android4.2JellyBean在用户选加密机制,详细介绍了各类加密方式的原理和算法,并根据其计算难度给出了解密思路及方法,为广大专业技术人员提供了较为有力的理论依据和实践指导。同时,由于篇幅等条件所限,本文没有针对接下来逐渐占据主流地位的Android3.x/4.择面部识别解锁的同时,还需要用户选择PIN数字密码或者图案锁定进行辅助,所以,对于所有采用面部识别锁定的Android设备,可以选择采用针对图案锁定和字符锁定的破解方式进行破解。由于本文探讨范围的限制,关于Android设备面部识别算法的原理不再赘述。5X使用的存储加密进行深入的解密分析,在今后的研究中,作者将另外专门针对此类加密进行介绍。◆(责编杨晨)Android存储加密除了屏幕锁定外,新版本的Android操作系统还支持对参考文献:[1】AndrewHoog.AndroidForensics[MI.Waltham:Syngress,2011.SecurityfortheAndroid【2】2JeffSix.ApplicationO’P.eUy,2011.Platform【M】.Sebastopol:RecognitioninAndroid设备内置存储空间进行加密,这种加密方式基于dm—crypt,运行于blockdevice层,这样的加密默认只能对ext4分区进行,所以在Android3.0及以上的版本中才提供这种功能,存储加密要求首先设置至少六位g/g含至少一位数字的字符型密码。【3GuillaumeDave,xhlgMobile【4】NoteshtmlChao,KishoreSriadibhath.FacePhoneS冈.StanfordonUniversity.theimplementationofencryptioninAndroid3.0,【z】.http://source.android.com/tech/encryption/android_crypto_implementation.万方数据