论文部分内容阅读
密码分析的问题可以通过穷搜索或查表法解决。但是它们分别需要需要大量的时间与存储空间。进而,穷搜索与查表法存在比较大的局限。彩虹表密码分析算法是时间与空间两个维度上的一类折中算法。与前者相比,彩虹表的适用性更广2003年,Oechslin提出了彩虹表算法,并使用它实现了对Win-dows XP登录系统使用的LM算法的破解。但是,Oechslin没有深入分析预计算所需要的时间。我们发现,在彩虹表的很多应用中,预计算所需的时间仍然在可接受的范围之外。因此,本课题主要动机是减少预计算所需要的时间。近些年来,科学计算领域已经开始大量采用基于中央处理器与图形处理器的异构模型。在所有异构计算解决方案中,NVIDIA的统一计算架构(CUDA)应用最为广泛。新架构给我们带来了新的机遇,与此同时也带来了新的挑战。鉴于彩虹表算法的实际需求以及CUDA异构模型能提供的强大计算能力,本课题基于CUDA异构模型,改进与实现了彩虹表算法。具体而言,本文涉及的主要工作与创新点如下:一、研究彩虹表算法,并提出改进方案。本文分析了在线阶段中,理论研究与工程实现之间的差异。基于此,提出了优化参数选择与改进表结构的方法。优化参数选择侧重在通用性。而改进表结构侧重在一类新的结构。二、研究CUDA编程模型,实现彩虹表算法。本文讨论了CUDA编程的特性与优化方法。首次全面考虑异构模型的引进对彩虹表每一个阶段的影响。与此同时,考虑到图形处理器的特点,本文还讨论了归约函数的实现与线程参数的选择。最后,基于彩虹表与图形处理器的特性,对HMAC-MD5算法的实现提出了改进的方法。三、基于改进与实现,完成了对比实验。基于提出的方案,在多平台上完成了离线与在线阶段的对比实验。通过对比实验,一方面,验证了文章中的一些结论;另外一方面,也验证了与传统的计算模型相比,异构模型下,离线阶段与在线阶段分别只需要1/40与1/3的成本。最后,通过深入分析实验结果,我们得出彩虹表的瓶颈在硬件与函数实现。破解的瓶颈则在对链重构上