Cryptology Academy · บทเรียน

เหตุใด XOR เพียงอย่างเดียวจึงไม่ปลอดภัย

เรียนรู้การโจมตีจากการใช้คีย์ซ้ำและการลากข้อความตั้งต้นกับการเข้ารหัส XOR ที่อ่อนแอ

บทเรียน 3 จาก 413 ขั้นตอน

เหตุใด XOR เพียงอย่างเดียวจึงไม่ปลอดภัย เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

ยินดีต้อนรับ

ในบทเรียนนี้ เราจะก้าวข้ามทฤษฎีและสาธิตการโจมตีที่เป็นรูปธรรมต่อการเข้ารหัสด้วย XOR ได้แก่ การใช้คีย์ซ้ำ การโจมตีด้วย plaintext ที่ทราบ และการลากวลีตัวอย่าง

สถานการณ์การใช้คีย์ซ้ำที่ไม่ปลอดภัย

ลองนึกภาพเว็บแอปที่เข้ารหัสโทเค็นเซสชันด้วยคีย์ XOR เดียวกัน ผู้โจมตีดักจับโทเค็นที่เข้ารหัสไว้สองชุด เมื่อนำมาทำ XOR กัน คีย์จะหักล้างกันเอง: C1^C2 = P1^P2

การโจมตีด้วย plaintext ที่ทราบ

หากทราบ P1: K = P1 XOR C1 ตอนนี้ ciphertext อื่นทุกชุดที่เข้ารหัสด้วย K เดียวกันสามารถถอดรหัสได้: Pi = Ci XOR K การรู้ plaintext เพียงชุดเดียวทำให้ทั้งระบบถูกทำลายได้

การลากวลีตัวอย่าง ขั้นที่ 1

เมื่อไม่ทราบ P1 ให้เดาวลีภาษาอังกฤษที่พบบ่อย (crib) เช่น 'the ' แล้วนำ crib ไป XOR กับ P1^P2 ในแต่ละตำแหน่ง หากปรากฏข้อความที่อ่านได้ใน P2 แสดงว่า crib อยู่ที่ตำแหน่งนั้น

การลากวลีตัวอย่าง ขั้นที่ 2

ใช้ข้อความ P2 ที่เปิดเผยแล้วเป็น crib ใหม่ที่ยาวขึ้น แล้วเลื่อนไปตามกระแส XOR ต่อไป คำที่ค้นพบแต่ละคำจะช่วยเริ่มต้นการค้นหาคำถัดไป และมักกู้คืนข้อความทั้งหมดได้ภายในไม่กี่นาที

การกู้คืนคีย์ด้วยสถิติ

เมื่อมี ciphertext หลายชุดที่ใช้คีย์เดียวกัน ตำแหน่งที่ผลลัพธ์ XOR เป็น 0 หมายความว่า Pi = Pj ที่ตำแหน่งนั้น การจัดแนวข้อความหลายสิบชุดจะเผยไบต์ของคีย์ทีละไบต์

คีย์ XOR สั้นแบบวนซ้ำ

คีย์ที่สั้นกว่าข้อความจะถูกใช้ซ้ำ ให้จัดการเหมือน Vigenère: หาความยาวคีย์ด้วย IoC จากนั้นวิเคราะห์ความถี่ของแต่ละตำแหน่งแยกกัน ระบบจะถูกทำลายได้ภายในไม่กี่วินาที

การโจมตีด้วย plaintext ที่เลือกได้

หากผู้โจมตีสามารถเข้ารหัส plaintext ใด ๆ ได้ ให้ส่ง P=0x00...00 แล้ว C = คีย์โดยตรง หรือส่ง P=ค่าที่ทราบเพื่อเรียนรู้ K = P XOR C ณ ตำแหน่งใดก็ได้

การโจมตีด้วยการพลิกบิต

รหัสลับแบบ XOR ที่ไม่มี MAC เปิดให้โจมตีด้วยการพลิกบิตได้: พลิกบิต i ใน ciphertext → บิต i ใน plaintext จะถูกพลิกตาม ผู้โจมตีจึงแก้ไขข้อมูลที่เข้ารหัสได้โดยไม่ต้องรู้คีย์

เหตุใด AES เพียงอย่างเดียวจึงไม่เพียงพอ

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

การป้องกัน: การเข้ารหัสที่ยืนยันความถูกต้อง

การเข้ารหัสที่ยืนยันความถูกต้อง (AE) ผสานการเข้ารหัสเข้ากับ MAC การแก้ไข ciphertext ไม่ว่ารูปแบบใดจะทำให้การตรวจสอบ MAC ล้มเหลวก่อนการถอดรหัส รูปแบบ AEAD เช่น AES-GCM ป้องกันการโจมตีด้วยการพลิกบิตได้

ตรวจสอบอย่างรวดเร็ว

ผู้โจมตีมีข้อความที่เข้ารหัสด้วย XOR สองข้อความซึ่งใช้คีย์เดียวกัน การนำ ciphertext ทั้งสองมาทำ XOR กันจะเปิดเผยอะไร

สรุป

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

เรียนรู้ Cryptology Academy ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
67
บทเรียน
261

คำถามที่พบบ่อย

บทเรียน “เหตุใด XOR เพียงอย่างเดียวจึงไม่ปลอดภัย” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “เหตุใด XOR เพียงอย่างเดียวจึงไม่ปลอดภัย” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “เหตุใด XOR เพียงอย่างเดียวจึงไม่ปลอดภัย”

เรียนรู้การโจมตีจากการใช้คีย์ซ้ำและการลากข้อความตั้งต้นกับการเข้ารหัส XOR ที่อ่อนแอ คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “เหตุใด XOR เพียงอย่างเดียวจึงไม่ปลอดภัย” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม

ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ทบทวนการดำเนินการระดับบิต
  2. การเข้ารหัส XOR และแผ่นรหัสใช้ครั้งเดียว
  3. เหตุใด XOR เพียงอย่างเดียวจึงไม่ปลอดภัย
  4. XOR ภายใน AES และรหัสกระแส
← กลับไปที่ Cryptology Academy