รหัสผ่านเป็นจุดอ่อนที่สุดในความปลอดภัยของบัญชี มันสามารถถูกหลอกลวง รั่วไหล ใช้ซ้ำ หรือลืมได้ นั่นคือเหตุผลที่เราเพิ่มการรองรับ WebAuthn passkeys - วิธีการยืนยันตัวตนแบบไม่ใช้รหัสผ่านที่ต้านทานการ phishing ซึ่งทั้งปลอดภัยและสะดวกกว่า
Passkeys คืออะไร?
Passkeys คือข้อมูลประจำตัวแบบเข้ารหัสที่จัดเก็บบนอุปกรณ์ของคุณ (โทรศัพท์ แล็ปท็อป กุญแจความปลอดภัย) ที่แทนที่รหัสผ่านสำหรับการยืนยันตัวตน พวกมันใช้มาตรฐาน WebAuthn (ส่วนหนึ่งของ FIDO2) และให้ข้อดีหลายประการ:
- ต้านทานการ Phishing - Passkeys ผูกกับโดเมนของเว็บไซต์ ดังนั้นจึงไม่สามารถใช้บนเว็บไซต์ปลอมได้
- ไม่มีความลับที่จะรั่วไหล - มีเพียงกุญแจสาธารณะเท่านั้นที่จัดเก็บบนเซิร์ฟเวอร์
- ผูกกับอุปกรณ์ - กุญแจส่วนตัวไม่เคยออกจากอุปกรณ์ของคุณ
- ป้องกันด้วยไบโอเมตริก - โดยทั่วไปป้องกันด้วย Face ID, Touch ID หรือ Windows Hello
- ซิงค์ข้ามอุปกรณ์ - แพลตฟอร์มสมัยใหม่ซิงค์ passkeys ข้ามอุปกรณ์ผ่านบัญชี iCloud, Google หรือ Microsoft
การใช้งานของเรา
เราผสานรวมการรองรับ WebAuthn passkey เข้ากับ django-allauth authentication stack ที่มีอยู่ของเรา โดยให้ทั้ง web และ mobile API endpoints
ขั้นตอนการลงทะเบียน
เมื่อผู้ใช้ลงทะเบียน passkey ใหม่ ขั้นตอนทำงานดังนี้:
- ไคลเอนต์ร้องขอตัวเลือกการลงทะเบียน จากเซิร์ฟเวอร์
- เซิร์ฟเวอร์สร้าง challenge พร้อมข้อมูลผู้ใช้และ relying party
- WebAuthn API ของเบราว์เซอร์ แจ้งเตือนผู้ใช้ (ไบโอเมตริกหรือกุญแจความปลอดภัย)
- ไคลเอนต์ส่ง credential กลับไปยังเซิร์ฟเวอร์
- เซิร์ฟเวอร์ตรวจสอบและจัดเก็บ กุญแจสาธารณะ
| |
ขั้นตอนการยืนยันตัวตน
สำหรับการยืนยันตัวตนสองปัจจัยโดยใช้ passkey:
- ผู้ใช้ยืนยันตัวตนหลักเสร็จสิ้น (username/password หรือ social login)
- เซิร์ฟเวอร์ส่ง challenge สำหรับการตรวจสอบ WebAuthn
- เบราว์เซอร์แจ้งเตือน สำหรับ passkey (แตะไบโอเมตริก)
- Credential ถูกตรวจสอบ เทียบกับกุญแจสาธารณะที่จัดเก็บ
- ผู้ใช้ได้รับการยืนยันตัวตนอย่างสมบูรณ์
| |
การจัดการ Passkey
ผู้ใช้สามารถจัดการ passkeys ที่ลงทะเบียนไว้:
- แสดงรายการ passkeys ทั้งหมด พร้อมวันที่ลงทะเบียนและการใช้งานล่าสุด
- เปลี่ยนชื่อ passkeys เพื่อการระบุตัวตนที่ง่ายขึ้น (เช่น “iPhone”, “MacBook”)
- ลบ passkeys (พร้อมการป้องกันจากการลบ authenticator ตัวสุดท้าย)
| |
API Endpoints
REST API ของเราให้การรองรับ WebAuthn อย่างสมบูรณ์สำหรับแอปมือถือ:
| Endpoint | Method | คำอธิบาย |
|---|---|---|
/api/webauthn/register/options/ | GET | รับ registration challenge |
/api/webauthn/register/complete/ | POST | ลงทะเบียนให้เสร็จสิ้น |
/api/webauthn/authenticate/options/ | GET | รับ authentication challenge |
/api/webauthn/verify/ | POST | ตรวจสอบ credential สำหรับ 2FA |
/api/webauthn/ | GET | แสดงรายการ passkeys ที่ลงทะเบียน |
/api/webauthn/<id>/ | PATCH | เปลี่ยนชื่อ passkey |
/api/webauthn/<id>/ | DELETE | ลบ passkey |
ข้อพิจารณาด้านความปลอดภัย
รหัสกู้คืน
เมื่อผู้ใช้ลงทะเบียน authenticator ตัวแรก (passkey หรือ TOTP) เราจะสร้างรหัสกู้คืนโดยอัตโนมัติ รหัสใช้ครั้งเดียวเหล่านี้สามารถใช้ได้หากวิธีการยืนยันตัวตนอื่นๆ ทั้งหมดไม่พร้อมใช้งาน:
| |
ป้องกันการถูกล็อคออก
ผู้ใช้ไม่สามารถลบ passkey ตัวสุดท้ายได้หากจะทำให้พวกเขาไม่มีวิธีการยืนยันตัวตนสองปัจจัยใดๆ:
| |
การตรวจสอบ
เราติดตามการใช้งาน passkey ผ่าน Datadog metrics สำหรับการตรวจสอบความปลอดภัย:
| |
การรองรับเบราว์เซอร์
WebAuthn รองรับในเบราว์เซอร์สมัยใหม่ทั้งหมด:
- Chrome 67+
- Firefox 60+
- Safari 13+
- Edge 79+
- Mobile Chrome, Safari, Firefox
สำหรับเบราว์เซอร์เก่า ผู้ใช้ยังคงสามารถใช้ TOTP (แอป authenticator) หรือรหัสกู้คืนได้
ประสบการณ์ผู้ใช้
การเพิ่ม passkey ใช้เวลาเพียงไม่กี่วินาที:
- ไปที่ การตั้งค่า → ความปลอดภัย → การยืนยันตัวตนสองปัจจัย
- คลิก เพิ่ม Passkey
- ตั้งชื่ออุปกรณ์ของคุณ (เช่น “iPhone 15”)
- ยืนยันตัวตนด้วย Face ID / Touch ID / Windows Hello
- เสร็จแล้ว! Passkey ของคุณถูกลงทะเบียนแล้ว
การเข้าสู่ระบบในอนาคตต้องการเพียงการยืนยันไบโอเมตริก - ไม่ต้องพิมพ์รหัสผ่านหรือคัดลอกรหัสจากแอป authenticator
ทำไมเราเลือก Passkeys
| วิธีการ | ความเสี่ยง Phishing | ประสบการณ์ผู้ใช้ | การกู้คืน |
|---|---|---|---|
| รหัสผ่าน | สูง | แย่ (ลืม, อ่อนแอ) | รีเซ็ตอีเมล |
| SMS 2FA | ปานกลาง (SIM swap) | พอใช้ | หมายเลขโทรศัพท์ |
| TOTP Apps | ต่ำ | ป้อนรหัสด้วยตนเอง | กุญแจสำรอง |
| Passkeys | ต่ำมาก | ยอดเยี่ยม | รหัสกู้คืน |
Passkeys เป็นตัวแทนของอนาคตของการยืนยันตัวตน พวกมันได้รับการสนับสนุนโดยแพลตฟอร์ม Apple, Google และ Microsoft แล้ว ทำให้เข้าถึงได้สำหรับผู้ใช้เกือบทั้งหมดของเรา
พร้อมที่จะไม่ใช้รหัสผ่านแล้วหรือยัง? เปิดใช้งาน passkeys ในการตั้งค่าความปลอดภัยของคุณ!
