PlusMagi's Blog By Pitt Phunsanit Cybersecurity,Database Data Encryption: เข้ารหัสข้อมูลทั้ง Data-at-Rest (เช่น Database, Harddisk) และ Data-in-Transit (เช่น TLS/HTTPS)

Data Encryption: เข้ารหัสข้อมูลทั้ง Data-at-Rest (เช่น Database, Harddisk) และ Data-in-Transit (เช่น TLS/HTTPS)

ในยุคที่ข้อมูล (Data) คือสินทรัพย์ที่มีมูลค่าสูงสุด การปกป้องข้อมูลส่วนบุคคลและข้อมูลองค์กรจึงเป็นภารกิจด้านความมั่นคงที่สำคัญที่สุด ภัยคุกคามทางไซเบอร์มีความซับซ้อนมากขึ้น ทำให้การเก็บรักษาและการส่งผ่านข้อมูลอย่างปลอดภัยต้องอาศัยมาตรการป้องกันที่เข้มงวด การเข้ารหัส (Encryption) คือหัวใจหลักของการป้องกันนี้

หลักการเข้ารหัสข้อมูลใน PostgreSQL: Data-at-Rest และ Data-in-Transit

การเข้ารหัสคือกระบวนการแปลงข้อมูลที่อ่านได้ (Plaintext) ให้กลายเป็นรูปแบบที่ไม่อ่านออก (Ciphertext) โดยใช้กุญแจลับ (Key) ในบริบทของ PostgreSQL เราต้องพิจารณาการป้องกันข้อมูลในสองมิติหลัก คือ Data-at-Rest และ Data-in-Transit

🛡️ Data-at-Rest: การเข้ารหัสข้อมูลที่จัดเก็บ (Database/Harddisk)

Data-at-Rest หมายถึงข้อมูลที่ถูกจัดเก็บอย่างถาวรในฐานข้อมูล (Database) หรือที่จัดเก็บทางกายภาพ การป้องกันส่วนนี้จะรับประกันว่าแม้ผู้บุกรุกจะเข้าถึงไฟล์ฐานข้อมูลได้ ก็ไม่สามารถอ่านข้อมูลสำคัญได้หากไม่มีกุญแจถอดรหัส

ใน PostgreSQL เราสามารถใช้ Extension ที่ชื่อว่า pgcrypto เพื่อทำการเข้ารหัสคอลัมน์ที่มีความอ่อนไหว เช่น หมายเลขบัตรเครดิต หรือรหัสผ่าน:

SQL

-- 1. ติดตั้ง Extension ที่จำเป็น (ต้องใช้สิทธิ์ Superuser)</code>
SELECT pgcrypto.create_extension();

-- 2. ตัวอย่างการเข้ารหัสข้อมูล (Encryption)
SELECT pgp_sym_encrypt('user_sensitive_data_123', 'your_strong_key') AS encrypted_data;

-- 3. ตัวอย่างการถอดรหัสข้อมูล (Decryption) (ต้องใช้ Key เดิม)
SELECT pgp_sym_decrypt(encrypted_data, 'your_strong_key') AS decrypted_data;

(หมายเหตุ: การใช้ pgcrypto เป็นการเข้ารหัสระดับแอปพลิเคชัน (Application-level) ซึ่งให้ความปลอดภัยสูงกว่าการเข้ารหัสระดับไฟล์ระบบ (File-system level) ในกรณีที่ข้อมูลถูกขโมยไป)

🌐 Data-in-Transit: การเข้ารหัสข้อมูลที่กำลังส่งผ่าน (TLS/HTTPS)

Data-in-Transit คือข้อมูลที่กำลังเคลื่อนย้ายผ่านเครือข่ายระหว่างไคลเอนต์ (Client) กับเซิร์ฟเวอร์ (Server) การดักฟังข้อมูลระหว่างทาง (Man-in-the-Middle Attack) เป็นภัยคุกคามที่ร้ายแรงที่สุด

สำหรับการป้องกันส่วนนี้ PostgreSQL ไม่ได้ใช้คำสั่ง SQL โดยตรง แต่ต้องอาศัยการตั้งค่าระดับ Network Configuration โดยการบังคับใช้ SSL/TLS ในการเชื่อมต่อทั้งหมด การตั้งค่านี้จะรับประกันว่าการสื่อสารทั้งหมดถูกเข้ารหัสตั้งแต่ต้นทางถึงปลายทาง ทำให้ข้อมูลที่ถูกดักฟังเป็นเพียงข้อมูลที่อ่านไม่ออก

สรุป: แนวทางการป้องกันข้อมูลแบบหลายชั้น (Defense in Depth)

การรักษาความปลอดภัยข้อมูลที่สมบูรณ์แบบต้องอาศัยการป้องกันแบบหลายชั้น (Defense in Depth) โดยการใช้ pgcrypto เพื่อเข้ารหัสข้อมูลที่จัดเก็บ (Data-at-Rest) ควบคู่ไปกับการบังคับใช้ SSL/TLS เพื่อเข้ารหัสการส่งผ่านข้อมูล (Data-in-Transit) การรวมมาตรการทั้งสองส่วนนี้เข้าด้วยกันจะช่วยยกระดับความมั่นคงปลอดภัยของระบบ PostgreSQL ขององค์กรได้อย่างสูงสุด