Yahoo! JAPAN 的免密码身份验证技术将咨询量减少了 25%,将登录时间缩短了 2.6 倍

了解 Yahoo!Japan 打造了无密码身份系统。

Eiji Kitamura
北村英二
亚历山德拉·怀特
Alexandra White
伊藤雄也
伊藤雄也

Yahoo! JAPAN 是日本最大的媒体公司之一,提供搜索、新闻、电子商务和电子邮件等服务。超过 5000 万用户登录 Yahoo!JAPAN 服务。

多年来,有很多针对用户帐号的攻击和问题导致用户失去帐号访问权限。其中大多数问题都与使用密码进行身份验证有关。

随着身份验证技术的最新进步,Yahoo!JAPAN 已决定从基于密码的身份验证转为无密码身份验证。

为何无需密码?

由于 Yahoo!JAPAN 提供电子商务和其他与金钱相关的服务,如果用户未经授权访问或帐号丢失,可能会给用户带来严重损害。

与密码相关的最常见的攻击是密码列表攻击和钓鱼式攻击。密码列表攻击常见且有效的原因之一是,许多人习惯将相同的密码用于多个应用和网站。

以下数字是 Yahoo!Japan 中提供的大多数展示次数份额指标。

    50 %

    在 6 个或更多网站上使用相同的 ID 和密码

    60 %

    在多个网站上使用相同的密码

    70 %

    使用密码作为主要登录方式

用户经常会忘记自己的密码,这是大多数与密码相关的询问。还有一些用户询问过,他们不仅忘记了自己的登录 ID,还忘了登录 ID。在高峰期,此类查询占所有与帐号相关的查询的三分之一以上。

通过无密码登录,Yahoo!JAPAN 不仅旨在提高安全性,而且提高易用性,同时又不会给用户带来任何额外的负担。

从安全角度来看,从用户身份验证过程中消除密码可以减少基于列表的攻击造成的损害,同时,从易用性的角度来看,提供不依赖于记住密码的身份验证方法可以防止用户因忘记密码而无法登录的情况。

Yahoo! 日本的无密码计划

Yahoo! JAPAN 正在采取一系列措施来推广无密码身份验证,这大致分为三类:

  1. 提供另一种密码身份验证方法。
  2. 密码停用。
  3. 无密码账号注册。

前两个计划针对现有用户,而无密码注册针对新用户。

1. 为密码提供另一种身份验证方法

Yahoo! JAPAN 提供了以下密码的替代方法。

  1. 短信身份验证
  2. 使用 WebAuthn 的 FIDO

此外,我们还提供了身份验证方法,例如电子邮件身份验证、结合使用密码与短信动态密码(动态密码)以及结合使用密码与电子邮件动态密码等身份验证方法。

短信身份验证

短信身份验证是一种系统,允许注册用户通过短信接收六位数的身份验证码。用户收到短信后,可以在应用或网站中输入身份验证代码。

长期以来,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(移动应用和 Web)、iOS(移动应用和 Web)、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 是针对单台设备的设置,因此如果设备变得无法使用,可能很难恢复帐号。因此,我们要求用户保持注册其电话号码,即使他们设置了额外的身份验证也是如此。

无密码身份验证的关键验证

密码依赖于人体记忆,并且与设备无关。另一方面,到目前为止,在我们的无密码计划中引入的身份验证方法取决于设备。这带来了一些挑战。

在使用多个设备时,存在一些与易用性相关的问题:

  • 使用短信身份验证从 PC 登录时,用户必须查看手机是否收到短信。这可能会带来不便,因为用户手机需要随时可用且易于访问。
  • 使用 FIDO(尤其是使用平台身份验证器)时,拥有多个设备的用户将无法在未注册的设备上进行身份验证。用户必须为他们要使用的每台设备分别完成注册。

FIDO 身份验证与特定的设备相关联,因此需要用户拥有并处于活动状态。

  • 如果服务合同被取消,您将无法再向注册的电话号码发送短信。
  • FIDO 将私钥存储在特定设备上。如果设备丢失,这些密钥将无法使用。

Yahoo! JAPAN 正在采取各种措施来解决这些问题。

最重要的解决方案是鼓励用户设置多种身份验证方法。这样可以在设备丢失时提供备用帐号访问权限。由于 FIDO 密钥取决于设备,因此最好在多个设备上注册 FIDO 私钥。

或者,用户可以使用 WebOTP API 通过短信验证码从 Android 手机发送到 PC 上的 Chrome。

我们相信,随着无密码身份验证的普及,解决这些问题将变得更加重要。

推广无密码身份验证

Yahoo! 自 2015 年以来, JAPAN 一直致力于开展这些无密码计划。 此举始于 2015 年 5 月获得 FIDO 服务器认证,随后又为每台设备引入了短信身份验证、密码停用功能以及 FIDO 支持。

如今,超过 3000 万月活跃用户已禁用密码并使用非密码身份验证方法。Yahoo! JAPAN 从 Android 版 Chrome 开始支持 FIDO,现在已有超过 1000 万用户设置了 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