Firefox OS 安全性概述

Change Revisions

版本 381363:

Revision 381363 by MashKao on

版本 381385:

Revision 381385 by MashKao on

Firefox OS 安全性概述
Firefox OS 安全性概述

修訂版本 381363
修訂版本 381385
n10    <h1 id="Platform_Security">n10    <h1 id=".E5.B9.B3.E5.8F.B0.E5.AE.89.E5.85.A8.E6.80.A7">
n16    <h2 id="Secure_Architecture">n16    <h2 id=".E5.AE.89.E5.85.A8.E6.9E.B6.E6.A7.8B">
n31    <h2 id="Secure_System_Deployment">n31    <h2 id=".E4.BD.88.E7.BD.B2.E5.AE.89.E5.85.A8.E7.B3.BB.E7.B5.B
n40    <h2 id="Secure_System_Updates">n40    <h2 id=".E6.9B.B4.E6.96.B0.E5.AE.89.E5.85.A8.E7.B3.BB.E7.B5.B
n81    <h1 id="App_Security">n81    <h1 id="App_.E7.9A.84.E5.AE.89.E5.85.A8.E6.80.A7">
n93    <h2 id="Trusted_and_Untrusted_Apps">n93    <h2 id=".E5.8F.97.E4.BF.A1.E4.BB.BB_(Trusted)_.E8.88.87.E6.9C
n188    <h3 id="Principle_of_Least_Permissions">n188    <h3 id=".E6.9C.80.E5.B0.8F.E6.AC.8A.E9.99.90.E5.8E.9F.E5.89.8
n194    <h3 id="Review_Process_for_Privileged_Apps_in_the_Marketplacen194    <h3 id=".E5.95.86.E5.9F.8E.E5.B0.8D_Privileged_App_.E7.9A.84.
n203    <h2 id="Packaged_and_Hosted_Apps">n203    <h2 id=".E5.B0.81.E5.8C.85.E5.BC.8F_(Packaged)_.E8.88.87.E6.8
n209    <h3 id="Packaged_Apps">n209    <h3 id=".E5.B0.81.E5.8C.85.E5.BC.8F_(Packaged)_App">
nn218    <div class="note">
218    <p>219      <p>
219      <code>app://<em>identifier</em>/<em>path_within_zipfile</em220        <code>app://<em>identifier</em>/<em>path_within_zipfile</
220    </p>221      </p>
222    </div>
n227    <h3 id="Hosted_Apps">n229    <h3 id=".E6.89.98.E7.AE.A1.E5.BC.8F_(Hosted)_App">
n236    <h2 id="App_Manifest">n238    <h2 id="App_.E7.9A.84_Manifest_.E6.AA.94.E6.A1.88">
n242    <h3 id="Example_Manifest">n244    <h3 id="Manifest_.E7.AF.84.E4.BE.8B">
n336    <h3 id="Security_Settings_in_the_App_Manifest">n338    <h3 id="Manifest_.E6.AA.94.E6.A1.88.E7.9A.84.E5.AE.89.E5.85.A
n347              Fieldn349              欄位
n352              Descriptionn354              說明
n366              Permissions required by the app. An app must list en368              App 的必要許可。任何 App 需列出所要使用的 Web API,以取得使用者的許可。Privile
>very Web API it intends to use that requires user permission. Mos>ged/Certified App 可識別大多數的許可,但托管式 App 不適用。API 必具備的屬性:
>t permissions make sense for privileged apps or certified apps, b 
>ut not for hosted apps. Properties per API: 
n370                <strong>description</strong> - A string specifyinn372                <strong>description</strong> ─ 在請求使用此 API 時,此字串將指
>g the intent behind requesting use of this API. Required.>定其背後的目的地。必填。
n373                <strong>access</strong> - A string specifying then375                <strong>access</strong> ─ 此字串將指定許可所需的存取類型。安裝時即給予隱
> type of access required for the permission. Implicit permissions>式許可 (Implicit permission)。僅數種 API&nbsp; 為必填欄位。僅接受:<strong>read</s
> are granted at install time. Required for only a few APIs. Accep>trong>、<strong>readwrite</strong><strong>、</strong><strong>readcr
>ted values: <strong>read</strong>, <strong>readwrite</strong>, <s>eate</strong><strong>、</strong><strong>createonly</strong> 等數值。
>trong>readcreate</strong>, and <strong>createonly</strong>. 
n386              Origin of the app. Array of origins (scheme+unique n388              App 的來源。而構成來源的陣列 (scheme+unique hostname) 則可觸發此 App
>hostname) that are allowed to trigger installation of this app. A> 的安裝作業。另可讓 App 廠商限制僅授權過的商城 (如 <a href="https://marketplace.firefo
>llows app providers to restrict installs from only an authorized >"></a>) 才可安裝 App。
>Marketplace (such as <a href="">h 
n398              Content Security Policy (CSP). Applied to all pagesn400              內容安全政策 (Content Security Policy),將套用至 App 所載入的所有頁面。
> loaded in the app. Used to harden the app against bugs that woul>可強化 App 而避免遭惡意插入任何程式碼。若未指定 CSP,則 Privileged 與 Certified App 均已預設了
>d allow an attacker to inject code into the app. If unspecified, >系統定義值,其語法為:<br>
>privileged and certified apps have system-defined defaults. Synta 
n402              <em>Note that this directive can only increase the n404              另請注意,此指令僅能增加所套用的 CSP。舉例來說,此指令並無法減少 Privileged App 所
>CSP applied. You cannot use it, for example, to reduce the CSP ap>套用的 CSP。
>plied to a privileged App.</em> 
n414              Type of application (web, privileged, or certified)n416              App 的類型,即 Web、Privileged、Certified 等類型。
n421      Firefox OS requires that the manifest be served with a specn423      Firefox OS 要求 manifest 檔案必須為特定的 mime-type 格式 ("application/
>ific mime-type ("application/x-web-app-manifest+json") and from t>x-web-app-manifest+json"),而且必須與該 App 為相同來源的完整主機名稱 (即來源)。若「App 的 m
>he same fully-qualified host name (origin) from which the app is >anifest 檔案」與「要求安裝 App 的頁面」兩者的來源相同,則將放寬此限制。此機制可確保不能偽裝網站並托管 App 的 m
>served. This restriction is relaxed when the manifest app (and th>anifest 檔案。
>us the app manifest) is same-origin with the page that requested  
>the app to be installed. This mechanism is used to ensure that it 
>'s not possible to trick a website into hosting an application ma 
n424      Sandboxed Executionn426      隔離式 (Sandboxed) 執行作業
425    </h2>
426    <p>427    </h2>
427      This section describes application and execution sandboxes.428    <p>
429      本章節將說明 App 與執行作業的沙箱隔離區 (Sandbox)。
n430      Application Sandboxn432      App 隔離區
431    </h3>
432    <p>433    </h3>
433      The Firefox OS security framework uses sandboxing as a defe
>nse-in-depth strategy to mitigate risks and protect the mobile ph 
>one, platform, and data. Sandboxing is a way of putting boundarie 
>s and restrictions around an app during run-time execution. Each  
>app runs in its own worker space and it has access only to the We 
>b APIs and the data it is permitted to access, as well as the res 
>ources associated with that worker space (IndexedDB databases, co 
>okies, offline storage, and so on). For details, see <a href="htt 
434    </p>434    <p>
435      Firefox OS 的安全架構,即是將隔離區作為深度防禦 (Defense-in-depth,DID) 策略,以減少
 >風險並保護資料、平台、行動電話。在執行期間,隔離區可為 App 產生邊界與限制。各個 App 僅於自己的工作空間 (Working
 > space) 內執行,另僅經過授權可存取的 Web API 與資料,才能存取;工作空間相關的資訊 (IndexedDB 資料庫、
 >Cookies、離線儲存等) 亦然。請參閱 <a href="
 >odel</a> 以進一步了解。
435    <p>436    </p>
436      The following figure provides an overview of this security 437    <p>
438      下圖則簡略說明了安全模型:
n442      By isolating each app, its impact is contained within its on444      在隔離各個 App 之後,所產生的影響亦僅限於其工作空間之內,而不會受到工作空間之外的干擾 (如其他 App 或資料)
>wn worker space. It cannot interfere with anything (such as other>
> apps or their data) outside of that worker space. 
n445      Execution Sandboxn447      執行作業隔離區
446    </h3>
447    <p>448    </h3>
448      B2G (Gecko) runs in a highly-privileged system process that
> has access to hardware features in the mobile phone. At run-time 
>, each app runs inside an execution environment that is a child p 
>rocess of the B2G system process. Each child process has a restri 
>cted set of OS privileges – for example, a child process cannot d 
>irectly read or write arbitrary files on the file system. Privile 
>ged access is provided through Web APIs, which are mediated by th 
>e parent B2G process. The parent ensures that, when a child proce 
>ss requests a privileged API, it has the necessary permission to  
>perform this action. 
449    </p>449    <p>
450      B2G (Gecko) 需以高授權度的系統程序 (可存取行動電話中的硬體功能) 而執行。在執行期間,各個 App 均置
 >於執行環境 (屬於 B2G 系統程序的子程序) 中。而各個子程序又具備嚴格的 OS 授權。舉例來說,子程序並無法直接讀寫檔案系統中
 >的任意檔案。必須由 Web API 提供相關存取權限;且該權限又由 B2G 母程序所居中協調。在子程序要求授權過的 API 時,母
450    <p>451    </p>
451      Apps communicate only with the B2G core process, not with o452    <p>
>ther processes or apps. Apps do not run independently of B2G, nor 
> can apps open each other. The only “communication” between apps  
>is indirect (for example, when a listener process detects an even 
>t generated by some other process), and is mediated through the B 
>2G process. 
453      App 僅能透過 B2G 核心程序 (非其他程序或 App) 而相互溝通。App 無法於 B2G 之外獨立執行;各 A
 >pp 亦無法互相開放。App 之間僅能間接「溝通」─ 例如接收器 (Listener) 程序偵測到其他程序所產生的事件,且必須由 
 >B2G 程序居中協調。
n454      Hardware Access Only via the Web APIn456      僅透過 Web API 才能存取硬體
455    </h3>
456    <p>457    </h3>
457      Web apps have only one entry point to access mobile phone f458    <p>
>unctionality: the Firefox OS Web APIs, which are implemented in G 
>ecko. Gecko provides the sole gateway to the mobile device and un 
>derlying services. The only way to access device hardware functio 
>nality is to make a Web API call. There is no “native” API and th 
>ere are no other routes (no “back doors”) to bypass this mechanis 
>m and interact directly with the hardware or penetrate into low-l 
>evel software layer. 
459      Web App 若要存取行動電話的功能,只有以 Gecko 所建構的 Firefox OS Web API 是唯一管道
 >。Gecko 是行動裝置與底層服務的單一出口,因此必須讓 Web API 進行呼叫作業,才能存取裝置的硬體功能。絕對沒有「原生 (
 >Native)」的 API 或其他途徑可繞過此機制,而直接存取硬體或滲透至初階的軟體層。
n460      Security Infrastructuren462      安全架構
n463      The following figure shows the components of this security n465      下圖則為安全架構的元件:
n470        <strong>Permission Manager</strong>: Gateway to accessingn472        <strong>Permission Manager</strong>:可於 Web API 中存取功能的管道,是
> functionality in the Web API, which is the only access to the un>底層硬體唯一存取路徑。
>derlying hardware. 
471      </li>
472      <li>473      </li>
473        <strong>Access Control List</strong>: Matrix of roles and
> permissions required to access Web API functionality. 
474      </li>474      <li>
475        <strong>Access Control List</strong>:由角色 (Role) 與許可 (Perm
 >ission) 所構成,存取 Web API 功能所必備。
475      <li>476      </li>
476        <strong>Credential Validation</strong>: Authentication of
> apps/users. 
477      </li>477      <li>
478        <strong>Credential Validation</strong>:App 與使用者的授權。
478      <li>479      </li>
479        <strong>Permissions Store</strong>: Set of privileges req480      <li>
>uired to access Web API functionality. 
481        <strong>Permissions Store</strong>:存取 Web API 功能所需的授權集合。
n483      Permissions Management and Enforcementn485      許可的管理與強化
484    </h2>
485    <p>486    </h2>
486      Firefox OS security is designed to verify and enforce the p
>ermissions granted to web apps.<br> 
487      The system grants a particular permission to an app only if
> the content requests it, and only if it has the appropriate perm 
>issions requested in the app’s manifest. Some permissions require 
> further authorization from the user, who is prompted to grant pe 
>rmission (as in the case of an app requesting access to the user’ 
>s current location). This app-centric framework provides more gra 
>nular control over permissions than traditional role-centric appr 
>oaches (in which individual roles are each assigned a set of perm 
488    </p>487    <p>
488      針對 Web App 所需的許可 (Permission),Firefox OS 安全機制將進一步驗證並強化。<br>
489      僅當內容 (Content) 請求特殊許可,或當內容具備 manifest 所要求的適當許可時,系統才會發出特定許可至
 > App。若需要使用者進一步的授權,則某些許可亦將提出請求 (例如 App 要存取使用者目前的位置)。與傳統「角色為中心 (Rol
 >e-centric)」的方式 (各個獨立角色將獲得一系列的許可)相較,這種「應用為中心 (app-centric)」的架構更能嚴密
489    <p>490    </p>
490      A given Web API has a set of actions and listeners. Each We
>b API has a required level of permission. Every time a Web API is 
> called, Gecko checks permission requirements (role lookup) based 
> on: 
491    </p>491    <p>
492      現有的 Web API 集合了一系列動作 (Action) 與接收器 (Listener)。各個 Web API 則具
 >備必須的許可層級。每次只要呼叫 Web API,則 Gecko 檢查許可 (角色查找) 的基準為:
492    <ul>493    </p>
493      <li>permissions associated with calling app (as specified i
>n the manifest and based on the app type) 
494      </li>
495      <li>permissions required to execute the requested operation
> (Web API call) 
496      </li>
497    </ul>494    <ul>
495      <li>呼叫中 App 的相關許可 (已於 manifest 檔案中指定,並以 App 類型為準)
496      </li>
497      <li>執行必要作業 (Web API 呼叫) 所需的許可
498      </li>
498    <p>499    </ul>
499      If the request does not meet the permission criteria, then 500    <p>
>Gecko rejects the request. For example, untrusted apps cannot exe 
>cute any Web APIs that are reserved for trusted apps. 
501      若該請求並不符合許可的準則,則 Gecko 隨即拒絕該請求。舉例來說,只要是受信任 App 所保留的 Web API,
 >未受信任的 App 均無法執行。
n502      Prompting Users for Permissionn504      要求使用者給予許可
503    </h2>
504    <p>505    </h2>
505      In addition to permissions that are implicitly associated w506    <p>
>ith the web apps, certain operations require explicit permission  
>from the user before they can be executed. For these operations,  
>web apps are required to specify, in their manifest, their justif 
>ication for requiring this permission. This <em>data usage intent 
>ion</em> informs users about what the web app intends to do with  
>this data if permission is granted, as well as any risk involved. 
> This allows users to make informed decisions and maintain contro 
>l over their data. 
507      除了與 Web App 隱性關連 (Implicitly associated) 的許可之外,在執行特定作業之前,可將
 >需要使用者給予顯式許可。針對這些作業,則必須在 manifest 檔案中指定 Web App 在索取許可時的理由 (Justifi
 >cation)。這種「資料使用意圖 (Data usage intention)」,可讓使用者在給予許可之後,知道 Web App
 > 處理資料的方式,亦將了解可能的風險,進而能做出決定並控管自己的資料。
n508      Secure App Update Processn510      安全的 App 更新程序
n514      For app upgrades and patches to a <em>privileged</em> app, n516      針對 Privileged app 的升級與修正,開發/供應商必須將更新封包提交至授權過的 Marketplace,以
>app providers submit the updated package to an authorized Marketp>供 Marketplace 進一步審查。而在核准之後,隨即完成數位簽章並提供予使用者。在搭載 Firefox OS 的裝置上,亦可
>lace, where it is reviewed and, if approved, signed and made avai>透過 App 更新公用程式 (暫譯 App Update Utility) 定期檢查 App 是否有可用的更新。若發現可用的更新,
>lable to users. On Firefox OS devices, an App Update Utility peri>系統隨即會詢問使用者是否安裝。在行動裝置安裝更新檔案之前,必將驗證封包的:
>odically checks for app updates. If an update is available, then  
>the user is asked whether they want to install it. Before a updat 
>e is installed on the mobile device, the package is verified for: 
515    </p>
516    <ul>517    </p>
517      <li>update origin (verify the source location protocol:doma
>in:port of the update and manifest) 
518      </li>
519      <li>file integrity (SHA-256 hash check)
520      </li>
521      <li>code signature (certificate check against a trusted roo
522      </li>
523    </ul>518    <ul>
519      <li>更新檔來源 (驗證更新與 manifest 檔案的來源位置 protocol:domain:port)
520      </li>
521      <li>檔案完整性 (SHA-256 雜湊檢查)
522      </li>
523      <li>程式碼簽章 ─ 針對受信根 (Trusted root) 而檢查認證
524      </li>
524    <p>525    </ul>
525      Rigorous checks are in place to ensure that the update is a526    <p>
>pplied properly to the mobile phone.<br> 
526      The complete update package must be downloaded in a specifi527      透過適當且嚴格的檢查,可確保行動電話已正確套用了更新。<br>
>c and secure location before the update process begins. Installat 
>ion does not overwrite any user data. 
528      在開始更新程序之前,必須先下載完整的更新封包至特定且安全的位置。安裝作業並不會覆寫任何使用者資料。
n529      Device Security (Hardware)n531      裝置安全性 (硬體)
n532      Security mechanisms for the mobile device hardware are typin534      行動裝置硬體的安全機制,一般均由 OEM 廠商所決定。舉例來說,OEM 廠商可能提供 SIM (Subscriber 
>cally handled by the OEM. For example, an OEM might offer SIM (Su>Identity Module) 卡的鎖定機制,另搭配 PUK (PIN Unlock Key) 密碼,以用於輸入錯誤 PIN 而
>bscriber Identity Module) card locks, along with PUK (PIN Unlock >遭鎖定的 SIM 卡。這部份需聯絡 OEM 廠商以了解細節。Firefox OS 則可讓使用者設定密碼與待機畫面,將於稍後說明。
>Key) codes to unlock SIM cards that have become locked following  
>incorrect PIN entries. Contact the OEM for details. Firefox OS do 
>es allow users to configure passcodes and timeout screens, which  
>are described in the next section. 
n535      Data Securityn537      資料安全性
n538      Users can store personal data on their phone that they wantn540      使用者可將個人資料儲存於手機中,並可設定其隱私性,包含聯絡資訊、金融資訊 (銀行與信用卡細節)、密碼、行事曆等。Fir
> to keep private, including contacts, financial information (bank>efox OS 則針對惡意 App (竊取、挖掘、破壞私密資料) 而設計了防護機制。
> &amp; credit card details), passwords, calendars, and so on. Fir 
>efox OS is designed to protect against malicious apps that could  
>steal, exploit, or destroy sensitive data. 
n541      Passcode and Timeout Screensn543      密碼與待機畫面
542    </h2>
543    <p>544    </h2>
544      Firefox OS allows users to set a passcode to their mobile p545    <p>
>hone so only those who supply the passcode can use the phone. Fir 
>efox OS also provides a timeout screen that is displayed after a  
>configurable period of phone inactivity, requiring passcode authe 
>ntication before resuming use of the phone. 
546      Firefox OS 可供使用者設定行動電話的密碼,往後必須輸入正確密碼才能使用該行動電話。Firefox OS 另提
n547      Sandboxed Datan549      隔離式 (Sandboxed) 資料
548    </h2>
549    <p>550    </h2>
550      As described earlier, apps are sandboxed at run time. This 551    <p>
>prevents apps from accessing data that belongs to other apps <em> 
>unless</em> that data is explicitly shared, and the app has suffi 
>cient permissions to access it. 
552      如之前所述,執行期間的 App 均進入隔離狀態。如此可避免 App 相互存取其內的資料;<strong>除非</str
 >ong>該筆資料已設為共享資料,且其他 App 擁有夠高的許可層級可存取之。
n553      Serialized Datan555      序列化 (Serialized) 資料
554    </h2>
555    <p>556    </h2>
556      Web apps do not have direct read and write access to the fi557    <p>
>le system. Instead, all access to storage occurs only through Web 
> APIs. Web APIs read from, and write to, storage via a an interme 
>diary SQLite database. There is no direct I/O access. Each app ha 
>s its own data store, which is serialized to disk by the database 
558      Web App 並無法直接讀寫檔案系統。相反的,僅能透過 Web API 而存取儲存媒體。Web API 另將透過 S
 >QLite 資料庫居中協調,才能進一步讀取、寫入儲存媒體。不會直接以 I/O 進行存取作業。各個 App 均擁有自己的資料儲存媒體
n559      Data Destructionn561      資料銷毀
560    </h2>
561    <p>562    </h2>
562      When a user uninstalls an app, all of the data (cookies, lo563    <p>
>calStorage, Indexeddb, and so on) associated with that applicatio 
>n is deleted. 
564      一旦使用者取消安裝 App,則將刪除該 App 所有的相關資料,如 cookies、localStorage、Inde
 >xeddb 等。
n565      Privacyn567      隱私性
566    </h2>
567    <p>568    </h2>
568      Mozilla is committed to protecting user privacy and user da569    <p>
>ta according to its privacy principles (<a href="https://www.mozi 
>"></a>), which st 
>em from the Mozilla Manifesto (<a href=" 
></a>). The Mozilla Firefox Privacy Policy describes how Mozilla c 
>ollects and uses information about users of the Mozilla Firefox w 
>eb browser, including what Firefox sends to websites, what Mozill 
>a does to secure data, Mozilla data practices, and so on. For mor 
>e information, see: 
570      根據隱私權原則 (<a href="">htt
 >ps://</a>,Mozilla 致力保護使用者隱私與資料,同時可參閱 Moz
 >illa Manifesto (<a href="
 >html"></a>)。而 Mozilla
 > 的 Firefox Privacy Policy 則說明 Mozilla 將如何蒐集、利用 Mozilla Firefox 瀏覽
 >器的使用者資訊,包含 Firefox 所傳送至網頁的資料、Mozilla 的資料保護方式、Mozilla 資料實務情況等。若要進一
n582      Firefox OS implements these principles by putting the contrn584      在擬定 Firefox OS 的原則時,均將使用者資料的控制權交付給使用者本身。而使用者必須自己決定個人資訊的運用方法
>ol of the user data in the hands of the user, who gets to decide >。Firefox OS 將提供下列功能:
>where this personal information goes. Firefox OS provides the fol 
>lowing features: 
583    </p>
584    <ul>585    </p>
585      <li>Do Not Track option586    <ul>
587      <li>不要追蹤我 (Do Not Track) 選項
n587      <li>ability to disable Firefox browser cookiesn589      <li>可停用 Firefox 瀏覽器的 Cookies
t589      <li>ability to delete the Firefox OS browsing historyt591      <li>可刪除 Firefox OS 的瀏覽記錄