瞭解 Yahoo!日本建立了無密碼身分驗證系統。
Yahoo! JAPAN 是日本最大的媒體公司之一,提供搜尋、新聞、電子商務和電子郵件等服務。超過 5 千萬名使用者登入 Yahoo!JAPAN 服務每月。
多年以來,我們發現許多使用者帳戶遭到攻擊,以及導致帳戶存取權遭到停用的相關問題。這些問題大多與使用密碼進行驗證有關。
隨著驗證技術的進步,Yahoo!JAPAN 已決定從密碼驗證改為無密碼驗證。
為什麼要採用無密碼登入?
在 Yahoo!JAPAN 提供電子商務和其他與金錢相關的服務,因此如果發生未經授權存取或帳戶遺失的情況,使用者可能會遭受重大損害。
與密碼相關的最常見攻擊是密碼清單攻擊和網路釣魚詐騙。密碼清單攻擊相當常見且有效的原因之一,是因為許多人習慣在多個應用程式和網站上使用相同的密碼。
以下圖表為 Yahoo!JAPAN。
50%
在六個以上網站使用相同的 ID 和密碼
60%
在多個網站上使用相同的密碼
70%
使用密碼做為主要登入方式
使用者經常忘記密碼,這類問題佔了密碼相關諮詢的大多數。另外,也有使用者詢問如何找回登入 ID 和密碼。在高峰期,這類諮詢就佔了所有帳戶相關諮詢的三分之一以上。
透過不需密碼的登入方式,Yahoo!JAPAN 不僅希望提升安全性,也希望改善可用性,同時不對使用者造成額外負擔。
從安全性角度來看,從使用者驗證程序中移除密碼,可減少來自清單式攻擊的損害;從可用性角度來看,提供不依賴密碼記憶的驗證方法,可避免使用者因忘記密碼而無法登入的情況。
Yahoo! 日本的無密碼措施
Yahoo! 日本正在採取多項措施,推廣無密碼驗證機制,大致可分為以下三類:
- 提供替代密碼驗證方式。
- 停用密碼。
- 無密碼註冊帳戶。
前兩項計畫針對現有使用者,而無密碼註冊功能則針對新使用者。
1. 提供密碼以外的驗證方式
Yahoo! 日本提供下列密碼替代方案。
此外,我們也提供電子郵件驗證、密碼搭配簡訊動態密碼 (OTP) 和密碼搭配電子郵件動態密碼等驗證方法。
簡訊驗證
簡訊驗證系統可讓註冊使用者透過簡訊接收六位數驗證碼。使用者收到簡訊後,即可在應用程式或網站中輸入驗證碼。
Apple 一直以來都允許 iOS 讀取簡訊,並從文字內容建議驗證碼。近期,您可以在輸入元素的 autocomplete
屬性中指定「one-time-code」,以便使用建議。Android、Windows 和 Mac 上的 Chrome 可使用 WebOTP API 提供相同的體驗。
例如:
<form>
<input type="text" id="code" autocomplete="one-time-code"/>
<button type="submit">sign in</button>
</form>
if ('OTPCredential' in window) {
const input = document.getElementById('code');
if (!input) return;
const ac = new AbortController();
const form = input.closest('form');
if (form) {
form.addEventListener('submit', e => {
ac.abort();
});
}
navigator.credentials.get({
otp: { transport:['sms'] },
signal: ac.signal
}).then(otp => {
input.value = otp.code;
}).catch(err => {
console.log(err);
});
}
這兩種方法的設計目的都是為了防範網路釣魚,方法是在簡訊內文中加入網域,並只針對指定網域提供建議。
如要進一步瞭解 WebOTP API 和 autocomplete="one-time-code"
,請參閱「簡訊 OTP 表單最佳做法」。
搭配 WebAuthn 使用的 FIDO
FIDO 搭配 WebAuthn 會使用硬體驗證器產生公開金鑰密碼組,並證明擁有權。當智慧型手機用於驗證器時,可以搭配生物特徵辨識驗證 (例如指紋感應器或臉部辨識) 執行一鍵雙重驗證。在這種情況下,系統只會將生物特徵辨識驗證的簽章和成功指示傳送至伺服器,因此不會有生物特徵辨識資料遭竊的風險。
下圖顯示 FIDO 的伺服器-用戶端設定。用戶端驗證工具會使用生物特徵辨識驗證使用者,並使用公開金鑰密碼編譯機制簽署結果。用於建立簽章的私密金鑰會安全地儲存在 TEE (受信任的執行環境) 或類似位置。使用 FIDO 的服務供應商稱為 RP (依賴方)。
詳情請參閱 FIDO 聯盟的驗證指南。
Yahoo! 日本支援 Android (行動應用程式和網頁)、iOS (行動應用程式和網頁)、Windows (Edge、Chrome、Firefox) 和 macOS (Safari、Chrome) 上的 FIDO。作為消費者服務,FIDO 幾乎可用於任何裝置,因此是推廣無密碼驗證機制的絕佳選擇。
Yahoo! 如果使用者尚未透過其他方式進行驗證,日本建議使用者透過 WebAuthn 註冊 FIDO。當使用者需要透過相同裝置登入時,可以使用生物特徵辨識感應器快速完成驗證。
使用者必須在所有登入 Yahoo! 的裝置上設定 FIDO 驗證機制。JAPAN。
為了推廣無密碼驗證,並考量使用者正在改用無密碼驗證,我們提供多種驗證方式。這表示不同使用者可以設定不同的驗證方法,且他們可以使用的驗證方法可能因瀏覽器而異。我們認為,如果使用者每次登入時都使用相同的驗證方法,使用體驗會更好。
為了滿足這些需求,您必須追蹤先前的驗證方法,並以 Cookie 等形式儲存這些資訊,以便將這些資訊連結至用戶端。接著,我們就能分析不同瀏覽器和應用程式如何用於驗證。系統會要求使用者根據自身設定、先前使用的驗證方法,以及所需的最低驗證層級,提供適當的驗證資訊。
2. 停用密碼
Yahoo! JAPAN 會要求使用者設定其他驗證方法,然後停用密碼,以免使用者繼續使用密碼。除了設定其他驗證方式,您也可以停用密碼驗證 (因此無法只使用密碼登入),以免使用者遭受以清單為基礎的攻擊。
我們已採取下列步驟,鼓勵使用者停用密碼。
- 在使用者重設密碼時,推廣其他驗證方法。
- 鼓勵使用者設定簡單易用的驗證方法 (例如 FIDO),並在需要頻繁驗證的情況下停用密碼。
- 建議使用者在使用電子商務付款等高風險服務前,先停用密碼。
如果使用者忘記密碼,可以執行帳戶救援程序。先前這項操作需要重設密碼。使用者現在可以選擇設定其他驗證方法,我們也鼓勵使用者這麼做。
3. 無密碼註冊帳戶
新使用者可以建立不需密碼的 Yahoo!JAPAN 帳戶。使用者必須先透過簡訊驗證註冊。建議使用者在登入後設定 FIDO 驗證。
由於 FIDO 是裝置端設定,如果裝置無法運作,可能就無法復原帳戶。因此,即使使用者已設定額外驗證機制,我們仍要求他們註冊電話號碼。
無密碼驗證的重大挑戰
密碼需要人為記憶,不受裝置限制。另一方面,我們在無密碼措施中目前推出的驗證方法會依裝置而異。這會帶來一些挑戰。
使用多部裝置時,會發生一些使用性問題:
- 使用者透過電腦使用簡訊驗證功能登入時,必須檢查手機是否有簡訊。這可能會造成不便,因為使用者必須隨時隨地都能輕鬆存取手機。
- 使用 FIDO (尤其是平台驗證器) 時,如果使用者擁有多部裝置,就無法在未註冊的裝置上進行驗證。使用者必須為每部要使用的裝置完成註冊程序。
FIDO 驗證功能與特定裝置綁定,因此使用者必須保留並使用該裝置。
- 如果服務合約遭到取消,就無法再傳送簡訊到註冊的電話號碼。
- FIDO 會將私密金鑰儲存在特定裝置上。如果裝置遺失,這些金鑰就無法使用。
Yahoo! 日本政府正採取各種措施來解決這些問題。
最重要的解決方案,就是鼓勵使用者設定多種驗證方法。這樣一來,在遺失裝置時,您就能使用其他帳戶存取裝置。由於 FIDO 金鑰會依裝置而異,因此建議您在多部裝置上註冊 FIDO 私密金鑰。
或者,使用者也可以使用 WebOTP API 將簡訊驗證碼從 Android 手機傳送到電腦上的 Chrome。
我們認為,隨著無密碼驗證機制普及,解決這些問題的重要性將會更加提升。
宣傳無密碼驗證
Yahoo! 日本自 2015 年起就致力於推動這類不需密碼的措施。這項計畫始於 2015 年 5 月取得 FIDO 伺服器認證,接著推出簡訊驗證、密碼停用功能,以及各裝置的 FIDO 支援功能。
目前,每月有超過 3 千萬名活躍使用者已停用密碼,並使用非密碼驗證方法。Yahoo! 在日本,我們從 Android 版 Chrome 開始支援 FIDO,目前已有超過 1 千萬名使用者設定 FIDO 驗證機制。
由於 Yahoo! 在日本的措施下,與忘記的登入 ID 或密碼相關的諮詢案件比率,相較於這類諮詢案件數量最高的時期,已減少 25%。此外,我們也確認,由於無密碼帳戶數量增加,未經授權的存取行為已減少。
由於 FIDO 設定簡單,因此轉換率特別高。事實上,Yahoo!日本發現,相較於簡訊驗證,FIDO 的 CVR 較高。
25 %
減少忘記憑證要求
74%
使用者成功通過 FIDO 驗證
65%
成功完成簡訊驗證
FIDO 的成功率高於簡訊驗證,平均和中位數驗證時間也更短。至於密碼,部分群組的驗證時間較短,我們懷疑這是因為瀏覽器的 autocomplete="current-password"
。
提供無密碼帳戶時,最大的難題並非新增驗證方法,而是推廣使用驗證器。如果使用無密碼服務的體驗不夠友善,轉換過程就會相當困難。
我們認為,要提升安全性,就必須先改善可用性,而這需要為每項服務推出獨特的創新功能。
結論
密碼驗證在安全性方面存在風險,也可能導致使用性不佳。如今,支援非密碼驗證的技術 (例如 WebOTP API 和 FIDO) 已更廣泛地提供,因此是時候開始採用無密碼驗證機制了。
在 Yahoo!JAPAN,採用這種做法對可用性和安全性都有明顯影響。不過,許多使用者仍在使用密碼,因此我們會持續鼓勵更多使用者改用無密碼驗證方法。我們也會持續改善產品,為使用者提供最佳無密碼驗證方法體驗。
相片來源:olieman.eth 在 Unsplash 網站上提供