如何确保2点之间的通信不被篡改?

Gus*_*tav 0 .net c# communication

我有一个在客户端运行的应用程序,此应用程序向/从远程服务器发送和接收数据.

有什么方法可以保证发送到服务器的数据真的来自允许的应用程序?

当然我可以加密数据,但由于它可以被反编译,它不会使它100%安全.

我们正在使用.net/c#.

谢谢!

Eri*_*ert 6

你的问题太模糊,无法用现在的形式回答.您需要更准确地说明要减轻的威胁.

例如,假设您有一个客户端Alice试图向服务器Bob发送消息.是威胁:

  1. 第三方,夏娃,可能正在倾听沟通渠道.Alice希望Bob理解该消息,但Eve必须无法理解该消息.

  2. 第三方Mallory可能会积极篡改通信渠道.Bob希望知道是否有人篡改了Alice尝试发送消息.

  3. Eve和Mallory正在合作.通过监控频道,Eve累积了从Alice到Bob的一些真实消息的录音.虽然她无法理解,但她相信这些信息很好.Eve向Mallory发送消息.Mallory将篡改通信频道,以便Bob似乎从Alice获得有效消息,即使Alice现在没有发送消息.(或者,Mallory将篡改频道,以便Alice的当前有效消息被先前的有效消息替换.)

  4. 第三方Moriarty谋杀了Alice,现在正在向Bob发送信息,声称她来自她.(沟通渠道是不妥协的;马洛里和夏娃休息一晚.)鲍勃希望知道消息是否真的来自爱丽丝,正如消息所声称的那样.

这些问题可能看似相似,但事实上它们是不同的问题,并用不同的技术解决.如果你认为你通过解决其中一个来解决所有问题,那么你就构建了一个不安全的系统.您需要仔细清楚地描述您希望减轻的威胁,然后才能向您提供有关如何执行此操作的建议.