Làm cách nào để thay đổi mã hóa theo *** CẢNH BÁO: sử dụng dẫn xuất khóa không dùng nữa


15

Khi tôi mã hóa hoặc giải mã một tập tin tôi nhận được *** WARNING : deprecated key derivation used. Using -iter or -pbkdf2 would be better.

Tôi không hiểu điều này có nghĩa là gì, tôi nên thay đổi các thủ tục của mình như thế nào. Bạn có thể giúp tôi? Tôi mã hóa openssl des3 <input >output.des3và giải mã với openssl des3 -d <input.des3 >output

Về môi trường

Ubuntu 18.10

~$ openssl version OpenSSL 1.1.1 11 Sep 2018


1
3DES như một phương thức mã hóa đang bị loại bỏ. Cảnh báo chỉ đề nghị bạn sử dụng một phương pháp khác, có thể tham khảo crypto.stackexchange.com/questions/51629/ cấp để biết thêm chi tiết.
guiverc

1
Lỗi đó xảy ra đối với bất kỳ loại mật mã nào. Bạn cần thêm -pbkdf2 vào cả hai lệnh mã hóa và giải mã.
Daniele Dellafiore

Xin lỗi, nhưng bạn có thể vui lòng cho một ví dụ về cách thêm -pbkdf2 vào các lệnh không? Tôi không hiểu làm thế nào nó nên được thêm vào.
Tommy Pollák

1
Trong ví dụ của bạn, bạn chỉ cần làm openssl des3 -e -pbkdf2 < input > output.des3openssl des3 -d -pbkdf2 < input.des3 > output. Tôi cũng đồng ý với nhận xét đầu tiên rằng bạn nên sử dụng một mật mã khối khác thay vì 3DES (DES là từ năm 1977), một cách dễ dàng để làm điều đó chỉ là trao đổi ở aes256nơi bạn hiện có des3trong các lệnh đó, để sử dụng AES ( AES 256-bit đáp ứng các tiêu chuẩn bảo mật hiện tại).
joelhardi

Cảm ơn! Bây giờ nó hoạt động và không có cảnh báo bằng cách sử dụng aes256. Vì vậy, câu hỏi được trả lời.
Tommy Pollák

Câu trả lời:


12

So sánh các bản tóm tắt của hai phiên bản chính và gần đây của OpenSSL, hãy để tôi trích dẫn các trang hướng dẫn.

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]

Rõ ràng có một số khác biệt lớn hơn, cụ thể là xem xét câu hỏi này, có hai công tắc bị thiếu trong 1.1.0:

  • pbkdf2

  • iter


Bạn có hai lựa chọn cơ bản bây giờ. Hoặc bỏ qua cảnh báo hoặc điều chỉnh lệnh mã hóa của bạn thành một cái gì đó như:

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

Trường hợp các công tắc này:

  • -aes-256-cbclà những gì bạn nên sử dụng để bảo vệ tối đa hoặc phiên bản 128 bit, 3DES (Triple DES) đã bị bỏ rơi cách đây một thời gian, xem Triple DES đã bị NIST từ chối vào năm 2017 , trong khi AES được tăng tốc bởi tất cả các CPU hiện đại; bạn chỉ có thể xác minh xem CPU của bạn có tập lệnh AES-NI không, ví dụ như sử dụng grep aes /proc/cpuinfo; thắng, thắng

  • -md sha512 là biến thể nhanh hơn của họ chức năng SHA-2 so với SHA-256 trong khi nó có thể an toàn hơn một chút; thắng, thắng

  • -pbkdf2: sử dụng thuật toán PBKDF2 (Hàm dựa trên mật khẩu khóa 2)

  • -iter 100000 đang ghi đè số lần lặp mặc định cho mật khẩu, trích dẫn trang man:

    Sử dụng một số lần lặp nhất định trên mật khẩu để lấy khóa mã hóa. Giá trị cao làm tăng thời gian cần thiết để bắt buộc tệp kết quả. Tùy chọn này cho phép sử dụng thuật toán PBKDF2 để lấy khóa.


1
Sau đó, làm thế nào để giải mã nó khi sử dụng openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 1000 -salt -in InputFilePath -out OutputFilePath
l mingzhi

1
Chỉ cần thêm -dvào lệnh:openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 1000 -salt -d -in InputFilePath
Eduard Itrich

1
Tôi khá chắc chắn rằng có một vài vấn đề với đề xuất này. Theo en.wikipedia.org/wiki/Key_derivation_function bạn muốn biến thể chậm nhất của thuật toán phái sinh chính. Nói cách khác, không sử dụng sha512 Theo 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 - vì vậy tôi khuyên bạn nên giới thiệu ở đâu đó trong khoảng từ 10.000 đến 100.000 lần lặp thay vì 1000.
oskarpearson

@oskarpearson Đúng, tôi mới đọc nó. Cập nhật câu trả lời.
LinuxSecurityFreak
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.