和 密码 + U2F 的验证方式相比,passkey 实际上类似于在手机等设备上实现了一个 U2F,并使用它代替了两者的组合。对于普通用户来说这固然是比只用密码要安全的多的(因为 passkey证明了用户拥有一个登录了该 Apple ID 或 Google 账户的设备,并且知道其解锁密码,或是向设备以生物信息证明了身份),但由于完全去掉了密码,设备本身的安全性就很重要了,在 Google 的实现中 ,锁屏密码用于生成端到端加密的密钥,因此一个能够登录 Google 账户,并且获知了锁屏 PIN 的人便能恢复出 passkey。根据文章的说法,通过硬件保证了 PIN 只能尝试最多十次,但总体上,无论是 Google 还是 Apple 的实现都依赖于一直在线的手机本身的安全性,而 U2F 设备通常并不是连接在设备上的,因此我认为尽管对普通人来说passkey 已经足够好,但对于需要持续提高电击电压的人群来说,使用 密码 + U2F 会更安全一些。
伟大的数学家 Carl Jacobi 曾说过“反过来想,一定要反过来想”。在他看来,逆向分析问题有助于找到最佳解决方案。有鉴于此,伯克希尔·哈撒韦公司传奇合伙人查理·芒格在哈佛大学做了一场精彩的分享,主题关于探讨“怎样才能不成功”。由此,这让我开始思考——有什么最简单的方法能让你成为一名糟糕的开发者?你接下来将要看到的这些原则很主观,不尽全面,也没什么顺序。不过,如果你遵循这些原则,那么我敢保证你会成为一名糟糕的开发者。