git - Git-encrypt 中的错误加密实践?

标签 git encryption cryptography gnupg cbc-mode

评论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/873637https://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/

相关文章:

android - 如何将 aes 256 加密数据发送到 Web 服务器?

c - 如何访问不同程序中的变量值?

java - 为什么 DesEncrypter 的 iOS 实现不会产生与 Java 相同的结果?

delphi - 如何使用 Delphi 创建视觉挑战/响应以恢复对应用程序的访问?

gitbranch -r 缺少分支名称

github 工作流程-致命的 : not a git repository (or any of the parent directories): . git

c# - 加密二维码的开源实现

python - 如何安装matplotlib? [Python]

git - 是否有可以使用白名单而不是黑名单的(开源)VCS?

linux - git - "ignore"或避免版本控制子目录