CUDA Tutorial – Cryptanalysis of Classical Ciphers Using Modern GPUs and CUDA
CUDA教程–古典密码学分析使用现代GPU和CUDA的密码
1 介绍
CUDA(以前是Compute Unified Device Architecture的缩写)是一种Nvidia创建的并行计算平台和API模型允许软件开发人员可以使用支持CUDA的图形处理单元(GPU)进行常规目的处理1在本教程中,我们以易于理解的方式介绍了CUDA概念。互动方式。 但是,要充分利用本教程,需要满足一些基本先决条件:
基本熟悉C,C ++或类似语言
•对密码学有基本的了解
•对启发式技术有基本的了解
•拥有支持CUDA的设备
第2节简要介绍了图形处理单元(GPU)。 在这个本节中,我们将设置我们的编程环境,并学习如何利用通过解决一些琐碎的问题来实现GPU的多核体系结构。
第3节提供了GPU线程的概念并分析了现代GPU的方式在对经典计算机执行自动密码分析方面可能会有所帮助密码系统。
从头开始,我们实现了一个完整的独立GPU工具,用于自动解密通过单字母替换(MAS)加密的密文(仅密文攻击)。 在整个过程中,我们将学习如何设计工具,哪些优化可以显着增强我们的例程功能,为什么选择适当的元启发式方法2是至关重要的,以及如何绘制通过主动解决即将出现的问题来启发设计过程的草图。
通过组织线程数限制问题可以轻松解决线程以块为单位,如第4节所示。然后,在元启发式选择,密码分析的关键部分–伪随机嵌套在设备本身中的数字生成器(PRNG)。 进一步讨论原因可以发现PRNG对经典的密码分析非常有利在3.3和4.3小节中。 有了这个,我们可以进一步优化我们的密码分析工具,通过使用独立的伪随机数池,这允许开发更灵活的元启发式方法。
第5节简要讨论了一些基本的CUDA调试工具,这些工具用于区分主机产生的错误和设备产生的错误。 此外,我们概述了CUDA内存模型的简要概述,以及为什么要使用共享内存可以大大提高我们未来应用程序的速度。
然后,第6节简要讨论了动态分配的内存的使用设备,更具体地说,为什么要避免使用它。 例如,我们演示如何通过使用预定义的宏来避免这种用法。
第7节首先总结了整个过程中所做的最关键的改进。教程。 然后,按照上一阶段概述的设计原则章节中,构建了一个独立的CUDA应用程序,用于对通过单列转置密码加密的密文进行自动密码分析。 在最后,将提供的CUDA应用程序与最新技术进行比较密码分析工具。
最后的第8节总结了应解决的关键范例在设计CUDA密码分析工具的过程中。