大多数浏览器和
Developer App 均支持流媒体播放。
-
使用 iCloud 钥匙串认证代码保护登录
了解如何在您的 app 或网站上支持设备上验证代码,以提供更加安全的登录体验。我们将探讨 iCloud 钥匙串密码管理器的最新更新,并探索验证代码、自动填充、iCloud 钥匙串同步和二指点击设置如何简化多步骤登录过程。我们将向您展示如何在您的 app 和网站中支持此过程。
资源
- Apple Platform Security
- Learn more about enhancing SMS-delivered code security with domain-bound codes
- Securing Logins with iCloud Keychain Verification Codes
相关视频
WWDC21
-
下载
嗨 我是艾琳威尔斯 验证体验团队的工程师 如果你的app或网站 曾要求某人输入密码 那么你就知道账户安全 非常重要 在本视频中 我将讨论 如何让你客户的账户更加安全 以及如何使用内置 在iCloud钥匙圈中的 新验证码生成器 让使用验证码登入变得更加容易 这是一个很广的主题 我将把它分成三个重要的部分 首先 我们将讨论密码 密码存在的一些安全问题 以及多步骤身份验证 如何帮助解决其中的一些问题 其次 我将讨论基于时间的验证码 包括我们在iOS 15和macOS Monterey的 iCloud钥匙圈中内置的 全新验证器 最后 我将回顾一下 身份验证领域 正在发生的重大变化 以及其他一些 改善人们使用验证码登入的机会
好的 让我们谈谈密码 和多步骤身份验证 密码无所不在 人们知道如何使用密码 然而 事实证明密码很难正确使用 事实上 误用密码 比正确使用密码更容易 人们经常在多个网站上 重复使用密码 或选择容易被猜到的密码 攻击者也很容易 说服别人交出密码 因此 服务面临着两难的困境: 我们如何为用户的账户增加安全性 同时让登入变得更容易?
许多服务在登入流程中增加了步骤 他们要求提供更多信息 以确认某人的身份 增加这样的步骤可以降低 拥有某人密码的攻击者 访问此人账户的机会 这也意味着攻击者不会自动访问 使用相同密码的 任何其他账户 验证码是一个常见的附加步骤 在用户输入用户名和密码后 服务会要求提供这些代码 这些代码要么通过短信、电子邮件 或推送通知发送 要么由用户手机上的 身份验证器app 或使用硬件密钥卡生成
这些代码的一个基本特征 是一次性的 因为它们不打算被记忆或存储 所以它们不像密码那样易于重复使用 不过 验证码仍然需要人工 输入 因此 它们仍然像密码一样 容易受到网络钓鱼攻击 到目前为止 发送验证码最常见方式是使用短信 几乎每个拥有手机的人 都可以接收短信 而且人们理解发送和接收短信
自动填写使得 使用这些代码变得更加容易 只需轻轻一按 即可将代码填写到任何文本字段中 但是通过短信发送的验证码 仍然存在实际问题 一方面 它们不是很安全 它们很容易受到运营商网络的窥探 和SIM交换攻击 攻击者可以在这种攻击中 接收到给其他人的信息
大家倾向于理所当然地 认为短信可以毫无差错地发送 但短信确实需要网络 因此 如果有人在飞机上或信号不佳 则信息可能需要很长时间才能送达 或者根本就没有送达
最后 短信的发送和接收 都有成本 所以发送数百万条这样的信息 是一大笔金额 另一种完成验证码的方法 是使用设备上的代码生成器 执行此操作的算法 在RFC 6238中定义 称为“基于时间的一次性密码” 或“TOTP” 它需要一个密钥和时间 并根据这些信息 生成一个简短的数字代码 通常 身份验证器app或硬件设备 会生成代码 它不需要与服务进行任何通信 这一切都发生在设备上 这在安全性和用户体验方面 是一个巨大的好处 代码的有效期很短 通常为三十秒左右 它可以降低 服务和客户的成本 因为没有人需要发送或接收短信
TOTP面临的挑战是 它的设置往往有点复杂 服务必须与其客户 共享密钥 以及其他几个参数 以便客户的设备可以开始生成代码 典型的安装过程 包括在一台设备上显示 QR码 在另一台设备上 下载身份验证器app 然后使用该app扫描QR码 这是一个繁琐的过程 很难向人们解释清楚 在设备上生成代码对每个人来说 都是一种更好的体验 但它在设置方面 仍然存在一些烦人的问题 我们仔细研究了其中的一些困难 并开发了iCloud钥匙圈的新功能 该功能将简化的设置体验 与自动填写功能结合在一起 成为非常棒的东西 作为iOS15 和macOS Monterey的新功能 我们在iCloud钥匙圈 密码管理器中 内置了基于时间的验证码生成器 我很高兴来向你展示如何运作 我们从基础开始: 查找并复制 在此设备或其他设备上使用的代码 这些都是任何身份验证器app的 重要功能 但自动填写确实让这件事大放异彩 就像通过短信传递的代码一样 自动填写只需轻按一下 即可填写生成的验证码 由于代码可立即使用 你的客户可以获得更简化 更可靠的登入体验 你也可以降低发送短信的成本 这个功能中我最喜欢的部分之一 是设置新的验证码非常容易 当你在TOTP设置页面 增加特殊链接或按钮时 使用iOS15 或macOS Monterey的用户 只需轻点几下 即可在同一设备上设置新的验证码 真的很简单 最后 验证码会在 所有设备上同步 并通过iCloud钥匙圈进行安全备份 因此 当他们在Mac上登入账户时 就不必拿出iPhone 来填写验证码了 这也非常适合账户恢复 在iCloud中安全备份验证码后 丢失设备不再意味着 失去访问账号的权限 提醒一下 iCloud钥匙圈中的所有内容 都是端到端加密的 因此除了账户所有者 Apple或任何人 都无法访问它们
启用了iCloud钥匙圈的设备 有面容ID、触控ID或密码保护 而且每台Apple设备都具有 操作系统支持的最高级别的安全性 所以钥匙圈数据是安全的 无论你现在拥有哪种设备 Apple的平台安全指南详细描述了 所有这些以及更多细节
你可以执行一些简单的操作 来确保你的客户在设置和填写代码时 获得最佳体验 对于你的设置流程 有两件事 而对于你的登入流程 只有一件事 让我们逐一聊聊 只需轻点几下 即可设置新的验证码是一件大事 更新到iOS 15后 数亿iPhone用户 将能够立即执行此操作 你可以通过在设置中 增加链接或按钮 来轻松地在他们的设备上 设置验证码屏幕
如果你已经拥有 支持使用TOTP代码登入的基础设施 你可能熟悉otpauth:URL 这些网址包含设置代码生成器 所需的所有信息 包括base32编码的密钥 每个代码中的数字数 每个代码的有效时间 以及你应该设置 为域名的发行者字段 iCloud钥匙圈使用此字段 来建议要增加验证码的账户
这与你编码到QR码中的网址相同 QR码是TOTP安装过程中 常见的部分 你可以通过 在网址前加上“apple-” 来直接连结到 iCloud钥匙圈密码管理器 你可以把这个apple otpauth:URL 放在你网页上的锚标签中 在app中 你有两个选择 你可以通过增加“link”属性 到一个指定给textView的 attributedString属性的 NSAttributedString来建立连结 或者你可以打开网址 以响应窗口场景上的 打开API的按钮点击 你可以检查 系统使否可以打开apple otpauth:URLs 并进行可用性检查 在以前的iOS版本上 你应该隐藏设置按钮 并删除设置网址
在设置过程中你可以做的第二件事是 使用光栅图片 如JPG、PNG或GIF 作为其他TOTP app扫描的QR码 Safari浏览器使用设备上的图片分析 来检测QR码 并解码其中包含的信息 如果Safari浏览器确定 QR代码包含otpauth:URL 它将提供在QR代码图片的 上下文选单中设置代码生成器 最后要做的事情 用于输入生成代码的文本字段有关 要确保自动填写知道 在哪里填写用户名、密码 和验证码 请使用内容类型注释这些文本字段 你可以在SwiftUI中使用 textContentType视图修饰符 在UIKit中使用UITextFields上的 textContentType属性 在AppKit app中 使用NSTextFields上的 contentType属性 以及在网页上 你可以将自动完成属性设置为 “one-time-code” 现在 我想退后一步 让我们看看身份验证的整体情况 并稍微讨论如何 使你现有的基础设施更加安全
身份验证机制存在于一个范围内 随着研究的深入 强度和安全性会不断提高 密码是产业的 传统基准 有很多方式 可以加强基于密码的登入流程 最常见的两种是通过短信传送的 密码加代码 和使用TOTP生成的密码加代码
服务做出的另一个决策 是是否使用联合登入提供者 该提供者将整个身份验证过程 委托给另一个服务 联合身份验证选项基于 与传统方法相同的机制 但需要人们记录的密码更少 如果在强大、安全的基础设施上 实施时 就像使用Apple登入一样 它们也可能 比那些传统机制更安全
笔这些更重要的 是完全摆脱密码 网络认证标准或“WebAuthn” 正是这样做的 相反 它使用公钥加密来保证账户安全 iOS 15和macOS Monterey包含 这项技术的预览 提供了一个可用的密码替代 我的同事加勒特有一个关于它的视频 你一定要看看 随着我们整个行业继续致力于 构建没有密码的未来 采取措施 提高你已经拥有的 可能会继续拥有一段时间的 基础设施的安全性 仍然有实际的价值 任何能让人们在网络上 更安全的事情都是好的
你可以采取的一个步骤 是通过短信传送验证码 当你评估采用基于时间的验证码时 你可能仍需要通过短信发送代码
在iOS 14和macOS Big Sur中 我们引入了一种简单的机制 通过在信息增加域绑定 使你的短信代码更能抵御网络钓鱼 域绑定是一种与自动填写通信的方式 该短信中的代码适用于特定域 当代码以这种方式绑定时 自动填写只会提供代码 如果它绑定的域 与网页的域 或你的app的关联域之一匹配 在app中 这与关联域 和通用连结的机制相同 如果你已经为这些技术 配置了app 那么你就可以增加域绑定了 你可以在我们发表的一篇 关于使用域绑定增强短信代码 安全性的文章中 了解更多相关信息
现在你已经对验证码都了如指掌 那就去做这两件重要的事情吧 首先 在你的app和网站中 采用基于时间的验证码 为你的后端增加支持 并鼓励你的客户使用它们 而不是通过短信获取代码 第二 如果你继续支持短信验证码 请在你的信息中增加域绑定 谢谢收看 [音乐]
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。