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

Lecture 2 — Security Components

ระบบแบบไหนถึงเรียกว่าปลอดภัย คาบนี้แยกคำว่า security ออกจาก privacy แล้วชี้ว่าระบบที่ปลอดภัยต้องมีชิ้นส่วนอะไรครบบ้าง

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

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

ระบบที่ปลอดภัยต้องตอบได้ครบสามคำถาม คือ คุณเป็นใคร (Authentication), คุณมีสิทธิ์ทำสิ่งนี้ไหม (Authorization) และ คุณทำอะไรไปบ้าง (Accounting) ขาดข้อใดข้อหนึ่งคือไม่ปลอดภัยแน่นอน แต่มีครบทั้งสามข้อก็ยังไม่ได้แปลว่าปลอดภัย

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

เนื้อหามาจากสไลด์ Chapter 2 หน้า 1–19 ของไฟล์ Lecture-2,3.pdf คำนิยาม ข้อความที่ยกมาในเครื่องหมายคำพูด และตัวอย่างทั้งหมดมาจากสไลด์จริง ส่วนคำอธิบาย รูป และกล่องที่ติดป้าย "เสริม" เขียนขึ้นใหม่เพื่อให้คนที่ไม่มีพื้นฐานอ่านรู้เรื่อง

สไลด์ระบุวันแก้ไขล่าสุดไว้ว่า Aug 12, 2025

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

คำถามคำตอบอยู่ที่
Security กับ Privacy ต่างกันตรงไหนส่วนที่ 1
ระบบที่ปลอดภัยในชีวิตจริงมีอะไรบ้างส่วนที่ 2
ชิ้นส่วนสามอย่างที่ขาดไม่ได้ส่วนที่ 3
อะไรที่ต้องมีเพิ่มนอกจากสามอย่างนั้นส่วนที่ 4
แล้วสรุปว่าอย่างไรถึงเรียกว่าปลอดภัยส่วนที่ 5

ส่วนที่ 1 — Security กับ Privacy ไม่ใช่เรื่องเดียวกัน

Security is the first cause of misfortune.

— Old German Proverb (สุภาษิตเยอรมันโบราณ)

สองคำนี้มักถูกพูดคู่กัน แต่คนละความหมาย

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

  • Security (ความมั่นคงปลอดภัย) — "Who can do what when?" ใครทำอะไรได้ เมื่อไหร่
  • Privacy (ความเป็นส่วนตัว) — อิสระที่จะควบคุมการเข้าถึงข้อมูลส่วนตัวของเราเอง
ทำไมต้องมีสิ่งนี้

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

เหตุการณ์เดียว คำตอบสองแบบ

ลองคิดกับสถานการณ์นี้ก่อนอ่านเฉลย

hacker เจาะระบบคอมพิวเตอร์ได้สำเร็จ แล้วรู้ว่าคนคนหนึ่งเป็นคนรักเพศเดียวกัน หรือกำลังป่วยด้วยโรคร้ายแรง

hacker เจาะระบบได้ แล้วรู้ว่าคนคนหนึ่งป่วยเป็นโรคอะไรเรื่องนี้เป็นปัญหาด้านไหนใช่แน่นอนอาจใช่ อาจไม่ใช่Securityใครทำอะไรได้ เมื่อไหร่Who can do what when?Privacyเจ้าของเลือกเองว่าใครจะรู้ขึ้นกับเจตนาของเจ้าตัวทั้งคู่ต้องการการควบคุมการเข้าถึงข้อมูล แต่ตอบคนละคำถามถ้าเจ้าตัวเปิดเผยเรื่องนั้นเองอยู่แล้ว ก็ไม่ใช่ปัญหา privacy
รูปที่ 1: เหตุการณ์เดียวกัน ตอบได้สองแบบ เพราะสองคำนี้วัดคนละอย่าง

เฉลยคือ

  • เป็นปัญหา security แน่นอน เพราะมีคนเข้าถึงระบบได้ทั้งที่ไม่ควรเข้าได้
  • จะเป็นปัญหา privacy หรือไม่ ยังตอบไม่ได้ คำตอบคือ may or may not be Privacy
ลองตอบดู: ทำไมเรื่องเดียวกันถึงเป็นปัญหา security แน่ ๆ แต่เป็นปัญหา privacy แค่ 'อาจจะ'

เพราะ security วัดที่ตัวระบบ ไม่ว่าเจ้าของข้อมูลจะคิดยังไง การที่คนนอกเข้าระบบได้ก็คือระบบพัง

ส่วน privacy วัดที่ เจตนาของเจ้าของข้อมูล ถ้าคนคนนั้นเปิดเผยเรื่องนี้ต่อสาธารณะอยู่แล้ว การที่ hacker รู้ก็ไม่ได้ทำให้เขาเสียความเป็นส่วนตัวอะไรเพิ่ม หลักที่ใช้ตัดสินคือ If a homosexual person is willing to go public, it is not a privacy issue.

Privacy ขึ้นอยู่กับเจตนา

หลักของ privacy มีสี่ข้อ

  1. Privacy ขึ้นกับเจตนา ไม่ได้ขึ้นกับตัวข้อมูลว่าอ่อนไหวแค่ไหน
  2. ถ้าเจ้าตัวเต็มใจเปิดเผยเอง ก็ไม่ใช่ปัญหา privacy
  3. ในความเป็นจริง เราแลกความเป็นส่วนตัวกับบริการอยู่ตลอดเวลา
  4. ตราบใดที่ผู้ให้บริการทำตามนโยบายความเป็นส่วนตัวที่ประกาศไว้ ก็ถือว่าใช้ได้
อายุ

คนคนหนึ่งอาจไม่ยอมบอกอายุกับใครเลย แต่ยอมบอกกับหมอที่กำลังรักษาเขา เพราะมันทำให้ได้รับการรักษาที่ดีขึ้น

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

ทางออกที่ง่ายที่สุดของเรื่อง privacy

วิธีนี้ถูกเรียกว่า a naïve solution คือ ให้ผู้ใช้เป็นคนเลือกเองว่าจะปล่อยข้อมูลส่วนตัวของตัวเองออกไปหรือไม่ ผ่านสามอย่างนี้

  • Disclaimer — ข้อความปฏิเสธความรับผิด
  • Agreement — ข้อตกลงที่ผู้ใช้ต้องกดยอมรับ
  • Privacy Policy — นโยบายความเป็นส่วนตัว

แล้วทิ้งคำถามไว้คำเดียวว่า HIPAA ? โดยไม่มีคำตอบ

HIPAA คืออะไร

HIPAA ย่อมาจาก Health Insurance Portability and Accountability Act เป็นกฎหมายของสหรัฐอเมริกาที่วางกติกาว่าข้อมูลสุขภาพของคนไข้จะถูกเก็บและส่งต่อได้แค่ไหน

เครื่องหมายคำถามหลังชื่อนี้ไม่มีคำตอบเขียนไว้ อ่านได้ว่าเป็นคำถามชวนคิด ว่าการให้ผู้ใช้กดยอมรับเอาเองนั้นพอหรือยัง หรือบางเรื่องต้องมีกฎหมายบังคับ

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

"ให้ผู้ใช้เลือกเอง" ฟังดูยุติธรรม แต่คำที่ใช้คือ naïve ตั้งแต่ต้นประโยค เพราะในทางปฏิบัติ ผู้ใช้แทบไม่มีทางเลือกจริง ถ้าไม่กดยอมรับก็ใช้บริการไม่ได้เลย และแทบไม่มีใครอ่านนโยบายจนจบก่อนกด

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

สิ่งที่เรากดยอมรับไปครอบคลุมแค่ไหน

ข้อความสองอันข้างล่างมาจากนโยบายจริง ไม่ใช่การคาดเดา

Google — สิ่งที่นโยบายอนุญาตให้ทำ

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

ยกมาจาก policies.google.com/privacy

Facebook — สิ่งที่คนส่วนใหญ่ไม่รู้

ถ้าคุณเริ่มพิมพ์อะไรบางอย่าง แล้วเปลี่ยนใจลบทิ้ง Facebook ก็เก็บข้อความนั้นไว้และเอาไปวิเคราะห์ด้วย

— Zeynep Tufekci นักสังคมวิทยาด้านเทคโนโลยี พูดไว้ใน TED talk ปี 2017 ยกมาจาก Chicago Tribune

อ่านสองกล่องบนให้ตรงประเด็น

สองกล่องนี้ไม่ได้แปลว่า Google ผิดหรือ Facebook ผิด ทั้งสองบริษัทประกาศไว้ในนโยบายของตัวเองแล้ว ซึ่งตามหลักสี่ข้อข้างบนก็ถือว่า "ทำตามนโยบาย" แล้ว

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


ส่วนที่ 2 — หาองค์ประกอบจากของใกล้ตัว

แทนที่จะเริ่มจากนิยาม ส่วนนี้หยิบของจริงสามอย่างมาถามคำถามเดียวกันทั้งสามอย่าง

Is it a secure system? — If yes, what does it have?

มันเป็นระบบที่ปลอดภัยไหม ถ้าใช่ มันมีอะไรอยู่ในนั้นบ้าง

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

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

สามตัวอย่างนั้นคือ ตู้ ATM, ตู้นิรภัยของธนาคาร (Security Deposit Box) และ ของรอบตัวเรา อย่างบ้านของคุณหรือคอมพิวเตอร์ของคุณ

การเข้าถึงตู้นิรภัยของธนาคาร มีหลายขั้นตอน แต่สไลด์ไม่ได้ไล่ทีละขั้นให้ดู

ลองไล่ขั้นตอนตู้นิรภัยดูเสริม — ไม่ได้อยู่ในสไลด์
  1. เดินเข้าธนาคาร แจ้งว่าจะขอเปิดตู้นิรภัย
  2. ยื่นบัตรประชาชน แล้วเซ็นชื่อเทียบกับลายเซ็นที่ธนาคารเก็บไว้
  3. พนักงานเปิดสมุดดูว่าตู้นี้เป็นของเราจริง และเรามีสิทธิ์เปิดคนเดียวหรือต้องมาพร้อมกันสองคน
  4. พนักงานใช้กุญแจของธนาคาร เราใช้กุญแจของเรา ต้องไขพร้อมกันทั้งสองดอกตู้ถึงจะเปิด
  5. ลงเวลาเข้าและออกในสมุดบันทึกการเข้าใช้

จะเห็นว่าขั้นที่ 2 ตอบคำถามว่า เราเป็นใคร ขั้นที่ 3 และ 4 ตอบว่า เรามีสิทธิ์ไหม และขั้นที่ 5 ตอบว่า เราทำอะไรไป

Look around yourself to find more examples — ลองมองของรอบตัว แล้วถามคำถามชุดเดิมกับมัน


ส่วนที่ 3 — AAA สามองค์ประกอบของความปลอดภัย

ชิ้นส่วนสามอย่างที่หาเจอจากตัวอย่างเมื่อกี้มีชื่อเรียกว่า the AAA of Security

the AAA of Security — สามด่านที่ระบบปลอดภัยต้องมีครบผู้ใช้Authenticationพิสูจน์ตัวตนคุณเป็นใครใครก็เข้าได้Authorizationตรวจสิทธิ์คุณมีสิทธิ์ทำไหมใครก็ทำได้ทุกอย่างAccountingบันทึก (Auditing)คุณทำอะไรไปบ้างเกิดอะไรขึ้นก็ไม่รู้บรรทัดล่างของแต่ละด่านคือสิ่งที่เกิดขึ้น ถ้าระบบขาดด่านนั้นไป
รูปที่ 2: สามด่านของ AAA และสิ่งที่เกิดขึ้นถ้าระบบขาดด่านใดด่านหนึ่งไป

Authentication — คุณเป็นใคร

Authentication (การพิสูจน์ตัวจริง) คือขั้นตอนที่ระบบถามว่า

Who are you? Are you really the person whom you claim to be?

คุณเป็นใคร และคุณเป็นคนคนนั้นจริงอย่างที่อ้างหรือเปล่า

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

Authorization — คุณมีสิทธิ์ทำสิ่งนี้ไหม

Authorization (การให้สิทธิ์เข้าถึง) คือขั้นตอนที่ระบบถามว่า

Do you have the authority to do what you are trying to do?

คุณมีอำนาจที่จะทำสิ่งที่กำลังจะทำหรือเปล่า

Accounting — คุณทำอะไรไปบ้าง

Accounting (การบันทึกการใช้งาน) หรือเรียกอีกชื่อว่า Auditing (การตรวจสอบย้อนหลัง) คือขั้นตอนที่ระบบตอบคำถามว่า

What did you do?

คุณทำอะไรไปบ้าง

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

คนมักคิดว่า Authentication กับ Authorization เป็นเรื่องเดียวกัน เพราะเจอพร้อมกันตอน login ทั้งคู่

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

เอาตู้ ATM มาจับคู่กับสามด่าน

ตู้ ATM เป็นระบบที่ปลอดภัย เพราะมีองค์ประกอบครบทั้งสามสอดบัตร แล้วกด PINAuthenticationตู้เช็กยอดเงินและวงเงินต่อวันAuthorizationพิมพ์สลิป และลงรายการเดินบัญชีAccountingตู้เซฟธนาคารก็ครบสามอย่างเหมือนกัน — เซ็นชื่อ ตรวจสิทธิ์ และจดบันทึกการเข้าใช้
รูปที่ 3: ตู้ ATM เมื่อเรียกชื่อแต่ละขั้นตอนตามองค์ประกอบของมัน
เทียบให้เห็นภาพ

AAA ถูกเทียบกับ Kerberos สุนัขสามหัวเฝ้าประตูยมโลกในตำนานกรีก หัวหนึ่งต่อหนึ่งองค์ประกอบ

ชื่อนี้ไม่ได้ถูกหยิบมาลอย ๆ โครงการ Athena ของ MIT ตั้งชื่อระบบพิสูจน์ตัวจริงของตัวเองว่า "Kerberos" ตามสุนัขตัวนี้จริง ๆ

ที่มาของชื่อคือ Cerberus หรือ Kerberos (กรีก Κέρβερος แปลว่า "ปีศาจแห่งหลุมลึก") เป็นสุนัขล่าเนื้อของ Hades มีสามหัว หางเป็นงู บางตำนานว่ามีถึง 50 หรือ 100 หัว

จุดที่การเทียบนี้ดีคือ หัวทั้งสามอยู่บนตัวเดียวกัน ไม่ใช่สุนัขสามตัวที่แยกกันเฝ้า ระบบเดียวต้องมีครบทั้งสามอย่าง ไม่ใช่ให้ระบบสามระบบมีคนละอย่าง

ลองตอบดู: เว็บหนึ่งให้ทุกคนเข้าดูได้โดยไม่ต้อง login แต่เก็บ log ทุกครั้งที่มีคนเปิดหน้าเว็บ เว็บนี้มีองค์ประกอบครบไหม

ไม่ครบ

มี Accounting (เก็บ log แล้ว) แต่ไม่มี Authentication เพราะไม่มีการพิสูจน์ว่าใครเป็นใคร และเมื่อไม่รู้ว่าใครเป็นใคร Authorization ก็ทำไม่ได้ตามไปด้วย

ที่สำคัญกว่านั้นคือ log ที่เก็บได้แทบไม่มีค่า เพราะบอกได้แค่ว่า "มีคนเปิดหน้านี้" แต่บอกไม่ได้ว่าเป็นใคร Accounting จะมีความหมายก็ต่อเมื่อมี Authentication มาก่อน


ส่วนที่ 4 — สองแนวคิดที่มาช่วยหนุน

คำถามที่ตามมาคือ AAA is not enough? และคำตอบคือยังมีของอีกชุดที่ต้องมี

Integrity — ของต้องครบและไม่ถูกแก้

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

Integrity (n) "the quality or state of being complete or undivided"

คุณสมบัติของการอยู่ครบถ้วน ไม่ถูกแบ่งแยกหรือทำให้ขาดหาย

Integrity (ความครบถ้วนถูกต้องของข้อมูล) ตอบคำถามที่ AAA ตอบไม่ได้ คือ ข้อมูลที่อยู่ในระบบยังเป็นตัวเดิมอยู่ไหม ต่อให้คุมได้หมดว่าใครเข้าได้และทำอะไรได้ ถ้าข้อมูลข้างในถูกแก้ไปแล้ว ระบบนั้นก็ใช้ไม่ได้

Software Engineering และ Threat Modeling

นิยามคือ

Threat modeling is a method of addressing and documenting the security risks associated with an application.

การทำ threat modeling คือวิธีจัดการและบันทึกความเสี่ยงด้านความปลอดภัยที่เกี่ยวข้องกับแอปพลิเคชันหนึ่ง ๆ

Threat Modeling (การวางแผนรับมือภัยคุกคามล่วงหน้า) คือการนั่งลงเขียนตั้งแต่ตอนออกแบบว่า ระบบนี้จะมีใครมาโจมตีได้บ้าง โจมตีตรงไหน และถ้าโดนแล้วจะเสียหายแค่ไหน คำสำคัญในนิยามคือ documenting คือต้องเขียนเก็บไว้ ไม่ใช่คิดในหัวแล้วจบ

Validation of Input — เชื่อ input ไม่ได้

หลักของเรื่องนี้มีประโยคเดียว

All input is evil until proven otherwise

ถือว่า input ทุกตัวเป็นของร้าย จนกว่าจะพิสูจน์ได้ว่าไม่ใช่

All input is evil until proven otherwiseฝั่งที่เชื่อไม่ได้input จากผู้ใช้ฟอร์ม ไฟล์ networkตรวจก่อนใช้validationฝั่งที่เชื่อได้ข้อมูลที่ตรวจแล้วระบบเอาไปใช้ต่อได้Integrity คือการรักษาให้ของที่อยู่ฝั่งขวาครบและไม่ถูกแก้โดยไม่ได้รับอนุญาตThreat modeling คือการเขียนไว้ล่วงหน้าว่าใครจะโจมตีตรงไหนได้บ้าง
รูปที่ 4: เส้นแบ่งระหว่างของที่เชื่อไม่ได้กับของที่เชื่อได้ ทุกอย่างต้องผ่านการตรวจก่อนข้ามเส้นนี้
input ที่ไม่ได้ตรวจ พาไปถึงไหนได้เสริม — ไม่ได้อยู่ในสไลด์

ฟอร์ม login รับ username มาแล้วเอาไปต่อเป็นคำสั่งค้นฐานข้อมูลตรง ๆ

ถ้าโปรแกรมสร้างคำสั่งด้วยการต่อข้อความ แล้วมีคนกรอก username เป็น

' OR '1'='1

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

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

เชื่อว่าผู้ใช้กรอกมาถูก
  • ตรวจความถูกต้องด้วย JavaScript ในหน้าเว็บอย่างเดียว
  • ฝั่งเซิร์ฟเวอร์รับค่ามาใช้ต่อทันที

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

ตรวจที่ฝั่งที่เราคุมได้
  • ตรวจซ้ำที่ฝั่งเซิร์ฟเวอร์เสมอ ต่อให้หน้าเว็บตรวจไปแล้ว
  • กำหนดไว้ว่าอะไรคือค่าที่ยอมรับได้ แล้วปฏิเสธที่เหลือทั้งหมด

หลักคือถือว่าทุกอย่างที่มาจากนอกเส้นในรูปที่ 4 เป็นของร้าย จนกว่าจะตรวจแล้ว

สไลด์นับไม่เท่ากันสองหน้า

หน้า 17 ไล่แนวคิดสนับสนุนไว้ สามข้อ คือ Integrity, Software Engineering & Threat Modeling และ Validation of Input

แต่หน้าสรุปคือหน้า 18 เขียนว่า 2 Supporting Concepts แล้วนับเฉพาะ Integrity กับ Input Validations

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


ส่วนที่ 5 — ข้อสรุปสองข้อที่ต้องจำ

สองประโยคนี้อ่านเผิน ๆ เหมือนขัดกันเอง

แนวคิดหลัก

Missing a component means a system is not secure. ขาดองค์ประกอบข้อใดข้อหนึ่ง แปลว่าระบบนั้นไม่ปลอดภัย

Having all components does not mean the system is secure. มีองค์ประกอบครบ ไม่ได้แปลว่าระบบนั้นปลอดภัย

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

สองประโยคนี้ไม่ได้ขัดกัน มันบอกว่า AAA เป็น เงื่อนไขจำเป็น แต่ไม่ใช่เงื่อนไขเพียงพอ

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

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

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

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

กับดักที่พบบ่อยคือการเอา checklist ไปติ๊กแล้วจบ "มีระบบ login แล้ว ✓ มีการแบ่งสิทธิ์แล้ว ✓ มี log แล้ว ✓ เพราะฉะนั้นปลอดภัย"

ประโยคที่สองเขียนมาเพื่อกันเรื่องนี้โดยเฉพาะ ระบบ login ที่ยอมให้ตั้งรหัสผ่านว่า 1234 ก็นับว่ามี Authentication ครบตาม checklist แต่ไม่ได้ช่วยอะไรเลย

สรุปท้ายคาบ

สองคำที่ต้องแยกให้ออก

  • Security ถามว่า "ใครทำอะไรได้ เมื่อไหร่" — วัดที่ตัวระบบ
  • Privacy คืออิสระที่จะคุมว่าใครเข้าถึงข้อมูลส่วนตัวของเราได้ — วัดที่เจตนาของเจ้าของข้อมูล
  • ทั้งคู่ต้องการการควบคุมการเข้าถึงข้อมูลเหมือนกัน แต่ตอบคนละคำถาม
  • เคสตัวอย่าง: hacker เจาะระบบแล้วรู้เรื่องสุขภาพของคนคนหนึ่ง เป็น security แน่นอน ส่วนจะเป็น privacy หรือไม่ ขึ้นกับว่าเจ้าตัวเปิดเผยเองอยู่แล้วหรือเปล่า
  • ทางออกแบบง่าย ๆ ของ privacy คือให้ผู้ใช้เลือกเอง ผ่าน disclaimer, agreement และ privacy policy — วิธีนี้ถูกเรียกว่า naïve

สามองค์ประกอบ — the AAA of Security

  • Authentication — "Who are you? Are you really the person whom you claim to be?"
  • Authorization — "Do you have the authority to do what you are trying to do?"
  • Accounting (Auditing) — "What did you do?"
  • เทียบกับ Kerberos สุนัขสามหัว หัวหนึ่งต่อหนึ่งองค์ประกอบ อยู่บนตัวเดียวกัน
  • หาชิ้นส่วนสามอย่างนี้ได้จากตู้ ATM ตู้นิรภัยธนาคาร และของรอบตัวเรา

แนวคิดที่มาช่วยหนุน

  • Integrity — "the quality or state of being complete or undivided" ของต้องครบและไม่ถูกแก้
  • Threat Modeling — เขียนบันทึกไว้ล่วงหน้าว่าใครจะโจมตีตรงไหนได้
  • Input Validation — "All input is evil until proven otherwise"
  • หน้า 17 นับสามข้อ หน้าสรุป 18 นับสองข้อ (Integrity กับ Input Validation)

สองประโยคปิดบท

  • ขาดองค์ประกอบข้อใดข้อหนึ่ง = ไม่ปลอดภัยแน่นอน
  • มีครบทุกข้อ = ยังไม่ได้แปลว่าปลอดภัย
  • AAA เป็นเงื่อนไขจำเป็น แต่ไม่ใช่เงื่อนไขเพียงพอ

เกริ่นนำ0%

ข้ามไปสรุป

On this page

คาบนี้จะพาไปไหนส่วนที่ 1 — Security กับ Privacy ไม่ใช่เรื่องเดียวกันสองคำนี้มักถูกพูดคู่กัน แต่คนละความหมายเหตุการณ์เดียว คำตอบสองแบบPrivacy ขึ้นอยู่กับเจตนาทางออกที่ง่ายที่สุดของเรื่อง privacyสิ่งที่เรากดยอมรับไปครอบคลุมแค่ไหนส่วนที่ 2 — หาองค์ประกอบจากของใกล้ตัวส่วนที่ 3 — AAA สามองค์ประกอบของความปลอดภัยAuthentication — คุณเป็นใครAuthorization — คุณมีสิทธิ์ทำสิ่งนี้ไหมAccounting — คุณทำอะไรไปบ้างเอาตู้ ATM มาจับคู่กับสามด่านส่วนที่ 4 — สองแนวคิดที่มาช่วยหนุนIntegrity — ของต้องครบและไม่ถูกแก้Software Engineering และ Threat ModelingValidation of Input — เชื่อ input ไม่ได้ส่วนที่ 5 — ข้อสรุปสองข้อที่ต้องจำสรุปท้ายคาบ