在这个数å—化和信æ¯é«˜åº¦äº’è”的时代,密ç çš„å®‰å…¨æ€§å’Œä¾¿æ·æ€§ä¸€ç›´æ˜¯ä¸€ä¸ªå¤‡å—关注的è¯é¢˜ã€‚éšç€ç½‘络钓鱼(phishing)攻击的日益猖ç—ï¼Œä¼ ç»Ÿçš„å¯†ç éªŒè¯æ–¹å¼æ˜¾å¾—è¶Šæ¥è¶Šè„†å¼±ã€‚为了解决这个问题,FIDO(快速身份在线)è”ç›ŸæŽ¨å‡ºäº†ä¸€ç³»åˆ—æ–°å…´çš„èº«ä»½éªŒè¯æ ‡å‡†ï¼Œå…¶ä¸æœ€å…·ä»£è¡¨æ€§çš„æ˜¯ WebAuthn å’Œ FIDO2ã€‚è¿™ç¯‡æ–‡ç« å°†æ·±å…¥æŽ¢è®¨ WebAuthn API å’Œæ— å¯†ç 身份验è¯çš„原ç†ä¸Žåº”用,帮助我们更好地ç†è§£æœªæ¥çš„å®‰å…¨èº«ä»½éªŒè¯æ–¹å¼ã€‚
🔠什么是 FIDO 和 FIDO2?
FIDO è”盟æˆç«‹äºŽ 2013 年,旨在开å‘安全ã€å¼€æ”¾ã€æ ‡å‡†åŒ–的防网络钓鱼身份验è¯å议。FIDO 的三个主è¦å议包括 UAFï¼ˆé€šç”¨èº«ä»½éªŒè¯æ¡†æž¶ï¼‰ã€U2F. ¼ˆé€šç”¨ç¬¬äºŒå› ç´ ï¼‰å’Œ FIDO2。FIDO2 æ˜¯å…¶æœ€æ–°çš„æ ‡å‡†ï¼Œä¸“æ³¨äºŽæ— å¯†ç 身份验è¯ã€‚✅
FIDO2 由两部分组æˆï¼šWebAuthn(客户端 API)和 CTAP(客户端到身份验è¯å™¨å议)。WebAuthn 使开å‘者能够通过 JavaScript 创建和管ç†å…¬é’¥å‡è¯ï¼Œè€Œ CTAP 则负责与身份验è¯å™¨ä¹‹é—´çš„低级别通信。
🔄 FIDO 的工作原ç†
FIDO åè®®çš„æ ¸å¿ƒæ˜¯åŸºäºŽæŒ‘æˆ˜-å“åº”æœºåˆ¶çš„èº«ä»½éªŒè¯æµç¨‹ã€‚æœåС噍å‘客户端å‘é€ä¸€ä¸ªæŒ‘战(challenge)和å‡è¯æ ‡è¯†ç¬¦ã€‚客户端将这些信æ¯å‘é€ç»™èº«ä»½éªŒè¯å™¨ï¼Œèº«ä»½éªŒè¯å™¨ä¼šè¦æ±‚用户进行验è¯ï¼ˆå¦‚输入 PIN 或使用生物识别技术)。验è¯é€šè¿‡åŽï¼Œèº«ä»½éªŒè¯å™¨ä½¿ç”¨ç§é’¥å¯¹æ•°æ®è¿›è¡Œç¾åï¼Œå¹¶å°†ç»“æžœè¿”å›žç»™å®¢æˆ·ç«¯ï¼Œæœ€ç»ˆå®¢æˆ·ç«¯å°†å…¶ä¼ é€’ç»™æœåŠ¡å™¨è¿›è¡ŒéªŒè¯ã€‚
è¿™ç§æœºåˆ¶ç¡®ä¿äº†ç”¨æˆ·çš„å‡è¯å§‹ç»ˆå˜å‚¨åœ¨æœ¬åœ°è®¾å¤‡ä¸Šï¼Œé¿å…了å‡è¯æ³„露的风险。æ¤å¤–,挑战-å“应机制有效地防æ¢äº†ä¸é—´äººæ”»å‡»ï¼ˆMITM)。
📜 WebAuthn API çš„æ ¸å¿ƒæ“作
WebAuthn API æä¾›äº†ä¸¤ä¸ªåŸºæœ¬æ“作:navigator.credentials.create å’Œ navigator.credentials.get。å‰è€…用于创建新的å‡è¯ï¼Œè€ŒåŽè€…用于获å–已注册å‡è¯çš„验è¯ã€‚
创建å‡è¯
å½“ç”¨æˆ·éœ€è¦æ³¨å†Œæ–°è´¦æˆ·æ—¶ï¼Œå¼€å‘者调用 navigator.credentials.create æ–¹æ³•ã€‚æ¤æ–¹æ³•需è¦ä¸€ä¸ªåŒ…å«å¤šç§å‚数的对象,例如:
challenge:由æœåŠ¡å™¨ç”Ÿæˆçš„éšæœºæŒ‘战,用于防æ¢é‡æ”¾æ”»å‡»ã€‚rp:有关ä¾èµ–方的信æ¯ï¼Œä¾‹å¦‚åç§°å’Œæ ‡è¯†ç¬¦ã€‚user:用户的相关信æ¯ï¼ŒåŒ…æ‹¬å”¯ä¸€æ ‡è¯†ç¬¦å’Œç”¨æˆ·å。pubKeyCredParams:æœåŠ¡å™¨æ”¯æŒçš„ç¾å算法列表。
é€šè¿‡è¿™äº›å‚æ•°ï¼ŒWebAuthn API å°†ç”Ÿæˆæ–°çš„å‡è¯ï¼Œå¹¶åœ¨èº«ä»½éªŒè¯å™¨ä¸Šè¿›è¡Œå˜å‚¨ã€‚
获å–å‡è¯
åœ¨ç”¨æˆ·è¿›è¡Œèº«ä»½éªŒè¯æ—¶ï¼Œå¼€å‘者调用 navigator.credentials.get æ–¹æ³•ã€‚æ¤æ–¹æ³•åŒæ ·éœ€è¦ä¸€ä¸ªå¯¹è±¡ï¼Œå…¶ä¸åŒ…括:
challenge:与注册阶段相åŒçš„æŒ‘战。allowCredentials:已注册å‡è¯çš„æ ‡è¯†ç¬¦åˆ—表。
如果身份验è¯å™¨èƒ½å¤Ÿè¯†åˆ«å‡è¯ï¼Œç”¨æˆ·å°†è¢«æç¤ºè¿›è¡ŒéªŒè¯ï¼ŒéªŒè¯é€šè¿‡åŽï¼Œè¿”回的结果将包å«èº«ä»½éªŒè¯ä¿¡æ¯ã€‚
ðŸ›¡ï¸ æ— å¯†ç 身份验è¯çš„优势
æ— å¯†ç 身份验è¯çš„æœ€å¤§ä¼˜åŠ¿åœ¨äºŽæ¶ˆé™¤äº†å¯†ç æœ¬èº«çš„使用。这æ„味ç€ç”¨æˆ·ä¸å†éœ€è¦è®°ä½å¤æ‚的密ç ,也ä¸å¿…担心密ç è¢«ç›—æˆ–æ³„éœ²ã€‚ä»¥ä¸‹æ˜¯æ— å¯†ç 身份验è¯çš„一些主è¦ä¼˜ç‚¹ï¼š
- æé«˜å®‰å…¨æ€§ï¼šç”±äºŽæ²¡æœ‰å¯†ç 被å‘逿ˆ–å˜å‚¨åœ¨æœåŠ¡å™¨ä¸Šï¼Œæ”»å‡»è€…æ— æ³•é€šè¿‡ç½‘ç»œé’“é±¼ç‰æ‰‹æ®µèŽ·å–用户å‡è¯ã€‚
- 用户体验:用户åªéœ€è¿›è¡Œç®€å•çš„ç”Ÿç‰©è¯†åˆ«éªŒè¯æˆ– PIN 输入,显著æé«˜äº†ç™»å½•çš„ä¾¿æ·æ€§ã€‚
- é™ä½Žç»´æŠ¤æˆæœ¬ï¼šä¼ä¸šä¸å†éœ€è¦æ‰¿æ‹…密ç é‡ç½®å’Œç®¡ç†çš„ç›¸å…³æˆæœ¬ã€‚
🚀 应用场景与未æ¥å±•望
WebAuthn å’Œæ— å¯†ç 身份验è¯åœ¨è®¸å¤šåœºæ™¯ä¸‹éƒ½æœ‰å¹¿æ³›çš„应用潜力。例如,电å商务ã€é‡‘èžæœåС以åŠç¤¾äº¤åª’体ç‰é¢†åŸŸéƒ½å¯ä»¥åˆ©ç”¨è¿™ä¸€æŠ€æœ¯æ¥æé«˜å®‰å…¨æ€§å’Œç”¨æˆ·ä½“验。
未æ¥ï¼Œéšç€æ”¯æŒ WebAuthn 的平å°å’Œè®¾å¤‡ä¸æ–å¢žåŠ ï¼Œé¢„è®¡æ— å¯†ç 身份验è¯å°†ä¼šæˆä¸ºä¸»æµã€‚å¼€å‘者将能够更方便地集æˆè¿™ä¸€æŠ€æœ¯ï¼Œç”¨æˆ·çš„身份验è¯è¿‡ç¨‹ä¹Ÿå°†å˜å¾—æ›´åŠ å®‰å…¨å’Œé«˜æ•ˆã€‚
📚 å‚考文献
- FIDO Alliance. (2019). FIDO2 Overview. FIDO Alliance
- WebAuthn Specification. (2021). W3C
- Ackermann, Y. (2019). Introduction to WebAuthn API and Passkey. ✅Medium
- Kitamura, E. (2019). Sign-in on the Web — Credential Management API and Best Practices. ✅Medium
- Demystifying attestation and MDS. Medium