从Ant Design GitHub失窃案谈开去:国内有可用的2FA吗

TL;DR

本文是 https://canokeys.org 或(Telegram: @canokeys)的硬广,但本文并非 Canokeys 官方发布。

事件本身

2021-02-15,UTC+8,早晨的群友发现 https://ant.design 404,后官方推特向GitHub反馈表明帐号失窃,相关项目被转移。

群友讨论

不少群友在感叹相关人员水平之后(延伸材料),灵魂发问:为啥该失窃员工没有对帐号开启2FA(多重因素验证)呢。我的简单回答是:很难,或者没法合法开启。本文不探讨「相关人员水平」或「相关组织管理(指组织强制所有成员开启2FA)」的问题,我们来探讨一下「国内的2FA可用性」。

GitHub 2FA

我们知道,现代的登录系统,除了密码,还需要通过其他的验证方式来验证「登录者是帐号所有者」,例如「SMS验证码」,「验证应用(Authenticator App)」,「安全密钥」等,这些验证方式自然也被GitHub所使用,但是,国内的GitHub用户真的能「合法、廉价、易用」地使用相关方式吗。

  • SMS验证码:在GitHub该界面中,没有+86用户的选项,而要获取其他区号,除了少部分人(相对于GitHub国内用户基数),基本无法「合法」做到。
  • 验证应用(Authenticator App):前有Google Authenticator后有Microsoft Authenticator,更别说开源的Authy,andOTP等工具,但是,除了Google Play商店或者F-droid,我们基本无法在国内的应用商店中找到这些软件,就算找到了,相关软件也需要Google的服务框架(例如小米应用商店中的Microsoft Authenticator),所以这不「易用」,甚至不「合法」,而有些软件是需要搭配硬件密钥使用的(Yubikey,Nitrokey,Google Titan),这些并不「廉价」,甚至进口这些硬件密钥似乎也不「合法」
  • 安全密钥:也就上文提到的那些硬件密钥,同时还有 Solokeys,U2F-zero 等相关密钥,但这些即不「廉价」(一个用户需要多个密钥用作备份),也不能「大批量购买」(对企业用户来说,这是最大的阻碍,而Ant Design是企业用户)

糟糕透顶的国内密码学实践

上述问题,可以推广到大量实践了2FA的应用。

登录认证,作为基础设施中的基础设施,是应该有一套完整的实践的,但现在各个环节缺失,帐号的安全性如何保障?

登录认证,作为基础设施中的基础设施,是应该有一套「自主可控」的软件与硬件系统的(这里是严肃的「自主可控」,而不是只是外国软件套皮)。比如说,国内的企业会信任Yubikey吗,会信任Nitrokey吗,依赖于Google Play的「验证应用」能被国内用户、国内企业使用吗。

国内目前的相关2FA实践是手机验证码,但似乎这成了必选项,而不是可选项,理想中的2FA应该是其他的验证因素也足够验证,这样大家为「手机不在身边」,「手机号被盗以至于银行卡被盗刷」而烦恼。另外值得一提的是「网银盾」这种2FA,需要更现代、开源的实现,比如WebAuthn,而不是国产不知名,无法审核的插件。

国内的2FA解决方案

CanoKey由清华大学的一些老师/学生(同时也是开源社区的大佬)所写,有软硬件(包括PCB设计)皆开源的stm32版本,也有使用密码学芯片的发售版本(其核心功能一致,只是速度较大差别),可供国内广大用户、企业选用,满足其硬件密钥乃至安全性需求。

这是「合法」的(参考《密码法》),「廉价」的(比市场同类商品价格低,功能更加丰富),「易用」的(相关软件已经发布)。

同时,用户可以体验虚拟硬件密钥,进行构建/购买前的测试与游玩!同时也欢迎用户参与核心代码库的贡献,您的贡献可能出现在下一版的发售中!