`
80demon
  • 浏览: 72560 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android 安全访问机制

 
阅读更多

 Android是一个多进程系统,在这个系统中,应用程序(或者系统的部分)会在自己的进程中运行。系统和应用之间的安全性通过Linux的facilities(工具,功能)在进程级别来强制实现的,比如会给应用程序分配user ID和Group ID。更细化的安全特性是通过"Permission"机制对特定的进程的特定的操作进行限制,而"per-URI permissions"可以对获取特定数据的access专门权限进行限制。 所以,应用程序之间的一般是不可以互相访问的,但是anroid提供了一种permission机制,用于应用程序之间数据和功能的安全访问。

  1.安全架构
  Android安全架构中一个中心思想就是:应用程序在默认的情况下不可以执行任何对其他应用程序,系统或者用户带来负面影响的操作。这包括读或写用户的私有数据(如联系人数据或email数据),读或写另一个应用程序的文件,网络连接,保持设备处于非睡眠状态。
  一个应用程序的进程就是一个安全的沙盒。它不能干扰其它应用程序,除非显式地声明了“permissions”,以便它能够获取基本沙盒所不具备的额外的能力。它请求的这些权限“permissions”可以被各种各样的操作处理,如自动允许该权限或者通过用户提示或者证书来禁止该权限。应用程序 需要的那些“permissions”是静态的在程序中声明,所以他们会在程序安装时被知晓,并不会再改变。
  所有的Android应用程序(。apk文件)必须用证书进行签名认证,而这个证书的私钥是由开发者保有的。该证书可以用以识别应用程序的作者。该证书也不需要CA签名认证(注:CA就是一个第三方的证书认证机构,如verisign等)。Android应用程序允许而且一般也都是使用self- signed证书(即自签名证书)。证书是用于在应用程序之间建立信任关系,而不是用于控制程序是否可以安装。签名影响安全性的最重要的方式是通过决定谁可以进入基于签名的permisssions,以及谁可以share 用户IDs。

  2.用户IDs和文件存取
  每一个Android应用程序(。apk文件)都会在安装时就分配一个独有的Linux用户ID,这就为它建立了一个沙盒,使其不能与其他应用程序进行接触(也不会让其它应用程序接触它)。这个用户ID会在安装时分配给它,并在该设备上一直保持同一个数值。
  由于安全性限制措施是发生在进程级,所以两个package中的代码不会运行在同一个进程当中,他们要作为不同的Linux用户出现。我们可以通过 使用AndroidManifest。xml文件中的manifest标签中的sharedUserId属性,来使不同的package共用同一个用户 ID。通过这种方式,这两个package就会被认为是同一个应用程序,拥有同一个用户ID(实际不一定),并且拥有同样的文件存取权限。注意:为了保持安全,只有当两个应用程序被同一个签名签署的时候(并且请求了同一个sharedUserId)才会被分配同样的用户ID。
  所有存储在应用程序中的数据都会赋予一个属性——该应用程序的用户ID,这使得其他package无法访问这些数据。当通过这些方法getSharedPreferences(String, int),openFileOutput(String, int)或者 openOrCreateDatabase(String, int, SQLiteDatabase.CursorFactory)来创建一个新文件时,你可以通过使用MODE_WORLD_READABLE and/or MODE_WORLD_WRITEABLE标志位来设置是否允许其他package来访问读写这个文件。当设置这些标志位时,该文件仍然属于该应用程序, 但是它的global read and/or write权限已经被设置,使得它对于其他任何应用程序都是可见的。
  例如:APK A 和APK B 都是C公司的产品,那么如果用户从APK A中登陆成功。那么打开APK B的时候就不用再次登陆。 具体实现就是A和B设置成同一个User ID:

  这个"com.c" 就是user id。 APK B就可以像打开本地数据库那样打开APK A中的数据库了。APK A把登陆信息存放在A的数据目录下面。APK B每次启动的时候读取APK A下面的数据库判断是否已经登陆:

  3.权限
  权限用来描述是否拥有做某件事的权力。Android系统中权限分为普通级别(Normal),危险级别(dangerous),签名级别(signature)和系统/签名级别(signature or system)。系统中所有预定义的权限根据作用的不同,分别属于不同的级别。
  对于普通和危险级别的权限,我们称之为低级权限,应用申请即授予。其他两级权限,我们称之为高级权限或系统权限,应用拥有platform级别的认证才能申请。当应用试图在没有权限的情况下做受限操作,应用将被系统杀掉以警示。
  系统应用可以使用任何权限。权限的声明者可无条件使用该权限。
  目前Android系统定义了许多权限,通过SDK文档用户可以查询到哪些操作需要哪些权限,然后按需申请。
  为了执行你自己的权限,你必须首先在你的AndroidManifest.xml中使用一个或多个<permission> 标签声明。例如,一个应用程序想用控制谁能启动一个activities,它可以为声明一个做这个操作的许可,如下:

  4.使用权限
  应用需要的权限应当在users-permission属性中申请,所申请的权限应当被系统或某个应用所定义,否则视为无效申请。同时,使用权限的申请需要遵循权限授予条件,非platform认证的应用无法申请高级权限。
  所以,程序间访问权限大致分为两种:
  -第一种低级点的(permission的protectlevel属性为normal或者dangerous),其调用者apk只需声明<uses-permission>即可拥有其permission。
  -第二种高级点的(permission的protectlevel属性为signature或者signatureorsystem),其调用者apk就需要和被调用的apk一样拥有相同的signature。
  若想拥有使用权限,必须在AndroidManifest.xml文件中包含一个或更多的<uses-permission> 标签来声明此权限。

  应用程序安装的时候,应用程序请求的permissions是通过package installer来批准获取的。package installer是通过检查该应用程序的签名来确定是否给予该程序request的权限。在用户使用过程中不会去检查权限,也就是说要么在安装的时候就批准该权限,使其按照设计可以使用该权限;要么就不批准,这样用户也就根本无法使用该feature,也不会有任何提示告知用户尝试失败。
  例如高级权限用有system级别权限设定的api时,需要使其apk拥有system权限。比如在 android 的API中有供给SystemClock.setCurrentTimeMillis()函数来修改系统时间。有两个方法:

  第一个方法简单点,不过需要在Android系统源码的情况下用make来编译:
  1. 在应用程序的AndroidManifest.xml中的manifest节点中插手android:sharedUserId="android.uid.system"这个属性。
  2. 修改Android.mk文件,插手LOCAL_CERTIFICATE := platform这一行
  3. 使用mm命令来编译,生成的apk就有修改系统时间的职权范围了。

  第2个方法麻烦点,不外不消开虚拟机跑到源码情况下用make来编译:
  1. 同上,插手android:sharedUserId="android.uid.system"这个属性。
  2. 使用eclipse编译出apk文件,但是这个apk文件是不能用的。
  3. 使用针系统的platform密码钥匙来从头给apk文件签名。signapk platform.x509.pem platform.pk8 input.apk output.apk

................

分享到:
评论

相关推荐

    Android智能手机安全机制解析.pdf

    权限机制是Android智能手机安全机制的核心组件之一,它控制着应用程序的访问权力和权限。签名机制是Android智能手机安全机制的另一个重要组件,它确保了应用程序的身份验证和安全性。沙箱机制是Android智能手机安全...

    Android安全机制 PPT版本

    Android应用程序是运行在一个沙箱中。这个沙箱是基于Linux内核提供的用户ID(UID)和用户组ID(GID)来实现的。Android应用程序在安装的过程中,安装服务PackageManagerService会为它们分配一个唯一的UID和GID,以及...

    基于洋葱路由和ECC加密的Android-云计算安全访问机制.pdf

    基于洋葱路由和ECC加密的Android-云计算安全访问机制.pdf

    ARM-Android平台的访问控制机制研究进展.pdf

    ARM-Android平台的访问控制机制研究进展对移动设备安全的研究和应用具有重要意义,本文的研究结果可以为移动设备的安全设计和实现提供参考和指导,提高移动设备的安全性和可靠性。 关键词:ARM-Android;访问控制;...

    Android操作系统安全分析

    1. 权限管理问题:Android 操作系统的权限管理机制可能会导致一些安全问题,例如,某些应用程序可能会访问敏感数据或执行一些敏感操作。 2. 数据加密问题:Android 操作系统中的数据加密机制可能会存在一些漏洞,...

    Android安全的研究现状与展望.pdf

    SELinux 是 Android 5.0 中引入的安全机制,用于控制应用程序对系统资源的访问。 四、 Android 的安全隐患分析 Android 的安全隐患包括了恶意软件、权限管理不当、应用程序中的恶意代码等。恶意软件是指具有恶意...

    基于Android安全机制的权限控制系统.pdf

    基于Android安全机制的权限控制系统 Android 操作系统的安全机制中,权限控制机制扮演着重要的角色。该机制可以限制应用程序的能力,主要是允许或拒绝应用程序访问受限的 API 或者系统资源。应用程序想要访问对应...

    基于虚拟机字节码注入的Android应用程序隐私保护机制.pdf

    本文提出了一种基于虚拟机字节码注入技术的 Android 应用程序权限访问控制方法,以解决 Android 应用权限机制的滥用问题。该方法可以根据用户的安全需求和使用场景,生成虚拟机字节码形式的安全策略,并将其注入 ...

    基于洋葱路由和ECC加密的Android-云计算安全访问机制

    Android设备与云计算相结合能够解决移动终端资源不足的问题,针对Android设备与云端之间的安全访问问题,提出一种基于洋葱路由和ECC加密的Android-云计算系统安全访问机制。利用第二代洋葱路由(OR)机制,在Android...

    Android 安全机制

    Android 是一个权限分离的系统 。 这是利用 Linux 已有的权限管理机制,通过为每一个 ...些具体操作进行权限细分和访问控制,同时提供了 per-URI permission 机制,用来提供对某些特 定的数据块进行 ad-hoc 方式的访问。

    android手机安全卫士

    1、通过0权限上传下载数据,重启手机等案例,深入讲解android沙箱,安全机制和权限模型。 2、通过分析恶意代码的提权漏洞,讲解如何维护系统的安全。 3、通过linux键盘驱动案例的讲解,分析盗号木马的原理及其实现...

    基于动态权限集的Android强制访问控制模型.pdf

    Android 采用了权限机制、隔离机制、应用签名等方式保证平台的安全性,但存在严重的缺陷: 1. 应用程序间的权限提升攻击问题:Android 的权限机制允许应用程序请求权限,但这也带来了应用程序之间的权限提升攻击...

    Android系统的安全分析及策略.pdf

    权限机制是Android系统中最重要的安全机制之一,它可以控制应用程序对系统资源的访问权限。 进程间的通信: Android系统提供了多种进程间通信机制,例如RPC、Intent、内容提供者等。这些机制可以使得不同的应用...

    有关android技术英文文献翻译

    Android 应用程序基础知识包括应用程序的编译、打包、安装、运行和安全机制等方面的内容。了解这些基础知识可以帮助开发者更好地理解 Android 应用程序的开发和运行机制,从而开发出更加优秀的应用程序。

    MacDroid:一种Android轻量级内核层强制访问控制框架.pdf

    该框架通过对智能移动终端操作系统的特点和层次进行分析,设计了一种轻量级内核层强制访问控制机制,深入研究了MacDroid的安全策略定义、安全策略编译、安全策略实施等关键问题。 MacDroid安全策略描述语言(PSL)...

    Androidlauncher开发.pdf

    Security 是 Android 应用程序的安全机制,用于保护应用程序的数据和权限。我们需要了解如何使用权限机制来保护应用程序的数据和资源。 7. Graphic Graphic 是 Android 应用程序的图形设计机制,用于实现高品质的 ...

    一种Android平台隔离化权限控制方案.pdf

    权限管理机制是Android系统独有的安全保护机制之一,它采取“资源访问受限,申请授权准许”的规则,对资源的访问设定权限约束,每个权限可代表一项使用系统资源的接口,在一定程度上能够有效防止对资源的恶意访问。...

    android权限设置大全

    Android权限设置大全是Android操作系统中的一项重要机制,旨在保护用户隐私和设备安全。Android权限系统允许应用程序请求访问设备的某些功能或数据,如位置信息、联系人列表、照片、录音等。以下是Android权限设置...

Global site tag (gtag.js) - Google Analytics