了解 Yahoo!日本建立了无密码身份系统。
Yahoo! JAPAN 是日本最大的媒体公司之一,提供搜索、新闻、电子商务和电子邮件等服务。超过 5,000 万用户登录 Yahoo!JAPAN 服务。
多年来,用户账号遭到过许多攻击,也出现过导致账号访问权限丢失的问题。其中大多数问题都与用于身份验证的密码有关。
随着身份验证技术的近期发展,Yahoo!JAPAN 决定从基于密码的身份验证 改用无密码身份验证
为什么要设置无密码?
作为 Yahoo!JAPAN 提供电子商务和其他与金钱相关的服务,如果发生未经授权的访问或账号丢失,可能会给用户造成严重损失。
与密码相关的最常见攻击是密码列表攻击和钓鱼式攻击。密码列表攻击之所以普遍且有效,其中一个原因是许多人习惯为多个应用和网站使用相同的密码。
以下图表是 Yahoo! 进行的一项调查的结果。JAPAN。
50 %
在 6 个或更多网站上使用相同的 ID 和密码
60 %
在多个网站上使用相同的密码
70 %
使用密码作为登录的主要方式
用户经常忘记密码,这类问题占据了与密码相关的咨询的大部分。还有一些用户发出了查询,不仅忘记密码,还忘记了登录 ID。在高峰期,这类咨询占所有与账号相关的咨询的三分之一以上。
通过采用无密码登录方式,Yahoo!JAPAN 旨在在不给用户增加任何额外负担的情况下,不仅提高安全性,还提高易用性。
从安全角度来看,从用户身份验证流程中移除密码可减少基于列表的攻击造成的损害;从易用性角度来看,提供不依赖于记住密码的身份验证方法可防止用户因忘记密码而无法登录的情况。
Yahoo! JAPAN 的无密码计划
Yahoo! 日本正在采取多项措施来推广无密码身份验证,这些措施大致可分为三类:
- 提供与密码不同的身份验证方式。
- 密码停用。
- 无密码账号注册。
前两个计划面向现有用户,而无密码注册面向新用户。
1. 提供与密码搭配使用的备用身份验证方式
Yahoo! 日本提供以下密码替代方案。
此外,我们还提供电子邮件身份验证、密码与短信 OTP(动态密码)组合验证,以及密码与电子邮件 OTP 组合验证等身份验证方法。
短信身份验证
短信身份验证是一种系统,允许注册用户通过短信接收 6 位数的验证码。用户收到短信后,即可在应用或网站中输入身份验证码。
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"
,请参阅短信动态密码表单最佳做法。
将 FIDO 与 WebAuthn 搭配使用
结合使用 FIDO 和 WebAuthn 时,系统会使用硬件身份验证器生成公钥密码对并证明所有权。将智能手机用作身份验证器时,可以与生物识别身份验证(例如指纹传感器或人脸识别)结合使用,以执行单步双重身份验证。在这种情况下,系统只会将生物识别身份验证的签名和成功指示发送到服务器,因此不会有生物识别数据被盗的风险。
下图显示了 FIDO 的服务器-客户端配置。客户端身份验证器使用生物识别技术对用户进行身份验证,并使用公钥加密对结果进行签名。用于创建签名的私钥会安全地存储在 TEE(可信执行环境)或类似位置。使用 FIDO 的服务提供商称为 RP(依赖方)。
如需了解详情,请参阅 FIDO 联盟的身份验证准则。
Yahoo! 日本支持在 Android(移动应用和网站)、iOS(移动应用和网站)、Windows(Edge、Chrome、Firefox)和 macOS(Safari、Chrome)上使用 FIDO。作为一项面向消费者的服务,FIDO 可在几乎任何设备上使用,因此非常适合推广无密码身份验证。
Yahoo! 日本建议用户通过 WebAuthn 注册 FIDO,前提是他们尚未通过其他方式进行身份验证。当用户需要使用同一设备登录时,可以使用生物识别传感器快速进行身份验证。
用户必须针对他们用于登录 Yahoo! 的所有设备设置 FIDO 身份验证JAPAN。
为了推广无密码身份验证,并考虑到正在逐步弃用密码的用户,我们提供了多种身份验证方式。这意味着,不同用户可以有不同的身份验证方法设置,并且他们可以使用的身份验证方法可能因浏览器而异。我们认为,如果用户每次都使用相同的身份验证方法登录,会获得更好的体验。
为满足这些要求,您必须跟踪之前的身份验证方法,并通过以 Cookie 等的形式存储此信息,将这些信息与客户端相关联。然后,我们可以分析不同的浏览器和应用如何用于身份验证。系统会要求用户根据用户的设置、以前使用的身份验证方法以及所需的最低身份验证级别提供适当的身份验证。
2. 停用密码
Yahoo! JAPAN 要求用户设置替代的身份验证方法,然后停用其密码,使之无法使用。除了设置替代身份验证之外,停用密码身份验证(这会导致用户无法只使用密码登录)还有助于保护用户免受基于列表的攻击。
我们采取了以下步骤来鼓励用户停用其密码。
- 在用户重置密码时宣传其他身份验证方法。
- 鼓励用户设置易于使用的身份验证方法(例如 FIDO),并在需要频繁进行身份验证的情况下停用密码。
- 在用户使用高风险服务(例如电子商务付款)之前,提示用户停用密码。
如果用户忘记了密码,可以运行账号恢复。以前,这需要重置密码。现在,用户可以选择设置其他身份验证方法,我们也建议他们这样做。
3. 无密码账号注册
新用户可以创建无密码的 Yahoo!JAPAN 账号。用户首先需要通过短信验证进行注册。用户登录后,我们建议他们设置 FIDO 身份验证。
由于 FIDO 是按设备设置的,因此如果设备无法使用,您可能很难恢复账号。因此,即使用户设置了额外的身份验证方式,我们也要求他们保留已注册的电话号码。
无密码身份验证的主要挑战
密码依赖于人的记忆,与设备无关。另一方面,我们在无密码计划中迄今为止推出的身份验证方法取决于设备。这带来了一些挑战。
使用多部设备时,会出现一些与易用性相关的问题:
- 使用短信身份验证从 PC 登录时,用户必须查看其手机是否有传入的短信。这可能不太方便,因为需要用户的手机随时可用且易于访问。
- 使用 FIDO(尤其是平台身份验证器)时,拥有多部设备的用户将无法在未注册的设备上进行身份验证。他们必须为打算使用的每台设备完成注册。
FIDO 身份验证与特定设备相关联,这要求这些设备仍在用户手中且处于活跃状态。
- 如果服务合同被取消,系统将无法再向注册的电话号码发送短信。
- FIDO 会将私钥存储在特定设备上。如果设备丢失,这些密钥将无法使用。
Yahoo! 日本正在采取各种措施来解决这些问题。
最重要的解决方案是鼓励用户设置多种身份验证方法。这样可以在设备丢失时提供备用账号访问权限。由于 FIDO 密钥取决于设备,因此最好在多个设备上注册 FIDO 私钥。
或者,用户也可以使用 WebOTP API 将短信验证码从 Android 手机传递到 PC 上的 Chrome。
我们认为,随着无密码身份验证的普及,解决这些问题变得更加重要。
推广无密码身份验证
Yahoo! 日本自 2015 年起就一直在推动这些无密码计划。从 2015 年 5 月获得 FIDO 服务器认证开始,我们就一直在努力提升安全性,随后又推出了短信身份验证、密码停用功能,并为每部设备都提供了 FIDO 支持。
如今,已有超过 3000 万月活跃用户停用了密码,并且使用的是非密码身份验证方法。Yahoo! 日本最早在 Android 版 Chrome 中支持 FIDO,目前已有超过 1,000 万用户设置了 FIDO 身份验证。
由于 Yahoo! JAPAN 的举措,与此类咨询数量最高的时期相比,涉及忘记登录 ID 或密码的咨询占比下降了 25%。我们还能够确认,由于无密码账号数量增加,未经授权的访问次数有所减少。
由于 FIDO 非常易于设置,因此转化率特别高。 事实上,Yahoo!JAPAN 发现 FIDO 的转化率高于短信身份验证。
25 %
忘记凭据的请求减少
74 %
用户成功通过 FIDO 身份验证
65 %
成功完成短信验证
与短信身份验证相比,FIDO 的成功率更高,平均身份验证时间和中位数身份验证时间更短。对于密码,部分组的身份验证时间较短,我们怀疑这是由于浏览器的 autocomplete="current-password"
所致。
提供无密码账号的最大难点不是添加身份验证方法,而是推广使用身份验证器。如果使用无密码服务的体验不人性化,则过渡将不容易。
我们认为,要想提高安全性,首先必须提高易用性,这需要针对每项服务进行独特的创新。
总结
密码身份验证在安全方面存在风险,在易用性方面也存在挑战。现在,支持无密码身份验证的技术(例如 WebOTP API 和 FIDO)已广泛普及,因此您应该开始着手实现无密码身份验证。
在 Yahoo!JAPAN,采用这种方法对易用性和安全性都有明显影响。不过,仍有许多用户在使用密码,因此我们将继续鼓励更多用户改用无密码身份验证方法。我们还将继续改进产品,以优化无密码身份验证方法的用户体验。
照片由 olieman.eth 拍摄,选自 Unsplash