Met*_*orm 1 security hash cryptography salt
好的,所以我理解为什么在散列之前输入密码是个好主意.问题是,通常人们建议将盐附加或添加到密码中,为什么不同时使用?
我的想法是,所以如果黑客先生掌握数据库并希望得到人x的密码,他会认为自己,大多数人都建议附加或预先添加盐,所以我们这样做.他生成一个彩虹表密码+盐的所有组合,并试试他的运气.如果这不起作用他会做同样的但盐+密码.
为了使攻击变得更加困难,为什么开发人员不再采取进一步做"盐+密码+盐",或"反向(盐)+密码+盐",或者你可能很想要并开始切割密码/盐,开始在这里和那里放点盐等.
黑客能够找到密码的唯一方法是,他是否可以访问源代码(了解在散列之前如何将盐编织到密码中)
另外需要注意的是,人们建议在进行按键拉伸时至少进行1000次迭代,为什么不进行1147,1652等等:)
第二个注意事项,当查看哈希字符串时,是否可以计算出使用的哈希函数?
猜测应用盐的方式要比猜测密码更容易,特别是在攻击者拥有散列密码数据库和一个已知匹配数据(他自己的密码)的情况下.即使他不了解它,他也可以简单地使用他已知的密码和已知的哈希来强制盐和盐算法.
哈希算法也是如此.只有少数完整的哈希函数,并且任何有能力的管理员都可能正在使用其中一个.
密码学的前提之一是所有关于所用算法的信息都被认为是公开的.您不应该依赖攻击者来破坏您的系统,因为您使用的是一种模糊的算法来处理事务,因为与在这样的受损数据库上强制使用密码的代价相比,强制每个哈希算法都非常便宜.
如果将程序分发给用户,他们可以通过反汇编或调试来确切地弄清楚它是如何散列的.如果它是服务器程序,他们可能会遇到其他一些漏洞,或者他们可以购买/窃取/获取您的软件,或者其他什么.我甚至会说所有好的加密软件都是开源的:尽管整个世界都知道它是如何工作的,但它仍然不易破碎.
你想要依靠的是默默无闻的安全感.很多人和公司都将此作为保护其产品的一种方法.我记得的最后一件大事是赛门铁克PCAnywhere软件的源代码被盗.你可能还记得那是怎么回事.故事的道德是,如果没有人知道它是如何工作的,它是不安全的,如果每个人都知道它是如何工作的(并且它的加密声音)它是安全的.