別因不安全的密碼讓你的資料裸奔了,了解一下如何為網站加上 WebAuthn 無密碼驗證吧
前言 你有沒有曾經使用 Google 瀏覽器登入某個網站時,突然跳出「你的密碼已遭洩露」的訊息? 除非你用的密碼堅不可摧、每個網站都設定不同,否則你多多少少應該都會遇到這種情況吧。 如果你的回答是 No,我的密碼很安全,怎麼可能發生在我身上的話,你也別高興得太早,國外有位工程師寫了一個網站叫做 Have I been pwned ,收集了過去數年來洩露的數十億筆密碼資料 (我強烈懷疑這工程師自己也是暗網的潛在賣家,不然誰身上可以蒐集到這麼多資料呢 XD),只要你輸入常用的帳號,這網站就會告訴你是否有洩漏的風險,如下圖,我自己電子郵件信箱也無法倖免。 好啦,言歸正傳。近年來,資安意識興起,各大網站都開始提倡 MFA (多重要素驗證),就連我國內政部的系統也開始全面無密碼化,改用自然人憑證來進行登入,但對於個人開發的小網站,要求使用者安裝額外設備或 APP 來實現多因素認證,未免太不切實際。 如果有一種機制,可以直接利用大家都有的手機來進行驗證,是不是就更完美了呢?WebAuthn 就是為了這個目的所存在的。 起因 為什麼會寫這個主題呢?其實是因為上學期我在成大碩專班的資安課程,有個 Zero Trust Architecture 的期末報告,老師提到如果有實作會有額外的加分,於是我們小組便決定,既然要做,不如就做一個簡單的系統,讓大家可以更清楚的了解這個架構是怎麼運作的,底下是實作完成的影片,影片中有一段黑畫面沒辦法錄到,但那段是我們呼叫手機的指紋驗證器進行登入驗證的過程。 在開始運作原理之前,先看一下我們的題目,NIST SP 800-207 第三章:零信任架構邏輯元件,EIG Crawl Phase 的參考架構圖。 WebAuthn 是什麼 ? WebAuthn,全名 Web Authentication,是一種基於非對稱加密技術的身份驗證方式,主要是希望取代傳統的密碼驗證,並用於網站的註冊、登入以及雙因素認證(2FA)等場景。這個技術不僅能夠有效解決釣魚攻擊和數據泄露等安全問題,同時還能提升用戶的使用體驗,因為使用者不必再記憶複雜的密碼。 通過 WebAuthn 提供的 API,我們可以輕鬆實現指紋識別、人臉識別等生物特徵的驗證,或者是利用加密硬體,如USB Key、藍牙設備等進行身份驗證。 簡單來說,WebAuthn 讓使用者可以直接使用自己已有的設備來進行