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

การเข้ารหัส XOR และแผ่นรหัสใช้ครั้งเดียว

สร้างรหัส XOR อย่างง่ายและค้นพบรูปแบบที่มีความลับสมบูรณ์แบบ

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

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

การเข้ารหัสด้วย XOR นั้นเรียบง่าย: ciphertext = plaintext XOR key เมื่อคีย์สุ่มอย่างแท้จริงและใช้เพียงครั้งเดียว เราจะได้แผ่นรหัสใช้ครั้งเดียว ซึ่งเป็นรหัสลับเพียงรูปแบบเดียวที่พิสูจน์ได้ว่าไม่สามารถถอดรหัสได้

พื้นฐานการเข้ารหัสด้วย XOR

key = bytes([0x5A, 0xF2, 0x3C, 0x11]) plaintext = bytes([0x48, 0x65, 0x6C, 0x6C]) # 'Hell' ciphertext = bytes(p^k for p,k in zip(plaintext,key)) # Result: 0x12 0x97 0x50 0x7D

คุณสมบัติการผกผันตัวเองของ XOR

การถอดรหัสเหมือนกับการเข้ารหัส: plain = cipher XOR key พิสูจน์: (P XOR K) XOR K = P XOR (K XOR K) = P XOR 0 = P ด้วยเหตุนี้ รหัสลับแบบ XOR จึงเป็นสมมาตรอย่างตรงไปตรงมา

แนวคิดแผ่นรหัสใช้ครั้งเดียว

แผ่นรหัสใช้ครั้งเดียว (OTP) ใช้คีย์สุ่มที่มีความยาวเท่ากับข้อความและใช้เพียงครั้งเดียวเท่านั้น ในทางทฤษฎีไม่สามารถถอดรหัสได้: ciphertext ทุกชุดสามารถถอดรหัสเป็น plaintext ที่เป็นไปได้ทุกแบบด้วยความน่าจะเป็นเท่ากัน

การพิสูจน์ความลับสมบูรณ์แบบของ Shannon

Claude Shannon พิสูจน์ไว้ในปี 1949 ว่า รหัสลับจะมีความลับสมบูรณ์แบบก็ต่อเมื่อคีย์เป็นแบบสุ่ม มีความยาวอย่างน้อยเท่ากับข้อความ และถูกใช้ไม่เกินหนึ่งครั้ง OTP เป็นรหัสลับเชิงปฏิบัติเพียงรูปแบบเดียวที่มีคุณสมบัตินี้

ข้อจำกัดในการใช้งาน OTP

คีย์ต้องมีความยาวเท่ากับข้อความ ต้องแจกจ่ายอย่างปลอดภัย และห้ามนำกลับมาใช้ซ้ำโดยเด็ดขาด ข้อจำกัดเหล่านี้ทำให้ OTP ไม่เหมาะกับการใช้งานส่วนใหญ่

การโจมตีจากการใช้คีย์ซ้ำ: แผ่นรหัสหลายครั้ง

หาก C1 = P1 XOR K และ C2 = P2 XOR K ดังนั้น C1 XOR C2 = P1 XOR P2 คีย์จะหักล้างกันเอง! ผู้โจมตีที่มี ciphertext สองชุดจะได้ P1 XOR P2 ซึ่งทำให้รูปแบบบางอย่างรั่วไหล

การโจมตีแบบลากวลีตัวอย่าง

หากผู้โจมตีเดาบางส่วนของ P1 ได้ (เรียกว่า 'crib' เช่น ' the ') เมื่อนำไป XOR กับ P1 XOR P2 ในแต่ละตำแหน่ง จะเผยข้อความ P2 ที่สอดคล้องกัน เมื่อทำซ้ำไปเรื่อย ๆ จะกู้คืน plaintext ทั้งหมดได้

ความล้มเหลวจากการใช้คีย์ซ้ำในโลกจริง

โครงการ Venona ถอดรหัสข้อความจากแผ่นรหัสใช้ครั้งเดียวของสหภาพโซเวียตได้หลายพันข้อความ เพราะเจ้าหน้าที่ KGB นำแผ่นรหัสกลับมาใช้ซ้ำภายใต้แรงกดดันในช่วงสงคราม การใช้คีย์ซ้ำทำลายการเข้ารหัสที่พิสูจน์แล้วว่ามีความสมบูรณ์แบบ

XOR ในรหัสลับแบบสตรีม

รหัสลับแบบสตรีมสมัยใหม่ (ChaCha20, RC4) จะสร้างกระแสคีย์เทียมสุ่มแล้วนำไป XOR กับ plaintext รหัสเหล่านี้เลียนแบบ OTP แต่ใช้คีย์สั้นที่ขยายด้วย CSPRNG

ตัวอย่างการเข้ารหัสด้วย XOR ใน Python

import os def otp_encrypt(plaintext: bytes) -> tuple: key = os.urandom(len(plaintext)) ciphertext = bytes(p^k for p,k in zip(plaintext,key)) return ciphertext, key ciphertext, key = otp_encrypt(b'Secret!')

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

เหตุใดการใช้คีย์ของแผ่นรหัสใช้ครั้งเดียวซ้ำจึงไม่ปลอดภัยอย่างร้ายแรง

สรุป

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

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

บทเรียน “การเข้ารหัส XOR และแผ่นรหัสใช้ครั้งเดียว” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การเข้ารหัส XOR และแผ่นรหัสใช้ครั้งเดียว”

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

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

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

บทเรียน “การเข้ารหัส XOR และแผ่นรหัสใช้ครั้งเดียว” ใช้เวลานานแค่ไหน

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

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

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

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

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