评论https://gist.github.com/shadowhand/873637状态
“ECB 模式加密是一种相对简单的加密方法,提供高级别的混淆(或低级别的加密)。这种方法不是很安全,不应该用于敏感的个人数据,但效果很好例如,在公共(public) channel 中的私有(private)方之间传输源代码。为了更好的安全性,您可以将模式切换到 CBC,代价是每次修改都会完全更改每个文件。与所有加密一样,始终建议使用强 key 。 "
和
“这有点(部分)功能正确的加密定义 - ECB(点击此处查看解释)是一个有缺陷的遗留实现,目前没有人推荐使用它,并且只在 OpenSSL 中受支持,因为 OpenSSL 支持一些非常古老且破旧的遗留加密实现!它仅在今天作为学习工具有用,永远不应在当前系统中使用。
OFB 模式的 CBC 应该是默认模式 - 请考虑更改您的 Gist 以使用 CBC,并向那些愿意为了 git 的轻微便利而接受安全损失的人解释 ECB 的潜在好处和缺点。默认情况下,没有什么是不安全的!”
http://git.661346.n2.nabble.com/Transparently-encrypt-repository-contents-with-GPG-td2470145.html但是声明对 CBC 使用固定值的盐是不好的加密实践。如果我们将模式切换到 CBC(对于 https://gist.github.com/shadowhand/873637 或 https://github.com/shadowhand/git-encrypt ),它是否会使用固定值盐,因此是不好的加密实践?
(我也将这个问题作为对 https://gist.github.com/shadowhand/873637 的评论发布)
最佳答案
ECB 在用于加密唯一 block 时是安全的。例如,如果您有一组 secret key ,并希望所有这些 key 都有一个主 key ,ECB 是一个安全的选择。
当同一个 block 可以被多次加密时,ECB 是不安全的。例如,自然语言的较长段落可能包含重复的子字符串。或者,给定协议(protocol)的多个消息可能具有相同的前缀或后缀。使用带有此类纯文本的 ECB 将揭示纯文本中的模式。
术语“CBC 的固定值盐”没有任何意义。 “Salt”用于 key 派生——从密码创建 key 。 CBC 需要一个“初始化向量”,对于每条加密的消息,它必须是不可预测的。 (过去,一些损坏的密码协议(protocol)从密码生成 IV 和 key ;只有密码仅用于加密一条消息时,这才是安全的。)理想情况下,IV 由密码随机位生成器生成;在 CBC 模式下使用固定 IV 可以揭示消息前缀中的模式,很像 ECB。
要了解 ECB 在这里是否安全,需要更多的背景信息(问题应该是独立的,不包含不必要的信息)。然而,欧洲央行总是不安全的笼统说法是错误的;它在正确的应用程序中是安全的,并且其较短的密文有时可能很有值(value)。
关于git - Git-encrypt 中的错误加密实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31301583/