ฉันจะเปลี่ยนการเข้ารหัสตามคำเตือน *** ได้อย่างไร: ใช้การสืบทอดคีย์ที่เลิกใช้แล้ว


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 ลงในทั้งคำสั่งเข้ารหัสและถอดรหัส
Daniele Dellafiore

ขออภัยคุณช่วยยกตัวอย่างวิธีการ -pbkdf2 ให้กับคำสั่งได้หรือไม่? ฉันไม่เข้าใจว่าควรเพิ่มอย่างไร
Tommy Pollák

1
ในตัวอย่างของคุณคุณก็ต้องทำและopenssl des3 -e -pbkdf2 < input > output.des3 openssl des3 -d -pbkdf2 < input.des3 > outputฉันยังเห็นด้วยกับความคิดเห็นแรกที่คุณควรใช้ตัวเลขบล็อกที่แตกต่างกันแทน 3DES (DES คือจากปี 1977) วิธีที่ง่ายในการทำเช่นนั้นคือเพียงแค่สลับaes256ที่ที่คุณมีdes3อยู่ในคำสั่งเหล่านั้นเพื่อใช้ AES ( AES 256 บิตเป็นไปตามมาตรฐานความปลอดภัยปัจจุบัน)
joelhardi

ขอบคุณ! ตอนนี้มันใช้งานได้และไม่มีการเตือนโดยใช้ aes256 ดังนั้นคำถามที่ตอบแล้ว
Tommy Pollák

คำตอบ:


12

เปรียบเทียบ Synopsys ของ OpenSSL ทั้งสองเวอร์ชันหลักและล่าสุดฉันขออ้างอิง man 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 ในปี 2560ในขณะที่ AES ได้รับการเร่งความเร็วโดยซีพียูสมัยใหม่ทั้งหมดจำนวนมาก คุณสามารถตรวจสอบว่า CPU ของคุณมีชุดคำสั่ง AES-NIสำหรับตัวอย่างการใช้grep aes /proc/cpuinfo; ชนะชนะ

  • -md sha512 เป็นรุ่นที่เร็วกว่าของตระกูลฟังก์ชั่น SHA-2 เมื่อเทียบกับ SHA-256ในขณะที่มันอาจจะปลอดภัยกว่าเล็กน้อย ชนะชนะ

  • -pbkdf2: ใช้อัลกอริทึมPBKDF2 (รหัสผ่านที่มาจากฟังก์ชันที่ 2)

  • -iter 100000 กำลังแทนที่จำนวนการเริ่มต้นของการวนซ้ำสำหรับรหัสผ่านโดยอ้างถึงหน้าคน:

    ใช้การวนซ้ำตามจำนวนที่กำหนดในรหัสผ่านในการรับคีย์การเข้ารหัส ค่าที่สูงจะเพิ่มเวลาที่ต้องใช้ในการบังคับไฟล์ที่เป็นผลลัพธ์ ตัวเลือกนี้เปิดใช้งานการใช้อัลกอริทึม 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
Eduard Itrich

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 ซ้ำมากกว่า 1,000
oskarpearson

@oskarpearson จริงฉันเพิ่งอ่านไปตอนนี้ กำลังอัปเดตคำตอบ
LinuxSecurityFreak

@oskarpearson คุณแฮชแนะนำอะไร
แอนโธนี
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.