ข้ามไปที่เนื้อหา
CEDTAN

Lecture 4 — Authorization

รู้แล้วว่าเป็นใคร แล้วจะให้ทำอะไรได้บ้าง คาบนี้ว่าด้วยการเขียนนโยบาย แปลงเป็นตาราง แล้วบังคับใช้จริง

เลกเชอร์ 4 · อ่าน 35 นาที · เรียบเรียงจากสไลด์ Chapter 4 ของ Krerk Piromsopa, Ph.D.

แนวคิดหลักทำไมต้องมีสิ่งนี้เทียบให้เห็นภาพตัวอย่างจุดที่คนพลาดบ่อยสรุปท้ายคาบ
แนวคิดหลัก

Authentication ตอบว่า คุณเป็นใคร ส่วน Authorization ตอบว่า คุณทำอะไรได้ และคำตอบข้อหลังไม่มีคำตอบสากล มันขึ้นกับนโยบายของแต่ละระบบ — ปลอดภัยในแอป A ไม่ได้แปลว่าปลอดภัยในแอป B

ข้อมูลในหน้านี้มาจากไหน

เนื้อหามาจากสไลด์ Chapter 4 ทั้ง 44 หน้า คำนิยาม ชื่อโมเดล ตาราง คำสั่ง และเคสตัวอย่างมาจากสไลด์จริง ส่วนคำอธิบาย รูป และกล่องที่ติดป้าย "เสริม" เขียนขึ้นใหม่

หน้าแรกของสไลด์ระบุวันแก้ไขไว้ว่า Update: August 23, 2025 แต่บรรทัดท้ายทุกหน้ายังลงท้ายว่า @ 2019

คาบนี้จะพาไปไหน

คาบนี้มีเป้าหมายเดียวคือ ทำให้เขียนนโยบายความปลอดภัยของระบบหนึ่งได้จริง และงานนั้นมีสี่ขั้น

นามธรรมที่สุดอยู่ซ้าย ของที่รันจริงบนเครื่องอยู่ขวาSecurity Modelเลือกแบบร่างBell-LaPadula, BibaAccess Control ModelใครเขียนนโยบายMAC, DAC, RBACAccess Control Matrixแปลงเป็นตารางใคร × ของType Enforcementบังคับใช้จริงACL, Capabilityคาบนี้สอนจากขวาไปซ้าย แต่ตอนทำงานจริงเดินจากซ้ายไปขวา
รูปที่ 1: สี่ขั้นจากแนวคิดนามธรรมไปจนถึงสิ่งที่รันอยู่บนเครื่องจริง
คำถามคำตอบอยู่ที่
Authorization คืออะไร และต่างจาก Authentication ตรงไหนส่วนที่ 1
นโยบายตัดสินจากคุณสมบัติอะไรของข้อมูลส่วนที่ 2
ใครเป็นคนเขียนนโยบายส่วนที่ 3
นโยบายกลายเป็นตาราง แล้วบังคับใช้ยังไงส่วนที่ 4
มีแบบร่างอะไรให้ลอกบ้างส่วนที่ 5
เอาทั้งหมดมาต่อกันยังไงส่วนที่ 6
คาบนี้สอนกลับทางกับตอนทำงานจริง

ส่วนที่ 3 ถึง 5 ไล่จากของที่จับต้องได้ไปหาของที่เป็นนามธรรม คือเริ่มที่ ใครเขียนนโยบาย แล้วค่อยไปถึง แบบร่างที่ช่วยคิดนโยบาย

แต่ตอนทำงานจริงเดินกลับทาง คือเลือกแบบร่างก่อน แล้วค่อยไล่ลงมา ส่วนที่ 6 จะพาเดินตามลำดับที่ถูกอีกรอบ


ส่วนที่ 1 — Authorization คืออะไร

Honesty is the best policy.

— Italian Proverb

ต่างจาก Authentication ตรงไหน

Authorization (การให้สิทธิ์ว่าทำอะไรได้บ้าง) ต่างจาก Authentication ที่จุดเดียวแต่เป็นจุดใหญ่

Authentication แชร์กันได้ ตัวตนของเราเป็นของเรา เอาไปใช้กับหลายระบบได้ นี่คือเหตุผลที่ปุ่ม "เข้าสู่ระบบด้วย Google" มีอยู่จริง

Authorization แชร์ไม่ได้ เพราะมันเป็น Application Specific คือ ผูกกับแอปนั้นแอปเดียว

Secure in App A ≠ Security in App B

เทียบให้เห็นภาพ

เหมือนกฎหมายที่ต่างกันไปตามแต่ละที่

พาสปอร์ตของเราใช้ได้ทุกประเทศ นั่นคือ authentication มันบอกว่าเราเป็นใคร แต่สิ่งที่เราทำได้เมื่อเข้าประเทศแล้ว ต่างกันไปทุกประเทศ นั่นคือ authorization

การตัดสินว่าใครทำอะไรได้ ตั้งอยู่บน Security Policy (นโยบายความปลอดภัย) ส่วนตัวที่ทำหน้าที่บังคับให้เป็นไปตามนโยบายเรียกว่า Type Enforcement (กลไกที่บังคับใช้นโยบาย)

เทียบให้เห็นภาพ

นโยบายคือกฎหมาย type enforcement คือตำรวจ

กฎหมายเขียนว่าอะไรทำได้ทำไม่ได้ แต่ตัวหนังสือไม่ได้หยุดใคร ต้องมีคนคอยบังคับใช้ ระบบคอมพิวเตอร์ก็เหมือนกัน เขียนนโยบายไว้สวยแค่ไหน ถ้าไม่มีกลไกบังคับ มันก็เป็นแค่เอกสาร

Policy คืออะไร

นิยามจากพจนานุกรมคือ

It is a definite course or method of action selected from among alternatives and in light of given conditions to guide and determine present and future decisions.

แนวทางหรือวิธีปฏิบัติที่ชัดเจน ซึ่งถูกเลือกมาจากทางเลือกหลายทาง ภายใต้เงื่อนไขที่กำหนด เพื่อชี้นำและกำหนดการตัดสินใจทั้งในปัจจุบันและอนาคต

— Merriam-Webster online Dictionary

แนวคิดหลัก

สรุปให้สั้นที่สุด — ไม่รู้ว่าจะตัดสินใจยังไง ก็ไปถามนโยบาย

นิสิตถามว่ากินข้าวในห้องเรียนได้ไหม
  • คำถาม — "May I eat in a class?"
  • นโยบาย — "The instructor should create supportive learning environment." ผู้สอนควรสร้างสภาพแวดล้อมที่เอื้อต่อการเรียนรู้
  • คำตอบของผู้สอน — "If it makes you learn better, then you may eat in a class." ถ้ามันทำให้เรียนได้ดีขึ้น ก็กินได้
ทำไมต้องมีสิ่งนี้

สังเกตว่านโยบายไม่ได้พูดถึงการกินข้าวเลยสักคำ

นี่คือสิ่งที่ทำให้นโยบายต่างจากรายการกฎ นโยบายที่ดีตอบคำถามที่คนเขียนยังไม่เคยเจอได้ เพราะมันให้ เกณฑ์ตัดสิน ไม่ใช่ คำตอบสำเร็จรูป ถ้าเขียนเป็นรายการว่าห้ามอะไรบ้าง พอเจอเรื่องใหม่ที่ไม่อยู่ในรายการ ก็ตอบไม่ได้

Security Policy และ Secure System

นิยามของ security policy คือ

A security policy is a statement that partitions the states of the system into a set of authorized, or secure, states and a set of unauthorized or insecure, states.

นโยบายความปลอดภัยคือข้อความที่แบ่งสถานะทั้งหมดของระบบออกเป็นสองกอง คือกองที่ได้รับอนุญาตหรือปลอดภัย กับกองที่ไม่ได้รับอนุญาตหรือไม่ปลอดภัย

— BISHOP

ข้อความอะไรก็ตามที่แบ่งระบบออกเป็นสองกองได้ ถือเป็น security policy

ตัวอย่างที่ยกไว้สั้นมากสองข้อ

  • Do not cross the lawn — ห้ามเดินลัดสนาม
  • No cheating in examination — ห้ามทุจริตในการสอบ

พอมีนโยบายแล้ว ก็นิยาม Secure System (ระบบที่ปลอดภัย) ต่อได้

A secure system is a system that starts in an authorized state and cannot enter an unauthorized state.

ระบบที่ปลอดภัยคือระบบที่เริ่มต้นในสถานะที่ได้รับอนุญาต และไม่มีทางเข้าสู่สถานะที่ไม่ได้รับอนุญาตได้

— BISHOP

ทำไมต้องมีสิ่งนี้

นิยามนี้มีสองท่อน และคนมักจำแค่ท่อนหลัง

ท่อนแรก — เริ่มต้นในสถานะที่ปลอดภัย ระบบที่ติดตั้งมาแล้วมีรหัสผ่านเริ่มต้นเป็น admin/admin ผิดตั้งแต่วินาทีแรก ไม่ต้องรอให้ใครมาโจมตี

ท่อนที่สอง — ออกไปนอกกองที่ปลอดภัยไม่ได้ ต่อให้เริ่มดี ถ้ามีทางเดินไปสู่สถานะที่ไม่ควรเป็นได้ ก็ยังไม่นับว่าปลอดภัย

จุดสำคัญคือ นิยามนี้พูดถึงสถานะ ไม่ได้พูดถึงเทคโนโลยี ไม่ได้บอกว่าต้องเข้ารหัสหรือต้องมีไฟร์วอลล์ เพราะสิ่งที่นับว่าปลอดภัย ขึ้นกับนโยบายที่เราเขียนเอง

ลองตอบดู: ระบบที่ทุกคนเข้าถึงทุกอย่างได้ เป็น secure system ได้ไหมตามนิยามนี้

ได้ ถ้านโยบายเขียนไว้แบบนั้น

ถ้านโยบายของระบบคือ "ทุกคนในองค์กรเข้าถึงทุกอย่างได้" แล้วระบบทำตามนั้นได้จริงและไม่หลุดออกไปจากสถานะนั้น ระบบนั้นก็เข้านิยามของ secure system

ฟังดูขัดความรู้สึก แต่นี่คือประเด็นของทั้งคาบ — คำว่าปลอดภัยไม่มีความหมายในตัวเอง จนกว่าจะมีนโยบายมากำหนดว่าอะไรคือสถานะที่ยอมรับได้

สิ่งที่ผิดในกรณีนี้จึงไม่ใช่ตัวระบบ แต่เป็นนโยบายที่เขียนไว้ไม่ดี ซึ่งเป็นคนละปัญหาและแก้คนละที่


ส่วนที่ 2 — นโยบายตัดสินจากอะไร

สองคุณสมบัติหลักของข้อมูล

กุญแจของ authorization คือ security policy แล้วจะเขียนนโยบายยังไง คำตอบคือแบ่งตามคุณสมบัติของข้อมูลสองข้อ

Confidentiality — หน้าที่ในการปกปิดหรือปกป้องข้อมูลไม่ให้คนที่ไม่ได้รับอนุญาตเข้าถึง พูดอีกแบบคือมีแต่คนที่ถูกต้องเท่านั้นที่เข้าถึงข้อมูลได้

Who can read the data?

Integrity — สภาพของการไม่ถูกทำให้เสียหาย ในบริบทนี้แปลง่าย ๆ ว่าข้อมูลไม่ถูกแก้โดยผู้ใช้ที่ไม่ได้รับอนุญาต

Who can alter / write the data?

Confidentiality (การรักษาความลับของข้อมูล) กับ Integrity (ความครบถ้วนถูกต้องของข้อมูล) ตอบคนละคำถาม คำถามหนึ่งเรื่องอ่าน อีกคำถามเรื่องเขียน

ยังมีคุณสมบัติเพิ่มอีกข้อคือ Availability เช่นเรื่อง fault tolerant สามข้อนี้รวมกันเรียกว่า the CIA of Security Policy

CIA ตัวนี้ไม่เกี่ยวกับหน่วยข่าวกรอง

CIA ในบริบทนี้ย่อมาจาก Confidentiality, Integrity และ Availability เป็นคำที่ใช้กันทั่วไปในวงการความปลอดภัย ไม่ได้เกี่ยวอะไรกับ Central Intelligence Agency

ส่วนคำว่า data ในที่นี้หมายถึงข้อมูลที่อ่อนไหว ความลับ และความเป็นส่วนตัว

โจทย์ให้คิด — ข้อสอบ

โจทย์ที่ทิ้งไว้คือ นโยบายที่เกี่ยวกับข้อสอบควรมีหน้าตาแบบไหน พร้อมคำใบ้ว่าให้แยกเป็นสองคำถาม

  • Confidentiality — ใครอ่านได้ และอ่านได้เมื่อไหร่
  • Integrity — ใครเขียนได้ และเขียนได้เมื่อไหร่

แล้วตามด้วยคำถามอีกสองข้อ

  • ถ้านิสิตเห็นข้อสอบก่อนเวลาสอบ ถือว่าข้อสอบรั่วไหม
  • ถ้ามีคนสลับหรือแก้ข้อสอบได้ ผิดกฎหมายไหม (ข้อสอบเป็นเอกสารทางกฎหมายหรือเปล่า)
ทำไมต้องมีสิ่งนี้

คำว่า when โผล่มาในคำใบ้ทั้งสองข้อ และมันคือคำเดียวกับที่นิยาม Who can do what when? ในคาบแรกย้ำไว้

ข้อสอบชุดเดียวกัน อาจารย์อ่านได้ตลอด นิสิตอ่านได้เฉพาะในห้องสอบ และหลังสอบเสร็จทุกคนอ่านได้ คนไม่เปลี่ยน ข้อมูลไม่เปลี่ยน แต่สิทธิ์เปลี่ยนตามเวลา

ลองร่างนโยบายข้อสอบดูเสริม — ไม่ได้อยู่ในสไลด์
ช่วงเวลาใครอ่านได้ใครเขียนได้
ก่อนสอบผู้ออกข้อสอบ และผู้ตรวจทานผู้ออกข้อสอบเท่านั้น
ระหว่างสอบเพิ่มนิสิตที่เข้าสอบไม่มีใครแก้ตัวข้อสอบได้
หลังสอบทุกคนไม่มีใคร

ตอบคำถามสองข้อที่ทิ้งไว้ได้เลย

ข้อสอบรั่ว คือการละเมิด confidentiality เพราะมีคนอ่านนอกช่วงเวลาที่นโยบายอนุญาต

การสลับข้อสอบ คือการละเมิด integrity เพราะมีคนเขียนในช่วงที่ไม่มีใครควรเขียนได้

จุดที่คนพลาดบ่อย

มีข้อเสนอกวน ๆ ทิ้งไว้ว่า เอาข้อสอบใส่ซองแล้วเผาทิ้งไปเลย งั้นก็รักษาได้ทั้ง confidentiality และ integrity

ซึ่งถูกทั้งสองข้อจริง ไม่มีใครอ่านได้ ไม่มีใครแก้ได้ แต่ก็ไม่มีใครสอบได้ด้วย

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


ส่วนที่ 3 — ใครเป็นคนเขียนนโยบาย

Access Control Model (แบบแผนว่าใครมีอำนาจกำหนดนโยบาย) คือโมเดลที่กำหนดว่า ใครเป็นผู้รับผิดชอบในการสร้างนโยบายความปลอดภัย โดยอิงกับ CIA ในส่วนที่แล้ว

โมเดลที่ใช้กันมีสามแบบ

แบบหลักการ
Mandatory Access Control (MAC)ผู้ใช้เชื่อถือไม่ได้ ต้องถูกควบคุม
Discretionary Access Control (DAC)ผู้ใช้รับผิดชอบข้อมูลของตัวเอง
Role-Based Access Control (RBAC)least privilege

MAC — ผู้ดูแลระบบเป็นคนกำหนด

Mandatory Access Control (การควบคุมที่ผู้ดูแลระบบกำหนดให้ทั้งหมด) คือแบบที่ผู้ดูแลระบบเขียนนโยบายเพื่อควบคุมผู้ใช้ มีลักษณะสี่อย่าง

  • เป็น multilevel system เช่นข้อมูลลับของรัฐบาลและกองทัพ
  • มี sensitivity label ติดกับทั้ง subject และ object ทุกตัว
  • ควบคุมการนำข้อมูลเข้าจากระบบอื่นและการส่งออกไประบบอื่น

ตัวอย่างคือ นิสิตต้องถูกควบคุม ไม่งั้นนิสิตก็ให้เกรดตัวเอง

DAC — เจ้าของข้อมูลเป็นคนกำหนด

Discretionary Access Control (การควบคุมที่เจ้าของข้อมูลกำหนดเอง) คือแบบที่เจ้าของรับผิดชอบข้อมูลของตัวเอง จุดสำคัญคือเรื่องความเป็นเจ้าของไฟล์และข้อมูล กับสิทธิ์การเข้าถึง

ตัวอย่างคือ ถ้าเป็นไฟล์ของฉัน ฉันก็ควบคุมได้เองว่าใครเห็นได้

RBAC — ให้สิทธิ์ตามหน้าที่

Role-Based Access Control (การให้สิทธิ์ตามบทบาทหน้าที่) ไม่ใช่ทั้ง MAC และ DAC มันตั้งอยู่บนหลัก least privilege จากคาบแรก

  • เข้าถึงได้ เฉพาะตอนที่ต้องใช้ทำงานนั้นจริง ๆ
  • ให้สิทธิ์โดยดูที่ จุดประสงค์ เป็นหลัก

ตัวอย่างสามข้อ

  • RunAS ของ Windows และ sudo ของระบบตระกูล Unix
  • หมอเห็นข้อมูลของเราได้เฉพาะตอนที่เรากำลังรักษากับหมอคนนั้น ยกเว้นกรณีฉุกเฉิน หมอจะเห็นได้ทั้งหมด
  • อาจารย์ให้เกรดนิสิตได้เฉพาะในวิชาที่เกี่ยวข้อง
ทำไมต้องมีสิ่งนี้

สังเกตว่าตัวอย่างทั้งสามข้อมีคำว่า เฉพาะตอนที่ อยู่ด้วยทุกข้อ

หมอคนเดิม คนไข้คนเดิม แต่สิทธิ์เปิดและปิดตามความสัมพันธ์ที่กำลังเกิดขึ้น นี่คือความต่างจาก DAC ที่ให้สิทธิ์แล้วสิทธิ์อยู่ยาว และต่างจาก MAC ที่ป้ายชั้นความลับติดอยู่กับตัวคน

sudo เป็นตัวอย่างที่เห็นชัดที่สุด เราเป็นคนเดิมทั้งก่อนและหลังพิมพ์ sudo แต่บทบาทที่สวมอยู่ไม่เหมือนกัน

จุดอ่อนของแต่ละแบบ

เคสสามเคสที่ทิ้งไว้ให้คิด แต่ละเคสชี้ไปที่โมเดลที่มีปัญหา

เคสปัญหาของ
สายลับรัสเซียถูกเลื่อนขั้นเป็น CIA ระดับสูง จึงเข้าถึงทุกคดีได้ แม้แต่คดีที่ไม่ใช่ของตัวเองMAC
แพทย์เห็นเวชระเบียนของคนไข้ทุกคนในโรงพยาบาลได้เสมอMAC
สิทธิ์ของระบบกันไม่ให้พ่อแม่เห็นว่าลูกดูเนื้อหาที่ไม่เหมาะสมDAC
ทำไมต้องมีสิ่งนี้

สองเคสแรกพังด้วยเหตุผลเดียวกัน คือ MAC ให้สิทธิ์ตามชั้น ไม่ได้ให้ตามความจำเป็น

พอเลื่อนขั้นแล้วชั้นสูงขึ้น ก็เห็นทุกอย่างในชั้นนั้น ทั้งที่งานจริงต้องการแค่คดีของตัวเอง คำตอบของทั้งสองเคสคือ RBAC ซึ่งถามว่า ตอนนี้กำลังทำหน้าที่อะไรอยู่ แทนที่จะถามว่า อยู่ชั้นไหน

เคสที่สามกลับด้าน DAC ให้เจ้าของข้อมูลคุมเอง และในระบบนั้นลูกคือเจ้าของ พ่อแม่จึงถูกกันออกไป ทั้งที่ในโลกจริงพ่อแม่คือผู้รับผิดชอบ DAC สมมติว่าเจ้าของข้อมูลกับผู้รับผิดชอบเป็นคนเดียวกันเสมอ ซึ่งไม่จริง

RBAC ในของจริง

แอปส่วนใหญ่เดินไปทาง RBAC กัน แต่มีปัญหาหนึ่งข้อที่ยังไม่มีคำตอบ — ไม่มีนิยามที่ชัดเจนว่าจะนิยาม role ยังไง แต่ละที่จึงทำกันคนละแบบ

  • Unix/Linux อาจสร้างผู้ใช้หนึ่งคนต่อหนึ่งบริการ คือแปลง role เป็น user เช่น www-data สำหรับเว็บเซิร์ฟเวอร์ และ ftp-data สำหรับ ftp
  • แอปพลิเคชัน อาจผูก role เข้ากับ method เช่นในการเขียนโปรแกรมเชิงวัตถุ
  • เฟรมเวิร์กบางตัว ให้ผู้ออกแบบสร้าง role เองแล้วผูกสิทธิ์เข้ากับ role บางตัวถึงขั้นให้ผู้ใช้พิมพ์รหัสผ่านเพื่อเปลี่ยน role

ในระบบสมัยใหม่ การติดตั้งซอฟต์แวร์ต้องพิมพ์รหัสผ่านเพื่อขอ role ของผู้ดูแลระบบ ซึ่งก็คือรูปแบบสุดท้ายนั่นเอง

สามแบบยังไม่พอ

มีโมเดลใหม่ที่เพิ่มเข้ามาอีกชุด

Attribute-Based Access Control (ABAC) — ตัดสินจากคุณสมบัติสามกลุ่ม

กลุ่มตัวอย่าง
User Attributesrole, department, security clearance
Resource Attributesความอ่อนไหวของข้อมูล เช่น PII หรือ Public, project code
Environmental Attributesเวลาของวัน, สถานที่ เช่นอยู่ในเครือข่ายองค์กรไหม, ชนิดของอุปกรณ์

ตัวอย่างนโยบายที่เขียนด้วย ABAC

Allow a user to access financial documents if their role is 'Accountant' AND they are accessing from a corporate-owned device AND it is during normal business hours.

อนุญาตให้เข้าถึงเอกสารการเงินได้ ถ้าบทบาทคือ Accountant และ เข้าถึงจากอุปกรณ์ของบริษัท และ อยู่ในเวลาทำการปกติ

OAuth 2.0 และ OpenID Connect (OIDC) — ผู้ใช้ให้สิทธิ์แอปของบุคคลที่สามเข้าถึงทรัพยากรของตัวเองบนอีกบริการหนึ่งได้อย่างจำกัด โดยไม่ต้องบอกรหัสผ่าน

Zero Trust Architecture (ZTA) — Never trust, always verify ตั้งสมมติฐานว่าไม่มีผู้ใช้หรืออุปกรณ์ไหนน่าเชื่อถือโดยปริยาย แม้แต่ตัวที่อยู่ในเครือข่ายองค์กรแล้ว

ZTA คือหลักการที่ 9 ของคาบแรกในรูปของสถาปัตยกรรม

Don't extend trust easily ในคาบแรกบอกว่าอย่าเชื่อเซิร์ฟเวอร์ของตัวเอง และเคส Slammer ที่โรงไฟฟ้า Davis-Besse ก็พังเพราะทุกคนเชื่อว่า "อยู่ในเครือข่ายภายในแปลว่าปลอดภัย"

Zero Trust คือการเอาความไม่เชื่อนั้นมาเขียนเป็นสถาปัตยกรรม แทนที่จะเป็นแค่คำเตือน

เทียบสี่แบบในตารางเดียว

Discretionary (DAC)Mandatory (MAC)Role-Based (RBAC)Attribute-Based (ABAC)
ใครคุมเจ้าของ objectSystem / AdminSystem / AdminSystem / Admin
ตัดสินจากIdentityLabelsJob FunctionAttributes
ความยืดหยุ่นHighLowMediumVery High
เหมาะกับไฟล์ส่วนตัว งานที่ทำร่วมกันทหาร งานที่ต้องการความปลอดภัยสูงองค์กรทั่วไประบบสมัยใหม่ที่เงื่อนไขเปลี่ยนตลอด
จุดที่คนพลาดบ่อย

สังเกตว่า ความยืดหยุ่นสูงไม่ได้แปลว่าดีกว่า DAC ยืดหยุ่นสูงแต่เหมาะกับไฟล์ส่วนตัว ส่วน MAC ยืดหยุ่นต่ำที่สุดแต่เป็นตัวที่กองทัพใช้

ยิ่งยืดหยุ่น ยิ่งเขียนนโยบายผิดได้ง่าย และยิ่งตรวจสอบยากว่าตอนนี้ใครเข้าถึงอะไรได้บ้าง สำหรับระบบที่พลาดไม่ได้ ความยืดหยุ่นที่ต่ำคือข้อดี ไม่ใช่ข้อจำกัด

สิทธิ์ในระบบไฟล์

ของจริงที่ใกล้ตัวที่สุดคือสิทธิ์ของไฟล์

Basic Unix/LinuxWindows (NTFS)
r — readRead
w — writeWrite
x — execute (สำหรับโปรแกรม)Execute
x — search (สำหรับไดเรกทอรี)Delete
change permission
change ownership

ทั้งสองฝั่งมีหมายเหตุกำกับ

  • ฝั่ง Unix/Linux — รุ่นใหม่ ๆ รองรับสิทธิ์ที่ละเอียดกว่านี้ แต่ไม่ได้เปิดใช้มาตั้งแต่ต้น
  • ฝั่ง Windows — ถ้าไม่ได้เป็นผู้ดูแล Windows Server ก็แทบไม่มีโอกาสได้เห็นสิทธิ์พวกนี้
จุดที่คนพลาดบ่อย

x ในฝั่ง Unix ทำงานคนละอย่างกันระหว่างไฟล์กับไดเรกทอรี ทั้งที่เขียนเหมือนกัน

บนไฟล์ x แปลว่ารันโปรแกรมนี้ได้

บนไดเรกทอรี x แปลว่าเดินผ่านเข้าไปข้างในได้ ซึ่งเป็นคนละเรื่องกับ r ที่แปลว่าดูรายชื่อไฟล์ในนั้นได้

ผลคือไดเรกทอรีที่มี x แต่ไม่มี r จะเปิดไฟล์ข้างในได้ถ้ารู้ชื่อ แต่ ls ดูรายชื่อไม่ได้

ลองตอบดู: ระบบพวกนี้ใช้โมเดลไหน — Facebook Profile, Google Drive, ระบบไฟล์ของ Unix/Linux/Windows, ระบบลงทะเบียนของมหาวิทยาลัย

Facebook Profile และ Google Drive เป็น DAC เจ้าของโพสต์หรือเจ้าของไฟล์เลือกเองว่าจะให้ใครเห็น

ระบบไฟล์ของ Unix/Linux/Windows เป็น DAC เหมือนกัน เจ้าของไฟล์สั่ง chmod เองได้

ระบบลงทะเบียนของมหาวิทยาลัย เป็น RBAC นิสิตลงทะเบียนได้แต่แก้เกรดไม่ได้ อาจารย์กรอกเกรดได้เฉพาะวิชาที่สอน สิทธิ์มาจากหน้าที่ ไม่ได้มาจากความเป็นเจ้าของ

จุดที่น่าสังเกตคือ Google Drive มีทั้งสองอย่างปนกัน ตัวการแชร์ไฟล์เป็น DAC แต่ถ้าใช้ในบัญชีขององค์กร ผู้ดูแลตั้งกฎครอบไว้ได้ว่าห้ามแชร์ออกนอกองค์กร ซึ่งเป็น MAC ทับลงมาอีกชั้น


ส่วนที่ 4 — จากนโยบายไปเป็นของที่รันจริง

Access Control Matrix

ไม่ว่าจะเลือกโมเดลไหน สุดท้ายนโยบายทั้งหมดถูกแปลงเป็นตารางเดียวกัน เรียกว่า Access Control Matrix (ตารางสิทธิ์การเข้าถึง)

วิธีสร้างมีสามขั้น

  1. เอา subject หรือ role เป็น แถว
  2. เอาทรัพยากรเป็น คอลัมน์
  3. ใส่กฎลงในช่อง ตามนโยบายที่เขียนไว้
file1file2progAlicer wrxBobrr w—Carol—rr xอ่านลงคอลัมน์= ACL ของ file2อ่านตามแถว= Capabilityของ Bobแถวคือผู้ใช้ คอลัมน์คือทรัพยากร ในช่องคือสิ่งที่ทำได้ตารางเดียวกัน เก็บได้สองแบบ และสองแบบนี้ตอบคำถามคนละข้อ
รูปที่ 2: ตารางเดียวกัน อ่านลงคอลัมน์ได้ ACL อ่านตามแถวได้ capability

ตารางนี้เก็บได้สองแบบ และสองแบบนี้คือการหั่นตารางคนละทาง

  • Access Control List (รายชื่อผู้มีสิทธิ์ที่ผูกกับตัวของ) — เก็บ ตามคอลัมน์
  • Capability (โทเคนที่ผูกกับตัวคน) — เก็บ ตามแถว

ACL กับ Capability ต่างกันยังไง

ACLCapability
ผูกกับobjectsubject
หน้าตาของชิ้นนั้นถือรายชื่อไว้ ว่าใครทำอะไรกับมันได้คนถือโทเคนหรือกุญแจไว้
การให้สิทธิ์เพิ่มชื่อลงในรายการส่งโทเคนหรือกุญแจให้อีกคน

คำถามเดียวกันคือ ใครเข้าห้องเรียนนี้ได้

แบบ ACL — ชื่อฉันอยู่ในรายการที่ติดไว้หน้าห้อง

แบบ Capability — ฉันมีกุญแจของห้องนี้

เทียบให้เห็นภาพ

ความต่างที่สำคัญที่สุดคือ ใครเป็นคนถือข้อมูลสิทธิ์ไว้

บัตรคอนเสิร์ตคือ capability ใครถือบัตรก็เข้าได้ คนตรวจบัตรไม่ต้องรู้จักชื่อเรา และเราส่งบัตรต่อให้เพื่อนได้ทันที

รายชื่อผู้มีสิทธิ์เข้างานคือ ACL คนตรวจต้องหาชื่อเราในรายการ เราส่งสิทธิ์ให้เพื่อนเองไม่ได้ ต้องให้คนคุมรายการเพิ่มชื่อให้

สองแบบนี้ตอบคำถามคนละข้อ

ACL ทำง่ายกว่า และเป็นแบบที่ระบบปฏิบัติการเกือบทั้งหมดเลือกใช้

แต่มีคำถามหนึ่งที่ ACL ตอบยากมาก คือ "ในระบบนี้ฉันเข้าถึงไฟล์อะไรได้บ้าง" เพราะต้องเปิดดูทุกไฟล์ในระบบแล้วหาชื่อตัวเองในรายการของแต่ละไฟล์

ฝั่ง capability ตอบคำถามนี้ได้ทันที เพราะสิทธิ์ทั้งหมดของเราอยู่ในมือเราอยู่แล้ว สไลด์ทิ้งช่องของ capability ไว้เป็นเครื่องหมายคำถามทั้งสองช่อง โดยไม่ได้เฉลย

ระบบที่ใช้ capability มีอยู่ในพิพิธภัณฑ์

ระบบปฏิบัติการเกือบทั้งหมด (ถ้าไม่ใช่ทั้งหมด) ใช้ ACL แล้วทิ้งคำถามไว้ว่า ทำไม

ระบบที่ใช้ capability มีอยู่จริง แต่คำที่ใช้อธิบายว่ามันอยู่ที่ไหนคือ in a museum

ลองดู ACL ในเครื่องตัวเอง

ระบบคำสั่ง
Windowscacls
macOS Xls -le
Linux รุ่นใหม่getfacl และ setfacl

และ Security-Enhanced Linux (SELinux) ทำได้ทั้ง MAC, DAC และ RBAC แต่มีหมายเหตุกำกับว่า การตั้งค่าไม่ใช่เรื่องง่าย

ลองรันดูบน Linuxเสริม — ไม่ได้อยู่ในสไลด์
getfacl /etc/passwd

ผลที่ได้หน้าตาประมาณนี้

# file: etc/passwd
# owner: root
# group: root
user::rw-
group::r--
other::r--

สามบรรทัดล่างคือคอลัมน์ของ /etc/passwd ในตาราง access control matrix นั่นเอง — เจ้าของอ่านเขียนได้ กลุ่มกับคนอื่นอ่านได้อย่างเดียว

ลองเทียบกับ ls -l /etc/passwd ที่ให้ -rw-r--r-- จะเห็นว่าเป็นข้อมูลชุดเดียวกัน แค่เขียนคนละรูปแบบ

โจทย์ที่ทิ้งไว้ท้ายส่วนนี้

คำถามคือ ระบบแบบ capability จะแก้ปัญหาพวกนี้ได้ไหม

  • superuser เข้าถึงได้ทุกไฟล์ในระบบ รวมถึงไฟล์ที่ตัวเองไม่ได้สร้าง คิดว่าถูกต้องแล้วหรือ
  • โปรแกรมประมวลผลคำเปิดไฟล์อะไรก็ได้ที่เราเปิดได้ รวมถึงไฟล์ไบนารี พูดอีกแบบคือ โปรแกรมนั้นก็คือตัวเรา ฟังดูถูกไหม

คำตอบที่ทิ้งไว้คือ

A practical capability-based system will solve a lot of security issues. However, there is none.

ระบบแบบ capability ที่ใช้งานได้จริงจะแก้ปัญหาความปลอดภัยได้เยอะมาก แต่มันไม่มีอยู่

และผลที่ตามมาคือ ถ้ามี capability-based system เราจะมีระบบที่ไม่ต้องมีผู้ดูแลระบบเลย

เทียบให้เห็นภาพ

เวลาเราซื้อรถ รถเป็นของเราตั้งแต่วินาทีที่ดีลเลอร์ส่งกุญแจให้

แต่เรื่องนี้ไม่จริงกับคอมพิวเตอร์ Apple, Microsoft และ Google เข้าถึงระบบของเราได้โดยไม่ต้องขออนุญาต

ทำไมต้องมีสิ่งนี้

ประโยคเรื่องโปรแกรมประมวลผลคำคือหัวใจของทั้งส่วนนี้

เวลาเราเปิดโปรแกรม ระบบไม่ได้ให้สิทธิ์กับ โปรแกรม แต่ให้สิทธิ์กับ เรา แล้วโปรแกรมยืมสิทธิ์ของเราไปทั้งก้อน โปรแกรมแก้ข้อความจึงลบไฟล์อะไรก็ได้ที่เราลบได้ ทั้งที่งานของมันคือแก้ข้อความ

นี่คือเหตุผลที่มัลแวร์ทำงานได้ผลนัก มันไม่ต้องเจาะสิทธิ์อะไรเลย แค่ทำงานในนามของเรา และหลักการ least privilege ข้อ 1 ในคาบแรกก็ถูกละเมิดตั้งแต่ต้น

ระบบแบบ capability จะกลับด้านเรื่องนี้ เพราะโปรแกรมต้องถือกุญแจของไฟล์ที่มันจะเปิดจริง ๆ ไม่ใช่ยืมพวงกุญแจของเราไปทั้งพวง — ซึ่งก็คือแนวคิดเดียวกับที่ระบบสิทธิ์ของแอปบนมือถือทำอยู่ทุกวันนี้


ส่วนที่ 5 — Security Models: แบบร่างที่ช่วยเขียนนโยบาย

สไลด์แซวไว้สองครั้ง

มีหน้าที่เขียนว่า ตอนนี้คุณเรียนจบแล้ว เจ้านายเห็นว่าคุณเคยเรียนวิชานี้ เลยสั่งให้ทำนโยบายความปลอดภัยให้บริษัท คุณจะทำยังไง แล้วตอบตัวเองว่า Resign?

หน้านี้โผล่มาสองครั้ง คือก่อนเข้าเรื่อง security models และอีกครั้งหลังสรุปจบ

ทำไมต้องมีสิ่งนี้

ถึงจะรู้ทุกอย่างในสามส่วนที่ผ่านมาแล้ว การเขียนนโยบายจริงก็ยังไม่ใช่งานง่าย

เพราะการรู้ว่ามี MAC, DAC, RBAC ไม่ได้บอกว่า องค์กรของเราควรใช้อันไหน และไม่ได้บอกว่าควรแบ่งชั้นข้อมูลยังไง

Security Model (แบบร่างระดับสูงที่ใช้เป็นแนวทางเขียนนโยบาย) จึงเข้ามาเป็นแนวทาง มันคือ แนวคิดระดับสูงที่ช่วยให้เข้าใจและระบุนโยบายได้ง่ายขึ้น และเป็น กรอบทั่วไปสำหรับกำหนดระบบนโยบาย

มีสองกรอบใหญ่

กรอบใช้กับ
Multilevel Securityภายในองค์กรเดียวกัน
Multilateral Securityระหว่างแผนก

Multilevel Security — แบ่งเป็นชั้น

ใช้ภายในองค์กร ทำงานคู่กับ MAC และมีสองโมเดลที่ถูกเสนอไว้คือ Bell-LaPadula และ Biba

ระดับชั้นเดียวกัน แต่ลูกศรวิ่งคนละทาง — ลูกศรคือทิศที่ยอมให้ทำBell-LaPadulaกันความลับรั่วสูงกลางต่ำอ่านลงได้เขียนขึ้นได้ห้ามอ่านขึ้น · ห้ามเขียนลงBibaกันของเสียไหลขึ้นสูงกลางต่ำอ่านขึ้นได้เขียนลงได้ห้ามอ่านลง · ห้ามเขียนขึ้นBiba คือ Bell-LaPadula กลับหัว — ข้อหนึ่งดูความลับ อีกข้อดูความถูกต้อง
รูปที่ 3: โมเดลสองตัวที่ใช้ระดับชั้นเหมือนกัน แต่ห้ามคนละทิศ

Bell-LaPadula — กันความลับรั่ว

หลักการคือ The system may leak the information ระบบอาจทำข้อมูลรั่วได้ ใช้กับการจัดชั้นความลับของข้อมูลทางทหารและข่าวกรอง เป็นแบบ High Watermark

มีสามคุณสมบัติ

คุณสมบัติกฎชื่อย่อ
The simple propertyห้าม process อ่านข้อมูลที่ชั้นสูงกว่าno read up (NRU)
The *-propertyห้าม process เขียนข้อมูลลงไปที่ชั้นต่ำกว่าno write down (NWD)
The tranquility propertyห้ามเปลี่ยนระดับความลับของ object ขณะที่ระบบกำลังประมวลผลมันอยู่declassify
ทำไมต้องมีสิ่งนี้

กฎข้อแรก ห้ามอ่านขึ้น เข้าใจง่าย คนชั้นล่างไม่ควรเห็นความลับของชั้นบน

กฎข้อสอง ห้ามเขียนลง สวนสัญชาตญาณ ทำไมคนที่รู้ความลับถึงเขียนลงไปข้างล่างไม่ได้

เพราะกฎนี้ไม่ได้กันคน มันกัน โปรแกรม เหตุผลที่ให้ไว้ตรง ๆ คือ เราแทบไม่เคยเขียนซอฟต์แวร์ที่เราใช้เอง ลองนึกดูว่าในเครื่องของเรามีโปรแกรมไหนบ้างที่เราเขียนเอง

ถ้ามัลแวร์เข้าไปรันด้วยสิทธิ์ระดับสูง แล้วเขียนไฟล์ลงมาที่ชั้นต่ำได้ ความลับก็ไหลออกไปทันที ระบบจึงต้องกันไว้ตั้งแต่ต้น

แผนรบของนายพล

ระหว่างสงคราม นายพลสร้างแผนรบขึ้นมาโดยขอข้อมูลจากพลทหาร — นั่นคือ อ่านลง ซึ่งทำได้

แต่แผนที่ได้ ส่งลงไปให้ชั้นล่างไม่ได้ เพื่อกันข้อมูลรั่ว

พอแผนพร้อมแล้ว จึง declassify ลดชั้นความลับ แล้วส่งให้ทหารทุกคนใช้ออกรบได้

Biba — กันของเสียไหลขึ้น

หลักการคือ Information flowing from lower level may be malicious to the system ข้อมูลที่ไหลมาจากชั้นล่างอาจเป็นอันตรายต่อระบบ

Biba ดูแล integrity และไม่สนใจ confidentiality เป็นแบบ Low Watermark และคำอธิบายที่สั้นที่สุดคือ Bell-LaPadula กลับหัว

Never read down or write up

ห้ามอ่านลง และห้ามเขียนขึ้น

ให้ลองสังเกต low-watermark security ในระบบของตัวเองดู

Biba ที่เจอทุกวันโดยไม่รู้ตัวเสริม — ไม่ได้อยู่ในสไลด์

เวลาดาวน์โหลดไฟล์จากอินเทอร์เน็ตบน macOS หรือ Windows แล้วเปิด ระบบจะขึ้นเตือนว่าไฟล์นี้มาจากอินเทอร์เน็ต

นั่นคือ Biba ตรง ๆ ไฟล์จากภายนอกถูกติดป้ายว่าอยู่ชั้นความน่าเชื่อถือต่ำ และระบบไม่ยอมให้มันไหลขึ้นไปทำงานในชั้นที่เชื่อถือได้ จนกว่าเราจะกดยืนยัน

macOS เรียกป้ายนี้ว่า quarantine attribute ส่วน Windows เรียกว่า Mark of the Web

ลองตอบดู: ใช้ Biba กับ Bell-LaPadula พร้อมกันในระบบเดียวได้ไหม

ในทางทฤษฎีได้ แต่ผลที่ได้แทบใช้งานไม่ได้

Bell-LaPadula บอกว่า ห้ามอ่านขึ้น ห้ามเขียนลง ส่วน Biba บอกว่า ห้ามอ่านลง ห้ามเขียนขึ้น พอเอามารวมกัน สิ่งที่เหลือคือ อ่านและเขียนได้เฉพาะในชั้นของตัวเองเท่านั้น

ผลคือแต่ละชั้นกลายเป็นเกาะที่ตัดขาดจากกันหมด ซึ่งปลอดภัยมากแต่ไม่มีข้อมูลไหลไปไหนได้เลย

ในทางปฏิบัติจึงต้องเลือกว่าจะให้น้ำหนักกับอะไรมากกว่า — ความลับหรือความถูกต้อง แล้วใช้อีกโมเดลเป็นส่วนเสริมเฉพาะจุดที่จำเป็น

Multilateral Security — กั้นระหว่างแผนก

ใช้ระหว่างแผนก โมเดลที่ยกมาคือ China Walls model

กำแพงขึ้นเองหลังจากแตะกล่องแรก ไม่ได้ตั้งไว้ล่วงหน้ากลุ่มธนาคารธนาคาร Aแตะแล้วธนาคาร Bปิดทันทีคู่แข่งกันในกลุ่มเดียวกันเลือกได้แค่รายเดียวกลุ่มน้ำมันน้ำมัน Cยังเข้าได้น้ำมัน Dยังเข้าได้คนละกลุ่มกับที่แตะไปแล้วกำแพงยังไม่ขึ้นสิทธิ์ของคนคนหนึ่งแคบลงตามประวัติที่เขาเคยเข้าถึงต่างจาก MAC และ DAC ที่สิทธิ์ถูกกำหนดไว้ตั้งแต่ต้น
รูปที่ 4: กำแพงที่ขึ้นเองหลังจากแตะข้อมูลของบริษัทแรกในกลุ่ม

ที่มาคือกฎภายในของบริษัทการเงิน แนวคิดคือ ถ้าคนคนหนึ่งเพิ่งทำงานให้บริษัทหนึ่งในภาคธุรกิจหนึ่ง คนคนนั้นจะไปทำงานให้อีกบริษัทในภาคธุรกิจเดียวกันไม่ได้ในช่วงเวลาหนึ่ง

ในหลายประเทศ คนทำงานสายการเงินจึงแทบไม่ย้ายงาน (กฎนี้ไม่ได้ใช้ในประเทศไทย) และเรื่องนี้จัดอยู่ในหมวด privacy

ทำไมต้องมีสิ่งนี้

China Wall ต่างจาก MAC และ DAC ตรงที่ สิทธิ์ขึ้นกับประวัติ ไม่ได้ขึ้นกับตัวคนหรือชั้นความลับ

ตอนเริ่มงานวันแรก ที่ปรึกษาคนหนึ่งเข้าถึงข้อมูลของทุกบริษัทได้เท่ากันหมด แต่พอแตะข้อมูลของธนาคาร A ปุ๊บ กำแพงก็ขึ้นทันที ปิดธนาคารอื่นทั้งหมดในกลุ่มเดียวกัน

สิทธิ์จึง แคบลงเรื่อย ๆ ตามสิ่งที่เคยเข้าถึง ไม่ใช่ถูกกำหนดไว้ตั้งแต่ต้น

China Wall กับการทำวิศวกรรมย้อนกลับ

โมเดลเดียวกันนี้ใช้กับ Reverse Engineering of Software ได้

  1. ทีม A ศึกษาซอฟต์แวร์ต้นฉบับ แล้วเขียนเป็นข้อกำหนด (specification)
  2. ทีม B ใช้ข้อกำหนดนั้นสร้างซอฟต์แวร์ตัวใหม่
  3. ทีม B ไม่เห็นซอฟต์แวร์ต้นฉบับเลยแม้แต่นิดเดียว
ทำไมต้องมีสิ่งนี้

กำแพงตรงนี้ไม่ได้กันความลับ มันสร้าง หลักฐานทางกฎหมาย

ถ้าทีม B ไม่เคยเห็นโค้ดต้นฉบับ ก็พิสูจน์ได้ว่าโค้ดใหม่ไม่ได้ลอกมา วิธีนี้มีชื่อเรียกในวงการว่า clean room design และเป็นวิธีที่บริษัทใช้ทำ BIOS ของ IBM PC เลียนแบบได้อย่างถูกกฎหมายในยุค 80

เคส WordPerfect

ครั้งหนึ่ง โปรแกรมประมวลผลคำที่ดีที่สุดคือ WordPerfect ตอนที่ WordPerfect 5 ออก Microsoft ไปงานแถลงข่าวเพื่อ ถ่ายภาพหน้าจอและจดรายการฟีเจอร์

ไม่กี่เดือนต่อมา Microsoft ปล่อย Word 6.0 โดยกระโดดจาก 2.0 ข้าม 3.0 ถึง 5.0 ไปเลย พร้อมฟีเจอร์ทุกอย่างที่พบใน WordPerfect 5

มีเคสคล้ายกันระหว่าง Lotus 1-2-3 เวอร์ชัน 4.0 กับ Excel 5.0 และอื่น ๆ อีก

ข้อความที่ติดมากับเรื่องนี้คือ Microsoft was (is) known as an evil empire in reverse engineering popular software


ส่วนที่ 6 — เอาทั้งหมดมาต่อกัน

สมมติว่าต้องเขียนนโยบายความปลอดภัยจริง ๆ ขั้นตอนมีสี่ขั้น

วิเคราะห์ว่าระบบของเราเข้ากับแบบร่างไหน — Bell-LaPadula, Biba, China Wall หรืออื่น ๆ

คำถามที่ช่วยตัดสินคือ ระบบนี้กลัวข้อมูลรั่วมากกว่า หรือกลัวข้อมูลถูกแก้มากกว่า และมีเรื่องผลประโยชน์ทับซ้อนระหว่างกลุ่มไหม

กิจกรรมท้ายบท

โจทย์ที่ให้ไว้คือ

Our university is launching a new, all-in-one online portal. This portal will handle everything from student registration and grade management to faculty collaboration and research data storage. The system must protect student privacy, ensure academic integrity, and manage potential conflicts of interest among researchers.

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

งานที่ต้องทำมีสี่ข้อ

  • นิยาม security policy ของพอร์ทัลนี้
  • ระบุ subject และ object
  • เลือก Access Control Model หรือ Security Framework หลัก
  • ทำ Access Control Matrix
ใบ้ทางสำหรับกิจกรรมเสริม — ไม่ได้อยู่ในสไลด์

โจทย์ใส่คำสำคัญไว้สามคำ ซึ่งชี้ไปที่สามเรื่องในคาบนี้

คำในโจทย์ชี้ไปที่
protect student privacyConfidentiality
ensure academic integrityIntegrity
conflicts of interest among researchersChina Wall

คำที่สามคือคำที่คนมองข้ามบ่อยที่สุด ถ้าอาจารย์คนหนึ่งเป็นที่ปรึกษาให้ทีมวิจัยที่แข่งกันสองทีม ระบบต้องกันไม่ให้เขาเห็นข้อมูลของทีมที่สองหลังจากแตะข้อมูลของทีมแรกแล้ว — ซึ่ง MAC และ DAC ทำไม่ได้ ต้องใช้ China Wall

สรุปท้ายคาบ

Authorization ต่างจาก Authentication

  • Authentication แชร์ข้ามระบบได้ ส่วน Authorization เป็น Application Specific — Secure in App A ≠ Security in App B
  • การตัดสินอิงกับ security policy และ Type Enforcement คือกลไกที่บังคับใช้นโยบาย เทียบได้กับตำรวจกับกฎหมาย
  • Policy คือแนวทางที่เลือกมาจากทางเลือกหลายทาง สรุปสั้นว่า ไม่รู้จะตัดสินใจยังไง ก็ไปถามนโยบาย
  • Security policy (BISHOP) คือข้อความที่แบ่งสถานะของระบบเป็นกองที่อนุญาตกับกองที่ไม่อนุญาต
  • Secure system (BISHOP) คือระบบที่เริ่มในสถานะที่อนุญาต และเข้าสู่สถานะที่ไม่อนุญาตไม่ได้

นโยบายตัดสินจาก CIA

  • Confidentiality — ใครอ่านได้ · Integrity — ใครเขียนหรือแก้ได้ · Availability — เช่น fault tolerant
  • โจทย์ข้อสอบ: ข้อสอบรั่วคือละเมิด confidentiality ส่วนการสลับข้อสอบคือละเมิด integrity
  • เผาข้อสอบทิ้งรักษาได้ทั้งสองข้อ แต่พัง availability

ใครเขียนนโยบาย — Access Control Models

  • MAC ผู้ใช้เชื่อถือไม่ได้ ผู้ดูแลคุมทั้งหมด ใช้ sensitivity label คุมทั้ง import และ export
  • DAC เจ้าของรับผิดชอบข้อมูลของตัวเอง
  • RBAC ตั้งอยู่บน least privilege ให้สิทธิ์ตามหน้าที่และเฉพาะตอนที่ต้องใช้ เช่น sudo, RunAS, หมอกับคนไข้ที่กำลังรักษาอยู่
  • จุดอ่อน: สายลับที่เลื่อนขั้นแล้วเห็นทุกคดี และแพทย์ที่เห็นเวชระเบียนทุกคน เป็นปัญหาของ MAC ส่วนพ่อแม่ที่ถูกกันไม่ให้เห็นข้อมูลลูก เป็นปัญหาของ DAC
  • RBAC ไม่มีนิยามที่ชัดเจนว่าจะนิยาม role ยังไง แต่ละที่ทำคนละแบบ เช่น www-data, ftp-data
  • ABAC ตัดสินจาก user / resource / environmental attributes · OAuth 2.0 กับ OIDC ให้สิทธิ์แอปอื่นแบบจำกัดโดยไม่ต้องบอกรหัสผ่าน · Zero Trust — Never trust, always verify
  • ความยืดหยุ่น: DAC High, MAC Low, RBAC Medium, ABAC Very High
  • สิทธิ์ไฟล์ Unix คือ r w x โดย x บนไดเรกทอรีแปลว่า search ส่วน NTFS มี Delete, change permission และ change ownership เพิ่ม

จากนโยบายไปเป็นของจริง

  • Access Control Matrix — แถวคือ subject คอลัมน์คือทรัพยากร ในช่องคือกฎ
  • เก็บได้สองแบบ ACL ตามคอลัมน์ ผูกกับ object และ Capability ตามแถว ผูกกับ subject
  • ACL ทำง่ายกว่าและเป็นแบบที่ OS เกือบทั้งหมดใช้ แต่ตอบยากว่า "ฉันเข้าถึงไฟล์อะไรได้บ้าง"
  • ระบบแบบ capability ที่ใช้จริงได้จะแก้ปัญหาได้เยอะ แต่มันไม่มีอยู่ และถ้ามี ก็จะได้ระบบที่ไม่ต้องมีผู้ดูแลระบบ
  • คำสั่งดู ACL: Windows cacls · macOS ls -le · Linux getfacl และ setfacl · SELinux ทำได้ทั้ง MAC, DAC, RBAC แต่ตั้งค่ายาก
  • ปัญหาที่ยังค้าง: superuser เข้าถึงได้ทุกไฟล์ และโปรแกรมประมวลผลคำเปิดไฟล์อะไรก็ได้ที่เราเปิดได้ — โปรแกรมนั้นก็คือตัวเรา

Security Models

  • Multilevel ใช้ในองค์กร ทำงานคู่กับ MAC มีสองตัวคือ Bell-LaPadula และ Biba
  • Bell-LaPadula — High Watermark, กันความลับรั่ว, no read up และ no write down บวก tranquility property ที่ห้ามเปลี่ยนชั้นระหว่างประมวลผล
  • Biba — Low Watermark, ดู integrity ไม่สนใจ confidentiality, never read down or write up คือ Bell-LaPadula กลับหัว
  • Multilateral ใช้ระหว่างแผนก โมเดลคือ China Walls สิทธิ์แคบลงตามประวัติที่เคยเข้าถึง
  • China Wall กับ reverse engineering: ทีม A อ่านของเดิมแล้วเขียน spec ทีม B สร้างใหม่จาก spec โดยไม่เห็นของเดิมเลย
  • เคส WordPerfect 5 ที่ Microsoft ถ่ายภาพหน้าจอจากงานแถลงข่าว แล้วออก Word 6.0 ข้ามจาก 2.0 และเคส Lotus 1-2-3 4.0 กับ Excel 5.0

สี่ขั้นตอนของการทำนโยบาย

  1. วิเคราะห์ security model ของระบบ
  2. เอามาสร้าง access control model
  3. แปลงเป็น access control matrix
  4. บังคับใช้ด้วย type enforcement ที่เหมาะสม

เกริ่นนำ0%

ข้ามไปสรุป

On this page

คาบนี้จะพาไปไหนส่วนที่ 1 — Authorization คืออะไรต่างจาก Authentication ตรงไหนPolicy คืออะไรSecurity Policy และ Secure Systemส่วนที่ 2 — นโยบายตัดสินจากอะไรสองคุณสมบัติหลักของข้อมูลโจทย์ให้คิด — ข้อสอบส่วนที่ 3 — ใครเป็นคนเขียนนโยบายMAC — ผู้ดูแลระบบเป็นคนกำหนดDAC — เจ้าของข้อมูลเป็นคนกำหนดRBAC — ให้สิทธิ์ตามหน้าที่จุดอ่อนของแต่ละแบบRBAC ในของจริงสามแบบยังไม่พอเทียบสี่แบบในตารางเดียวสิทธิ์ในระบบไฟล์ส่วนที่ 4 — จากนโยบายไปเป็นของที่รันจริงAccess Control MatrixACL กับ Capability ต่างกันยังไงลองดู ACL ในเครื่องตัวเองโจทย์ที่ทิ้งไว้ท้ายส่วนนี้ส่วนที่ 5 — Security Models: แบบร่างที่ช่วยเขียนนโยบายMultilevel Security — แบ่งเป็นชั้นBell-LaPadula — กันความลับรั่วBiba — กันของเสียไหลขึ้นMultilateral Security — กั้นระหว่างแผนกChina Wall กับการทำวิศวกรรมย้อนกลับส่วนที่ 6 — เอาทั้งหมดมาต่อกันสรุปท้ายคาบ