Block Cipher (บล็อกไซเฟอร์) คืออะไร?
Block Cipher เป็นชุดของการเข้ารหัสที่แบ่ง Plaintext ออกเป็นบล็อกๆ ละขนาดคงที่ (Fixed-size blocks) แต่ละบล็อกมีจำนวนบิตข้อมูลเท่ากัน ในเวลาใดเวลาหนึ่ง กระบวนการเข้ารหัสจะทำงานกับบล็อก Plaintext เพียงบล็อกเดียว ใช้ Encryption Key เพื่อแปลงเป็นบล็อกของ Ciphertext
ตัวอย่าง
ขนาดบล็อก 64 บิต Plaintext 160 บิต จะเข้ารหัสเป็น 2 บล็อก 64 บิต บล็อกที่ 3 เหลือ 32 บิต จะเติม Padding อีก 32 บิต เพื่อให้ขนาดเท่ากับบล็อกอื่น
คุณสมบัติสำคัญ
- ใช้ Deterministic Algorithm ร่วมกับ Symmetric Key เข้ารหัสบล็อกข้อความ แตกต่างจาก Stream Cipher ที่เข้ารหัสทีละบิต
- เป็น Pseudorandom Permutation (PRP) ทำงานบนบล็อกบิตขนาดคงที่ PRP ไม่แยกแยะได้จาก Permutation แบบสุ่มจริง จึงน่าเชื่อถือจนกว่าจะพิสูจน์ตรงข้าม
- แปลง Plaintext บล็อก n บิต เป็น Ciphertext บล็อก n บิต ต้องเป็นการแปลงที่ย้อนกลับได้ (Reversible/Non-singular) ทุกบล็อก Plaintext ต้องให้ Ciphertext ที่ไม่ซ้ำกัน
Modes of Operation
มีการพัฒนา Modes of Operation เพื่อป้องกันการเข้ารหัสบล็อกที่เหมือนกันด้วยวิธีเดียวกัน ใช้ Ciphertext จากบล็อกก่อนหน้ามา XOR กับบล็อกถัดไป ใช้ Initialization Vector (IV) เพื่อให้ Ciphertext ต่างกันแม้ Plaintext และ Key จะเหมือนกัน
การเปรียบเทียบกับ Stream Cipher
Block Cipher เข้ารหัสเป็นย่อหน้า (บล็อก) Stream Cipher เข้ารหัสทีละตัวอักษร (บิต) ทั้งคู่สามารถถอดรหัสได้โดยรันผ่าน Cipher อีกครั้ง