我正在开发一个支持单用户聊天和群聊的聊天应用程序。
我们计划使用接收者的公钥加密单用户聊天中的消息,并使用接收者的私钥对其进行解密。
如果我们采用这种方法,那么在群聊的情况下我们将一无所知。
有什么想法吗?
我正在开发一个支持单用户聊天和群聊的聊天应用程序。
我们计划使用接收者的公钥加密单用户聊天中的消息,并使用接收者的私钥对其进行解密。
如果我们采用这种方法,那么在群聊的情况下我们将一无所知。
有什么想法吗?
这取决于您对群组聊天使用的模型:
或者,您为该“组”创建一个密钥对并将私有副本发送给该组的所有成员,但我确定您已经看到了问题所在。
你最好的选择可能是有一个聊天会话的想法,并在会话期间使用会话密钥。对称加密比非对称加密更快、更安全,因此如果您让会话主机决定会话密钥,然后使用会话的每个成员的公钥对其进行加密并将其发送出去,那么每一方将拥有相同的会话密钥并且能够参与对话。
或者,您可以简单地为每个收件人加密消息,或为每个收件人设置唯一会话,但这是一个慢得多且处理器密集度更高的过程,尽管它仍然使用大致相同数量的数据,因为消息必须单独发送给每个收件人无论如何收件人(除非您使用基于服务器的中继)。
我不知道有什么标准的方式来实现你所要求的。但是,您可以将EFS(和其他类似软件解决方案)中使用的系统类型作为模型:
这样做的主要问题是如何审查新客户端:显然,您需要以“强”方式执行该验证,因为一旦有人获得会话密钥,所有使用该密钥的过去和未来的消息都可以解密。
如果您的会话应该持续很长时间,那么在某些时候拥有一些用于密钥重新协商的机制可能会很有用。
此外,由于在该系统中,初始客户端决定加密密钥,因此您必须非常小心如何选择该密钥,以免使用简单密钥削弱整体安全性,并且您应该为其他方实施某种方式在对话中拒绝“弱”键(不强制重新协商,只是拒绝连接)