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

โหมด CTR และพฤติกรรมของรหัสเข้ารหัสแบบสตรีม

ใช้โหมดตัวนับเพื่อเปลี่ยนรหัสเข้ารหัสแบบบล็อกให้เป็นตัวสร้างกระแสคีย์

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

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

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

แนวคิดของโหมด CTR

สร้างกระแสกุญแจโดยเข้ารหัสค่าเคาน์เตอร์ต่อเนื่องกัน: Keystream[i] = AES(K, Nonce || Counter_i) Ciphertext = Plaintext XOR Keystream เคาน์เตอร์จะเพิ่มขึ้นสำหรับแต่ละบล็อก การถอดรหัสทำเหมือนกับการเข้ารหัส

CTR เทียบกับ CBC

CBC: การเข้ารหัสแบบต่อเนื่อง (แต่ละบล็อกขึ้นอยู่กับบล็อกก่อนหน้า) ส่วน CTR: สามารถประมวลผลแบบขนานได้อย่างสมบูรณ์ (แต่ละบล็อกเป็นอิสระต่อกัน) สำหรับไฟล์ขนาด 1 GB, CTR สามารถใช้แกนประมวลผลของ CPU ได้ทั้งหมด แต่ CBC ทำไม่ได้

ไม่ต้องเติมข้อมูลให้เต็มบล็อก

CTR สร้างกระแสกุญแจที่มีความยาวเท่าใดก็ได้ แล้วทำ XOR กับข้อความต้นฉบับทีละไบต์ ข้อความขนาด 100 ไบต์จะใช้กระแสกุญแจ 100 ไบต์ จึงไม่จำเป็นต้องเติมข้อมูลให้เต็มบล็อก เหมาะอย่างยิ่งกับข้อมูลแบบสตรีม

โครงสร้างนอนซ์/ตัวนับ

การแบ่งที่ใช้กันทั่วไปสำหรับบล็อก AES ขนาด 128 บิต: - นอนซ์สุ่มขนาด 64 บิต (ไม่ซ้ำกันในแต่ละข้อความ) - ตัวนับขนาด 64 บิต (เพิ่มค่าทีละหนึ่งในแต่ละบล็อก) หรือใช้นอนซ์ขนาด 96 บิต + ตัวนับขนาด 32 บิต (มาตรฐาน GCM) ความไม่ซ้ำกันของนอนซ์มีความสำคัญอย่างยิ่ง — ห้ามใช้คู่ (นอนซ์, คีย์) ซ้ำโดยเด็ดขาด

การโจมตีจากการใช้นอนซ์ของ CTR ซ้ำ

CTR ที่ใช้คู่ (คีย์, นอนซ์) เดียวกันจะสร้างกระแสกุญแจเดียวกัน การเข้ารหัสข้อความสองข้อความที่แตกต่างกันจะได้ผลลัพธ์เป็น C1 XOR C2 = P1 XOR P2 เช่นเดียวกับการโจมตีแผ่นรหัสแบบใช้หลายครั้ง เป็นการรั่วไหลของข้อมูลอย่างร้ายแรง

การเข้าถึงแบบสุ่มของ CTR

CTR รองรับการเข้าถึงแบบสุ่ม: หากต้องการถอดรหัสบล็อกที่ 1000 ให้คำนวณ AES(K, Nonce || 1000) ได้โดยตรง ไม่จำเป็นต้องถอดรหัสบล็อกก่อนหน้า เหมาะอย่างยิ่งกับฐานข้อมูลและการเข้ารหัสดิสก์ (เมื่อใช้ร่วมกับโหมดอื่น)

CTR ใน Python

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes import os nonce = os.urandom(16) # Used as counter start cipher = Cipher(algorithms.AES(key), modes.CTR(nonce)) enc = cipher.encryptor() ciphertext = enc.update(plaintext) + enc.finalize()

CTR และการแพร่กระจายของข้อผิดพลาด

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

โหมด SIV เพื่อป้องกันการใช้นอนซ์ผิดวิธี

AES-SIV (ค่า IV สังเคราะห์) ทนทานต่อการใช้นอนซ์ผิดวิธี: แม้จะใช้นอนซ์ซ้ำ ก็จะเปิดเผยเพียงว่าข้อความต้นฉบับเหมือนกันหรือไม่ ไม่ได้เปิดเผยข้อความต้นฉบับทั้งหมด เหมาะกับสถานการณ์ที่รับประกันความไม่ซ้ำกันของนอนซ์ได้ยาก

จาก CTR สู่ GCM

AES-GCM = AES-CTR + การยืนยันความถูกต้องด้วย GHASH โหมดตัวนับจัดการการเข้ารหัส ส่วน GHASH คำนวณแท็กยืนยันความถูกต้องโดยใช้การคูณในฟีลด์กาลัวส์ เมื่อทำงานร่วมกันจะได้การเข้ารหัสพร้อมยืนยันความถูกต้อง

ตรวจสอบความเข้าใจ

ข้อได้เปรียบหลักของโหมด CTR เหนือโหมด CBC สำหรับการเข้ารหัสข้อมูลปริมาณมากคืออะไร

ทบทวน

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

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

บทเรียน “โหมด CTR และพฤติกรรมของรหัสเข้ารหัสแบบสตรีม” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “โหมด CTR และพฤติกรรมของรหัสเข้ารหัสแบบสตรีม”

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

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

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

บทเรียน “โหมด CTR และพฤติกรรมของรหัสเข้ารหัสแบบสตรีม” ใช้เวลานานแค่ไหน

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

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

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

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

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