SEAndroid和普通android的区别

简介: 版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/46929811 首先我们需要知道,在普通android中使用的是DAC访问方式,即 Discretionary Access Control,顾名思义,该访问方式是自由的访问控制,由此,他有一些本身自有的缺点。
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/46929811

首先我们需要知道,在普通android中使用的是DAC访问方式,即 Discretionary Access Control,顾名思义,该访问方式是自由的访问控制,由此,他有一些本身自有的缺点。

在DAC 中,普通app只能通过系统服务来访问系统资源。同时,DAC 通过用户和组来分隔app。每一个app在安装的时候都被分配一个独一无二的用户id和组id,这个id对被他的所有进程和私有数据文件使用。只有数据拥有者和app创造者才能访问这些数据。但是DAC有下面一些缺点:

  • 1:不能阻止攻击。这个是显而易见的,因为DAC仅仅控制的是对文件和数据的访问,并没有对攻击做出任何防御措施。
  • 2:会被恶意程序泄漏数据。当一个恶意程序通过系统服务去获取系统数据的时候,就容易将数据泄漏出去。
  • 3:粗糙的特权管理。
  • 4:不能限制或控制系统守护进程。这个的意思是系统进程或者是特权进程具有至高无上的特权,他们具有访问其他资源的权利,但是万一一个进程获取到特权的话,DAC就不能阻止其访问其他资源了。
  • 5:不能阻止root权限的恶意行为。

而在SEAndroid 中,使用的是MAC,即Mandatory Access Control ,强制的访问控制。在MAC中,无论进程是普通进程还是root进程,在对资源进行访问的时候都要进行验证,同时,它还能够阻止特权升级。

SEAndroid 的中心思想就是即使root权限被篡夺了,恶意行为也会被阻止。通过SEAndroid的中心思想,我们就能看出SEAndroid和普通android的巨大不同。在SEAndroid中,特权已经失去了自己的作用,或者是特权也会被监控了,而真正的特权掌握在策略定义者那里。举个例子,如果一个设备越狱了,也就是root了,即使su特权被获取了,管理员也依然能够设置有关于修改系统文件的策略来限制访问。

SEAndroid提供了一系列安全控制机制,当前这些策略包括Install-MAC,Intent-MAC,Content Provider MAC,权限取消和权限标签传播。

  • 1:Install MAC:在安装的时候,通过mac的permission.xml文件来检查app声明的权限。他的行为包括允许,拒绝和允许所有权限。

  • 2:Intent MAC:他的角色就是决定一个Intent能否被分发到其他组件当中。他会阻止任何不被允许的分发。现在,他也支持对使用,读取,读取和写权限的控制。

  • 3:Content Provider MAC。他的角色是来决定一个对Content Provider 的请求是否被允许。

  • 4:权限取消。他能够取消app的一些权限。

  • 5:权限标签分发。这个策略是污点跟踪方法的一个应用。安卓的权限作为抽象标签被映射到一个策略配置文件中。

SEAndroid在安全性方面取得的效果:

  • 1:阻止root特权的攻击

    SEAndroid能够阻止root攻击例如GinderBreak和Exploid。

  • 2:阻止app攻击

相关文档下载

目录
相关文章
|
8月前
|
安全 Android开发 数据安全/隐私保护
请说明鸿蒙操作系统与其他操作系统(如Android和iOS)的主要区别。
请说明鸿蒙操作系统与其他操作系统(如Android和iOS)的主要区别。
451 1
|
5月前
Android.mk(makefile)中几个符号的区别:=、 :=、 ?=、 +=
本文解释了在Android.mk文件中使用的几种赋值符号的区别,包括`=`(基本赋值)、`:=`(覆盖赋值)、`?=`(条件赋值,仅在变量未赋值时操作)、`+=`(追加赋值),并通过实验演示了这些符号的具体行为和效果。
274 1
|
8月前
|
API 开发工具 Android开发
iOS 和 Android 平台的开发有哪些主要区别?
iOS与Android开发区别:iOS用Objective-C/Swift,App Store唯一下载渠道;Android用Java/Kotlin,多商店发布(如Google Play、华为市场)。设计上,iOS简洁一致,Android灵活可定制。开发工具,iOS用Xcode,Android用Android Studio。硬件和系统多样性,iOS统一,Android复杂。权限管理、审核流程及API各有特点,开发者需依据目标平台特性进行选择。
294 3
|
4月前
|
Android开发 Kotlin
Android经典面试题之Kotlin的==和===有什么区别?
本文介绍了 Kotlin 中 `==` 和 `===` 操作符的区别:`==` 用于比较值是否相等,而 `===` 用于检查对象身份。对于基本类型,两者行为相似;对于对象引用,`==` 比较值相等性,`===` 检查引用是否指向同一实例。此外,还列举了其他常用比较操作符及其应用场景。
198 93
|
8月前
|
XML 存储 编解码
android 目录结构中 drawable(hdpi,ldpi,mdpi) 的区别
android 目录结构中 drawable(hdpi,ldpi,mdpi) 的区别
292 1
|
6月前
|
安全 Android开发 Kotlin
Android经典面试题之Kotlin延迟初始化的by lazy和lateinit有什么区别?
**Kotlin中的`by lazy`和`lateinit`都是延迟初始化技术。`by lazy`用于只读属性,线程安全,首次访问时初始化;`lateinit`用于可变属性,需手动初始化,非线程安全。`by lazy`支持线程安全模式选择,而`lateinit`适用于构造函数后初始化。选择依赖于属性特性和使用场景。**
188 5
Android经典面试题之Kotlin延迟初始化的by lazy和lateinit有什么区别?
|
6月前
|
Android开发 开发者
Android经典面试题之SurfaceView和TextureView有什么区别?
分享了`SurfaceView`和`TextureView`在Android中的角色。`SurfaceView`适于视频/游戏,独立窗口低延迟,但变换受限;`TextureView`支持复杂变换,视图层级中渲染,适合动画/视频特效,但性能略低。两者在性能、变换、使用和层级上有差异,开发者需按需选择。
121 1
|
6月前
|
SQL Java Unix
Android经典面试题之Java中获取时间戳的方式有哪些?有什么区别?
在Java中获取时间戳有多种方式,包括`System.currentTimeMillis()`(毫秒级,适用于日志和计时)、`System.nanoTime()`(纳秒级,高精度计时)、`Instant.now().toEpochMilli()`(毫秒级,ISO-8601标准)和`Instant.now().getEpochSecond()`(秒级)。`Timestamp.valueOf(LocalDateTime.now()).getTime()`适用于数据库操作。选择方法取决于精度、用途和时间起点的需求。
78 3
|
8月前
|
数据可视化 Android开发 容器
Android UI设计: 请解释LinearLayout、RelativeLayout和ConstraintLayout的区别。
Android UI设计: 请解释LinearLayout、RelativeLayout和ConstraintLayout的区别。
265 5
|
6月前
|
Android开发
Android面试题之View的invalidate方法和postInvalidate方法有什么区别
本文探讨了Android自定义View中`invalidate()`和`postInvalidate()`的区别。`invalidate()`在UI线程中刷新View,而`postInvalidate()`用于非UI线程,通过消息机制切换到UI线程执行`invalidate()`。源码分析显示,`postInvalidate()`最终调用`ViewRootImpl`的`dispatchInvalidateDelayed`,通过Handler发送消息到UI线程执行刷新。
67 1