aboutsummaryrefslogtreecommitdiff
path: root/zh-cn/security/overview
diff options
context:
space:
mode:
Diffstat (limited to 'zh-cn/security/overview')
-rw-r--r--zh-cn/security/overview/app-security.html154
-rw-r--r--zh-cn/security/overview/implement.html218
-rw-r--r--zh-cn/security/overview/kernel-security.html86
-rw-r--r--zh-cn/security/overview/updates-resources.html183
4 files changed, 641 insertions, 0 deletions
diff --git a/zh-cn/security/overview/app-security.html b/zh-cn/security/overview/app-security.html
new file mode 100644
index 00000000..0f69ae74
--- /dev/null
+++ b/zh-cn/security/overview/app-security.html
@@ -0,0 +1,154 @@
+<html devsite><head>
+ <title>应用安全</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<h2 id="elements-of-applications">应用元素</h2>
+<p>Android 提供了一个适用于移动设备的开放源代码平台和应用环境。核心操作系统基于 Linux 内核。Android 应用通常都是使用 Java 编程语言编写的,并在 Dalvik 虚拟机中运行。不过,也可以使用本机代码编写应用。应用是通过文件扩展名为 .apk 的单个文件安装的。</p>
+<p>Android 应用的主要构造块包括:</p>
+<ul>
+ <li>
+ <p><strong>AndroidManifest.xml</strong>:<a href="https://developer.android.com/guide/topics/manifest/manifest-intro.html">AndroidManifest.xml</a> 是控制文件,用于告诉系统如何处理应用中的所有顶级组件(具体来说就是下面介绍的活动、服务、广播接收器和内容提供程序)。该文件还用于指定需要哪些权限。</p>
+ </li>
+ <li>
+ <p><strong>活动</strong>:一般情况下,<a href="https://developer.android.com/guide/topics/fundamentals/activities.html">活动</a>是指聚焦于用户的单个任务的代码。活动通常包括向用户显示界面,但并不一定会这样,有些活动就从不显示界面。通常情况下,应用的入口点是应用的其中一项活动。</p>
+ </li>
+ <li>
+ <p><strong>服务</strong>:<a href="https://developer.android.com/guide/topics/fundamentals/services.html">服务</a>是指在后台运行的代码的主体。服务可以在自己的进程中运行,也可以在其他应用的进程中运行。其他组件会“绑定”到某项服务,并通过远程过程调用来调用该服务的方法。比如媒体播放器就是一项服务:即使用户退出媒体选择界面,也可能仍然希望音乐继续播放。即使界面已关闭,服务也可使音乐继续播放。</p>
+ </li>
+ <li>
+ <p><strong>广播接收器</strong>:<a href="https://developer.android.com/reference/android/content/BroadcastReceiver.html">BroadcastReceiver</a> 是在操作系统或其他应用发出称为 <a href="https://developer.android.com/reference/android/content/Intent.html">Intent</a> 的 IPC 机制时实例化的对象。例如,应用可以注册一个接收器来接收电量不足消息,并可以根据该信息改变自己的行为。</p>
+ </li>
+</ul>
+<h2 id="the-android-permission-model-accessing-protected-apis">Android 权限模式:访问受保护的 API</h2>
+<p>Android 上的所有应用均在应用沙盒(本文档的前面对其进行了介绍)内运行。默认情况下,Android 应用只能访问有限的系统资源。系统负责管理 Android 应用对资源的访问权限。如果资源使用不当或被恶意使用,可能会给用户体验、网络或设备上的数据带来不利影响。</p>
+<p>这些限制是通过多种不同的形式实现的。有些功能会因 Android 有意未提供针对敏感功能的 API(例如,Android 中没有用于直接操控 SIM 卡的 Android API)而受到限制。在某些情况下,角色分离能够提供一种安全措施,就像按应用隔离存储空间一样。在其他情况下,敏感 API 旨在供可信应用使用,并由一种称为“权限”的安全机制进行保护。</p>
+<p>这些受保护的 API 包括:</p>
+<ul>
+ <li>摄像头功能</li>
+ <li>位置数据 (GPS)</li>
+ <li>蓝牙功能</li>
+ <li>电话功能</li>
+ <li>短信/彩信功能</li>
+ <li>网络/数据连接</li>
+</ul>
+<p>这些资源只能通过操作系统进行访问。要使用设备上受保护的 API,应用必须在其清单中定义所需的功能。在准备安装应用时,系统会向用户显示一个对话框,其中会注明应用请求的权限并询问是否继续安装。如果用户选择继续安装,系统会认定用户已授予应用请求的所有权限。用户不能单独授予或拒绝个别权限,而是必须要一起授予或拒绝应用请求的所有权限。</p>
+<p>获得授权后,应用只要安装在设备上,便会一直拥有这些权限。为了避免用户混淆,系统不会再次通知用户向应用授予的权限,而核心操作系统中包含的应用或由原始设备制造商 (OEM) 绑定的应用不会向用户请求权限。应用卸载后,权限也会被移除,因此如果用户之后重新安装卸载的应用,系统会再次显示应用请求的权限。</p>
+<p>在设备设置中,用户可以查看之前安装的应用的权限。此外,用户还可以根据需要在全局范围内停用某些功能,例如停用 GPS、无线功能或 WLAN。</p>
+<p>如果应用尝试使用未在其清单中声明的受保护功能,权限失败通常会导致系统向应用抛回一个安全异常。受保护 API 权限检查会在最底层被强制执行,以防止出现规避行为。<em></em>图 2 中显示了如果应用在安装时请求获得受保护 API 的访问权限,会导致系统向用户显示的消息示例。</p>
+<p>如需关于系统默认权限的说明,请访问:<a href="https://developer.android.com/reference/android/Manifest.permission.html">https://developer.android.com/reference/android/Manifest.permission.html</a>。
+应用可以声明自己的权限以供其他应用使用。上述位置中未列出此类权限。</p>
+<p>在定义权限时,protectionLevel 属性用于告诉系统如何让用户知道哪些应用需要或可以获得相应权限。如需关于如何创建和使用应用特有权限的详细信息,请访问:<a href="https://develo
+per.android.com/guide/topics/security/security.html">https://developer.android.com/guide/topics/security/security.html</a>。</p>
+<p>有些设备功能(例如,发送短信广播 Intent 的功能)不会供第三方应用使用,但可供原始设备制造商 (OEM) 预先安装的应用使用。这些应用使用 signatureOrSystem 权限。</p>
+<h2 id="how-users-understand-third-party-applications">用户如何了解第三方应用</h2>
+<p>当用户与第三方应用互动时,Android 会尽力让用户清楚这一情况,并让用户知道这些应用具备的功能。在安装任何应用之前,系统都会向用户显示一条明晰的消息,让用户知道要安装的应用请求获得的各项权限。安装完毕后,系统不会再次提示用户确认任何权限。</p>
+<p>在安装前一刻显示权限的原因有很多。这时用户正在主动查看应用、开发者和功能方面的信息,以确定其是否符合自己的需求和期望。同样非常重要的一点是,他们尚未对要安装的应用做出心理或财务方面的承诺,并且可以轻松地将要安装的应用与其他替代应用进行比较。</p>
+<p>有些其他平台会使用不同的方式通知用户,即在每个会话开始时或用户正在使用应用时请求权限。Android 的愿景是让用户能够随意在应用之间无缝切换。每次都让用户确认会拖慢用户的操作速度,而且会导致 Android 无法提供良好的用户体验。如果让用户在安装应用时查看权限,用户便可以在不愿意授予相应权限时选择不进行安装。</p>
+<p>此外,许多界面研究表明,过度提示用户会导致用户开始在看到任何对话框时都选择“确定”。Android 的安全目标之一是向用户有效地传达重要的安全信息,而使用让用户习惯性忽略的对话框则无法做到这一点。如果只向用户提供一次重要信息并且仅在重要时刻提供,用户更有可能慎重思考他们要同意的是什么。</p>
+<p>有些平台会选择完全不显示与应用功能有关的任何信息。这种方式会导致用户无法轻松了解和讨论应用功能。尽管无法使所有用户都是在充分了解相关信息的情况下做出决定,但 Android 权限模式可让众多用户轻松获取与应用相关的信息。例如,如果遇到意外的权限请求,经验更丰富的用户可能会询问有关应用功能的关键问题,并在 <a href="htts://play.google.com">Google Play</a> 等所有用户都可以看到的位置分享他们的疑问。</p>
+<table>
+ <tbody><tr>
+ <td><strong>应用安装时显示权限 - Google 地图</strong></td>
+ <td><strong>应用安装后显示权限 - Gmail</strong></td>
+ </tr>
+ <tr>
+ <td><img alt="应用安装时显示权限 - Google 地图" width="250" src="../images/image_install.png"/></td>
+ <td><img alt="应用安装后显示权限 - Gmail" width="250" src="../images/image_gmail_installed.png" id="figure1"/></td>
+ </tr>
+</tbody></table>
+<p class="img-caption">
+ <strong>图 1.</strong> 应用所需权限的显示方式</p>
+<h2 id="interprocess-communication">进程间通信</h2>
+<p>进程可以使用 UNIX 类型的任何传统机制进行通信。例如,文件系统、本地套接字或信号。不过,Linux 权限仍然适用。</p>
+<p>Android 还提供了一些新的 IPC 机制:</p>
+<ul>
+ <li>
+ <p><strong>Binder</strong>:一种基于功能的轻量型远程过程调用机制,在执行进程内调用和跨进程调用时能够实现出色的性能。Binder 是使用自定义 Linux 驱动程序实现的。请访问 <a href="https://developer
+.android.com/reference/android/os/Binder.html">https://developer.android.com/reference/android/os/Binder.html</a>。</p>
+ </li>
+ <li>
+ <p><strong>服务</strong>:服务(如上文所述)可提供能够使用 Binder 直接访问的接口。</p>
+ </li>
+ <li>
+ <p><strong>Intent</strong>:Intent 是简单的消息对象,表示想要执行某项操作的“意图”。例如,如果您的应用想要显示某个网页,则会创建一个 Intent 实例并将其传递给系统,以此来表示想要访问相应网址的“意图”。然后,系统会找到一些知道如何处理该 Intent 的其他代码(在本例中为浏览器),然后运行该代码。Intent 也可用于在系统范围内广播有趣的事件(例如通知)。请访问 <a href="https://developer.android.com/reference/android/content/Intent.html">https://developer.android.com/reference/android/content/Intent.html</a>。</p>
+ </li>
+ <li>
+ <p><strong>ContentProvider</strong>:ContentProvider 是一个数据存储库,用于访问设备上的数据;典型的示例就是用于访问用户通讯录的 ContentProvider。应用可以访问其他应用通过 ContentProvider 提供的数据,还可以定义自己的 ContentProviders 来提供自己的数据。请访问 <a href="https://developer.android.com/reference/android/content/ContentProvider.html">https://developer.android.com/reference/android/content/ContentProvider.html</a>。</p>
+ </li>
+</ul>
+<p>虽然可以使用其他机制(例如,网络套接字或全局可写文件)来实现 IPC,但上面这些都是建议使用的 Android IPC 框架。建议 Android 开发者遵循保护用户数据及避免引入安全漏洞方面的最佳做法。</p>
+<h2 id="cost-sensitive-apis">费用敏感 API</h2>
+<p>费用敏感 API 指可能会给用户或网络带来费用的任何功能。Android 平台已将费用敏感 API 放入由操作系统控制的受保护 API 列表中。如果有第三方应用请求使用费用敏感 API,必须要由用户授予明确的权限,它们才能使用这些 API。这些 API 包括:</p>
+<ul>
+ <li>电话</li>
+ <li>短信/彩信</li>
+ <li>网络/数据</li>
+ <li>应用内结算</li>
+ <li>NFC 访问</li>
+</ul>
+<p>Android 4.2 进一步增强了对使用短信的控制。如果有应用尝试向使用付费服务的短代码发送短信(可能会产生额外的费用),Android 将会通知用户。用户可以选择是允许还是阻止该应用发送短信。</p>
+<h2 id="sim-card-access">SIM 卡访问</h2>
+<p>第三方应用无法对 SIM 卡进行底层访问。操作系统负责处理与 SIM 卡之间的所有通信,包括访问 SIM 卡内存中的个人信息(通讯录)。应用也无法访问 AT 命令,因为这些命令完全由无线接口层 (RIL) 进行管理。RIL 不会为这些命令提供任何高层 API。</p>
+<h2 id="personal-information">个人信息</h2>
+<p>Android 已将能够用于访问用户数据的 API 放入受保护 API 组中。在正常使用期间,Android 设备还会收集用户安装的第三方应用内的用户数据。选择分享这些信息的应用可以使用 Android 操作系统权限检查功能保护来自第三方应用的数据。</p>
+<img alt="只能通过受保护的 API 访问敏感用户数据" src="../images/permissions_check.png" id="figure2"/>
+<p class="img-caption">
+ <strong>图 2.</strong> 只能通过受保护的 API 访问敏感的用户数据</p>
+<p>可能包含个人信息或个人身份信息(例如,通讯录和日历)的系统内容提供程序在创建时便已拥有明确确定的权限。这种精细的设计可让用户清楚地知道哪些类型的信息可能会提供给相应应用。在安装过程中,第三方应用可能会请求获得访问这些资源的权限。获得授权后,应用便可以进行安装,并且只要安装在设备上,便会一直有权访问请求的数据。</p>
+<p>默认情况下,收集个人信息的所有应用都会仅限特定应用访问这些数据。如果某个应用选择通过 IPC 将数据提供给其他应用,那么这个授予访问权限的应用便可以限制由操作系统强制执行的 IPC 机制的权限。</p>
+<h2 id="sensitive-data-input-devices">敏感数据输入设备</h2>
+<p>Android 设备经常会提供可让应用与周围环境进行互动的敏感数据输入设备(例如,摄像头、麦克风或 GPS)。对于要使用这些设备的第三方应用,必须先由用户通过使用 Android 操作系统权限向其明确提供使用权限。安装应用时,安装程序会以提供名称的方式请求用户授予使用相应传感器的权限。</p>
+<p>如果某个应用想要知道用户所在的位置,则需要获得获取用户位置信息的权限。安装应用时,安装程序会询问用户是否允许相应应用获取用户的位置信息。如果用户不希望任何应用获取其位置信息,可以随时运行“设置”应用,转到“位置和安全”,然后取消选中“使用无线网络”和“启用 GPS 卫星”。这将针对用户设备上的所有应用停用需要使用位置信息的服务。</p>
+<h2 id="device-metadata">设备元数据</h2>
+<p>Android 还会尽力限制访问本身并不属于敏感数据,但可能会间接透露用户特征、用户偏好以及用户使用设备的方式的数据。</p>
+<p>默认情况下,应用无权访问操作系统日志、浏览器历史记录、电话号码以及硬件/网络标识信息。如果应用在安装时请求获得访问此类信息的权限,安装程序会询问用户是否允许相应应用访问此类信息。如果用户没有授予该权限,系统将不会安装相应应用。</p>
+<h2 id="certificate-authorities">证书授权中心</h2>
+<p>Android 中收录了一组已安装的系统证书授权中心,这些授权中心在整个系统范围内均可信。在 Android 7.0 之前的版本中,设备制造商可以修改其设备上搭载的 CA 组。不过,运行 7.0 及更高版本的设备将具有一组统一的系统 CA,并且不再允许设备制造商对其进行修改。
+</p>
+<p>要作为新的公共 CA 添加到 Android 收录的 CA 组中,相应 CA 必须要完成 <a href="https://wiki.mozilla.org/CA:How_to_apply">Mozilla CA 收录流程</a>,然后提交一项针对 Android 的功能请求 (<a href="https://code.google.com/p/android/issues/entry">https://code.google.com/p/android/issues/entry</a>),以便请求添加到 <a href="https://android.googlesource.com/">Android 开放源代码项目</a> (AOSP) 收录的 Android CA 组中。
+</p>
+<p>此外还有一些设备专用 CA,这些 CA 不应被收录到 AOSP CA 核心组中,例如,安全访问运营商基础架构组件(例如,短信/彩信网关)时可能需要的运营商私有 CA。建议设备制造商将私有 CA 仅收录在需要信任这些 CA 的组件/应用中。如需更多详细信息,请参阅<a href="https://developer.android.com/preview/features/security-config.html">网络安全配置</a>。
+</p>
+<h2 id="application-signing">应用签名</h2>
+<p>通过<a href="/security/apksigning/index.html">代码签名</a>,开发者可以标识应用创作者并更新其应用,而无需创建复杂的接口和权限。在 Android 平台上运行的每个应用都必须要有开发者的签名。Google Play 或 Android 设备上的软件包安装程序会拒绝没有获得签名就尝试安装的应用。</p>
+<p>在 Google Play 上,应用签名可以将 Google 对开发者的信任和开发者对自己的应用的信任联系在一起。开发者知道自己的应用是以未经修改的形式提供给 Android 设备的,并且开发者可以对自己的应用的行为负责。</p>
+<p>在 Android 上,应用签名是将应用放入其应用沙盒的第一步。已签名的应用证书定义了哪个用户 ID 与哪个应用相关联;不同的应用要以不同的用户 ID 运行。应用签名可确保一个应用无法访问任何其他应用,通过明确定义的 IPC 进行访问时除外。</p>
+<p>当应用(APK 文件)安装到 Android 设备上时,软件包管理器会验证 APK 是否已经过适当签名(已使用 APK 中包含的证书签名)。如果该证书(或更准确地说,证书中的公钥)与为设备上的任何其他 APK 签名时使用的密钥一致,那么这个新 APK 可以选择在清单中指定它将与其他以类似方式签名的 APK 共用一个 UID。</p>
+<p>应用可以由第三方(原始设备制造商(OEM)、运营商、其他相关方)签名,也可以自行签名。Android 提供了使用自签名证书进行代码签名的功能,而开发者无需外部协助或许可即可生成自签名证书。应用并非必须由核心机构签名。Android 目前不对应用证书进行 CA 认证。</p>
+<p>应用还可以在“签名”保护级别声明安全权限,以便仅限使用同一个密钥签名的应用访问它们,同时维持单独的 UID 和应用沙盒。通过<a href="https://developer.android.com/guide/topics/manifest/manifest-element.html#uid">共用 UID 功能</a>,可以与共用的应用沙盒建立更紧密的联系,这是因为借助该功能,使用同一个开发者密钥签名的两个或更多应用可以在其清单中声明共用的 UID。</p>
+<h2 id="app-verification">应用验证</h2>
+<p>Android 4.2 及更高版本均支持应用验证。用户可以选择启用“验证应用”,并在安装应用之前由应用验证程序对其进行评估。如果用户尝试安装的应用可能有害,应用验证功能可以提醒用户;如果应用的危害性非常大,应用验证功能可以阻止安装。</p>
+<h2 id="digital-rights-management">数字版权管理</h2>
+<p>Android 平台提供了一个可扩展的 DRM 框架,以便应用根据与受版权保护的内容相关的许可限制条件来管理这些内容。DRM 框架支持多种 DRM 方案;设备具体支持哪些 DRM 方案由设备制造商决定。</p>
+<p><a href="https://developer.android.com/reference/android/drm/package-summary.html">Android DRM 框架</a>是在以下两个架构层中实现的(请参见下图):</p>
+<ul>
+ <li>
+ <p>DRM 框架 API:通过 Android 应用框架提供给应用,并通过适用于标准应用的 Dalvik VM 运行。</p>
+ </li>
+ <li>
+ <p>本机代码 DRM 管理器:用于实现 DRM 框架,并为 DRM 插件(代理)提供接口,以便处理各种 DRM 方案的版权管理和解密操作。</p>
+ </li>
+</ul>
+<p><img alt="Android 平台上的数字版权管理架构" src="/devices/images/ape_fwk_drm_2.png" id="figure3"/></p>
+<p class="img-caption">
+ <strong>图 3.</strong> Android 平台上的数字版权管理架构</p>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/security/overview/implement.html b/zh-cn/security/overview/implement.html
new file mode 100644
index 00000000..affefe3d
--- /dev/null
+++ b/zh-cn/security/overview/implement.html
@@ -0,0 +1,218 @@
+<html devsite><head>
+ <title>实现安全保护措施</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<p>Android 安全团队经常会收到用户发来的请求,希望我们提供关于如何防止 Android 设备上出现潜在安全问题的信息。我们偶尔也会对设备进行抽查,并让设备制造商和受影响的合作伙伴知晓潜在问题。</p>
+
+<p>在本页中,我们提供了根据自己的经验总结的安全方面的最佳做法(扩展了我们为开发者提供的<a href="http://developer.android.com/guide/practices/security.html">安全设计</a>文档),以及关于如何在设备上编译或安装系统级软件的详细信息。</p>
+
+<p>为了方便相关人员采用这些最佳做法,Android 安全团队会尽可能将相关测试整合到 <a href="/compatibility/cts">Android 兼容性测试套件</a> (CTS) 和 <a href="http://tools.android.com/tips/lint">Android Lint</a> 中。我们竭诚欢迎设备实现人员贡献可以帮助其他 Android 用户的相关测试(要查看与安全相关的测试,请访问 <code>root/cts/tests/tests/security/src/android/security/cts</code>)。</p>
+
+<h2 id="dev-process">开发流程</h2>
+<p>请在开发流程和环境中遵循以下最佳做法。</p>
+
+<h3 id="sec-review">审核源代码</h3>
+<p>进行源代码审核可以发现大量安全问题,包括本文档中指出的问题。Android 强烈建议采用手动和自动两种方式审核源代码。最佳做法:</p>
+
+<ul>
+<li>对所有使用 Android SDK 的应用代码运行 <a href="http://tools.android.com/tips/lint">Android Lint</a>,并更正发现的所有问题。</li>
+<li>应使用可以发现内存管理问题(例如,缓冲区溢出和差一错误)的自动工具分析本机代码。</li>
+<li>Android 编译系统支持很多 LLVM 清理程序,例如可用于进行自动源代码审核的 AddressSanitizer 和 UndefinedBehaviorSanitizer。</li>
+</ul>
+
+<h3 id="auto-test">使用自动测试功能</h3>
+<p>自动测试功能可以发现大量安全问题,包括下文中讨论的一些问题。最佳做法:</p>
+
+<ul>
+<li>定期更新 CTS 并运行安全性测试;运行最新版本的 CTS 来验证兼容性。</li>
+<li>在整个开发流程中定期运行 CTS,以便提早发现问题并缩短解决问题所需的时间。在自动编译流程(每天会编译多次)的连续集成期间,Android 会使用 CTS。
+</li>
+<li>设备制造商应使接口的安全性测试实现自动化,包括使用格式有误的输入内容进行测试(模糊测试)。</li>
+</ul>
+
+<h3 id="sign-sysimg">为系统映像签名</h3>
+<p>系统映像的签名对于判断设备的完整性至关重要。最佳做法:</p>
+
+<ul>
+<li>不得使用众所周知的密钥为设备签名。</li>
+<li>应按照与处理敏感密钥方面的业界标准做法一致的方式管理用于为设备签名的密钥,包括使用能够提供有限、可审核访问权限的硬件安全模块 (HSM)。</li>
+</ul>
+
+<h3 id="sign-apk">为应用 (APK) 签名</h3>
+<p>应用签名在保障设备安全方面发挥着重要作用,可用于进行权限检查以及软件更新。在选择为应用签名使用的密钥时,务必要考虑应用是仅在一台设备上使用,还是供多台设备共用。最佳做法:</p>
+
+<ul>
+<li>不得使用众所周知的密钥为应用签名。</li>
+<li>应按照与处理敏感密钥方面的业界标准做法一致的方式管理用于为应用签名的密钥,包括使用能够提供有限、可审核访问权限的 HSM。</li>
+<li>不应使用平台密钥为应用签名。</li>
+<li>不应使用不同的密钥为软件包名称相同的应用签名。在针对不同的设备开发应用时,经常会出现这种情况,尤其是在使用平台密钥时。如果应用独立于设备,则在多台设备之间使用相同的密钥。如果应用是特定设备专用的,则按设备和密钥创建独一无二的软件包名称。</li>
+</ul>
+
+<h3 id="apps-pub">发布应用</h3>
+<p>在 Google Play 中,设备制造商能够直接更新应用,而无需进行完整的系统更新。这不仅有助于加快应对安全问题和推出新功能的速度,还有助于确保您的应用具有独一无二的软件包名称。最佳做法:</p>
+
+<ul>
+<li>将您的应用上传到 Google Play,以便能够进行自动更新,而无需进行完整的无线下载 (OTA) 更新。已上传但并未发布的应用无法供用户直接下载,但仍可进行更新。之前安装过相应应用的用户可以重新安装它和/或在其他设备上安装它。</li>
+<li>创建与您的公司明确相关的应用包名称,例如在名称中使用公司商标。</li>
+<li>设备制造商发布的应用应上传到 Google Play 商店,以免第三方用户冒用软件包名称。如果某个设备制造商在设备上安装了某个应用,但没有在 Play 商店中发布该应用,其他开发者便可以上传同样的应用,使用同样的软件包名称,并更改该应用的元数据。当用户获得该应用后,这些不相关的元数据可能会带来困扰。</li>
+</ul>
+
+<h3 id="incident-response">应对安全事件</h3>
+<p>外部各方必须能够就设备特有的安全问题与设备制造商联系。我们建议创建一个公开的电子邮件地址来管理安全事件。最佳做法:</p>
+
+<ul>
+<li>创建 security@your-company.com 或类似地址,并将其公开。<em></em></li>
+<li>如果您发现了影响 Android 操作系统或多个设备制造商提供的 Android 设备的安全问题,则应填写<a href="https://code.google.com/p/android/issues/entry?template=Security%20bug%20report">安全错误报告</a>与 Android 安全团队联系。</li>
+</ul>
+
+<h2 id="prod-implement">产品实现</h2>
+<p>在实现产品时,请遵循以下最佳做法。</p>
+
+<h3 id="root-processes">隔离 Root 进程</h3>
+<p>Root 进程是最常受到提权攻击的目标,因此减少 Root 进程数量有助于降低提权风险。CTS 中包含一个能够列出 Root 进程的信息测试。最佳做法:</p>
+
+<ul>
+<li>应尽可能减少设备上作为 Root 代码运行的必要代码的数量。尽可能使用常规 Android 进程而非 Root 进程。ICS Galaxy Nexus 只有 6 个 Root 进程:vold、inetd、zygote、tf_daemon、ueventd 和 init。如果某个进程必须要在设备上作为 Root 进程运行,请将该进程记录在 AOSP 功能请求中,以便对其进行公开审核。</li>
+<li>应尽可能将 Root 代码与不可信数据隔离开来,并尽可能通过 IPC 访问 Root 代码。例如,将 Root 功能缩减成可通过 Binder 访问的小型服务,并将这个具有签名权限的服务提供给网络流量处理权限很小或没有此类权限的应用。</li>
+<li>Root 进程不得通过网络套接字进行监听。</li>
+<li>Root 进程不得为应用提供通用运行时(例如 Java VM)。</li>
+</ul>
+
+<h3 id="sys-apps">隔离系统应用</h3>
+<p>一般而言,预先安装的应用不应使用共用系统 UID 运行。不过,如果某个应用必须使用共用系统 UID 或其他特权服务(例如,电话服务),那么该应用不应导出由用户安装的第三方应用可访问的任何服务、广播接收器或内容提供程序。最佳做法:</p>
+
+<ul>
+<li>应尽可能减少设备上作为系统代码运行的必要代码的数量。尽可能通过 Android 进程自身的 UID 使用此类进程,而非重复使用系统 UID。</li>
+<li>应尽可能将系统代码与不可信数据隔离开来,并且系统代码应尽可能仅向其他可信进程提供 IPC。</li>
+<li>系统进程不得通过网络套接字进行监听。</li>
+</ul>
+
+<h3 id="process-isolate">隔离进程</h3>
+<p>Android 应用沙盒要求应用与系统中的其他进程(包括 Root 进程和调试程序)隔离开来。除非应用或用户特意启用了调试功能,否则任何应用都不应违反这一要求。最佳做法:</p>
+
+<ul>
+<li>Root 进程不得访问各个应用数据文件夹内的数据,使用已记录的 Android 调试方法时除外。</li>
+<li>Root 进程不得访问应用内存,使用已记录的 Android 调试方法时除外。</li>
+<li>设备上不得有任何会访问其他应用/进程的数据或内存的应用。</li>
+</ul>
+
+<h3 id="suid-files">保护 SUID 文件</h3>
+<p>新的 SetUID 程序应该不能被不可信程序访问。SetUID 程序过去经常是可被用来获取 Root 权限的漏洞位置,因此务必要最大限度地降低 SetUID 程序对不可信应用的可用性。最佳做法:</p>
+
+<ul>
+<li>SUID 进程不得提供可被用来规避 Android 安全模型的 shell 或后门程序。</li>
+<li>必须确保任何用户都无法对 SUID 程序执行写入操作。</li>
+<li>SUID 程序不应为全局可读或全局可执行程序。创建一个组,限定只有该组的成员能够访问相应的 SUID 二进制文件,并将应该能够执行相应 SUID 程序的所有应用放入该组中。
+</li>
+<li>SUID 程序经常会被用户用作获取设备 Root 权限的来源。为了降低这种风险,应确保 shell 用户无法执行 SUID 程序。</li>
+</ul>
+
+<p>CTS 验证程序包括一个可列出 SUID 文件的信息测试;根据 CTS 测试,有些 SetUID 文件是不允许使用的。</p>
+
+<h3 id="listening-sockets">保护监听套接字</h3>
+<p>当设备通过任何端口或任何接口进行监听时,CTS 测试都会失败。如果测试失败,Android 会验证是否遵循了以下最佳做法:</p>
+
+<ul>
+<li>设备上不应存在监听端口。</li>
+<li>必须能够在不使用 OTA 的情况下停用监听端口。停用这些端口的方法可以是更改服务器或用户设备配置。</li>
+<li>Root 进程不得通过任何端口进行监听。</li>
+<li>归系统 UID 所有的进程不得通过任何端口进行监听。</li>
+<li>对于使用套接字的本地 IPC,应用必须使用只有某个组可以访问的 UNIX 域套接字。为 IPC 创建文件描述符,并允许特定 UNIX 组对其执行 +RW 操作。所有客户端应用都必须在该 UNIX 组内。</li>
+<li>有些拥有多个处理器的设备(例如,无线装置/调制解调器从应用处理器中分离出来)会借助网络套接字在处理器之间进行通信。在这种情况下,处理器间通信所用的网络套接字必须使用单独的网络接口,以防止设备上未经授权的应用访问(例如,使用 iptables 防止设备上的其他应用访问)。</li>
+<li>负责处理监听端口的守护进程必须能够防范格式有误的数据。Google 可能会使用未经授权的客户端针对端口进行模糊测试,也可能会在可能的情况下使用已获授权的客户端针对端口进行模糊测试。所有崩溃事件都将记录为具有适当严重程度的错误。</li>
+</ul>
+
+<h3 id="logging">记录数据</h3>
+<p>记录数据的做法会增加数据遭泄露的风险并降低系统性能。之前曾发生过多起因 Android 设备上默认安装的应用记录敏感用户数据而导致的公共安全事件。最佳做法:</p>
+
+<ul>
+<li>应用或系统服务不应记录第三方应用提供的可能包含敏感信息的数据。</li>
+<li>应用不得在正常操作过程中记录任何个人身份信息 (PII)。</li>
+</ul>
+
+<p>CTS 中包含一些能够检查系统日志中是否存在可能敏感的信息的测试。</p>
+
+<h3 id="directories">限制对目录的访问</h3>
+<p>全局可写目录可能会引入安全漏洞,并且可能会使应用能够重命名可信文件、替换文件或进行基于符号链接的攻击(攻击者可能会利用指向某个文件的符号链接诱使可信程序执行不应执行的操作)。可写目录还可能会导致卸载应用后无法适当清除与相应应用关联的所有文件。</p>
+
+<p>作为最佳做法,系统用户或 Root 用户创建的目录不应为全局可写目录。CTS 测试能够测试已知目录,从而有助于强制执行这种最佳做法。</p>
+
+<h3 id="config-files">保护配置文件</h3>
+<p>许多驱动程序和服务都依赖于存储在 <code>/system/etc</code>、<code>/data</code> 等目录中的配置文件和数据文件。如果这些文件由某个特权进程处理且为全局可写文件,应用可能能够通过在全局可写文件中创建恶意内容来利用该特权进程中的漏洞。最佳做法:</p>
+
+<ul>
+<li>特权进程使用的配置文件不应为全局可读文件。</li>
+<li>特权进程使用的配置文件不得为全局可写文件。</li>
+</ul>
+
+<h3 id="native-code">存储本机代码库</h3>
+<p>特权设备制造商进程使用的所有代码都必须位于 <code>/vendor</code> 或 <code>/system</code> 中;这些文件系统会在设备启动时以只读模式装载。作为最佳做法,系统使用的库或手机上安装的其他权限非常高的应用使用的库也应位于这些文件系统中。这有助于防止出现可让攻击者用来控制特权进程执行的代码的安全漏洞。</p>
+
+<h3 id="device-drivers">限制对设备驱动程序的访问</h3>
+<p>应该只有可信代码能够直接访问驱动程序。首选架构要尽可能提供一个单一用途守护进程来代理向驱动程序发出的调用,并仅限该守护进程访问驱动程序。作为最佳做法,驱动程序设备节点不应为全局可读或全局可写节点。CTS 测试能够检查是否存在全局可读或全局可写驱动程序的已知实例,从而有助于强制执行这种最佳做法。
+</p>
+
+<h3 id="adb">停用 ADB</h3>
+<p>Android 调试桥 (ADB) 是一款非常实用的开发和调试工具,但它只适合在受控的安全环境中使用,不应针对一般使用情况启用该工具。最佳做法:</p>
+
+<ul>
+<li>ADB 必须默认处于停用状态。</li>
+<li>ADB 必须要求用户先将其开启,然后再接受连接。</li>
+</ul>
+
+<h3 id="unlockable-bootloaders">解锁引导加载程序</h3>
+<p>许多 Android 设备都支持解锁引导加载程序。解锁引导加载程序后,设备所有者将能够修改系统分区和/或安装自定义操作系统。常见用例包括在设备上安装第三方 ROM 以及进行系统级开发。例如,Google Nexus 设备所有者可以运行 <code>fastboot oem unlock</code> 来启动解锁过程,该进程会向用户显示以下消息:</p>
+
+<div style="background-color: #B2EBF2; padding: 10px;margin-right:25px">
+
+<p><strong>Unlock bootloader?</strong></p>
+
+<p>If you unlock the bootloader, you will be able to install custom operating system software on this phone.</p>
+
+<p>A custom OS is not subject to the same testing as the original OS, and can cause your phone and installed applications to stop working properly.</p>
+
+<p>To prevent unauthorized access to your personal data, unlocking the bootloader will also delete all personal data from your phone (a "factory data reset").</p>
+
+<p>Press the Volume Up/Down buttons to select Yes or No. Then press the Power button to continue.</p>
+
+<p><strong>Yes</strong>: Unlock bootloader (may void warranty)</p>
+
+<p><strong>No</strong>: Do not unlock bootloader and restart phone.</p>
+</div>
+
+<br />
+<p>作为最佳做法,在解锁之前,可解锁的 Android 设备必须先安全地清除所有用户数据。如果未能适当删除所有数据便进行解锁,能够接触到这些设备的攻击者便可以在未经授权的情况下获取机密的 Android 用户数据。为了防止用户数据泄露,支持解锁的设备必须正确实现解锁(我们已见到过设备制造商以不当方式实现解锁的无数实例)。正确实现的解锁过程具有以下特性:</p>
+
+<ul>
+<li>在用户确认解锁命令后,设备必须立即开始清除数据。在安全删完数据之前,不得设置 <code>unlocked</code> 标记。</li>
+<li>如果无法安全删完数据,设备必须保持锁定状态。</li>
+<li>如果底层块设备支持 <code>ioctl(BLKSECDISCARD)</code> 或等同命令,则应使用此类命令。对于 eMMC 设备,这意味着使用 Secure Erase 或 Secure Trim 命令。对于 eMMC 4.5 及更高版本,这意味着先使用常规的 Erase 或 Trim 命令,然后再执行 Sanitize 操作。</li>
+<li>如果底层块设备不支持 <code>BLKSECDISCARD</code>,则必须改用 <code>ioctl(BLKDISCARD)</code>。在 eMMC 设备上,这是一个常规的 Trim 操作。</li>
+<li>如果 <code>BLKDISCARD</code> 不受支持,可以将块设备中的数据重写为全零。</li>
+<li>最终用户必须能够要求在刷写分区之前先清除用户数据。例如,在 Nexus 设备上,这可以通过 <code>fastboot oem lock</code> 命令来实现。</li>
+<li>无论设备处于解锁和/或重新锁定状态,都可以通过 eFuses 或类似机制进行记录。</li>
+</ul>
+
+<p>这些要求旨在确保在完成解锁操作时所有数据都已被销毁。未能实现这些保护措施会被视为存在中级安全漏洞。</p>
+
+<p>将设备解锁后,可以使用 <code>fastboot oem lock</code> 命令重新将其锁定。使用新的自定义操作系统时,锁定引导加载程序能够为用户数据提供的保护与原始设备制造商操作系统提供的保护相同(例如,如果设备被再次解锁,用户数据将会被清除)。</p>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/security/overview/kernel-security.html b/zh-cn/security/overview/kernel-security.html
new file mode 100644
index 00000000..7ad6ddf9
--- /dev/null
+++ b/zh-cn/security/overview/kernel-security.html
@@ -0,0 +1,86 @@
+<html devsite><head>
+ <title>系统和内核安全</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<p>在操作系统级别,Android 平台不仅提供 Linux 内核的安全功能,而且还提供安全的进程间通信 (IPC) 机制,以便在不同进程中运行的应用之间安全通信。操作系统级别的这些安全功能旨在确保即使是本机代码也要受应用沙盒的限制。无论相应代码是自带应用行为导致的结果,还是利用应用漏洞导致的结果,系统都能防止恶意应用危害其他应用、Android 系统或设备本身。要了解您可以采取哪些措施来增强设备上的内核,请参阅<a href="/devices/tech/config/kernel.html">内核配置</a>。要了解必需的设置,请参阅 <a href="/compatibility/cdd.html">Android 兼容性定义文档 (CDD)</a>。</p>
+<h2 id="linux-security">Linux 安全</h2>
+<p>Android 平台的基础是 Linux 内核。Linux 内核多年来一直应用得非常广泛,并且用在了数百万种安全敏感型环境中。在历经数以千计的开发者不断研究、攻击和修复之后,Linux 已成为许多公司和安全专业人士信任的一款既稳定又安全的内核。</p>
+<p>作为移动计算环境的基础,Linux 内核为 Android 提供了一些关键的安全功能,其中包括:</p>
+<ul>
+ <li>基于用户的权限模式</li>
+ <li>进程隔离</li>
+ <li>用于实现安全 IPC 的可扩展机制</li>
+ <li>能够移除内核中不必要的和可能不安全的部分</li>
+</ul>
+<p>作为多用户操作系统,Linux 内核的一个基本安全目标是将用户资源彼此隔离开来。Linux 的安全理念是防范用户资源之间相互侵扰。因此,Linux 可以:</p>
+<ul>
+ <li>防止用户 A 读取用户 B 的文件</li>
+ <li>确保用户 A 不会占用用户 B 的内存</li>
+ <li>确保用户 A 不会占用用户 B 的 CPU 资源</li>
+ <li>确保用户 A 不会占用用户 B 的设备(例如,电话、GPS、蓝牙)</li>
+</ul>
+<h2 id="the-application-sandbox">应用沙盒</h2>
+<p>Android 平台利用基于用户的 Linux 保护机制来识别和隔离应用资源。Android 系统会为每个 Android 应用分配一个独一无二的用户 ID (UID),并使它们以这个用户身份在单独的进程中运行。这种方法与其他操作系统(包括传统的 Linux 配置)采用的方法不同。在其他操作系统中,多个应用会以相同的用户权限运行。</p>
+<p>这样就设置了一个内核级应用沙盒。内核会在进程级别通过标准的 Linux 内容(例如,分配给应用的用户 ID 和组 ID)强制执行应用和系统之间的安全功能。默认情况下,应用不能彼此交互,而且应用对操作系统的访问权限会受到限制。如果应用 A(一个单独的应用)尝试执行恶意操作,例如在没有权限的情况下读取应用 B 的数据或拨打电话,操作系统会阻止此类操作,因为应用 A 没有适当的用户权限。沙盒非常简单,可审核,并且基于已有数十年历史的 UNIX 风格的进程用户隔离和文件权限机制。</p>
+<p>由于应用沙盒位于内核中,因此该安全模型的保护范围扩展到了本机代码和操作系统应用。位于内核上方的所有软件(例如,操作系统库、应用框架、应用运行时和所有应用)都会在应用沙盒中运行。在某些平台上,为了强制执行安全功能,会限制开发者只能使用特定的开发框架、API 组或语言。在 Android 上,并没有限制必须如何编写应用才能强制执行安全功能;在这一方面,本机代码与直译码一样安全。</p>
+<p>在某些操作系统中,一个应用中的内存损坏错误可能会导致位于同一内存空间中的其他应用出现损坏,进而导致设备的安全性完全遭到破坏。由于所有应用及其资源都在操作系统级别的沙盒内,因此,如果出现内存损坏错误,将只有在相应应用的环境中才能发生任意执行代码的行为,而且只能是以操作系统确立的权限执行代码。</p>
+<p>与所有安全功能一样,应用沙盒并不是坚不可摧的。不过,要在经过适当配置的设备上攻破应用沙盒这道防线,必须要先攻破 Linux 内核的安全功能。</p>
+<h2 id="system-partition-and-safe-mode">系统分区和安全模式</h2>
+<p>系统分区包含 Android 的内核,以及操作系统库、应用运行时、应用框架和应用。该分区设为了只读分区。当用户将设备启动到安全模式时,第三方应用可由设备所有者手动启动,但不会默认启动。</p>
+<h2 id="filesystem-permissions">文件系统权限</h2>
+<p>在 UNIX 风格的环境中,文件系统权限可确保一个用户不能更改或读取另一个用户的文件。在 Android 中,每个应用都以自己的用户身份运行。除非开发者明确地与其他应用共享文件,否则一个应用不能读取或更改另一个应用创建的文件。</p>
+<h2 id="se-linux">安全增强型 Linux</h2>
+<p>Android 使用安全增强型 Linux (SELinux) 来应用访问控制策略并对进程建立强制访问控制 (mac)。如需详细信息,请参阅 <a href="/security/selinux/index.html">Android 中的安全增强型 Linux</a>。</p>
+<h2 id="verified-boot">验证启动</h2>
+<p>Android 6.0 及更高版本支持验证启动功能和 device-mapper-verity。验证启动功能旨在保证设备软件(从硬件信任根直到系统分区)的完整性。在启动过程中,无论是在每个阶段,都会在进入下一个阶段之前先验证下一个阶段的完整性和真实性。
+</p>
+<p>Android 7.0 及更高版本支持严格强制执行的验证启动,这意味着遭到入侵的设备将无法启动。
+</p>
+<p>如需更多详细信息,请参阅<a href="/security/verifiedboot/index.html">验证启动</a>。
+</p>
+
+<h2 id="crypto">加密</h2>
+<p>Android 提供了一套加密 API 供应用使用,其中包括标准和常用加密基元(例如,AES、RSA、DSA 和 SHA)的实现 API。此外,Android 还提供了适用于更高级别协议(例如,SSL 和 HTTPS)的 API。</p>
+<p>Android 4.0 中引入了 <a href="http://developer.android.com/reference/android/security/KeyChain.html">KeyChain</a> 类,以便应用使用系统凭据存储空间来存储私钥和证书链。</p>
+<h2 id="rooting-devices">获取设备的 Root 权限</h2>
+<p>默认情况下,在 Android 上,只有内核和一小部分核心应用能够以 Root 权限运行。Android 不会阻止具有 Root 权限的用户或应用修改操作系统、内核或任何其他应用。一般来说,Root 对所有应用和所有应用数据拥有完整访问权限。如果用户在 Android 设备上更改权限来向应用授予 Root 访问权限,则会使遭受恶意应用攻击以及遭受潜在应用缺陷侵扰的安全风险增加。</p>
+<p>能够修改自己的 Android 设备对于使用 Android 平台的开发者来说非常重要。在许多 Android 设备上,用户都可以解锁引导加载程序,以便安装替代操作系统。这些替代操作系统可能会允许所有者获得 Root 访问权限,以便他们调试应用和系统组件,或者访问 Android API 未提供给应用的功能。</p>
+<p>在有些设备上,能够亲手控制设备并拥有 USB 数据线的用户可以安装能够向其提供 Root 权限的新操作系统。为了保护所有现有用户数据免遭入侵,引导加载程序解锁机制要求引导加载程序在解锁期间清空所有现有用户数据。利用内核错误或安全漏洞获得 Root 访问权限后,可以绕过这种保护机制。</p>
+<p>使用存储在设备上的密钥对数据进行加密的做法并不能防止 Root 用户访问应用数据。应用可以使用存储在设备之外的密钥(例如,存储在服务器上的密钥,或用户密码)进行加密,从而添加一道数据保护屏障。如果不提供密钥的话,这种方法可以提供临时保护,但在某些时候,必须要先将密钥提供给应用,然后 Root 用户才能访问相应应用。</p>
+<p>一种更强大的防止 Root 用户获取数据的方式是使用硬件解决方案。原始设备制造商 (OEM) 可以选择实现仅允许访问特定类型的内容的硬件解决方案,例如,适用于视频播放的 DRM 或适用于 Google 电子钱包的 NFC 相关可信存储空间。</p>
+<p>如果设备丢失或被盗,Android 设备上的全文件系统加密功能可以使用设备密码来保护加密密钥,这样一来,修改启动加载程序或操作系统的做法将不足以在没有用户设备密码的情况下访问用户数据。</p>
+<h2 id="user-security">用户安全功能</h2>
+<h3 id="filesystem-encryption">文件系统加密</h3>
+<p>Android 3.0 及更高版本提供全文件系统加密功能,因此所有用户数据都可以在内核中进行加密。</p>
+<p>Android 5.0 及更高版本支持<a href="/security/encryption/full-disk.html">全盘加密</a>。全盘加密功能旨在使用单个密钥(由用户的设备密码加以保护)来保护设备的整个用户数据分区。在启动时,用户必须先提供其凭据,然后才能访问磁盘的任何部分。
+</p>
+<p>Android 7.0 及更高版本支持<a href="/security/encryption/file-based.html">文件级加密</a>。采用文件级加密时,可以使用不同的密钥对不同的文件进行加密,并且可以对这些文件进行单独解密。
+</p>
+
+<p>如需关于实现文件系统加密的更多详细信息,请参阅<a href="/security/encryption/index.html">加密</a>部分。</p>
+<h3 id="password-protection">密码保护</h3>
+<p>Android 可以配置为在提供对设备的访问权限之前先验证用户提供的密码。除了防止未经授权使用设备外,该密码还可以保护用于进行全文件系统加密的加密密钥。</p>
+<p>设备管理员可以要求使用密码和/或密码复杂度规则。</p>
+<h2 id="device-administration">设备管理</h2>
+<p>Android 2.2 及更高版本提供 Android Device Administration API,该 API 在系统级别提供设备管理功能。例如,内置的 Android 电子邮件应用可以使用该 API 来改善 Exchange 支持。通过电子邮件应用,Exchange 管理员可以跨设备强制执行密码政策(其中密码包括字母数字密码或数字 PIN 码)。管理员还可以远程清除(即恢复出厂默认设置)丢失或被盗手机上的数据。</p>
+<p>除了在 Android 系统自带的应用中使用外,该 API 还可供提供设备管理解决方案的第三方使用。如需关于该 API 的详细信息,请参阅<a href="https://developer.android.com/guide/topics/admin/device-admin.html">设备管理</a>。</p>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/security/overview/updates-resources.html b/zh-cn/security/overview/updates-resources.html
new file mode 100644
index 00000000..818cba81
--- /dev/null
+++ b/zh-cn/security/overview/updates-resources.html
@@ -0,0 +1,183 @@
+<html devsite><head>
+ <title>安全更新和资源</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<h2 id="android_security_bug_lifecycle">Android 安全错误生命周期</h2>
+
+<p>Android 安全团队负责管理在 Android 平台中发现的以及在 Android 设备绑定的众多核心 Android 应用中发现的安全漏洞。</p>
+
+<p>Android 安全团队会通过内部研究找出安全漏洞,并会对第三方报告的错误采取应对措施。外部错误的来源包括:通过 <a href="https://issuetracker.google.com/issues/new?component=190951">Android 安全问题模板</a>报告的问题、已发布和预发布的学术研究、上游开放源代码项目维护人员、来自设备制造商合作伙伴的通知,以及博客或社交媒体中发布的已公开披露的问题。</p>
+
+<h2 id="report-issues">报告安全问题</h2>
+
+<p>任何开发者、Android 用户或安全研究人员都可以通过 <a href="https://issuetracker.google.com/issues/new?component=190951">Android 安全问题模板</a>将潜在安全问题通知给 Android 安全团队。</p>
+
+<p>外部人员无法查看标记为安全问题的错误,不过在问题经过评估或得到解决后,这些错误最终可能会对外公开。如果您打算提交旨在解决安全问题的补丁程序或兼容性测试套件 (CTS) 测试,请将其附加到错误报告中,然后等待我们的回复,得到我们的回复后再将相应代码上传到 AOSP。</p>
+
+<h2 id="triaging_bugs">为错误分类</h2>
+
+<p>在处理安全漏洞时,第一项任务是确定错误的严重程度以及受影响的 Android 组件。严重程度决定问题的优先级,受影响的组件决定由谁来修复错误、谁将会收到通知以及如何将修复程序提供给用户。</p>
+
+<h3 id="process_types">进程类型</h3>
+<p>下表涵盖了各类进程的定义。进程类型可以按应用或进程的类型来定义,也可以按进程的运行区域来定义。下表按照权限从小到大的顺序排列。</p>
+<table>
+ <tbody><tr>
+ <th>进程类型</th>
+ <th>类型定义</th>
+ </tr>
+ <tr>
+ <td>受限进程</td>
+ <td>在高度受限的 SELinux 域中运行的进程。<br />或<br />受限程度远远超过普通应用的进程。</td>
+ </tr>
+ <tr>
+ <td>非特权进程</td>
+ <td>第三方应用或进程。<br />或<br />在 SELinux <code>untrusted_app</code> 域中运行的应用或进程。</td>
+ </tr>
+ <tr>
+ <td>特权进程</td>
+ <td>功能受 SELinux <code>untrusted_app</code> 域限制的应用或进程。<br />或<br />拥有第三方应用无法获得的重要权限的应用或进程。</td>
+ </tr>
+ <tr>
+ <td>内核</td>
+ <td>属于内核一部分的功能,或在与内核相同的 CPU 环境中运行的功能(例如,设备驱动程序)。</td>
+ </tr>
+ <tr>
+ <td>可信执行环境 (TEE)</td>
+ <td>一种受保护的组件,甚至可以抵御恶意内核的攻击。</td>
+ </tr>
+</tbody></table>
+
+<h3 id="severity">严重程度</h3>
+
+<p>错误的严重程度通常能够反映错误被成功利用后可能造成的潜在危害。可以按照以下条件判断严重程度:</p>
+<table>
+ <tbody><tr>
+ <th>分级</th>
+ <th>被成功利用的后果</th>
+ </tr>
+ <tr>
+ <td><strong>严重</strong></td>
+ <td>
+ <ul>
+ <li>攻击者可以在特权进程中远程执行任意代码</li><li>设备永久损坏(只有重新刷写整个操作系统才能修复设备)</li><li>攻击者可以在未经授权的情况下访问受 TEE 保护的数据</li><li>设备遭到远程发起的永久性拒绝服务攻击(设备无法再使用:完全永久性损坏,或需要重新刷写整个操作系统)</li></ul>
+ </td>
+ </tr>
+ <tr>
+ <td><strong>高</strong></td>
+ <td>
+ <ul>
+ <li>攻击者可以在非特权进程中远程执行任意代码</li><li>攻击者可以远程访问受保护的数据(通常仅限本地安装的应用在请求并获得权限后才可以访问的数据,或仅限特权进程访问的数据)</li><li>攻击者可以远程绕过用户互动要求(攻击者能够访问通常需要由用户发起的功能或需要获得用户许可后方可使用的功能)</li><li>攻击者可以从本地在特权进程中执行任意代码</li><li>设备遭到从本地发起的永久性拒绝服务攻击(设备无法再使用:完全永久性损坏,或需要重新刷写整个操作系统)</li><li>攻击者可以全面深入地绕过内核级防护功能,或利用缓解技术存在的漏洞</li><li>设备遭到远程发起的设备暂时性拒绝服务攻击(远程挂起或重新启动设备)</li><li>攻击者可以从本地绕过针对任何开发者或针对任何安全设置修改的用户互动要求</li><li>攻击者可以全面绕过将应用数据与其他应用隔离开来的操作系统保护功能</li><li>攻击者可以绕过锁定屏幕</li></ul>
+ </td>
+ </tr>
+ <tr>
+ <td><strong>中</strong></td>
+ <td>
+ <ul>
+ <li>攻击者可以在受限进程中远程执行任意代码</li><li>攻击者可以从本地绕过用户互动要求(攻击者能够访问通常需要由用户发起的功能或需要获得用户许可后方可使用的功能)</li><li>设备遭到从本地发起的暂时性拒绝服务攻击(设备需要恢复出厂设置)</li><li>攻击者可以全面深入地绕过用户级防护功能,或在特权进程中利用缓解技术存在的漏洞</li><li>攻击者可以远程访问不受保护的数据(通常可供本地安装的所有应用访问的数据)</li><li>攻击者可以绕过设备保护功能/恢复出厂设置保护功能</li></ul>
+ </td>
+ </tr>
+ <tr>
+ <td><strong>低</strong></td>
+ <td>
+ <ul>
+ <li>攻击者可以全面深入地绕过用户级防护功能,或在非特权进程中利用缓解技术存在的漏洞</li><li>设备遭到从本地发起的暂时性拒绝服务攻击(可通过以下方法解决:使设备启动到安全模式并移除存在问题的应用;或者如果设备不支持安全模式,则将设备恢复出厂设置)</li></ul>
+ </td>
+ </tr>
+</tbody></table>
+
+<h4 id="local_vs_remote">本地和远程</h4>
+
+<p>远程攻击向量指攻击者可以在不安装应用或不实际接触设备的情况下利用的错误。这包括因浏览网页、阅读电子邮件、接收短信或连接到恶意网络而触发的错误。为了进行严重程度分级,Android 安全团队还会将“邻近”攻击向量视为远程攻击向量。这包括只能被实际接近目标设备的攻击者利用的错误,例如需要发送格式错误的 WLAN 数据包或蓝牙数据包的错误。</p>
+
+<p>本地攻击需要受害者安装应用才能得逞。为了进行严重程度分级,Android 安全团队还会将现实攻击向量视为本地攻击。这包括只能被实际接触到设备的攻击者利用的错误,例如锁定屏幕中的错误,或需要插入 USB 数据线的错误。Android 安全团队还会将基于 NFC 的攻击视为本地攻击。</p>
+
+<h3 id="rating_modifiers">分级调节方式</h3>
+<p>虽然通常可以轻松确定安全漏洞的严重程度,但分级可能会因具体情况而异。</p>
+<table>
+ <tbody><tr>
+ <th>原因</th>
+ <th>影响</th>
+ </tr>
+ <tr>
+ <td>需要作为特权进程运行才能执行攻击</td>
+ <td>严重程度降低 1 级</td>
+ </tr>
+ <tr>
+ <td>漏洞特有的详细信息会限制相应问题造成的影响</td>
+ <td>严重程度降低 1 级</td>
+ </tr>
+</tbody></table>
+
+<h3 id="affected_component">受影响的组件</h3>
+
+<p>开发团队负责根据错误所在的组件来修复错误。该组件可能是 Android 平台的核心组件、原始设备制造商 (OEM) 提供的内核驱动程序,或 Nexus 设备上某个预先加载的应用。</p>
+
+<p>AOSP 代码中的错误由 Android 工程团队负责修复。严重程度为“低”的错误、特定组件内的错误或者已经是众所周知的错误可以直接在已公开发布的 AOSP master 分支中进行修复;除此之外的其他错误都会先在我们的内部代码库中进行修复。</p>
+
+<p>组件也是会影响用户如何获取更新的一种因素。如果是框架或内核存在的错误,用户将需要使用无线下载 (OTA) 的固件更新,每个原始设备制造商 (OEM) 都需要推送此类更新。如果是 Google Play 中发布的应用或库(例如,Lollipop 及更高版本中的 Gmail、Google Play 服务、WebView)存在的错误,可以通过 Google Play 向 Android 用户发送更新。</p>
+
+<h2 id="notifying_partners">通知合作伙伴</h2>
+
+<p>当 AOSP 内严重程度为“中”或更高的安全漏洞得到修复后,我们会将问题详细信息通知 Android 合作伙伴,并至少提供针对 3 种最新 Android 版本的补丁程序。Android 安全团队目前提供针对 Android 4.4 版 (KitKat)、5.0 版 (Lollipop)、5.1 版 (Lollipop MR1) 以及 6.0 版 (Marshmallow) 的补丁程序。具体会针对哪些最新版本提供补丁程序会随着每个新 Android 版本的发布而发生变化。</p>
+
+<h2 id="releasing_code_to_aosp">向 AOSP 发布代码</h2>
+
+<p>如果安全错误发生在 AOSP 组件内,我们会先向用户发布 OTA 更新,然后再将修复程序推送到 AOSP。如果问题的严重程度为“低”,我们可能会先直接将修复程序提交到 AOSP master 分支,然后再发布修复程序。</p>
+
+<h2 id="android_updates">接收 Android 更新</h2>
+
+<p>对 Android 系统的更新一般会通过 OTA 更新文件包提供给设备。这些更新可能来自生产相应设备的原始设备制造商 (OEM),也可能来自向相应设备提供服务的运营商。Google Nexus 设备更新由 Google Nexus 团队在相应更新通过运营商技术验收 (TA) 测试程序之后予以提供。Google 还会发布可以旁加载到设备的 <a href="https://developers.google.com/android/nexus/images">Nexus 出厂映像</a>。</p>
+
+<h2 id="updating_google_services">更新 Google 服务</h2>
+
+<p>除了针对安全错误提供补丁程序之外,Android 安全团队还会审核安全错误,以确定是否有其他方式来保护用户。例如,Google Play 会扫描所有应用并移除任何试图利用安全错误的应用。对于通过 Google Play 之外的途径安装的应用,带有 Google Play 服务的设备可能还会使用<a href="https://support.google.com/accounts/answer/2812853">验证应用</a>功能来警告用户注意可能有害的应用。</p>
+
+<h2 id="other_resources">其他资源</h2>
+
+<p>面向 Android 应用开发者的信息:<a href="https://developer.android.com">https://developer.android.com</a></p>
+
+<p>您可以从各个 Android 开放源代码和开发者网站上找到安全信息。建议您先查看以下网址中提供的安全信息:<br />
+<a href="/security/index.html">https://source.android.com/security/index.html</a><br />
+<a href="https://developer.android.com/training/articles/security-tips.html">https://developer.android.com/training/articles/security-tips.html</a></p>
+
+<h3 id="reports">报告</h3>
+<p>Android 安全团队有时会发布报告或白皮书。以下是一些最新发布的内容。</p>
+<ul>
+ <li><a href="/security/reports/Google_Android_Security_2016_Report_Final.pdf">Android 安全性 2016 年年度回顾报告</a></li>
+ <li><a href="/security/reports/Google_Android_Security_2015_Report_Final.pdf">Android 安全性 2015 年年度回顾报告</a></li>
+ <li><a href="/security/reports/Google_Android_Security_2014_Report_Final.pdf">Android 安全性 2014 年年度回顾报告</a></li>
+ <li><a href="/security/reports/Android_WhitePaper_Final_02092016.pdf">Android 安全性白皮书</a></li>
+ <li><a href="/security/reports/Google_Android_Security_PHA_classifications.pdf">潜在有害应用分类</a></li>
+</ul>
+
+<h3 id="slides">演示文稿</h3>
+<p>Android 安全团队会开展各种会议和对话活动。以下是他们使用的一些幻灯片:</p>
+<ul>
+ <li><a href="/security/reports/Android-Bootcamp-2016-Verified-Boot-and-Encryption.pdf">验证启动和加密</a></li>
+ <li><a href="/security/reports/Android-Bootcamp-2016-SafetyNet.pdf">SafetyNet</a></li>
+ <li><a href="/security/reports/Android-Bootcamp-2016-New-App-Lifecycle-for-Encryption.pdf">新应用加密生命周期</a></li>
+ <li><a href="/security/reports/Android-Bootcamp-2016-Keeping-Google-Play-safe.pdf">维护 Google Play 的安全</a></li>
+ <li><a href="/security/reports/Android-Bootcamp-2016-Defense-in-depth-efforts.pdf">深度防御措施</a></li>
+ <li><a href="/security/reports/Android-Bootcamp-2016-Android-Keystore-Attestation.pdf">Keystore 认证</a></li>
+ <li><a href="/security/reports/Android-Bootcamp-2016-Android-Attack-Team.pdf">Android 防攻击团队</a></li>
+</ul>
+
+</body></html> \ No newline at end of file