Android is a multi-process system, in which each application (and parts of the system) runs in its own process. Most security between applications and the system is enforced at the process level through standard Linux facilities, such as user and group IDs that are assigned to applications. Additional finer-grained security features are provided through a "permission" mechanism that enforces restrictions on the specific operations that a particular process can perform, and per-URI permissions for granting ad-hoc access to specific pieces of data.
Android是一个多进程系统,在这个系统中,应用程序(或者系统的部分)会在自己的进程中运行。系统和应用之间的安全性是通过Linux的facilities(工具,功能)在进程级别来强制实现的,比如会给应用程序分配user ID和Group ID。更细化的安全特性是通过"Permission"机制对特定的进程的特定的操作进行限制,而"per-URI permissions"可以对获取特定数据的access专门权限进行限制。
Security Architecture
A central design point of the Android security architecture is that no application, by default, has permission to perform any operations that would adversely impact other applications, the operating system, or the user. This includes reading or writing the user's private data (such as contacts or e-mails), reading or writing another application's files, performing network access, keeping the device awake, etc.
安全架构
Android安全架构中一个中心思想就是:应用程序在默认的情况下不可以执行任何对其他应用程序,系统或者用户带来负面影响的操作。这包括读或写用户的私有数据(如联系人数据或email数据),读或写另一个应用程序的文件,网络连接,保持设备处于非睡眠状态。
An application's process is a secure sandbox. It can't disrupt other applications, except by explicitly declaring the permissions it needs for additional capabilities not provided by the basic sandbox. These permissions it requests can be handled by the operating in various ways, typically by automatically allowing or disallowing based on certificates or by prompting the user. The permissions required by an application are declared statically in that application, so they can be known up-front at install time and will not change after that.
一个应用程序的进程就是一个安全的沙盒。它不能干扰其它应用程序,除非显式地声明了"permissions",以便它能够获取基本沙盒所不具备的额外的能力。它请求的这些权限"permissions"可以被各种各样的操作处理,如自动允许该权限或者通过用户提示或者证书来禁止该权限。应用程序需要的那些"permissions"是静态的在程序中声明,所以他们会在程序安装时就被知晓,并不会再改变。
Application Signing
All Android applications (.apk files) must be signed with a certificate whose private key is held by their developer. This certificate identifies the author of the application. The certificate does not need to be signed by a certificate authority: it is perfectly allowable, and typical, for Android applications to use self-signed certificates. The certificate is used only to establish trust relationships between applications, not for wholesale control over whether an application can be installed. The most significant ways that signatures impact security is by determining who can access signature-based permissions and who can share user IDs.
所有的Android应用程序(.apk文件)必须用证书进行签名认证,而这个证书的私钥是由开发者保有的。该证书可以用以识别应用程序的作者。该证书也不需要CA签名认证(注:CA就是一个第三方的证书认证机构,如verisign等)。Android应用程序允许而且一般也都是使用self-signed证书(即自签名证书)。证书是用于在应用程序之间建立信任关系,而不是用于控制程序是否可以安装。签名影响安全性的最重要的方式是通过决定谁可以进入基于签名的permisssions,以及谁可以share 用户IDs。
分享到:
相关推荐
在Java编程语言中,安全管理器(Security Manager)和权限(Permissions)是确保应用程序安全的关键组件。它们构成了Java安全模型的核心,防止恶意代码对系统资源进行未经授权的访问或操作。这篇博文将深入探讨这两...
permissions design is a critical component of any system, and its primary goal is to ensure that each user in the system has the appropriate permissions, thereby ensuring the system's security and ...
#### 文件与用户安全(File and User Security) - **文件存储安全**:Android提供了多种存储方案,包括内部存储、外部存储和SQLite数据库等。每种方案都有其特点和适用场景,在选择存储方式时需要考虑数据的安全性和...
标题中的“Document-security-and-permissions.rar”提示我们这个压缩包主要关注的是文档安全与权限管理,这在操作系统中是至关重要的部分,特别是对于多用户环境如Windows、Unix和Linux而言。接下来,让我们深入...
【Fratantonio-Cloak-And-Dagger-From-Two-Permissions-To-Complete-Control-Of-The-UI-Feedback-Loop】 这篇论文是关于移动安全领域的一个重要研究,由Yanick Fratantonio与其他研究人员合作完成,并在2017年的...
`System.Security.AccessControl`命名空间提供了`FileSystemSecurity`类,它允许我们直接操作文件和目录的安全描述符,以设置NTFS权限。`FileSystemAccessRule`用于定义具体的访问规则。 ```vbnet Dim dir As New ...
Spring Security是Java领域中用于安全控制的主流框架,它提供了强大的动态权限管理功能。通过配置或编程方式,可以实现基于URL、方法或业务对象的访问控制。Spring Security的核心概念包括认证(Authentication)和...
Java EE Security,也被称为JSR 375,是Java企业版(Java EE)中一个重要的安全规范,旨在提供统一的、模块化的安全框架。这个规范的参考实现为开发人员在构建安全的Java EE应用程序时提供了标准的工具和接口。在...
3. **角色与权限(Roles and Permissions)**:系统将用户分为不同的角色,如管理员、普通用户等,每个角色拥有不同的操作权限。权限是预定义的规则,定义了用户可以执行哪些操作,例如查看、编辑、删除等。 4. **...
4. **Roles and Permissions**: 在 Spring Security 中,角色(Role)和权限(Permission)用于定义用户可以执行的操作。角色通常是一组权限的集合,而权限是具体的操作,如 "READ_FILE" 或 "UPDATE_USER"。 5. **...
在IT行业中,权限管理是确保系统安全性和数据保护的关键环节。在"Sun Java System Application Server Enterprise Edition 8.2 管理指南"中,它详细介绍了如何在Sun的Java应用服务器环境中实施有效的权限控制。这...
- 默认安全策略:Java安装时预设的一组权限,通常对不同区域(如本机、网络)的代码有不同的权限限制。 - 自定义安全策略:用户可以通过编写XML或Java代码定义自己的安全策略文件,以适应特定环境需求。 5. **...
例如,Java Authentication and Authorization Service (JAAS) 提供了实现不同认证协议(如Kerberos、NTLM或SSL/TLS)的接口和类,使得应用可以与各种安全域进行交互。 接下来,我们讨论授权(Authorization)。...
Java安全是Java编程中至关重要的一个领域,它主要关注如何保护程序免受恶意攻击,确保数据的安全性,以及遵循各种安全策略。以下是一些关于Java安全的基础知识和关键概念: 1. **Java Security Model**:Java的安全...
3. **安全管理者(Security Manager)**:Java应用程序可以设置一个安全管理者,它执行权限检查以确定代码是否被授权执行特定操作。这是Java安全模型的关键组件。 4. **权限(Permissions)**:权限定义了代码可以...
6. **网络与安全协议**:如果模块涉及到网络通信,可能涉及到HTTPS、SSL/TLS等安全协议,用于保护网络传输的数据。 7. **异常处理与日志记录**:为了确保系统的健壮性,项目可能包含适当的异常处理机制,并使用如...
Flask-Security是针对Python的轻量级Web框架Flask的一个扩展,它简化了在Flask应用中集成安全特性的过程。尽管这个项目已经不再维护,但其源代码和文档仍然可以作为理解Web应用安全性的宝贵资源,对于学习和参考依然...
10. **Java权限(Permissions)**:`java.security.Permission`类及其子类(如`FilePermission`、`SocketPermission`等)表示特定的操作权限。`java.security.ProtectionDomain`则包含了一组权限和认证信息。 11. *...
Android 平台还提供了多种安全机制,如 System Partition and Safe Mode、Filesystem Permissions、Filesystem Encryption、Password Protection、Device Administration、Memory Management Security Enhancements...
SELinux,全称 Security-Enhanced Linux,是 Linux 操作系统中的一个强制访问控制(Mandatory Access Control, MAC)框架,旨在提高系统的安全性,防止恶意攻击者通过权限提升和权限滥用来破坏系统。这篇学习笔记将...