论文部分内容阅读
基于时空平衡理论的彩虹表算法,是继穷举搜索法与查表法后,在特定的散列算法(如无盐算法MD5、SHA-1、NTLM等)口令分析上得到广泛应用的另一种有效方法。2003年Oechslin基于TMTO(Time-Memory Trade-Off)理论首次提出彩虹表概念,并且实现了在链计算中采用不同缩减函数来避免链回环与链碰撞的方法。针对彩虹表存储空间大和在线查找分析耗时长两个特点,现今彩虹表研究方向主要有两个:一、对实际口令进行特征分析,归纳口令中每段字符区间的字符出现规律,然后使用更精确的字符空间去描述长明文口令,以缩减表的预计算时间与降低存储成本。同时针对彩虹表算法本身,优化链计算的规约函数或者通过设置检查点等技术来降低表中链终点的碰撞概率,以降低假警率。二、基于成本日益低廉的存储设备与高性能计算部件,利用分布式计算等技术搭建一定规模的计算集群来提高表的预计算与在线查找效率。本文利用MPI与Open MP技术设计并实现了基于MIC集群的非规则字符空间彩虹表生成系统,实现了适用于非规则字符空间彩虹表的规约函数。此外,还设计实现了基于多台GPU服务器的彩虹表分布式并行查找系统,用于提升在线查找效率。查找系统采用主从架构,包含一个调度节点,多个GPU节点。调度节点负责资源管理,任务调度等;GPU节点拥有IO资源和计算资源,IO资源用于表数据存储、检索终点与返回起点,计算资源用于链计算。同时通过将表数据分散存储于多个节点,利用多节点IO能力缩减文件读取时间。最后,本文通过对查找系统实现链计算模块、网络传输模块与文件读取模块的并行化,实现了各模块间时间的相互掩盖,对于提升系统整体运作效率起到了重要作用。