Score:1

AES-128-CFB ซ้ำ IV และ KPA

ธง in

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

สรุปก็คือ ผู้พัฒนากำลังใช้รหัสคงที่และ IV สำหรับเข้ารหัสข้อความที่คล้ายกันหลายข้อความโดยใช้ AES-128-CFB ตั้งแต่ฉันรู้ว่า IV สำหรับ ทั้งหมด ข้อความ และฉันรู้ว่าบางส่วนของข้อความธรรมดา (ข้อความมีรูปแบบมาตรฐาน JSON) ฉันสามารถกู้คืนข้อความธรรมดาได้หรือไม่ หรือ กุญแจ? ฉัน ไม่ กำลังมองหาใครสักคนที่จะทำสิ่งนี้ให้ฉัน ฉันแค่มองหาว่าฉันจะจัดการกับเรื่องนี้อย่างไร

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

นำเข้า base64
จาก Crypto.Cipher นำเข้า AES


คีย์ = b'\x00'*16
iv = b'\xFF'*16
p1 = b 'สวัสดีชาวโลก'
p2 = b'สวัสดีชาวโลก!'

รหัส = AES.new (คีย์, AES.MODE_CFB, iv=iv)
c1 = cipher.encrypt(p1)
e1 = base64.b64เข้ารหัส(c1)

รหัส = AES.new (คีย์, AES.MODE_CFB, iv=iv)
c2 = cipher.encrypt(p2)
e2 = base64.b64เข้ารหัส (c2)


พิมพ์ (' '.join ('{:02X}'.format (c) สำหรับ c ใน c1))
พิมพ์ (' '.join ('{:02X}'.format (c) สำหรับ c ใน c2))
พิมพ์ (e1.decode ())
พิมพ์ (e2.decode ())

$ python3 test.py
77 6D 0C 86 D8 6B C9 9F 72 FD F4 3B
77 6D 0C 86 D8 6B C9 9F 72 FD F4 3B 04
d20MhthryZ9y/fQ7
d20MhthryZ9y/fQ7BA==
Score:0
ธง in

ก่อนอื่น อย่างที่คุณสังเกตเห็นว่าส่วนแรกจะเหมือนกันเสมอ ดังนั้นหากคุณมีไซเฟอร์เท็กซ์สองตัวที่เหมือนกันในไบต์แรกที่สร้างขึ้น คุณจะเห็นได้ทันทีว่าเป็นกรณีนี้ นั่นคือการรั่วไหลครั้งแรก

สิ่งที่คุณทำได้คือ XOR บล็อกแรกของไซเฟอร์เท็กซ์ที่แตกต่างกัน สิ่งที่คุณได้รับกลับมาคือ XOR ของข้อความธรรมดาของข้อความทั้งสองที่ถูกเข้ารหัส จากนั้นคุณสามารถ XOR บิตใดๆ ที่คุณทราบและรับข้อความธรรมดาของข้อความอื่นในตำแหน่งเหล่านั้นได้ทันที นอกจากนี้ยังสามารถใช้ข้อมูลที่ทราบเพื่อคาดเดาได้ เช่น หากเป็นภาษาอังกฤษ XOR ของอักขระ A และ B จะสร้างเอาต์พุต 0x03 เนื่องจากสองบิตสุดท้ายต่างกันเท่านั้น โปรดทราบว่าคุณสามารถทำได้ ด้วยใด ๆ คู่ของข้อความเข้ารหัสที่คุณได้รับ ด้วยวิธีนี้ คุณจะได้รับข้อมูลเกี่ยวกับบล็อกของข้อความธรรมดาอย่างรวดเร็ว

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


ตอนนี้เข้าสู่สิ่งที่คุณไม่สามารถทำได้

ประการแรก รหัสบล็อก AES - หรือรหัสลับที่ปลอดภัยที่รู้จัก - จะไม่อนุญาตให้คุณรับรหัสแม้ว่าคุณจะมีคู่ข้อความธรรมดา / ข้อความเข้ารหัสหลายคู่ก็ตาม (ไปยังรหัสบล็อก)

ประการที่สอง คุณจะเดา IV ไม่ได้หากไม่ได้ระบุ เนื่องจากเป็นบล็อกข้อความธรรมดาสำหรับบล็อกรหัส

ท้ายที่สุด เป็นไปไม่ได้ที่จะเข้าถึงข้อความธรรมดาเมื่อบล็อกก่อนหน้าของข้อความไซเฟอร์เท็กซ์แตกต่างจากบล็อกอื่นๆ ทั้งหมดในกรณีนั้น การเข้ารหัสของบล็อกจะสร้างสิ่งที่โดยทั่วไปเป็นไบต์สุ่ม ดังนั้นคุณจึงไม่สามารถดึงข้อมูลใดๆ เกี่ยวกับบล็อกข้อความธรรมดาที่สอดคล้องกันหลังจากที่ได้รับ XOR'ed แล้ว

ป้อนคำอธิบายรูปภาพที่นี่

รูปภาพคือ Wikimedia Commons โดย Gwenda

โพสต์คำตอบ

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