Android的安全与权限(1)
Android是一个多进程系统,每一个应用程序(和系统的组成部分)都运行在自己的进程中。在应用程序和系统间的安全通过标准的Linux设备在进程级被执行,例如被分配给应用程序的用户和组ID。额外的颗粒度安全特性通过"许可"机制来提供,该机制能够对一个指定进程可实现的特定操作进行约束。
(1)安全结构
Android安全中的一个重要的设计要点是在默认情况下应用程序没有权限执行对其他应用程序、操作系统或用户有害的操作。这些操作包括读/写用户的隐私数据(如联系方式或E-mail),读/写其他应用程序的文件,执行网络访问、保持设备活动等。
应用程序的进程是一个安全的沙箱,它不能干扰其他应用程序,除非在它需要添加原有沙箱不能提供的功能时,它将明确声明权限。这些权限请求能够被不同方式的操作所处理。特别地,基于证书和用户的提示将被自动允许或禁止。权限的请求是在那个应用中通过一个应用程序被声明为静态的,所以在此之后,在安装或没有改变时它们会预先知道。
(2)应用程序签名
所有的Android应用程序(.apk文件)必须通过一个证书的签名,此证书的私钥必须被开发者所掌握。这个证书的标识是应用程序的作者。这个证书不需要通过证书组织的签署。Android应用程序对于使用自签署的证书是完全允许的和特别的,这个证书仅被用于与应用程序建立信任关系,而不是为了大规模地控制应用程序是否被安装。最重要的方面是通过确定能够访问原始签名权限和能够共享用户ID的签名来影响安全。
(3)用户标识和文件访问
安装在设备中的每一个Android包文件(.apk)都会被分配到一个属于自己的统一的Linux用户ID,并且为它创建一个沙箱,以防止影响其他应用程序(或者其他应用程序影响它)。用户ID 在应用程序安装到设备中时被分配,并且在这个设备中保持它的永久性。
因为安全执行发生在进程级,所以一些不同包中的代码在相同进程中不能正常地运行,既然它们需要以不同的Linux用户身份运行。开发者可以使用每一个包中的AndroidManifest.xml文件中的 manifest 标签属性 sharedUserID 拥有它们分配的相同用户ID。通过这样做,两个包被视为相同的应用程序的安全问题就被解决了。注意:为了保持安全,仅有相同签名(和请求相同sharedUserID标签)的两个应用程序签名将会分配相同的用户ID。
应用创建的任何文件都会被赋予应用的用户标识,并且正常情况下不能被其他包访问。当通过getSharedPreferences(String,int)、openFileOutput(String、int)或者openOrCreate Database(String、int、SQLiteDatabase.CursorFactory)创建一个新文件时,开发者可以同时或分别使用MODE_WORLD_READABLE和MODE_WORLD_RITEABLE标志允许其他包读/写此文件。当设置了这些标志后,这个文件仍然属于自己的应用程序,但是它的全局读/写和读/写权限已经设置,所以其他任何应用程序可以看到它。
(4)权限命名
一个基本的Android应用程序没有与其相关联的权限,意味着它不能做任何影响用户体验或设备中数据的有害操作。要利用这个设备的保护特性,在自己的应用程序需要时,开发者必须在AndroidManifest.xml文件中包含一个或更多的<uses-permission> 标签来声明此权限。
例如,需要监听来自SMS消息的应用程序将要指定如下内容:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.app.myapp" >
<uses-permission android:name="android.permission.RECEIVE_SMS" />
</manifest>
在安装应用程序时,通过包安装器,应用程序要通过权限请求的许可。如果在应用运行期间对用户不做检查,它要么在安装时被授予特定的许可,并且使用某种特性;要么不被授予许可,并且使得一切使用特性的尝试失败而不提示用户。
通常情况下,如果许可检查失败,应用将收到一个SecurityException事件。但是这并不能保证总是发生,例如,BroadcastIntent(Intent)方法就是当数据发送到每个接收器时的许可检查,在方法调用返回后,许可检查失败时应用就不会收到一个异常。然而在所有例子中,许可检查失败都会被打印到系统日志中。通常地,多次许可错误会产生抛回至应用程序的 SecurityException 异常。
Android系统提供的许可可以在Manifest.permission中找到。每个引用也可以定义和执行它自己的许可,因此它不是全面的所有可能的许可列表。
在程序运行期间,个别权限在一些地方可能被强制:
在系统接到呼叫时,预防一个应用程序去执行特定的函数;
在启动一个活动时,防止一个应用启动其他应用程序的活动;
发送和接收意图广播时,控制谁能接收你的广播或者谁能发送广播给你;
访问和操作一个内容提供器;
绑定或开始一个服务。
(5)权限的声明和支持
为了执行自己的权限,开发者必须首先在自己的AndroidManifest.xml中使用一个或多个<permission>标签声明它们。
例如,一个应用程序想用权限控制谁能启动一个活动,它可以声明一个允许这个操作的许可,如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.me.app.myapp" >
<permission android:name="com.me.app.myapp.
permission.DEADLY_ACTIVITY"
android:label="@string/permlab_deadlyActivity"
android:description="@string/permdesc_deadlyActivity"
android:permissionGroup="android.permission-group.COST_MONEY"
android:protectionLevel="dangerous" />
</manifest>
分享到:
相关推荐
Android 安全 权限Android 安全 权限Android 安全 权限Android 安全 权限Android 安全 权限Android 安全 权限
Android 安全与权限 Security Permission Android Security Permission
本文档讲述关于Android 安全与权限,希望对大家有帮助。
资源名称:Android系统安全与攻防内容简介:本书共分为10章。第1章介绍了移动设备的发展格局;第2章和第3章分别介绍了Android操作系统和应用程序的体系结构;第4章深入研究了Android系统的安全特性;第5~9章介绍了...
Android的安全与权限.docx
Android-安全架构及权限控制机制剖析
Android的安全与权限.pdf
Android M 或以上的设备,在使用涉及隐私的安全权限时,需要动态申请,如果在每个用到权限的地方去申请,有点繁琐,所以做法是直接在每个Activity界面显示前就把该界面所需的权限全部申请允许了,再进入正常的流程。...
Android 权限检查EasyPermissions ,Android 6.0之前的系统用户在安装apk文件时会根据app声明的权限声称权限列表,用户只有在同意了申请的权限后才可以继续安装应用。这样就存在了很大的安全隐患。因此在android 6.0...
Android应用程序在安装的过程中,安装服务PackageManagerService会为它们分配一个唯一的UID和GID,以及根据应用程序所申请的权限,赋予其它的GID。有了这些UID和GID之后,应用程序就只能限访问特定的文件,一般就是...
Android 6.0版本(Api 23)推出了很多新的特性, 大幅提升了用户体验, 同时也为程序员带来新的负担. 动态权限管理就是这样,一方面让用户更加容易的控制自己的隐私,一方面需要重新适配应用权限.
资源名称:Android 安全架构深究内容简介:《Android 安全架构深究》自底向上描述了Android 的安全架构,深入探究与安全相关的Android 子系统、设备和数据组件的内部实现。其中包括包和用户管理,权限和设备策略,...
SchPermission一个自己封装的Android动态申请权限库
1、通过0权限上传下载数据,重启手机等案例,深入讲解android沙箱,安全机制和权限模型。 2、通过分析恶意代码的提权漏洞,讲解如何维护系统的安全。 3、通过linux键盘驱动案例的讲解,分析盗号木马的原理及其实现...
Android作为领先的手机操作系统已经为开发者们带来了创业和事业的全新机会,本文是关于Android开发的基本教程。
在android下可监控其他应用软件权限,监控每个应用软件流量情况,对每个应用软件的权限生成雷达分析图,并生成简单危险评估报告。还可设置是否后台运行等。 贴出本软件相关源码与参加大赛时的报告。 本软件部分功能...
简介: Android 是业界流行的开源移动平台,受到...本文从 Android 层次化安全架构入手,详细地介绍 Android 平台的安全架构及其权限控制机制,涵盖 Android 应用程序权限申请方法等,并从源代码实现层面来解析该机制。
这个是我从网上下载下来的,关于权限问题的解决,希望有用。
基于Android安全机制的权限控制系统.pdf
基于Android安全机制的权限检测系统.pdf