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


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 для получения ключа.


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 Какой хеш вы рекомендуете тогда?
Энтони
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.