gpt4 book ai didi

android - 使用 Android KeyChain 安全地存储对称 key

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:10 40 4
gpt4 key购买 nike

鉴于无法使用 Android KeyChain API 存储对称 key ,以下是存储对称 key 的安全方法:

第一部分: key 生成和存储

  1. 生成symmetric_key
  2. 生成(private_key, public_key),存储在KeyChain
  3. 使用 public_key 加密 symmetric_key,如下所示:encrypted_symmetric_key = public_encrypt(symmetric_key)
  4. encrypted_symmetric_key 存储在本地存储(SharedPreferencesSQLite 等)

第二部分:使用 symmetric_key

当应用想要加密/解密某些东西时:

  1. private_keyKeyChain 加载到内存中
  2. 从磁盘加载encrypted_symmetric_key
  3. 获得symmetric_key := private_decrypt(encrypted_symmetric_key)
  4. encrypt(symmetric_key, some_message)decrypt(symmetric_key, some_ciphertext)

问题:

  1. root 用户 能否获得 (private_key, public_key) 对?
  2. 如果手机没有 root,创建​​ (private_key, public_key) 对的应用程序是唯一可以读取 key 对的用户吗?

最佳答案

根据文档(https://developer.android.com/reference/android/security/KeyChain.html):KeyChain 类提供对私钥及其在凭证存储中的相应证书链的访问。

私钥意味着它是非对称的(私钥和公钥是非对称 key 的两个部分)。

在您的第 1 部分中 - 您描述了在 Android 设备上存储对称 key 的首选方式。您的第 2 部分也是正确的(至少据我所知)。

至于您的顾虑 - 您也是对的。在获得 root 权限的设备上 - 存储在设备上的 key 容易受到攻击,并且可以被有权访问该设备的人获取。在非 root 设备上 - 只有应用程序可以访问它创建的 key 。

关于 root - 你可以使用像 RootShell ( https://github.com/Stericson/RootShell ) 这样的 root 检测库来检测设备是否已经 root 然后采取相应的行动(在该设备上禁用你的应用程序或类似的东西)你也应该看看Google 的 SafetyNet ( https://developer.android.com/training/safetynet/index.html ) 检测设备是否被篡改(它也检测生根)。

关于android - 使用 Android KeyChain 安全地存储对称 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28566235/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com