summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Robert Berry <robertberry@google.com> 2018-03-27 15:26:37 +0100
committer Robert Berry <robertberry@google.com> 2018-04-03 12:22:35 +0000
commitcebb55ea9d98dc7ba93eed520b874ac24ff96800 (patch)
treedd8252fbf093a9e83078f61af0c36b628cc778bb
parent1bc47a4c1d0b01d5b32bc2018212c629903da2e6 (diff)
Update docs to match encryption requirements
Bug: 70900575 Test: none, it's documentation Change-Id: I9b85063bca636dca3085b187b736664f8d3f3c53
-rw-r--r--core/java/android/app/backup/BackupAgent.java15
-rw-r--r--core/java/android/app/backup/BackupDataOutput.java6
-rw-r--r--core/java/android/app/backup/FullBackupDataOutput.java6
3 files changed, 21 insertions, 6 deletions
diff --git a/core/java/android/app/backup/BackupAgent.java b/core/java/android/app/backup/BackupAgent.java
index d1c957b8fedc..39b9181b9b6e 100644
--- a/core/java/android/app/backup/BackupAgent.java
+++ b/core/java/android/app/backup/BackupAgent.java
@@ -148,10 +148,17 @@ public abstract class BackupAgent extends ContextWrapper {
* Flag for {@link BackupDataOutput#getTransportFlags()} and
* {@link FullBackupDataOutput#getTransportFlags()} only.
*
- * <p>The transport has client-side encryption enabled. i.e., the user's backup has been
- * encrypted with a key known only to the device, and not to the remote storage solution. Even
- * if an attacker had root access to the remote storage provider they should not be able to
- * decrypt the user's backup data.
+ * <p>The transport has client-side encryption enabled. i.e., the user's backup is encrypted
+ * with a key known only to the device, and not to the remote storage solution where the backup
+ * data is stored. The key may be synced to a remote trusted hardware module if it has
+ * protections equivalent to those described in the
+ * <a href="https://developer.android.com/preview/features/security/ckv-whitepaper.html">Google
+ * Cloud Key Vault Service whitepaper</a>. Having direct access to the trusted hardware module
+ * must be insufficient to decrypt the user's backup data.
+ *
+ * <p>The backup data itself must be encrypted using an AES/GCM/NoPadding cipher. The key
+ * material must be randomly generated using {@link java.security.SecureRandom}, and must have
+ * at least 256 bits of entropy.
*/
public static final int FLAG_CLIENT_SIDE_ENCRYPTION_ENABLED = 1;
diff --git a/core/java/android/app/backup/BackupDataOutput.java b/core/java/android/app/backup/BackupDataOutput.java
index 5a66f3407417..4f90cf7781e0 100644
--- a/core/java/android/app/backup/BackupDataOutput.java
+++ b/core/java/android/app/backup/BackupDataOutput.java
@@ -107,8 +107,12 @@ public class BackupDataOutput {
/**
* Returns flags with additional information about the backup transport. For supported flags see
- * {@link android.app.backup.BackupAgent}
+ * {@link android.app.backup.BackupAgent}.
*
+ * <p>Returns the same flags that {@link BackupTransport#getTransportFlags()} returns.
+ *
+ * @see BackupAgent#FLAG_CLIENT_SIDE_ENCRYPTION_ENABLED
+ * @see BackupAgent#FLAG_DEVICE_TO_DEVICE_TRANSFER
* @see FullBackupDataOutput#getTransportFlags()
*/
public int getTransportFlags() {
diff --git a/core/java/android/app/backup/FullBackupDataOutput.java b/core/java/android/app/backup/FullBackupDataOutput.java
index 18f428339941..f1d9dc6fa93c 100644
--- a/core/java/android/app/backup/FullBackupDataOutput.java
+++ b/core/java/android/app/backup/FullBackupDataOutput.java
@@ -26,8 +26,12 @@ public class FullBackupDataOutput {
/**
* Returns flags with additional information about the backup transport. For supported flags see
- * {@link android.app.backup.BackupAgent}
+ * {@link android.app.backup.BackupAgent}.
*
+ * <p>Returns the same flags that {@link BackupTransport#getTransportFlags()} returns.
+ *
+ * @see BackupAgent#FLAG_CLIENT_SIDE_ENCRYPTION_ENABLED
+ * @see BackupAgent#FLAG_DEVICE_TO_DEVICE_TRANSFER
* @see BackupDataOutput#getTransportFlags()
*/
public int getTransportFlags() {