SEAndroid和普通android的区别

首先我们需要知道,在普通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攻击

相关文档下载

版权声明:您好,转载请留下本人博客的地址,谢谢

时间: 2024-11-05 12:22:27

SEAndroid和普通android的区别的相关文章

app测试教程:ios与android的区别

App测试中ios和Android的区别: 1.Android系统(http://www.maiziedu.com/course/android-px/)手机长按home键呼出应用列表和切换应用,然后右滑则终止应用: 2.多分辨率测试,Android端20多种,ios较少: 3.手机操作系统,Android较多,ios较少且不能降级,只能单向升级:新的ios系统中的资源库不能完全兼容低版本中的ios系统中的应用,低版本ios系统中的应用调用了新的资源库,会直接导致闪退(Crash): 4.操作习

【转载】App测试中ios和Android的区别:

App测试中ios和Android的区别: 1.        Android长按home键呼出应用列表和切换应用,然后右滑则终止应用: 2.        多分辨率测试,Android端20多种,ios较少: 3.        手机操作系统,Android较多,ios较少且不能降级,只能单向升级:新的ios系统中的资源库不能完全兼容低版本中的ios系统中的应用,低版本ios系统中的应用调用了新的资源库,会直接导致闪退(Crash): 4.        操作习惯:Android,Back键是

android:gravity和android:layout_gravity区别

从名字上可以看到,android:gravity是对元素本身说的,元素本身的文本显示在什么地方靠着换个属性设置,不过不设置默认是在左侧的.android:layout_gravity是相对与它的父元素说的,说明元素显示在父元素的什么位置. 我们举一个例子大家看一下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.andr

Android如何区别真机和模拟器

一,native方式. 通过c代码读取设备中的配置和硬件相关信息. 1,diskstats 获取闪存的分区状态信息. int fd = open(“/proc/diskstats”, O_RDONLY); bytes = read(fd, buf, bytes); 区别:真机下都有mmcblk0分区,但是模拟器没有分区信息. 2,mac地址. 通过socket和ioctl读取mac地址. sockfd = socket(AF_INET, SOCK_DGRAM, 0); ioctl(sockfd,

APP测试中iOS和Android的区别

一.常识性区别 二.导航方式 iOS:Tab放在页面底部,不能通过滑动来切换,只能点击.也有放在上面的,也不能滑动,但有些Tab本身可以滑动,比如天猫的.还有新闻类的应用. Android:一般放在页面顶端,可以通过滑动页面来切换Tab,当然Tab可以点击切换,Tab多的话,Tab本身也可以滑动.比如豌豆荚,百度贴吧,QQ.总之,Android啥都可以有.(其他导航方式,见上一篇) 三.单条item的操作 iOS:单条item的操作有两种,点击和滑动,点击一般进入一个新的页面,滑动会出现对这条i

王立平--android:gravity与android:layout_gravity区别

android:gravity:设置textview中的字体居中显示 <TextView android:id="@+id/tv_audit_title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#0080FF" android:gravity="center"

IOS跟ANDROID的区别

大家总是会纠结哪个手机系统会更加适合自己,那就由小编我简要介绍一下IOS和安卓的区别吧! 运行机制:安卓是虚拟机运行机制,IOS是沙盒运行机制.这里再说明一下这两者的主要不同之处.安卓系统中应用程序的运行都是在虚拟的环境中运行的,运行方式是数据先传输到虚拟机,再由虚拟机传递到用户界面(简称UI).而苹果IOS的沙盒运行机制则有一个相对规整的分隔控制,也就是相当于把每个应用程序放在自己的沙盒里进行文件的读取,每个沙盒都是相对独立的.沙盒模式使得每个应用程序都在自己的沙盒里进行,相互之间不能互访和干

android:layout_gravity和android:gravity属性的区别

android:gravity / android:layout_gravity区别: android:gravity 是设置该view里面的内容相对于该view的位置,例如设置button里面的text相对于view的靠左,居中等位置.(也可以在Layout布局属性中添加,设置Layout中组件的位置) android:layout_gravity 是用来设置该view相对与父view的位置,例如设置button在layout里面的相对位置:屏幕居中,水平居中等. 即android:gravi

Xamarin.Android和UWP之MVVM的简单使用(一)

0x01 前言 就目前而言,MVVM可以说是挺流行的,无论是web端还是移动端,web端的主要代表angularjs,avalonjs等, 移动端(xamarin,uwp)的代表应该是mvvmlight,mvvmcross等, 我们的主题是移动端,所以主要讲mvvmlight,mvvmcross,这篇主要讲MvvmLight,下篇讲MvvmCross. 还是以Demo的形式来谈使用. 0x02 简单的MVVM(mvvmlight) Demo 先来个web版最简单的MVVM效果,然后在按xamar