作者 | Nathilia Pierce

译者 | 弯月,责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

php用户密码加密法式员是若何处置暗码的 NoSQL

以下为译文:

如今,密码仍旧是紧张的身份验证办法——以某种熟习的形式。
人类很

人们在保护密码方面进行了很多研究和思考。
我们所用的密码便是寻衅-应答式(Challenge-Response)认证方案中最大略的形式。

由于寻衅问题“您的密码是什么?”会被反复讯问,应答也会反复利用,因此为重放攻击(replay attack)洞开了大门。

选择精确的哈希算法

Argon2是一个密钥派生函数,它是最好的密码哈希算法,因此新项目该当考虑利用该算法。
如果你无法利用Argon2,则可以考虑Scrypt。
其他密钥派生函数都不应考虑在内。

Argon2i可以抵御旁路攻击(side-channel attack),而Argon2d则可以抵御时空平衡攻击(time-memory tradeoff attack)。
Argon2id是两者的结合,可以同时抵抗两种攻击,并且适用于大多数情形。

因此,我们都该当利用Argon2id。

精确地给哈希“加盐”

“盐”与Nonce(只利用一次的随机数)密切干系,然而,Nonce只能用于通信协议,无法用于哈希。
Nonce可以防止重放攻击,而“盐”可以防止预先打算好的哈希(别号彩虹表)。
区分二者很主要,由于它们预防的攻击是不同的。

“盐”唯一的哀求是它该当对付每个哈希是唯一的,而且是公开的,但为了防止加盐后的哈希被预先打算,“盐”的产生应该是不可预测的。

我们可以认为,密码学安全伪随机数天生器产生的32字节输出是不可预测的唯一值。

精确地给哈希“加胡椒”

如果你曾研究过互联网的“盐”,那么你可能也听说过“胡椒”。
“胡椒”是一种密钥,用于哈希函数,“胡椒”不可预测且对每个运用程序来说都是唯一的。

等等,听起来很像是密钥散列认证码,对吗?没错,它便是。
你必须非常小心地实现“胡椒”,由于它可能引发长度扩展攻击和Bcrypt的棘手问题。

Argon2的官方规范中实现了一个secret value,可以充当“胡椒”的可选参数。
如果你利用的实现不支持secret value,那么请对哈希进行加密。
如果你不该用Argon2,那么请对哈希进行加密。

不要在实现“胡椒”和加密哈希上摧残浪费蹂躏韶光,你不会得到任何的实际好处,而且你该当将密钥存储在硬件安全模块中。

库与做事

你不应该在生产中利用自己编写的身份验证系统,而是该当利用现成的库和做事。
但是你该当学习如何实现身份验证系统及其事情事理。

如果你是PHP开拓职员,则可以利用内置的password_hash函数,若利用Halite则更佳。
请确保你利用的PHP 7.2及更高的版本。
请把稳,PHP的默认密码哈希算法是Bcrypt。

利用Halite进行哈希处理,然后对你的密码进行加密。
该库须要一个密钥来存储密码。

PargonIE\Halite\Password::hash($_POST[\公众password\公众], $encryptionKey);

可以考虑的第三方办理方案包括:

SimpleLogin

Okta

OpenID

利用合理的密码政策

最大长度不少于128个字符。

最小长度为12或16个字符。

支持所有(至少支持绝大部分)的Unicode和空缺。

通过HIBP API谢绝已知密码。

谢绝与标识符同等的密码,例如电子邮件、用户名。

不要逼迫利用分外字符、大写、小写、符号等。

不要以任何办法截取、清理或格式化密码!

不要阻挡将密码复制并粘贴到密码字段中。

不要限定密码字段中可以输入或不能输入的字符。

不要频繁哀求变动密码。

最主要的是密码本身的长度和信息量。
请抑制你内心的渴望,不要逼迫实行上述任何密码策略,与其这样还不如履行成分身份验证,可以更好地保护用户的账号。

如果逼迫实行某个密码策略,那么用户可能会被迫写下密码,他们会忘却密码,会感到不厌其烦或选择保护度过弱的密码。
如果你逼迫用户变动密码,他们也会将密码写下来。

正如@nylen指出的那样,密码和标识符之间该当保持莱文斯坦间隔(Levenshtein间隔),如果跨入危险间隔内则谢绝密码。
当然你该当设定合理的最小间隔。

鼓励用户利用良好的做法

鼓励用户利用diceware、passphrases、密码管理器(如BitWarden)和多成分身份验证(FIDO和TOTP协议)。

不鼓励用户利用姓名、日期、生日等个人信息作为密码,还要建议用户尽可能不要与他人共享密码。

补充

利用TLS 1.2及更高版本(SSL协议的后续版本)保护通信。
否则,敏感信息(密码)会被公开,即便采取最新的哈希也无济于事。

不要通过手机短信实现多成分身份验证!
SIM卡交流诱骗和诱骗电话很随意马虎获取验证码。

原文:https://dev.to/nathilia_pierce/how-to-process-passwords-as-a-software-developer-3dkh

本文为 CSDN 翻译,转载请注明来源出处。

【End】