什么是多因素验证?为何要使用多因素验证来保障密码管理的安全?

cover

随着网络用户数据的泄露问题日益严重,单纯使用用户名和密码来保护用户资料已不够安全。主要的网络服务都开始使用多因素验证来进一步保护用户数据安全。多因素验证的英文是Multi-factor authentication,常缩写为MFA

多因素验证

MFA是通过结合两个或多个独立的凭证来识别用户,如:用户知道什么(比如,PIN),用户有什么(比如,U盾或密码器),或用户是什么(生物识别,如指纹,虹膜等)。传统的多因素验证通常是通过:

  • 用户名密码和智能卡(U盾)
  • 用户名密码和密码器

来识别用户。

因为主要使用了两个独立的因素进行认证,也叫双因子认证。英文是Two-factor authentication或简称2FA。随着网络科技的发展,其他形式的验证方式也逐渐地被采用,如通过应用推送的一次性密码,通过短信发送的一次性密码等。

KeePass对多因素验证的支持

PassXYZ是基于KeePass开发的密码管理软件。为了提高数据库的安全性,PassXYZ也提供了多因素验证的支持。KeePass是一个开源的密码管理软件,同时也是一个很好的开源密码管理软件开发框架。KeePass的MFA支持分成两部分:

  1. KeePass数据库的多因素验证支持,需要通过多因素验证才能打开数据库;
  2. KeePass本身也可以用来存储多因素验证信息,或当作多因素验证工具使用

本文主要讨论第一种多因素验证的支持。对于第二种,将另行撰文讨论。

虽然KeePass提供丰富的MFA特性,但很多MFA的支持是通过KeePass插件的方式实现的,对专业人士来说这不是个问题,但对普通用户来说使用难度比较大。目前,KeePass插件的安装并没有做成简单的安装程序,而是需要一定的编程基础才能做到的。由于KeePass插件是由不同的开源开发者所提供的,不同的插件完整性和稳定性也大不相同。

KeePass对MFA的支持是通过组合密钥(Composite Keys)和密钥服务(Key Providers)组成的框架来实现的。PassXYZ对MFA的支持正是延用了这个框架,同时充分考虑了普通用户的使用习惯,设计了非常简洁易用的用户界面,使用户开启和使用PassXYZ的多因素验证不会遇到任何困难。

通过使用MFA来增强Pass XYZ的数据安全

在PassXYZ中对MFA的支持主要使用了设备锁的方式,这是对KeePass本身所支持的文件锁的一种扩展。什么是设备锁呢?如果使用过网络银行客户端,你可能知道怎么将应用与手机绑定。一般银行为了用户的安全,需要用户将应用与手机进行绑定后才能使用。PassXYZ设备锁使用了类似的概念。当用户建立新数据库时,可以选择开启设备锁。当开启了设备锁以后,这个数据库就跟当前设备绑定了,即使黑客设法拿到了数据库和密码,也无法打开数据库,因为数据库已与设备锁定。由于在绑定过程中会使用与文件锁类似的超强密钥,设备锁可以非常有效地应对暴力破解。这个特性对需要将数据库放去云存储的用户来说,可极大地提高安全性。

如何开启设备锁

在创建一个新的数据库时,可以如下图所示打开设备锁选项(注册页面的下方有一个开启设备锁的选项)。打开这个选项后,建立的数据库就开启了设备锁。

signup-cn

如何将数据库传输到另一台设备

当用户想在自己的另一台设备上使用开启了设备锁的数据库时,由于设定了设备锁,用户是无法直接打开数据库的。如果想在多台设备上使用开启了设备锁的数据库,需要遵循下面的步骤进行操作:
1. 将数据库导出到另一台设备
2. 在当前设备上找到设备锁的二维码
3. 在导入设备上扫描设备锁的二维码

如果想将数据库传输到另一台设备上,PassXYZ云版的用户在OneDrive上直接选择同步就可以了。除了云同步,PassXYZ或PassXYZ云版的用户都可以在设置中找到“导出”选项。点击“导出”后,可以选择系统所提供的数据传输方法,比如蓝牙或邮件等。由于PassXYZ支持安卓,苹果和Windows 10三个平台,每个平台所提供的选择会略有不同。当成功导入数据库后,在新设备登陆页就会看到如下图所示的界面。

login-cn

这时登陆页面中的密码域是暂时禁用的,下方的提示是告诉用户PassXYZ_KPCLib开启了设备锁,需要同时使用设备锁匙和密码来登陆。点击密码域右侧的扫描按钮,可以扫描原设备锁匙二维码来开启设备锁。

原设备锁匙二维码可以在原设备的设置中找到。在“设置”中可以看到“安全设置”选项如下图:

settings1-cn

选择“安全设置”后,可以看到有两个选项:显示设备锁匙二维码,或将之导出成一个文件,见下图:

options-cn

通过这两种方法都可以将设备锁匙传输到另一台设备上。当成功将设备锁打开后,新设备就可以正常登陆了。

如何在已有数据文件上加设备锁

对于尚未开启设备锁的数据库,在设置中的“安全设置”选项下会显示如下图所示信息:

settings2-cn

如果想将未开启设备锁的数据库转换成开启设备锁的数据库,可以点击“安全设置”项,点击后屏幕会显示一个数据转换的页面,如下图所示:

import-cn

此时,需要给新数据库起一个用户名,然后点击“导入”按钮。当新数据库生成后,旧数据库仍然存在。在确认新数据库成功导入后,即可删除未开启设备锁的旧数据库了。

PassXYZ设备锁的安全性分析

前面解释了什么是设备锁以及如何在PassXYZ中使用设备锁。那么如何来定量的分析设备锁的安全性呢?对于一般用户来说,详细的基于密码学的分析太过专业,很难让普通用户看懂。这里我们可以用比较的方法来说明这个问题。密码软件1Password也有与PassXYZ设备锁类似的功能叫Secret Key。在1Password介绍Secret Key的文章中使用了下面的图表来表示密码强度与数据安全之间的关系。

secret-key-entropy

从上图中可以看到,当使用主密码和设备锁(或Security Key)的组合时,密码强度可以大于128bits。由于密码强度跟记忆的容易性成反比,所以一般不会使用密码强度超过60bits的密码。我们通常使用的密码复杂强度(Amount of Entropy)大致在40bits左右。使用1Password的Secret Key或PassXYZ的设备锁时,密码强度都超过128bits。

一般暴力破解是通过尝试所有可能的密码组合来找到真正的密码,所以每次尝试所需的时间是防止暴力破解的另一个关键因素。增加每次尝试所需的时间是目前数据加密软件通用的防暴力破解方法,这种增时算法叫做密钥推导(Key Derivation)算法。在1Password中使用的是PBKDF2算法,而KeePass则支持多种算法,如AES-KDF和Argon2等。由于Argon2是密码哈希竞赛(Password Hashing Competition)中的冠军算法,KeePass采用的缺省算法就是Argon2。基于以上介绍,我们再来看看下面一张1Password的统计图。

pbkdf2-crack-times

从上图中可以看到,通过控制密钥推导(Key Derivation)算法的复杂度和密码强度,我们就可以估算出使用某种计算设备时,破解密码所需的时间。普通密码的强度在40bits左右,破解所需的时间在两周至两个月左右。当密码强度超过65bits时,破解所需的时间已经几乎是天文数字了。

总结

对于PassXYZ的用户,为了保障数据安全,建议使用设备锁,同时可以打印一份设备锁匙的二维码,保留在安全的地方。对要将数据库同步到云端的用户来说,使用设备锁尤为重要。如果不使用,则必需使用强密码以防止暴力破解。


PassXYZ是一款跨平台的密码管理软件,可以运行在安卓和苹果手机以及Windows 10上。
PassXYZ基于著名的开源软件KeePass开发,所以兼容KeePass数据格式。PassXYZ的核心代码可以在开源社区GitHub上获取。PassXYZ最大的特点是通过提供大量的个人信息记录模板来分享和传递良好的使用习惯。PassXYZ个人信息管理软件和PassXYZ公众号的目标是通过两者的结合来推动和提高公众的个人信息管理水平。

您可以通过苹果应用商店微软应用商店Google Play华为应用商店搜索关键字PassXYZ来下载该应用。如果您想获得更多模板或对个人信息安全及管理有兴趣,可以搜索关键字PassXYZ关注公众号。您也可以通过微信号passxyz_kpclib来添加此公众号。PassXYZ公众号专注于个人信息安全及管理的相关知识。