Encryption 聊天应用程序的端到端加密

Encryption 聊天应用程序的端到端加密,encryption,cryptography,rsa,Encryption,Cryptography,Rsa,我正试图建立一个android聊天应用程序,只是为了教育目的。我想尝试实现端到端加密,以确保我的邮件安全。我曾想过使用RSA作为加密方案(我对密码学领域是新手) 我想我应该这样做 步骤1:在客户端和服务器端生成公钥和私钥 第2步:交换公钥。(这意味着服务器将拥有每个客户端的公钥) 步骤3:使用服务器的公钥加密邮件并发送到服务器,反之亦然 步骤4:然后服务器可以使用其私钥解密消息 所以我的问题是 我如何存储私钥 这种方法的缺点是什么 这实际上应该如何实施 请帮助我澄清这个概念您描述的不是端到端加密

我正试图建立一个android聊天应用程序,只是为了教育目的。我想尝试实现端到端加密,以确保我的邮件安全。我曾想过使用RSA作为加密方案(我对密码学领域是新手)

我想我应该这样做

步骤1:在客户端和服务器端生成公钥和私钥

第2步:交换公钥。(这意味着服务器将拥有每个客户端的公钥)

步骤3:使用服务器的公钥加密邮件并发送到服务器,反之亦然

步骤4:然后服务器可以使用其私钥解密消息

所以我的问题是

  • 我如何存储私钥
  • 这种方法的缺点是什么
  • 这实际上应该如何实施
  • 请帮助我澄清这个概念

    您描述的不是端到端加密。 端到端意味着两个端点(客户端)之间的通信是加密的。整个想法是服务器永远不能读取或修改会话数据

    我将主要回答你的最后一个问题,因为这可能是最相关的一个问题:

    这实际上应该如何实施

    您希望实现的目标是让对话伙伴共享相同的密钥。普遍接受的方法是使用(椭圆曲线)。在我们建立了一个共享秘密之后,我们就可以开始使用合适的方法在客户端之间进行通信

    请注意,这仍然容易受到中间人攻击,因此我们需要一个带外方法来验证两个客户端是否实际共享同一个密钥。这通常是通过手动比较键()的散列值来实现的

    因此,服务器基本上只充当客户端的中继。无论如何,使用TLS连接服务器仍然是一个好主意

    请注意,我们没有考虑以下主题:

    • 前向保密(通过重新键入)
    • 重放攻击
    • 客户的匿名性
    • 冒充其他客户
    • 等等

    最后,你真的想实施一个像or这样经过彻底审查的协议,但我想这对于一个教育项目来说是相当牵强的。

    1。不要这样做,即使是一些最好的密码学家也会弄错。2.如果您必须使用e2e加密聊天,请查看。3.保持服务器的安全是非常困难的,安全方案使用HSM,在苹果的情况下,在安装后销毁管理密钥。4.要了解所需内容,请参见第51页的iMessage。我投票将此问题作为离题问题结束,因为这与其说是编程问题,不如说是密码设计和安全问题。也许是crypto.se?我投票结束这个问题,因为它不是一个编程问题,而是一个密码和安全问题。目前给出的建议也很糟糕。