Android安全模型之Android安全机制(应用程序签名)

所有Android应用程序都必须被开发者数字签名,即使用私有密钥数字签署一个给定的应用程序,以便识别代码的作者,检测应用程序是否发生了改变,并且在相同签名的应用程序之间建立信任,进而使具备互信关系的应用程序安全地共享资源。使用相同数字签名不同应用程序可以相互授予权限来访问基于签名的API。如果应用程序共享UID,则可以运行在同一进程中,从而允许彼此访问对方的代码和数据。

应用程序签名就需要生成私有密钥公共密钥对,使用私有密钥签署公共密钥证书。应用程序商店与应用程序安装包都不会安装没有数字证书的应用。但是,签名的数字证书不需要权威机构来认证,应用程序签名可由第三方完成,如OEM厂商,运营商及应用程序商店等,也可由开发者自己完成签名,即所谓自签名。自签名允许开发者不依赖于任何第三方自由发布应用程序。

在安装应用程序APK时,系统安装程序首先检查APK是否被签名,有签名才能够安装。当应用程序升级时,需要检查新版应用的数字签名与已安装的应用程序的签名是否相同,否则,会被当作一个全新的应用程序。通常,由同一个开发者设计的多个应用程序可采用同一私钥签名,在manifest文件中声明共享用户ID,允许它们运行在相同的进程中,这样一来,这些应用程序可以共享代码和数据资源。Android开发者们有可能把安装包命名为相同的名字,通过不同的签名可以把它们区分开,也保证了签名不同的包不被替换掉,同时有效地防止了恶意软件替换安装的应用。

Android提供了基于签名的权限检查,应用程序间具有相同的数字签名,它们之间可以以一种安全的方式共享代码和数据。

时间: 2024-10-12 15:32:07

Android安全模型之Android安全机制(应用程序签名)的相关文章

Android安全模型之Android安全机制(应用权限)

进程沙箱为互不信任的应用程序之间提供了隔离机制,SharedUserID则为具备信任关系的应用程序提供了共享资源的机制.然而,由于用户自行安装的应用程序也不具备可信性,在默认情况下,Android应用程序没有任何权限,不能访问保护的设备API与资源.因此,权限机制是Android安全机制的基础,决定允许还是限制应用程序访问受限的API和系统资源.应用程序的权限需要明确定义,在安装时被用户确认,并且在运行时检查,执行,授予和撤销权限.在定制权限下,文件和内容提供者也可以受到保护. 具体而言,应用程

Android安全模型之Android安全机制(内存管理)

Ashmem匿名共享内存 Android的匿名共享内存(Ashmem)机制基于Linux内核的共享内存,但是Ashmem与cache shrinker关联起来,增加了内存回收算法的注册接口,因此Linux内存管理系统将不再使用内存区域加以回收.Ashmem以内核驱动的形式实现,在文件系统中创建/dev/ashmem设备文件.如果进程A与进程B需要共享内存,进程A可通过open打开该文件,用ioctl命令ASHMEM_SET_NAME和ASHMEM_SET_SIZE设置共享内存的名称 和大小.mm

Android安全模型之Android安全机制(Android系统分区及加载)

Android设备的分区包括系统分区,数据分区,Cache分区及SD卡分区等.具体概括如下: 1. 系统分区通常加载为只读分区,包含操作系统内核,系统函数库,实时运行框架,应用框架与系统应用程序等,由OEM厂商在出厂时植入,外界不能更改,如此,当系统出现安全问题时,用户可以启动进入所谓的"安全模式",加载只读的系统分区,不加载数据分区中的数据内容,隔离第三方应用程序可能带来的安全威胁. /system/app目录存放系统自带应用程序APK /system/lib目录存放系统库文件. /

3、Android应用程序签名及发布

一.问个问题,为何我们需要签名以及版本控制? 程序做好了,我们要放到Market上进行商业发布. 二.发布步骤 [准备发布] 1)移除log , 设置版本编号和名称. 2)签名,通过ADT工具. 3)针对你的发布终端最后发布测试. 4)更新发布资源. 5)准备好你应用程序依赖的远程服务器. [发布给用户] 直接APK传播 放在网站上供下载,OTA服务器 放在Market上供下载 [自动版本升级功能] 方法一 : 1,提供http的apk地址 , 并且提供一个webservice检测最新版本 2,

Android中的事件分发机制(下)——View的事件处理

综述 在上篇文章Android中的事件分发机制(上)--ViewGroup的事件分发中,对ViewGroup的事件分发进行了详细的分析.在文章的最后ViewGroup的dispatchTouchEvent方法调用dispatchTransformedTouchEvent方法成功将事件传递给ViewGroup的子View.并交由子View进行处理.那么现在就来分析一下子View接收到事件以后是如何处理的. View的事件处理 对于这里描述的View,它是ViewGroup的父类,并不包含任何的子元

转Android进程间通信(IPC)机制Binder简要介绍和学习计划

转自:http://blog.csdn.net/luoshengyang/article/details/6618363/ 在Android系统中,每一个应用程序都是由一些Activity和Service组成的,这些Activity和Service有可能运行在同一个进程中,也有可能运行在不同的进程中.那么,不在同一个进程的Activity或者Service是如何通信的呢?这就是本文中要介绍的Binder进程间通信机制了. <Android系统源代码情景分析>一书正在进击的程序员网(http:/

android permission权限与安全机制解析

总结整理了一下android权限相关的知识,分享一下: uses-permission 用法为<uses-permission android:name="string" android:maxSdkVersion="integer"/> 为了保证application的正常运行,需要系统授予app的权限声明.这个权限是在用户安装应用的时候授予的. android:name的值可以是其他app通过<permission>声明的(用于两个应用之

Android学习笔记-Android应用程序初步认识

一直觉得自己的技术没有一门专长,似乎什么都会一点,但是却一点都不深入.决定学习Android的开发,说不出的理由,希望自己能够坚持下去. 其实之前已经搭建好了Android的开发环境eclipse+ADT+SDK,这里就不做具体介绍了,个人觉得还是非常有必要把这3个软件单独安装一下, 这样对开发工具能有个系统的认识.Eclipse是一个IDE,针对多门开发语言都能够使用,SDK是针对Android应用开发提供的一个框架,其中有开发 过程中使用到的包和一些集成的工具,ADT是安装在eclipse上

Android之——获取手机安装的应用程序

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47114331 前几篇有关Android的博文中,向大家介绍了几个项目中常用的实用功能,那么在这篇博文中,我将向大家介绍如何获取Android手机中已经安装的手机应用程序,实用过金山手机卫士或者360手机卫士的童鞋都知道,这些软件都可以获取到当前手机中安装的应用程序.那么,这些功能是如何实现的呢?就让我们一起来看看这些功能具体是如何实现的吧. 一.原理 原理很简单,我们通过Andr