您的位置:首页 > 移动开发 > Android开发

BREW和Android的安全思想

2010-11-27 20:54 162 查看
理论上,所有的公众(公开)实体,都需要安全机制保障, 比如网络。 从分层角度而言,每一层都可以进行安全保护,比如网络协议中的IpSec(Ip层), SSL(传输层), sMIME(应用层)安全协议。 对于移动平台也不例外, 也可以在不同的层次进行安全保障,系统底层和框架上层。

对于BREW平台,一直就是非智能的平台,所以它对底层系统的奢求不是那么高,无需任何现代操作系统的支持。 所以, BREW也就不能对系统层的安全做任何奢求,那么只能完全在BREW这一层实现并保障安全。 事实也是如此, 到BREW3.1.5为止,整个BREW还是运行在同一个进程中的同一个线程中, 所以所有的BREW应用连带BREW框架都运行于一个地址空间,任何个体的Crash,整个BREW就Crash了。 并且,底层系统也不支持类似UID,GID的权限保护机制,从底层的角度看,所有的文件和操作,任何个体都是允许的。

在如此脆弱的系统安全现实下,BREW唯有依靠自身来保障安全, 那它是怎么保障的那? 抛开表像看本质, 其实就是利用了现代安全的法宝,PKI,即,基于签名机制。 我们慢慢看来:

1。 恶意应用可能导致整个系统的Crash, 那么,怎么限制恶意应用的运行那? 利用签名! 签名验证不通过的应用,不得安装,不得运行!

2。 即便善意的应用,但是系统的敏感操作不应该被随意触及, 比如, 默认情况下,一个应用不应该能访问另一个应用的文件,不能去Hook系统的按键事件,不能去更改BREW的配置项等。 但是,这些操作在应用获得了一定权限的情况下,是被允许的。

简言之,就是利用权限,限制不同的应用的权利。 在BREW中,权限是通过在MIF文件中添加声明实现的。 你添加了权限,也就说明你的应用具有了该权限。

慢一点!!这样不是仍然没用吗? 任何的应用可以随意在MIF中把所有的权限全部打勾,这样不是没有达到预期的约束的目的吗??

权限的保护还的利用PKI,即签名。

3。 最后,BREW中的签名限制度是极其高的,不支持普通CA颁发的证书的签名,更不要说随意的自签名了。 BREW中的签名,只认高通的根证书进行的签名!! 这样,就完全限制了在BREW中,只有高通授权的应用,才能在手机中运行!

一般情况下,一个CP厂商的BREW应用想上线,必须经过天翼博路的详细测试,保证其应用不会导致Crash等情况, 同时,MIF文件中的权限的设定有约束力,不得设置系统权限,否则,无法上线。 OK, 假设最终通过测试后, 高通就会对整个应用包(包括应用的可执行文件mod,应用的模块信息文件mif,以及所有其他的应用文件)进行签名,然后返回CP厂商进行上线。 这样,该签名同时保护了所有的应用文件不得被擅自改动, 那么MIF中的权限,CP厂商也将不得再擅自改动了, 从而保证,上线的BREW应用是测试OK的,非恶意的,且不含系统权限的。

当然,以上说的是BREW中的动态商业应用。 对于静态应用,由于和手机的Image Build在一起,一般均为OEM厂商开发或植入的,为可信的,所以就不需要签名验证了,此时,当然OEM厂商可以将其MIF的权限设置为最高。

接下来我们看看Android中的安全机制。

Android是一个天生的贵族,它运行在Linux之上。 Linux在系统层直接提供安全的保障,主要包括:

进程间的地址空间独立,从而保证一个应用Crash不会影响另一个应用

通过UID,GID保护文件的操作权限,以及一个进程(应用)的可操作权限。

Android中,每一个应用APK默认都运行在一个单独的进程中,互不影响。同时每一个应用在运行时,被赋予一个唯一的普通权限的UID, 从而使得该UID的进程(应用)没有权限去访问其他应用的文件,包括系统文件,也没有权限去进行一些特权操作,比如修改系统时间等。

既然Android可以直接利用Linux的底层安全保障,那么,在Android的框架这一层,就只需要象征性的一些基于用户授权的安全保障即可。所以,你会看到:

在Android中,虽然也利用了签名,但是android中的签名仅仅是让用户知道该应用的开发者,而并非利用签名来限制安装与运行。 所以,在Android中,即便是自签名,都是允许的。

在Android中,虽然在框架层也引入了权限的概念,使得某些Android API的使用必须在调用方的AndroidManifest.xml中声明才能使用。 但其实任何应用都可以去设置这些权限,没有谁来限制你。 仅仅是在应用安装的时候,Android会逐一的提示用户是否授权允许该应用使用这些权限, 仅此而已, 所以,这种权限的安全保障,其实下架给了终端用户, 就类似于EULA,这下Android就脱离了干系了。 当然了,即便一个恶意的Android程序被安装了,又被无知的用户授权了所有权限,那么该应用仍然无法为所欲为,因为其突破了Android框架这一层的安全保障外,仍然无法突破Linux的这一层安全保障。也正是如此,所以,Android在框架层的安全保障,其实是基于终端用户的授权与告知,仅此而已。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: