เมื่อเร็วๆ นี้มีข่าวดีว่า Google จะเปิดใช้ 2-factor authentication เป็นค่า Default แล้ว ถือว่าเป็นข่าวดีครับ เพราะนั่นจะช่วยให้ผู้ใช้งานมีความปลอดภัยจากการโดนแฮกผ่านการเดารหัสผ่าน หรือ โดนหลอกเอารหัสผ่านได้มากขึ้นอีกระดับ และผมก็ค่อนข้างสนับสนุนให้ทุกคนหันมาใช้กันนะครับ แต่ผมก็ยังรู้สึกว่าหลายคนยังไม่เข้าใจว่า 2-factor authentication (2FA) หรือบางทีเจอแบบ Multi-factor authentication (MFA) มันคืออะไรกันแน่ แล้วจะมาช่วยให้เราปลอดภัยได้ยังไง บล็อกตอนนี้เลยจะมาอธิบายให้ฟังกัน
2-factor หรือ Multi-factor authentication คืออะไร?
ในยุคที่การปกป้องตัวคุณเองจากการโดนแอบเข้ามาใช้งานด้วย Username กับ Password มันไม่เพียงพอแล้ว เขาได้เพิ่มเทคนิคในการยืนยันตัวตนเพิ่มเข้าไปอีกอย่าง นั่นก็คือ การเพิ่มขึ้นตอนการยืนยันตัวตนจากข้อมูลอีกแหล่งที่จะช่วยให้แน่ใจได้ว่า คุณคือเจ้าของบัญชีนั้นจริงๆ ซึ่งเทคนิค 2-factor authentication ที่นิยมใช้กันนั้นก็มี
• การรับรหัสผ่านแบบใช้ได้ครั้งเดียว (OTP) จาก SMS หรือ อีเมล มาที่โทรศัพท์ หรือ ที่อยู่อีเมลที่เราได้กำหนดเอาไว้ตอนตั้งค่า ซึ่งมีหลายๆ บริการออนไลน์ที่ใช้แนวทางนี้ รวมถึงธนาคารเองก็ใช้แบบนี้เช่นกันเวลาที่จะมีการทำธุรกรรม แต่วิธีการใช้
• การกดยืนยันตัวตน จากแอปของผู้ให้บริการ ที่ได้ล็อกอินเอาไว้อยู่ก่อนหน้าแล้ว เทคนิคนี้เท่าที่เห็นก็มี Google และ Facebook ที่ใช้อยู่ครับ
• การกดยืนยันตัวตน หรือ รับรหัสผ่านแบบใช้ได้ครั้งเดียว ผ่านแอป Authenticator ซึ่งเป็นเทคนิคที่ใช้กันอยู่ทั่วไป คือ ใช้แอปจำพวก Authenticator ซึ่งเมื่อทำการตั้งค่าเชื่อมโยงกับบัญชีแล้ว จะทำการรัน TOTP (Time-based OTP) ให้เราไว้ใช้กรอกเพื่อยืนยันตัวเอง อันนี้เป็นเทคนิคที่ใช้บ่อย Google, Microsoft, Facebook, WordPress และผู้ให้บริการอีกหลายต่อหลายรายเขาก็ใช้กัน หรือ ผู้ให้บริการเองมีแอปจำพวก Authenticator เอาไว้ให้ใช้กดยืนยันตัวตนก็ได้ เช่น Microsoft, Salesforce อะไรแบบนี้

• การยืนยันตัวตนด้วยฮาร์ดแวร์ ซึ่งอาจจะเป็น USB key ที่รองรับมาตรฐาน U2F เช่น YubiKey ที่ผมเคยรีวิวไป หรือการจับคู่กับอุปกรณ์บลูทูธเช่น สมาร์ทวอทช์ สมาร์ทโฟน แท็บเล็ต อะไรพวกนี้ ซึ่งมีหลายๆ ค่าย ที่รองรับวิธีการยืนยันตัวตนแบบนี้เช่นกัน ไม่ว่าจะเป็น Google, Facebook, Salesforce ฯลฯ

ซึ่งในหลายกรณี หากผู้ให้บริการเขาใหญ่จริง และมีผู้ใช้งานจำนวนมากจริง เขาจะมีให้เลือกใช้วิธีการยืนยันตัวตนได้หลากหลายแบบไปเลย ซึ่งผู้ใช้งานจะเลือกใช้แค่แบบใดแบบหนึ่ง หรือหลายๆ แบบก็ได้ ตามสะดวก เช่น อาจจะเลือกให้สามารถยืนยันตัวตนได้ทั้งจาก Authenticator, U2F USB Key หรือ รับ SMS อย่างใดอย่างหนึ่งก็ได้ เป็นต้น และในบางบริการ อาจจะมีการยืนยันตัวตนจากพิกัดที่อยู่ของเราด้วยซ้ำ (Localtion-based authentication) หรือที่บางทีเรียกว่า Geofencing แต่เป็นอะไรที่ไม่ค่อยได้เห็นนะครับ เพราะส่วนใหญ่มักจะใช้กันในหมู่ผู้ใช้งานระดับองค์กร ที่เอาไว้ป้องกันไม่ให้ระบบถูกล็อกอินได้นอกสถานที่ที่กำหนด ซึ่งเหมาะกับอะไรก็ตามที่ต้องการความมั่นคงปลอดภัยระดับสูงมากๆ
แล้ว 2-factor หรือ Multi-factor authentication มันช่วยเรื่องความมั่นคงปลอดภัยได้ยังไง?
ช่วยได้สิครับ เพราะอย่างน้อยที่สุด ก็ช่วยให้หมดห่วงเรื่องการโดนลักลอบเข้ามาใช้งานจากการโดนเดารหัสผ่าน หรือโดนหลอกเอารหัสผ่านไป เพราะ ณ ปัจจุบันนี้ รหัสผ่าน เป็นการป้องกันที่ค่อนข้างอ่อนแอมากแล้ว เพราะว่า
• ตัวผู้ใช้งานเองมีการตั้งรหัสผ่านที่คาดเดาง่ายเกินไป และปัจจุบันคอมพิวเตอร์ก็มีประสิทธิภาพในการประมวลผลสูงขึ้น อินเทอร์เน็ตก็มีความเร็วสูงขึ้น การโจมตีแบบ Brute force หรือ เดารหัสผ่านไปเรื่อยๆ หรือการเดารหัสผ่านด้วยดิกชันนารี (Dictionary attack) ก็เลยทำได้ง่ายมากขึ้น และมีโอกาสประสบความสำเร็จมากขึ้น
• ตัวผู้ใช้งานตกเป็นเหยื่อของการทำ Phishing คือ โดนหลอกเอารหัสผ่านไปจากการหลอกให้ผู้ใช้งานเป็นผู้กรอกให้เอง โดยเทคนิคที่สุดคลาสสิกคือ ส่งอีเมลไปหาเหยื่อ โดยปลอมตัวว่ามาจากผู้ให้บริการ แล้วหลอกให้เหยื่อกดลิงก์เพื่อไปล็อกอินเข้าระบบ โดยจะมีการทำเว็บไซต์ปลอมที่มีหน้าตาละม้ายคล้ายของจริง เพื่อให้หลงเชื่อ ซึ่งวิธีนี้ได้ผลดีกว่าการที่ต้องไปนั่งเดาหรือสุ่มรหัสผ่านอีกครับ แถมไม่ต้องลงทุนลงแรงเยอะมากด้วย และโจมตีคนเป็นจำนวนมากได้พร้อมๆ กันอีกด้วย

การมาของ 2-factor authentication หรือ Multi-factor authentication ก็จะช่วยในกรณีที่เราโดนขโมยรหัสผ่านไปได้แบบนี้แหละ คือ ถ้าผู้ไม่หวังดี มันไม่มีแอป Authenticator หรือ อะไรก็ตามที่เราใช้ในการยืนยันตัวตนของเราอีกชั้น ต่อให้มันรู้ Username หรือ Password ของเราไป มันก็ล็อกอินเข้าไปไม่ได้ครับ อย่างเคสล่าสุดนี่เลย พี่ทนายวิรัช ที่ผมเคยแนะนำเรื่องการใช้ 2FA ไปก่อนหน้า เพราะว่าพี่เขาได้ Verified badge มาจากทาง Twitter แล้วช่วงนั้นมันมีพวกแฮกเกอร์เน้นโจมตีผู้ใช้งานในกลุ่มที่ได้ Verified badge เพราะจะสามารถเอาบัญชีไปใช้ปล่อยข้อมูลเท็จต่อได้ แต่จะมีความน่าเชื่อถือเพราะคนจะมองว่า Twitter ได้ตรวจสอบยืนยันมาแล้วว่าเป็นบุคคลจริง พอเขาทำคลิกว่าหากโดนแฮกช่อง YouTube หรือ Facebook ขึ้นมา ในเชิงกฎหมายควรทำอย่างไร เขาก็โดนพยายามแฮกในทันทีครับ แต่รอด เพราะมี 2FA
และโดยส่วนตัวของผมเอง บล็อกของผมก็เคยมีมือดีพยายามล็อกอินมาหลายหนเช่นกันครับ แต่ก็เข้ามาไม่ได้ เพราะดันติด 2-factor authentication ที่ผมได้ทำเอาไว้
แต่ใช้ 2-factor หรือ Multi-factor authentication ต้องระวังเช่นกัน
แต่การใช้ 2-factor หรือ Multi-factor authentication ก็มีข้อควรต้องระวังที่สำคัญอย่างนึงนะครับ นั่นคือ ถ้าคุณเกิดทำไอ้สิ่งที่ใช้ยืนยันตัวตนของคุณหายไป ไม่ว่าจะเผลอลบแอป ทำสมาร์ทโฟนหาย ทำ U2F USB Key หาย ล็อกอินเข้าเช็กเมลที่ใช้รับ OTP ไม่ได้ นี่คือบรรลัยเลยนะครับ ถ้าเป็นบริการสาธารณะ เราไปใช้ของเขาฟรีๆ เนี่ย ผู้ให้บริการแทบไม่อยากจะเข้ามาช่วยเหลือใดๆ เราเลยนะครับ ฉะนั้นต้องระวังในเรื่องนี้ครับ

แต่ปกติแล้ว เวลาที่บริการใดก็ตามที่เปิดให้ใช้ 2-factor หรือ Multi-factor authentication เขาก็จะมี “วิธีการสำรอง” สำหรับใช้ล็อกอินเวลาที่เราเกิดมีปัญหาในการยืนยันตัวตน ซึ่งโดยมากก็จะเป็น Recovery codes ที่ให้เราไปเซฟมาเก็บเอาไว้ มักจะมี 5-10 โค้ดให้เก็บไว้ โค้ดพวกนี้จะใช้ได้ครั้งเดียว
แต่ขั้นต่ำที่สุด ปกติถ้าเขาให้ทำการยืนยันตัวตนผ่าน Authenticator ได้ เขาก็จะให้เราเพิ่มการยืนยันตัวตนผ่าน SMS หรือผ่านอีเมลได้ด้วย แต่ไม่เขาจะให้ทำอะไรได้บ้าง ที่ผมแนะนำก็คือการตั้งค่าสำหรับการยืนยันตัวตนอย่างน้อยสองวิธีครับ (เช่น ผ่าน Authenticator กับ SMS อะไรแบบนี้)
น่าเสียดายที่ 2-factor หรือ Multi-factor authentication ยังไม่มีให้ใช้ในหลายบริการ
ใช่ครับ เป็นเรื่องที่น่าเสียดายที่ไม่ใช่ทุกบริการออนไลน์เขาจะมีให้ใช้ 2-factor authentication (ไม่ต้องคิดถึง Multi-factor authentication เลยด้วยนะ) แต่ผมก็ยังอยากย้ำว่า สำหรับใครก็ตามที่ใช้บริการใดๆ ที่เขามีเปิดให้ใช้ 2-factor หรือ Multi-factor authentication ได้ โดยเฉพาะบริการที่บ่งชี้ถึงตัวตนของเราได้ (เช่น บริการอีเมล หรือ โซเชียลมีเดียต่างๆ) ก็ควรจะต้องเปิดเอาไว้นะครับ เพื่อป้องกันตนเอง