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

瞭解 Yahoo! 日本建構了無密碼身分識別系統。

Alexandra Klepper
Alexandra Klepper
Yuya Ito
Yuya Ito

Yahoo! JAPAN 是日本最大的媒體公司之一,提供搜尋、新聞、電子商務和電子郵件等服務。超過 5,000 萬名使用者 登入 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

WebAuthn 搭配 FIDO 使用硬體驗證器產生公開金鑰密碼組,並證明擁有權。如果使用智慧型手機做為驗證器,可以搭配生物特徵辨識驗證 (例如指紋感應器或臉部辨識) 執行單步驟雙重驗證。在這種情況下,系統只會將生物特徵辨識驗證的簽章和成功指標傳送至伺服器,因此不會有生物特徵辨識資料遭竊的風險。

下圖顯示 FIDO 的伺服器/用戶端設定。用戶端驗證器會使用生物特徵辨識驗證使用者,並使用公開金鑰密碼編譯機制簽署結果。用於建立簽章的私密金鑰會安全地儲存在 TEE (受信任的執行環境) 或類似位置。使用 FIDO 的服務供應商稱為 RP (信賴方)。

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

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

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

Yahoo! JAPAN 支援 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! 如果使用者尚未透過其他方式驗證,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"

比較密碼、簡訊和 FIDO 的驗證時間。
平均而言,FIDO 驗證需要 8 秒,密碼驗證需要 21 秒,簡訊驗證則需要 27 秒。

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

我們認為,要提升安全性,首先必須改善可用性,因此需要為每項服務進行獨特的創新。

結論

密碼驗證具有安全風險,且在可用性方面也面臨挑戰。現在,支援無密碼驗證的技術 (例如 WebOTP API 和 FIDO) 越來越普及,是時候開始朝無密碼驗證邁進了。

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

相片來源:olieman.eth 發表於 Unsplash