我正在开发一个用Java制作的聊天应用程序。我有一个在python中创建的服务器,使用twisted,当然,在我的Android应用程序中,我已经实现了客户端。
它运作良好,但我想让它变得安全。我正在查看RSA加密并找到此链接:http://javadigest.wordpress.com/2012/08/26/rsa-encryption-example/
问题在于,我可以制作一对密钥,一个私钥,将在服务器上解密消息,公钥将在Android应用程序中进行硬编码(或在线某处)。问题是,当服务器将消息发送回客户端时,他将如何获得它?那个人也需要加密发送,否则,没有必要这样做。我正在考虑为每个客户创建一对密钥,但是......我认为这不是最好的方法。
欢迎所有建议
答案 0 :(得分:1)
解决方案通常是创建公钥基础结构(PKI)的形式,其中可以在需要时验证客户端的公钥。您可以将它们放入证书中并通过您控制的某种证书颁发机构(CA)对其进行签名。这样您就不需要存储所有证书,也可以撤销密钥泄露的客户端证书。这是(浏览器)TLS通常使用的内容,尤其是在部署了客户端身份验证的情况下。
然而,密钥管理是一个无法在一个答案中处理的大型主题。