【问题标题】:Is my custom encryption handshake secure?我的自定义加密握手安全吗?
【发布时间】:2014-04-26 01:26:07
【问题描述】:

我为商场制作了一些广告软件,它有一堆客户端(屏幕)和一个服务器,它们从中获取内容。到目前为止,它一直在一个单独的 LAN 中工作,所以我什至没有想到安全性,但他们问我是否可以通过 Internet 对其进行管理。

我尝试提出一个合理的解决方案,例如 A 计划

  1. 客户端发送“我要登录消息”
  2. 服务器以随机生成的密钥响应
  3. 客户端发送使用所述密钥加密的密码
  4. 服务器用另一个密钥响应,用第一个密钥加密
  5. 客户端现在可以使用最后一个密钥来加密/解密任何进一步的通信

但后来我开始思考,发送另一个密钥有什么意义?如果有人观察流量可以找出我正在使用的算法,那么我发送多少加密密钥都没有关系,如果他们可以根据原始未加密密钥对它们进行解码。

B计划

  1. 客户端发送使用密码加密的用户名

停在那里,然后它只是一个固定的消息,将授予访问权限

C计划

  1. 为客户端和服务器提供用户/密码组合(每个用户)
  2. 每次客户端使用密码加密的用户登录(用于加密此会话中的所有进一步通信),服务器都会发送一个新密码,因此旧密码不能再次使用

很好,除了它仍然存在 A 计划的问题并带来更多问题,例如如果客户端在发送登录后立即中断通信并且没有获得新密码...

无论我怎么看,如果解密算法是可以计算出来的,那么安全性就会存在漏洞。

好的 D 计划!

  1. 客户端和服务器手动获得一个加密密钥
  2. 客户端使用密钥来加密所有通信,甚至可能请求额外的密钥与第一个密钥结合使用以进一步复杂解密

关键是,原始密钥永远不会通过网络发送。

好吧..这个似乎工作。显然,只要花费足够的时间,任何东西都可以被黑客入侵,但也许足以让它变得不值得。问题是,这个有点笨拙,每次安装客户端都需要手动输入密钥。它很可能会很长而且很复杂,而你一般懒惰的人可能只会通过邮件发送它......嗯,目的失败了。

我现在不知道该怎么办。如果我能获得与您运行磨坊登录类型网站(例如这个)相同级别的安全性,那对我来说很好。他们如何仅使用用户+密码来处理它?

【问题讨论】:

  • 如果服务器是一个流氓间谍,你刚刚泄露了你的 [plaintext] 密码。此外,“[新] 另一个密钥”也不安全,因为任何监视器也可以看到它被加密的“原始密钥”。安全很难。使用现有经过验证的方法。在这种情况下,请搜索 cryptography Key Exchange
  • 如您所见,密码学就是关于密钥的。有关该主题的更多信息:blogs.msdn.com/b/ericlippert/archive/2011/09/27/…
  • 嗯,我从那 2 中得到的是没有最终答案,基于当前的技术可能永远不会:/谢谢。
  • 为什么不使用 SSL/TLS 和密码?客户端需要知道服务器的公钥和密码,一旦建立连接就可以安全地发送密码。
  • “合理的解决方案”已经存在。它被称为 SSL。用它。不要试图自己动手。您不会成功地使它比 SSL 更好,或者在实践中几乎没有任何效果。因此,尝试没有意义。到目前为止,您所做的事情并不安全。

标签: security networking encryption cryptography


【解决方案1】:

令人钦佩的是,您为此付出了如此多的思考。现在停在原地并使用 SSL/TLS。传输级安全性消除了手动保护通信通道的需要。尝试推出自己的密钥交换是一个坏主意 (tm),可能会导致漏洞。

【讨论】:

    【解决方案2】:

    你听说过Diffie–Hellman key exchange吗?例如,您是否考虑过使用RSA 进行非对称加密?

    【讨论】:

      猜你喜欢
      • 2012-07-12
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      • 1970-01-01
      • 2018-03-18
      • 2011-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多