我被教导说,当一个人不知道门是否存在时,没有人试图打开一扇门。最好的防御就是隐藏一扇门。在旧的战争电影中可以很容易地看到 - 没有人会在光明中保留隐藏处。它总是被一些东西所覆盖,表明那里没有什么有趣的东西。'
我认为密码学中的工作方式相同。 为什么然后由MD5生成的哈希从$ 1 $开始,并且首先告诉这是什么哈希,然后是什么样的哈希(MD5)?
现在,我看到sha512完全一样。它本身不是一个弱点吗?有什么特别的理由让我们这样做吗?
主要问题是:我应该在存储它之前加扰我的哈希值以隐藏潜在的敌人吗?如果没有必要那么为什么呢?
由于我看到的答案暗示默默无闻并非安全,我建议这张照片。这是第二次世界大战。你刚刚收到一条提示,SS正要到你家里怀疑你是在躲藏游击队员,这是事实。他们没有时间逃脱。你有两个选择,你可以隐藏它们 - 在世界上最好的安全,或在地板下面隐藏的洞,隐藏得很好,即使你的父母也不会怀疑它在那里。你的建议是什么?你能说服自己最好的保险是最好的选择吗?
如果我知道岛上隐藏着一个宝藏,那么我想知道它是哪个岛屿,或者我不会开始搜索。
我仍然不相信。到目前为止,Chris Jester-Young在建议可以有更多算法从不同数据生成相同的哈希时,给了我一些思考。
我已将此问题移至加密交换与编辑评论,我不是在寻找私人意见,而是最终决定保持这种方式的来源。 如果“暂停”' state表示可能会删除该问题,请将其删除。
答案 0 :(得分:1)
安全性的一个基本原则是,您的目标是最大限度地减少需要隐藏的事物的数量,以便减少可能被泄露的事物。
在Unix密码的情况下,算法和盐不需要隐藏,因此它们不是。盐的安全性在于它的独特性,而不是它的保密性,如果你使用运行缓慢的散列算法(建议使用bcrypt和scrypt),如果用户选择长的话,它将使批量密码猜测不太可行密码。
理论上你可以争辩说,如果你"砍掉"算法标识符,系统可以通过并尝试每个支持的算法的密码。然而,这引入了一个新的弱点:假设您使用算法1加密了用户的密码,但是砍掉了算法标识符。如果攻击者使用了不正确的密码,对于算法1(显然)无效,但是恰好验证了算法2,该怎么办?您只是允许攻击者使用错误的密码进入。通过修复正在使用的特定算法,攻击者无法获得这个机会。
答案 1 :(得分:0)
通过默默无闻的安全永远不是一件好事。您是否更信任一个需要隐藏其使用的散列算法?