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

瞭解 Yahoo!日本打造出無密碼的身分識別系統。

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

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

隨著驗證技術日新月異,Yahoo!JAPAN 決定從密碼驗證改為無密碼驗證。

為何要不需要密碼?

Yahoo!JAPAN 提供電子商務和其他金錢相關服務,萬一使用者未經授權存取或遺失帳戶,就有可能受到嚴重損害。

與密碼相關的最常見攻擊是密碼清單攻擊和網路釣魚詐騙。密碼清單攻擊很常見且有效的原因之一,就是許多人習慣將相同密碼用於多個應用程式和網站。

以下圖表是由 Yahoo!Japan 提供的大多數曝光比重指標製作報表。

    50 %

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

    60 %

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

    70 %

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

使用者經常忘記自己的密碼,而這在大多數密碼相關問題中都會納入考量。也有使用者向我們詢問,他們除了密碼之外,還忘了登入 ID。這些查詢在尖峰期更常用於所有帳戶相關問題的三分之一

在此情況下,Yahoo!JAPAN 旨在改善安全性 同時提高可用性,且不會對使用者造成額外負擔

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

Yahoo! JAPAN 的無密碼計劃

Yahoo! JAPAN 採取了多項步驟來推廣無密碼驗證,大致分為三個類別:

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

前兩項針對現有使用者的計畫,無密碼註冊的目標則是新使用者。

1. 提供密碼的替代驗證方式

Yahoo! JAPAN 提供下列密碼替代方式。

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

此外,我們還提供電子郵件驗證、密碼與簡訊動態密碼 (動態密碼) 結合的驗證方法,以及密碼與電子郵件動態密碼的組合。

簡訊驗證

簡訊驗證是一項系統,可讓已註冊的使用者透過簡訊接收 6 位數驗證碼。使用者收到簡訊後,即可在應用程式或網站中輸入驗證碼。

Apple 向來允許 iOS 讀取簡訊,並從文字內文建議驗證碼。最近,您可以在輸入元素的 autocomplete 屬性中指定「一次性代碼」來使用建議。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",請參閱簡訊動態密碼表單最佳做法

使用 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 應用程式 (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! JAPAN 已採取多項措施來解決這些問題。

最重要的解決方案是鼓勵使用者設定多種驗證方法。以便在裝置遺失時提供替代帳戶存取權。由於 FIDO 金鑰因裝置而異,因此建議您在多部裝置上註冊 FIDO 私密金鑰。

此外,使用者可以運用 WebOTP API 將簡訊驗證碼,從 Android 手機傳送至電腦的 Chrome。

我們相信,隨著無密碼驗證不斷擴散,解決這些問題將更加重要。

提倡無密碼驗證

Yahoo! JAPAN 自 2015 年起就持續推行這些無密碼計劃。 我們從 2015 年 5 月收購 FIDO 伺服器認證開始,隨後推出了簡訊驗證、密碼停用功能,以及每部裝置的 FIDO 支援。

目前,有超過 3 千萬名每月活躍使用者已停用其密碼,且使用非密碼驗證方式。Yahoo! JAPAN 支援 FIDO,以 Android 裝置上的 Chrome 為基礎,而現在有超過 1, 000 萬名使用者設定了 FIDO 驗證機制。

但由於 Yahoo!JAPAN 相關措施時,相較於這類問題發生次數最高的情況,與忘記登入 ID 或密碼有關的問題比例減少了 25%,我們也確認無密碼的帳戶數量增加,造成未經授權的存取遭拒。

FIDO 容易設定,所以轉換率特別高。 事實上,Yahoo!JAPAN 發現 FIDO 的轉換率高於簡訊驗證。

    25 %

    針對忘記的憑證發出的要求數量減少 75%

    74 %

    使用者透過 FIDO 驗證成功

    65 %

    已完成簡訊驗證

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

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

提供無密碼帳戶的最困難並不是加入驗證方法,而是常用驗證器。如果使用無密碼服務的經驗不容易使用,轉換過程並不簡單。

Google 認為如要提升安全性,就必須先提高可用性,不過每項服務都需要獨特的創新技術。

結論

密碼驗證具有安全性風險,在可用性方面也是一些挑戰。如今,支援非密碼驗證的技術 (例如 WebOTP API 和 FIDO) 已受到支援,現在要開始進行無密碼驗證了。

請前往 Yahoo!JAPAN,對可用性和安全性都有一定的影響。不過,許多使用者仍在使用密碼,因此我們會繼續鼓勵更多使用者改用無密碼的驗證方法。我們也會持續改善產品,改善無密碼驗證方法的使用者體驗。

相片由 olieman.eth 提供,發表於 Unsplash 網站上