Dam*_*o17 1 javascript php encryption ssl
我需要实现一个免费的方案(没有SSL证书),它可以满足敏感数据传输,保护和存储的要求,假设相互信任的第三方不可用,也就是说,我们不能使用SSL,TLS等.但是这并不意味着我将自己实施SSL,我仍然希望将加密和解密部分外包给现有代码.
我已经起草了以下方案作为我的帐户和密码保护解决方案:
对我们的攻击者的假设:
完全了解协议.
可以访问常用密码的大型字典.
可以窃听客户端和服务器之间的所有通信.
可以在客户端和服务器之间拦截,修改和伪造任意消息.
可以访问客户端的源代码(包括加密代码).
解决方案:
RSA(分别在客户端和服务器站点加密和解密,公钥可以安全传输,如果密钥是由黑客获取的,则没有风险.)
SHA256/SHA512 /两次MD5(加密用户ID绑定Salt,都存储在服务器站点的数据库中.我在这里使用绑定盐来避免使用通用密码并防止彩虹表.)
注册新用户:
首先在服务器端生成RSA密钥(存储在会话中);
将公钥发送给客户;
将公钥存储在javascript变量中;
在所有后续请求中使用此密钥加密数据并发送到服务器;
使用存储在会话中的私钥来解密服务器端的用户帐户和密码;
使用随机盐的单向加密算法加密密码(如常见:SHA-256强于MD5);
将用户ID,哈希密码和随机盐(用户ID绑定)存储到数据库中(避免使用通用密码并构建特定的彩虹表).
现有用户登录:
首先在服务器端生成RSA密钥(存储在会话中);
将公钥发送给客户;
将公钥存储在javascript变量中;
在所有后续请求中使用此密钥加密数据并发送到服务器;
使用存储在会话中的私钥来解密服务器端的用户帐户和密码;
使用用户帐户从数据库中获取哈希密码和salt;
使用获得的随机盐,使用单向加密算法加密密码;
将加密密码与从数据库中获取的哈希密码进行比较;
确定登录成功或失败.
我是这方面的新手,我确实需要你的一些专业建议?该计划足够安全吗?非常感谢.
这里的主要问题是你正在做大量的工作而且你没有获得比自签名SSL证书更好的安全性,并且你把自己设定为负责任的一方来关闭任何可能的漏洞并保持你的系统的安全性(提示:这是一个大交易).
因此,如果您正在讨论一个通常可用的Web应用程序,您希望您的用户能够使用并安全地使用,那么支付签名的SSL证书确实是您唯一的选择.那说,一对夫妇注意到:
编辑:在阅读并思考更多关于您正在寻找的内容之后,我想我可能会为您提供解决方案.
您可能想要保护两件事:您的内容和用户凭据.你已经确定你的内容不值得花费每年35美元来保证,这是公平和完全合理的.您仍然希望为用户的凭据提供尽可能多的安全性,因为该信息对于他们以及将要利用它的人来说是有价值的.
即使您不想花钱来保护您的内容,您仍然希望它只能由有资质的用户访问.因此,不要让用户创建一个值得保护的用户名/密码,而是让他们使用他们的电子邮件地址登录.
您的内容和电子邮件地址可供具有足够技能和动力的第三方访问,但从您所说的内容来看,您的内容可能不值得付出那么多努力,而且他们的电子邮件地址也不那么敏感.但是你仍然可以在世界和你的内容之间建立一个登录网关,你可以利用双重选择来限制垃圾邮件等.你可以轻松扩展这样的系统以包含用户名/密码,如果你的内容使用SSL成长为需要它.
归档时间: |
|
查看次数: |
1084 次 |
最近记录: |