Capabilities,中文意为“能力”,是Symbian平台的安全的一个重要组成。
规则1:程序的capabilities由exe程序的capabilities决定,而不是它所调用的DLL
规则2:exe程序不能加载capabilities小于它自身的DLL
Capabilities是Symbian平台安全性的一个重要特色,实在S60 3rd(Symbian v9.1)以后引进的。对于一项Capability,一个程序可以选择有或者没有(这些依据实际需要而定)。在一些action中,比如调用Symbian操作系统上的server,就要求程序具有某个Capability。一项Capability是否需要,依赖于被调用的server:每一个server都定义了它自己的策略。
同样的,每一个DLL库也具有Capabilities,但是这些能力与程序(exe文件)的所有不同。当调用DLL的时候,Capability说明了这个DLL代码的可信赖级别,当这个DLL加载到进程中时,代码执行的Capabilities具有这个进程,也就是exe程序的Capabilities决定,而不是DLL的。DLL的Capabilities只是表明这个DLL代码可信赖的范围(级别)。比方说,一个具有TCP Capability的exe程序不能加载不具有TCP Capability的DLL,因为这个DLL缺少TCB Capability表明这个DLL的代码在TCB Capability中执行是不值得信赖的。
S60 3rd中Capabilities
基本的Capabilities – 可由终端用户赋予(也就是可以通过self -signed赋予)
Ø LocalServices
访问本地服务,比如bluetooth,USB,红外等
这些连接通常不需要费用支出(不需要用户提供成本),用户也知道他们在使用什么服务,当需要使用红外,蓝牙,串口等服务进行数据传输时,需要使用到这个Capability
这个Capability不能够提供网络或者打电话的方位权限。对于这些,请参见NetworkServices
这项Capability能够用于self-signed程序
Ø UserEnvironment
访问从用户物理环境读取数据的服务
这项Capability允许程序进行录音,使用相机等操作。但是它不提供对用户位置信息的访问权限,关于这一部分,请参考Location
Ø NetworkServices
授予对远程服务(比如拨号,发送短消息,WLAN,GPRS)的访问权限,这些可能导致用户费用的支出。
这项Capability允许访问任意的网络服务,而不关注传输介质是什么。比如,你能够连接到一个IP网络拨打语音电话。
这项Capability能够用于self-signed程序
Ø ReadUserData
允许软件读取用户的机密数据,比如联系人信息。这项信息是否被机密由平台决定。
对于用户数据的写入,请参考WriteUserData
注意:ReadUserData和WriteUserData并不总是成对出现的。没有必要通过他们对同一区域同时进行读写访问。
这项Capability能够用于self-signed程序
Ø WriteUserData
允许软件对用户的机密数据进行写入操作,比如联系人信息。这项信息是否被机密由平台决定。
对于用户数据的读取,请参考ReadUserData
注意:ReadUserData和WriteUserData并不总是成对出现的。没有必要通过他们对同一区域同时进行读写访问。
这项Capability能够用于self-signed程序
Ø Location (从 S60 3rd Edition, FP2以后)
允许软件获取手机的位置。这个能够通过外置或者内置的GPS实现,通过网络操作或者其他的安装模块。
注意:如果使用外置的蓝牙GPS设置,你就需要这项Capability了,而是使用LocalServices
这项Capability只能够被具有证书和symbian签名的开发者赋予。
拓展的Capabilities – 可通过symbian signing(symbian 签名)赋予
Express Signed
Ø Location
允许软件获取手机的位置。这个能够通过外置或者内置的GPS实现,通过网络操作或者其他的安装模块。
注意:如果使用外置的蓝牙GPS设置,你就需要这项Capability了,而是使用LocalServices
这项Capability只能够被具有证书和symbian签名的开发者赋予。
Ø SwEvent
这项Capability允许软件读取键盘,向其他程序发送消息等
这项Capability只能够被具有证书和symbian签名的开发者赋予。
Ø SurroundingsDD
授予对 对手机环境提供输入信息的逻辑设备驱动的访问权限
Ø ProtServ
授予一个server注册受保护名称的访问权限。受保护名称使用“!”作为开头,内核不允许不具有ProServ Capability的server使用这样的名称,也就是阻止受保护的server被模拟。
Ø PowerMgmt
授予杀死任何系统进程或者切换机器状态(比如关机)的权限
Ø ReadDeviceData
允许软件读取当前网络(比如CellID)和设备设置(安装程序)的信息
这项Capability只能够被具有证书和symbian签名的开发者赋予。
Ø WriteDeviceData
授予访问系统敏感数据(控制设备行为的设置)的权限
Ø TrustedUI
授予软件可信赖UI会话的权限,比如在安全的UI环境中显示一个对话框。
Certified Signed
Ø NetworkControl
平台安全Capability,网络控制
修改或方位网络协议的控制的能力
典型的,一个行为改变几个现存的或即将的连接行为,这些应该收到NetworkControl的保护。例如,强制抛弃某个特定协议的所有存在的连接,或者改变某个调用的优先级。
Ø MultimediaDD
平台安全Capability,多媒体设备驱动
访问一些严格受限的多媒体函数,比如直接访问关联的设备驱动,或者有限访问多媒体API。包括声音,相机,视频等
Ø CommDD
平台安全Capability,通信设备驱动
直接访问所有的通信设备驱动
包括Wi-Fi,USB和串口设备驱动
Ø DiskAdmin
平台安全Capability,磁盘管理
影响到多个文件或目录的磁盘管理操作(或者整个文件系统的完整和行为等)。包括挂载或者卸载驱动分区
厂家授权Capabilities
Ø AllFiles
平台安全Capability,所有文件
授予所有文件可见或者额外的私有文件写入访问权限。类似于TCB,这项权限控制的非常严格,不轻易赋予这项权限。不同于TCB,所有文件都允许私有读写
Ø DRM(Digital Rights Management)
平台安全Capability,DRM
授予改变DRM包括内容的访问权限。回放这些内容不需要DRM Capability。
Ø TCB
平台安全Capability,受信赖的计算基础
可执行和共享的只读资源的写入权限
TCB允许对/sys和/resource目录进行写入,这项Capability非常关键,因为它允许对可执行程序进行写入操作,其中包括了该进程的Capabilities。
附注:
建议有能力的朋友尽量阅读原文,翻译的时候发现好多东西不知道该怎么翻译,翻译过来也往往意思发生了变化。
文章里面翻译有错的地方欢迎指出来~
原文请参考:http://wiki.forum.nokia.com/index.php/Capabilities