导航:首页 > 操作系统 > android安全机制解析与应用实践

android安全机制解析与应用实践

发布时间:2023-02-27 21:02:33

Ⅰ 我想知道android开发必须要掌握的有哪些知识点

l 熟练运用Android下的自定义控件。
l 熟练掌握Android系统架构,对Android的各个层次的开发有一定的认识。
l 熟练掌握android下的XML,JSON,HTML的解析,熟练掌握各种数据的存储方式,能使用MVC独立开发客户端程序,熟悉安卓下的GPS定位。
l 熟悉android 的JNI 开发,通过JNI实现java与C/C++程序间的调用及回调。
l 熟练掌握UI设计、常用布局、动画特效。熟悉安卓下的消息推送机制原理。
l 熟悉Android下的安全机制。如获取系统最高权限使得不能停止服务,利用守护进程保护服务不被停止,清理内存等。
l 熟悉Android下网络通信机,对Socket通信、TCP、Http有较深刻的了解和经验。
l 熟练应用Mysql,SQLServer,及安卓下的SQLite数据库操作及编码。
l 熟练掌握HTML,DIV/CSS,熟悉JavaScript/Ajax/jquery能实现静态页面的开发。
l 了解HTML5,了解PhoneGAP框架,WebSevice。
熟练使用Eclipse/Myeclipse,CVS/SVN/GIT等开发工具, 对数据结构有深入了解,有C/C++基础
当然你java基础也必须要好 算法什么的

Ⅱ 安卓的安全机制

Android以linux操作系统内核为基础,实现硬件设备驱动、进程和内存管理、网络协议栈、电源管理等核心系统功能。除此以外,Android还增加了一些面向移动设备的特有功能,如低内存管理LMK(Low Memory Killer)、匿名共享内存(Ashmem: Anonymous Shared Memory),以及进程间通信Binder机制。这些功能的增强进一步提升了Android在内存管理、进程间通信等方面的安全性。

Android之前的版本并不存在硬件抽象层。鉴于硬件厂商并不希望公开其设备驱动的源代码,Google对此将Linux内核驱动程序进行封装,屏蔽掉底层的实现细节,向上提供统一的接口,这就是硬件抽象层。



HAL(Hardware Abstraction Layer)规定了一套应用层对硬件层的读写和配置的统一接口,本质上是将硬件的驱动分为用户空间和内核空间,其中内核驱动程序运行在内核空间,HAL运行在用户空间。上图中的Stub,以so库的形式存在,可以理解为proxy。上层通过调用标识获得HAL的相关Stub,进而取得相应操作。

系统运行时库由系统类库和Android运行时构成。系统类库基本上用C/C++编写,基本功能说明如下:



当然,还有Android NDK(Native Development Kit),使得应用程序可以不依赖Dalvik虚拟机进行开发。Android运行时核心库提供android.os, android.net, android.media等核心API,而Dalvik虚拟机依赖Linux内核,实现进程隔离与线程调度管理、安全与异常管理、垃圾回收等功能,并被改进以适应低内存、低处理器速度的移动设备环境。

再往上就是应用程序框架层了。一系列的Android应用程序所需的类库,使得开发人员可以快速地进行程序开发,也可以通过继承实现个性化的扩展。如Activity Manager负责主线程ActivityThread的创建、Activity生命周期的维护,并为窗口提供交互的接口。

应用层就是与用户直接交互的应用程序,如SMS短信、图片浏览器、地图以及开发人员所开发的应用程序。

Ⅲ android系统怎样实现访问控制策略

第一类风险是滥用应用程序权限。关于这类风险有如下防范策略建议。
应用程序认证
认证是防范恶意程序的有效手段之一。在理想状态下,一个应用程序在认证之前必须经过完整的测试与代码审查,确认其权限使用的合理性,这自然对恶意软件起到了有力的防范作用。但是,认证的费用高昂,程序复杂,并不具备广泛的实用性。
选择使用应用程序权限
如果能够在安装阶段,确认某一应用程序仅使用必需的最小权限,也就是遵循最小权限原则,则受到恶意软件攻击的可能性必将大大降低!对于有经验的用户这也许是一种选择,但对于广大的普通用户,恐怕没人懂得如何验证应用程序要求的权限是否合理,在多数情况下用户会直接授予所要求的权限。因此需要开发者在申请或设定权限时,严格遵循最小权限原则。
自动静态分析与代码验证
设计一种自动分析应用程序特性的工具,分析应用程序的功能以及不同应用程序之间的差别,以判断其合法性。
第二类风险是攻击Linux内核与系统库函数的漏洞。目前,针对这种风险,采用更严格的访问控制机制,第6章介绍的限制操作系统用户权限的SE Android,是一种实际且有效的选择。最危险的攻击就是利用系统漏洞获取根用户或超级用户权限,进而控制整个系统。SE Android恰好通过控制根用户或超级用户权限实现对安全性的增强,即使攻击者获取了根用户权限,但可能的危害范围不至于无限扩大。但是,某些系统命令由于正常使用的需要,可能无法完全禁用,攻击者如果恰好获得该类命令的使用权,则SE Android的功能就十分有限了。
第三类风险是破坏私有数据的可用性、数据隐私性以及完好性。可以采取以下策略进行防范。
登录
使用登录用户口令解锁移动设备的某些功能,以防止安全威胁。这是一种常见的有效方式,尤其是用于保护隐私数据信息。但是,当设备遗失时,如果尚未使用口令解锁设备,则保护作用存在;如果解锁之后才遗失设备,则口令保护完全无效。
防火墙
防火墙可以保障用户私有信息不会经由网络连接被泄露。通常,对网络连接传输的内容使用无状态或有状态的分析,可以发现是否有私密信息正被泄露,因此可以切断传输线路。由于防火墙工作在操作系统内核中,因此无法直接为外部攻击所侵害。同时防火墙可以与SE Android提供的访问控制机制协同工作,提供更高级别的保护。但是,恶意软件并非只能通过网络接口泄露隐私信息。比如,通过短信/彩信的发送,防火墙就无作用了。
数据加密
数据加密是保护隐私数据的最佳手段。由于只有信息所有者才有密钥,因此即使设备失窃,隐私信息的安全仍然得到保障。
上下文敏感的访问控制(CAAC,Context Aware Access Control)
CAAC可以根据设备使用的内部与周边环境决定访问权限,比如设备使用的地点、所登录的移动网络、是否连接Wi-Fi等。但是,如果攻击恰好发生在允许访问的环境下,则此类方式无效。
远程管理
从安全角度,远程管理能力是必须严格限制使用的。但是,与防火墙、CAAC机制相结合,远程管理实际可以提升安全性。例如,设备遗失后,可以通过远程管理机制开启防护机制,保护数据安全。即使在日常使用中,远程管理也可能发现肆虐移动网络的蠕虫,通过启动防火墙等机制限制蠕虫的活动。但是,所有的远程管理都需要在受到攻击的过程中,或受到攻击之前有人为参与,而且需要耗费设备的资源,以及远程管理的人力资源等,费用不菲。
第四类风险是耗尽系统资源,可以采取如下的防范手段。
资源管理
系统资源管理的安全方案可以进一步降低耗尽系统资源类风险的危害。其机制是公平分配每个应用程序所需的系统资源。当然,可以根据应用程序的重要性与对资源的需求情况加以分配。比如,电话应用程序非常重要,因此需要得到更多的CPU时间。如果CPU时间、存储空间限额、网络与磁盘输入输出限流,则“拒绝服务”类型的攻击可被避免。但是,高效实现此类机制仍然十分困难,因此应用较少。
入侵检测/防护系统
基于宿主(host)的入侵检测系统可以通过资源使用的异常情况,检测各种耗尽电池、内存与CPU时间的恶意软件。但是,高级的恶意软件通常伪装为正常软件,不易检测。
第五类风险是入侵专用网络连接。建议采用如下的防范策略。
虚拟专网(VPN)
虚拟专网使用成熟的信息认证码与加密,保护通信的安全,可以防止针对网络的攻击。
远程管理
一个集中式的远程管理中心可以增强安全保护能力,但远程管理中心的人为因素可能成为另类的安全隐患。
上下文敏感的访问控制(CAAC)
在内网或虚拟专网的环境下,结合CAAC的机制,可以更好地保护数据安全。比如,当检测到外网环境时,适时启动数据传输加密机制等。
以上均为宏观上采取的防范策略,就实施细节而言,重要的是开发者需具备基本的安全意识,充分认识到安全性也是软件开发周期的一个重要环节,编写安全的代码是开发者所必须具备的一项职业技能。虽然不可能确保所编写的代码100%安全,但也要尽可能地使用户对Android系统和应用程序放心。
具体而言,无论是系统工程师还是应用工程师,在Android平台上致力于实现功能的同时,应更深入地理解所编写的应用程序将如何与Android系统或其他应用程序安全地交互;如何安全地存储数据到SQLite;如何保护用户数据尤其是敏感数据的安全,避免恶意软件的攻击;如何处理有限的内存、电池电量;如何充分理解权限机制,使用户清楚应用程序需要哪些权限。所有的这些都是开发流程中必不可少的部分。
本文节选自《Android安全机制解析与应用实践》一书。

Ⅳ android安全沙箱机制是基于什么

Android顺其自然地继承了Linux内核的安全机制,同时结合移动终端的具体应用特点,进行了许多有益的改进与提升。
window与unix/linux等传统操作系统以用户为中心,假设用户之间是不可信的,更多考虑如何隔离不同用户对资源(存储区域与用户文件,内存区域与用户进程,底层设备等)的访问。在Android系统中,假设应用软件之间是不可信的,甚至用户自行安装的应用程序也是不可信的,因此,首先需要限制应用程序的功能,也就是将应用程序置于“沙箱”之内,实现应用程序之间的隔离,并且设定允许或拒绝API调用的权限,控制应用程序对资源的访问,如访问文件,目录,网络,传感器等。
Android扩展了Linux内核安全模型的用户与权限机制,将多用户操作系统的用户隔离机制巧妙地移植为应用程序隔离。在linux中,一个用户标识(UID)识别一个给定用户;在Android上,一个UID则识别一个应用程序。在安装应用程序时向其分配UID。应用程序在设备上存续期间内,其UID保持不变。仅限用于允许或限制应用程序(而非用户)对设备资源的访问。如此,Android的安全机制与Linux内核的安全模型完美衔接!不同的应用程序分别属于不同的用户,因此,应用程序运行于自己独立的进程空间,与UID不同的应用程序自然形成资源隔离,如此便形成了一个操作系统级别的应用程序“沙箱”。
应用程序进程之间,应用程序与操作系统之间的安全性由Linux操作系统的标准进程级安全机制实现。在默认状态下,应用程序之间无法交互,运行在进程沙箱内的应用程序没有被分配权限,无法访问系统或资源。因此,无论是直接运行于操作系统之上的应用程序,还是运行于Dalvik虚拟机的应用程序都得到同样的安全隔离与保护,被限制在各自“沙箱”内的应用程序互不干扰,对系统与其他应用程序的损害可降至最低。Android应用程序的“沙箱”机制如下图,互相不具备信任关系的应用程序相互隔离,独自运行:

在很多情况下,源自同一开发者或同一开发机构的应用程序,相互间存在信任关系。Android系统提供一种所谓共享UID(SharedUserID)机制,使具备信任关系的应用程序可以运行于同一进程空间。通常 ,这种信任关系由应用程序的数字签名确定,并且需要应用程序在manifest文件中使用相同的UID。共享UID的应用程序进程空间

Ⅳ 什么是android系统安全机制

所有安装到Android系统中的应用程序都必须拥有一个数字证书,此数字证书用于标识应用程序的作者和应用程序之间的信任关系。Android系统不会安装一个没有数字证书的应用程序,如果一个权限的保护级别为signature,只有当应用程序所用数字签名与声明此权限的应用程序所用数字签名相同时,Android系统才会授权。如果一个权限的保护级别为signatureOrSystem,Android系统会将该权限授予具有相同数字签名的应用程序或Android包类。

Ⅵ android的安全机制有哪些

• 进程沙箱隔离机制。
• 应用程序签名机制。
• 权限声明机制。
• 访问控制机制。
• 进程通信机制。
• 内存管理机制。
• SELinux

阅读全文

与android安全机制解析与应用实践相关的资料

热点内容
php论坛实训报告 浏览:403
java日期字符串转换成日期 浏览:135
linuxsftp连接 浏览:934
光伏日发电量算法 浏览:125
小肚皮app怎么才有vip 浏览:616
php全角转换半角 浏览:927
java字符序列 浏览:539
杭州编译分布式存储区块链 浏览:575
材料压缩曲线 浏览:247
linux命令排序 浏览:151
手机热点加密为啥连接不上电脑 浏览:979
编译器合并计算 浏览:959
android音频曲线 浏览:343
linuxftp自动登录 浏览:802
运行编译后网页 浏览:70
阅读app怎么使用 浏览:319
centos防火墙命令 浏览:432
命令行变更 浏览:332
linux设备和驱动 浏览:207
加密货币骗局破案 浏览:345