了解 Yahoo!Japan 打造了无密码身份验证系统。
Yahoo! JAPAN 是日本最大的媒体公司之一, 搜索、新闻、电子商务和电子邮件等服务。超过 5000 万用户 请登录到 Yahoo!JAPAN 服务。
多年来,针对用户账号的攻击和问题层出不穷 导致他们失去账号访问权限这些问题大多与密码使用有关 进行身份验证。
随着身份验证技术的近期发展,Yahoo!JAPAN 决定 从基于密码的身份验证转变为无密码身份验证。
为什么要设置无密码?
由于 Yahoo!JAPAN 提供电子商务和其他与货币相关的服务, 在未经授权的情况下使用或 账号流失。
与密码相关的最常见的攻击是密码列表攻击, 钓鱼诈骗。密码列表攻击之所以常见的原因之一 多数人习惯使用同一个密码登录多个网站 应用和网站
以下数字是 Yahoo!JAPAN。
50 个 百分比
在六个或更多网站上使用相同的 ID 和密码
60 个 百分比
在多个网站上使用相同的密码
70 个 百分比
使用密码作为主要登录方式
用户经常忘记密码,导致大多数问题 与密码相关的问题。还有一些用户查询 除了密码之外,用户可能忘记了登录 ID。在高峰期 问询数量占所有与账号相关的咨询的三分之一以上。
采用无密码登录方式后,Yahoo!JAPAN 的目标不仅是提高安全性, 而且不会给用户带来任何额外负担。
从安全角度考虑,即删除用户密码 身份验证流程可以减少列表式攻击造成的损害, 从易用性角度考虑,提供的身份验证方法不依赖于 有助于防止用户无法登录 因为他们忘记了密码。
Yahoo! 日本的无密码计划
Yahoo! JAPAN 正在采取一些措施来推广无密码登录 身份验证,大致可分为三类:
- 提供替代密码身份验证方法。
- 密码停用。
- 无密码账号注册。
前两项计划针对的是现有用户,同时无密码 。
1. 提供密码的替代身份验证方法
Yahoo! JAPAN 提供了以下密码替代方案。
此外,我们还提供了身份验证方法,例如电子邮件 身份验证、密码结合短信动态密码(动态密码) 结合使用密码和电子邮件动态密码。
短信身份验证
短信身份验证是一种系统,可让注册用户 通过短信发送 6 位数的身份验证码。用户收到短信后 他们可以在应用或网站中输入身份验证码。
![](https://web.developers.google.cn/static/case-studies/yahoo-japan-identity/image/h08m9uzVJg9uNzM3LE5k.jpg?authuser=7&hl=hr)
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"
,
请查看短信动态密码表单最佳做法。
![](https://web.developers.google.cn/static/case-studies/yahoo-japan-identity/image/Szaf3C0hfjLNkTWAVf9B.png?authuser=7&hl=hr)
将 FIDO 与 WebAuthn 搭配使用
FIDO 与 WebAuthn 搭配使用,使用硬件身份验证器生成公钥 加密对并证明所有权。将智能手机用作 也可以与生物识别验证(如 指纹传感器或人脸识别),以执行一步双重身份验证 身份验证。在这种情况下,只有签名和成功指示 发送给服务器,所以不存在风险 生物识别数据盗窃
下图显示了 FIDO 的服务器-客户端配置。通过 客户端身份验证器通过生物识别技术对用户进行身份验证, 使用公钥加密的结果。用于创建 签名会安全地存储在 TEE(可信执行环境)中 或类似位置使用 FIDO 的服务提供商称为 RP (依赖方)。
![](https://web.developers.google.cn/static/case-studies/yahoo-japan-identity/image/PkFYWnOZABjPu7Zc7rXN.png?authuser=7&hl=hr)
用户进行身份验证(通常使用生物识别扫描或 PIN 码)后,身份验证器会使用私钥向浏览器发送已签名的验证信号。然后,浏览器会与 RP 的网站共享该信号。
然后,RP 网站将已签名的验证信号发送到 RP 的服务器,服务器会根据公钥验证签名以完成身份验证。
有关详情,请参阅 FIDO 联盟的身份验证准则。
Yahoo! JAPAN 支持 Android(移动应用和网站)、iOS(移动应用)上的 FIDO Windows(Edge、Chrome、Firefox)和 macOS(Safari、Chrome)。作为 FIDO 几乎可在任何设备上使用,这使得 FIDO 是一个很好的选择, 用于提升无密码身份验证的选项。
<ph type="x-smartling-placeholder">![](https://web.developers.google.cn/static/case-studies/yahoo-japan-identity/image/iq0dODcbp3WcPUGTwHkl.png?authuser=7&hl=hr)
Yahoo! JAPAN 建议用户使用 WebAuthn 注册 FIDO(如果用户已使用 尚未通过其他方式进行身份验证。当用户需要登录时 他们就可以利用生物识别传感器快速进行身份验证。
用户必须为其用于登录的所有设备设置 FIDO 身份验证 新版 Search Ads 360JAPAN。
提倡无密码身份验证,并顾及到 我们提供了多种方法 身份验证。也就是说,不同的用户 身份验证方法设置,以及可以使用的身份验证方法 可能因浏览器而异。我们相信,如果 用户每次都使用相同的身份验证方法登录。
为了满足这些要求,您需要跟踪之前的身份验证 方法,并通过以 然后我们可以分析不同浏览器和应用程序 用于身份验证。要求用户提供 之前的身份验证 使用的方法以及所需的最低身份验证级别。
2. 密码停用
Yahoo! JAPAN 要求用户设置替代的身份验证方法, 然后停用其密码,使其无法使用。除了设置 设置替代身份验证,停用密码身份验证(因此 使用户无法仅凭密码登录)有助于保护用户 列表式攻击
我们采取了以下步骤,鼓励用户停用自己的 密码。
- 在用户重置密码时推荐其他身份验证方法。
- 鼓励用户设置易于使用的身份验证方法(例如 FIDO),并在需要频繁使用新密码的情况下停用密码 身份验证。
- 怂恿用户在使用高风险服务之前停用其密码; 例如电子商务付款
如果用户忘记了密码,可以运行账号恢复。先前 其中涉及密码重置。现在,用户可以选择 身份验证方法,我们建议他们这样做。
3. 无密码账号注册
新用户无需密码即可创建 Yahoo!JAPAN 账号。用户至上 使用短信身份验证进行注册。在用户登录后 鼓励用户设置 FIDO 身份验证。
由于 FIDO 是针对单个设备的设置,因此恢复账号可能会比较困难, 设备无法操作。因此,我们要求用户 即使他们设置了额外的身份验证,也仍然必须注册电话号码。
无密码身份验证的关键验证
密码依赖于人类记忆,并且与设备无关。另一方面 到目前为止,我们在无密码计划中引入的身份验证方法 取决于设备这带来了一些挑战。
当使用多台设备时,存在一些与易用性相关的问题:
- 使用短信身份验证从 PC 登录时,用户必须检查自己的 接收短信。这可能会给您带来不便, 要求使用者的手机必须随时可用且易于访问。
- 使用 FIDO 时,尤其是使用平台身份验证器时, 设备将无法在未注册的设备上进行身份验证。 您必须为打算使用的每台设备完成注册。
FIDO 身份验证与特定设备相关联,因此需要将设备保持在 用户拥有和活跃的信息。
- 如果服务合同被取消,您将无法再发送 向注册的电话号码发送短信。
- FIDO 将私钥存储在特定设备上。如果设备丢失,这些 密钥不可用。
Yahoo! JAPAN 正在采取各种措施来解决这些问题。
最重要的解决方案是鼓励用户设置多个 身份验证方法。这样,当设备在运行 会丢失由于 FIDO 密钥取决于设备,因此最好也使用 在多个设备上注册 FIDO 私钥。
用户也可以使用 WebOTP API 通过短信验证 代码从 Android 手机转移到 PC 上的 Chrome 浏览器。
我们相信,随着我们不断优化和提升, 无密码身份验证的攻击。
提升无密码身份验证
Yahoo! JAPAN 自 2015 年以来一直致力于这些无密码计划。 我们于 2015 年 5 月获得了 FIDO 服务器认证, 随后是短信身份验证、密码停用 功能,以及针对每款设备的 FIDO 支持。
如今,已有超过 3000 万月活跃用户停用了其 并且使用的是非密码身份验证方法。Yahoo! JAPAN 对 FIDO 的支持始于 Android 上的 Chrome,现在已有超过 1, 000 万 用户已设置 FIDO 身份验证。
得益于 Yahoo!在日本的举措中,当前的查询比例 与 此类咨询数量达到高峰的时期, 可以确认未经授权的访问已由于 无密码账号数量增加。
由于 FIDO 设置起来非常简单,因此它的转化率特别高。 事实上,Yahoo!JAPAN 发现 FIDO 的转化率高于短信 身份验证。
25 个 百分比
索取忘记凭据的请求数量减少
74 个 百分比
用户成功通过 FIDO 身份验证
65 岁 百分比
通过短信验证成功
FIDO 比短信身份验证的成功率更高,平均和
身份验证时间中位数。至于密码,有些群组的
我们怀疑这是浏览器
autocomplete="current-password"
。
![密码、短信和 FIDO 身份验证时间的图表比较。](https://web.developers.google.cn/static/case-studies/yahoo-japan-identity/image/graph-comparison-authent-4d76bf7a092f7.png?authuser=7&hl=hr)
提供无密码账号的最大困难在于 但广泛使用身份验证器。 如果使用无密码服务的体验不够人性化, 可能并不容易
我们认为,要提高安全性,首先必须提高易用性, 这就需要每项服务都有独特的创新。
总结
密码身份验证有安全风险, 需要改进的方面现在,支持 WebOTP API 和 FIDO 等非密码身份验证 是时候开始采用无密码身份验证了。
在 Yahoo!这种方法对日本和日本均有明显的 易用性和安全性不过,许多用户仍在使用密码, 将继续鼓励更多用户改用无密码身份验证 方法。我们还将继续改进我们的产品以优化用户 无密码身份验证方法。
照片提供者:olieman.eth,来源:Unsplash