Security 我的自定义加密握手安全吗?

Security 我的自定义加密握手安全吗?,security,networking,encryption,cryptography,Security,Networking,Encryption,Cryptography,我为一家购物中心制作了一些广告软件,它有一组客户端(屏幕)和一个服务器,它们从中获取内容。到目前为止,它是在一个单独的局域网内工作的,所以我甚至没有想到安全问题,但他们问我是否可以通过互联网进行管理 我试着想出一个合理的解决方案,比如a计划 客户端发送“我想登录消息” 服务器使用随机生成的密钥进行响应 客户端发送用所述密钥加密的密码 服务器用另一个密钥响应,并用第一个密钥加密 客户端现在可以使用最后一个密钥加密/解密任何进一步的通信 但后来我想,再发一把钥匙有什么意义?如果观察流量的人能够找出我

我为一家购物中心制作了一些广告软件,它有一组客户端(屏幕)和一个服务器,它们从中获取内容。到目前为止,它是在一个单独的局域网内工作的,所以我甚至没有想到安全问题,但他们问我是否可以通过互联网进行管理

我试着想出一个合理的解决方案,比如a计划

  • 客户端发送“我想登录消息”
  • 服务器使用随机生成的密钥进行响应
  • 客户端发送用所述密钥加密的密码
  • 服务器用另一个密钥响应,并用第一个密钥加密
  • 客户端现在可以使用最后一个密钥加密/解密任何进一步的通信
  • 但后来我想,再发一把钥匙有什么意义?如果观察流量的人能够找出我使用的算法,那么我发送多少加密密钥并不重要,只要他们能够根据原始未加密密钥对其进行解码

    方案B

  • 客户端发送使用其密码加密的用户名
  • 到此为止,这只是一条允许访问的固定消息

    方案C

  • 为客户端和服务器提供用户/密码组合(每个用户)
  • 每次客户端使用用户密码加密(用于加密此会话中的所有后续通信)登录时,服务器都会发送一个新密码,以便旧密码不能再次使用
  • 很好,除了它仍然受到计划A的问题的困扰,并且带来了更多的问题,比如如果客户端的通信在发送登录后立即中断,并且没有获得新的密码

    不管我从哪个角度看,如果解密算法是可以解决的,那么安全性就有一个漏洞

    好的,D计划

  • 客户端和服务器手动获得加密密钥
  • 客户端使用密钥对所有通信进行加密,甚至可能请求额外的密钥与第一个密钥结合使用,从而使解密更加复杂
  • 关键是,原始密钥永远不会通过网络发送

    好的。。这个似乎有用。很明显,任何东西都可以被黑客攻击,只要花足够的时间,但这可能足以让它变得不值得。但问题是,这个有点笨重,每次安装客户端都需要手动输入密钥。它最有可能是漫长而复杂的,你们是一个普通的懒人,很可能只是通过邮件发送,而。。嗯,目标失败了


    现在我不知道该怎么办。如果我可以获得与你的普通登录类型网站(比如这一个)相同的安全级别,那我就可以了。他们是如何处理用户+密码的问题的?

    您在这方面花了这么多心思,真是令人钦佩。现在就停下来,使用SSL/TLS。传输级安全性将手动保护通信通道的需要抽象化。尝试使用自己的密钥交换是一个坏主意(tm),可能会导致漏洞。

    值得钦佩的是,您在这方面花了这么多心思。现在就停下来,使用SSL/TLS。传输级安全性将手动保护通信通道的需要抽象化。尝试使用自己的密钥交换是一个坏主意(tm),可能会导致漏洞。

    您听说过吗?你有没有考虑过非对称加密,例如,

    < P >你听说过吗?你是否考虑过不对称加密,例如,

    如果服务器是一个流氓间谍,你刚刚放弃了你的[明文]密码。此外,“[新]另一个密钥”是不安全的,因为任何监视器也可以看到它被加密的“原始密钥”。安全是很难做到的。使用现有的经验证的方法。在本例中,搜索。正如您所了解的,密码学与密钥有关。关于这个主题的更多信息:好吧,我从这两个方面得到的是,没有最终的答案,基于当前的技术,可能永远不会有答案:/Thank。为什么不使用SSL/TLS和密码呢?客户端需要知道服务器的公钥和密码,一旦建立连接,就可以安全地发送密码。“合理的解决方案”已经存在。它被称为SSL。使用它。不要试着自己滚。您不会成功地使它比SSL更好,或者在实践中几乎与SSL一样好。因此,尝试是没有意义的。到目前为止,您所做的还不安全。如果服务器是一个流氓间谍,那么您只需给出您的[明文]密码。此外,“[新]另一个密钥”是不安全的,因为任何监视器也可以看到它被加密的“原始密钥”。安全是很难做到的。使用现有的经验证的方法。在本例中,搜索。正如您所了解的,密码学与密钥有关。关于这个主题的更多信息:好吧,我从这两个方面得到的是,没有最终的答案,基于当前的技术,可能永远不会有答案:/Thank。为什么不使用SSL/TLS和密码呢?客户端需要知道服务器的公钥和密码,一旦建立连接,就可以安全地发送密码。“合理的解决方案”已经存在。它被称为SSL。使用它。不要试着自己滚。您不会成功地使它比SSL更好,或者在实践中几乎与SSL一样好。因此,尝试是没有意义的。到目前为止,你所做的还不安全。