Score:2

การเข้ารหัสหลายตัวช่วยได้หรือไม่?

ธง dk

สมมติว่าเนื้อหาต้นฉบับบางส่วน (เช่น ข้อความ text.txt) ได้รับการเข้ารหัสหลายครั้ง (เช่น โดยใช้ ChaCha20) แต่ละครั้งด้วยรหัสที่แตกต่างกัน สมมติว่าผลลัพธ์ของกระบวนการนี้เป็นไบนารี (output.bin) สมมติว่ามีบุคคลที่สามพยายามถอดรหัสไฟล์ output.bin สมมติว่าบุคคลที่สามประสบความสำเร็จในการถอดรหัสไฟล์ output.bin

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

Score:2
ธง in

ChaCha20 เป็นรหัสสตรีมและส่งออกสตรีม $O_i$ เพื่อเข้ารหัสข้อความเพื่อรับข้อความเข้ารหัส $$C_i = M_i\oplus O_i$$ การเข้ารหัสครั้งต่อไปของคุณจะเป็น $$C_i' = M_i\oplus O_i \oplus O_i'$$ ที่ไหน $O_i'$ เป็นเอาต์พุตของ ChaCha20 ตัวที่สองที่มีคีย์อื่น

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

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

การลบเลเยอร์นั้นไม่มีประโยชน์ตั้งแต่นั้นมา $$สุ่ม \oplus ข้อความ = สุ่ม$$ ดังนั้นจะไม่มีข้อมูลให้ตรวจสอบ

นี่ไม่ใช่ปัญหาที่แท้จริงของคุณ ปัญหาที่แท้จริงของคุณคือการจัดการคีย์ ระวังวิธีที่คุณสร้าง/รับมา และวิธีที่คุณจัดเก็บ/รับมา

การใช้ ChaCha20 เดียวที่มีคีย์ 256 บิตก็เพียงพอแล้วที่จะปลอดภัยจากศัตรูทั้งหมด (คลาสสิกหรือควอนตัม) ด้วยคีย์สุ่มที่เหมือนกัน หากคุณต้องการใช้การเข้ารหัสซ้ำซ้อน ให้รวมเข้ากับอัลกอริทึมการเข้ารหัสอื่น เช่น AES-GCM

โปรดทราบว่าการพิจารณาและการวิเคราะห์การเข้ารหัสหลายรายการ (เรียงซ้อน) เริ่มต้นจากการพิจารณาจุดอ่อนของ DES Ueli M. Maurer & James L. Massey ในปี 1993 แสดงใน Cascade Ciphers: ความสำคัญของการเป็นที่หนึ่ง นี้;

  • โครงสร้างแบบคาสเคดมีความปลอดภัยเนื่องจากรหัสลับตัวแรก และไม่รับประกันความปลอดภัยที่มากกว่านี้ มีบล็อกโพสต์ของ Matthew Green เกี่ยวกับเรื่องนี้ การเข้ารหัสหลายรายการ ตามข้อสังเกตโดย SAI Peregrinus.

สำหรับรหัสสตรีม เรามีผลที่แตกต่างกัน (อีกครั้ง Maurer และ Massey);

  • ข้อผิดพลาด 2 โมดูโลระดับบิต $2$ ผลรวมของ $n$ ลำดับคีย์สตรีมที่สร้างโดยอุปกรณ์ที่มีคีย์อิสระนั้นคาดเดาได้ยากพอๆ กับลำดับคีย์สตรีมที่คาดเดาได้ยากที่สุดเป็นอย่างน้อย
SAI Peregrinus avatar
si flag
สำหรับย่อหน้าสุดท้าย คุณอาจต้องการทราบว่าการเข้ารหัสหลายรายการนั้นแข็งแกร่งพอๆ กับการเข้ารหัส *ตัวแรก* ที่ใช้ แต่ไม่จำเป็นต้องแข็งแกร่งกว่านั้น มันสามารถแข็งแกร่งกว่าและสำหรับยันต์สมัยใหม่มักจะเป็น (แม้ว่าจะไร้ประโยชน์ก็ตาม) นอกจากนี้ หากรหัสตัวแรกเป็น IND-CCA2 ปลอดภัย และรหัสตัวนอกไม่มีการโจมตีความอ่อนตัวด้านนอก https://blog.cryptographyengineering.com/2012/02/02/multiple-encryption/
Maarten Bodewes avatar
in flag
การมีความแตกต่างน่าจะเป็นผลที่แขวนต่ำที่สุดเมื่อต้องค้นหาจุดอ่อนของการเข้ารหัส สำหรับ ChaCha20 ผลไม้นั้นยังคงสูงเกินไป แต่ควรคำนึงถึงสิ่งนี้ด้วย นอกจากนี้ หากมีการเพิ่มเมตาดาต้าใดๆ ลงในไซเฟอร์เท็กซ์ (เช่น IV ที่ไม่ใช่การสุ่ม) ตัวแยกสัญญาณก็จะแสดงอยู่แม้ว่าไซเฟอร์เท็กซ์เองจะไม่ได้ใส่มาก็ตาม ดังที่ SAI Peregrinus กล่าว มันไม่ได้ *จำเป็น* ดีกว่าการเข้ารหัสเดี่ยวมากนัก และอย่างที่ kelalaka กล่าวว่า: การจัดการคีย์ที่ดีน่าจะสำคัญกว่า
kelalaka avatar
in flag
ที่จริงฉันไม่อยากดำดิ่งลงไปในเรื่องนี้ เพิ่มบางส่วน ฉันเชื่อว่าการเข้ารหัสเพียงครั้งเดียวก็เพียงพอแล้ว ฉันใช้การแยกแยะไม่ได้ในแง่ที่ว่า ผู้โจมตีไม่สามารถตรวจสอบค่าได้หลังจากลบเลเยอร์หนึ่งออกไป เนื่องจากทั้งหมดเป็นการสุ่ม การมีอยู่ของ Meta-Data ใส่ไว้ในออราเคิลอื่น ๆ ขอบคุณสำหรับความคิดเห็น

โพสต์คำตอบ

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