Score:0

ปลอดภัยไหมที่จะใช้คีย์ซ้ำกับ Fernet?

ธง in

เฟิร์น เป็นโครงร่างการเข้ารหัสแบบสมมาตรที่ใช้ AES ซึ่งพิสูจน์แล้วว่างี่เง่าซึ่งได้รับการออกแบบมาอย่างระมัดระวังเพื่อหลีกเลี่ยงข้อผิดพลาดใด ๆ ที่อาจส่งผลต่อความปลอดภัย

ฉันต้องการใช้คีย์เดียวกันเพื่อเข้ารหัสไฟล์หลายไฟล์ รวมถึงไฟล์เดียวกันในเวอร์ชันที่แก้ไขแล้ว

ฉันทราบดีว่ารูปแบบการเข้ารหัสจำนวนมาก โดยเฉพาะรูปแบบที่ทำเองที่บ้าน มีความเสี่ยงต่อการวิเคราะห์การเข้ารหัสเมื่อคีย์ถูกนำกลับมาใช้ใหม่ (ตัวอย่างที่ง่ายที่สุด: การเข้ารหัสสตรีมที่ใช้ XOR) และฉันไม่พบข้อความที่ชัดเจนในเอกสารประกอบของ Fernet ที่ อนุญาตให้ใช้คีย์ซ้ำ

ในทางกลับกัน,

  • Fernet น่าจะเป็นหลักฐานที่งี่เง่า
  • Fernet ใช้ IV แบบสุ่มทุกครั้งที่เข้ารหัสบางอย่าง
  • เอกสารไม่ได้เตือนเกี่ยวกับการใช้คีย์ซ้ำ

ดังนั้น, จะเกิดอะไรขึ้นถ้าฉันใช้กุญแจซ้ำกับ Fernet?

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

  • เลือกเกลือแบบสุ่ม
  • ใช้ KDF เพื่อคำนวณแต่ละคีย์จากคีย์ที่ใช้ร่วมกันและเกลือ
  • เข้ารหัสไฟล์ด้วยคีย์ส่วนตัว และเพิ่มเกลือ

แต่ดูเหมือนว่าจะผิด (salt ใช้สำหรับรหัสผ่านเท่านั้น ไม่ใช่กับข้อมูลสุ่ม...) และที่สำคัญกว่านั้น ฉันต้องใช้การเข้ารหัสดั้งเดิมระดับต่ำซึ่งมีความชัดเจน ไม่ หลักฐานงี่เง่า

Score:1
ธง in

หน้าที่ระบุไว้พูดถึงการเข้ารหัส AES-128-CBC ด้วย Encrypt-then-MAC Mac ด้วย HMAC

เดอะ ภาระผูกพันของผู้ใช้ คือการจัดเตรียมข้อความ คีย์สุ่มแบบ 256 บิต และการประทับเวลา

Fernet แบ่งคีย์ 256 บิตออกเป็นสองส่วนที่มีขนาดเท่ากันขั้นแรก ส่วนหนึ่งใช้ในการเข้ารหัสข้อความด้วย AES-128-CBC จากนั้นจึงใช้แท็กการรับรองความถูกต้อง $t$

$$ t = \operatorname{HMAC-SHA-256}( เวอร์ชัน â เวลาประทับ â IV â Ciphertext)$$ คำนวณด้วยส่วนอื่นของคีย์

จะเกิดอะไรขึ้นหากฉันใช้กุญแจซ้ำกับ Fernet

  1. การเข้ารหัสของ ข้อความมากเกินไป ด้วยคีย์เดียวกันอาจทำให้เกิดการชนกันของ IV ภายใต้คีย์เดียวกัน

    สิ่งนี้สามารถรั่วไหลได้ว่าจุดเริ่มต้นของข้อความเหมือนกัน หากคุณแก้ไขไฟล์และไม่ได้เข้ารหัสด้วย IV อื่น จะทำให้คำนำหน้าไฟล์เดียวกันรั่วไหล

    หนึ่งต้องเข้ารหัส $2^{64}$ ข้อความที่จะมีการชนกันของ IV ภายใต้คีย์เดียวกัน 50% นั้นสูงเกินไปสำหรับข้อได้เปรียบของผู้โจมตี เราควรพิจารณาความเป็นไปได้ที่ต่ำกว่า

  2. การเข้ารหัสของ บล็อกข้อมูลมากเกินไป

    สามารถทำให้เกิดการชนกันของไซเฟอร์เท็กซ์ที่ใช้ สวีท32 จู่โจม. สามารถรับ X-หรือบล็อกข้อความได้หาก $c_i = c_j$ กับ $i \neq j$ $$m_i \oplus m_j = c_{1-1} \oplus c_{j-1}.$$

    อีกครั้ง 50% นั้นสูงเกินไปสำหรับข้อได้เปรียบของผู้โจมตี เราควรพิจารณาความน่าจะเป็นที่ต่ำกว่า

ปัญหาทั้งสองนี้ขึ้นอยู่กับจำนวนไฟล์ที่คุณมีและขนาดไฟล์ที่มี

ไม่ปลอดภัยโดยสิ้นเชิง การใช้คีย์และ IV ที่แตกต่างกันต่อไฟล์จะดีกว่า ที่จริงแล้ว Fernet's API เปิดใช้งานสิ่งนี้

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

  • เลือกเกลือแบบสุ่ม
  • ใช้ KDF เพื่อคำนวณแต่ละคีย์จากคีย์ที่ใช้ร่วมกันและเกลือ
  • เข้ารหัสไฟล์ด้วยคีย์ส่วนตัว และเพิ่มเกลือ

แต่ดูเหมือนว่าจะผิด (salt ใช้สำหรับรหัสผ่านเท่านั้น ไม่ใช่กับข้อมูลสุ่ม...) และที่สำคัญกว่านั้น กำหนดให้ฉันใช้วิทยาการเข้ารหัสลับระดับต่ำซึ่งไม่สามารถพิสูจน์ได้ว่าเป็นคนงี่เง่าอย่างชัดเจน

นี่คือสิ่งที่เราทำ มีคีย์และ IV ที่แตกต่างกันต่อไฟล์. คุณสามารถใช้ได้ HKDF แม้เพียง ขยาย ส่วนที่จะได้รับคีย์และ IVs

พูดตรงๆฉันถามเสมอว่าทำไมบางคนถึงต้องการสิ่งที่ซับซ้อน ในขณะที่คอนเทนเนอร์เข้ารหัสของเวราคริปต์จัดการเรื่องนี้ได้ดีกว่าผู้เชี่ยวชาญเสียอีกไม่จำเป็นต้องคำนึงถึงการเข้ารหัสเลย เพียงแค่เรียนรู้ที่จะมีรหัสผ่านที่ดีเช่นพิมพ์ dicewire และคุณทำเสร็จแล้ว

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา