มาตราฐาน MFA ใน Authenticator

มาตราฐาน MFA ที่ใช้เป็นแบบตัวเลขเปลี่ยนแปลงไปเรื่อย ๆ ตามเวลาเดินหน้า นั้นมีหลายมาตราฐาน แต่ที่นิยมใช้มี 2 ตัวคือ TOTP และ HOTP

  1. TOTP (TOTP: Time-Based One-Time Password Algorithm) RFC 6238
  2. HOTP (HOTP: HMAC-based one-time password) RFC 4226

โดย Google Authenticator และ Microsoft Authenticator รองรับทั้ง 2 รูปแบบ และในความเป็นจริง Authenticator ทางเลือกอีกหลาย ๆ เจ้าก็รองรับ TOTP และ HOTP กันเป็นปรกติ เพราะเป็นมาตราฐานกลางอยู่แล้ว ฉะนั้นจึงไม่แปลกที่เราสามารถใช้งานข้ามยี่ห้อกันได้

รายการแอปทางเลือกเท่าที่ทราบ

  • Authy (รองรับ sync และ backup/restore)
  • FreeOTP (opensource ไม่รองรับ backup/restore)
  • FreeOTP+ (opensource ที่ folk จาก FreeOTP เพื่อให้รองรับการ backup/restore)
  • 1Password (เสียเงิน และรองรับ field OTP)
  • LastPass (เสียเงิน และรองรับ field OTP)

จริง ๆ มีแอปอีกหลายตัวลองศึกษาเพิ่มเติมและดูความเสี่ยงกันได้ โดยดูว่ารองรับ TOTP/HOTP ตามาตราฐานหรือไม่เป็นอันดับแรก

สำหรับแอป Authenticator ควรจะรองรับการ backup/restore ได้หรือไม่ ก็ยังถกเถียงกันอยู่ต่อไป แต่ผู้ใช้งานต้องยอมรับคามเสี่ยงเพิ่มเติมในการรั่วไหลของข้อมูลเพิ่มเติมหากสำรองข้อมูลอย่าง QR code หรือ secret key ของ TOTP/HOTP ไว้เพื่อเรียกคืนค่าเดิมหากต้องเปลี่ยนโทรศัพท์แล้วเจน TOTP ใน Authenticator ใหม่

วิธีที่ผู้ให้บริการมีเป็นทางเลือกคือ backup code ตัวนี้เป็นท่าพื้นฐาน เราก็เอา backup code การบันทึกเก็บไว้ในที่ปลอดภัย และหวังว่าจะไม่ลืมหรือโดนขโมย ซึ่งวิธีนี้แม้จะคล้ายกับการเก็บ QR code หรือ secret key ในข้างต้น แต่แตกต่างตรง backup code ที่ได้ จะใช้ได้แค่ครั้งเดียว เมื่อใช้ไปแล้ว code ที่เราเลือกใช้ จะใช้ซ้ำอีกไม่ได้ และหากรั่วไหลสามารถขอสร้างใหม่ได้ง่ายกว่ามาก

อีกวิธีก็คือใช้ Security Key เป็นอุปกรณ์อีกตัว มันสามารถเก็บ TOTP/HOTP และเป็น FIDO U2F แทนก็ได้ เพราะปรกติการเปิดใช้งาน MFA มักจะมีทางเลือกให้อย่างน้อย 2 ทางในการใช้งาน MFA อยู่เสมอ หรือถ้ายินยอมรับความเสี่ยงที่จะใช้ตัวเดียวก็จะแจ้งเตือนไว้

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