8.0的默认密码插件:从 MySQL 8.0.4 开始,MySQL 默认身份验证插件从 mysql_native_password
改为 caching_sha2_password
5.6、5.7的默认密码插件:mysql_native_password
mysql_native_password使用的是于 SHA1 算法,不需要加密的连接。该插件验证速度特别快,但是
不够安全;
ha256_password 认证插件。它使用一个加盐密码(salted password)进行多轮 SHA256 哈希(数
千轮哈希,暴力破解更难),以确保哈希值转换更安全。但是,建立安全连接和多轮 hash 加密很耗费
时间。虽然安全性更高,但是验证速度不够快。
caching_sha2_password是sha256_password的代替方案,在sha256_password 的基础上进行了改
进补上了短板,既解决安全性问题又解决性能问题。与此同时 sha256_password将退出时代的浪潮。
mysql_native_password 作为 MySQL 5.6/5.7 的默认密码插件 。其优点是它支持 challenge-
response (挑战应答方式),这是非常快的验证机制,无需在网络中发送实际密码,并且不需要加密
的连接。
客户端 实例时,首先需要从服务器端获得一个20字节的随机数。
此外,mysql_native_password 使用了新的 进行认证校验。对于用户的原始密码,通过
SHA1(SHA1(password))两次哈希计算结果保存在 mysql.user 表的 authentication_string 列中。其
中用户密码通过哈希计算后保存,没有加盐(salt)。
通过上述这样的处理,MySQL数据库本身已然非常安全。然而,随着时间的推移,目前存在以下两种
潜在风险:
SHA1、MD5等之前的哈希算法都已然不再安全,更为安全的SHA256、SHA512哈希算法也已推出。
作为数据存储最终承载者,应该使用更新的加密机制机制。
在cache_sha2_password密码认证机制下,其改进如下所示:
不同版本对应的身份认证插件
不同认证插件特点
具体机制分析
mysql_native_password
连接MySQL
哈希算法
SHA1哈希算法也已经变得比较容易破解。
相同的密码拥有相同的哈希值。
caching_sha2_password
保存在authentication_string 中的哈希值为加盐后的值,即使两个不同用户的密码相同,保存在计算机中的哈希
值也不同。
哈希算法升级为了更为安全SHA256算法。
哈希算法的 round 次数从原来的两次,提升为了5000次,round次数越多,每次计算哈希值的代价越大,破解
难度也就越大。
评论