有没有什么办法可以加密密码?

有没有什么办法可以加密密码?

我正在尝试 MySQL 中的主从复制,并且对纯文本密码有疑问。

当我在主服务器上创建一个帐户时,我尝试 以纯文本显示select * from mysql.slave_master_info;user_password

我想知道是否有一种不使用 SSL 的方法来加密密码?

从 mysql.slave_master_info 中选择 *

答案1

简短的回答是不行(至少在没有使用 SO_PEERCRED 的情况下不行,因为它仅限于 unix 域套接字 - 即不跨网络)。

并且 SSL(或更准确地说是 TLS)不会更改用于身份验证的令牌的存储表示。它用作身份验证机制,但私钥纯文本在提供证明的最后仍然必须可用。即,在这种情况下,TLS 私钥与 bg 密码没有什么不同。

您可以通过将此帐户的使用限制在特定地址(或 DNS 名称)来提供额外的保护以防止攻击。例如,仅允许从本地主机使用并使用 ssh 隧道(这将允许您使用 SO_PEERCRED 但将问题转移到 ssh 身份验证)。

更新

经过一番思考,我发现一种限制入侵范围的方法是使用机器的身份作为身份验证令牌的至少一部分。但是,尚不清楚这是否适用于您的用例。在云环境之外,实际上没有明确的机器身份概念,但您可以使用操作系统可用的序列号/硬件配置信息。但请注意,如果您插入新硬件,这种方法就会失效,并且只有在存储被入侵时(而不是主机被入侵时)才能保证密码的机密性:

echo "$BASE_PASSWORD $( lshw )" | md5sum

在主服务器上相应地设置密码,并配置启动脚本,以便在需要时将值注入从属数据库。

相关内容