เมื่อ Google Authenticator ไม่มี Backup by Design

Teerayut Hiruntaraporn
4 min readMar 25, 2022

--

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

ปล. อาจจะมีความเห็นส่วนตัว อยู่ในหลายเรื่องในเนื้อหานี้ ก็จะพยายามเขียนไว้ว่าเป็นความเห็นส่วนตัวนะครับ

เรื่องของ 2 Factor Authentication

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

Cr Google Play

อย่างไรก็ตามมันก็หมายถึงพวกนี้ได้เช่นเดียว กัน

ทั้งนี้ ถ้าดูตามชื่อก็คือ 2-Factor Authentication(2FA) หรือในปัจจุบันจะขยายเป็น Multi-Factor Authentication (MFA) ก็ยังมีความหมายตรงตัวคือ

การยืนยันตัวตนโดยใช้ สอง​ปัจจัย

(หรือหลายปัจจัยถ้าเป็น MFA)

จุดสำคัญคือคำว่า “ปัจจัย” เขาไม่ได้ใช้คำว่า “ครั้ง” นั่นหมายถึง ถ้าไปเขียนโปรแกรม ให้ยืนยันตัวตนโดยการกรอก password 2 ครั้ง นี่ไม่ใช่ 2FA

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

  • สิ่งที่คุณรู้ เช่น รหัสผ่าน
  • สิ่งที่คุณมี เช่น โทรศัพท์,โค้ดลับ, บัตรเบ่ง, Certificate, Recovery Code
  • สิ่งที่คุณเป็น เช่น ลายนิ้วมือ ม่านตา

ดังนั้น เหตุการณ์ต่างๆ เหล่านี้ ล้วนเป็น 2 FA ทั้งสิ้น

  • กรอก password และรับ OTP ผ่าน SMS เพื่อมากรอกรหัสต่อ
  • ไปใช้บัตรเครดิตที่ต่างประเทศ แล้วต้องกด Pin Code
  • การแสกนลายนิ้วมือ แล้วใช้ RFID ในการเปิดประตู
  • การกรอก Password และ รหัส Recovery ที่พิมพ์ออกมาเก็บไว้เผื่อฉุกเฉิน

ทางถอยกับเส้นทางสำรอง

เมื่อทุกๆ คนเข้าใจว่า 2FA มันใหญ่กว่า Google Authenticator และมีหลายวิธี สิ่งที่จะต้องแจ้งอีกทีคือ ทุก Platform จะมีทางถอยให้เสมอ ในกรณีที่วิธีการหนึ่งใช้ไม่ได้

อย่างในตัวอย่างนี้ ผมเปิดช่องสำหรับทำ 2FA บน Google ไว้ 7 ท่า นั่นแปลว่า แม้ Google Authenticator ผมจะหาย หรือ Security Key ผมหาย ผมก็ยังมีทางหนีทีไล่มาเข้า Google ได้อยู่ดี อีก 5 เส้นทาง

อย่างไรก็ตามในยามปกติ ระบบก็มักจะเลือกเส้นทางที่น่าเชื่อถือที่สุดในการทำ 2FA อยู่แล้ว ซึ่งอย่างกรณีของผมก็จะใช้ Security Key ซึ่งไม่มี Backup หนักกว่า Google Authenticator อย่างแน่นอน

CR: Google Login

อันนี้เป็นตัวอย่างของ Facebook ในกรณีที่เราไม่ได้ใช้ Security Key มันก็ยังเปิดทางถอยในโดยสามารถกดได้ที่ “Use a different method”

CR: Facebook
CR: Facebook

ถึงตรงนี้ ถ้าเราใช้ระบบที่มันไม่มีทางหนีทีไล่แบบนี้ แนะนำให้เพิ่ม แต่ถ้า Platform มันไม่มีให้จริงๆ ควรจะย้ายครับ 555

และในฐานะคนทำ Platform ยังไงก็ต้องมีทางถอยให้ลูกค้านะครับ ไม่ใช่บังคับวัดใจอยู่ที่ Authenticator อยู่ตัวเดียว คนเราผิดพลาดได้ ต้องคาดคะเนเผื่อตรงนี้ด้วยครับ

อย่างไรก็ตาม แนวทางถอยมันก็ขึ้นกับความเสี่ยงของแต่ละ Platform บาง Platform อาจจะไม่ยอมรับบางท่าที่เชื่อว่าไม่ปลอดภัยก็สามารถทำได้ครับ

Google Authenticator

กลับมาที่เนื้อหาหลักได้ หลังจากพาไปทัวร์เกินงาม

Google Authenticator คือโปรแกรมที่ช่วยในการทำ 2FA นั่นแหละครับ อาจจะมีรายละเอียดเพิ่มเติมว่า วิธีการที่ Authenticator ใช้เขาเรียกว่า Time-based One-Time Password (TOTP) ตามมาตรฐาน RFC 6238 และ One-Time Password แบบ Counter (Technically เรียกว่า HOTP RFC 4226 แต่ขอไม่กล่าวถึง)​

ความน่าสนใจของวิธีนี้ที่มัน Popular ขึ้นมาแล้ว หลายที่สนับสนุนให้ใช้มากกว่า การใช้ SMS คืออะไรกัน

คำตอบคือ TOTP เป็นวิธีการคณิตศาสตร์ครับ หลังจากที่เราทำการ Setup ค่า Key อะไรบางอย่าง ระหว่าง Service กับเราแล้ว วิธีการทางคณิตศาสตร์ จะช่วยคำนวณค่า Code ที่ต้องกรอก ไปที่บริการนั้นๆ โดยไม่จำเป็นต้องมีการส่งค่าใดๆ มาตามช่องทางปกติให้เราเลย

นั่นแปลว่า เมื่อเทียบกับ SMS ซึ่งส่งรหัสทางอากาศ

วิธีการนี้ แทบจะไม่มีช่องในการ Hijack รหัส จากภายนอกเลยครับ

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

ซึ่งจะเห็นว่า ในการที่จะ Code โดนขโมยได้ โอกาสจะอยู่แค่เพียง จังหวะ Setup และจังหวะ พิมพ์ Code ส่งไปให้ Service ซึ่งมีเวลาทำการน้อยมาก

แต่ทั้งหมดทั้งสิ้น แม้หลักการจะดีเพียงใด ก็ยังแพ้ Human Error อยู่ดี ดังนั้น ความเสี่ยงสูงสุด ก็จะเป็น Social Engineering เช่น หลอกให้กรอกโค้ด, การทำ Phishing , Pharming หรืออื่นๆ ในทำนองนี้

และด้วยเหตุผลข้างต้น By Design ของ Google Authenticator จึงไม่มีการ Export หรือ Backup ข้อมูลนั่นเอง

เหตุผลในการไม่มี Function Export ข้อมูล รวมถึงการ Backup

ถ้าเราเข้าไปดูใน Source Code ของ Google Authenticator ที่อยู่ใน Github เราจะเห็น Discussion ที่สำคัญ ในช่วง ปี 2015 เกี่ยวกับการ Request Export Feature ใน Issue ที่ #23

ซึ่งในการ Discussion นั้น มี Message ที่น่าสนใจในเชิง Security ต้องตอบให้ได้ นั่นคือ

can someone copy my two-factor credentials?

แล้วการ Copy จะทำให้เกิดอะไรขึ้นบ้าง

มันคือการเปลี่ยน จาก Something you have ให้ใกล้เคียงกับ Something you know

เมื่อใดก็ตามที่เข้าใกล้เคียง Something you know แปลว่า มัน Duplicate ได้

ผลคือทำให้ Factor ของ TOTP ไม่มีความหมายอะไรต่อไป

อย่างไรก็ตาม ในช่วงหลัง ก็เหมือนจะมี Feature Export ให้เพิ่มแล้ว ที่น่าสังเกตคือ ก็ยังจำเป็นต้องมีลักษณะเหมือนๆกับ Face-2-Face ระหว่างอุปกรณ์ แล้วก็มีการยืนยันคตัวตนของเจ้าของ ด้วย

ข้อขัดแย้ง Experience กับ Security

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

บาง Application ก็พยายาม Compromised ในการทำ Back Up อาจจะด้วยการทำ Encryption อะไรเพิ่มเติม ที่คิดว่าเพียงพอสำหรับความปลอดภัย เช่น Authy หรือ Microsoft Authenticator ซึ่งก็ต้องยอมรับว่า App เหล่านี้ เอาใจผู้ใช้มากกว่า แต่ก็ต้องแบกรับความเสี่ยงเพิ่มอีกหน่อยนึง

ซึ่งตรงนี้เป็นจุดที่ผู้ใช้โปรแกรมต้องยอมรับความเสี่ยงนั้น ไป เพื่อที่จะใช้ Feature ที่ช่วยไม่ทำให้ชีวิตหนักมาก

คำแนะนำสำหรับผู้ใช้ และ Platform

สำหรับผู้ใช้งานนะครับ ส่วนใหญ่ Platform ที่ดี เขามีทางถอยให้อยู่แล้ว เปิดทางถอยให้ตัวเองด้วย เช่น เก็บ Recovery Code ไว้, สร้างช่องทางที่ปลอดภัยเพิ่ม เก็บลิสต์รายการที่ใช้ Authenticator ไว้ เผื่อในกรณีต้องเปลี่ยนเครื่อง ก็ Gen ใหม่ไปเลย ก็สามารถทำได้

สำหรับเรื่อง APP OTP เอาว่าไม่ว่าจะเปลี่ยนเป็น Authy , Microsoft Authenticator ก็ช่วยได้ในระดับหนึ่ง แต่มันก็อาจจะเกิด Worst-Case เช่น เกิดโชคร้ายสุดๆ Authy โดยอัดร่วงทั้งบาง ไอ้ที่ Backup ไว้หายไปจาก Cloud ชีวิตคุณก็จบ ดังนั้น ก็อย่าประมาท เผื่อทางถอยเช่นเดียวกันครับ

ส่วน Platform ต่างๆ ดู Persona ลูกค้าดีๆ ถ้าลูกค้าไม่ได้ Geek มากมาย เลือกไปทำคู่มือที่ใช้พวก Authy หรือ Microsoft Authenticator บ้างก็ได้ เพราะจริงๆ ลูกค้าส่วนใหญ่ก็ Setup ตามที่ Platform เขียนคู่มือไว้นั่นแหละ และสำคัญที่สุด ถ้ายังมีช่องทางที่ใช้กับ TOTP อย่างเดียว ทำช่องทางสำรองเพิ่มจะดีมากครับ

ส่วนตัว Google Authenticator ความเห็นส่วนตัวคือ อย่าไปคาดหวังเรื่อง Feature พวกนี้มาก ทั้งนี้เพราะ Position เขาไม่เหมือน Authy หรือ Microsoft Authenticator เรียกว่าอินดี้เลยก็ได้

ดูได้จากการที่เขาก็ไม่ได้สนใจผู้ใช้ว่าจะกด 1 รัวๆ เรื่องข้อมูลหายเวลาเปลี่ยนเครื่อง และทนมาจะ 10 ปี โดยไม่ได้รู้สึกหน้าไหม้อะไรขนาดนั้น ซึ่งปกติบริษัทที่ถ้าต้องการฐานลูกค้าเพิ่ม เขาคงปรับ Application ไปแล้วหล่ะ

--

--

Teerayut Hiruntaraporn
Teerayut Hiruntaraporn

No responses yet