我目前正在开发即时 React Native 消息传递应用程序,我想实现 E2EE(发送方和接收方之间的端到端加密)以提高安全性。我使用的库/框架是用于后端的 NodeJS、用于实时通信的 Socket.io、用于数据管理的 MongoDB 以及用于前端的 React Native。
在这一点上,我能够从发送者到服务器来回发送消息,然后再发送回接收者,但服务器实际上可以读取非常烦人的消息,因为我想将消息(加密)保存在我的数据库中并检索他们让用户看到他的历史。
最近我发现 Diffie-Hellman 密钥交换是在每个端点设备上生成共享密钥的一个很好的解决方案,但我不知道如何在我的应用程序中实现它。
我还发现大型消息应用程序(如 WhatsApp、Facebook Messenger、Signal 等)使用基于 X3DH(扩展三重 Diffie-Hellman)的信号协议,我想知道是否有可能实现这样一个好的我的 RN 应用程序中的东西。但问题是,即使在阅读了 Signal Protocol 的文档之后,我也无法弄清楚如何实现它。
总之,我的问题是如何在我的 RN 应用程序中实现信号协议并使用 Socket.io 发送和接收加密消息?如果由于某种原因这是不可能的,我如何自己实现 Diffie-Hellman 密钥交换?
感谢任何可以帮助我的人!
encryption websocket node.js diffie-hellman end-to-end-encryption