了解 Yahoo! 日本构建了无密码身份系统。
Yahoo! JAPAN 是日本最大的媒体公司之一,提供搜索、新闻、电子商务和电子邮件等服务。超过 5,000 万用户登录 Yahoo! JAPAN 服务。
多年来,用户账号遭受了多次攻击,也出现过导致账号访问权限丢失的问题。这些问题大多与密码使用相关。
随着身份验证技术的最新进展,Yahoo! JAPAN 决定从基于密码的身份验证改用无密码身份验证。
为什么选择无密码?
由于 Yahoo! JAPAN 提供电子商务和其他与金钱相关的服务,因此一旦发生未经授权的访问或账号丢失,用户可能会遭受重大损失。
与密码相关的最常见攻击是密码列表攻击和网络钓鱼诈骗。密码列表攻击之所以常见且有效,原因之一在于许多人习惯在多个应用和网站上使用相同的密码。
以下数据是 Yahoo! 进行的一项调查的结果。JAPAN。
50 %
在 6 个或更多网站上使用相同的 ID 和密码
60 %
在多个网站上使用相同的密码
70 %
使用密码作为主要的登录方式
用户经常忘记密码,这占密码相关咨询的大部分。此外,还有用户不仅忘记了密码,还忘记了登录 ID。在高峰期,这些咨询占所有账号相关咨询的三分之一以上。
Yahoo! 日本的目标是不仅要提高安全性,还要提高易用性,同时不会给用户带来任何额外的负担。
从安全角度来看,在用户身份验证过程中消除密码可减少基于列表的攻击造成的损害;从易用性角度来看,提供一种不依赖于记住密码的身份验证方法可避免用户因忘记密码而无法登录的情况。
Yahoo! JAPAN 的无密码计划
Yahoo! 日本正在采取多项措施来推广无密码身份验证,这些措施大致可分为三类:
- 提供密码以外的替代身份验证方式。
- 密码停用。
- 无密码账号注册。
前两项计划面向现有用户,而无密码注册面向新用户。
1. 提供密码的替代身份验证方式
Yahoo! 日本提供以下密码替代方案。
此外,我们还提供电子邮件验证、密码与短信动态密码 (OTP) 相结合的验证方式,以及密码与电子邮件 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"
,请参阅 SMS OTP 表单最佳实践。

将 FIDO 与 WebAuthn 搭配使用
FIDO 与 WebAuthn 搭配使用,通过硬件身份验证器生成公钥密码对并证明所有权。当智能手机用作身份验证器时,它可以与生物识别身份验证(例如指纹传感器或人脸识别)结合使用,以执行一步式双重身份验证。在这种情况下,系统只会将签名和生物识别身份验证的成功指示发送到服务器,因此不存在生物识别数据被盗的风险。
下图显示了 FIDO 的服务器-客户端配置。客户端身份验证器使用生物识别技术对用户进行身份验证,并使用公钥加密技术对结果进行签名。用于创建签名的私钥安全地存储在 TEE(可信执行环境)或类似位置。使用 FIDO 的服务提供商称为 RP(信赖方)。

用户完成身份验证(通常通过生物识别扫描或 PIN 码)后,身份验证器会使用私钥向浏览器发送已签名的验证信号。然后,浏览器会与 RP 的网站共享该信号。
然后,RP 网站会将已签名的验证信号发送到 RP 的服务器,后者会根据公钥验证签名,以完成身份验证。
如需了解详情,请参阅 FIDO 联盟的身份验证指南。
Yahoo! 日本支持在 Android(移动应用和网站)、iOS(移动应用和网站)、Windows(Edge、Chrome、Firefox)和 macOS(Safari、Chrome)上使用 FIDO。作为一种面向消费者的服务,FIDO 几乎可以在任何设备上使用,因此是推广无密码身份验证的理想选择。

Yahoo! 日本建议用户注册 WebAuthn 的 FIDO,前提是用户尚未通过其他方式进行身份验证。当用户需要使用同一设备登录时,他们可以使用生物识别传感器快速进行身份验证。
用户必须在用于登录 Yahoo! 的所有设备上设置 FIDO 身份验证。JAPAN。
为了推广无密码身份验证,并考虑到正在弃用密码的用户,我们提供了多种身份验证方式。这意味着,不同用户可以有不同的身份验证方法设置,并且他们可以使用的身份验证方法可能因浏览器而异。我们认为,如果用户每次都使用相同的身份验证方法登录,体验会更好。
为了满足这些要求,我们需要跟踪之前的身份验证方法,并通过以 Cookie 等形式存储这些信息,将这些信息与客户端相关联。然后,我们可以分析不同浏览器和应用在身份验证方面的使用情况。系统会要求用户根据其设置、之前使用的身份验证方法以及所需的最低身份验证级别提供适当的身份验证。
2. 密码停用
Yahoo! 日本要求用户设置替代身份验证方法,然后停用密码,以便无法使用密码。除了设置备用身份验证方式之外,停用密码身份验证(从而无法仅使用密码登录)也有助于保护用户免遭基于列表的攻击。
我们已采取以下措施来鼓励用户停用密码。
- 在用户重置密码时宣传替代身份验证方法。
- 鼓励用户设置易于使用的身份验证方法(例如 FIDO),并在需要频繁进行身份验证的情况下停用密码。
- 在用户使用高风险服务(例如电子商务付款)之前,敦促用户停用密码。
如果用户忘记了自己的密码,可以进行账号恢复。以前,这需要重置密码。现在,用户可以选择设置其他身份验证方法,我们建议他们这样做。
3. 无密码账号注册
新用户可以创建无密码的 Yahoo!JAPAN 账号。用户必须先通过短信验证进行注册。用户登录后,我们会鼓励其设置 FIDO 身份验证。
由于 FIDO 是一项设备级设置,因此如果设备无法正常运行,账号可能难以恢复。因此,我们要求用户即使在设置了其他身份验证方式后,也必须保留已注册的电话号码。
无密码身份验证面临的主要挑战
密码依赖于人类记忆,并且与设备无关。另一方面,我们迄今为止在无密码计划中推出的身份验证方法都依赖于设备。这会带来多重挑战。
使用多部设备时,可能会出现一些与易用性相关的问题:
- 当用户使用短信验证在 PC 上登录时,必须查看手机上收到的短信。这可能会带来不便,因为用户需要随时都能使用手机并轻松访问手机。
- 使用 FIDO(尤其是平台验证器)时,拥有多部设备的用户将无法在未注册的设备上进行身份验证。他们必须为打算使用的每台设备完成注册。
FIDO 身份验证与特定设备相关联,因此这些设备必须由用户持有并处于有效状态。
- 如果服务合同被取消,您将无法再向注册的电话号码发送短信。
- FIDO 会将私钥存储在特定设备上。如果设备丢失,这些密钥将无法使用。
Yahoo! 日本正在采取各种措施来解决这些问题。
最重要的解决方案是鼓励用户设置多种身份验证方法。这样一来,即使设备丢失,您也可以通过其他方式访问账号。由于 FIDO 密钥依赖于设备,因此最好在多台设备上注册 FIDO 私钥。
或者,用户也可以使用 WebOTP API 将短信验证码从 Android 手机传递到 PC 上的 Chrome。
我们认为,随着无密码身份验证的普及,解决这些问题将变得更加重要。
推广无密码身份验证
Yahoo! 日本自 2015 年以来一直致力于推行这些无密码计划。首先,我们在 2015 年 5 月获得了 FIDO 服务器认证,随后推出了短信验证、密码停用功能,并为每部设备提供 FIDO 支持。
如今,已有超过 3, 000 万月活跃用户停用了密码,并开始使用无密码身份验证方法。Yahoo! 日本对 FIDO 的支持始于 Android 版 Chrome,目前已有超过 1, 000 万用户设置了 FIDO 身份验证。
由于 Yahoo! JAPAN 的举措,涉及忘记登录 ID 或密码的咨询量与此类咨询量达到最高峰的时期相比减少了 25%,并且我们还能够确认,由于免密码账号数量的增加,未经授权的访问有所减少。
由于 FIDO 设置起来非常简单,因此转化率特别高。 事实上,Yahoo! JAPAN 发现,FIDO 的 CVR 高于短信验证。
25 %
忘记凭据的请求减少
74 %
用户成功通过 FIDO 身份验证
65 %
通过短信验证成功完成
FIDO 的成功率高于短信身份验证,平均身份验证时间和中位身份验证时间也更短。至于密码,有些群组的身份验证时间较短,我们怀疑这是因为浏览器存在 autocomplete="current-password"
。

提供无密码账号的最大难点不是添加身份验证方法,而是普及身份验证器的使用。如果无密码服务的用户体验不尽如人意,则很难顺利过渡。
我们认为,要提高安全性,必须先提高易用性,而这需要针对每项服务进行独特的创新。
总结
就安全性而言,密码身份验证存在风险,并且在易用性方面也面临挑战。现在,支持无密码身份验证的技术(例如 WebOTP API 和 FIDO)已得到更广泛的应用,因此是时候开始着手实现无密码身份验证了。
在 Yahoo! 日本采取这种方法后,在易用性和安全性方面都取得了显著成效。不过,许多用户仍在使用密码,因此我们会继续鼓励更多用户改用无密码身份验证方法。我们还将继续改进产品,以便针对无密码身份验证方法优化用户体验。
照片提供者:olieman.eth;来源:Unsplash