Wednesday, August 18, 2010

Data Protection and Data Encryption

ผมมีบทความเก็บตก ที่เขียนไว้นานมากแล้ว แม้ว่าเป็นบทความสั้นๆ แต่ก็กระชับได้ใจความ น่าจะพอเป็นแนวทางช่วยให้เข้าใจในภาพกว้างก่อนลงในรายละเอียดได้ครับ

บทความนี้เป็นบทความเกี่ยวกับการทำ Data Protection และ Data Encryption โดยอธิบายในแบบกว้างๆ เพื่อให้ได้เห็นภาพของรูปแบบต่างๆ ของการทำ Protection และ Encryption ข้อมูล

Data Protection
สำหรับ Database design นั้น การพิจารณาเรื่อง Security จะต้องตระหนักถึง performance ด้วย ถ้า design ให้มี security มากๆแล้ว ก็จะทำให้ performance ลดลงได้ ดังนั้น จึงควร design data protection methods ที่จะกระทบกับ database performance ให้น้อยที่สุด

จุดมุ่งหมายหลักของ database security คือ data protection ซึ่งประกอบด้วย 3 องค์ประกอบหลักคือ
  • Confidentiality คือ การรักษาความลับของข้อมูล สามารถ access ได้เฉพาะ users ที่มีสิทธิเท่านั้น
  • Integrity คือ ข้อมูลไม่มีการเปลี่ยนแปลง มีความบูรณภาพ แท้จริง สามารถเชื่อถือได้
  • Non-repudiability คือ มีกลไกจัดการที่ users ไม่สามารถปฏิเสธได้

กลยุทธ์ในการทำ Designing data protection
Use views to hide data
ใช้ views เพื่อจัดการซ่อนข้อมูลที่ต้องการ protect ไว้ เช่น ถ้าไม่ต้องการให้ employees สามารถ access ข้อมูล invoices ย้อนหลังเกิน 24 ชั่วโมงไปแล้ว สามารถสร้าง view โดยระบุเงื่อนไขที่ต้องการไว้ใน WHERE ว่า InvoiceDate>DateAdd(day, -1, GetDate()) และ ให้สิทธิ (grant) ในการ access ได้เฉพาะ view ไม่ให้สิทธิในการ access ตัว table หลัก

Use the WITH CHECK OPTION in views
ถ้าใช้ WITH CHECK OPTION แล้ว จะสามารถจำกัดการแก้ไข rows ใน view ได้ เพราะถ้ามีการแก้ไขข้อมูลใน view การแก้ไขนั้นจะต้องเป็น row ที่อยู่ในเงื่อนไข WHERE เท่านั้น
** ถ้าไม่กำหนด Option นี้ไว้แล้ว users ก็จะยังสามารถแก้ไขข้อมูลที่ไม่ได้แสดงใน view ได้

Use stored procedures to protect data
สามารถใช้ stored procedures โดยการ ปฏิเสธ (deny) การ access แบบ direct ไปยังข้อมูลได้ นอกจากนี้ การใช้ stored procedures ยังมีประสิทธิภาพ (effective) มากกว่า views อีกด้วย
เนื่องจาก stored procedures นั้นใช้ภาษา Transact-SQL ในการ code จึงสามารถเขียน logic ที่ซับซ้อนกว่าที่ views สามารถทำได้

Data encryption
การทำ data encryption เป็นเทคนิคหลักที่ใช้ในการจัดการรักษาความลับของข้อมูล ในการวิเคราะห์ความต้องการสำหรับการทำ data encryption นั้นควรทำการวิเคาระห์จาก business requirements
SQL Server 2005 ได้จัดเตรียมการ encryption และ การจัดการ key infrastructure เพื่อให้ developers ใช้ใน Transact-SQL ในการ encrypt ข้อมูลได้

สามารถใช้ EncryptByAsymKey และ DecryptByAsymKey function เพื่อทำการ encrypt ข้อมูลแบบ asymmetric

และสามารถใช้ EncryptByKey และ DecryptByKey function เพื่อทำการ encrypt ข้อมูลแบบ symmetric

Asymmetric encryption ใช้ RSA algorithm โดยมี private keys แบบ 512, 1024 หรือ 2048 bytes

Symmetric encryption ใช้ TRIPLE_DES algorithm

Asymmetric keys มีความปลอดภัยสูงที่สุด แต่ก็ทำให้ performance ตกลงมากที่สุดเช่นกัน ต่างจาก Symmetric keys ที่ไม่มีปัญหาเรื่อง performance สามารถประมวลผลได้อย่างรวดเร็ว แต่ทั้งนี้ Symmetric keys มีความปลอดภัยน้อย ดังนั้น ควรเลือกใช้ประเภทของ keys ให้เหมาะสมกับความต้องการ และ ขนาดของ hardware infrastructure ด้วย

ตัวอย่างของข้อมูลที่ต้องการ encrypt
1. Password ของ users ที่ทำการจัดเก็บอยู่ในฐานข้อมูล
2. Sensitive data เช่น Credit card numbers, medical records

NooM

1 comment:

proSbeginner said...

ไม่เคยรู้เรื่องเกี่ยวกับ Data Protection มาก่อนเลย อ่านแล้วเข้าใจว่าคงมีเรื่องให้คิดและจัดการกับมันอีกไม่น้อย ท่านพอจะแนะนำแหล่งความรู้ให้ศึกษาต่อได้หรือไม่ครับ ? จะเป็นพระคุณยิ่งครับ
จาก Phai tong