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