【51CTO独家特稿】本文李洋老师将向我们介绍“Android安全框架概览”:Android安全结构的中心思想为“应用程序在默认的情况下不可以执行任何对其他应用程序,系统或者用户带来负面影响的操作。”开发者只有了解到Android的安全架构才能设计出在使用过程中更加流畅的用户体验。
1. Android具有哪些权限
根据用户的使用过程体验,可以将Android涉及的权限大致分为如下三类:
(1)Android手机所有者权限:自用户购买Android手机(如Samsung GT-i9000)后,用户不需要输入任何密码,就具有安装一般应用软件、使用应用程序等的权限;
(2)Android root权限:该权限为Android系统的***权限,可以对所有系统中文件、数据进行任意操作。出厂时默认没有该权限,需要使用z4Root等软件进行获取,然而,并不鼓励进行此操作,因为可能由此使用户失去手机原厂保修的权益。同样,如果将Android手机进行root权限提升,则此后用户不需要输入任何密码,都将能以Android root权限来使用手机。
(3)Android应用程序权限:Android提供了丰富的SDK(Software development kit),开发人员可以根据其开发Android中的应用程序。而应用程序对Android系统资源的访问需要有相应的访问权限,这个权限就称为Android应用程序权限,它在应用程序设计时设定,在Android系统中初次安装时即生效。值得注意的是:如果应用程序设计的权限大于Android手机所有者权限,则该应用程序无法运行。如:没有获取Android root权限的手机无法运行Root Explorer,因为运行该应用程序需要Android root权限。
2. Android的组件模型(Component Model)
Android系统中包括4种组件
(1)Activity:Activity就是一个界面,这个界面里面可以放置各种控件。比如:Task Manager的界面、Root Explorer的界面等;
(2)Service:服务是运行在后台的功能模块。如文件下载、音乐播放程序等;
(3)Content Provider:它是Android平台应用程序间数据共享的一种标准接口,它以类似于URI(Universal Resources Identification)的方式来表示数据,如:content://contacts/people/1101;
(4)Broadcast Receiver:与此组件相关的概念是Intent,Intent是一个对动作和行为的抽象描述,负责组件之间程序之间进行消息传递。而Broadcast Receiver组件则提供了一种把Intent作为一个消息广播出去,由所有对其感兴趣的程序对其作出反应的机制。举个简单的例子,:为了实现一个系统启动后播放音乐的功能,则可以定义Intent为android.intent.action.BOOT_COMPLETED,由Broadcast Receiver组件将其进行广播,而系统中的Media Player接收到该信息后则进行播放。
如上所述,4个组件之间的关系如下图:
3. Android安全访问设置
每个Android的apk(Android Package)包里面都包含有一个AndroidMainifest.xml文件,该文件除了罗列应用程序运行时库、运行依赖关系等之外,还会详细地罗列出该应用程序所需的系统访问。该文件的基本格式如下:
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="cn.com.fetion.android"
- android:versionCode="1"
- android:versionName="1.0.0">
- <application android:icon="@drawable/icon" android:label="@string/app_name">
- <activity android:name=".welcomActivity"
- android:label="@string/app_name">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
- <uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
- </manifest>
如上述文件描述中斜体部分,该文件的作用是说明该软件具备发送短信的功能。Android定义了106种permission,可供开发人员使用,具体详见网址:http://developers.androidcn.com/reference/android/Manifest.permission.html。
李洋博士毕业于中科院计算所。10多年来一直从事计算机网络信息安全研发工作,曾主持和参与多项国家重点项目以及信息安全系统和企业信息安全系统的研发工作。具有Linux系统应用、管理、安全及内核的研发经验,擅长网络安全技术、协议分析、Linux系统安全技术、Linux系统及网络管理、Linux内核开发等。
【51CTO.com独家特稿,非经授权谢绝转载!合作媒体转载请注明原文出处!如果您想与李洋老师探讨Android安全架构等话题,或者向51CTO移动开发频道投稿请发邮件至zhousn#51CTO.com(将“#”换成“@”)】