|
Android移动终端操作系统的安全分析Android是一个基于Linux内核并使用Java语言编写应用的开源的移动终端操作系统,主要用于便携设备,如手机、平板电脑等。 Android的权限许可机制强制限制应用执行某些操作。目前,Android拥有大约100个内置的权限要求来限制应用的相关操作,包括拨打电话(CALLPHONE)、照相(CAMERA )、使用网络(INTERNET)、发送短信(SEND_SMS)等等。任何Android的应用能够申请默认权限以外的额外权限,当然在安装过程中需要用户确认应用所申请的额外权限。 一个基本的Android应用程序如果没有与其相关联的权限,意味着它不能做任何影响用户体验或设备中数据的有害操作,用户的“敏感”数据也就不会被某些未经授权的程序所损害。更进一步,不同的应用程序运行在不同的沙箱中,这样就算运行了恶意代码,也仅仅只能破坏其所在的沙箱,对系统及用户并不能造成很大的影响。 2.3 Android系统的签名机制 Android系统的另一个安全措施是其签名机制。Android中系统和应用都是需要签名的,签名的主要作用是限制对于程序的修改,使其仅来自于同一来源。Android系统的签名机制分两个阶段:包(package)扫描阶段和权限创建阶段。 包扫描阶段需要进行完整性和证书的验证。普通包的签名和证书必须先经过验证,即需要对manifest下的文件进行完整性检查,完整性检查包括压缩包(jar包)中的所有文件。如果是系统包的话,则需要使用AndroidMenifest. xml文件提取签名和验证信息。 权限创建阶段主要对包进行权限创建。如果该包来自系统应用,则信任它,而且使用新的签名信息去替换旧的信息。如果该包与其它包共享一个UID,并且共享UID在对应的共享用户(sharedUser)中保存的签名与之不一致,那么签名验证失败。 Android系统在安装应用程序时,对一个包的签名验证的主要逻辑是在JarVerifier.Java文件的verifyCertificate函数中实现的。其主要的思路是通过提取证书和签名信息,获取签名算法等信息,然后按照之前对apk签名的方法进行计算,最后比较得到的签名和摘要信息与apk中保存的内容是否匹配。 如果是已安装的程序进行升级,Android系统则需要检查新旧程序的签名证书是否一致,如果不一致则会安装失败。而对于申请权限的保护级别为signature或者signature or system的,Android系统则会检查权限申请者和权限声明者的证书是否是一致的。 责编:李玉琴 微信扫一扫实时了解行业动态 微信扫一扫分享本文给好友 著作权声明:畅享网文章著作权分属畅享网、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。 |
最新专题 |
|