记忆密码总是一件痛苦的事情|通行密钥是如何取代密码的?( 三 )


文章图片
建立安全通道
通行密钥的扫码操作的背后 , 一般则会将手机作为认证器与电脑通过USB、NFC或蓝牙等方式进行通讯 。 具体而言 , 电脑端会根据FIDO的协议生成一个随机字符串并编码为二维码展示 , 然后手机扫码该二维码获取该随机字符串(keyinput)并作为对称加密密钥 , 并建立一个近距离通讯的网络发布 , 电脑端使用相同的字符串连接上该网络 。 如此 , 手机和电脑便能安全地互相通讯 。
电脑需要验证时 , 可以先将口令安全地传递到手机上 , 再在手机上用私钥解答出有关的答案 , 最后再将答案安全地传回电脑端 , 并由电脑端和服务器进行通讯完成上述的认证登录过程 。
除了跨设备登录 , 通行密钥也将为传统的登录验证流程带来额外的安全性保障 。
一方面 , 任何基于物理设备生成的身份验证手段 , 在设备被盗或丢失后 , 都将面临密码泄露的风险 , 但通行密钥要求每次访问私钥的时候都经过设备的生物认证 , 安全性相对更好 。 且一个账号可以绑定多个设备的通行密钥 , 设备丢失后还可以在服务端删除对应的通行密钥以进一步加强安全性 。
另一方面 , 钓鱼网站攻击主要依靠伪装目标网站的方式来骗取用户主动输入账号密码 。 通行密钥方案的原理则决定了钓鱼网站首先需要拥有用户的公钥——我们在上面已经提到 , 公钥从生成开始便储存在目标网站的服务器上 , 除非这些钓鱼网站直接攻破这些网站的服务器 , 否则无从获取公钥 , 但如果真的可以攻破服务器为什么又要采用钓鱼手段呢;另外 , 在通行密钥的认证流程中 , 我们也从来不需要向任何人发送自己的私钥 , 仅通过二维码等近场通信手段交换答案 , 这两点可以在很大程度上阻止当前钓鱼网站的攻击 。
▍通行密钥有什么潜在不足?
通过上面的介绍 , 我们也不难看出通行密钥的不足——它并不能像某些网络报道中所宣称的那样 , 完全取代你的密码 。
在通行密钥的设计中 , 服务器需要用户先行使用密码创建一个账号 , 然后才能将用户的公钥绑定到该账号上 , 当设备损坏或丢失时 , 密码依然是通行密钥的容灾策略 。 这一点可以在Xbox帮助文档中「忘记密钥」的部分得到体现 。
记忆密码总是一件痛苦的事情|通行密钥是如何取代密码的?
文章图片
密钥的优势
同时 , 通行密钥私钥的同步和迁移也存在成本 , 毕竟我们总有更换设备的那天 。 而在FIDO和W3C的标准中 , 都没有描述当用户打算更换平台的时候如何迁移通行密钥的私钥 , 比如如何从Apple设备换到Android设备 。 当我们保存在手机的密钥数量不断增多 , 需要在新手机上重新绑定新的公钥也会花费大量的时间 。 如果操作系统服务商不开放相关权限给第三方服务 , 那迁移成本肯定不小 。
最后则是密码遗忘问题 。 由于通行密钥本身极大的便利性 , 人们会很容易使用并依赖它 。 但别忘记 , 通行密钥无法完全替代密码本身 。 年轻人或许能学会使用密码管理器 , 但是长辈们可能会由于长期没有间歇性使用密码便完全忘记了当初设定的密码 , 通行密钥的普及将会放大这一现象 。
通行密钥很好地解决了记密码的难题 , 从Apple实现的方式上而言也很优雅;虽然目前仍有一些机制上的不足 , 但随着这项技术的完善还是可以解决的 , 毕竟谁又能不喜欢一个「无密码」的世界呢 。 最后 , 关于通行密钥这项技术你还有什么想法的也欢迎在评论区进行讨论 。