blob: b4564ccf0e9fbd00e1ced43b775bbfe0e06e188b [file] [log] [blame]
<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 设备上的所有用户数据进行编码的过程。设备经过加密后,所有由用户创建的数据在存入磁盘之前都会自动加密,并且所有读取操作都会在将数据返回给调用进程之前自动解密数据。加密可确保未经授权方在尝试访问相应数据时无法进行读取。
</p>
<p>
Android 有两种设备加密方法,即文件级加密和全盘加密。
</p>
<h2 id="file-based">文件级加密</h2>
<p>
Android 7.0 及更高版本支持<a href="/security/encryption/file-based.html">文件级加密</a>。采用文件级加密时,可以使用不同的密钥对不同的文件进行加密,并且可以对加密文件进行单独解密。支持文件级加密的设备还可以支持<a href="https://developer.android.com/training/articles/direct-boot">直接启动</a>。该功能处于启用状态时,已加密设备在启动后将直接进入锁定屏幕,从而可让用户快速使用重要的设备功能,例如无障碍服务和闹钟。
</p>
<p>
引入文件级加密和可以将应用设为加密感知型应用的 API 后,应用可以在受限环境中运行。这意味着,应用可以在用户提供凭据之前运行,同时系统仍能保护私密用户信息。
</p>
<h3 id="metadata">元数据加密</h3>
<p>
Android P 引入了对存在硬件支持的<a href="/security/encryption/metadata">元数据加密</a>的支持。使用元数据加密,启动时出现的单个密钥会加密未通过 FBE 进行加密的任何内容(例如目录布局、文件大小、权限和创建/修改时间)。该秘钥受到 Keymaster 的保护,而 Keymaster 受到验证启动的保护。
</p>
<h2 id="full-disk">全盘加密</h2>
<aside class="caution">
注意:对全盘加密的支持即将停用。如果您要创建新设备,则应使用文件级加密。
</aside>
<p>
Android 5.0 及更高版本支持<a href="/security/encryption/full-disk.html">全盘加密</a>。全盘加密是使用单个密钥(由用户的设备密码加以保护)来保护设备的整个用户数据分区。设备启动后,用户必须提供其凭据才能访问磁盘的任何部分。
</p>
<p>
虽然这种加密方式非常有利于确保安全性,但这也意味着当重新启动设备时,用户无法立即使用手机的大多数核心功能。由于此单个用户凭据的保护,系统无法访问用户的数据,所以闹钟等功能将无法运行,无障碍服务将无法使用,并且手机也无法接听电话。
</p>
</body></html>