摘 要 基于分布式计算的暴力破解密码系统长久以来承担着检验密码强度和安全性的重要任务,但随着系统规模的进一步加大以及密码强度的不断升级,系统出现一定程度的效率下降问题。本文的主要工作是对传统分布式暴力破解密码系统流程进行完善和创新,以便达到克服以上问题的目的。
【关键词】暴力破解 密码 分布式系统
1 引言
随着社会经济的发展,特别是Internet的发展,社会信息化进程越来越快,互联网络环境下的信息安全由于涉及到国家政治、经济、军事等领域的安全和社会稳定,已日益成为国家安全领域中的重中之重,2014年中央网络安全和信息化领导小组宣布成立以及2016年《中华人民共和国网络安全法》的颁布已经充分说明了网络安全的重要性。而密码技术作为信息安全领域中的重要内容,它的安全性是不言而喻。而暴力破解密码系统是测试密码安全性的重要方法,所以提高暴力破解密码的效率便是人们一直追求的目标。但是随着计算规模的不断增大,传统的分布式密码暴力破解系统出现各种各样的问题。本文在传统的分布式密码暴力破解流程的基础上进行了改进和研究,期望能有效的解决上述问题。
2 分布式计算和暴力破解简介
2.1 分布式计算
与分布式计算相对的是集中式计算。集中式计算的代表就是世界各国所研制的超级计算机,而分布式计算就是利用散布在世界各地的连接在Internet上的微型计算机以达到可以媲美超级计算机计算能力的一种计算方法。在计算机刚出现的早期,因为硬件资源的昂贵,计算机经历了从早期的一台服务器、多台客户机的C/S架构逐步发展到现在的分布式计算,同时也出现了以Hadoop为代表的优秀的分布式计算平台。
所谓的分布式计算就是把需要一个庞大计算量的任务按一定的规则分解成一个个彼此独立的小型子任务,然后将这些子任务分发到分布式平台上的节点计算机进行相应的计算以及处理,最后将这些节点计算机的计算结果进行汇总处理以得到最终的结果。
分布式计算有如下优点:
(1)数据处理能力媲美超级计算机。
(2)强大的容错能力,一个节点失效和出错,可以迅速由另一个节点取代。
(3)便于管理,分布式节点的加入和退出非常方便。
(4)在所有节点上实现平衡负载,得以把任务放到最适合处理它的节点上进行处理。
正是具有了这些优点,分布式计算以其强大的计算能力和具有一定弹性机制的扩展性被视为新一代互联网发展的基础和趋势。
2.2 暴力破解
暴力破解(Brute Force Attack)就是通过搜索密钥空间中所有密钥的方法来找到正确的密钥以达到破解密码的目的。
暴力破解的循环工作流程如图1所示:
(1)从密钥空间中提取一个密钥;
(2)将此密钥送入破解程序进行验证;
(3)判断此密钥是否正确;
(4)如果正确则运算结束,否则返回第一步。
从理论上说,暴力破解一定会奏效,但在现实生活中暴力破解所需要的金钱成本和时间成本非常巨大。但是当暴力破解结合了分布式计算的强大计算能力,暴力破解就显示出了它巨大的优势。
3 系统架构以及流程图
3.1 系统架构
暴力破解系统的实现一般采用Server/Client模式,我们借鉴经典的C/S架构,并在此基础上做出一点改进:增加一个控制端(Controller)的角色,改进后的C/S架构如图2所示。
服务器端主要负责任务的分块、分发以及计算结果的接收等;控制端主要负责客户端的注册、向服务器端提供客户端节点信息等;客户端主要负责任务块的计算。
3.2 服务器端(Server)
服务器端的主要功能包括任务的分块、任务块的状态跟踪、任务的分发以及计算结果的接收。并且可以随时暂停和取消客户端的任务。
3.2.1 任务分块
服务器端内部集成了任务分片算法,可以将一个或者多个大任务分成多个小型子任务。任务块的划分与具体的密码算法有关。
3.2.2 任务块状态跟踪
在给客户端分发任务块前,服務器需要跟踪任务块的状态。我们把任务块状态分成三种情况:
(1)尚未分配给客户端;
(2)已经分配给客户端,但尚未返回结果;
(3)计算完毕。
我们可以根据不同的任务设定不同的超时时间,在规定的时间内仍未返回结果的任务块将被赋予更高的优先级。
3.2.3 任务分发
服务器端把任务块状态是A或者B的任务块分发给客户端,我们可以根据任务的精密程度将任务块分发到两个或者多个客户端。
3.2.4 结果接收
当服务器接收到两个(或者多个)客户端上传的计算结果后进行结果比对,将认定计算错误的结果丢弃,同时将计算错误的客户端加入黑名单,以防止恶意节点的破坏。如果计算结果正确,则停止任务分发,任务成功结束。
3.3 控制端(Controler)
控制端是整个计算任务的协调者,负责协同一致性等处理,它的主要工作包括:负责客户端节点的注册、把客户端节点信息介绍给服务器端,与客户端节点保持心跳连接。
(1)客户端节点的注册:当客户端节点加入到系统中时首先在控制端进行登记注册,之后便与客户端节点保持松散耦合的关系,当客户端节点退出或者被加入黑名单之后都会在控制端进行登记。
(2)把客户端节点信息介绍给服务器端:当服务器节点需要分配新的计算任务时便去控制端查询可用的客户端节点,然后进行任务的分配。
(3)与客户端节点保持心跳连接:在一定的心跳间隔时间内与客户端节点进行一次通信,如果客户端节点死掉则剔除它,以便每次服务器端查询客户端节点的时候都能得到最新的可以调用的客户端信息。
3.4 客户端(Client)
客户端作为分布式计算的运算节点执行真正的破解任务,是计算任务的真正承担者。
客戶端节点在控制端上进行注册,之后服务器为每个注册成功的节点分配一个已知结果的测试任务块:如果客户端节点计算正确则为它们分配真正需要计算的任务块和解密算法进行计算;如果客户端节点没有返回正确的计算结果,则将它加入黑名单。客户端节点完成计算任务后向服务器端返回任务结果——同样测试返回结果的正确性来决定是否继续给客户端节点分发任务还是将其加入黑名单。如果计算的过程中客户端节点发生故障,控制端则在规定的心跳间隔时间内与客户端节点进行一次通信,如果客户端仍然没有回应,控制端就会删除此客户端节点信息。上述执行过程循环往复一直进行下去直到计算任务的完成。
4 结论
分布式计算以其强大的计算能力被广泛应用于科学研究以及生产生活的各个方面。本文在传统的分布式暴力破解密码的计算架构基础上进行了改进和创新,以期望获得更好的并发性和效率,为暴力破解密码系统的研究提供了一个新的思路。本文的内容只是一个开始,接下来的计划是在局域网中甚至互联网中利用这一思想进行验证分析。
参考文献
[1]付安民,张玉清.对称密码算法暴力破解的研究现状和进展[A].2006.
[2]姜峰.基于分布式GPU密码破译平台的研究与实现[D].北京邮电大学,2013.
[3]蒋秉天.基于分布式计算的密码恢复系统研究[D].上海交通大学,2010.
[4]张丽丽,张玉清.基于分布式计算的RC4加密算法的暴力破解[J].计算机工程与科学,2008(07):15-17+20.
[5]蒋秉天.基于分布式计算的密码恢复系统研究[D].上海交通大学,2010.
作者简介
陈万里(1989-),男,河南省安阳市人。现为贵州大学计算机科学与技术学院在读研究生。主要研究方向为网络与信息安全。
吴绍华(1989-),男,黑龙江省绥化市人。现为贵州大学计算机科学与技术学院在读研究生。主要研究方向为数据挖掘,高维数据聚类。
作者单位
贵州大学计算机科学与技术学院 贵州省贵阳市 550025