加密算法的密钥该存储在哪里?

4
我需要开发一个Android应用程序,其中加密/解密是在客户端完成的。在服务器上传输和存储的数据必须进行加密。问题在于我无法将加密/解密密钥存储在任何地方。
密钥不能存储在客户端机器上。因为管理员(或可以访问服务器的人)不应该能够访问未加密的数据。
那么如何生成密钥?你可以提出一些方法吗?

2
我想我不理解这个问题。数据加密通常在用户设备上存储公钥,而由远程机器(通常是服务器)存储私钥。您究竟想做什么与此不同? - Codeman
谁应该能够阅读明文?谁只能访问加密数据?谁将进行加密,谁将进行解密?加密数据去哪里了? - JimmyB
1个回答

3
我假设你说的加密密钥不应该存储在设备中,你是真的这么想的 :-) 因为如果没有这个限制,你可以使用KeyStore。然而,这意味着密钥存储在设备上,这似乎不是你想要的。

因此,假设加密密钥是外部的,那么就有些直截了当了,因为选择余地不大:你的客户端应用程序要求用户以某种方式输入加密密钥(由你决定),然后使用它来加密数据,然后立即忘记加密密钥。

然后将加密后的数据发送到服务器上,在那里存储。服务器不知道加密密钥,所以对于服务器来说,它只是一个不透明的数据块。

当用户想要检索数据时,他们必须立即提供解密密钥,因为它没有存储在设备上。


我可以使用KeyStore,但是我正在设备上生成公钥和私钥,无法确定用于证书的内容 - 向Keystore添加私钥需要一个证书。对此有什么想法吗? - edthethird

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接