Stream Cipher คืออะไร?
Stream Cipher เข้ารหัสสตริงต่อเนื่องของตัวเลขไบนารี โดยใช้ Transformation ที่เปลี่ยนแปลงตามเวลา บน Plaintext ทำงานแบบ Bit-by-bit ใช้ Keystream สร้าง Ciphertext สำหรับ Plaintext ความยาวเท่าไหร่ก็ได้
การทำงาน
- รวม Key (128/256 บิต) และ Nonce (64-128 บิต) สร้าง Keystream
- Pseudorandom Number XOR กับ Plaintext ได้ Ciphertext
- Key และ Nonce ใช้ซ้ำได้ แต่ Keystream ต้อง Unique ทุกครั้งเพื่อความปลอดภัย
- ใช้ Feedback Shift Registers สร้าง Nonce เฉพาะ (Number used once)
คุณสมบัติ
- Error ในการแปลง 1 บิต ไม่กระทบบล็อก Plaintext ทั้งหมด (น้อยกว่า Block Cipher)
- ทำงานแบบ Linear, Perpetual เรียบง่ายและเร็วกว่า
- ข้อจำกัด: ขาด Diffusion (1 Plaintext digit → 1 Ciphertext output) ไม่ยืนยัน Authenticity เสี่ยงต่อ Insertion Attacks หากโจมตีแฮกอัลกอริทึม จะเพิ่ม/เปลี่ยนข้อความได้โดยไม่ถูกตรวจพบ
การใช้งาน
เข้ารหัสข้อมูลในแอปพลิเคชันที่ขนาด Plaintext ไม่ทราบล่วงหน้า และ Low-latency ใช้ Keystream: Random 8-bit Output จาก Key ผ่าน Pseudorandom Bit Generator
ข้อดีของ Stream Cipher
- ปลอดภัยเท่า Block Cipher ความยาวคีย์เท่ากัน (ถ้าออกแบบ PRNG ดี)
- เร็วกว่าและโค้ดน้อยกว่า Block Cipher (ถ้าไม่ใช้ Block Cipher เป็น Building Block)
- เหมาะสำหรับ Data Communications Channel, Browser/Web Link
- Block Cipher เหมาะสำหรับ File Transfer, Email, Database
- แต่ Stream Cipher ใช้ได้ในแอปพลิเคชันเกือบทุกประเภท