我正在考虑使用群聊功能构建一个简单的端到端加密聊天。请记住,1)这只是一个实验,可以帮助我更多地了解密码学;2)我是一个不起眼的程序员,而不是了解所有密码和复杂加密方案的安全专家。
我的第一个想法是:
- 单人对话(两人):每个客户端生成一个公钥/私钥对并将公钥发送给服务器。每次有人与另一个人交谈时,他们只需从服务器获取收件人的公钥并使用该密钥加密消息。稍后接收者可以用他们的私钥解密它们;
- 群聊:当有人开始群聊时:
- 创建聊天的用户会生成一个公钥/私钥对(我们称之为启动器);
- “starter”从服务器获取参与者的所有公钥,并与他们加密聊天的私钥;
- “启动者”将加密的聊天私钥发送给每个参与者;
- 现在,每个参与者都可以发送加密消息(通过使用聊天的公钥对其进行加密)并使用聊天的公钥解密来自其他人的消息。
- 如果有人从聊天中添加或删除,则会使用上述相同的过程生成和分发新的聊天公钥/私钥对。
关注群聊:这个实现有什么缺点?这是解决问题的合理且安全的方法吗?