【问题标题】:Using AES encryption in a client-server environment在客户端-服务器环境中使用 AES 加密
【发布时间】:2016-10-26 01:27:15
【问题描述】:

我目前正在开发一个客户端-服务器应用程序。我有一些数据要在客户端加密并在服务器端解密。

我已经弄清楚了加密/解密部分并且可以正常工作。我的问题是密钥和盐。它们都是在运行时随机生成的,然后再通过网络发送到服务器。

我的问题是:

  • 如果 Key 和 Salt 是随机的,如何让服务器解密数据??

我目前的解决方案是使用加密数据发送密钥和盐。

  • 但这不会使我保护数据的努力付诸东流吗?
  • 我应该在数据中“隐藏”密钥和盐吗? (附加在末尾/开头)

Client server AES encryption

该帖子上的人建议联系服务器,让他知道我们要发送安全消息。然后他生成一个密钥并将其发送回给您。对于一个你希望一切都尽可能打包的游戏网络来说,这不是有点“太多”吗?

平时都在做什么?

谢谢。

【问题讨论】:

  • 是的;你的解决方案没用。您需要定义一个安全模型,以便您知道哪些秘密存在于何处、何地/如何进行身份验证。你需要阅读blogs.msdn.microsoft.com/ericlippert/2011/09/27/…
  • 您可能需要非对称加密(然后您将遇到关于如何传输和验证公钥的一系列不同问题)。

标签: c# network-programming cryptography aes


【解决方案1】:

看起来您不小心绊倒并推出了自己的加密货币。哦哦。不过不用担心,只需振作起来,删除所有加密代码,然后使用SSLStream

为什么?

  1. TLS 是多年工作、研究和分析的结果,这些人在加密方面比你我加起来要好得多,十亿倍

  2. 这将比编写您自己的自定义解决方案更快、更轻松。如果您不使用 AES 的身份验证模式,则需要实现 Diffie-Hellman、RSA/DSA 签名、AES、一个或两个 HMAC 的组合,最重要的是,您需要注意填充预言,前向保密和一大堆其他东西。

除了玩笑,你永远不应该推出自己的加密货币。依靠久经考验的技术。

【讨论】:

  • 我没有做自己的加密。我正在使用带有 HMACShA256 的 AES。我只是不确定如何安全地将我的密钥发送给客户。我真的很想了解这些东西是如何工作的。您在 RSA/DSA 和 Diffie-Hellman 中指出了几个解决方案。
  • @user1505230 不,解决方案是通过SSLStream 使用TLS。如果您自己滚动,您将使用 RSA/DH。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-09
  • 1970-01-01
  • 2021-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多