APP下载

一种针对暴力破解的安全口令保管库方案

2017-08-12尹芷仪江伟玉沈嘉荟

计算机应用与软件 2017年7期
关键词:敌手用户名口令

尹芷仪 江伟玉 沈嘉荟

(中国科学院信息工程研究所 北京 100093)



一种针对暴力破解的安全口令保管库方案

尹芷仪 江伟玉 沈嘉荟*

(中国科学院信息工程研究所 北京 100093)

当前口令管理工具和Web认证系统普遍使用基于PBE标准的加密方式,但是此类方法难以阻止暴力破解技术恢复口令明文,不能保证口令的真正安全。针对此现象,提出一种基于口令云的口令保管库方案。该方案拆分口令信息,将口令管理与保护功能从系统中独立出来,分开存储口令库组成部分并隐藏了计算口令密码相关数据之间的关联。通过对服务器端口令保管库方案的安全性进行定量分析,认为该方案能够大大增强暴力破解验证环节的难度,有效规避口令库泄露后的安全风险。

口令保管库 PBE 暴力破解

0 引 言

基于口令的身份鉴别是目前Web应用的主要方式,但是随着不同的Web应用的使用,用户不可避免需要记忆多个不同的身份和密码,这就造成用户记忆负担的增加。在确保口令使用安全的情况下,为了减轻用户的记忆负担,出现了一系列的口令管理器服务(如LastPass[1]、KeePass[2]、1Password[3]等),这类服务能够在口令库中安全保存用户登录各Web应用的用户名/口令信息,用户仅需记忆一个主口令便可访问不同的Web应用。

然而,近年来层出不穷的口令库泄露事件威胁着用户的隐私和经济安全。无论是国外的Google Gmail[4]、LinkedIn[5]公司,还是国内的天涯社区和CSDN[6]等均出现过此类事件,即使是采用了PBE[10]密码技术进行口令加密的LastPass[7]也出现过大量口令泄露风波。从泄露事件可以看出,安全措施部署的缺失和服务器内部配置的漏洞是造成口令库被攻击的主要原因。

口令暴力破解技术是最为常用的口令库攻击方式,已经对当前普遍使用的基于标准PBE的口令保护方式产生了实质性的威胁。一旦攻击者获得加密后的口令库,就可以对其进行暴力破解和“撞库”。目前暴力破解方式有穷举破解、字典破解、概率模型破解、自然语言模型破解以及不同破解手段的组合等。其中,John the Ripper[8]是一个高效的基于字典的破解算法和实现;PCFG算法[9]利用概率和自然语言模型使得破解效率比John the Ripper提高了29%~129%。另外,随着云计算技术的发展,利用大量廉价的计算资源进行并行计算也增强了暴力破解的能力。

因此,针对口令库所面临的暴力破解威胁,本文提出了一种能够安全保管用户登录各Web应用账户信息的口令保管库服务设计方案。该方案一方面利用密码技术对用户口令进行处理,隐藏了口令密文与用于计算口令密文的盐值之间的对应关系,增加暴力破解验证环节的难度;另一方面,通过将加密后的口令库和盐值库外包给口令密文云服务的方式规避了口令库所有数据同时泄露的风险。

1 口令库保护相关技术

目前,口令库通常采用PBE技术来进行口令保护。国外的Lastpass、Facebook,国内的新浪微博、12306等知名服务均采用此种口令保护方式。PBE保护方案针对服务器中不同的口令采用不同的密钥进行加密,这些不同的密钥由服务器的主密钥进行推导计算得到,所以PBE保护方案通过保护主密钥、密文存储口令以及配置访问控制等安全技术来实现口令库的保护。

然而,采用了PBE加密方案的口令库依然面临暴力破解的威胁。这是因为虽然在密钥的长度设置合理的情况下,以当前的硬件计算能力,暴力破解密钥看似很难,但PBE加密密钥是由口令推导计算得到,所以通过一定程度提高暴力破解的计算能力是可以破解出口令。

1.1 基于PBE的口令加密

在PBE加密口令的方案中(如图1所示),系统首先为每个账户Ui的口令Pi生成一个随机数Si作为盐值,设置密钥推导算法KDF的迭代次数N,将Ui的主口令MP、盐值Si作为算法KDF的输入,计算得到加密口令Pi的密钥DKi=KDF(MP,Si)。随后,选择合适的密码算法和消息鉴别码MAC算法,使用密钥DKi分别计算口令Pi的密文Ci和MAC值。最后,在口令库中存储账户Ui的用户名、口令密文Ci、盐值Si、口令Pi的MAC值。解密时,以同样的方式根据主口令、盐值计算密钥DKi,用密钥DKi解密Ci得到口令明文Pi。随后,计算Pi的MAC码,并与先前存储的MAC码比对。如果两次计算的MAC码完全相同,说明消息完整性未被破坏,则将刚解密出的明文呈现给用户,否则说明密文完整性被破坏,报告错误。

图1 PBE加密技术原理

其中,盐值、迭代次数和密钥推导函数是PBE的关键部分:

1) 盐值是一个随机数,盐值的引入主要是为了从同一个口令导出大量不同的密钥,同时也可以用盐值当索引存储这些密钥。盐值通常以明文的形式与口令密文一起保存。

2) 迭代次数,即密钥推导函数重复计算的次数。迭代次数一般用来增加密钥推导过程的开销,从而也增加了攻击的难度。

3) 密钥推导算法分为两类,一类是MD5、SHA-1等单向哈希函数(PKDF1),另一类是伪随机函数(PKDF2)。以前者为例,PKDF1将口令Pi与盐值Si连接并计算其哈希值T1,然后计算T1的哈希值T2,根据迭代次数指定的值重复迭代,最终计算得出密钥。

1.2 针对PBE的暴力破解技术

针对PBE的暴力破解技术原理如图2所示。攻击者首先从口令库中提取口令Pi的盐值Si和消息鉴别码MACi,从公开渠道可以很容易得知密钥推导算法KDF以及迭代次数N。然后,基于字典和猜测模型猜测一条主口令MP/;根据密钥推导算法计算密钥DKi;使用DKi解密Pi的密文Ci得到明文Pi/,计算Pi/的消息鉴别码MACi/。验证Pi/的MACi/该值是否与Pi的MACi值相等,如果相等则说明破解成功,否则继续重复这种破解过程直到破解成功或计算超时。

图2 暴力破解口令原理

2 总体方案设计

2.1 威胁模型和安全假设

本文假设使用PBE方案保护的用户口令库面临被敌手窃取的威胁,并且泄露的口令库易遭受暴力破解攻击。因此,提出了抵御暴力破解攻击的口令保管库方案:一方面将口令相关信息分开存储在口令保管库服务器和口令云存储服务中;另一方面将暴力破解验证环节使用的盐值和口令密文的对应关系进行隐藏。本文的安全假设包括:

1) 口令保管库服务器能够提供正常的可信服务,实现用户的身份的安全验证,确保主密钥的安全;当服务器出现故障或遭受在线猜测攻击时,能够采取相应的措施进行处理。但是,本文不假设口令保管库中存储的用户账户信息数据库不会泄露。

2) 口令云存储服务能够提供正常的存储服务,并与合法的口令保管库服务器建立安全连接和请求响应。但是,本文不假设口令存储云服务中存储的口令相关信息库不会泄露。

3) 用户代理能够进行安全可信的计算,并能与口令保管库服务器建立安全会话。

2.2 方案设计

在使用PBE保护口令的方案中,用于计算口令密文的盐值通常与口令密文存储在相同的服务器中。根据1.2节所述,在获得口令库的情况下,利用口令对应的盐值、迭代次数等信息可暴力恢复明文数据。为防止此类暴力破解的发生,本文设计了一种口令保管库服务,功能是安全保管用户登录不同Web应用时的用户名/口令;特点是即使在数据库泄露的情况下,敌手依然难以获得口令明文。

图3是口令保管服务器的模型,如图3所示该服务在接收到用户登录某Web应用的用户名/口令信息后,首先利用密码技术隐藏了口令密文与盐值之间的映射关系;其次将口令密文库和盐值库外包给口令云存储服务,口令保管库服务器仅存储部分用户账户信息:登录Web应用的用户名、Web应用URL、检索口令密文的索引和口令明文的MAC值。这样处理后,无论是口令云存储服务中的口令密文库和盐值库泄露,还是口令保管库服务的数据库泄露,或者二者同时泄露,敌手都很难暴力恢复口令明文。

图3 口令保管库服务模型

口令保管库服务为安全保管用户登录各Web应用的账户信息设计了以下几个功能模块:

1) 口令保管库注册。口令保管库服务器通过向口令云存储服务申请注册而获取服务账号<服务ID、服务密钥>,用于与口令云存储服务建立安全会话时的身份鉴别。

2) 用户口令信息处理。用户代理基于用户的主口令、盐值(随机数)对用户登录每个Web应用的用户名/口令信息进行PBE加密,同时发送用户名、Web应用URL、口令密文、口令MAC值、盐值等给服务器。服务器利用其主密钥加密口令索引(随机数)得到用于检索盐值的盐值索引,并将生成的口令密文、口令密文索引、盐值和盐值索引存储在口令云存储服务中。在安全保管服务器主密钥的情况下实现了口令密文与盐值对应关系的隐藏。

3) 用户登录Web应用。用户在登录某Web应用时,首先发送口令提取请求给服务器。服务器根据请求中的用户名、Web应用URL申请口令云存储服务中对应的口令密文,利用主密钥加密口令索引计算得到盐值索引,根据盐值索引提取对应的盐值。最后,返回盐值、口令密文给用户代理,用户代理解密口令密文并验证MAC值,将正确的口令用于登录Web应用。

4) 用户口令更新。服务器从口令更新请求中提取用户名、新口令密文、新口令MAC值、盐值,更新相应的数据库条目。

2.3 方案对比

暴力破解类口令攻击方式几十年来被不断改进和优化。这些改进和优化主要集中在两个方面:一是通过建立和优化口令猜测模型提高算法效率,即提高猜测模块的效率;二是采用更快的计算设备,如更高频率的CPU,或者采用高并发的计算架构如GPU计算架构来提高运算速度。

目前,避免服务器端PBE加密口令被暴力破解的方案有以下几种。最初,只是简单地在服务器端增加PBE密钥推导算法的运算时间,试图通过这种方法来提高暴力破解代价,但该方法仅延缓了口令破解过程。随后,出现了在服务器端设置假账户的“蜜罐账户”(Honeypot)方法,“蜜罐账户”的思想很容易理解。它在服务器端账户口令库中混入一些假账户口令。所谓假账户口令在这里指非用户注册的正常账户和口令,而是系统用来发现攻击的诱饵。当敌手从服务器端窃取并成功破解部分账户口令库后,会拿这些账户口令冒充合法用户请求认证和服务。当系统收到假账户的认证请求后会认为系统账户信息已经泄露,因此触发警报。然而,敌手借助一些额外手段可能会区分出真账户与假账户,从而避开系统对口令破解的检测。Honeywords方案[11]同样是通过为每一个真口令生成一组难以区分的假口令,从而隐藏真口令的确切位置等方式,使得敌手很难区分真假口令,并且当敌手猜错口令时,可以被服务器探测到,Honeywords也存在一定不足,表现为三点:一是用户名与真口令的映射信息。根据威胁假设,敌手有能力从服务器端窃取数据。Honeywords仅仅采用独立存储映射信息的方法并不能有效提高口令安全性;二是假口令生成算法。Honeywords中提出的假口令生成算法在真口令的基础上进行局部变换得到假口令。这种算法对于一部分特殊口令来说效果并不理想;三是不能有效避免“撞库”等其他辅助攻击。文献[12]中的调查统计显示,人们普遍有重复使用相同口令的习惯。因此,敌手可以从其他口令库中搜索相同账户名的口令或个人信息,通过“撞库”等方式成功找出真口令。

综上所述,已有的抵抗暴力破解的方法中,最为典型的就是通过增加加密口令所需的计算消耗来减缓暴力破解。该方案减缓敌手的破解速度的同时也降低了服务器端计算口令密文的效率,是一种以牺牲可用性为代价的抵抗破解方法。

口令云方案在没有降低服务器自身效率的前提下,大大提高了敌手暴力破解口令的代价。因此,口令云方案具有更高的可用性。此外,口令云只负责管理和保护口令,业务逻辑和功能非常简单,因而出现系统漏洞的概率更低系统安全更容易保证。

3 关键功能模块设计

3.1 用户口令信息处理

图4 用户口令信息处理流程

图4为用户口令信息处理流程,当用户代理在向口令保管库服务器发送保管用户登录某Web应用的<用户名Ui、口令Pi>等相关信息的请求时,口令保管库服务器进行如下处理:

1) 接受来自用户代理的请求。首先,用户代理产生一个随机数Si作为盐值,并利用用户主口令MPUi、盐值Si作为PBE中密钥推导算法KDF的输入,得到密钥DKi=KDF(MPUi,Si),使用安全的加密算法,利用密钥DKi加密Pi得到口令密文Ci,并计算Pi的消息鉴别码MACi。随后,将登录Web应用的用户名、Web应用URL、盐值Si和口令密文Ci、消息鉴别码MACi送给服务器。

2) 服务器产生一个随机数Ci_index作为口令索引,用于检索口令密文Ci。

3) 服务器利用其主密钥MK和一个安全的加密算法加密Ci_index,得到盐值索引Si_index,该盐值索引用于检索盐值Si。

4) 服务器发送口令密文Ci、口令索引Ci_index、盐值Si、盐值索引Si_index给口令云存储服务。口令云存储服务将分开存储在口令密文库和盐值库中,并打乱口令密文库和盐值库中相应条目之间的对应关系。

5) 服务器保存用户名Ui、Web应用URL、口令索引Ci_index、消息鉴别码MACi。

3.2 用户登录Web应用

用户登录某Web应用时利用用户代理向服务器请求在该Web应用注册的用户名/口令。在用户代理与服务器端建立安全可信连接的情况下,服务器首先查找用户所拥有的数据,根据Web应用的URL提取口令索引。随后,从口令云存储服务中提取口令密文,并根据其主密钥计算盐值索引获得对应的盐值。如果口令云存储服务中不存在口令索引对应的密文或者不存在盐值索引对应的盐值,将提示错误;否则,用户代理将成功获得用户名/口令数据,并利用该用户名/口令登录Web应用。主要处理步骤如下:

1) 在用户安全登录口令保管库服务的情况下,用户代理发送提取登录该Web应用的账户信息请求给服务器。

2) 服务器根据Web应用URL,提取对应的口令密文索引,并根据口令密文索引Ci_index和其主密钥,计算得到盐值索引Si_index。发送Ci_index和Si_index给口令云存储服务以提取口令密文Ci和盐值Si。

3) 口令云存储服务响应来自口令保管库服务器的请求。在能正常提取口令密文Ci和盐值Si的情况下,返回Ci和Si给该服务器;否则返回错误。

4) 在获得Ci和Si的情况下,服务器返回用户名Ui、Ci、Si和MACi给客户端。用户代理根据用户主口令和盐值,解密口令密文Ci获得口令明文Pi。随后,用户代理计算Pi的消息鉴别码MACi/,并验证MACi/是否等于MACi值,如果相等,则说明口令无错,否则出错。

5) 在验证Pi正确的情况下,用户代理利用用户名Ui和口令Pi登录Web应用。

3.3 数据存储

用户登录各Web应用的账户信息分散存储在口令保管库服务的服务器和口令云存储服务中。其中,口令保管库服务的服务器仅为每个用户存储其登录Web应用的用户名、Web应用URL、口令密文索引和口令MAC值等信息;口令云存储服务仅存储盐值库<盐值索引、盐值>和口令密文库<口令索引、口令密文>,并且不保存盐值库中各条目与口令密文库各条目之间的对应关系。口令保管库服务器利用安全通信协议与口令云存储服务建立安全会话,并基于其服务ID和服务密钥进行身份鉴别。用户口令信息存储模型如图5所示。

图5 口令数据存储模型

4 安全分析

在本文方案中,用户登录各Web应用的用户名/口令由口令保管库服务统一管理,用户仅需记忆主口令便可登录各个不同的Web应用。方案基于口令保管库服务器和口令云存储服务能够抵御一定的在线攻击以提供正常可信的服务假设,将用户的账户信息分离存储在口令保管库服务器中和口令云存储服务中,下面仅分析用户的账户信息丢失时离线的暴力破解对口令的安全威胁:

1) 口令保管库服务器中用户信息数据库泄露。假设敌手窃取了口令保管库服务器中的用户信息数据库,即敌手获得了用户登录Web应用的用户名、Web应用URL、口令索引、口令消息鉴别码等数据。若敌手试图利用暴力破解方式获取口令明文,首先需提取盐值、口令密文和猜测用户主口令。然而,存储在口令云存储服务器中的盐值和口令密文无法直接获取。即使敌手获得了口令保管服务器的服务ID和服务密钥,可以向口令云存储服务查询口令密文,但在没有服务器主密钥的情况下,无法计算出正确的盐值索引以获得盐值。因此,敌手在进行常规的暴力破解之前,需要猜测随机数盐值或者盐值索引。如果盐值或盐值索引长度足够长,将大大增加暴力破解的时间。另外,即使敌手获得了包括服务器主密钥在内的所有服务器数据,只要关闭口令云存储中相关的数据访问,也可使离线的暴力破解失效。

2) 口令云存储服务中的口令密文库和盐值库泄露。由于隐藏了口令密文与加密口令使用的盐值之间的映射关系,敌手只能通过逐个尝试的方式来破解。假设口令云存储服务中盐值的个数为N,则平均需要N/2次尝试才能成功。因此,在口令云存储数据库泄露的情况下,与单纯采用标准PBE保护方式相比,通过暴力破解一条口令所需的平均代价被至少放大到原来的N/2倍。另外,由于口令云存储服务中不存储口令所属信息,且不存储口令的消息鉴别码,敌手不仅难以验证口令猜测是否正确,并且难以确定解密得到的口令的用处和所有者。

3) 用户信息数据库、口令密文库和盐值库同时泄露。假设敌手获得了用户登录各Web应用的所有口令相关信息:用户名、Web应用URL、MAC值、口令密文、口令密文索引和盐值库。由于盐值库中的盐值与口令密文的对应关系利用密码技术进行了隐藏,在没有服务器主密钥的情况下,敌手依然需要猜测盐值。如果盐值库的盐值个数为N,则平均需要N/2次猜测。与单纯采用标准PBE保护方式相比,暴力破解一条口令所需的平均代价被放大到至少原来的N/2倍。

5 结 语

基于PBE技术保护的口令库泄露时,暴力破解可恢复口令明文,为解决这种情况,本文提出了一种安全的口令保管库服务方案。该方案采用密码技术对口令相关信息进行处理,隐藏了口令密文与盐值之间的映射关系,并利用口令云存储服务将重要的口令密文、盐值与用户登录Web应用的其他信息进行了分开存储,规避了所有口令相关信息同时泄露的风险,大大增加了暴力破解的难度,达到了保护口令安全的目的。

[1] How lastpass works[EB/OL]. 2016-03-25. https://lastpass.com/zh-hans/how-it-works/.

[2] KeePass-A Free and Open-source Password Manager[EB/OL]. http://keepass.info/.

[3] AgileBits, Inc. 1password[EB/OL]. https://agilebits.com/onepassword.

[4] Gmail Passwords’ Leaked[EB/OL].2014-09. http://mashable.com/2014/09/10/5-million-gmail-passwords-leak/#nxd 61Dw7GZqD.

[5] 2012 linkedin hack[EB/OL]. 2016-01-05. https://en.wikipedia.org/wiki/2012 _LinkedIn_hack.

[6] 2011年中国网站用户信息泄露事件[EB/OL]. 2016-03-19. https://zh.wikipedia.org/wiki/2011年中国网站用户信息泄露事件.

[7] 密码管理网站lastpass被黑加密主密码遭泄露[EB/OL]. 2016-06-16. http://bobao.360.cn/ news/detail/1672.html.

[8] John the ripper password cracker[EB/OL]. 2016-03-25. http://www.openwall.com/john/.

[9] Weir M, Aggarwal S, Medeiros B D, et al. Password Cracking Using Probabilistic Context-Free Grammars[C]// Security and Privacy, 2009, IEEE Symposium on. IEEE, 2009:391-405.

[10] Kaliski B. PKCS #5: Password-Based Cryptography Specification Version 2.0[J]. Heise Zeitschriften Verlag, 2000.

[11] Juels A, Rivest R L. Honeywords: making password-cracking detectable[C]// Proceedings of the 2013 ACM SIGSAC conference on Computer & communications security. 2013:145-160.

[12] Bojinov H, Bursztein E, Boyen X, et al. Kamouflage: Loss-Resistant Password Management[C]// Computer Security-ESORICS 2010, European Symposium on Research in Computer Security, Athens, Greece, September 20-22, 2010. Proceedings. DBLP, 2010:286-302.

A SECURE PASSWORD VAULTS SCHEME FOR BRUTE FORCE ATTACK

Yin Zhiyi Jiang Weiyu Shen Jiahui*

(InstituteofInformationEngineering,ChineseAcademyofSciences,Beijing100093,China)

Current password management tools and Web authentication systems commonly use PBE-based encryption, but such methods are difficult to prevent brute-force technology from recovering plaintext passwords and guaranteeing genuine security. In view of this phenomenon, this paper presents a password-based vault based on password cloud, The scheme splits the password information, isolates the password management and protection functions from the system, separately stores the components of the password library and hides the association between the relevant data when calculating the password. By analyzing the security of the vault scheme, it is considered that the scheme can greatly enhance the difficulty of the crack detection and avoid the security risk after the password database is leaked.

Password vaults PBE Brute force attack

2016-06-03。战略合作专项(AQ-1511,AQ-1512)。尹芷仪,高级工程师,主研领域:云计算安全,身份鉴别技术,社会计算。江伟玉,助理研究员。沈嘉荟,研究实习员。

TP3

A

10.3969/j.issn.1000-386x.2017.07.059

猜你喜欢

敌手用户名口令
《护士进修杂志》投稿程序
高矮胖瘦
口 令
不带着怒气做任何事
机智的快递员
好玩的“反口令”游戏
SNMP服务弱口令安全漏洞防范
ESET NOD32专家答疑等
不带着怒气作战
不带着怒气做任何事