Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

DES มีจำนวนรอบเท่าไร?

ภาพรวมของ DES

มาตรฐานการเข้ารหัสข้อมูล (DES) ใช้อัลกอริทึมบล็อกไซเฟอร์ที่ประมวลผลข้อมูลในบล็อกขนาด 64 บิต โดยใช้โครงสร้างไฟสเทล (Feistel) ซึ่งประกอบด้วย 16 รอบ การเข้ารหัสที่เหมือนกันทุกรอบ

ขั้นตอนหลักในแต่ละรอบ

แต่ละรอบของ DES ประกอบด้วยขั้นตอนหลัก 4 ขั้นตอน ดังนี้

1. การแปลงกุญแจ (Key Transformation)

  • กุญแจเริ่มต้น 64 บิต จะถูกตัดให้เหลือ 56 บิต โดยการนำบิตที่ 8, 16, 24, 32, 40, 48, 56, 64 ออก (ใช้เป็นบิตเช็คพาริตี้)
  • กุญแจ 56 บิต จะถูกแบ่งเป็น 2 ส่วน ครึ่งละ 28 บิต
  • แต่ละครึ่งจะถูกเลื่อนวนซ้าย (Circular Left Shift) ตามตารางกำหนด:
    รอบที่ 1, 2, 9, 16 เลื่อน 1 บิต | รอบอื่นๆ เลื่อน 2 บิต
  • จาก 56 บิตที่เลื่อนแล้ว จะผ่านการบีบอัด/เรียงลำดับ (Compression Permutation) เพื่อสร้างกุญแจย่อย (Subkey) ขนาด 48 บิต สำหรับแต่ละรอบ

2. การเรียงลำดับขยาย (Expansion Permutation)

  • ข้อความต้นฉบับ 64 บิต หลังการเรียงลำดับเริ่มต้น (IP) จะถูกแบ่งเป็น Left Plain Text (LPT) 32 บิต และ Right Plain Text (RPT) 32 บิต
  • RPT จะถูกขยายจาก 32 บิต เป็น 48 บิต โดยการทำซ้ำบิตบางส่วน ตามตาราง E-box
  • จุดประสงค์: ทำให้ขนาดข้อมูลเท่ากับกุญแจย่อย 48 บิต เพื่อทำ XOR ได้

3. การแทนที่ S-box (S-box Substitution)

  • ผลลัพธ์ 48 บิตจาก XOR (ระหว่าง RPT ที่ขยายแล้วกับกุญแจย่อย) จะถูกแบ่งเป็น 8 ส่วน ส่วนละ 6 บิต
  • แต่ละส่วน 6 บิต จะเข้าสู่ S-box (มีทั้งหมด 8 ตัว) ซึ่งแต่ละตัวมีตารางแทนที่ 4 แถว × 16 คอลัมน์
  • บิตที่ 1 และ 6 กำหนดแถว (0-3), บิตที่ 2-5 กำหนดคอลัมน์ (0-15)
  • แต่ละ S-box ให้ผลลัพธ์ 4 บิต รวมเป็น 32 บิต
  • นี่คือส่วนที่ให้ความสับสน (Confusion) ในระบบ

4. การเรียงลำดับ P-box (P-box Permutation)

  • เอา 32 บิตจาก S-box ผ่านการเรียงลำดับคงที่ (Fixed Permutation) ตามตาราง P-box
  • ไม่มีการขยายหรือบีบอัด แค่สลับตำแหน่งบิตเท่านั้น
  • ให้การกระจาย (Diffusion) ให้บิตหนึ่งบิตส่งผลต่อหลายบิตในรอบถัดไป

5. การ XOR และสลับ (XOR and Swap)

  • นำ LPT เดิม (32 บิต) มา XOR กับผลลัพธ์จาก P-box (32 บิต) → ได้ RPT ใหม่
  • RPT เดิมจะกลายเป็น LPT ใหม่ (Swap)
  • ขั้นตอนนี้ทำซ้ำ 16 รอบ

สรุป

DES ใช้ 16 รอบการเข้ารหัส แต่ละรอบประกอบด้วยการแปลงกุญแจ, การขยายบิต, การแทนที่ด้วย S-box, การเรียงลำดับ P-box และการ XOR พร้อมสลับครึ่งบล็อก โครงสร้างนี้ให้ความปลอดภัยผ่านการสับสน (Confusion) และการกระจาย (Diffusion) ตามหลักการของ Claude Shannon