备份存档加密¶
本文档最终将详细描述我们用于加密和解密备份的方案。
- class ArchiveEncryptionState()¶
ArchiveEncryptionState 封装了关键的原语和包装的密钥,这些密钥可以安全地序列化到文件系统。ArchiveEncryptionState 用于计算加密备份存档所需的密钥。
- ArchiveEncryptionState.ArchiveEncryptionState¶
- ArchiveEncryptionState.backupAuthKey¶
类型: CryptoKey
将用于验证备份所有者的 AES-GCM 密钥。
- ArchiveEncryptionState.isInternalConstructing¶
一个技巧,让我们可以确保 ArchiveEncryptionState 只能通过 ArchiveEncryptionState.initialize 静态方法来构造。
- ArchiveEncryptionState.nonce¶
类型: Uint8Array
包装私钥和 OSKeyStore 密钥时计算的随机数。
- ArchiveEncryptionState.publicKey¶
类型: CryptoKey
将用于派生加密备份密钥的 RSA-OAEP 公钥。
- ArchiveEncryptionState.salt¶
类型: Uint8Array
为恢复代码的 PBKDF2 拉伸计算的盐。
- ArchiveEncryptionState.state¶
对保存 ArchiveEncryptionState 实例当前状态的对象的引用。当此引用为 null 时,加密不被视为已启用。
- ArchiveEncryptionState.wrappedSecrets¶
类型: Uint8Array
包装的静态密钥,包括 RSA-OAEP 私钥和 OSKeyStore 密钥。
- ArchiveEncryptionState.GENERATED_RECOVERY_CODE_LENGTH¶
类型: number
如果未传入恢复代码以启用;则使用 CSRNG (crypto.getRandomValues) 生成的字符数;
- ArchiveEncryptionState.VERSION¶
类型: number
ArchiveEncryptionState 的当前版本号。它编码在序列化的状态中,并且还在启用() 中盐的计算过程中使用。
- ArchiveEncryptionState.serialize()¶
将 ArchiveEncryptionState 实例序列化为可以安全地持久保存到磁盘的对象。
- 返回:
Promise.<object> –
- static ArchiveEncryptionState.initialize(stateDataOrRecoveryCode)¶
构造一个新的 ArchiveEncryptionState。如果传递了 stateData 对象,则 ArchiveEncryptionState 将尝试从中反序列化 - 否则,将自动生成新的状态数据。如果提示用户对其 OSKeyStore 进行身份验证,并且他们取消了身份验证,则这可能会被拒绝。
- 参数:
stateDataOrRecoveryCode (object|string|undefined) – 通过 serialize() 生成的对象、用于生成状态的恢复代码或 undefined。
- 返回:
Promise.<InitializationResult> –