使用数据哈希作为盐

gam*_*000 1 hash cryptography salt

我在想 - 使用哈希作为自身的盐有什么缺点吗?

例如hashAlgorithm(data + hashAlgorithm(data))

这可以防止查找表的使用,并且不需要在数据库中存储salt.如果攻击者无法访问源代码,他就无法获得算法,这会使暴力破解变得更加困难.

思考?(我有一种直觉,认为这很糟糕 - 但我想检查它是否真的如此,如果是,为什么.)

Wim*_*Wim 6

如果攻击者无法访问源代码

这被称为" 通过默默无闻的安全 ",这一直被认为是不好的.本质上安全的方法总是更好,即使唯一的区别在于你不觉得保存"因为他们不知道如何".有人可以而且将永远找到算法 - 通过仔细分析,反复试验,或者因为他们通过SSH连接到您的共享托管服务或其他任何一种方法找到了源代码.


eri*_*son 6

使用数据的哈希盐的数据是不是安全.

盐的目的是通过其他方面相同的输入产生不可预测的结果.例如,即使许多用户选择相同的输入(例如密码),在应用好盐之后,您(或攻击者)也无法分辨.

当salt是数据的函数时,攻击者可以预先计算查找表,因为每个密码的salt都是可预测的.

从用随机种子初始化的加密伪随机数发生器中选择最佳盐.如果您真的无法存储额外的盐,请考虑使用每个用户不同的内容(如用户名),以及特定于应用程序的内容(如域名).这不如随机盐好,但它没有致命的缺陷.

记住,盐不需要是秘密的,但它不能是被盐腌数据的功能.