我刚刚在安全 stackexchange 上发布了这个问题,他们建议我将我的问题移到 stackoverflow,所以就在这里。
我目前正在开发一个即时 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 密钥交换算法?
感谢任何可以帮助我的人!