Score:1

พบกับความซับซ้อนในเวลากลาง

ธง in

สวัสดี,
ฉันสงสัยว่าเหตุใดจึงระบุว่าข้อความเข้ารหัสสองครั้งพร้อมคีย์ DES 2 อันสามารถแตกได้ในกรณีที่เลวร้ายที่สุด $2\times2^{56}$ เวลาใช้การพบกันในการโจมตีตรงกลาง

นี่คือเหตุผลของฉัน:

  1. ตัวอย่างคู่ข้อความธรรมดาและข้อความเข้ารหัส: AAAAAAAAAAAAAAAAA & 35E16A5E44161DB8 (คีย์ที่ต้องทำลาย: BABABABABABABABA & CDCDCDCDCDCDCDCD) คู่ข้อความธรรมดาและข้อความเข้ารหัสเพิ่มเติมเพื่อตรวจสอบในขั้นตอนที่ 4 เนื่องจากคีย์สเปซใหญ่พอที่จะเป็นไปได้ว่ามีคู่คีย์หลายคู่ที่จะประสบความสำเร็จด้วยคู่คีย์เดียว คู่: 0000000000000000 & 84EC2BA1A2748F7B ; 1111111111111111 & 549A6B5696E02B5E ; 2222222222222222 & 7BB2C14B23A807C3 ; 3333333333333333 & 3BD27AAF1E0EB4F7
  2. ฉันสร้างอาร์เรย์ที่มี 2^56 รายการ รายการที่ n คือคู่ (คีย์ที่ n ; DES ข้อความธรรมดาที่เข้ารหัส AAAAAAAAAAAAAAAAA ด้วยคีย์ที่ n) จะมีลักษณะดังนี้ (คีย์เรียงจากน้อยไปมากพร้อมกับแพริตีบิตที่ถูกต้อง):
    0101010101010101 3AE716954DC04E25
    0101010101010102 2B74C1D96CDE840B
    0101010101010104 3367B1FBB4D2FFA7
    0101010101010107 8880DA13709C9198
    0101010101010108 80181B831CDC8D61
    010101010101010B 0F6CD43C15297456
    .....
  3. ตอนนี้ฉันต้องจัดเรียงอาร์เรย์ตามไซเฟอร์เท็กซ์ในคอลัมน์ 2
  4. ตอนนี้ฉันพยายามถอดรหัส ciphertext 35E16A5E44161DB8 ด้วยคีย์ที่ต่อเนื่องกัน และค้นหาค่านี้ในคอลัมน์ 2 โดยการค้นหาแบบไบนารี:
    ความพยายาม #1: คีย์ 0101010101010101 ให้คีย์ค้นหา 477B6FD8296E1956 ในอาร์เรย์ที่เรียงลำดับ หากพบคีย์ ให้ตรวจสอบคู่ข้อความธรรมดาและข้อความเข้ารหัสอื่นๆ ควรล้มเหลว
    ความพยายาม #2: คีย์ 0101010101010102 ให้คีย์ค้นหา 107272EB5D1BFF28 ในอาร์เรย์ที่เรียงลำดับ หากพบคีย์ ให้ตรวจสอบคู่ข้อความธรรมดาและข้อความเข้ารหัสอื่นๆ ควรล้มเหลว
    ความพยายาม #3: คีย์ 0101010101010104 ให้คีย์ค้นหา 23153894F3FF825E ในอาร์เรย์ที่เรียงลำดับ หากพบคีย์ ให้ตรวจสอบคู่ข้อความธรรมดาและข้อความเข้ารหัสอื่นๆ ควรล้มเหลว
    ความพยายาม #4: คีย์ 0101010101010107 ให้คีย์ค้นหา D0D497791C20B166 ในอาร์เรย์ที่เรียงลำดับ หากพบคีย์ ให้ตรวจสอบคู่ข้อความธรรมดาและข้อความเข้ารหัสอื่นๆ ควรล้มเหลว
    ความพยายาม #5: คีย์ 0101010101010108 ให้คีย์ค้นหา 8A830E5E7927C541 ในอาร์เรย์ที่เรียงลำดับ หากพบคีย์ ให้ตรวจสอบคู่ข้อความธรรมดาและข้อความเข้ารหัสอื่นๆ ควรล้มเหลว
    ความพยายาม #6: คีย์ 010101010101010B ให้คีย์ค้นหา BA7A15AA12A62C02 ในอาร์เรย์ที่เรียงลำดับ หากพบคีย์ ให้ตรวจสอบคู่ข้อความธรรมดาและข้อความเข้ารหัสอื่นๆ ควรล้มเหลว
    .....
    ความพยายาม #57873028282430310: คีย์ CDCDCDCDCDCDCDCD ให้คีย์การค้นหา AC972FC04E884797 ในอาร์เรย์ที่เรียงลำดับ หากพบคีย์ ให้ตรวจสอบคู่ข้อความธรรมดาและข้อความเข้ารหัสอื่นๆ ควรทำสำเร็จ

สำหรับฉันดูเหมือนว่าจำเป็นต้องมีขั้นตอนที่ 3 เพื่อให้สามารถดำเนินการขั้นตอนที่ 4 ได้

ถ้าฉันพูดถูก ความซับซ้อนของเวลาก็จะตามมา $2^{56}\times\log(2^{56}) = 56\times2^{56}$ โดยใช้อัลกอริธึมการเรียงลำดับที่เหมาะสมที่สุด ฉันขาดอะไรไปในการให้เหตุผล

kelalaka avatar
in flag
ที่เกี่ยวข้องและซ้ำกัน ...[เหตุใดการใช้ DES 56 บิตสองครั้งจึงให้ความปลอดภัยเพียง 57 บิต](https://crypto.stackexchange.com/q/25073/18298)
fgrieu avatar
ng flag
Realted [คำถามเกี่ยวกับวิธีทำให้การโจมตีเป็นไปได้จริง](https://crypto.stackexchange.com/q/25258/555) (เนื่องจากความต้องการ $2 บิตที่น่าหัวเราะจึงไม่ใช่)
Score:4
ธง my

ฉันขาดอะไรไปในการให้เหตุผล

สองสิ่ง:

  • มีกลยุทธ์อื่นนอกเหนือจากการเรียงลำดับเพื่อค้นหาการชนกัน สิ่งหนึ่งที่ชัดเจนคือการสร้างตารางแฮชขนาดใหญ่ ในทางปฏิบัติแล้ว การเรียงลำดับน่าจะทำได้เร็วกว่านี้ (เพราะตารางแฮชขนาดใหญ่นั้นใช้งานไม่ได้) แต่ในทางทฤษฎี ตารางแฮชจะช่วยให้ $O(1)$ เข้าถึงที่การวิเคราะห์ความซับซ้อนนี้สันนิษฐานโดยปริยาย

  • $O(n \log n)$ ไม่ใช่เวลาการเรียงลำดับที่เหมาะสมที่สุด หากการดำเนินการเดียวที่คุณสามารถทำได้กับข้อมูลคือการเปรียบเทียบและการเคลื่อนย้ายข้อมูล อย่างไรก็ตาม เราไม่ได้ถูกจำกัดแบบนั้นจริงๆ วิธีการหนึ่งที่ชัดเจนคือการใช้วิธีการเรียงลำดับ Radix ซึ่งอาจมีความซับซ้อนของเวลาที่ดีกว่ามาก

ตามจริงแล้ว เรามักเพิกเฉยต่อเวลาที่ใช้โดยการดำเนินการที่ไม่ใช่การเข้ารหัสเหล่านี้ (เช่น การค้นหาและการจัดเรียง) เว้นแต่ว่าจะใช้เวลาส่วนใหญ่ของเวลาทั้งหมด ตรงไปตรงมา อาจมีรายละเอียดมากมายเมื่อคุณลงไปที่ระดับนั้น (เช่น ความซับซ้อนในการจัดการกับ $O(2^{56})$ ข้อมูล) และแทนที่เราจะนับการประเมิน DES

เราไม่ได้พยายามที่จะทำลาย 2DES; เรากำลังแสดงให้เห็นว่าการทำลาย 2DES สามารถทำได้จริงในเวลาจริง หากเราพยายามทำลายมันจริงๆ เราอาจลงเอยด้วยการใช้การค้นหาแลมบ์ดาแทน ซึ่งจะมีความซับซ้อนเพิ่มขึ้นอย่างต่อเนื่องและไม่รับประกันว่าจะนำไปใช้ได้ง่ายกว่า (เนื่องจากการค้นหาแลมบ์ดาจะใช้หน่วยความจำน้อยกว่ามาก และ ยังขนานกันได้ง่าย)

fgrieu avatar
ng flag
เพิ่มเติม: กลยุทธ์ตารางแฮชได้รับการอำนวยความสะดวกเนื่องจากค่า 64 บิตที่ค้นหานั้นเป็นค่าสุ่มที่จำเป็น เราสามารถเช่น ใช้ค่าลำดับสูง 48 บิตที่ค้นหาโดยตรงเป็นดัชนีในตารางแฮชขนาดเล็ก โบนัสคือไม่จำเป็นต้องจัดเก็บ 48 บิตเหล่านี้ เช่นเดียวกับที่จัดเก็บไว้สำหรับตารางแฮชแบบเต็ม แสดงให้เห็นว่าแม้ว่าเราจะมีที่ว่างสำหรับ $2^8+2^{8/2}$ รายการต่อตารางแฮชที่เล็กกว่า (ด้วยค่าการค้นหา 16 บิตและเนื้อหา 56 บิตสำหรับคีย์) และลืมส่วนที่เหลือ ยังมีโอกาสประสบความสำเร็จสูง กลยุทธ์นี้เพิ่ม RAM น้อยกว่าสองเท่าเมื่อเทียบกับพื้นฐาน $2^{62}$-บิต
pajacol avatar
in flag
ความซับซ้อนของพื้นที่ 2^56 จะเพิ่มขึ้นหรือไม่หากฉันใช้ตารางแฮชหรือการจัดเรียงฐาน
poncho avatar
my flag
@pajacol: ไม่มาก (นั่นคือควรอยู่ในปัจจัยคงที่ซึ่งไม่ไกลจาก 1 มากนัก) - แน่นอนว่ารายละเอียดจะขึ้นอยู่กับการใช้งาน
kr flag
นี่เป็นคำตอบที่ดี แต่ฉันคิดว่ามันขาดรายละเอียดที่สำคัญ: 2DES มีคีย์ *112*-bit และ Meet-in-the-middle ให้ $O(2^{56})$ โจมตี กล่าวอีกนัยหนึ่ง การพบกันตรงกลางแสดงให้เห็นว่า (ให้อุปกรณ์ถอดรหัสในอุดมคติ) 2DES นั้น *ไม่แรงกว่า DES เดียว* ปัจจัยคงที่หน้า O ขนาดใหญ่ไม่ใช่ประเด็น
sh flag
@zwol หากคุณไม่สนใจปัจจัยคงที่ ดังนั้น $2^{56}$ ก็เป็นปัจจัยคงที่เช่นกัน (ฉันคิดว่าการใช้สัญกรณ์ $O(...)$ กับค่าคงที่เป็นการใช้สัญกรณ์ในทางที่ผิดอย่างประหลาด $O(2^{128}) = O(2^{56}) = O(1)$ ใน ความหมายปกติของ $O$.)
kr flag
@PaÅloEbermann ใช่ ฉันยอมรับว่ามันเป็นการใช้สัญกรณ์ในทางที่ผิด แต่มันไม่ใช่ IME ที่ผิดปกติเมื่อพูดถึงค่าใช้จ่ายในการโจมตีรหัสลับ แนวคิดคือสิ่งเดียวที่เราสนใจคือเลขชี้กำลัง: การเปลี่ยนจาก $2^{112}$ เป็น $2^{56}$ แสดงถึงการลดลงอย่างมากของรหัส
Score:1
ธง cl
  1. คุณสามารถบันทึกตัวเลือกทั้งหมดใน Hashtable (พจนานุกรม) (ขนาดใหญ่) -> ซึ่งเข้าใกล้ O(1) ดังนั้นคุณไม่จำเป็นต้องเรียงลำดับ
  2. คุณสามารถจัดเรียงตาม Radix (หรือ Bucket) Sort (น้อยกว่า nlog(n))

โพสต์คำตอบ

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