0Pricing
Cryptology Academy · บทเรียน

ECB กับ CBC: รูปแบบและ IV

สาธิตการโจมตีเพนกวินด้วย ECB และเหตุผลที่ต้องใช้ CBC ร่วมกับ IV แบบสุ่ม

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

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

ECB และ CBC เป็นโหมดของรหัสลับแบบบล็อกสองรูปแบบ ECB ไม่ปลอดภัยอย่างยิ่งเนื่องจากเปิดเผยรูปแบบของข้อมูล ส่วน CBC ที่ใช้ IV แบบสุ่มมีความแข็งแกร่งกว่ามาก มาทำความเข้าใจทั้งสองแบบให้ลึกซึ้งกัน

โหมด ECB: สมุดรหัสอิเล็กทรอนิกส์

ECB เข้ารหัสแต่ละบล็อกอย่างอิสระ: Ci = AES(K, Pi) บล็อกข้อความต้นฉบับเดียวกันจะให้บล็อกข้อความเข้ารหัสเดียวกันทุกครั้ง บล็อกในข้อความเดียวกันหรือคนละข้อความจะเหมือนกันหากเนื้อหาตรงกัน

เพนกวินแบบ ECB

เพนกวินแบบ ECB เป็นการสาธิตคลาสสิก: เข้ารหัสภาพ PNG ของ Tux เพนกวิน Linux ด้วย AES-ECB ผลลัพธ์ยังคงดูเหมือนเพนกวิน เพราะพื้นที่ที่มีสีเดียวกันจะถูกเข้ารหัสเป็นรูปแบบเดียวกัน

ช่องโหว่ของ ECB: การเล่นบล็อกซ้ำ

ในโหมด ECB ผู้โจมตีสามารถจัดเรียงบล็อกข้อความเข้ารหัสใหม่ได้โดยไม่รู้กุญแจ: - บล็อกต่าง ๆ เป็นอิสระต่อกัน - จัดเรียงบล็อกใหม่ → จัดเรียงข้อความต้นฉบับที่ถอดรหัสแล้วใหม่ - ทำบล็อกซ้ำ → ทำเนื้อหาให้ซ้ำ - ลบบล็อก → ตัดเนื้อหาออก

โหมด CBC: การเชื่อมโยงบล็อกข้อความเข้ารหัส

CBC ใช้ XOR ข้อมูลแต่ละบล็อกของข้อความต้นฉบับกับบล็อกข้อความเข้ารหัสก่อนหน้า ก่อนทำการเข้ารหัส: C0 = AES(K, P0 XOR IV) Ci = AES(K, Pi XOR C(i-1)) ข้อความต้นฉบับเดียวกันในตำแหน่งต่างกัน → ข้อความเข้ารหัสต่างกัน

เวกเตอร์เริ่มต้น (IV)

IV ทำหน้าที่เป็น C(-1) สำหรับบล็อกแรก โดยต้องมีคุณสมบัติดังนี้: - สุ่มและไม่ซ้ำกันสำหรับแต่ละข้อความ - ไม่เป็นความลับ (ส่งไปพร้อมกับข้อความเข้ารหัสได้) - ห้ามนำกลับมาใช้ซ้ำกับกุญแจเดิมโดยเด็ดขาด IV ที่คาดเดาได้จะทำลายความปลอดภัยของ CBC

การถอดรหัส CBC

Pi = AES_Dec(K, Ci) XOR C(i-1) P0 = AES_Dec(K, C0) XOR IV โปรดสังเกตว่า การถอดรหัสบล็อก i ต้องใช้เพียง Ci และ C(i-1) เท่านั้น บล็อกต่าง ๆ จึงสามารถถอดรหัสพร้อมกันได้ (ต่างจากการเข้ารหัส)

การโจมตีแบบพลิกบิตของ CBC

การพลิกบิต i ในบล็อก Ci ทำให้เกิดผลดังนี้: (1) Pi เสียหายจนอ่านไม่ได้ (2) บิต i ใน P(i+1) พลิกอย่างคาดเดาได้ หากไม่มีการตรวจสอบความถูกต้อง ผู้โจมตีสามารถแก้ไขบิตเฉพาะในข้อความต้นฉบับได้ โดยรู้ว่าบิตเหล่านั้นอยู่ที่ใด

การโจมตี BEAST ต่อ TLS 1.0 (2011)

BEAST อาศัยการที่ TLS 1.0 ใช้ CBC ร่วมกับ IV ที่คาดเดาได้ บล็อกสุดท้ายของระเบียนหนึ่งถูกใช้เป็น IV สำหรับระเบียนถัดไป Rizzo และ Duong เป็นผู้สาธิตการโจมตีนี้ ทำให้เบราว์เซอร์ต้องอัปเกรดเป็น TLS 1.1 ขึ้นไป

เหตุใด CBC จึงต้องมีการตรวจสอบความถูกต้อง

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

การใช้ CBC ใน Python

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes import os iv = os.urandom(16) key = os.urandom(32) cipher = Cipher(algorithms.AES(key), modes.CBC(iv)) enc = cipher.encryptor() ciphertext = enc.update(padded_plaintext) + enc.finalize()

ตรวจสอบความเข้าใจอย่างรวดเร็ว

เหตุใดโหมด ECB จึงเปิดเผยข้อมูลเกี่ยวกับโครงสร้างของข้อความต้นฉบับ

สรุปทบทวน

ECB อันตราย ส่วน CBC ดีกว่าแต่ต้องมีการตรวจสอบความถูกต้อง บทถัดไปเราจะศึกษาโหมด CTR ซึ่งเปลี่ยน AES ให้เป็นรหัสลับแบบสตรีม

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

บทเรียน “ECB กับ CBC: รูปแบบและ IV” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ECB กับ CBC: รูปแบบและ IV”

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

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

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

บทเรียน “ECB กับ CBC: รูปแบบและ IV” ใช้เวลานานแค่ไหน

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

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

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

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

  1. พื้นฐานรหัสเข้ารหัสแบบบล็อกและการเติมข้อมูล
  2. ECB กับ CBC: รูปแบบและ IV
  3. โหมด CTR และพฤติกรรมของรหัสเข้ารหัสแบบสตรีม
  4. GCM และการเข้ารหัสพร้อมการพิสูจน์ตัวตน
← กลับไปที่ Cryptology Academy