Encryption 加密通信-避免重新发送第三方的消息

Encryption 加密通信-避免重新发送第三方的消息,encryption,pgp,openpgp,Encryption,Pgp,Openpgp,我希望双方能够互相发送加密消息。 我如何才能确保中间的人不能仅仅重新发送加密消息? 当然,中间的人不知道他发送了什么,但是接收者不知道这不是之前的人再次发送的 有算法技术可以避免这种情况吗 我希望你明白我的问题 问候 您可以在发送消息之前对消息进行加密,但接收方应该知道解密该消息的密钥。如果您使用的是.NET framework,Microsoft会提供加密库 有许多功能可供选择 您可以尝试使用SSL 标准解决方案是按顺序对给定通道上的每条消息进行编号。如果消息到达时的序列号小于前一条消息,则拒

我希望双方能够互相发送加密消息。 我如何才能确保中间的人不能仅仅重新发送加密消息? 当然,中间的人不知道他发送了什么,但是接收者不知道这不是之前的人再次发送的

有算法技术可以避免这种情况吗

我希望你明白我的问题

问候

  • 您可以在发送消息之前对消息进行加密,但接收方应该知道解密该消息的密钥。如果您使用的是.NET framework,Microsoft会提供加密库 有许多功能可供选择

  • 您可以尝试使用SSL


  • 标准解决方案是按顺序对给定通道上的每条消息进行编号。如果消息到达时的序列号小于前一条消息,则拒绝该消息


    您将需要一个单独的系统来解决任何问题,“您刚刚重新发送了昨天的消息吗?”

    如果存在单个请求-响应通信,则客户端可以在请求中包含一个nonce,并且nonce将在响应中发送回。例如,在TSP协议中使用nonce

    如果存在单向数据流,则数据包的顺序编号将起作用


    如果有命令从客户机发送到服务器,那么某种nonce也可以工作。nonce由服务器创建,传递给客户端,然后由客户端包含到发送给服务器的命令中。服务器的欢迎消息应该包括初始nonce,下一个命令的nonce必须包含在对上一个命令的响应中

    既然您已经用pgp标记了这篇文章,为什么不尝试借助OpenPGP加密来实现这一点呢

    客户机可以使用服务器的公钥加密数据,并使用自己的私钥对其进行签名。
    只有服务器能够对其进行解密,并且它还将(使用客户端的公钥)验证它是否来自客户端。

    消息流始终可以是单向的。Alice对Bob使用一次计数,Bob对Alice使用一次单独计数。使用标志指示消息方向也很好:“AB”或“BA”,这样攻击者就不会将消息发送回原始发件人。@rossum在TSP和OCSP等协议中他们不能。此处使用随机nonce。然后在明文开头添加您自己的消息头:“AB0123 Hello Bob…”这将与系统生成的随机nonce分开。@Rossum这对于某些协议来说毫无意义。并非所有的消息流都由几个可以或应该编号的数据包组成。如果发送者无法指定她正在发送的消息的内容,这将是一个奇怪的消息流。在这个过程中的某个时刻,消息的内容将在加密之前以明文形式生成。此时可以添加特定的标题,最好是自动添加--人类有时会忘记。