Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 我们需要使用固定盐和BCrypt吗?_Security_Hash_Passwords_Bcrypt_Salt - Fatal编程技术网

Security 我们需要使用固定盐和BCrypt吗?

Security 我们需要使用固定盐和BCrypt吗?,security,hash,passwords,bcrypt,salt,Security,Hash,Passwords,Bcrypt,Salt,Brypt为每个密码生成一个随机salt。这可以防止彩虹表攻击。但这可以防止暴力攻击吗?我的意思是,如果用户选择了一个弱的通用密码,可以对已知密码列表进行暴力攻击。因此,我的想法是将用户密码与一个固定的salt连接起来,并最终与一个用户id salt(即:user pseudo)连接起来。如果攻击者无法访问软件的代码(如果他只攻击数据库),那么他将无法使用已知密码列表的暴力攻击来找到真正的密码 那么好的方法是什么呢 Bcrypt(apassword) 或 或 正如您所写的,salt可以防止彩

Brypt为每个密码生成一个随机salt。这可以防止彩虹表攻击。但这可以防止暴力攻击吗?我的意思是,如果用户选择了一个弱的通用密码,可以对已知密码列表进行暴力攻击。因此,我的想法是将用户密码与一个固定的salt连接起来,并最终与一个用户id salt(即:user pseudo)连接起来。如果攻击者无法访问软件的代码(如果他只攻击数据库),那么他将无法使用已知密码列表的暴力攻击来找到真正的密码

那么好的方法是什么呢

Bcrypt(apassword) 


正如您所写的,salt可以防止彩虹表攻击,但无助于对抗暴力强迫,正是BCrypt的缓慢缓解了暴力强迫。BCrypt提供了一个成本因子,它控制计算单个散列所需的时间

通过使用服务器端密钥(任何类似AES-256的算法)对计算出的哈希进行加密,可以更好地实现所需的额外保护。密钥不会成为散列的一部分,并且可以在必要时进行交换。其优点与固定salt(实际上称为pepper)相同,只有在服务器上具有权限的攻击者才能开始破解密码哈希。在我关于安全存储密码的演讲结束时,我试图解释这一点


因此,让salt完成它的工作,不要将其与其他任务混淆,而是在之后加密密码散列。

强制用户输入安全密码?这不是一个选项,首先,它不是很容易做到(我们的应用程序使用每种语言),其次,它可能会让用户感到厌烦,使其无法完成注册过程。这样可能会有帮助,但不是真的,我不担心通过api调用进行暴力攻击(我们可以轻松阻止)但是关于直接对黑客获得的数据库进行暴力攻击……我唯一能想到的是随机分配密码散列顺序,这样他们就无法将其与散列数据库进行匹配,但我会让更多这方面的专家来讨论
bcrypt(apassword+pseudo)
bcrypt(apassword+pseudo+fixedsalt)