Как мне изменить шифрование в соответствии с *** ПРЕДУПРЕЖДЕНИЕ: устаревший ключ используется

16

Когда я шифрую или дешифрую файл, я получаю *** 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

Томми Поллак
источник
1
3DES как метод шифрования удаляется. В предупреждении просто предлагается использовать другой метод, возможно, обратитесь к crypto.stackexchange.com/questions/51629/… за более подробной информацией.
Guiverc
1
Эта ошибка происходит для любого вида шифров. Вам нужно добавить -pbkdf2 для обеих команд шифрования и дешифрования.
Даниэле Деллафиоре
Извините, но не могли бы вы привести пример того, как добавить -pbkdf2 к командам? Я не понимаю, как это должно быть добавлено.
Томми Поллак
1
В вашем примере вам просто нужно сделать openssl des3 -e -pbkdf2 < input > output.des3и openssl des3 -d -pbkdf2 < input.des3 > output. Я также согласен с первым комментарием, что вы должны использовать другой блочный шифр вместо 3DES (DES - с 1977 года), простой способ сделать это - просто поменять местами то, что у aes256вас есть des3в этих командах, чтобы использовать AES ( 256-битный AES соответствует современным стандартам безопасности).
Джоэлхарди
Благодарность! Теперь работает и без предупреждений используя aes256. Итак, на вопрос дан ответ.
Томми Поллак

Ответы:

12

Сравнивая Synopsys двух основных и последних версий OpenSSL, позвольте мне процитировать man-страницы.

OpenSSL 1.1.0

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]

OpenSSL 1.1.1

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

Где эти переключатели:

  • -aes-256-cbcэто то, что вы должны использовать для максимальной защиты или для 128-битной версии, 3DES (Triple DES) было заброшено некоторое время назад, см. Triple DES устарел в NIST в 2017 году , в то время как AES значительно ускоряется всеми современными процессорами; Вы можете просто проверить, имеет ли ваш процессор набор команд AES-NI, например, с помощью grep aes /proc/cpuinfo; победа, победа

  • -md sha512 более быстрый вариант семейства функций SHA-2 по сравнению с SHA-256, хотя он может быть немного более безопасным; победа, победа

  • -pbkdf2: используйте алгоритм PBKDF2 (функция определения ключа на основе пароля 2)

  • -iter 100000 переопределяет количество итераций по умолчанию для пароля, цитируя man-страницу:

    Используйте определенное количество итераций для пароля при получении ключа шифрования. Высокие значения увеличивают время, необходимое для грубой силы результирующего файла. Эта опция позволяет использовать алгоритм PBKDF2 для получения ключа.

LinuxSecurityFreak
источник
1
Затем, как расшифровать его при использовании openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 1000 -salt -in InputFilePath -out OutputFilePath
L Mingzhi
1
Просто добавив -dк команде:openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 1000 -salt -d -in InputFilePath
Эдуард Итрич
1
Я уверен, что есть несколько проблем с этим предложением. Согласно en.wikipedia.org/wiki/Key_derivation_function вы хотите самый медленный вариант алгоритма получения ключа. Другими словами, не используйте sha512 Согласно en.wikipedia.org/wiki/PBKDF2 in the year 2000 the recommended minimum number of iterations was 1000, but the parameter is intended to be increased over time as CPU speeds increase - поэтому я рекомендую где-то между 10 000 и 100 000 итераций, а не 1000.
oskarpearson
@oskarpearson Правда, я только что прочитал это. Обновление ответа.
LinuxSecurityFreak
@oskarpearson Какой хеш вы рекомендуете тогда?
Энтони