考虑到使用Android的KeyChain API无法存储对称密钥,以下方法是否安全?
第一部分:密钥生成和存储
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存储在本地存储(SharedPreferences、SQLite等)中
第二部分:使用symmetric_key
当应用程序想要加密/解密某些内容时:
1. 从KeyChain中加载private_key到内存中 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)对的应用程序是唯一能够读取密钥对的用户吗?
第一部分:密钥生成和存储
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存储在本地存储(SharedPreferences、SQLite等)中
第二部分:使用symmetric_key
当应用程序想要加密/解密某些内容时:
1. 从KeyChain中加载private_key到内存中 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)对的应用程序是唯一能够读取密钥对的用户吗?