站点密码生成方法、系统及密码管理器与流程

文档序号:16578995发布日期:2019-01-14 17:48阅读:410来源:国知局
站点密码生成方法、系统及密码管理器与流程

本发明涉及信息安全领域,具体涉及一种密码管理机制,特别涉及一种站点密码生成技术。



背景技术:

密码通常是访问用户机密信息的主要入口,密码验证是确保安全的主要方式,但这种方式目前存在许多问题。一方面,用户被要求使用随机和唯一的密码,尽管这样熵比较高,但用户很难记住。同时,随着用户账户的增多,用户管理的密码数量也越来越多,这无疑会加重用户的记忆负担。为了减轻记忆负担,用户经常采用不安全的解决办法——选用攻击者容易猜到的低熵密码,或者在多个站点上复用密码等等。另一方面,密码的日常使用不能阻止多种攻击,如网络钓鱼、肩窥、间谍软件等。

密码管理器用于在保证安全的情况下减轻用户的记忆负担,密码管理器使用主密码来保护站点密码或者生成高熵的站点密码,并且无需对服务器做任何修改。密码管理器主要有两类:取回式密码管理器和生成式密码管理器。取回式密码管理器将站点密码以纯文本的方式存储在本地,或用主密码来保护它们,等需要站点密码时再取出;生成式密码管理器根据一个主密码,在客户端使用哈希或密钥延伸的方法为不同站点生成唯一的高熵密码,pwdhash、passwordmultiplier、client-cash、versipass和passpet等都属于生成式密码管理器,另外还有一种商业密码管理器,如1password和lastpass,它们依赖于受信服务器生成站点密码。

虽然密码管理器能够生成高熵的站点密码,为用户提供了很多便利,但它们仍然存在一些安全问题:

1)不能抵抗离线攻击。由于一些利用哈希的生成式密码管理器的密钥生成函数很简单而且是公开的,因此攻击者很容易对主密码执行离线攻击。另外,尽管使用密钥延伸比简单哈希要安全一些,但也不足以抵抗离线攻击,糟糕的是,密钥延伸增加了真实用户的认证成本。至于商业密码管理器,如果多个受信服务器被攻入,则攻击者仍然可以执行离线攻击。

2)不能避免单点故障。一些生成式密码管理器中通常存在由主密码引入的单点故障问题,攻击者可以通过主密码访问用户的所有账户。另外需要注意的是,许多密码管理器并没有提供对肩窥攻击的防护,肩窥攻击是攻击者获得主密码的渠道之一。



技术实现要素:

为了克服现有技术中存在的问题,根据本发明的一个实施例,提供一种站点密码生成方法,所述站点密码用于由应用程序的服务器验证用户账户,所述方法包括:

步骤1)根据包括用户密码的信息构建第一激励数据;其中,所述用户密码用于由用户在应用程序的客户端上登录用户账户,所述第一激励数据为二进制字符串;

步骤2)将所述第一激励数据输入puf并且从所述puf得到第一响应数据;其中,所述第一响应数据为二进制字符串;以及

步骤3)将所述第一响应数据转换为站点密码。

上述方法中,除了用户密码之外,所述信息还包括如下元素:所述用户账户的随机标签和/或应用程序的域名。

上述方法中,步骤1)包括:将包括用户密码的信息中的所有元素进行拼接得到第一字符串;基于puf的位长将所述第一字符串格式化为一个或多个第二字符串;将所述一个或多个第二字符串进行二进制转换得到相应的一个或多个激励,作为第一激励数据;其中,所述一个或多个激励中每个激励的位数与所述puf的位长相等。步骤2)包括:将所述第一激励数据输入所述puf,从所述puf获得与所述第一激励数据中的一个或多个激励相对应的一个或多个响应;如果获得一个响应,则将该响应作为第一响应数据;如果获得多个响应,则将所述多个响应进行异或并且将异或结果作为第一响应数据。

上述方法中,步骤2)还包括:将第一响应数据的位数输入所述puf。其中,计算所述第一响应数据的位数包括:将所述站点密码的字符长度确定为大于等于所述站定密码的长度要求的一个量,根据所述站点密码的字符类型要求确定所述站点密码的每个字符对应的二进制位数;以及

将所述站点密码的字符长度与所述站点密码的每个字符对应的二进制位数的乘积作为所述第一响应数据的位数。

上述方法中,步骤3)包括:将所述第一响应数据的所有位按照所述站点密码的每个字符对应的二进制位数进行分组;将每一组中的位转换为所述站点密码的字符。

上述方法中还可以包括:接收为所述用户账户生成随机标签的请求,针对所述请求构建第二激励数据;将所述第二激励数据输入puf并且从所述puf得到第二响应数据;以及,将所述第二响应数据转换为所述用户账户的随机标签。

上述方法中还可以包括:接收用户输入的用户名和用户密码;查找所述应用程序的域名;以及,查找与用户输入的用户名对应的用户账户的随机标签,若未找到,则请求为所述用户账户生成随机标签。

基于上述站点密码生成方法,根据本发明的实施例,还提供一种密码管理器和站点密码生成系统。

本发明具有如下的有益效果:

1)抗离线攻击。在本发明中,从用户密码(用户密码与上述现有技术中的主密码类似,区别在于主密码仅为一个,而用户密码可以有多个)生成站点密码的功能主要是由puf执行的,puf可以为每个应用程序生成高质量的、唯一的密码,并且用户密码与站点密码之间没有固定的联系,因此,离线攻击对于用户密码无效。

2)抗单点故障。与目前常用的生成站点密码的软件方式不同,在本发明中,站点密码的生成要求用户密码和puf都正确(即,只有将正确的用户密码输入在具有正确puf的设备上,才能够成功登录账户)。由于puf的不可克隆性,即使在两台设备上部署相同的pufpass,也很难从相同的用户密码产生相同的站点密码。因此,即使攻击者知道了用户密码,也难以生成正确的站点密码。

3)密码生成延迟缩短。本发明采用软硬件结合的方式来生成站点密码,与之前使用软件生成站点密码的方法相比,硬件的工作效率比软件的工作效率要高,所以密码生成的延迟也被缩短。

另外需要说明的是,本发明不仅适用于文本密码,也适用于其他种类的密码,如图形密码、生物密码等。

附图说明

将通过参考附图对示例性实施例进行详细描述,附图意在描绘示例性实施例而不应被解释为对权利要求的预期范围加以限制。除非明确指出,否则附图不被认为依比例绘制。

图1示出了根据本发明一个实施例的站点密码生成系统的结构框图;

图2示出了根据本发明一个实施例的基于android系统和zynq7000实现站点密码生成系统的示意图;

图3示出了根据本发明一个实施例的在fpga中实现仲裁器puf的示意图;

图4示出了根据本发明一个实施例的用户界面示意图。

具体实施方式

为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

puf是一种可以将输入的激励(二进制字符串)映射成输出的响应(二进制字符串)的物理结构。puf具有唯一性和均匀性这两个固有属性,其中,唯一性指的是拥有相同设计的不同puf能够对相同的激励生成不同的响应,而均匀性指的是puf能够在响应中同比例地生成“0”和“1”。基于puf的这种均匀性和唯一性,发明人将puf运用到密码管理器中,提供一种软硬件协同的密码管理机制来生成安全的站点密码,能够抵抗离线攻击,同时避免单点故障带来的安全隐患。

图1是根据本发明一个实施例的站点密码生成系统的结构框图。如图1所示,站点密码生成系统包括输入模块11(输入模块11由应用程序的客户端提供)和基于puf的密码管理器(pufpass)12,其中pufpass12包括预处理模块121、密码增强模块122、puf123和后处理模块124。以下结合图1,简要描述该站点密码生成系统的工作流程:

首先,应用程序客户端(本文有时简称为应用程序)中的输入模块11接收用户10输入的用户名和用户密码pwdu,其中该用户名与所述应用程序的一个用户账户相对应;在接收到用户名和用户密码pwdu之后,输入模块11将由用户密码pwdu、与用户名对应的用户账户的随机标签lab以及应用程序的域名dom(即应用程序的服务器的网络地址)组成的三元组发送至pufpass12的预处理模块121(又称pufpass预处理模块)。其中,随机标签lab的作用在于区分用户账户,举例而言,如果同一用户在同一应用程序下有两个账户,而这两个账户的用户密码相同,则加入lab可以保证生成的站点密码不同(用户账户的随机标签lab可以是用户注册账户时,即第一次输入用户名和用户密码时由输入模块11生成的随机数,该用户账户的随机标签lab存储在安装应用程序的客户端的终端);应用程序的域名dom用于抵抗网络钓鱼,其使得相同的用户名和用户密码在不同应用程序下能产生不同的站点密码。

随后,pufpass12的预处理模块121根据接收到的三元组创建用于输入puf的一个或多个激励并且将所创建的一个或多个激励发送至密码增强模块122(又称pufpass密码增强模块)。另外,pufpass12的预处理模块121还将puf生成的响应位数发送至密码增强模块122。

接着,密码增强模块122向puf123发送所述一个或多个激励以及puf生成的响应位数,并且得到来自puf123的对所述一个或多个激励的一个或多个响应。当得到一个响应时,密码增强模块122将该响应直接发送至后处理模块124(又称pufpass后处理模块);当得到多个响应时,密码增强模块122将这些响应进行异或得到最终的响应,并且将最终的响应发送至后处理模块124。

最后,由后处理模块124将响应转换为站点密码pwds,并且经由应用程序将站点密码pwds发送至应用程序的服务器13,以由服务器13验证用户账户。

以上概括地介绍了根据本发明的站点密码生成系统,下文将结合图2,根据本发明的一个实施例,详细描述图1所示的站点密码生成系统在硬件(zynq7000)、操作系统(android系统)以及应用程序中的实现及其具体的工作流程。其中,zynq7000是一个同时包含cpu和fpga的芯片,cpu用于实现应用程序和android系统,而fpga用于实现本发明的puf,在本实施例中puf实现为异或仲裁器puf,其包括多个仲裁器puf。从图2可见,站点密码生成系统覆盖了硬件和软件(pufpass的api位于android系统内,puf实现在fpga中),密码管理任务是通过应用程序、android系统、cpu和fpga之间的交互而实现的。下文将描述站点密码生成系统在硬件、操作系统以及应用程序中的实现:

硬件(即zynq7000)中的fpga用于实现pufpass中的puf,本实施例中puf为异或仲裁器puf,该异或仲裁器puf通过对多个(通常为6个)仲裁器puf由相同激励产生的响应进行异或而生成响应。每个仲裁器puf通过比较集成电路(ic)中两条完全对称的路径的时延来产生响应,而激励决定两条路径的组成。在fpga中实现的仲裁器puf如图3所示,仲裁器puf的输入包括跳变信号、激励信号c1~cncb以及存储在zynq7000内部的调整信号a1,1~a1,z,a0,1~a0,z,仲裁器puf的输出为响应信号r。其中,跳变信号由专门的电路产生(当仲裁器puf的激励准备好了,这个电路就会产生一个跳变);每个激励信号比特cin∈{c1~cncb}控制两个激励状态模块cs;每个调整信号比特ain∈{a1,1~a1,z,a0,1~a0,z}控制一个调整状态模块as,使用调整信号的原因在于:受到fpga中布局布线以及触发器的建立/保持时间的限制,两条路径可能不平衡,而调整信号可以使这两条路径保持平衡。激励状态模块cs的输入包括tin和cin,输出是tout,当cin为0时,tin经过缓冲器lut0和二路选择器lut2传输到tout,当cin为1时,tin经过缓冲器lut1、二路选择器lut2传输到tout。调整状态模块as的输入是tin和ain,输出是tout,当ain为0时,tin经过二路选择器lut2传输到tout,当ain为1时,tin经过缓冲器lut1、二路选择器lut2传输到tout。在仲裁器puf中,跳变信号输出给两个cs模块,这两个cs模块又各自输出给一个cs模块,如此构成两条路径,每条路径上有ncb个cs模块和z个as模块串联而成,最终两条路径输出给一个触发器,一条路径驱动触发器的d端,一条路径驱动触发器的时钟端,触发器的输出q端即仲裁器puf的响应。如果从跳变信号发出的跳变经过这两条路径到达clock端(时钟端)早于到达d端,则响应位r为1,否则r为0。调整状态模块用于平衡两条路径的延迟。在理想情况下,两条路径的延迟应该是一样的,这样工艺偏差才可以确定crp(激励响应对,即一个激励和其对应的一个响应),并且响应位具有均匀性,即不同激励对应的响应中1的百分比预期为50%。

pufpass在android系统中的实现分为四层,参见图2,从底层到顶层分别为:linux内核、硬件抽象层(hal)、安卓运行时(art)和本地c/c++库以及应用程序框架。其中,linux内核是android平台的基础,linux内核允许android系统提供核心系统服务(如安全、内存和驱动程序模型),要访问puf(即本实施例中的异或仲裁器puf),需要在linux内核中写一个硬件驱动程序(即puf驱动程序),该硬件驱动程序主要包括三个部分:首先,将输入数据写到特定的总线地址上,该总线地址由硬件设计人员确定;其次,在输入数据准备好后,激活硬件对输入进行计算,激活信号一般也由硬件设计人员确定;最后从总线特定的地址上读回硬件计算结果,该总线地址同样由硬件设计人员确定。硬件抽象层(hal)为应用程序框架提供硬件功能的标准接口,当应用程序框架中的api(即pufpassapi)调用访问硬件设备时,hal的实现被打包成模块并被加载到android系统,本实施例在hal中添加了puf接口模块,用于访问puf的驱动程序。安卓运行时(art)中的java本地接口(jni)用于执行hal中硬件模块的调用,因此,本实施例在安卓运行时(art)和本地c/c++库提供puf接口模块的jni。应用框架层为开发人员提供了整套用java语言编写的api,本实施例在应用框架层中实现pufpass的api,另外,在应用程序框架层还实现了pufpass预处理模块、pufpass密码增强模块和pufpass后处理模块。

应用程序包括操作系统自带的应用程序和用户安装的应用程序,站点密码生成系统的输入模块在应用程序中实现(其中,输入模块包括用于输入用户名和用户密码的界面),应用程序开发人员可以使用android的edittext类提供的gettext()函数获取用户密码。根据本发明的一个实施例,应用程序还可以包括如下功能:使用单向哈希(如md5或rsa)对站点密码加密,然后将加密后的站点密码发送到应用程序的服务器以进行验证。

对于如图2所示的基于android系统和zynq7000实现的站点密码生成系统而言,其工作流程如下:

1.应用程序中的输入模块接收用户输入的用户名和用户密码pwdu,该用户名与应用程序的一个用户账户相对应。其中,用户密码包含可以在键盘上找到的任何ascii字符,用户可以选择一个易记的用户密码并且不用考虑密码复用的问题。

接着,输入模块查找本地(即安装所述应用程序客户端的终端,或称设备)是否存储有与用户输入的用户名对应的用户账户的随机标签lab。如果找到,说明用户使用已有的用户账户登录,则输入模块将lab从本地存储中取出,并且自动获取应用程序的域名dom,随后,输入模块将(lab,pwdu,dom)三元组发送到pufpass在android系统应用程序框架中的api(即图2中的pufpassapi);如果没有找到,则输入模块为该用户名对应的用户账户生成一个随机标签,并且将由该随机标签、域名和用户密码组成的三元组发送至pufpass在android系统应用程序框架中的api,所发送的三元组(lab,pwdu,dom)用于创建对puf(即异或仲裁器puf)的激励。

2.应用程序框架中的pufpass预处理模块(图2中未示出)经由pufpassapi接收三元组,并且根据该三元组构建用于输入异或仲裁器puf的激励,另外,pufpass预处理模块还要根据站点密码的规则计算异或仲裁器puf生成的响应位数,并且将激励和响应位数发送至pufpass密码增强模块。

具体地,构建用于输入异或仲裁器puf的激励包括:pufpass预处理模块经由api接收到三元组后,对三元组中的各个元素进行拼接,即将lab,pwdu和dom连接成一个字符串(非二进制字符串),作为第一字符串。随后,pufpass预处理模块根据异或仲裁器puf的位长(其中异或仲裁器puf的位长等于其每个仲裁器puf的位长,应理解,每个仲裁器puf的位长也是相等的)将第一字符串格式化为一个或多个具有特定长度的激励字符串,又称为一个或多个第二字符串(非二进制字符串)。最后,pufpass预处理模块根据ascii表将一个或多个第二字符串转换为一个或多个激励(其中,每个激励的位数与异或仲裁器puf的位长相等),具体地,对于每个第二字符串,将其每个字符转换为二进制比特位并且将这些二进制比特位串联起来。举例而言,假设异或仲裁器puf的位长为n并且第二字符串中的字符可以转换为na个激励位,则将第一字符串格式化为一个或多个具有特定长度的第二字符串的过程具体包括:如果第一字符串的长度小于n/na,则复制第一字符串本身(即从第一字符串的第一个字符开始复制),直到所得到的字符串长度等于n/na,从而得到第二字符串;如果第一字符串的长度等于n/na,则将第一字符串直接作为第二字符串;如果第一字符串的长度大于n/na,则将第一字符串裁剪为多个长度等于n/na的子字符串,如果最后一个子字符串的长度不到n/na,则复制最后一个子字符串,直到其长度等于n/na,由此得到的多个子字符串作为多个第二字符串。异或仲裁器puf具有固定的位长,采用这种格式化的方法,可以在为不同用户账户生成有效激励的同时,尽量保留lab、pwdu和dom的信息不流失。

另外,如上所述,pufpass预处理模块还需要根据站点密码的规则,计算异或仲裁器puf生成的响应的位数。常见的站点密码规则通常包括对站点密码的长度要求以及对站点密码的字符类型要求,例如,站点密码长度必须大于或等于指定值lm,站点密码仅包含数字,站点密码必须包含字母和符号,或者站点密码必须包含大写字母和小写字母等等。对此,pufpass预处理模块首先将站点密码的字符长度确定为大于等于站点密码的长度要求(如lm)的一个量l;然后,根据站点密码的字符类型要求确定站点密码每个字符对应的响应位数ng,即一个二级制位数,以使得响应按照ng进行分组后,每一组中的二进制比特位能够转换为所要求的类型的字符(例如包括数字或字母),举例而言,如果要求站点密码只包含数字(0-9),则站点密码的每个字符对应的响应位数可以为四位(23<10<24)。最后,将所确定的字符长度l与每个字符对应的响应位数ng相乘,得到异或仲裁器puf生成的响应位数。

3.应用程序框架中的pufpass密码增强模块接收激励和异或仲裁器puf生成的响应位数,并且将这两个信息通过art中的pufjni发送到hal中的puf接口模块;puf接口模块通过puf驱动程序将激励和异或仲裁器puf生成的响应位数发送给硬件层的cpu;cpu通过axi接口将激励和异或仲裁器puf生成的响应位数发送至fpga中的puf(即异或仲裁器puf)。

4.在接收到来自cpu的激励的刺激后,异或仲裁器puf利用随机工艺偏差生成响应,其中,响应的长度等于所接收的异或仲裁器puf生成的响应位数,响应为二进制字符串。

如上文所述,如果在pufpass预处理模块中生成一个激励(即异或仲裁器puf接收到一个激励),则异或仲裁器puf的响应为根据此激励产生的一个响应;如果pufpass预处理模块中生成多个激励(即异或仲裁器puf接收到多个激励),则异或仲裁器puf根据所述多个激励生成相应的多个响应。应理解,激励经过puf后产生的响应中,0和1出现的概率相似且随机,约为50%,由此保证了pufpass密码增强模块及pufpass后处理模块中的输入的随机性,进而提高了所生成的站点密码的安全性。

5.异或仲裁器puf将生成的响应通过cpu发送至puf驱动程序,并且依次经由puf接口模块、pufjni发送至应用程序框架中的pufpass密码增强模块。如果返回的是一个响应,则pufpass密码增强模块将该响应直接发送至应用程序框架中的pufpass后处理模块;如果返回了多个响应,则pufpass密码增强模块将所述多个响应进行异或操作得到最终的响应,然后将最终的响应发送至应用程序框架中的pufpass后处理模块,以由pufpass后处理模块将接收到的响应转换为站点密码pwds。

6.pufpass后处理模块将接收到的响应转换为站点密码pwds,该过程具体包括:首先,将响应的所有二进制比特位按照站点密码每个字符对应的响应位数ng进行分组;然后将每一组中的二进制比特位转换为十进制的整数,再将整数除以d(d表示站点密码的每个字符可能有d个可能的选项),其余数对应站点密码(非二进制字符串)的一个字符。例如,如果站点密码要求只包含数字,则d可以设为10;如果站点密码要求包含更多类型的字符,则ng和d需要相应变大。转换后,所生成的站点密码在满足站点密码规则的同时也保留了异构仲裁器puf的响应的随机性。

7.应用程序框架中的pufpass后处理模块经由api将生成的站点密码pwds发送到应用程序,再由应用程序将pwds发送至应用程序的服务器进行验证。如上文所述,应用程序在发送前可以使用单向哈希(如md5或rsa)对站点密码pwds进行加密。

从上述流程可知,puf(如异构仲裁器puf)可以为用户生成高质量、安全的站点密码,从而抵抗离线攻击;同时,即使在两台设备上部署相同的pufpass,也很难从相同的用户密码产生相同的站点密码,因此避免了单点故障。pufpass可以通过用户界面的选项提供给用户,用户界面(其作为输入模块的一部分)的实现如图4所示。要使用pufpass,只需要在用户界面中选中pufpass复选框就可以了。

上文以android系统和zynq7000作为实现站点密码生成系统的软/硬件平台,但本发明提供的站点密码生成系统(包括输入模块和pufpass)的实现并不局限于此,它也可以被布置在诸如ios、windows的其他操作系统中,或者被布置在其他硬件上。另外,puf除了可以集成在安装应用程序的客户端的终端处(如图2所示),也可以集成在为应用程序提供密钥保护功能的服务器上。

在上文的实施例中,激励来自(lab,pwdu,dom)三元组,其优点是能够区分用户账户和抵抗钓鱼攻击。而对于一些安全性要求较低的应用程序来说,也可以通过使用pwdu和dom,pwdu和lab,甚至仅使用用户密码pwdu来构建激励,从而减少计算并提高效率。在其他实施例中,也可以使用用户密码与其他信息的组合来构建激励。另外,在上文的实施例中,提供了一种通过拼接、格式化和二进制转换从三元组构建激励的方法,而在其他实施例中,也可以使用其他适用的方法来构建激励,例如,将三元组中的每个元素转换为二进制后,再做逻辑异或操作。

在上文的实施例中,所使用的仲裁器puf属于强puf,即具有多个crp的puf,采用强puf的好处在于能够节省硬件开销。然而,在不考虑硬件开销的情况下,弱puf(即仅具有一个crp)也是适用的。并且除了异构仲裁器puf,其他puf(如轻巧仲裁器puf、前馈仲裁器puf、纤细仲裁器puf等)也能实现本发明的目的。

尽管上文利用输入模块为用户账户生成随机标签lab,而在其他实施例中,输入模块可以将为用户账户生成随机标签的请求(该请求例如包括用户名和用户密码)经由api发送至应用程序框架中的pufpass预处理模块,由pufpass预处理模块根据用户名和用户密码或者其他信息构建激励并将激励(经由pufpass密码增强模块等)发送至puf。随后,由puf生成相应的响应并且经由pufpass密码增强模块等发送至pufpass后处理模块。由pufpass后处理模块将响应转换为用户账户的随机标签lab并发送给应用程序,并且由应用程序将该随机标签lab存储在本地。

发明人通过实验验证了本发明提供的密码生成系统的安全性,下文将对本发明的安全性展开描述,并且分析本发明的可用性,以及与其他现有技术相比本发明所具有的优势。

安全性分析

安全性是通过分析存在单点故障的情况下攻击者是否可以访问目标账户来评估的,所有的实验都是在装有ubuntu14.04操作系统的台式机上进行的,台式机配置了英特尔i7处理器(四核,3.6ghz),nvidiagtx1080的gpu和32gb内存。

假设攻击者已知用户名和站点密码生成系统的工作流程,以下从用户密码、设备(即安装应用程序的客户端的终端)、站点密码和服务器的角度分析本发明的安全性:

(1)用户密码

用户密码可以由攻击者通过肩窥攻击或钓鱼攻击获取。然而,攻击者不能生成正确的激励,因为他不知道随机标签。即使攻击者也获得了随机标签并且能产生正确的激励,但是没有puf他仍然无法生成正确的站点密码。

(2)设备

攻击者可以获取设备以及存储在其中的随机标签。然而,他不知道用户密码,因此攻击方式仅限于在线攻击用户密码。由此,攻击者会受到网站速度控制机制等的限制,网站速度控制机制对单位时间内尝试的登录次数做了限制,如果失败登录的次数太多,该用户账户就会被禁用。另外,这种对设备的攻击也非常容易被发现,因为这种攻击本质上是主动攻击。

(3)站点密码

站点密码可以通过监视获得,或者通过诱骗用户使用站点密码到恶意网站登录而获得。由于站点密码是由特定的puf生成的,而且每个puf生成的密码之间不存在依赖关系,因此攻击者依然无法从其他账户的站点密码推断出目标账户的站点密码。

(4)服务器

如果目标服务器被攻入,则攻击者可以获取目标账户的加密的站点密码,然后他就有足够的时间对目标账户的站点密码进行离线攻击。

发明人使用hashcat对站点密码执行基于规则的攻击,并且攻击时间足够长。具体地,在开源密码字典上对默认generate2.rule文件中的65117个规则都进行了尝试,并且使用从crackstation下载的密码字典作为攻击字典。该字典按字母顺序排列并删除了重复项,字典有12亿个条目,包括可在网上找到的所有单词表,字典和泄露的密码数据库,以及维基百科数据库和所有单词。在此基础上,发明人破解从用户密码生成的站点密码,其中用户密码仅包含6位数字,站点密码的长度范围为8到16,站点密码的所有字符都可以在键盘上找到。密码的破解结果如表1所示。其中,“密码类型”表示站点密码的类型,“混合”表示站点密码至少包含字母、数字和符号中两种类别的字符,“总数”和“攻击个数”分别表示站点密码的总个数和被破解的站点密码个数。从表1可见,在所有这些站点密码中,没有一个被破解,这说明它们能够抵抗基于规则的攻击(需要注意的是,尽管破解时间均少于6小时,但对所有的65117个规则都进行了尝试),上述结果为站点密码抵抗离线攻击的能力提供了有力证据。

表1

发明人还分析了另一种攻击的可能性,即用户同时知道站点密码和设备,其中站点密码包括除目标站点以外的所有用户账户的站点密码。

从上文的分析可知,在线攻击用户密码以及从其他账户的站点密码推断目标账户的站点密码对于访问目标账户是没有任何帮助的。但是,如果攻击者获得站点密码并且知道站点密码的生成方法,他也可以使用离线攻击破解用户密码。

对于异或仲裁器puf而言,可以使用公式(1)计算响应,其中,t表示puf的响应,l表示异或仲裁器puf中仲裁器puf的个数,表示第i个仲裁器puf每段路径的延迟,是激励c的函数,c由用户密码,标签,和域名构建得到;若x≥0则syn(x)=1,否则为-1。攻击者可以从站点密码推断出t,他也可以获得由域名得到的那部分激励。然而和用户密码是未知的,换句话说,攻击者只知道响应和部分激励,因此攻击者不能对本发明执行传统的建模攻击。

另外,发明人还使用复合启发式算法来攻击用户密码,实验结果如表2所示。其中,“匹配度”是指用户密码和预测用户密码相等字符所占的比例。表2中,匹配度最高为23.3%,此时已知站点密码的数量是10000。但实际上,一般用户平均只有25个账户,这又进一步增加了攻击难度。

表2

可用性评估

可用性评估包括易用性,记忆负担,延迟,以及可移植性等。

(1)易用性

为提高安全性,用户仅仅需要执行一个操作——勾选pufpass复选框。输入用户名和用户密码等其他操作与传统应用程序相同,这些操作对于用户而言几乎是无缝的。

(2)记忆负担

使用本发明的用户只需要记住一个密码,也就是用户密码。本发明可帮助用户生成唯一的、安全的、可抵抗离线攻击的站点密码。由于受puf保护,用户密码也可抵抗离线攻击。因此,用户可以选择一个容易记住的用户密码,或者直接使用旧的用户密码,而不用考虑用户密码是否安全。

(3)延迟

生成式密码管理器的延迟主要来自于站点密码的生成。本发明利用puf来执行站点密码生成的任务。使用puf生成密码的速度与使用哈希或密钥延伸生成密码的速度相比,几乎没有延迟。

(4)可移植性

大多数人都可能会使用密码管理机制从多个设备登录账户,例如家里和工作地点的台式机,出差的笔记本电脑,或从公共终端。是否可以从多个设备访问账户是评估可用性的一个重要标准。

实现可移植性的一种方法是采用机器可读标签-二维码实现可移植性。以微信为例,每次用户在pc上打开网页时,服务提供商都会生成一个包含通用唯一标识符(uuid)的二维码。当用户使用已经登录微信的手机扫描该二维码时,就会生成包含用户名和密码的令牌。uuid与该令牌绑定后被发送到服务器。然后服务器将该令牌发送到网页版微信,网页版微信使用此令牌来获取用户信息和消息。使用二维码,可以在没有集成puf或者实现pufpass的其他设备上访问账户。

实现可移植性的另一种方法是将puf与登录设备分开。puf可以集成到一些轻巧、便携而且不容易丢失或者由于设备更新换代丢弃的设备中。此设备应该能够随时通过登录设备进行访问,它可以是sd卡、u盘或者任何其他可在计算机或移动电话上插拔的设备,此外,物联网(iot)中的智能设备在我们的日常生活中已经非常常见。因此,puf可以集成到这些可以与登录设备进行通信的iot设备中,如智能戒指,智能手环等。这一解决方案要求请求登录的设备中已经部署pufpass。

与其他密码管理机制的比较

发明人将本发明提供的pufpass与现有9种密码管理机制的(uds框架中的)25个属性进行了比较,比较结果如表3所示。

表3

·=完全具有该特性;ο=几乎具有该特性;空格=不具有该特性

从表3可知,本发明在保持了易用性和可部署性的优势的同时,在安全性上有了很大的提高,如抗肩窥、身份冒充、离线攻击和单点故障等等。

应注意到一些示例性方法被描绘为流程图。虽然流程图将操作表述为顺序执行,但可以理解的是,许多操作可以并行、同时或同步地执行。另外,可以重新排列操作的顺序。处理可以在操作完成时终止,但是也可以具有并未包括在图中或实施例中的另外的步骤。

上述方法可以通过硬件、软件、固件、中间件、伪代码、硬件描述语言或者它们的任意组合来实现。当以软件、固件、中间件或伪代码实施时,用来执行任务的程序代码或代码分段可以被存储在计算机可读介质中,诸如存储介质,处理器可以执行该任务。

应理解,软件实现的示例性实施例通常在一些形式的程序存储介质上进行编码或者在一些类型的传输介质上实现。程序存储介质可以是任意的非瞬态存储介质,诸如磁盘(例如,软盘或硬盘)或光盘(例如,紧凑盘只读存储器或“cdrom”),并且可以是只读的或者随机访问的。类似地,传输介质可以是双绞线、同轴线缆、光纤,或者本领域已知的一些其它适用的传输介质。

虽然本发明已经通过优选实施例进行了描述,然而本发明并非局限于这里所描述的实施例,在不脱离本发明范围的情况下还包括所做出的各种改变以及变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1