Score:2

เหตุใดการใช้คีย์ซ้ำจึงไม่เป็นปัญหาใน Feistel cipher

ธง ec

ฉันมีความเข้าใจเกี่ยวกับการเข้ารหัสของสตรีมและแพดแบบครั้งเดียวเป็นอย่างดี ฉันยังรู้ถึงอันตรายของการใช้คีย์เดียวกันใน PRG สำหรับการเข้ารหัสสตรีม

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

et flag
ฟังก์ชันรหัสสตรีมเหมือนไทม์แพด - การใช้คีย์เดียวกันสองครั้งทำให้เป็นไทม์แพด 2 ตัวซึ่งสามารถถูกโจมตีได้ ไทม์แพดคีย์รียูส
et flag
แม้แต่ในรหัสบล็อก คุณต้องเปลี่ยนรหัสทุกครั้งโดยเปลี่ยน IV และอื่นๆ ข้อมูลเกี่ยวกับการรั่วไหลของข้อความธรรมดาซึ่งทำลายความปลอดภัย ตรวจสอบโหมดการทำงานของบล็อกรหัส
user2357 avatar
us flag
@ user93353 ฉันคิดว่าปัญหาการเข้ารหัสสตรีมสมัยใหม่เกี่ยวกับอันตรายของการใช้คีย์เดียวกันได้รับการแก้ไขแล้วโดยใช้ IV ใช่ไหม
Score:2
ธง in

การใช้แผ่นซ้ำเพียงครั้งเดียวเผยให้เห็นความแตกต่างของข้อความธรรมดาเนื่องจากความเป็นเส้นตรง: $$c_1 = m_1 \oplus k,~~~~ c_2 = m_2 \oplus k,~~~~ c_1 \oplus c_2 = m_1 \oplus m_2.$$

รหัสบล็อกที่ดี (ขึ้นอยู่กับ Feistel Networks หรือ SPN หรืออย่างอื่น) ในทางกลับกัน ช่วยลดข้อมูลที่รั่วไหลโดยตรงจากการใช้คีย์ซ้ำ: ถ้า $c_1 = E_k(m_1), c_2 = E_k(m_2)$แล้วให้ $c_1$ และ $c_2$ เราสามารถสรุปได้ว่า $m_1$ และ $m_2$ เท่ากันหรือไม่ ( โดยตรวจสอบว่า $c_1$ และ $c_2$ เท่ากันหรือไม่)

ประการแรก สิ่งนี้ยังไม่เพียงพอสำหรับข้อกำหนดการเข้ารหัสสมัยใหม่: การเข้ารหัสดังกล่าวยังถือว่าไม่ปลอดภัย เนื่องจากยังทำให้ข้อมูลเกี่ยวกับข้อความรั่วไหลได้

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

UPD: เพื่อขับเคลื่อนประเด็นกลับบ้าน มันไม่เกี่ยวกับฟังก์ชัน Feistel ที่ไม่สามารถย้อนกลับได้ $F$ ตัวเอง: มันสามารถกลับด้านได้และ FN จะยังคงปลอดภัย (อาจจะเพิ่มอีกสองสามรอบ) อันที่จริง คุณไม่จำเป็นต้องกลับด้านด้วยซ้ำ $F$ เพื่อถอดรหัสบล็อก ความยากในการทำลายมันคือมีการใช้รหัสลับที่ไม่รู้จักในลักษณะที่ไม่เชิงเส้นที่ซับซ้อน ทำให้การแยกความสัมพันธ์ที่มีความหมายระหว่างบล็อกข้อความธรรมดา/ข้อความเข้ารหัสทำได้ยากมาก (ตรงกันข้ามกับแพดแบบหลายเวลา ซึ่งความสัมพันธ์เป็นแบบเส้นตรงและเรียบง่าย)

Maarten Bodewes avatar
in flag
ข้อบ่งชี้บางอย่างว่าทำไมจึงไม่สามารถดึงคีย์ได้เนื่องจากทั้งบล็อกข้อความธรรมดาและบล็อกข้อความเข้ารหัสที่รู้จักสำหรับการเข้ารหัสตาม Feistel น่าจะดีสำหรับคำถาม
Abhisek Dash avatar
ec flag
@Fractalice ขอบคุณสำหรับการตอบกลับของคุณ ฉันเข้าใจสิ่งที่คุณหมายถึง คำถามของฉันมุ่งเป้าไปที่การค้นหา "พลวัตในการปกครอง" ของรหัสบล็อก ความซับซ้อนทั้งหมดที่เข้าสู่การเข้ารหัสแบบบล็อก เช่น ฟังก์ชัน F ที่รับอินพุตครึ่งหนึ่งและคีย์ใน Feistel ciphers กำลังทำสิ่งที่ไม่สามารถย้อนกลับได้ ดังนั้นการย้อนรอยจึงเป็นไปไม่ได้ (หรืออย่างน้อยก็ยากมาก) เหตุผลของฉันถูกต้องหรือไม่?
Fractalice avatar
in flag
@RajavelPeriyarajan มันไม่เกี่ยวกับฟังก์ชัน $F$ ที่ไม่สามารถย้อนกลับได้ Invertible $F$ สามารถรักษาความปลอดภัยได้อย่างง่ายดาย อันที่จริง คุณไม่จำเป็นต้องแปลง $F$ เพื่อถอดรหัสบล็อกด้วยซ้ำ ความยากคือมีการใช้รหัสลับที่ไม่รู้จัก (ก่อน หลัง หรือภายใน $F$) และทำให้การถอดรหัสเป็นเรื่องยากมาก
Abhisek Dash avatar
ec flag
@Fractalice ใช่คุณพูดถูก กุญแจสำคัญคือสิ่งที่ทำให้รหัสปลอดภัย แต่มีปัญหาอื่นคือการใช้คีย์ซ้ำ ฉันคิดว่าความซับซ้อนทั้งหมดภายในฟังก์ชัน F ที่ไม่สามารถเปลี่ยนกลับได้ใน Feistel cipher ช่วยให้สามารถนำคีย์กลับมาใช้ใหม่ได้สำหรับทุกบล็อกของข้อความธรรมดา ดังที่คุณชี้ให้เห็นว่ารหัสอาจเสี่ยงต่อ Chosen Plaintext Attack แต่อย่างน้อยมันก็ไม่อันตรายเท่ากับแป้นกดเวลาสองอันหากไม่มีฟังก์ชัน F รหัส Feistel จะเสี่ยงต่อแป้นเวลาสองแป้น ฉันถูกต้องในการสันนิษฐานนี้หรือไม่? นอกจากนี้ คุณช่วยชี้ให้ฉันดูรหัสลับที่ใช้ฟังก์ชันกลับด้านได้ไหม
Abhisek Dash avatar
ec flag
กล่าวอีกนัยหนึ่ง ฟังก์ชัน F ทำอะไรได้บ้าง ฉันเดาว่านี่คือทั้งหมดที่ฉันต้องการถาม
Fractalice avatar
in flag
@RajavelPeriyarajan เช่น [LBlock](https://eprint.iacr.org/2011/345.pdf)
Fractalice avatar
in flag
@RajavelPeriyarajan มันบรรลุสิ่งที่เรียกว่า "ความสับสน": มันทำให้ความสัมพันธ์ระหว่างข้อความธรรมดา / ข้อความเข้ารหัส / คีย์ซับซ้อนมาก
Abhisek Dash avatar
ec flag
@Fractalice เข้าใจแล้ว ฟังก์ชัน F เป็น PRF (ฟังก์ชัน Pseudo Random ซึ่งไม่สามารถเปลี่ยนกลับได้) แต่ Feistel Cipher โดยรวมคือ PRP (Pseudo Random Permutation ซึ่งเปลี่ยนกลับไม่ได้) ฉันมีความเข้าใจที่ชัดเจนขึ้นแล้ว

โพสต์คำตอบ

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