Git-encrypt中的加密操作不好?

时间:2015-07-08 19:08:13

标签: git encryption cryptography gnupg cbc-mode

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

“ECB模式加密是一种相对简单的加密方法,可提供高级别的混淆(或低级别的加密)。这种方法不是很安全,不应该用于敏感的个人数据,但是效果很好例如,在公共频道中的私人方之间传输源代码。为了更好的安全性,您可以将模式切换到CBC,代价是每次修改都要完全更改每个文件。与所有加密一样,始终建议使用强密钥。 “

“这是功能正确加密的定义(部分) - ECB(点击此处查看说明)是一个有缺陷的遗留实现,目前正在使用当前正在使用的人,并且仅在OpenSSL中支持,因为OpenSSL支持一些非常古老而吱吱作响的传统加密实现!它仅在今天作为学习工具有用,绝不应该在当前系统中使用。

OFB模式的CBC应该是默认值 - 请考虑更改您的要点以使用CBC并解释ECB的潜在好处以及那些希望接受安全性损失以便git轻微方便的人的缺点。默认情况下,什么都不应该是不安全的!“

然而,

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)的评论

1 个答案:

答案 0 :(得分:4)

当ECB用于加密唯一的块时,它是安全的。例如,如果您有一组密钥,并希望所有密钥都使用主密钥,那么ECB是一个安全的选择。

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

术语“CBC的固定值盐”没有任何意义。 “Salt”用于密钥派生 - 从密码创建密钥。 CBC需要一个“初始化向量”,对于每个加密的消息,它必须是不可预测的。 (过去,一些破解的加密协议从密码生成了IV和密钥;只有在密码用于加密一条消息时才是安全的。)理想情况下,IV由加密随机比特生成器生成;在CBC模式下使用固定的IV可以显示消息前缀中的模式,就像ECB一样。

要知道欧洲央行在这里是否安全,需要更多背景(问题应该是自成一体的,不包括不必要的信息)。然而,欧洲央行总是不安全的一揽子声明是错误的;它可以在正确的应用程序中安全,其较短的密文有时可能是有价值的。