今天我在更新一些软件包后收到了由 Cygwin 中的 OpenSSL 发出的警告,我相信openssl
包括:
*** 警告:使用了已弃用的密钥派生。
使用-iter
or-pbkdf2
会更好。
Cygwin 中使用的OpenSSL 版本是:
OpenSSL 1.1.1b 26 Feb 2019
这发生在解密我在Linux Mint 19.1上创建的 BluRay 备份时,其中 OpenSSL 版本明显较旧:
OpenSSL 1.1.0g 2 Nov 2017
用于加密和解密的命令(只是添加-d
到末尾)是:
$ openssl enc -aes-256-cbc -md sha256 -salt -in "${InputFilePath}" -out "${OutputFilePath}"
这个警告是什么意思,我可以做些什么来避免它在未来的备份中?
比较 OpenSSL 的两个主要版本和最新版本的 Synopsys,让我引用手册页。
OpenSSL 1.1.0
OpenSSL 1.1.1
显然有一些更大的差异,即考虑到这个问题,1.1.0中缺少这两个开关:
pbkdf2
iter
你现在基本上有两种选择。忽略警告或将加密命令调整为:
这些开关在哪里:
-aes-256-cbc
是您应该使用的最大保护或 128 位版本,3DES(三重 DES)在一段时间前被放弃了,请参阅 三重 DES 已在 2017 年被 NIST 弃用,而 AES 被所有现代 CPU 加速了很多;您可以简单地验证您的 CPU 是否具有AES-NI 指令集,例如使用grep aes /proc/cpuinfo
; 赢,赢-md sha512
与 SHA-256 相比,它是 SHA-2 函数系列的更快变体,虽然它可能更安全一些;赢,赢-pbkdf2
: 使用PBKDF2 (Password-Based Key Derivation Function 2) 算法-iter 100000
正在覆盖密码的默认迭代次数,引用手册页:最近我安装了最新版本的cygwin。“openssl”开始发出警告:
所以现在我使用以下内容进行加密:
以及用于解密的以下内容:
听起来 OpenSSL 在至少 6 年后终于承认该
enc
命令存在一些相当严重的缺陷(他们自己的手册页称它们为“错误”)。也许它们现在正在修复,但如果您的数据非常重要,为什么不使用(相对)更安全的工具,如GnuPG呢?您也不一定需要使用公钥加密,gpg 也使用常规(仅限密码/密钥文件)加密。这是我的其他答案的摘录,重点介绍了基础知识:
第一篇文章的评论之一甚至提到这些问题已经存在了近 10 年......
这是使用 gpg 进行对称加密的示例。
简而言之:
和