Android系统和开发--安全性和权限管理 SELinux 策略 安全架构

学习android权限知识
SElinux
chmod -R 777 ./
setenforce 0
adb root
su
fastboot oem at-unlock-vboot
adb disable-verity

Android权限

Android系统是基于Linux内核构建的,因此它继承了Linux的权限管理机制。Android应用需要通过声明权限来访问系统的某些功能(如摄像头、存储、位置等)。开发者在AndroidManifest.xml中声明权限,用户在安装应用时或者运行时可以授予或拒绝这些权限。

1. SELinux(Security-Enhanced Linux)

  • 简介:SELinux 是一个 Linux 内核模块,提供了强制访问控制 (MAC)。它通过定义安全策略来控制进程和文件系统之间的交互,限制恶意软件和未经授权的访问。
  • 命令
    • setenforce 0: 将 SELinux 设置为“宽容模式 Permissive”,此时系统会记录违反 SELinux 策略的行为但不实际阻止操作。
    • setenforce 1: 将 SELinux 设置为“强制模式 Enforcing”,此时 SELinux 会强制执行安全策略。
      在这里插入图片描述

2. chmod -R 777 ./

  • 简介chmod 是一个用于修改文件或目录权限的命令。

  • 含义

    • -R:递归更改权限,即对目录及其子目录下的所有文件应用更改。
    • 777:为文件或目录的所有用户(所有者、组、其他人)提供读、写、执行权限。
    • ./:表示当前目录。
  • 注意:赋予 777 权限可能带来安全风险,因为它允许所有用户完全控制文件或目录。

3. adb root

  • 简介adb(Android Debug Bridge)是 Android 开发和调试工具。adb root 命令用于在有 root 权限的设备上,以 root 身份重新启动 adb 服务。
  • 注意:并非所有设备都支持 adb root,且开启 root 可能会影响设备的安全性。

4. su

  • 简介su(substitute user)命令用于切换到另一个用户,通常是切换到 root 用户。执行此命令后,用户可以获得超级用户权限。
  • 在 Android 上的作用:很多设备上的 su 命令是通过安装 SuperSU 或 Magisk 实现的,允许用户临时或永久获得 root 权限。

5. fastboot oem at-unlock-vboot

  • 简介fastboot 是一个可以通过 USB 连接与 Android 设备通信的工具。oem 是用于设备制造商自定义命令的子命令。

  • at-unlock-vboot:该命令通常用于解锁设备的 bootloader,以允许自定义固件或 ROM 的安装。不过,每个设备的具体命令可能不同,因此解锁 bootloader 命令因设备而异。

  • 警告:解锁 bootloader 可能会使设备失去保修,并且增加设备被恶意软件攻击的风险。

6. adb disable-verity

  • 简介adb disable-verity 命令用于禁用 Android 的验证 (verity) 机制。Verity 是一种保护机制,防止系统分区被修改。

  • 用途:在修改系统分区或安装自定义 ROM 之前,通常需要禁用 verity 才能使系统正常启动。

  • 注意:禁用 verity 可能会使设备更容易受到恶意攻击。

这些工具和命令在Android系统开发和调试中非常有用,但它们也有一定的风险,尤其是在处理系统级别的权限时,可能会影响设备的稳定性和安全性。因此,建议在充分了解这些命令的作用和后果之后再使用。

SELinux

安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。
SELinux 主要由美国国家安全局开发。linux 2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块。Android4.4上正式推出以SELinux为核心的系统安全机制。

在没有使用 SELinux 的操作系统中,决定一个资源是否能被访问的因素是:某个资源是否拥有对应用户的权限(读、写、执行)。
而最致命问题是,root 用户不受任何管制,系统上任何资源都可以无限制地访问。
这种权限管理机制的主体是用户,也称为自主访问控制(DAC)。

2.1 SELinux 的作用

SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。

SELinux 策略有哪些? Permissive模式可以执行哪些操作?

SELinux 策略类型

SELinux 的策略主要有以下几种类型:

  1. Targeted Policy(目标化策略)

    • 这是最常见的SELinux策略,主要针对系统中重要的进程(如 initsystem_server 等)应用SELinux策略。非关键进程通常运行在非强制(permissive)模式下。
  2. MLS Policy(多级安全策略)

    • 多级安全策略(Multi-Level Security)被设计用于极高安全性需求的系统中,它基于敏感度和类别(如秘密、机密)进行访问控制。
  3. Strict Policy(严格策略)

    • 在严格策略下,系统中所有进程都受到SELinux的控制。它为每个进程定义了严格的访问权限,确保进程只能执行被允许的操作。

Permissive 模式下的操作

在SELinux的Permissive模式下:

  • 记录策略违规:系统仍然会检查SELinux策略,任何违反策略的操作都会被记录在审计日志中。开发者和管理员可以查看这些日志来调试SELinux策略。
  • 不阻止操作:尽管策略被违反,系统不会阻止这些操作,所有的操作都可以继续执行。也就是说,Permissive模式允许所有操作的执行,即使这些操作在Enforcing模式下会被阻止。

Permissive 模式的常见用途

  1. 调试和策略开发:开发者可以使用Permissive模式来调试SELinux策略,记录所有潜在的策略违规行为,而不实际阻止操作。

  2. 测试系统行为:在切换到Enforcing模式之前,使用Permissive模式来测试系统和应用在SELinux下的行为,确保一旦切换到Enforcing模式,系统仍然能够正常运行。

需要注意的风险

使用Permissive模式时,系统实际上处于无强制访问控制的状态。这意味着,如果系统中存在恶意软件或其他安全威胁,可能会利用这个状态来执行未经授权的操作。因此,Permissive模式通常仅在开发、调试或故障排除时使用,在生产环境中则应尽量避免。

android 安全架构

Android系统的安全架构设计具有多层次的防护机制,以确保用户数据和设备的安全。以下是对Android系统主要安全架构和机制的详细介绍:

1. 应用沙盒 (App Sandbox)

每个Android应用都在一个独立的用户空间中运行,这被称为“沙盒”机制。沙盒通过以下方式保护应用之间的隔离:

  • 用户ID (UID): 每个应用在安装时都会分配一个唯一的用户ID。这个UID确保每个应用只能访问其自身的数据和文件,除非明确通过权限授予或跨进程通信 (IPC) 来共享。
  • 进程隔离: 每个应用都运行在单独的进程中,通过Linux内核的进程隔离特性,防止应用直接访问其他应用的进程或数据。

2. 权限模型

Android应用通过声明权限来请求访问敏感的设备功能或用户数据。例如,访问相机、地理位置、联系人等。用户在安装应用时或运行时(针对特定权限,如危险权限)可以选择是否授予这些权限。这种模型确保应用只能访问用户明确授权的资源。

3. SELinux (Security-Enhanced Linux)

SELinux为Android增加了强制访问控制 (MAC) 层次,在应用和系统服务之间提供额外的安全保护。SELinux策略规定了哪些进程可以访问哪些资源,并在违反策略时阻止操作。在默认的“Enforcing”模式下,SELinux会严格执行这些策略,防止未授权的访问。

4. 加密

Android系统提供了设备级和文件级加密,以保护存储在设备上的数据。主要包括:

  • 全盘加密 (Full Disk Encryption, FDE): 对整个设备的存储进行加密,通常使用设备的硬件加速器来提高加密效率。
  • 文件加密 (File-based Encryption, FBE): 在Android 7.0及以上版本中引入,允许在文件级别进行加密,以便更灵活地管理加密密钥和加密策略。

5. 密钥库 (Keystore)

密钥库系统提供了一种安全存储加密密钥的方法。密钥库可以生成和存储密钥,这些密钥只在特定条件下(如设备解锁时)可用,确保应用程序即使遭到攻击,也无法直接访问密钥材料。

6. 应用签名

每个Android应用在发布时都必须由开发者使用私钥进行数字签名。应用签名提供了以下好处:

  • 身份验证: 通过签名,用户和系统可以验证应用的发布者身份,防止恶意软件伪装成合法应用。
  • 版本控制: 签名还用于管理应用更新,确保新版本应用只能由原发布者发布。

7. 安全启动 (Verified Boot)

安全启动机制在设备启动时验证引导加载程序、内核、系统映像等关键系统组件的完整性。它使用信任链和设备密钥确保这些组件没有被篡改,防止恶意软件在启动时加载。

8. Google Play Protect

Google Play Protect是Android设备内置的安全服务,它在后台自动扫描应用和设备,检测并移除潜在的恶意软件。它还包括以下功能:

  • 应用扫描: 定期扫描已安装的应用程序,以发现并删除有害应用。
  • 安全提示: 提供安全建议,如禁止安装来自未知来源的应用。

9. 安全更新

Android定期发布安全补丁来修复系统中的漏洞。厂商和运营商有责任将这些更新推送到用户设备,以确保设备始终受到最新安全防护。

10. TrustZone

TrustZone是一种硬件隔离技术,它将处理器划分为“安全世界”和“非安全世界”。安全世界用于处理敏感操作,如密钥管理、加密等,确保这些操作不受非安全世界的影响。

11. 应用隔离 (Isolated Processes)

对于一些敏感的应用或组件,Android支持在隔离进程中运行,这种进程没有直接访问系统资源的能力。通常用于处理敏感数据的任务,如WebView进程,避免数据泄露风险。

12. 网络安全

Android网络安全机制包括:

  • 网络安全配置: 开发者可以在应用中定义网络安全策略,如禁用明文流量、定义信任的CA证书等。
  • VPN和代理支持: Android支持虚拟专用网络 (VPN) 和代理服务,提供数据流量的加密和匿名访问。

这些机制共同构成了Android系统的多层次安全架构,为用户和开发者提供了强大的安全保障。这些机制的有效运作依赖于系统、应用和用户的协同,确保设备能够抵御各种潜在的安全威胁。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/403767.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

融资融券利率和手续费详情,融资融券开通门槛50W资产必须沪深市值?

融资融券利率和手续费 融资融券就是可以向证券公司借钱借券来进行证券交易,实现杠杆操作。融资是向证券公司借款买入股票,而融券则是向证券公司借入股票并卖出。 融资融券的利率是浮动的、个性化的,但一般最低可以达到4.0%~5.0%&#xff0c…

Selenium + Python 自动化测试14(发送报告)

我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。 上一篇我们讨论了使用HTMLTestRunner 生成HTML报告的方法。 本篇文章我们接着讲生成HTML报告是否可以自动邮件发送出去,提高我们测试报告的及时性,方便…

WordPress美化节日灯笼插件,适合春节的时候使用

源码介绍: WordPress美化节日灯笼插件,适合每年过年的时候安在网站上使用,这款插件可以备用着,一款WordPress节日灯笼美化插件,可以给网页自动加一个灯笼效果使用说明:到网站WP后台 - 插件 - 安装插件 - 上…

Java代码基础算法练习-乘阶求和-2024.08.18

对应的源代码可以在我的 Gitee 仓库中找到&#xff0c;欢迎star~ [Gitee 仓库](https://gitee.com/yukongji/java-basic-algorithm) 任务描述&#xff1a; 求Sn1!2!3!4!5!…n!之值&#xff0c;其中n是一个数字(n<10)。 解决思路&#xff1a; 输入: 读取用户输入的 n 值。检查…

Android:使用Gson常见问题(包含解决将Long型转化为科学计数法的问题)

一、解决将Long型转化为科学计数法的问题 1.1 场景 将一个对象转为Map类型时&#xff0c;调用Gson.fromJson发现&#xff0c;原来对象中的long类型的personId字段&#xff0c;被解析成了科学计数法&#xff0c;导致请求接口失败&#xff0c;报参数错误。 解决结果图 1.2、Exa…

leetcode108.把升序数组转换成二叉搜索树

题目描述 [-10,-3,0,5,9] 转换成如下二叉搜索树&#xff1a; 解题的核心原理是&#xff1a;二叉搜索树的中序遍历结果是一个升序数组&#xff0c;所以根节点的数值&#xff0c;也位于数组的中部。 class Solution {public TreeNode sortedArrayToBST(int[] nums) {return h…

基于Hadoop的汽车大数据分析系统设计与实现【爬虫、数据预处理、MapReduce、echarts、Flask】

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍爬虫数据概览HIve表设计Cars Database Tables1. cars_data2. annual_sales_volume3. brand_sales_volume4. city_sales_volume5. sales_volume_by_year_and_brand6. sales_distribu…

MATLAB 手动实现一种高度覆盖值提取建筑物点云的方法(74)

专栏往期文章,包含本章 MATLAB 手动实现一种高度覆盖值提取建筑物点云的方法(74) 一、算法介绍二、算法实现1.代码2.效果总结一、算法介绍 手动实现一种基于高度覆盖值的建筑物点云提取方法,适用于高大的城市建筑物,比只利用高度提取建筑物的方法更加稳定和具有价值,主要…

IntelliJ IDEA 集成 ShardingSphere-JDBC 访问分库分表

背景 众所周知&#xff0c;IntelliJ IDEA 是 Java 领域常用的开发工具之一&#xff0c;IDEA Ultimate&#xff08;旗舰版&#xff09;或其他例如 DataGrip 等 Intellij 平台的工具都集成了对数据库的访问能力。 但是&#xff0c;对于做了分库分表的项目&#xff0c;直接使用 …

消防隐患在线小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;消防隐患举报管理&#xff0c;消防隐患分类管理&#xff0c;统计分类管理&#xff0c;处理结果管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;我…

学习笔记 韩顺平 零基础30天学会Java(2024.8.18)

P514 Vector源码解读 P515 双向链表模拟 LinkedList的添加和删除可以通过改变节点的指向完成 遍历的时候&#xff0c;如果要重新遍历&#xff0c;要把指针调回到最前面或者最后面&#xff0c;才能重新全部遍历一次 插入的时候&#xff0c;插入对象的next和pre都要操作&#xff…

探索tailwindcss多主题切换

现在的多主题切换基本上都是用的 css 变量的形式, 而tailwindcss也支持 css 变量定义主题的方式 至于为什么用 tailwindcss变量, 还是因为 tailwind 写类名提示比较方便, 也不需要再在css或者style中去一个个var的形式去写变量了 这里我在assets/style/theme文件夹中创建了三个…

音视频开发

通过多线程分别获取高分辨率(1920 * 1080)和低分辨率(1280 * 720) 初始化VI模块 初始化HIGH VENC模块 初始化LOW VENC模块 初始化RGA模块 绑定 VI和HIGH VENC 绑定 VI和RGA 创建线程 HIGH VENC处理 RGA处理 LOW VENC处理 销毁 QP原理的讲解 QP参数调节&#xff0c;指的是量化…

【后端记录】修复MySql的错误修改的数据记录【binlog修复】

前言 今天入门后端的时候&#xff0c;不小心改了非预期的数据&#xff0c;因为还没学到事务&#xff0c;所以恢复数据还比较麻烦&#xff0c;站在巨人的肩膀上还是解决了&#xff0c;原文连接在下面 https://blog.csdn.net/qq_42874315/article/details/140480570 解决办法 原…

【自动驾驶】控制算法(二)三大坐标系与车辆运动学模型

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…

第37讲:Cephfs文件系统的正确使用姿势

文章目录 1.Cephfs文件系统简介2.Cephfs文件系统细节介绍2.1.Cephfs文件系统多客户端隔离挂载2.2.Ceph集群中多个Cephfs如何单独使用 3.挂载多个Cephfs文件系统4.Cephfs文件系统多客户端隔离挂载实战4.1.创建一个Cephfs文件系统4.2.将Cephfs文件系统挂载到本地路径4.3.在Cephfs…

java:IDEA修改java版本的几个不同的地方

文章目录 项目JDK设置&#xff08;Project SDK&#xff09;项目模块级JDK设置&#xff08;Module SDK&#xff09;IDE级别的JDK设置Maven配置文件编译器&#xff08;Java Compiler&#xff09;构建工具配置文件&#xff08;如build.gradle或pom.xml&#xff09;.idea/misc.xml文…

Chrome快捷键提高效率

浏览效率提高快捷建 快速切换标签页 Ctrl 数字&#xff08;1或者2&#xff09;&#xff0c;标签页数字从左到右为顺序&#xff0c;1开始。快速切换标签页。 Ctrl1 到 Ctrl8 切换到标签栏中指定位置编号所对应的标签页 Ctrl9切换到最后一个标签页 CtrlTab 或 CtrlPgDown 切…

EasyCVR视频汇聚平台构建远程安防监控:5大亮点解析,助力安防无死角

随着科技的飞速发展&#xff0c;远程安防监控系统已经成为现代社会中不可或缺的一部分&#xff0c;无论是在小区、公共场所还是工业领域&#xff0c;安防监控都发挥着至关重要的作用。而EasyCVR作为一款功能强大的视频监控综合管理平台&#xff0c;其在构建远程安防监控系统方面…

英伟达开源 Nemotron-4-4B:小型模型,大能量

前沿科技速递&#x1f680; 在人工智能领域&#xff0c;语言模型已经成为推动自然语言处理&#xff08;NLP&#xff09;进步的关键力量。然而&#xff0c;随着模型规模的不断扩大&#xff0c;训练和部署这些大型语言模型&#xff08;LLM&#xff09;的资源成本也在急剧增加。为…