- นโยบายที่บังคับให้ยืนยันตัวตนบ่อยๆ สร้างเพียงความไม่สะดวกให้ผู้ใช้ โดยแทบไม่ช่วย เพิ่มความปลอดภัย อย่างมีนัยสำคัญ
- เมื่อภัยคุกคามสมัยใหม่อย่าง การโจมตีแบบ MFA fatigue เพิ่มขึ้น การยืนยันซ้ำๆ อาจกลายเป็น ช่องโหว่ เสียเอง
- ฟังก์ชันล็อกหน้าจอของระบบปฏิบัติการ และการอัปเดตนโยบายการเข้าถึงแบบเรียลไทม์ เป็นวิธี ปกป้องที่มีประสิทธิภาพกว่า
- ควรต้องมีการยืนยันเพิ่มเติม เฉพาะก่อนทำงานที่มีความอ่อนไหว เท่านั้น ส่วนรอบการล็อกอินสั้นๆ แบบกำหนดตายตัวนั้นไม่จำเป็น
- แนวทางควบคุมการเข้าถึงสมัยใหม่ ใช้นโยบายได้แบบ อัตโนมัติและรวดเร็ว โดยไม่รบกวนผู้ใช้
เหตุผลที่การยืนยันตัวตนบ่อยๆ ไม่ได้เพิ่มความปลอดภัย
ปัญหาที่เกิดจากการยืนยันซ้ำ
- เมื่อเซสชันหมดอายุระหว่างการทำงาน และต้องกรอก รหัสผ่านกับ MFA (การยืนยันตัวตนหลายปัจจัย) ซ้ำๆ บ่อยครั้ง จะทำให้ประสิทธิภาพการทำงานลดลง
- เดิมทีเพียงแค่กรอกรหัสผ่านใหม่ก็พอ แต่เมื่อมีการเพิ่ม ขั้นตอน MFA เข้ามา ก็ยิ่งเสียเวลาและเพิ่มความไม่พอใจของผู้ใช้
- ยิ่งมีการร้องขอ MFA บ่อยเท่าไร โอกาสสำเร็จของ การโจมตีแบบ MFA fatigue (MFA fatigue attacks) ก็ยิ่งสูงขึ้น
- ในอดีต การเปลี่ยนรหัสผ่านบ่อยๆ หรือการตั้งเวลาให้เซสชันหมดอายุสั้นๆ เคยถูกมองว่าเป็นมาตรการความปลอดภัยที่มีประสิทธิภาพ แต่ใน แนวทางปัจจุบัน กลับถูกประเมินว่าอาจให้ผลเสียมากกว่า
- ความปลอดภัยไม่ได้ขึ้นอยู่กับรอบการล็อกอิน แต่ขึ้นอยู่กับว่า การจัดการสิทธิ์เข้าถึงและการเปลี่ยนนโยบาย ถูกสะท้อนผลได้รวดเร็วเพียงใด
แก่นแท้ของวิธีการยืนยันตัวตน
- การยืนยันตัวตนโดยหลักแล้วคือการพิสูจน์อย่างใดอย่างหนึ่งจากสองแบบ
- การพิสูจน์การครอบครองอุปกรณ์: เช่น Windows Hello PIN, YubiKey, สมาร์ตการ์ด เพื่อตรวจสอบว่ามีอุปกรณ์นั้นอยู่จริงหรือไม่
- การพิสูจน์ว่าเป็นเจ้าตัวจริง: เช่น รหัสผ่าน, Face ID, Touch ID เพื่อระบุว่าเป็นผู้ใช้นั้นจริง
- บทบาทหลักของ Identity Provider (IdP) คือการมุ่งเน้นที่ การยืนยันตัวตน
- Face ID, Touch ID, Windows Hello เป็นต้น คือระบบแบบบูรณาการที่จัดการทั้ง การพิสูจน์การครอบครองอุปกรณ์และการพิสูจน์ตัวบุคคล พร้อมกัน จึงมีความปลอดภัยสูง
- ผู้ดูแลระบบจำนวนมากมักตั้งเวลาเซสชันให้หมดอายุสั้น เพราะมี ความกังวล ว่าการเปลี่ยนนโยบายจะไม่ถูกบังคับใช้ทันที
ภัยคุกคามด้านความปลอดภัยจริงและบทบาทของการยืนยันตัวตน
- ผู้โจมตีส่วนใหญ่พยายามโจมตีผ่าน การฟิชชิงระยะไกล และการขโมยรหัสผ่านนั้นทำได้ง่ายมาก
- เพื่อรับมือกับการโจมตีระยะไกล การใช้ การยืนยันตัวตนชั้นที่สอง (เช่น YubiKey) เป็นแนวป้องกันที่สำคัญ
- เมื่อเกิด การโจมตีทางกายภาพ เช่น อุปกรณ์สูญหายหรือถูกขโมย โดยปกติหน้าจอก็มักอยู่ในสถานะล็อกอยู่แล้ว
- กลับกัน ยิ่งต้องล็อกอินบ่อย ผู้โจมตีก็ยิ่งมี โอกาสขโมยข้อมูลรับรอง มากขึ้น ซึ่งส่งผลเสียต่อความปลอดภัย
บทบาทของระบบปฏิบัติการและเว็บเซอร์วิส
- ระบบปฏิบัติการสมัยใหม่ใช้ฟังก์ชัน ล็อกหน้าจอ เพื่อปกป้องระบบโดยอัตโนมัติเมื่อผู้ใช้ลุกออกจากที่นั่ง
- แทนที่จะเพิ่มความไม่สะดวกให้ผู้ใช้ด้วยการขอการยืนยันเพิ่มเติมบ่อยขึ้น การบังคับใช้ นโยบายล็อกอัตโนมัติ เป็นแนวทางที่เหมาะสมกว่า
- เว้นแต่จะเป็นคอมพิวเตอร์ที่ใช้ร่วมกัน การหมดอายุของเว็บเซสชันแบบสั้นๆ ก็เป็นเพียงมรดกตกค้างจากยุคอินเทอร์เน็ตคาเฟ่เท่านั้น
- นอกเหนือจากบริการที่มีความอ่อนไหวสูง (เช่น อินเทอร์เน็ตแบงก์กิง) นโยบายกำหนดเวลาเซสชันหมดอายุที่ไม่เหมาะสมกลับทำให้ ทั้งความปลอดภัยและการใช้งานแย่ลง
โมเดลความปลอดภัยที่มีประสิทธิภาพและเป็นมิตรกับผู้ใช้
- การ ยืนยันตัวตนทันทีเมื่อจำเป็น (on-demand authentication) ก่อนทำงานที่อ่อนไหวคือแนวทางที่เหมาะที่สุด
- check mode ของ Tailscale SSH, Slack Accessbot เป็นต้น มีฟังก์ชัน ยืนยันผู้ใช้ทันทีเมื่อจำเป็น
- หากใช้งานร่วมกับการ บังคับล็อกหน้าจอ ของระบบปฏิบัติการ ก็จะรักษาสมดุลระหว่างความปลอดภัยและความสะดวกได้
- การตรวจสอบสถานะความปลอดภัยอย่างต่อเนื่อง (device posture check) และการควบคุมการเข้าถึงแบบเรียลไทม์ จะทำงานโดยอัตโนมัติโดยไม่ขึ้นกับพฤติกรรมของผู้ใช้
- ตัวอย่าง:
- หากอุปกรณ์ออฟไลน์ สูญหาย หรือไม่ผ่านการตรวจสอบความปลอดภัย จะมีการ เพิกถอนสิทธิ์เข้าถึงทันที
- หากมีการเปลี่ยนบทบาทหรือสถานะของผู้ใช้ จะมีการ อัปเดตนโยบายการเข้าถึงโดยอัตโนมัติ
- เมื่อเทียบกับวิธีที่บังคับให้ผู้ใช้ยืนยันตัวตนซ้ำๆ แนวทาง อัตโนมัติแบบเรียลไทม์ นั้นฉลาดและปลอดภัยกว่ามาก
บทสรุป
- การ ล็อกอินบ่อยๆ ไม่ได้ช่วยเพิ่มความปลอดภัยอย่างมีประสิทธิภาพ และอาจนำไปสู่ การใช้รหัสผ่านซ้ำ, ฟิชชิง, MFA fatigue ได้ด้วยซ้ำ
- ระบบความปลอดภัยที่เงียบและทำงานอัตโนมัติ คือแนวทางป้องกันที่ดีที่สุด
- Tailscale มุ่งสู่ ความปลอดภัยที่ปรับตัวได้ ฉลาด และช่วยได้จริง
- ระบบถูกออกแบบมาให้เกิดแรงเสียดทานจากการยืนยันตัวตนให้น้อยที่สุดในช่วงเวลาที่จำเป็น โดยผู้ใช้ไม่ต้องมาคอยปรับรอบการล็อกอินเอง
- ฟังก์ชันตรวจสอบความปลอดภัยแบบเรียลไทม์ของ Tailscale ยังสามารถขยายไปใช้กับแอปอื่นๆ ได้ เพื่อปกป้อง แม้แต่ระบบเลกาซี อย่างปลอดภัย
ลิงก์อ้างอิง
4 ความคิดเห็น
มีการพูดถึงเรื่องนี้ในคอมเมนต์ HN เหมือนกัน แต่เมื่อเทียบกับสภาพแวดล้อม IT ที่เปลี่ยนแปลงอย่างรวดเร็วแล้ว การตรวจสอบ/ข้อกำหนดด้านความปลอดภัยที่ยึดโยงกับมาตรฐานเก่า ๆ แบบแข็งทื่อก็มักกลายเป็นตัวฉุดรั้งอยู่มากทีเดียว คนที่ทำงานอยู่แนวหน้าคงรู้กันดีอยู่แล้ว... 555
บริการจำนวนมากในเกาหลีมักจะแสดงการแจ้งเตือนที่น่ารำคาญให้รีเซ็ตรหัสผ่านทุก ๆ 30 วัน
เป็นสิ่งที่ถูกบังคับใช้มาหลายปีในฐานะหน้าที่ด้านความปลอดภัยของข้อมูลส่วนบุคคล เลยน่ารำคาญมากจริง ๆ... ฮือฮือ
ความเห็นจาก Hacker News
ฉันคิดว่านโยบายบังคับเปลี่ยนรหัสผ่านเป็นระยะหรือการตั้งให้รหัสผ่านหมดอายุกลับเป็นปัญหาที่ใหญ่กว่า เพราะนโยบายแบบนี้มักทำให้คนถูกล็อกออกจากบัญชีบ่อย ๆ (เช่น รหัสผ่านหมดอายุระหว่างลาพักร้อน) แล้วต่อจากนั้นก็ต้องเสียเวลาเดินไปหา IT เอง หรือโทรหา IT หลายชั่วโมงเพื่อขอรีเซ็ต หรือไม่ก็ให้เพื่อนร่วมงานที่ยังไม่ถูกล็อกช่วยติดต่อให้
หลายบริษัท (ส่วนใหญ่ด้วยซ้ำ?) ยังใช้นโยบายแบบนี้อยู่ แต่ตอนนี้ NIST ไม่แนะนำให้เปลี่ยนรหัสผ่านแบบสุ่มอีกต่อไปแล้ว
เอกสารทางการของ NIST
Microsoft ก็ไม่แนะนำเช่นกัน โดยมองว่าการหมดอายุของรหัสผ่านให้ผลเสียมากกว่า
เอกสารทางการของ Microsoft
แต่ถึงอย่างนั้น ในฝั่ง IT หรือความปลอดภัยก็ดูเหมือนว่าคำแนะนำเหล่านี้ยังไม่ถูกมองว่า “มีอำนาจพอ” และก็ยังมีกไกด์บางส่วนที่แนะนำให้นำนโยบายแบบนี้ไปใช้อยู่
เวลาล็อกอินเข้าเว็บสุ่ม ๆ แล้วโดนบังคับให้รีเซ็ตรหัสผ่านขึ้นมา บางครั้งฉันจะคิดก่อนเลยว่าไม่น่าใช่เพราะหมดอายุตามเวลา แต่เป็นเพราะบัญชีน่าจะรั่วหรือถูกเจาะมากกว่า
ถ้าผู้ดูแลเว็บรู้ว่าบางบัญชีไปโผล่อยู่ในรายการข้อมูลรั่ว การบังคับให้เปลี่ยนรหัสผ่านในการล็อกอินครั้งถัดไปก็ดูเป็นการตอบสนองที่สมเหตุสมผล
ฉันเคยพูดเรื่องนี้กับคนดูแลด้าน cybersecurity แล้วได้รับคำตอบว่ามาตรฐาน PCI ยังกำหนดให้ต้องเปลี่ยนรหัสผ่านเป็นระยะ ดังนั้นมันจึงขึ้นอยู่กับว่าคุณให้ความสำคัญกับการตรวจประเมินแบบไหนมากกว่า
เมื่อก่อนฉันรำคาญนโยบายแบบนี้มาก เลยใช้วิธีแค่เติมตัวอักษรท้ายรหัสผ่านทีละตัวตามลำดับ a~z ทุกครั้ง
โชคดีที่บริษัทปัจจุบันของฉันใช้รหัสผ่านเดิมมา 3 ปีแล้ว เลยพอใจมาก
ฉันคิดว่าไม่มีเหตุผลเลยที่ผู้ให้บริการจะมาบังคับให้ฉันเปลี่ยนรหัสผ่านเป็นระยะ ทั้งที่รหัสผ่านของฉันไม่ได้รั่ว
มันน่าเหลือเชื่อที่เรื่องแบบนี้ยังถูกใช้เหมือนเป็นมาตรฐานทางการอยู่
สุดท้ายทุกบัญชีของฉันก็กลายเป็นใช้แค่แพตเทิร์น 1234abcd@
ฉันรู้สึกว่าผลิตภัณฑ์ของ Apple ทำให้ไม่สะดวกมาก
พบว่าแพตเทิร์นนี้เกิดขึ้นกับทุกผลิตภัณฑ์ของ Apple
ตั้งค่า TouchID บน Mac แล้ว พอล็อกอินบัญชี Apple ใน App Store เพื่อจะติดตั้งแอป ก็ยังมีหน้าต่างเด้งมาขอให้กรอกรหัสผ่านอยู่เรื่อย ๆ ทั้งที่ควรยืนยันด้วย TouchID ได้
แม้แต่ตอนติดตั้งแอปฟรีก็เป็นเหมือนกัน ซึ่งฉันมองว่าเป็นขั้นตอนที่ไม่จำเป็นอย่างยิ่ง
แพตเทิร์นนี้ก็เกิดบน iPhone ของคู่สมรสฉันเป็นครั้งคราวเหมือนกัน
โดยเฉพาะตอนรีเซ็ตเครื่องแล้วตั้งค่าใหม่ จะถูกขอให้กรอกรหัสผ่าน Apple ซ้ำ ๆ
ทั้งที่สถานการณ์แบบนั้นก็ปลอดภัยพอด้วย TouchID อยู่แล้ว แต่ก็ยังเป็นแบบนี้ตลอดจนน่าหงุดหงิด
ถ้าเข้าใช้บริการ Apple จากอุปกรณ์ที่ไม่ใช่ Apple จะยิ่งไม่สะดวกหนักกว่าเดิม
ทุกครั้งที่ล็อกอินเข้า icloud.com ต่อให้กด "เชื่อถืออุปกรณ์นี้" แล้ว วันถัดไปก็ยังต้องวนกลับมาใส่รหัสผ่าน+โค้ดใช้ครั้งเดียว ทำ 2FA ซ้ำอีก
ถ้า Face ID ใช้จ่ายเงินหรือยืนยันติดตั้งแอปไม่สำเร็จ ระบบก็ไม่ให้ใช้ PIN แทน แต่บังคับให้กรอกรหัสผ่านบัญชี Apple ทั้งชุด และโครงสร้างก็ทำให้เปิดแอปจัดการรหัสผ่านไม่ได้ด้วย
ถ้าเจอสถานการณ์แบบนี้ตอนยืนอยู่หน้าเครื่องจ่ายเงิน มันเป็นประสบการณ์ที่ลำบากมากจริง ๆ
ต้องเช็กให้แน่ใจว่าได้เปิดการตั้งค่าให้ใช้ TouchID อนุมัติการซื้อแล้ว
(ต้องเข้าไปตั้งค่าที่ Settings > Touch ID & Password)
ถ้ายังไม่ได้เปิดไว้ ระบบอาจจะยังถามหารหัสผ่านต่อไปเรื่อย ๆ
จากประสบการณ์คือหลังรีสตาร์ตอาจต้องยืนยันแค่ครั้งเดียว แล้วหลังจากนั้นก็ใช้ TouchID ยืนยันได้เกือบทั้งหมด
ทุกครั้งที่เชื่อม iPhone เข้ากับ Mac เพื่อซิงก์ จะมีหน้าต่าง "เชื่อถืออุปกรณ์นี้หรือไม่?" ขึ้นทั้งบน Mac และ iPhone และต่อให้กด "ใช่" ทุกครั้ง พอเชื่อมใหม่ครั้งหน้าก็ถามอีกอยู่ดี
ฉันคิดว่าการให้ยืนยันตัวตนอีกครั้งเมื่อทำงานที่ต้องใช้สิทธิ์ SUDO เป็นเรื่องธรรมดา
ในกรณีแบบนี้ ถ้าจัดกลุ่มงานที่เกี่ยวข้องให้ยืนยันครั้งเดียวก็จะช่วยลดจำนวนครั้งที่ต้องยืนยันซ้ำได้
ลูกของฉันกำลังใช้ iPad ที่เก่ามากอยู่ ซึ่งเป็น iOS 10.3 เลยใช้แอปรหัสผ่านไม่ได้ และเบราว์เซอร์ก็เป็นแอป 32 บิตจนเปิดเว็บไซต์สมัยใหม่แทบไม่ได้
เพราะงั้นทุกครั้งที่ใช้ App Store ฉันต้องพิมพ์รหัสผ่านยาวเกิน 50 ตัวเองทุกครั้ง ซึ่งน่ารำคาญมาก
ฉันคิดว่าคนที่ควรอ่านบทความแบบนี้คือผู้ตรวจประเมินที่ทำ security audit
ตราบใดที่เกณฑ์ที่คนเหล่านี้คาดหวังยังไม่เปลี่ยน หลายบริษัทก็ยังต้องเดินตามนโยบายโง่ ๆ ที่อ้างว่าเป็นมาตรฐานอุตสาหกรรมแต่ใช้จริงแล้วไม่สมเหตุสมผล
โดยเฉพาะบริษัทขนาดเล็กในบางสายงานที่ยังต้องได้คะแนนสูงจาก security audit จึงต้องนำนโยบายความปลอดภัยที่ไร้ประโยชน์จำนวนมากมาใช้
ตอนนี้เราถูกบังคับใช้มาตรการความปลอดภัยอย่างน้อย 6 อย่างที่รู้กันอยู่แล้วว่าแทบไม่ช่วยอะไร และผู้ตรวจประเมินก็ยังไม่ค่อยยอมเปลี่ยน
ตอนรับการตรวจ SOC2 ฉันเอาแนวทางของ NIST ไปยื่นให้ดูอย่างต่อเนื่อง
ถ้าแสดงลิงก์ให้ดู ส่วนใหญ่สุดท้ายพวกเขาก็ยอมรับเกณฑ์ของ NIST
ทั้ง Apple และ Microsoft ต่างก็รองรับการตั้งค่าสำหรับองค์กรที่ให้ทีมความปลอดภัยของบริษัทปิดตัวเลือกอย่าง “จดจำอุปกรณ์ของฉัน” หรือ “เชื่อถืออุปกรณ์นี้” ได้
ผู้ตรวจประเมินหรือ CISO (Chief Information Security Officer) มักตรวจแบบยึด checklist เป็นหลัก ดังนั้นสิ่งสำคัญจริง ๆ จึงไม่ใช่ว่าความปลอดภัยดีขึ้นหรือไม่ แต่เป็นการผ่านการตรวจให้ได้
การตั้งค่าแบบนี้มีแต่เพิ่มความไม่สะดวกให้ผู้ใช้ และในโลกความจริงกลับยิ่งทำให้ความปลอดภัยแย่ลง
ฉันคิดว่า Microsoft ทำลายเกมบน PC ด้วยวิธีแบบนี้เหมือนกัน
พอรู้ว่าเวลาเปิดเกมอย่าง Minecraft หรือ Master Chief Collection แล้วจะมีหน้าต่างให้ยืนยันตัวตนโผล่มาแบบไม่มีปี่มีขลุ่ย ก็เลยผัดวันประกันพรุ่งไม่อยากเล่น
เพราะความไม่สะดวกแบบนี้ ฉันถึงกับปิด 2FA (การยืนยันตัวตนสองขั้นตอน) ในบัญชีไปเลย
นี่มันก็แค่เกม ไม่ใช่การยืนยันธุรกรรมธนาคาร อยากให้ปล่อยให้เล่นเกมอย่างสนุกเฉย ๆ ได้สักที
พักหลังได้ยินว่ามีฟีเจอร์สแกน QR code เพื่อยืนยันตัวตนแล้ว แต่ก็ยังรู้สึกว่าคนที่ออกแบบระบบแบบนี้ห่างไกลจากประสบการณ์ผู้ใช้จริงมาก
มีจุดหนึ่งที่แทบไม่ได้ถูกพูดถึงในบทความ
ฉันมองว่า UX (ประสบการณ์ผู้ใช้) ที่แย่สามารถกลายเป็นช่องโหว่ด้านความปลอดภัยได้ในตัวเอง
ถ้าระบบทำตัวไม่สมเหตุสมผลเป็นปกติอยู่แล้ว เวลาเกิดปัญหาจริง ผู้ใช้ก็มีโอกาสสูงที่จะไม่ทันสังเกตเห็นความเปลี่ยนแปลงหรือพฤติกรรมผิดปกติ
ตัวอย่างเช่น ถ้ามีหน้าต่างขอรหัสผ่านเด้งบ่อยเกินไป คนก็จะกรอกแบบอัตโนมัติด้วยความเคยชิน และในสถานการณ์แบบนั้นก็จะกรองความเสี่ยงอย่าง phishing ได้ยาก
อีกทั้งถ้า OS จัดการโปรแกรม startup หรือโค้ดน่าสงสัยที่รันอยู่เบื้องหลังไม่ได้ การนำไปใช้ในทางที่ผิดก็ยิ่งง่าย
ปัญหาอีกอย่างคือผู้เชี่ยวชาญด้านความปลอดภัยทั่วไปแทบไม่คำนึงถึง “จิตวิทยามนุษย์” ในฐานะตัวแปรสำคัญ และทุกอย่างก็มักถูกออกแบบโดยยึด checklist หรือมุมมองของบริษัทเป็นหลัก
ทั้งที่เป็นความผิดพลาดที่ป้องกันได้ด้วยการออกแบบผลิตภัณฑ์ที่เหมาะสม แต่ผู้ให้บริการผลิตภัณฑ์และบริการกลับกระตือรือร้นกับการเปลี่ยนแปลงด้านกฎระเบียบมากกว่าผู้บริโภค จึงทำให้การปรับปรุงไม่ค่อยเกิดขึ้น
ดังนั้นโดยรวมแล้วฉันคิดว่าการคุมเข้มกฎระเบียบช่วยให้ความปลอดภัยดีขึ้นจริง แต่ในมุมบริษัทกลับเกิดสถานการณ์ประหลาดที่ไม่มีใครอยากให้มีการกำกับดูแลผลิตภัณฑ์หรือบริการของตัวเองมากขึ้น
ระบบที่ขอให้ยืนยันตัวตนซ้ำบ่อย ๆ ไม่ได้ช่วยเพิ่มความปลอดภัยอย่างมีนัยสำคัญ (ยกเว้นกรณีที่ตั้งอายุหมดอายุยาวมากบางแบบ)
ถ้าเป็นระบบยืนยันตัวตนที่ดี สิ่งสำคัญคือความสามารถในการดึงสิทธิ์กลับได้ทันทีผ่านการหมดอายุของ session หรือการจัดการ session แบบชัดเจน
ในโลกจริง “ความหน่วง” ระหว่างเวลาที่สั่งเพิกถอนสิทธิ์ของ session กับเวลาที่ session นั้นหมดอายุสมบูรณ์จนเสียสิทธิ์เข้าถึงทั้งหมด มีความสำคัญมากกว่ารอบการยืนยันตัวตนซ้ำเสียอีก
และเรื่องนี้ยิ่งซับซ้อนขึ้นเมื่อสถาปัตยกรรมการยืนยันตัวตนและระบบประกอบมีจำนวนมาก
เพราะแบบนั้นจึงต้องมี refresh token
ตัว token จริงจะหมดอายุเป็นระยะ แต่แยกต่างหากด้วยการให้สิทธิ์ client สามารถขอโทเค็นใหม่ได้
การเพิกถอน token จึงควบคุมได้ด้วยการบล็อกไม่ให้สร้าง token ใหม่
ฉันก็คิดคล้ายกัน
ที่บริษัทเราใช้การยืนยันตัวตนแบบสองขั้น
วันหนึ่งจะล็อกอินเข้า keycloak ผ่าน ADFS + MFA แค่หนึ่งถึงสองครั้ง และระบบส่วนใหญ่ก็ใช้ keycloak เป็น OIDC provider โดยมีการรีเฟรช token ทุก 10~15 นาที
ดังนั้นโดยมากจึงต้องผ่านขั้นตอนยืนยันตัวตนที่ยุ่งยากแค่วันละครั้ง และถ้าจำเป็นก็สามารถตัดการเข้าถึงบริการที่อยู่หลัง VPN ได้ทั้งหมดภายใน 15 นาที
ข้อดีคือเวลานำไปใช้จริง ความเปลี่ยนแปลงเหล่านี้แทบไม่รบกวนการใช้งานปกติเลย
สิ่งที่ต้องทำเป็นระยะไม่ใช่การยืนยันตัวตนใหม่ แต่เป็นการรีเฟรช token เดิม
ควรแยกเวลาหมดอายุของ authentication กับ authorization ออกจากกัน
ถ้าบังคับให้ยืนยันตัวตนบ่อย ๆ คนก็จะยิ่งหาทางเลี่ยง
ไม่ว่าจะเป็นเขียนรหัสผ่านใส่กระดาษ เก็บไว้ใน Google Docs เอา Arduino+เซอร์โวมอเตอร์ไปต่อกับ Yubikey ส่งต่อ SMS ไปยังอีเมล หรือส่งรหัส TOTP ผ่าน Wechat สารพัด “วิธีแก้ขัด” ก็จะเกิดขึ้น
สุดท้ายแล้ว ยิ่งนโยบายการยืนยันตัวตนที่ไม่สะดวกเข้มงวดมากขึ้น ผู้ใช้ก็ยิ่งหาวิธีเลี่ยงที่ไม่ปลอดภัยมากขึ้นเพื่อให้ใช้งานคอมพิวเตอร์ได้ตามต้องการแม้เพียงเล็กน้อย
ในบทความมีข้อความทำนองว่า “ตอนนี้ OS ส่วนใหญ่ปลดล็อกด้วยลายนิ้วมือหรือใบหน้าได้แล้ว จึงไม่มีเหตุผลที่จะไม่ล็อกหน้าจอเวลาลุกจากโต๊ะ” แต่ในความเป็นจริงเรื่องนี้ใช้ได้กับ workstation (เดสก์ท็อปพีซี) อย่างจำกัดมาก
ตลอด 30 ปีที่ฉันทำงาน support ภาคสนาม ฉันเคยเห็นเดสก์ท็อปที่มีเครื่องสแกนลายนิ้วมือแค่เครื่องเดียวเท่านั้น
แทบไม่มีกล้องด้วยซ้ำ จนใน PC ของ 5 สาขาที่ฉันดูแลอยู่ตอนนี้ มีเครื่องที่มีกล้องไม่ถึง 2%
การยืนยันด้วยใบหน้ายังมีปัจจัยที่ทำให้ผู้ใช้รู้สึกไม่สบายใจเพิ่มขึ้นอีก
ทุกวันนี้เรามีความไม่ไว้วางใจต่อการสแกนใบหน้าแบบไม่ขอความยินยอมหรือทำอย่างลับ ๆ อยู่แล้ว (เช่น กล้องวงจรปิด โรงเรียน/บริษัท/ตำรวจ ฯลฯ) และฉันคิดว่าความอึดอัดจากเรื่องนี้ก็สมเหตุสมผล
แม้อุปกรณ์จะเป็นของฉันเอง แต่บริษัทซอฟต์แวร์ก็มักออกแบบระบบแบบล้ำเส้นอำนาจของฉันโดยแทบไม่มีขอบเขตทางศีลธรรมจริง ๆ
เพราะงั้นฉันจึงคิดว่า security key เหมาะกับ workstation มากกว่า
นโยบายความปลอดภัยของ IT ในอุตสาหกรรมนี้เป็นเหมือนแนวคิด “ไม่มีใครถูกไล่ออกเพราะเลือกซื้อ IBM” คือทุกคนแค่ทำตามที่คนอื่นทำ
ไม่สำคัญว่าระบบจะพังหรือไม่ สิ่งสำคัญกว่าคือได้ทำ “ตามที่หนังสือบอก”
แต่หนังสือเล่มนั้น (มาตรฐาน) กลับเป็นของที่แย่มากและถูกสร้างขึ้นเมื่อ 30 ปีก่อน
ดังนั้นถ้าจะโน้มน้าวผู้รับผิดชอบด้านความปลอดภัยข้อมูลว่าไม่จำเป็นต้องเปลี่ยนรหัสผ่านทุก 3 เดือน ก็ต้องใช้พลังงานมหาศาล
ที่บริษัทลูกค้ารายหนึ่ง ทุกระบบตั้ง session timeout ไว้ 30 นาที
เดิมทีก็ไม่ชอบ Jira อยู่แล้ว แต่พอจะเปิด ticket ดูแต่ละครั้งต้องล็อกอินใหม่ทุกครั้ง มันยิ่งน่ารำคาญมาก
สุดท้ายก็วนไปนั่งอ่าน Hacker News แทนที่จะทำงาน
อย่างน้อยทุกวันนี้บริการส่วนใหญ่ก็ยังเก็บงานที่ทำไว้ในแคชให้ ซึ่งถือว่ายังดี
ชื่อของ SSO ก็คือ ‘SINGLE sign on’ แต่ในความเป็นจริงกลับบังคับให้ยืนยันตัวตนซ้ำไม่รู้จบ
ไม่เข้าใจว่าทำไมฉันต้องเห็นข้อความให้ยืนยันตัวตน SSO วันละหลายร้อยครั้ง
ถ้าเป็นมือถือก็พอเข้าใจได้เพราะมีความเสี่ยงต่อการสูญหายหรือถูกขโมย แต่เดสก์ท็อปนั้นยังมีกรณีที่เป็นคอมพิวเตอร์สาธารณะ (เช่น ห้องสมุด) และคนก็ยังชอบลุกไปโดยไม่ล็อกเอาต์ ซึ่งผู้ใช้จำนวนมากยังไม่ตระหนักถึงจุดนี้
เท่าที่ฉันจำได้ ความหมายของ SSO คือการล็อกอินหลายระบบด้วย ID เดียว ไม่ได้หมายความว่าการล็อกอินจะเกิดขึ้นเพียงครั้งเดียวเท่านั้น