multi-factor authentication (MFA) ของ Google account และ Microsoft account ไม่บังคับใช้หมายเลขโทรศัพท์มือถือเพื่อรับ OTP ผ่าน SMS

การเปิดใช้ multi-factor authentication (MFA) ของ Google account และ Microsoft account ตอนนี้ไม่บังคับว่าจะต้องใช้หมายเลขโทรศัพท์มือถือในการรับ OTP ผ่าน SMS แล้ว

โดยแนวทางอื่นๆ ในการทำ MFA คือ

  1. ใช้ TOTP ผ่าน Authenticator app
  2. ใช้การยืนยัน push notification ผ่าน Authenticator app (Google เรียก Google prompt)
  3. ใช้ backup code หรือ recovery code ผ่านการจดหรือบันทึกไว้ในที่ที่ปลอดภัย

ส่วนที่ต่างของ Microsoft account มีเพิ่มเติมให้คือ
– ใช้ alternative E-mail ในการรับ OTP ได้ด้วย (ของ Google ไม่มี)

ส่วนที่ต่างของ Google account มีเพิ่มเติมให้คือ
– ใช้ USB FIDO Universal 2nd Factor (U2F) มาใช้ร่วมกับการเข้าระบบ

สำหรับความสามารถ Sign in Without Password ผ่าน Authenticator ที่เป็นการกดยืนยันเข้าระบบโดยไม่ต้องใช้ password ใดๆ ผ่านตัวแอป Authenticator ของทั้งสองค่ายนั้น มีจุดที่แตกต่างคือ Microsoft account ยินยอมให้เปิด MFA ไปพร้อมๆ กันได้ แต่ถ้าเป็น Google จะไม่ยอม จะต้องเลือกอย่างใดอย่างหนึ่ง

สำหรับผู้ให้บริการค่ายอื่นๆ ก็มีแนวทางประมาณนี้เยอะขึ้น ซึ่งส่วนใหญ่จะใช้ backup code เป็นตัวทดแทนการรับรหัส OTP ผ่าน SMS

เหตุผลที่ถอด SMS ออกจากการรับ OTP เพราะช่องโหว่บนระบบ Signalling System No. 7 (SS7) ในระบบสื่อสารผ่านโทรศัพท์ที่สามารถถูกดังฟังได้ อ้างอิง (1), (2) และ (3)

multi-factor authentication ด้วย OTP ก็ไม่ได้ปลอดภัย 100% หากโดน intercept หมายเลขโทรศัพท์มือถือ

บริการต่างๆ ที่ให้เปิด multi-factor authentication มีจุดที่สำคัญที่มักจะให้เราจดจำ และตั้งค่าเพิ่มเติม นั้นคือ backup code และหมายเลขโทรศัพท์มือถือสำหรับรับ reset password หากตัว authenticator ใช้งานไม่ได้

แน่นอน backup code ซ่อนและเก็บได้ ตรงนี้น่าจะพออุ่นใจบ้างหากเก็บไว้ในที่ที่ลับมากๆ ส่วนหมายเลขโทรศัพท์มือถือนั้นแตกต่าง เพราะอาจโดน intercept ตัวเบอร์โทรศัพท์นั้นๆ แล้วนำ code ที่ได้จาก OTP ไปใช้งาน

ซึ่งเมื่อเร็วๆ นี้นักเคลื่อนไหวทางการเมืองถูก hack บัญชี Telegram โดยเกิดจากถูก intercept หมายเลขโทรศัพท์ เพื่อรับรหัส OTP สำหรับเข้าใช้งาน account แอพ Telegram ของเค้า ซึ่งเป็นสิ่งที่เกิดขึ้นได้จริงแล้ว

เพราะโดยปรกติ Telegram ไม่มีการให้ตั้งรหัสผ่านในครั้งแรก แต่ใช้การส่งรหัส OTP เพื่อยืนยันการใช้งานผ่านหมายเลขโทรศัพท์มือถือที่ลงทะเบียนไว้ อ้างอิง Is Telegram Really Safe for Activists Under Threat? These Two Russians Aren’t So Sure.

ทางแก้ที่ Telegram แนะนำ ณ ตอนนี้คือตั้งรหัสผ่านเพิ่มเข้ามาช่วยในการยืนยันตัวตน (ในเมนูของ Telegram มีให้ตั้ง) ทางแก้ไขนี้รวมไปถึง คำแนะนำที่ว่า ควรสื่อสารด้วย secret chat (end-to-end encryption) และตรวจสอบ fingerprints (encryption key) ของคนที่กำลังคุยด้วยเสมอ

จากเหตุการณ์ของ Telegram นี้ ก็กลับมาดูที่ประเทศไทยของเรา การออกซิมการ์ดใหม่ผ่านช่องทางที่มีการตรวจสอบไม่รัดกุม อาจจะเป็นช่องทางที่การใช้งาน multi-factor authentication ด้วย OTP นั้นมีจุดโหว่ และสร้างความไม่มั่นใจต่อหมายเลขโทรศัพท์ที่จะใช้งานควบคู่กับ multi-factor authentication ว่าจะอยู่รอดปลอดภัยได้มากแค่ไหน ตรงนี้เป็นสิ่งที่ผู้ให้บริการต้องตระหนักและช่วยเหลือผู้ใช้งานให้ได้รับความปลอดภัยสูงสุด

ต่อไปรหัสผ่านอาจจะไม่จำเป็นสำหรับทุกๆ เว็บ

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

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

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