安全登录:PHP和Javascript中的公钥加密

我试图使安全的“正常”用户名/密码登录表单,而不需要HTTPS。 我的想法是这样的:

  • 服务器为某种不对称加密算法生成密钥对。 它将这个密钥对存储在一个临时的排序表(或者本地会话数据)中。
  • 服务器将表单发送到客户端并包含公钥。
  • 用户填写表单。
  • 在发送到服务器之前,Javascript会使用给定的公钥对密码进行加密。
  • 表格已发送。
  • 服务器用它的私钥解密密码(它从临时表中获得,使用公钥找到它)。
  • 我需要知道的是:

  • 哪种加密方法最适合使用? RSA?
  • 我如何在PHP中解密密码?
  • 而且可能是最困难的一个,我怎样才能让Javascript加密密码呢?

  • 提前:然而,我很抱歉负面,

    实施你自己的安全协议绝不是一个好主意,除非你是一个训练有素的安全专家,或者你实际上并不真正关心安全性,只想创建一个安全(营销)的印象,并停止脚本小子。

    在您的评论中,SSL绝对不是指纹锁,JCryption和您的提议相当于有一扇门,您可以输入两位数的代码打开门,并且您有无数次重试。 如果你不是真正感兴趣并且只是经过,很难打破,但如果你想进入那个房子(你可能会这样做,否则就不需要安全),你就会进入。

    另一点是人们经常忘记提及他们想要达到的目标。 安全有三个着名的组成部分,即CIA,即机密性,完整性和可用性。 您输送的数据是保密的还是重要的(如果您确定发送的数据来自您期望的数据而不是来自中间的人)是否重要?

    在这种情况下,为了使它具体化,你在这里实现的唯一一件事就是被动攻击者无法看到线上传递的信息。 只要你的攻击者变得活跃并改变他们路线上的消息,你的整个安全就会崩溃。 所以我的建议是坚持专家提出的解决方案(在这种情况下是TLS,而不是ssl,因为这是旧版本),并确保您的服务器支持它。

    编辑:

    顺便说一句,SSL / TLS不能没有证书。 公钥密码体制的要点在于至少应该有某个值得信任的一方。

    另一方面,如果你不关心你的用户会得到“无效证书”的信息,你可以创建你自己的证书,这非常简单。 在这种情况下,您的证书不受浏览器的信任,但是,您可以确保至少您的通信是安全的(好的,在这种情况下也有例外,但仍然是......)

    证书应该免费的论点实际上是从角度来看的。 我认为声称它的人是假的/愚蠢的,不知道如何成为认证机构。 这些公司投资数百万美元以保持沟通的安全,并确保他们通过出售证书赚取不错的收入,但嘿,它的工作,他们也应该赚钱,就像其他人一样。

    编辑2:评论后

    我确实说你有一个安全的通信。 但是,您错过了使用自签名证书您不知道您安全地与谁谈话的观点。 想象一下,黑暗的房间与窃听对话完全隔离。 现在想象一下这样一间有光和无光房间的区别。 如果房间有光线,您可以实际看到您正在谈话的人,只选择与您想信任的人谈话。 现在想象在一个完全黑暗的房间里做同样的事情。 你只能希望你在这个黑屋子里面和你交谈的那个人只是一个盟友而不是你的对手。 但是,你无法知道,只是希望没关系。 虽然你的谈话本身是安全的,但是没有人能听到,你仍然没有“完全”的安全感。

    如果我是一个骗子,做一个中间人攻击,我可以创建一个自签名证书,而用户不会注意到。 所以将TLS与自签名证书一起使用的优点是,您至少具有协议实现的功能(甚至实现这一点也不容易)。 此外,您可以通过建议用户手动信任一次证书来避免丑陋的警告。 但是,这只有在回访者人数相对较少的情况下才有可能,对于公共网站来说,这并不是一个真正的解决方案。


    从客户的角度来看,这似乎并不安全。 两个(相关)问题:

  • 客户如何信任服务器? 如何验证服务器呈现的关键是属于它的关键?
  • 有可能做中间人攻击。 恶意代理可以在客户端看到它之前剥离并存储公钥,然后替换它自己,然后在客户端进行身份验证,存储并重新加密并发送响应时解密密码,以便客户端不会意识到某些事情向上。
  • 普通SSL有什么问题? 必须有一个共识,即它是安全的,否则供应商和组织会在一夜之间放弃对它的支持。 相比之下,大多数尝试发明一种时髦的新方法来“廉价”地实现安全性通常会错过一些基本的东西。


    它看起来像你想要做的很多东西都是由jquery插件JCryption提供的。 它甚至假定PHP作为后端,所以非常适合你。

    链接地址: http://www.djcxy.com/p/21767.html

    上一篇: Secure login: public key encryption in PHP and Javascript

    下一篇: OpenSSL client certificates vs server certificates