我正在编写一个颤振应用程序,用户基本上可以在其中创建笔记。我编写了代码来为用户创建一个私钥,该私钥后来用于加密他们的数据。加密数据存储在 Firebase Firestore 中。当他们的数据被检索到时,使用他们的密钥对其进行解密。
我已经研究过使用Flutter Secure Storage,效果很好,除了密钥仅在该设备上可用。如果用户在新设备上登录,他们将无法解密他们的笔记。
我的问题是:
我如何/在哪里存储用户的密钥以解密他们的数据,以便只有他们可以访问它,而不管他们使用什么设备登录?围绕这种解决方案的最佳实践是什么?
final AesGcm algorithm = AesGcm.with256bits();
final SecretKey secretKey = await algorithm.newSecretKey();
// TODO: Write secretKey to storage that only the user can access with their account.