Passkey อนาคตแห่งการล็อกอินไร้รหัสผ่าน

by lew
19 February 2023 - 18:46

ช่วงสองสามปีที่ผ่านมาปัญหาบัญชีถูกแฮกยังคงเป็นปัญหาใหญ่ของระบบความปลอดภัยจำนวนมาก แม้บริการต่างๆ จะพยายามต่อสู้กับการโจมตีบัญชีผู้ใช้ช่องทางต่างๆ ทั้งการเปิดการล็อกอินสองขั้นตอน หรือการตั้งกฎรหัสผ่านให้ยากขึ้นเรื่อยๆ แม้ว่า NIST จะบอกให้เลิกตั้งกฎไปแล้ว ขอแค่อย่าใช้รหัสที่เคยหลุดมาแล้วก็พอก็ตามที แต่ผลสุดท้ายเรายังเห็นผู้ใช้ตั้งรหัสผ่านซ้ำกันไปมา ไม่ยอมเปิดใช้ฟีเจอร์ล็อกอินสองขั้นตอนหากไม่ใช่บัญชีองค์กรที่บังคับ หรือหากบังคับก็จะเลือกช่องทางที่สะดวกที่สุด เช่น SMS แต่ปลอดภัยน้อยที่สุด

ปัญหาของรหัสผ่านนั้นมีสองประเด็นใหญ่ ข้อแรกคือคนร้ายอาจจะล่วงรู้รหัสผ่านไม่ว่าด้วยวิธีการใดก็ตาม เช่น ผู้ใช้ตั้งรหัสผ่านที่เดาได้ง่าย หรือผู้ใช้ตั้งรหัสผ่านที่ซ้ำกันไปทั้งหมด ทำให้เมื่อเจาะรหัสผ่านจากบริการใดๆ ก็เข้าใช้บริการอื่นๆ ได้ทันที ข้อที่สองคือคนร้ายอาจจะหลอกล่อให้ผู้ใช้ใส่รหัสผ่านกับเว็บปลอม, แอปปลอม, หรือแม้กระทั่งหลอกให้เหยื่อบอกทางโทรศัพท์หรือแชทเอาตรงๆ โดยปลอมตัวว่าเป็นเจ้าหน้าที่ที่เกี่ยวข้อง

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

ช่วงปี 2015 กูเกิลและ Yubico ร่วมกันพัฒนาโปรโตคอล U2F เพื่ออาศัยการยืนยันว่าผู้ใช้มีกุญแจ USB อยู่ในมือเป็นการล็อกอินขั้นที่สอง โดยจุดเด่นสำคัญคือเบราว์เซอร์จะส่งข้อมูล URL ของเว็บที่ล็อกอินไปยัง URL ด้วย ทำให้คนร้ายไม่สามารถใช้เว็บฟิชชิ่ง (phishing) เพื่อสร้างเว็บคล้ายกับเว็บจริงแล้วหลอกให้คนเหยื่อใส่รหัสผ่านหรือ OTP ได้อีกต่อไป เพราะกุญแจ U2F จะไม่ตอบหากพบว่ากุญแจไม่ตรงกับที่เคยล็อกอินไว้ก่อนหน้า โดยมาตรฐานนี้ดูแลโดยองค์กรกลางคือ FIDO Alliance

กุญแจ FIDO สามารถสร้างด้วยกุญแจ USB, หรือใช้ชิปเข้ารหัสในโทรศัพท์หรือพีซีก็ได้

หลังจากนั้น FIDO ก็ทำงานร่วมกับผู้ผลิตฮาร์ดแวร์จำนวนมาก เปิดทางให้โน้ตบุ๊กหรือโทรศัพท์สามารถใช้งานแทนกุญแจ USB ได้โดยตรง ผู้ใช้ไม่ต้องซื้อกุญแจ USB เพิ่มเติมแต่ก็แปลว่าต้องล็อกอินบนอุปกรณ์ที่เคยลงทะเบียนไว้เท่านั้น การใช้งานอาจจะสะดวกขึ้นหลายกรณี เช่น มีกุญแจ USB ที่ลงทะเบียนกับบริษัทไว้แล้ว แต่ลงทะเบียนด้วยโน้ตบุ๊กเป็นกุญแจไว้ด้วย หากวันไหนพกโน้ตบุ๊กไปทำงานก็ไม่จำเป็นต้องพกกุญแจ USB ไป แม้จะลดความยุ่งยากลงเล็กน้อยแต่ก็ยังนับว่าใช้งานยากกับคนจำนวนมากอยู่ดี และ FIDO ส่งมาตรฐานกลางเข้า W3C จนกลายเป็นมาตรฐาน WebAuthn ทุกวันนี้ โดยรองรับทั้งการใช้สำหรับการล็อกอินขั้นที่สอง หรือการล็อกอินโดยไม่ใช้รหัสผ่านอีกเลย

Passkey เป็นการแก้ปัญหาความยุ่งยากลง เพราะแต่เดิมนั้นผู้ใช้มีความกังวลเรื่องกุญแจสูญหาย ไม่ได้พกกุญแจเมื่อต้องการใช้งาน หรือความน่ารำคาญสำคัญ คือกุญแจที่ต้องการใช้งานกลับไม่สามารถใช้งานกับเครื่องที่ต้องการล็อกอินได้ เพราะพอร์ตไม่ตรงกัน ตัวกุญแจอาจจะเป็น USB A ขณะที่เครื่องที่ต้องการล็อกอินกลับเป็นพอร์ต USB-C หรือ Lightning การใช้งานกุญแจ FIDO แบบ Bluetooth นั้นยุ่งยากและหลายครั้งอาจจะเชื่อมต่อลำบาก โดย Passkey เน้นการใช้โทรศัพท์ (หรืออาจจะเป็นแอปอื่น) เข้ามาทำหน้าที่แทนกุญแจ USB ใน FIDO/WebAuthn พร้อมกับปรับปรุง WebAuthn สองประการ

  1. เพิ่มการย้ายกุญแจข้ามอุปกรณ์ (key sync) จากเดิมที่กุญแจยืนยันตัวตนจะผูกกับชิปในอุปกรณ์สักชิ้น ไม่ว่าจะเป็นกุญแจ USB, โน้ตบุ๊ก, หรือโทรศัพท์มือถือ Passkey รองรับการซิงก์กุญแจข้ามอุปกรณ์ไปมา เช่น ผู้ใช้ iPhone สามารถล็อกอินผ่าน Passkey ด้วยโทรศัพท์เครื่องหนึ่ง และเมื่อซื้อ iPhone หรือ iPad มาใหม่ ก็ยังสามารถใช้ล็อกอินบัญชีเดิมได้ต่อไป เช่นเดียวกับผู้ใช้แอนดรอยด์ที่สามารถล็อกอินบัญชีเดิมได้ทุกครั้งที่เปิดใช้โทรศัพท์ด้วยบัญชีกูเกิลบัญชีเดิม
  2. เปิดทางให้ใช้โทรศัพท์ยืนยันตัวตนผู้ใช้บนพีซี เมื่อผู้ใช้ต้องการยืนยันตัวตนนอกแพลตฟอร์มที่ใช้เก็บกุญแจ Passkey โปรแกรมที่ต้องการการยืนยันตัวตนเช่นเบราว์เซอร์บนพีซี สามารถขอเชื่อมต่อกับอุปกรณ์ที่ใช้เก็บกุญแจ Passkey ได้

เมื่อเราใช้เบราเซอร์เข้าเว็บและล็อกอินบริการที่รองรับ WebAuthn เบราว์เซอร์ที่รองรับ Passkey จะให้เลือกว่าต้องการยืนยันตัวตนด้วยกุญแจ USB หรือใช้โทรศัพท์ หากเราเลือกใช้โทรศัพท์ เบราว์เซอร์จะแสดง QR ขึ้นมา และเมื่อใช้โทรศัพท์สแกน QR แล้ว โทรศัพท์และเบราว์เซอร์จะส่งข้อมูลผ่าน Bluetooth เพื่อยืนยันว่าอุปกรณ์ทั้งสองอยู่ใกล้ๆ กัน ไม่สามารถสแกน QR จากระยะไกลเพื่อล็อกอินได้ จากนั้นทั้งโทรศัพท์และเบราว์เซอร์จะเชื่อมต่อเข้าหา proxy ผ่านอินเทอร์เน็ตเปิด tunnel เชื่อมต่อถึงกันโดยตรง (ไม่สามารถส่งข้อมูลโดยตรงผ่าน Bluetooth ได้เพราะการเชื่อมต่อ Bluetooth นั้นซับซ้อนและหลายครั้งไม่เสถียร)

เมื่อเชื่อมต่อได้แล้ว เบราว์เซอร์จะทำงานเหมือนมีกุญแจ USB อยู่ในเครื่องโดยตรง เบราว์เซอร์จะส่งข้อมูลโดเมนที่กำลังใช้งานอยู่ ส่งข้อมูลยืนยันตัวตนจากเซิร์ฟเวอร์บริการ กลับไปยังโทรศัพท์ และส่งข้อมูลล็อกอินจากโทรศัพท์กลับไปยังเซิร์ฟเวอร์แบบเดียวกับการล็อกอินด้วยกุญแจปกติ

ความซับซ้อนทั้งหมดนี้ถูกซ่อนออกจากผู้ใช้ทั่วไป เราแค่มีอุปกรณ์ที่รองรับ Passkey และสามารถล็อกอินได้บนทุกอุปกรณ์ที่ซิงก์กุญแจข้ามไปได้ ผู้ใช้ที่มี iPhone จะล็อกอินได้ทันทีบน iPhone, iPad, หรือ macOS ขณะที่ยังสามารถล็อกอินทุกบริการข้ามแพลตฟอร์มได้ด้วย

สำหรับองค์กรที่ไม่ไว้ใจการซิงก์กุญแจข้ามอุปกรณ์เช่นนี้ ยังสามารถเลือกกำหนดกุญแจแบบล็อกเข้ากับอุปกรณ์โดยตรงได้ แต่กับบัญชีโดยทั่วๆ ไปการใช้กุญแจแบบซิงก์ได้ก็ให้ความปลอดภัยที่ดีกว่าการปล่อยให้ผู้ใช้ตั้งรหัสผ่านอย่างมากแล้ว และยังลดความเสี่ยงของการ phishing ลงไปได้ เมื่อซอฟต์แวร์ทั้งหมดรองรับ Passkey จึงน่าจะทำให้ความปลอดภัยรวมของผู้ใช้ดีขึ้นพร้อมกับทำให้ผู้ใช้สามารถใช้งานได้สะดวกขึ้นไปด้วย การที่ผู้ผลิตเบราว์เซอร์รายใหญ่ล้วนให้คำมั่นว่าจะรองรับ Passkey รวมถึงแพลตฟอร์มโทรศัพท์มือถือรายหลักทั้ง iOS และ Android ก็ประกาศรองรับจึงน่าจะทำให้ Passkey กลายเป็นอนาคตของการล็อกอินที่ปลอดภัยยิ่งขึ้น

Blognone Jobs Premium