了解 Yahoo!日本建立了无密码身份系统。
Yahoo! JAPAN 是日本最大的媒体公司之一,提供搜索、新闻、电子商务和电子邮件等服务。目前有超过 5000 万名 用户登录到 Yahoo!JAPAN 服务。
近年来,用户帐号不断遭到攻击和问题,导致帐号失去访问权限。其中大多数问题都与使用密码进行身份验证有关。
随着身份验证技术的最新发展,Yahoo!JAPAN 已决定从基于密码的身份验证转为无密码的身份验证。
为何无需设置密码?
由于 Yahoo!JAPAN 提供电子商务和其他与金钱相关的服务,因此如果发生未经授权的访问或帐号丢失,可能会给用户造成严重损害。
与密码相关的最常见的攻击是密码列表攻击和钓鱼式攻击。密码列表攻击常见且有效的原因之一是,许多人习惯于对多个应用和网站使用相同的密码。
以下数字是 Yahoo!JAPAN。
50 %
在六个或更多网站上使用相同的 ID 和密码
60 %
在多个网站上使用同一密码
70 %
将密码用作主要登录方式
用户经常会忘记自己的密码,这是大多数与密码相关的询问。此外,除了密码之外,还忘记了登录 ID 的用户提出了查询。在高峰期,这些查询在与帐号相关的查询中所占的比例超过三分之一。
通过无密码登录,Yahoo!JAPAN 旨在提高安全性,同时提高易用性,同时又不会给用户带来任何额外的负担。
从安全角度来看,从用户身份验证过程中消除密码可以降低基于列表的攻击造成的损失,并且从易用性的角度来看,提供不依赖于记住密码的身份验证方法可以防止用户因忘记密码而无法登录的情况。
Yahoo! 日本的无密码计划
Yahoo! JAPAN 正在采取多种措施来推广无密码身份验证,这大致分为三类:
- 为密码提供一种替代身份验证方式。
- 密码停用。
- 注册无密码账号。
前两项计划针对的是现有用户,而无密码注册计划针对的是新用户。
1. 为密码提供备用的身份验证方式
Yahoo! JAPAN 提供了以下密码替代方案。
此外,我们还提供各种身份验证方法,例如电子邮件身份验证、密码结合短信动态密码(动态密码)以及密码与电子邮件动态密码结合使用。
短信身份验证
短信身份验证是一种系统,可让注册用户通过短信接收六位数的身份验证码。用户收到短信后,可以在应用或网站中输入身份验证码。
长期以来,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"
,请参阅短信动态密码表单最佳做法。
将 FIDO 与 WebAuthn 搭配使用
结合 WebAuthn 的 FIDO 功能使用硬件身份验证器生成公钥加密对并证明所有权。当智能手机用作身份验证器时,可以结合生物识别身份验证(如指纹传感器或人脸识别),以执行一步双重验证。在这种情况下,只有来自生物识别身份验证的签名和成功指示才会发送到服务器,因此不存在生物识别数据盗用的风险。
下图显示了 FIDO 的服务器-客户端配置。客户端身份验证器通过生物识别技术对用户进行身份验证,并使用公钥加密对结果进行签名。用于创建签名的私钥安全地存储在 TEE(可信执行环境)或类似位置。使用 FIDO 的服务提供商称为 RP(依赖方)。
如需了解详情,请参阅 FIDO 联盟的身份验证准则。
Yahoo! JAPAN 支持 Android(移动应用和 Web)、iOS(移动应用和 Web)、Windows(Edge、Chrome、Firefox)和 macOS(Safari、Chrome)中的 FIDO。作为一项消费者服务,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 对 FIDO 的支持从 Android 版 Chrome 开始,现在已有超过 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 上提供