Jak zmienić szyfrowanie zgodnie z *** OSTRZEŻENIE: użyto przestarzałego wyprowadzania klucza

17

Po zaszyfrowaniu lub odszyfrowaniu pliku otrzymuję *** WARNING : deprecated key derivation used. Using -iter or -pbkdf2 would be better.

Nie rozumiem, co to znaczy, jak powinienem zmienić moje procedury. Czy mógłbyś mi pomóc? Szyfruję openssl des3 <input >output.des3i dekoduję za pomocą openssl des3 -d <input.des3 >output

O środowisku

Ubuntu 18.10

~$ openssl version OpenSSL 1.1.1 11 Sep 2018

Tommy Pollák
źródło
1
3DES jako metoda szyfrowania jest wycofywana. Ostrzeżenie sugeruje po prostu skorzystanie z innej metody. Więcej informacji można znaleźć na stronie crypto.stackexchange.com/questions/51629/ ...
guiverc
1
Ten błąd zdarza się dla każdego rodzaju szyfrów. Musisz dodać -pbkdf2 zarówno do poleceń szyfrowania, jak i deszyfrowania.
Daniele Dellafiore,
Przepraszam, ale czy możesz podać przykład dodania -pbkdf2 do poleceń? Nie rozumiem, jak należy to dodać.
Tommy Pollák
1
W twoim przykładzie wystarczy zrobić openssl des3 -e -pbkdf2 < input > output.des3i openssl des3 -d -pbkdf2 < input.des3 > output. Zgadzam się również z pierwszym komentarzem, że powinieneś użyć innego szyfru blokowego zamiast 3DES (DES pochodzi z 1977 roku), łatwym sposobem na to jest po prostu zamiana w aes256miejscu, w którym aktualnie masz des3te polecenia, aby użyć AES ( 256-bitowy AES spełnia obecne standardy bezpieczeństwa).
joelhardi
Dzięki! Teraz działa i bez ostrzeżeń za pomocą aes256. Tak więc pytanie jest odpowiedzi.
Tommy Pollák

Odpowiedzi:

12

Porównując Synopsys dwóch głównych i ostatnich wersji OpenSSL, pozwól mi zacytować strony podręcznika 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]

Oczywiście istnieją pewne większe różnice, mianowicie biorąc pod uwagę to pytanie, brakuje tych dwóch przełączników w wersji 1.1.0:

  • pbkdf2

  • iter


Masz teraz w zasadzie dwie opcje. Zignoruj ​​ostrzeżenie lub dostosuj polecenie szyfrowania do:

openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -salt -in InputFilePath -out OutputFilePath

Gdzie te przełączniki:

  • -aes-256-cbcto jest to, czego powinieneś używać dla maksymalnej ochrony lub wersji 128-bitowej, 3DES (Triple DES) został porzucony jakiś czas temu, patrz Triple DES został wycofany przez NIST w 2017 roku , podczas gdy AES jest znacznie przyspieszany przez wszystkie nowoczesne procesory; możesz po prostu sprawdzić, czy Twój procesor ma ustawiony zestaw instrukcji AES-NI, na przykład używając grep aes /proc/cpuinfo; wygrać, wygrać

  • -md sha512 jest szybszym wariantem rodziny funkcji SHA-2 w porównaniu do SHA-256, chociaż może być nieco bezpieczniejszy; wygrać, wygrać

  • -pbkdf2: użyj algorytmu PBKDF2 (Hasło oparte na pochodnej funkcji 2)

  • -iter 100000 zastępuje domyślną liczbę iteracji hasła, cytując stronę podręcznika:

    Użyj określonej liczby iteracji hasła, aby uzyskać klucz szyfrowania. Wysokie wartości zwiększają czas wymagany do brutalnej siły wynikowego pliku. Ta opcja umożliwia użycie algorytmu PBKDF2 do uzyskania klucza.

LinuxSecurityFreak
źródło
1
Następnie, jak go odszyfrować, gdy używasz openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 1000 -salt -in InputFilePath -out OutputFilePath
l mingzhi
1
Po prostu dodając -ddo polecenia:openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 1000 -salt -d -in InputFilePath
Eduard Itrich
1
Jestem pewien, że z tą sugestią jest kilka problemów. Zgodnie z en.wikipedia.org/wiki/Key_derivation_function chcesz najwolniejszego wariantu algorytmu wyprowadzania klucza. Innymi słowy, nie używaj sha512 Jak na 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 - więc poleciłbym gdzieś pomiędzy 10 000 a 100 000 iteracji zamiast 1000.
oskarpearson
@oskarpearson Prawda, właśnie to przeczytałem. Aktualizuję odpowiedź.
LinuxSecurityFreak
@oskarpearson Jaki hash polecasz?
Anthony