【问题标题】:Does git history compromises files encrypted with OpenSSL?git history 是否会破坏使用 OpenSSL 加密的文件?
【发布时间】:2020-12-28 16:23:37
【问题描述】:

我使用 OpenSSL 加密包含敏感数据的文件:

openssl enc -aes-128-cbc -a -d -salt -pass pass:<my_custom_password> -in <file_path> -out "<out_file_path>" -md md5

当然,密码不会存储在 repo 中。

有时我需要解密此文件,对其进行更改,将其加密并推送到 repo。

如果我使用超过 40 个字符的长密码,有没有办法破解我的安全?

【问题讨论】:

  • 这与 Git 有什么关系?
  • 顺便说一句,除非您在命令开头包含空格,否则密码将在您的 shell 历史记录中。
  • 加密方面有据可查,例如security.stackexchange.com/questions/79913/… 。但是一个相当老练的攻击者不会尝试蛮力方法。还有无数其他的方法。 业余破解系统,专业破解人员 — Bruce Schneier
  • 我在门上放了一个表面硬化的核心硬化钛合金锁舌。如果我不给任何人钥匙,有没有办法闯入我的房子?如果你的房子是柏油纸和打包铁丝网的小屋,那么那个门栓对你没有多大好处。您描述的安全措施不会成为您防御的薄弱环节。

标签: git security encryption openssl


【解决方案1】:

如果可以避免,最好将敏感数据保存在存储库之外(例如,在 CI 系统的秘密存储中)。那是因为通常它被复制的次数较少,因此泄漏的可能性较小。

如果您选择了强密码和强算法,它将在很长一段时间内都是安全的。但是如果你犯了一个错误,并且不小心选择了一个弱算法,比如 RC4,或者你做出了其他错误的决定,那么如果不重写整个历史记录,就很难撤消。如果您确实选择了一个较弱的选择,并且攻击者控制了您的存储库(有时确实会发生这种情况),他们可能会攻击您数据的最弱版本。

至于您选择的算法和工具,没有理由出于任何原因使用 MD5,无论它在这种特殊情况下是否弱。现代版本的 OpenSSL 的默认值是 SHA-256,您应该明确指定它。 AES-128 很好,但是因为openssl enc 不支持任何消息完整性,攻击者可以篡改数据。这可能不是问题,因为 Git 将数据存储在一个类似于 Merkle 树的结构中,只要您能够验证您的历史记录完好无损,您就可以检测到它。

因此,虽然您的操作还可以,并且通常用于大型机密,但如果可能的话,最好将其存储在存储库之外的专用机密存储中。

【讨论】:

    【解决方案2】:

    这可以概括为一个问题:有没有像完全安全的散列/加密这样的东西?答案是否定的。

    这也可以概括为“X 安全吗?”答案也是

    假设不安全,并假设有一个聪明的、积极的和恶意的黑客正在积极投入无限的资源来收集您的数据,然后进行最安全的设置。

    完成后,定期重新评估您的安全性以确定您是否可以改进它。

    对此有平衡:

    如果您的安全性如此强大以至于您和您的员工几乎不可能获得访问权限,并且严重阻碍了您的工作效率,那么您可能需要考虑一种更好的方法来完成您的安全目标,或做出一些权衡。

    安全的重要心态是,实际上没有什么是安全的。如果您认为您的数据是安全的,您就会自满,而自满会导致数据泄露。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-17
      • 2018-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多