Git-encrypt 中的错误加密做法?

Bad crypto practice in Git-encrypt?

https://gist.github.com/shadowhand/873637 状态的评论

"ECB mode encryption is a relatively simple method of encryption that provides a high level of obfuscation (or a low level of encryption). This method is not very secure and should not be used for sensitive personal data, but would work well for eg. transmitting source code between private parties in a public channel. For better security, you can switch the mode to CBC at the cost of having every file change completely for every modification. As with all encryption, a strong key is always recommended."

“这是功能正确加密的(部分)定义 - ECB(单击此处查看解释)是一种有缺陷的遗留实现,目前没有人推荐使用它,并且仅在 OpenSSL 中受支持,因为 OpenSSL支持一些非常古老且不稳定的遗留加密实现!它仅在今天作为学习工具有用,永远不应在当前系统中使用。

OFB 模式的 CBC 应该是默认模式 - 请考虑更改您的要点以使用 CBC,并为那些为了稍微方便而愿意接受安全损失的人解释 ECB 的潜在好处和缺点 git。默认情况下,没有什么是不安全的!"

http://git.661346.n2.nabble.com/Transparently-encrypt-repository-contents-with-GPG-td2470145.html 但是声明使用固定CBC 的 -valued salt 是不好的加密实践。如果我们将模式切换到 CBC(对于 https://gist.github.com/shadowhand/873637https://github.com/shadowhand/git-encrypt),它会使用固定的-值盐,因此是不好的加密实践?

(我也将这个问题作为对 https://gist.github.com/shadowhand/873637 的评论发布)

ECB 用于加密唯一块时是安全的。例如,如果您有一组秘密密钥,并希望所有这些密钥都有一个主密钥,ECB 是一个安全的选择。

当同一个块可以被多次加密时,ECB 是不安全的。例如,自然语言的较长段落可能包含重复的子字符串。或者,给定协议的多个消息可能具有相同的前缀或后缀。使用带有此类纯文本的 ECB 将揭示纯文本中的模式。

"fixed-value salt for CBC" 这个词没有任何意义。 "Salt" 用于密钥派生——从密码创建密钥。 CBC 需要一个 "initialization vector,",对于每条加密的消息,它必须是不可预测的。 (过去,一些损坏的密码协议从密码生成 IV 和密钥;只有密码仅用于加密一条消息时,这才是安全的。)理想情况下,IV 由密码随机位生成器生成;在 CBC 模式下使用固定 IV 可以揭示消息前缀中的模式,很像 ECB。

要了解 ECB 在这里是否安全,需要更多的上下文(问题应该是独立的,不包括不必要的信息)。然而,欧洲央行总是不安全的笼统说法是错误的;它在正确的应用程序中可以是安全的,并且其较短的密文有时很有价值。