博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
安卓系统安全措施
阅读量:5093 次
发布时间:2019-06-13

本文共 1844 字,大约阅读时间需要 6 分钟。

启动验证:

android4.4使用device-mapper-verity(dm-verity)提供启动验证,对透明的设备提供完整性检查其特性是在浏览到设备模块的同时看到是否存在一些文件或者程序,并其确定是否符合预期的配置。

使用的是加密哈希树,每一块都有一个SHA256哈希

只需要保证顶级的根节点哈希可信

引导分析的公共密钥必须经过OEM验证,用来验证签名的哈希以确认设备的系统分区是否被篡改

磁盘加密:

加密模式:

使用dm-crypt、使用随机生成的AES CBC模式的128位的密钥

每一个单元会被非顺序访问,使得每个扇区都要有独立的IV

安卓对每个扇区加密是用加盐向量初始化(ESSIV),使用SHA256算法进行哈希ESSIV:SHA256,从而生成每个扇区的IV

IV(SN)=AESs(SN),其中s=SHA256(K),K为用散列算法加密的二次密钥s密钥K,SN为扇区号

由于ESSIV不改变CBC的延展性,也不能保证加密块的完整性,因此攻击者仍可通过磁盘上的密钥明文对加密磁盘进行攻击。

密钥生成:

磁盘加密密钥通过与另一个128位的AES密钥加密,由用户提供的密码衍生出来的。

使用PBKDF2和128位随机盐值作为密钥导出方式,将得到的master ley和盐值存储到磁盘上,占整个分区的最后16KB,被称为加密页脚。

屏幕安全:

滑动解锁、密码锁、PIN锁、图形锁

屏幕锁:

所有的屏幕锁密码存储在/data/system/gesture.key

具体加密代码LockSettingsService中的patternToHash

可以尝试用字典与该密码对比从而得出答案,但是我们也可以直接用adb命令删除掉对应文件。此时,系统将认为不存在密码

rm /data/system/gesture.key

这是针对root过的系统,如果没有root权限,我们可以在recovery模式下清除掉所有系统中的数据也能删除掉屏幕锁。如果没有打开usb调试模式的设备,则无法使用adb shell模式,也就无法解除屏幕锁。

密码锁:

类似屏幕锁,也只需要将/data/system/gesture.key文件删除

PIN锁:

相对以上两种方式比较安全,但是密码忘记后难以查询,输入错误到一定次数会销毁SIM卡

USB调试安全

adb组成:

ADB Server 、ADB Deamon、ADB Command-line。

android客户端是通过TCP协议保持与ADB Server进行会话,通常为localhost:5037

adb认证密钥:

私钥文件adbkey--存在主机上,是标准的OpenSSL PEM格式

公钥文件adbkey.pub--包含公钥基础64编码标准RSA PUBLIC KEY结构

增强型内核SELinux/SEAndroid

SELinux组成部分:对象管理器(OM)、访问权限缓存(AVC)、安全服务和安全策略

SEAndroid是一种基于安全策略的强制访问控制允许加载新的访问控制模块(MAC)安全机制。

传统Linux的不足:

存在特权用户root

对于文件的访问权划分不够细

SUID程序的权限升级

DAC问题

SELinux特点:

MAC对访问的控制强制化

TE对于进程只赋予最小权限

domain迁移、防止权限升级

RBAC对用户只赋予最小权限

SELinux运行模式:

SELinux通过MAC的方式来控管程序,控制的主体是程序,而目标是文件

SEAndriod主要采用了两种强制访问方法:TE(对于进程只赋予最小权限)、MLS(多等级权限安全)

SEAndroid的上下文由四个组成部分user、role、type、sensitivity。即为身份识别、角色、安全类型、安全等级(其中最重要的是安全类型,所有policy都围绕安全类型展开)

SEAndroid中user为u、role有两个为r和object_r。关于安全上下文配置的核心文件主要是file_contexts

文件、seapp_contexts文件和ocontexts文件。多等级安全的安全等级分为s0~sn,s0为最低。

SELinux启动、关闭和观察:

3中模式:Enforcing(强制模式)、Permissive(宽容模式)、Disable(关闭模式)

转载于:https://www.cnblogs.com/miaohj/p/5958335.html

你可能感兴趣的文章
小白眼中的git操作
查看>>
小米笔试题--数组移动
查看>>
php gd实现简单图片验证码与图片背景文字水印
查看>>
仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'XXX'中的标识列指定显式值。...
查看>>
winform中的小技巧【自用】
查看>>
winform DataGridView的虚模式填充,CellValueNeeded事件的触发条件
查看>>
java成神之——集合框架之ArrayList,Lists,Sets
查看>>
python编程快速上手
查看>>
实验五:编写、调试具有多个段的程序
查看>>
事件代理与事件处理流程
查看>>
数据分析师
查看>>
Android 网络编程
查看>>
仰空以忧繁星,我将君心聆听,我听君心似水清,清冷好似寒冰
查看>>
mysql中的事物处理
查看>>
面向对象程序的设计模式
查看>>
dos.ORM配置和使用
查看>>
huawei交换机普通远程登陆配置
查看>>
Python学习笔记(2) Python提取《釜山行》人物关系
查看>>
SSE入门
查看>>
【linux学习笔记五】帮助命令
查看>>