Yahoo! JAPAN's 免密碼驗證的做法減少了 25% 的提問,登入時間減少 2.6 倍

瞭解 Yahoo!日本建立了無密碼身分驗證系統。

Yahoo! JAPAN 是日本最大的媒體公司之一,提供搜尋、新聞、電子商務和電子郵件等服務。超過 5 千萬名使用者 登入 Yahoo!Japan 服務。

多年來,對於使用者帳戶與問題過多,致使失去帳戶存取權。這些問題大多與使用密碼進行驗證有關。

隨著驗證技術的進步,Yahoo!JAPAN 已決定從密碼驗證改為無密碼驗證。

根據 Yahoo!JAPAN 提供電子商務和其他與金錢相關的服務,因此如果發生未經授權存取或帳戶遺失的情況,使用者可能會遭受重大損害。

密碼相關的常見攻擊包括密碼清單攻擊和網路釣魚詐騙。密碼清單攻擊相當常見且有效的原因之一,是因為許多人習慣在多個應用程式和網站上使用相同的密碼。

以下圖表為 Yahoo!JAPAN。

    50%

    在六個以上網站使用相同的 ID 和密碼

    60 %

    在多個網站上使用相同密碼

    70 %

    使用密碼做為主要登入方式

使用者經常忘記密碼,這類問題佔了密碼相關諮詢的大多數。另外,也有使用者詢問如何找回登入 ID 和密碼。在高峰期,這類諮詢就佔了所有帳戶相關諮詢的三分之一以上。

在此情況下,Yahoo!JAPAN 不僅希望提升安全性,也希望改善可用性,同時不對使用者造成額外負擔。

從安全性角度來看,從使用者驗證程序中移除密碼,可減少來自清單式攻擊的損害;從可用性角度來看,提供不必記住密碼的驗證方法,可避免使用者因忘記密碼而無法登入的情況。

Yahoo! 日本的無密碼措施

Yahoo! 日本正在採取多項措施推廣無密碼驗證機制,大致可分為以下三類:

  1. 提供替代密碼驗證方式。
  2. 密碼停用。
  3. 無密碼註冊帳戶。

前兩項計畫針對現有使用者,而無密碼註冊功能則針對新使用者。

1. 提供密碼以外的驗證方式

Yahoo! 日本提供下列密碼替代方案。

  1. 簡訊驗證
  2. 使用 WebAuthn 的 FIDO

此外,我們也提供電子郵件驗證、密碼搭配簡訊動態密碼 (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 (依賴方)。

使用者完成驗證 (通常是透過生物特徵辨識掃描或 PIN 碼) 後,驗證工具就會使用私密金鑰,將已簽署的驗證信號傳送至瀏覽器。接著,瀏覽器會將該信號分享給 RP 的網站。

接著,RP 網站會將已簽署的驗證信號傳送至 RP 伺服器,後者會根據公開金鑰驗證簽章,完成驗證程序。

詳情請參閱 FIDO 聯盟的驗證指南

Yahoo! 日本支援 Android (行動應用程式和網頁)、iOS (行動應用程式和網頁)、Windows (Edge、Chrome、Firefox) 和 macOS (Safari、Chrome) 上的 FIDO。做為消費者服務,FIDO 幾乎可用於任何裝置,因此是推廣無密碼驗證機制的絕佳選擇。

作業系統 支援 FIDO
Android 應用程式、瀏覽器 (Chrome)
iOS 應用程式 (iOS14 以上版本)、瀏覽器 (Safari 14 以上版本)
Windows 瀏覽器 (Edge、Chrome、Firefox)
Mac (Big Sur 以上版本) 瀏覽器 (Safari、Chrome)
Yahoo!JAPAN 就會提示您透過 FIDO 進行驗證。

Yahoo! 如果使用者尚未透過其他方式進行驗證,JAPAN 建議使用者透過 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! JAPAN 自 2015 年起就持續推行這些無密碼計劃。 這項計畫始於 2015 年 5 月取得 FIDO 伺服器認證,接著推出簡訊驗證、密碼停用功能,以及針對每部裝置提供 FIDO 支援。

目前,有超過 3 千萬名每月活躍使用者已停用其密碼,且使用非密碼驗證方式。Yahoo! 在日本,我們從 Android 版 Chrome 開始支援 FIDO,目前已有超過 1,000 萬名使用者設定 FIDO 驗證機制。

由於 Yahoo! 在日本的措施下,與忘記的登入 ID 或密碼相關的諮詢案件比率,相較於這類諮詢案件數量最高的時期,已減少 25%;我們也確認,由於無密碼帳戶數量增加,未經授權的存取行為已減少。

FIDO 的設定很簡單,它的轉換率特別高。 事實上,Yahoo!JAPAN 發現 FIDO 的轉換率高於簡訊驗證。

    25 %

    減少忘記憑證要求

    74%

    使用者成功通過 FIDO 驗證

    65%

    已完成簡訊驗證

FIDO 的成功率高於簡訊驗證,平均和中位數驗證時間也更短。至於密碼,部分群組的驗證時間較短,我們懷疑這是因為瀏覽器的 autocomplete="current-password"

密碼、簡訊和 FIDO 驗證時間的比較圖表。
FIDO 平均需要 8 秒的驗證時間,密碼則需要 21 秒,簡訊驗證作業則需要 27 秒鐘。

提供無密碼帳戶的最困難並不是加入驗證方法,而是常用驗證器。如果使用無密碼服務的體驗不夠友善,轉換過程就會相當困難。

我們認為,要提升安全性,就必須先改善可用性,而這需要為每項服務推出獨特的創新功能。

結論

密碼驗證具有安全性風險,在可用性方面也是一些挑戰。如今,支援非密碼驗證的技術 (例如 WebOTP API 和 FIDO) 已更廣泛地提供,因此是時候開始採用無密碼驗證機制了。

在 Yahoo!JAPAN,採用這種做法對可用性和安全性都有明顯影響。不過,許多使用者仍在使用密碼,因此我們會持續鼓勵更多使用者改用無密碼驗證方法。我們也會持續改善產品,為使用者提供最佳無密碼驗證方法體驗。

相片來源:olieman.eth 在 Unsplash 網站上提供