Hashing
กระบวนการทางเข้ารหัสตรวจสอบ Authenticity และ Integrity ของ Input ต่างๆ ใช้ใน Authentication Systems ป้องกันเก็บ Plaintext Passwords ใน Database ยังใช้ตรวจสอบไฟล์ เอกสาร ข้อมูลประเภทอื่น การใช้ Hashing ผิดวิธีทำให้ Data Breach แต่ไม่ใช้ Hashing เลยก็แย่กว่า
คุณสมบัติ Hashing Function
- One-way (ไม่ย้อนกลับได้): Output คือ Fixed-length String เรียกว่า Hash Value, Digest, หรือ Hash
- ไม่ต้องเก็บเป็นความลับ: เพราะกลับเป็นค่าเดิมไม่ได้
- Deterministic: Input เดียวกัน → Hash เดียวกันเสมอ
- Collision: Input ต่างกัน → Hash เหมือนกัน หากหา Collision ง่าย ถือว่า Hash Function เสียหายทางความปลอดภัย
Encryption
กระบวนการเข้ารหัส Plaintext และข้อมูลอื่นๆ ให้เข้าถึงได้เฉพาะผู้มี Decryption Key ป้องกันข้อมูลละเอียดอ่อนจาก Cybercriminals วิธีที่มีประสิทธิภาพที่สุดสำหรับ Information Security ในระบบสื่อสารสมัยใหม่
หลักการ
- ผู้รับต้องมี Password หรือ Security Key สำหรับ Decryption
- Plaintext = ข้อมูลไม่เข้ารหัส, Ciphertext = ข้อมูลเข้ารหัส
- วัตถุประสงค์: ป้องกันข้อมูลจากผู้ไม่ได้รับอนุญาต
ตารางเปรียบเทียบ
| Hashing | Encryption |
|---|---|
| One-way Function สร้าง Message Digest จาก Input ไม่ใช้ Key | Two-way Function สลับข้อมูลด้วย Encryption Key ถอดรหัสด้วย Decryption Key |
| ตรวจสอบ Integrity โดยตรวจจับการเปลี่ยนแปลงผ่าน Hash Output | เข้ารหัสเพื่อ Confidentiality และ Security ต้องใช้ Private Key ถอดรหัส |
| ไม่ต้องการ Key | ใช้ Key: Symmetric ใช้ Public Key เท่านั้น Asymmetric ใช้ Public และ Private Key |
| วัตถุประสงค์: Verify Data (Integrity) | วัตถุประสงค์: Transmit Data Securely (Confidentiality) |