我使用 flutter 和我自己的服务器作为数据库后端制作了一个聊天应用程序。
我想添加端到端加密,类似于 WhatsApp 等其他聊天应用程序,但我对此并不完全了解。
所以我想问的是:
我目前正在开发即时 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
我正在制作一个聊天应用程序,其中:
\n我用来firebase-realtime-database存储数据。
为每个用户随机生成密钥
\nString generateEncryptionKey(int len) {\n var r = Random();\n String randomString = String.fromCharCodes(List.generate(len,\n (index) => r.nextInt(33) + 89));\n return randomString;\n}\nRun Code Online (Sandbox Code Playgroud)\n这可能是错误的。derived key如果我需要从用户的密码中获取密码或者这是否足够,我需要澄清。
shared-secret key)shared-secret keyshared-secret key每个个人密钥都有一些共同点,对吧?因此,任何参与者加密的消息都可以被任何其他参与者解密。
我怎样才能生成shared-secret key?
generateKeyPair() {\n // Generate a private - …Run Code Online (Sandbox Code Playgroud)