瞭解 Yahoo! 日本建構了無密碼身分識別系統。
Yahoo! JAPAN 是日本最大的媒體公司之一,提供搜尋、新聞、電子商務和電子郵件等服務。超過 5,000 萬名使用者 登入 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
WebAuthn 搭配 FIDO 使用硬體驗證器產生公開金鑰密碼組,並證明擁有權。如果使用智慧型手機做為驗證器,可以搭配生物特徵辨識驗證 (例如指紋感應器或臉部辨識) 執行單步驟雙重驗證。在這種情況下,系統只會將生物特徵辨識驗證的簽章和成功指標傳送至伺服器,因此不會有生物特徵辨識資料遭竊的風險。
下圖顯示 FIDO 的伺服器/用戶端設定。用戶端驗證器會使用生物特徵辨識驗證使用者,並使用公開金鑰密碼編譯機制簽署結果。用於建立簽章的私密金鑰會安全地儲存在 TEE (受信任的執行環境) 或類似位置。使用 FIDO 的服務供應商稱為 RP (信賴方)。

使用者完成驗證 (通常是透過生物特徵辨識掃描或 PIN 碼) 後,驗證器會使用私密金鑰將簽署的驗證信號傳送至瀏覽器。接著,瀏覽器會將該信號分享給 RP 的網站。
RP 網站接著會將已簽署的驗證信號傳送至 RP 的伺服器,後者會根據公開金鑰驗證簽章,完成驗證程序。
詳情請參閱 FIDO 聯盟的驗證指南。
Yahoo! JAPAN 支援 Android (行動應用程式和網頁)、iOS (行動應用程式和網頁)、Windows (Edge、Chrome、Firefox) 和 macOS (Safari、Chrome) 上的 FIDO。FIDO 是消費者服務,幾乎可在任何裝置上使用,因此是推廣無密碼驗證的理想選擇。

Yahoo! 如果使用者尚未透過其他方式驗證,JAPAN 建議他們使用 WebAuthn 註冊 FIDO。使用者下次在同一部裝置上登入時,即可透過生物特徵辨識感應器快速完成驗證。
使用者必須在所有用來登入 Yahoo! 的裝置上設定 FIDO 驗證。JAPAN.
為推廣無密碼驗證,並體諒正在改用無密碼驗證的使用者,我們提供多種驗證方式。也就是說,不同使用者可以有不同的驗證方法設定,且可用的驗證方法可能因瀏覽器而異。我們認為,使用者每次都採用相同的驗證方法登入,體驗會更優質。
為符合這些規定,您必須追蹤先前的驗證方法,並以 Cookie 等形式儲存這項資訊,將其連結至用戶端。這樣一來,我們就能分析不同瀏覽器和應用程式的驗證方式。系統會根據使用者的設定、先前使用的驗證方法,以及最低驗證層級要求,請使用者提供適當的驗證。
2. 停用密碼
Yahoo! JAPAN 會要求使用者設定替代驗證方法,然後停用密碼,避免密碼遭到盜用。除了設定替代驗證方式,停用密碼驗證 (因此無法只使用密碼登入) 也有助於保護使用者免受清單式攻擊。
我們已採取下列措施,鼓勵使用者停用密碼。
- 在使用者重設密碼時,宣傳替代驗證方法。
- 鼓勵使用者設定容易使用的驗證方法 (例如 FIDO),並在需要頻繁驗證的情況下停用密碼。
- 在使用者使用電子商務付款等高風險服務前,促請他們停用密碼。
如果使用者忘記密碼,可以執行帳戶救援程序。先前這項作業需要重設密碼。現在使用者可以選擇設定其他驗證方法,我們也建議這麼做。
3. 無密碼註冊帳戶
新使用者可以建立免密碼的 Yahoo! JAPAN 帳戶。使用者必須先透過簡訊驗證註冊,登入後,我們建議使用者設定 FIDO 驗證。
由於 FIDO 是裝置專屬設定,如果裝置無法運作,帳戶可能難以復原。因此,即使使用者已設定額外驗證方式,我們仍要求他們保留已註冊的電話號碼。
無密碼驗證的主要挑戰
密碼需要靠人類記憶,且與裝置無關。另一方面,無密碼計畫目前導入的驗證方法都必須使用特定裝置。這帶來了幾項挑戰。
使用多部裝置時,可能會遇到一些可用性相關問題:
- 如果使用者透過電腦登入,並使用簡訊驗證登入,就必須查看手機收到的簡訊。這可能不太方便,因為使用者必須隨時都能使用手機並輕鬆存取。
- 使用 FIDO (尤其是平台驗證器) 時,使用者無法在未註冊的裝置上進行驗證。使用者必須為每部裝置完成註冊程序。
FIDO 驗證與特定裝置綁定,因此裝置必須由使用者持有並保持啟用狀態。
- 如果取消服務合約,您將無法再傳送簡訊至已註冊的電話號碼。
- FIDO 會將私密金鑰儲存在特定裝置上。如果裝置遺失,這些金鑰就無法使用。
Yahoo! JAPAN 正在採取各種措施來解決這些問題。
最重要的解決方法是鼓勵使用者設定多種驗證方法。裝置遺失時,您可以使用這項資訊存取帳戶。由於 FIDO 金鑰與裝置相關,因此建議在多部裝置上註冊 FIDO 私密金鑰。
或者,使用者可以使用 WebOTP API,將簡訊驗證碼從 Android 手機傳送到電腦上的 Chrome。
我們認為,隨著無密碼驗證普及,解決這些問題將變得更加重要。
宣傳無密碼驗證
Yahoo! 自 2015 年起,日本政府便致力於推動無密碼計畫。 這項計畫始於 2015 年 5 月取得 FIDO 伺服器認證,隨後推出簡訊驗證、停用密碼功能,以及各裝置的 FIDO 支援功能。
目前已有超過 3, 000 萬名每月活躍使用者停用密碼,並改用非密碼驗證方法。Yahoo! 日本的 FIDO 支援功能從 Android 版 Chrome 開始,目前已有超過 1, 000 萬名使用者設定 FIDO 驗證。
Yahoo! 日本的措施奏效後,與忘記登入 ID 或密碼相關的查詢比例,已較這類查詢數量最高時減少 25%,且無密碼帳戶數量增加後,未經授權的存取行為也隨之減少。
由於 FIDO 設定非常簡單,因此轉換率特別高。 事實上,Yahoo! JAPAN 發現 FIDO 的轉換率高於簡訊驗證。
25 %
忘記憑證的要求減少
74 %
使用者成功透過 FIDO 驗證
65 %
透過簡訊驗證成功
FIDO 的成功率高於簡訊驗證,平均和中位數驗證時間也較短。至於密碼,部分群組的驗證時間較短,我們懷疑這是因為瀏覽器的 autocomplete="current-password"
。

提供無密碼帳戶的最大困難,並非新增驗證方法,而是普及驗證器使用。如果無密碼服務的使用體驗不夠友善,轉換過程就不會輕鬆。
我們認為,要提升安全性,首先必須改善可用性,因此需要為每項服務進行獨特的創新。
結論
密碼驗證具有安全風險,且在可用性方面也面臨挑戰。現在,支援無密碼驗證的技術 (例如 WebOTP API 和 FIDO) 越來越普及,是時候開始朝無密碼驗證邁進了。
Yahoo! JAPAN,採取這種做法對可用性和安全性都有明顯影響。不過,許多使用者仍在使用密碼,因此我們會繼續鼓勵更多使用者改用無密碼驗證方法。我們也會持續改善產品,盡可能提升使用者體驗,讓使用者能順利採用免密碼驗證方法。
相片來源:olieman.eth 發表於 Unsplash