告别密码验证

最近,微软宣布所有用户现可从其帐户中完全删除密码。用户可以通过在手机上安装 Microsoft Authenticator 应用来接收验证码进行登录。详见《微软账户进入无密码时代,现可将你的密码彻底删除》:

微软副总裁 Vasu Jakkal 表示,“近年来,我们一直都在强调无密码机制的重要性。今天我在这里很高兴地向大家宣布,这项愿景终于有了实质性进展。从今天开始,您可以将你微软账户中的密码彻底删除。”

对于这么做的原因,微软表示单纯的密码机制已经成为了安全系统的软肋,每年仅仅因为这个原因发生的相关攻击就多达 180 亿次,约每秒 579 次。

不过各位小伙伴还请不要以为微软取消密码就没有安全保护机制了,因为在迈入无密码时代之前你还需要在自己的手机上安装一个 Microsoft Authenticator 应用(如果您愿意,您可以随时为帐户重新添加密码),之后根据实际使用位置的不同,通过 Windows Hello、安全密钥,或者是通过邮件、手机或其他应用以及服务(包括 Outlook、OneDrive、Microsoft 家庭安全等)接收到的验证码进行登录。

用户名 + 密码的身份验证方式相当反人类。记忆密码本身就已经非常麻烦了,有些平台还要求用户起一个平台唯一的的用户名。如果常用的用户名被注册了,还需要另选一个用户名。如果平台不支持邮箱或手机号作为用户名登录的话,还要额外记住用户名。还有些平台的脑残产品竟然强制规定密码长度和必须包含数字及特殊字符,事实上只要不是弱口令,密码强度已经对提高安全没有任何作用了。

另外,由于国内很多企业的技术水平和道德水平的双重低下,账户密码被脱库已经是家常便饭了。为了保证安全,不同平台需要使用不同的密码。这对脑力又是一种考验。为了解决用户名和密码记忆的问题,密码管理工具又应运而生,对用户来说又是一种负担。而且为了应对密码泄露的问题,Google 等平台开始推广 2FA 双因子身份验证。好了,事情变得越来越复杂了。

传统的用户名 + 密码登录方式是完全和时代脱节的上古产物,而用户必须提供全平台唯一的用户名也不过是产品经理的一厢情愿罢了。这种落后愚昧认知必须被摈弃。

现在常见的无密码登录方式主要有以下几种:

  1. 基于硬件的一次性密码
    包括 RSA SecurID 的动态码,以及早年用于登录网游的纸质密保卡等。缺点是需要硬件,对于公共平台的用户来说很不友好。
  2. 基于生物学特征的身份认证
    包括指纹、声纹、人脸识别、虹膜等。缺点是除了手机应用外,也需要额外的硬件支持。特别地,泄露个人生物学特征导致的风险非常严重,因为一个人的生物学特征几乎是无法修改的。
  3. 基于公钥加密算法的身份认证
    比如 SSH 基于证书的登录方式。这种方法安全度最高。因为服务器只是保存了公钥,即便服务器的公钥泄露也不会对用户的账号安全造成威胁。缺点是用户生成密钥有一定的门槛。此外,用户如何才能安全地保存密钥也是个令人头疼的问题。
  4. 基于软件实现的一次性密码
    比如 Google Authenticator。其实原理同方式 1 一样,只不过硬件变成了手机。对用户来说,使用也相当简单。缺点是一旦用户丢失 Secret Key 就无法登录了。
  5. 基于邮箱和手机接收的一次性密码
    最常见的一种免密码登录方式。缺点是延迟比较大;经常会发生收不到短信或邮件的情况;发送短信或语音通话的成本比较高。此外,如果手机处于 GSM 网络的话,会存在被伪基站攻击嗅探短信的风险。之前国内曾发生过犯罪分子用伪基站攻击受害者手机,转走受害人全部存款的案例。
  6. 基于可信设备的身份认证
    对于手机 APP 来说,设备唯一标识也可以作为登录凭证。但是安全性不高,可以作为辅助的身份认证方式。

综上,对于跨平台(移动端/PC)的系统,用户使用邮箱或手机注册,使用 Google Authenticator 登录。这种方式实现简单、对用户友好且比较安全。用户第一次注册时,验证并绑定邮箱或者手机,可以绑定其中之一,也可以同时绑定邮箱和手机。用户在手机上下载 Google Authenticator 应用,扫描二维码绑定至账户。用户日常访问可以使用邮箱/手机号 + Google Authenticator 的一次性密码登录。此外还可以让用户设置一个 PIN 码,登录密码使用 PIN 码 + 一次性密码,以提升安全性。如果用户手机不在身边或者 Google Authenticator 中的 Secret Key 丢失,可以使用邮箱或短信验证码的方式登录。