我正在开发一个使用公共密钥证书对发送到服务器的消息进行签名的android应用程序。用户登录时,他会收到x509证书。现在,当他想将消息发送到服务器时,他必须使用证书公钥对消息签名,然后将其与消息一起发送到服务器。我是安全新手,不知道该怎么做。这些是我的一些问题:


如何将证书安全地存储在手机中,以便我的应用程序可以使用它来签名发送到服务器的消息?
我还计划在一段时间内进行一次轮换。因此,服务器会将更新的证书发送给用户,而我的应用程序必须更新存储在手机中的证书。


如果您可以为我提供教程或需要认真处理的任何问题,它将非常有帮助。谢谢

最佳答案

您应该问自己的第一个问题是您是否要签名或加密邮件。如果您要签名(向收件人证明您的消息在传输方式上没有被更改,并且还证明发件人确实是您的应用),则应使用私钥签名,并让服务器与公众验证签名。键。如果要加密消息,则应使用服务器的公钥对其进行加密,并让服务器使用其私钥对其进行解密。

第二个问题是证书的传输:如果您担心中间人篡改应用程序的消息,那么该攻击者也可能会截取您发送给应用程序的证书,从而对他的消息进行签名。

要回答您的问题:


我能想到的将安全存储在手机上的唯一方法(使攻击者即使获得root特权也无法访问它)是使用未存储在设备上但必须由用户输入的用户密码对其进行加密。每次要访问证书的用户。
如果您设法将一个证书安全地发送到设备(我怀疑可以),则可以通过在服务器端使用旧证书的公钥加密新证书来执行密钥轮换。您可以在那里使用私钥对其解密。

关于android - 在Android应用程序中使用X509证书,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12148294/

10-09 01:03
查看更多