Expansion Permutation (การสลับตำแหน่งขยาย) คืออะไร?
ขยาย Right Half (R) จาก 32 บิต → 48 บิต พร้อมเปลี่ยนลำดับบิตและซ้ำบิตบางตัว เรียกว่า Expansion Permutation
วัตถุประสงค์ 2 ข้อ
- ทำให้ Right Half ขนาดเท่ากับ Key สำหรับ XOR Operation
- ให้ผลลัพธ์ยาวขึ้น เพื่อบีบอัดระหว่าง Substitution Operation ทำให้ 1 บิต Input ส่งผลต่อ 2 Substitutions → Dependency ของ Output Bits บน Input Bits กระจายเร็วขึ้น = Avalanche Effect
กระบวนการ
- 32-bit RPT → แบ่ง 8 Blocks ละ 4 บิต
- แต่ละ 4-bit Block → ขยายเป็น 6-bit Block (เพิ่ม 2 บิต: บิตแรกและบิตที่ 4 ซ้ำ)
- บิตที่ 2,3 เขียนเหมือนเดิม บิตแรก → Output Position 2 และ 48 บิตที่ 32 → Output Position 47 และ 1
- ผล: Expansion + Permutation พร้อมกัน First Input Bit → Output Positions 2 และ 48
Expansion Permutation Table
| 32 | 1 | 2 | 3 | 4 | 5 | 4 | 5 | 6 | 7 | 8 | 9 |
| 8 | 9 | 10 | 11 | 12 | 13 | 12 | 13 | 14 | 15 | 16 | 17 |
| 16 | 17 | 18 | 19 | 20 | 21 | 20 | 21 | 22 | 23 | 24 | 25 |
| 24 | 25 | 26 | 27 | 28 | 29 | 28 | 29 | 30 | 31 | 32 | 1 |
การเชื่อมต่อกับขั้นตอนถัดไป
Key Transformation: 56-bit Key → Compress → 48 bits Expansion Permutation: 32-bit RPT → Expand → 48 bits 48-bit Key XOR 48-bit RPT → Output → S-box Substitution