什么是最好的盐腌和储存方式?

Nee*_*eel 12 security encryption passwords cryptography

嗨,大家好我读过有关密码腌制的信息,但这听起来有点奇怪.但是我如何储存和保护盐.例如,在多轮胎架构中,我说使用客户端机器的GUID生成我的盐然后用户被限制在一台机器上,但如果我使用随机盐,它必须存储在某处.几天后我看到了一个示例应用程序,每当创建一个新用户时,在客户端系统上生成散列和盐,然后将盐渍密码和散列传输到存储在SQL服务器中的服务器.但是,如果我遵循此方法并且数据库被泄露,则每个密码的密码和salt值将可供X人使用.那么,我应该再次加密/加密密码并在服务器端接收盐吗?腌制的最佳做法是什么?

Wim*_*nen 22

将未加密的盐存储在散列密码旁边的数据库中不是问题.

盐的目的不是秘密.它的目的是为每个哈希(即随机)提供不同的,并且足够长,以便在攻击者获取数据库时无法使用彩虹表.

请参阅Thomas Ptacek关于此主题的优秀文章.

编辑@ZJR:即使盐是完全公开的,它们仍然会破坏彩虹表的好处.当你有一个盐和散列数据时,你可以做的最好的逆转是强力(假设散列函数是加密安全的)

编辑@ n10i:有关安全散列函数,请参阅维基百科文章.至于盐的大小,流行的bcrypt .gensalt()实现使用128位.


Jer*_*ell 6

请花点时间阅读盐和散列的非常好的描述

Salt Generation和开源软件