苹果提出OTP短信格式草案,获Google支持

苹果近日针对包含双重验证(two-factor authentication,2FA)一次性密码(one-time password,OTP)的短信,提出新的格式草案,减少以短信发送动态密码的安全风险,也获得Google的支持。

许多网站使用一次性密码作为身份验证,而短信是发送OTP最常见的机制,但是一如许多研究显示,以短信发送OTP安全风险很高,可能遭到外人拦截以发动中间人攻击(man in the middle),取得用户的登录帐密,或是篡改目标URL而引导用户到钓鱼网站。而这项草案即希望能降低短信发送OTP的部分风险。

在现有短信发送OTP的做法下,例如一个名为foobar.com的网站通过发送747723的OTP到用户手机,再由用户将这组数字在https:// foobar. com网站输入。但因为目前发送OTP的短信没有标准文本格式,因此想用2FA登录的网站,必须使用启发式(heuristics)算法,来寻找短信文本内的数字密码,以及将这组密码和网站进行关联。问题是启发式算法容易出错也很危险。

苹果Safari Web技术部门的工程师Theresa O’Connor指出,苹果提出的文本格式草案目标有二。一是不用依赖启发式算法从短信截取出OTP。她认为用户不需手动将OTP复制、拷贝到浏览器上的方式,才是最理想做法。目标二是将OTP稳定地关联到特定目标网站,OTP是由哪个网站发出,最好也只能用于该网站。

苹果草案提出一种很简单的短信格式来解决上述问题。第一行是人类可读取的文本,这可由网站自行决定要不要加。此后则是以将OTP和发送OTP的网站列于一行,如“747723是您Foobar的验证码”。第三行,也就是最后一行则提供说明,像是“@foobar.com #747723。”

苹果认为这个格式可以提升以启发式算法从短信截取OTP,以及将OTP关联到来源网站过程的稳定性。此外,还可以增加浏览器提供的2FA验证辅助功能(即AutoFill功能),并减少用户误上钓鱼网站输入OTP的风险。

但苹果也强调,这种新式短信格式只能减少网络钓鱼风险,无法解决短信被拦截的弊病。

这项草案需要其他浏览器的支持。除了苹果Safari,Google Chrome团队也表达支持,也在早期制订过程提供了意见,但Firefox似乎未加入支持。

不过为避免短信OTP被拦截的风险,用户还可以选择其他方式,如以Google Authenticator等App产生密码,或用Google、Yubico提供完全不必使用密码的硬件密钥。Google上周甚至把开发硬件安全密钥的固件,以OpenSK项目开源,让独立开发人员或硬件厂商也能开发密钥设备。