
自製 ESP32 指紋登入器好玩,但唔好當正式 passkey 用
tinyTouch 用 Mac Keychain 加 USB HID 打密碼,啱學保安思路同風險
發生咩事
XDA Developers 留意到 GitHub user Zimeng Xiong 做咗個叫 tinyTouch 嘅 DIY 指紋登入器。硬件用 Seeed Studio XIAO ESP32S3 加 ZW101 指紋模組,連住 Mac 之後,手指一按就可以解鎖。聽落似迷你 Touch ID,但現版玩法其實直接好多:Mac 上有個 helper,密碼放喺 Keychain;指紋 match 之後,ESP32 向 helper 要密碼,收返加密內容,喺 RAM 解密幾毫秒,再扮 USB keyboard 打出密碼。
呢個設計醒過「把密碼寫死喺開發板」好多。tinyTouch README 寫明,ESP32 唔會長存密碼,只存一條 32-byte pairing key;每次成功 match 都有 nonce、MAC 驗證、拒絕 replay,helper 用 AES-CTR 加密回覆,ESP32 打完密碼就抹走 buffer。對 maker project 嚟講,呢套流程已經唔係玩具級亂砌,但都唔代表佢突然變成正式保安產品。

圖片:Zimeng Xiong / tinyTouch GitHub
passwordless 個重點唔係指紋本身
而家大家講 passwordless,重點唔係「用手指代替打字」咁簡單。FIDO Alliance 同 Microsoft 嘅講法都好清楚:passkey / FIDO2 係公私鑰登入,網站或公司系統收公鑰,私鑰留喺裝置;登入時對方畀 challenge,裝置簽名回覆,指紋或 PIN 只係本地解鎖私鑰嘅動作。咁先可以抗 phishing,因為攻擊者攞唔到一串可重用密碼,假網站亦唔應該拎到可搬去真網站用嘅 secret。
所以 tinyTouch 最易令人誤會嘅位,正正係「passwordless」呢個字。用家手上確實冇打密碼,但系統背後仲係用原本 macOS 密碼完成登入,只係把輸入動作包喺 ESP32 同 helper 入面。真正 FIDO2 security key 或 Windows Hello for Business 嘅流程,核心係驗簽名同裝置身份;tinyTouch 現版核心係信任指紋模組講「match」,再請 Mac helper 放行密碼。
同 Touch ID、Windows Hello 差喺信任鏈
Apple Magic Keyboard with Touch ID 可以做參考。Apple 安全指南寫明,呢款 keyboard 要同 Mac Secure Enclave 安全配對,指紋 match 同安全政策由 Secure Enclave 處理,Touch ID sensor 本身唔存 biometric template,亦唔自己決定成件事。呢條信任鏈有硬件 attestation、加密 channel 同平台安全政策頂住,所以先可以用嚟登入、Apple Pay、解鎖密碼管理器。
tinyTouch 就係另一個世界:指紋驗證喺平價 fingerprint sensor 做,sensor 同 ESP32 之間走 UART。原作者喺 Reddit 都講得坦白,如果有人同時掂到裝置同電腦,有機會 spoof UART,令 ESP32 以為指紋已經 match。密碼唔寫入 ESP32 flash 只係解決其中一截;最大風險落喺 sensor 嗰句「match」有幾可信、硬件有冇防拆、線路有冇俾人碰到。
啱玩,但唔啱公司機硬上
如果你有閒置 Mac mini、屋企 desktop,或者想教學生一次過摸 HID、serial protocol、Keychain、nonce、key derivation,tinyTouch 係幾好玩嘅入門 project。ESP32-S3 本身支援 USB device class,包括 HID,配合常見 UART 指紋模組,材料喺本地電子零件舖同網店都唔難搵,成本亦大概會低過買官方 Touch ID keyboard 或高階 security key;不過冇查到穩定零件價,所以唔估實數。
但如果部機係工作機、公司有 MDM、要上 VPN、要過稽核,呢類 DIY 解鎖器就唔應該當 MFA 或 FIDO2 key 替代品。基本做法係保留強密碼、設定另一個可復原登入方法、唔好把 helper 擺到任何人都改到嘅位置,裝置唔見咗就要即刻撤走 pairing key 同 Keychain password。指紋方便,唔等於安全責任可以外判畀一粒幾十蚊模組。
下一步睇 smart card 方向
原作者話之後想做 BLE 版本,README 亦提到可能會有 smart card compatible 方案。呢個方向值得睇,因為一旦由「打密碼」改成「像正式憑證咁回應 challenge」,成件事先有機會貼近真正 passwordless。現階段 tinyTouch 最合理嘅定位係 maker 教材同屋企小工具:學到嘢、玩得開心,但高權限帳戶同公司環境,繼續用正式 passkey、Windows Hello、Touch ID 或認證 FIDO2 security key 會穩陣好多。
參考來源
- XDA Developers — Someone made an ESP32 passwordless fingerprint unlocker, and you can make one at home — original report
- ZimengXiong/tinyTouch GitHub repository — 原作者 repo,有 BOM、macOS helper、Keychain、pairing key 同安全模型細節。
- Reddit r/esp32: Working on a passwordless fingerprint unlocker thingy — 原作者貼文補充咗 UART spoofing、密碼唔存喺 ESP32、BLE / smart-card 後續方向。
- Microsoft Learn: Passkeys (FIDO2) authentication method in Microsoft Entra ID — 官方背景,解釋 passkey / FIDO2 嘅公私鑰流程、device-bound 同 synced passkeys。
- FIDO Alliance: Passkeys — 標準背景,確認 passkey 係用 FIDO2 / WebAuthn / CTAP 同公私鑰做 phishing-resistant sign-in。
- Apple Platform Security: Magic Keyboard with Touch ID — 官方安全文件,方便比較正式 Touch ID keyboard 同 DIY 指紋器嘅信任鏈差異。
- Espressif: ESP32-S3 USB Device Stack — 官方文件,確認 ESP32-S3 USB device stack 支援 HID 等 class,解釋點解佢可以扮 keyboard。
本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。







