Tom*_*lák 35 encryption openssl
当我加密或解密文件时,我得到 *** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
我不明白这意味着什么,我应该如何更改我的程序。你可以帮帮我吗?我用加密openssl des3 <input >output.des3和解密 openssl des3 -d <input.des3 >output
关于环境
Ubuntu 18.10
~$ openssl version
OpenSSL 1.1.1 11 Sep 2018
小智 24
比较 OpenSSL 的两个主要版本和最新版本的 Synopsys,让我引用手册页。
Run Code Online (Sandbox Code Playgroud)openssl enc -ciphername [-help] [-ciphers] [-in filename] [-out filename] [-pass arg] [-e] [-d] [-a/-base64] [-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-S salt] [-salt] [-nosalt] [-z] [-md digest] [-p] [-P] [-bufsize number] [-nopad] [-debug] [-none] [-engine id]
Run Code Online (Sandbox Code Playgroud)openssl enc -cipher [-help] [-ciphers] [-in filename] [-out filename] [-pass arg] [-e] [-d] [-a] [-base64] [-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-S salt] [-salt] [-nosalt] [-z] [-md digest] [-iter count] [-pbkdf2] [-p] [-P] [-bufsize number] [-nopad] [-debug] [-none] [-rand file...] [-writerand file] [-engine id]
显然有一些更大的差异,即考虑到这个问题,1.1.0中缺少这两个开关:
pbkdf2
iter
你现在基本上有两个选择。忽略警告或将您的加密命令调整为:
openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -salt -in InputFilePath -out OutputFilePath
Run Code Online (Sandbox Code Playgroud)
这些开关的位置:
-aes-256-cbc是您应该使用的最大保护还是 128 位版本,3DES(三重 DES)不久前被放弃,请参阅 NIST 在 2017 年弃用了三重 DES,而所有现代 CPU 都大大加速了 AES;您可以简单地验证您的 CPU 是否具有AES-NI 指令集,例如使用grep aes /proc/cpuinfo;赢,赢
-md sha512 与 SHA-256 相比,是 SHA-2 函数系列的更快变体,但它可能更安全一些;赢,赢
-pbkdf2: 使用PBKDF2 (Password-Based Key Derivation Function 2) 算法
-iter 100000 正在覆盖密码的默认迭代次数,引用手册页:
在导出加密密钥时对密码使用给定的迭代次数。高值会增加对结果文件进行暴力破解所需的时间。此选项允许使用 PBKDF2 算法来派生密钥。
另一个答案基本上是正确的。尽管这些版本(v1.1.0 和 v1.1.1)的其他事情发生了变化,但值得注意的是。
首先,默认密码哈希摘要已更改,从 md5 更改为 sha512
其次添加了长期以来需要的“-pbkdf2”“-iter”。然而,默认的迭代计数太低了,应该设置得尽可能高,但又不会变得太烦人。对于加密和解密来说,大到需要 1 到 2 秒通常是可以接受的,但对于暴力破解密码来说却非常困难。
问题是现在我们有了所有这些新选项和默认值,以及不同的摘要和密码,您需要记住所有这些选项才能解密加密文件。这就是决定加密的任何选项都必须用于解密。然而,openssl 仅存储一些“文件魔法”(例如文件开头的“Salted__”)以及加密文件中使用的随机“盐”。它让你记住其他一切!
Aespipe 是一个旧程序,它通过将其中一些信息保存为加密数据的额外标头来解决此问题,但它现在已经过时,并且其格式不允许新选项或易于扩展。
作为替代方案,我一直在创建一个新脚本“keepout”作为“openssl enc”的包装器,以保存记住如何解密该特定文件所需的额外选项,即使使用更新的选项、密码或更大的迭代也是如此加密时。基本上它保存了数据所需的 openssl 选项。
https://antofthy.gitlab.io/software/#keepout