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 應用程式 (iOS 14 以上版本)、瀏覽器 (Safari 14 以上版本)
Windows 瀏覽器 (Edge、Chrome、Firefox)
Mac (Big Sur 以上版本) 瀏覽器 (Safari、Chrome)
Yahoo!JAPAN 提示使用 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"

密碼、簡訊和 FIDO 驗證時間的比較圖表。
FIDO 平均需要 8 秒才能完成驗證,密碼則需要 21 秒,簡訊驗證則需要 27 秒。

提供無密碼帳戶時,最大的難題並非新增驗證方法,而是推廣使用驗證器。如果使用無密碼服務的體驗不夠友善,轉換過程就會相當困難。

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

結論

密碼驗證在安全性方面存在風險,也可能導致使用性不佳。如今,支援非密碼驗證的技術 (例如 WebOTP API 和 FIDO) 已更廣泛地提供,因此是時候開始採用無密碼驗證機制了。

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

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