小编典典

你在哪里存放你的盐串?

all

在对数据库存储密码进行哈希处理时,我总是使用正确的每个条目的盐字符串。根据我的需要,将盐存储在散列密码旁边的数据库中始终可以正常工作。

但是,有些人建议将盐与数据库分开存储。他们的论点是,如果数据库被入侵,攻击者仍然可以构建一个彩虹表,考虑到一个特定的盐字符串,以便一次破解一个帐户。如果这个账户有管理员权限,那么他可能甚至不需要破解任何其他人。

从安全角度来看,将盐存放在不同的地方是否值得?考虑在同一台机器上具有服务器代码和数据库的 Web
应用程序。如果盐存储在该机器上的平面文件中,那么如果数据库被破坏,盐文件也将被破坏。

有什么推荐的解决方案吗?


阅读 66

收藏
2022-04-26

共1个答案

小编典典

彩虹表的关键在于它们是提前创建并大量分发以节省其他人的计算时间 -
动态生成彩虹表所需的时间与直接破解密码+盐组合所需的时间一样长(因为实际上,在生成彩虹表时正在执行的操作是预先运行用于暴力破解哈希的计算),因此通过知道盐某人可以“生成彩虹表”的论点是虚假的。

只要将盐存储在单独的文件中,只要它们是基于每个用户的,就没有真正的意义-盐的目的只是为了使彩虹表无法破坏数据库中的每个密码。

2022-04-26