【问题标题】:How secure is authentication in mysql protocol?mysql 协议中的身份验证有多安全?
【发布时间】:2012-06-25 15:48:20
【问题描述】:

我的用户正在使用 MS Access 和 ODBC 连接器连接到我的远程 MySQL 数据库。我想知道这有多安全,就可能向第三方泄露密码而言。 mysql 协议认证对窃听甚至中间人攻击是否安全?我对防止窃听的安全性感到非常满意。请注意,我关心的只是身份验证,我不关心数据泄露。

请不要回复说我应该使用 SSL。我知道这将是理想的,但设置似乎并不简单。无论如何,我想知道纯mysql协议的安全级别是多少。

【问题讨论】:

    标签: mysql security protocols


    【解决方案1】:

    您希望“可以安全地进行窃听甚至中间人攻击”是什么?您的密码,还是您的数据?

    您的问题的标题特指身份验证。 MySQL 在保护您的密码免受窃听方面做得很合理(它不是以明文形式发送的,并且使用 nonce 可以避免重放攻击)。引用MySQL protocol internals

    MySQL 4.1 及更高版本

    记住 mysql.user.Password 存储 SHA1(SHA1(password))

    • 服务器向客户端发送随机字符串(加扰)
    • 客户端计算:
      • stage1_hash = SHA1(password),使用用户输入的密码。
      • token = SHA1(scramble + SHA1(stage1_hash)) XOR stage1_hash
    • 客户端将令牌发送到服务器
    • 服务器计算
      • stage1_hash' = token XOR SHA1(scramble + mysql.user.Password)
    • 服务器比较 SHA1(stage1_hash') 和 mysql.user.Password
    • 如果它们相同,则密码没问题。

    (注意SHA1(A+B)是A和B串联的SHA1。)

    此协议修复了旧协议的缺陷,既不窥探 wire 或 mysql.user.Password 都足以成功 连接。 但是当一个人同时拥有 mysql.user.Password 和 截获了网络上的数据,他有足够的信息可以连接。

    但是,经过身份验证的会话以明文形式继续:窃听者将能够看到所有查询和结果;并且 MITM 将能够对其进行更改。如the manual中所述:

    默认情况下,MySQL 在客户端和服务器之间使用未加密的连接。这意味着有权访问网络的人可以查看您的所有流量并查看正在发送或接收的数据。他们甚至可以在数据在客户端和服务器之间传输时更改数据。

    虽然您可能不喜欢这个答案,但 SSL 是工具,旨在抵御数据窃听(否则通信如何加密?)和 MITM 攻击(任何一方如何验证其peer 是它认为的那个人?)。事实上,如果 mysql 客户端-服务器协议单独战胜了这些威胁,那么就没有理由在 SSL 上使用 mysql(因此它不太可能成为受支持的配置)。

    【讨论】:

    • 你所说的“对窃听甚至中间人攻击是安全的”是什么意思:正如你所说,普通的 mysql 协议不是 MITM 安全的,我担心现在只有在身份验证可以安全窃听的情况下。如果有人窃听,他是否能够获得足够的信息来对 mysql 服务器进行身份验证?我不介意他只是在看数据...谢谢您的回答!
    • @Tomas:不,正如我的回答所说,他只会看到密码哈希的加密形式,由于使用随机数而无法重播。但是,如果能够操纵数据包,他就可以劫持会话以执行他喜欢的任何命令。
    • 对不起,我不明白你所说的“nonce”是什么意思。是服务器发送的随机字符串吗?
    • @Tomas:是的,它确保客户端在每次连接尝试时的响应都是不同的,并且只有知道正确的密码哈希才能预测正确的响应。请参阅this article on Wikipedia 了解更多信息。
    • 谢谢!您发布的 mysql 文档的链接非常有用,我通过包含其中非常重要的部分来完成您的回答。谢谢!
    【解决方案2】:

    简短回答:是的,该协议不受窃听和 MITM 攻击。

    只有当攻击者设法嗅探身份验证尝试并且如果攻击者知道 mysql.user 的内容,然后他才能随后对服务器进行身份验证。例如,如果您在两台不同的 mysql 服务器上使用相同的密码,并且攻击者获得了其中一台的访问权限,他也可以连接到第二台服务器。

    【讨论】:

    • 你确定这个协议对 MITM 是安全的吗?我不明白你对第二段的意思。当然,当攻击者嗅探密码时,他可以连接它..
    猜你喜欢
    • 1970-01-01
    • 2018-11-19
    • 2014-07-26
    • 2016-03-02
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多