李 斌,周清雷,斯雪明,冯 峰
(1.郑州大学信息工程学院,河南 郑州 450001;2.数学工程与先进计算国家重点实验室,河南 郑州 450001)
数据加密是信息安全的重要手段,密码技术是网络安全与保密的核心和关键。DES(Data Encryption Standard)作为最有代表性的分组加密算法,包括DES Crypt和3DES,对系统性能要求低,易于软硬件加速实现,被应用于各种保密通信之中[1,2],如网络协议、数据加密、智能卡加密、系统加密等。为有效恢复出以DES为核心加密的数据,提供电子取证,并测试DES的各种破译攻击,提供安全性研究,对DES算法的计算加速和恢复策略,显得至关重要。在国外,对DES算法的恢复定制了专用的crack.sh平台和设备(https:∥crack.sh;https:∥www.sciengines.com),Hashcat(https:∥hashcat.net/hashcat)提供了各种DES密码算法的恢复计算。在国内,也出现了各种DES专用恢复设备,其以ASIC实现的方式(http:∥www.jn-ljjx.com)极大提高了DES的性能。其次,针对DES算法的高速并行攻击,利用FPGA可灵活实现多种结构,兼顾性能和功耗[3 - 5],具有明显优势。最后,为了提高安全性,DES经常与RSA、Hash函数等联合使用,包括含有盐值Salt的DES Crypt和3DES算法,这也给为恢复加密数据带来了一定困难。
显然,对于DES的计算,CPU和GPU只能依靠多核心和频率的提升来加速,且GPU功耗较高。而ASIC仅能支持单个DES应用的恢复,缺失了一定灵活性。其次,DES算法应用众多,需要灵活的架构和不同恢复策略支持,以提高恢复效率。最后,对于联合使用多种密码算法的DES加密机制,是否可绕过部分过程,直接对DES进行破解,并据此恢复其他数据,也亟待研究。
拟态计算依托可重构技术,通过剖析应用的计算特征,依据尽可能高效的原则,构建出合适的处理结构,并随着处理负荷的变化,主动进行结构变更,以达到“应用决定结构,结构决定效能”的目的。为进一步提高DES的性能和可扩展性,结合拟态计算的思想,本文提出了一种混合可重构的DES算核高效能口令恢复方案。通过对DES算法的深入剖析,形成可重构的算核[6],并以全局异步局部同步GALS(Global Asynchronous Local Synchronous)架构对算核进行互连,建立混合结构,提高了计算速度、能效比和灵活性。其次,优化并设计了高速口令生成算法,以匹配DES的高速口令输入需求,并针对不同应用提出了各种恢复策略,提高了恢复效率。最后,通过实验对比了不同计算部件DES算法的性能,并验证了本文方案的有效性。
(1)网络协议。目前大多数网络协议中仍以DES为核心加密算法,如LM、NTLM v1、Kerberos 5[7]、VPN、IPSec、FTD等协议。以VPN为例,目前仍有60%以上的VPN使用PPTP隧道协议[8],以DES进行通信加密传输。但是,国内出现了大量的“翻墙”软件,有自由门、极速安全VPN、蝙蝠VPN等。不法之徒利用这些网络协议,通过私自架设服务器,在国内传播不良信息,并将重要数据备份在国外服务器上,给电子取证和犯罪审查造成了巨大的阻碍。
(2)数据恢复。对于DES分组加密算法,有ECB、CBC、CFB、OFB这4种常用加密模式。其中,由于ECB加密模式简单,且利用并行化处理,目前被广泛使用。作为DES解密数据的突破口,ECB加密模式也是本文研究的重点。当获取到DES密文后,可以采用并行逆向计算的方式[9],尝试用各种不同的口令恢复同一数据段,并以解析到明文输出为判断条件,直到找到唯一正确的密钥。显然,这对DES加密数据的安全性及其变种改进算法的抗攻击性测试具有重要意义。
(3)系统恢复。DES算法在智能卡[10]、芯片[11]和操作系统[12]等领域仍被广泛应用着,以此来实现关键数据的保密,如IC卡与POS间的双向认证、金融交易系统和Linux/Unix系统登录认证。通过调试跟踪工具,如OllyDBG、DDMS等,可以跟踪软件的内存读写和程序执行状态,进而获取有用信息,为恢复加密数据提供支持。对于智能卡和芯片,目前则更多是依赖差分功耗分析DPA(Differential Power Analysis)[13]进行破解。但是,DPA也需要输入n次口令,并对每次产生的功耗进行分析,所以DES的计算性能至关重要。
DES算法是一种单密钥分组密码算法,以64 bit的密钥对64 bit的数据分组进行加密,输出64 bit的密文。明文数据块首先经过初始置换IP,再使用16个扩展后的子密钥进行16轮迭代编码,最后经过一个逆初始置换IP-1,输出密文,可表述如下:DESm=IP(m)→Round(K0),Round(K1),…,Round(K15)→IP-1。DES解密过程与加密类似,只需要对迭代过程逆序使用子密钥即可,第1轮使用K15,第2轮使用K14,依次类推,即有:DES-1m=IP(m)→Round(K15),Round(K14),…,Round(K0)→IP-1。DES加/解密流程如图1所示。
Figure 1 DES encryption/decryption process图1 DES加/解密流程
DES加密的核心是16轮迭代循环,64 bit明文在经过初始置换后,被分为L0和R0共2个32 bit的数据块;然后R0与子密钥K0进行乘积变换,得到F(R0,K0);再与L0异或得到L0⊕F(R0,K0),随后使用Ln=Rn-1,Rn=Ln-1⊕F(Rn-1,Kn-1)重复迭代过程。其中,F包括:扩展函数E、按位异或、S盒运算和置换函数P这4个功能模块。对于密钥扩展,56 bit的密钥被分成2个28 bit的半密钥,每个半密钥经过循环左移处理,并通过选择置换,产生48 bit的子密钥。DES单轮加密流程如图2所示。Rn-1先由扩展函数E扩展到48 bit,然后再与扩展后的48 bit的子密钥Kn-1按位异或,得到8组6 bit的数据。这8组数据再进入6 bit输入4 bit输出的S盒S1,S2,…,S8,得到32 bit的数据。最后经过置换函数P,得到32 bit的输出。
Figure 2 Single round encryption process图2 单轮加密流程
由以上分析可以看出,DES算法具有如下特点:(1)数据通路简单,都是位级的线性变换;(2)16轮核心迭代完全相同,且每轮迭代均为线性变换;(3)DES是分组密码算法,参与运算的数据块前后没有相关性[14],因而可以将循环展开,形成流水线;(4)DES每轮参与运算的子密钥可以提前生成。
虽然基于FPGA对DES算法有了众多优化[15-17],但其仅优化了算法本身,并未对算法在各种应用场景中的使用进行分析。为进一步提高DES算法的应用灵活性和可扩展性,本文结合拟态计算算核的设计思想,以有限规模的硬件解决DES算法多领域应用,并采用全局异步局部同步GALS的架构,实现芯片级的多维可重构,进而高效地实现DES各种应用的口令恢复。
拟态计算以算核为基本功能单元,其规模受解算目标的应用驱动,可按应用所需重构成不同数量、粒度和功能的算核,进而可获得更高的单元利用率,兼顾高效计算和灵活性。因此,算核是一种计算粒度可变的计算结构,对于提高计算系统的效能和资源利用率具有重要意义。
算核的计算模型可表示为:CK=(VE,ED,PR,ME,CO,GR),其中VE={ve1,ve2,…,ven},表示算核的集合;ED={edij|edij=vei,vej,vei,vej∈VE,1≤i,j≤n},称为有向边集,表示算核之间数据依赖先后关系及串并行关系;PR={pr1,pr2,…,prn},代表算核的串行计算量;ME={me1,me2,…,men},代表算核所需内存容量或硬件寄存器资源;CO={co1,co2,…,con},代表每条边eij上的通信量;GR={gr1,gr2,…,grn},表示计算粒度,粒度大小受输入输出数据和串、并行实现方式影响。
图3所示为算核重构的示意图。其中I1~I5为输入算核,A1~A4、D1~D4、F1~F4为中间算核,O1~O5为输出算核。通过每条路径上算核的重构连接得到了一定的运算功能。那么,针对DES口令恢复算法,以片内逻辑块、IP核、功能函数、算法等形成算核,利用FPGA细粒度可重构器件,通过触发器FF(Flip Flop)和查找表LUT(Look Up Table)等实现串并混合的计算结构,可获取更好的可扩展性和执行效率。
Figure 3 Reconstruction of the computing kernel图3 算核重构
DES口令恢复算法主要由口令生成、DES算核和对比逻辑构成,并由主控模块与上位机通信,完成任务的初始化与配置。其中DES算核支持动态可重构,可根据用户配置信息,重构成不同功能和结构的算核。同时,采用GALS架构放置多个算子模块,各个算子独立执行,可支持同一掩码多个任务或不同掩码同一任务等多种恢复模式。当某个算子找到正确口令时,由多路复用器MUX(MUltipleXer)进行仲裁输出,并传递给上位机,其整体框架如图4所示。
Figure 4 Password recovery overall framework of DES computing kernel图4 DES算核口令恢复整体框架
基于算核模型,采用粗细粒度的混合结构,以重构IP置换、密钥拓展、轮运算等模块,形成串行、并行、流水线等多种执行方式,以及加密、解密等多种不同的DES算核。同时,配以不同的口令生成策略和对比模块,满足不同应用的计算需求。基于拟态计算的DES口令恢复,其流程如算法1所示。
算法1DES口令恢复算法
输入:FPGA配置信息、任务信息和口令策略。
输出:正确密钥key。
1.由FPGA配置信息,载入对应的比特流文件,并完成任务和口令的配置。
2.While(HasNextKey)do
3.key=GenerateNextKey(口令策略);
4.d=DES(key);
5.If( 对比验证通过 )
6.Returnkey;
7.EndIf
8.EndWhile
从算法1中可以看出,以DES为核心算法的口令验证流程较为简明。通过口令生成模块产生key,并代入DES算核逐一验证,如果计算出的结果和验证串相同,即找到了对应的正确key。
为满足不同应用的需求,这里对DES算核的串行实现进行了优化,以减少资源占用,提高布线成功率。同时,使用全流水架构实现DES的高速并行计算,以空间换取时间,最大化算法的吞吐量和性能。
由于DES解密是加密的逆过程,只有密钥使用的顺序相反,中间操作完全相同。因此,为实现统一的DES加/解密算法,在密钥扩展时,只并行计算一次,并得到16组Key。然后,通过状态机控制,根据当前迭代的轮数,选择对应的Key。这样不仅节省了资源,还简化了设计。图5所示为DES串行加/解密的结构图。
Figure 5 DES serial structure图5 DES串行结构图
图5中,密钥拓展采用assign连续直接赋值,并由16个寄存器数组保存,可在1个时钟周期内执行完成。单轮计算也采用assign赋值,可在1个时钟周期内完成,并将结果保存在寄存器中,由状态机控制,向下传递。整个DES加/解密串行需要17个时钟周期,其中数据输入占用1个时钟,计算过程占用16个时钟,并在最后一次计算完成后,直接输出结果。
在使用FPGA以全流水架构实现DES算法时,需要将单轮计算实例化16次,并使用寄存器数组存储每轮的计算结果,然后顺次传递。由于参与运算的数据和密钥是连续的,因此在密钥扩展时,需要在1个时钟周期内生成16组数据对应的密钥,并参与16轮计算。如图6所示,采用位宽为48 bit的寄存器数组Key_r[0:15]存储扩展后的密钥,数据在经过初始化后,由寄存器数组L_r[0:15]和R_r[0:15]依次进行存储。
Figure 6 DES pipeline architecture图6 DES流水线架构
当流水线开始工作时,在第1个时钟周期对第1组数据进行初始化和密钥扩展,生成Key_r[0],然后参与第1轮运算,产生结果L_r[1]和R_r[1]。在第2个时钟周期,Key_r[0]会进行密钥扩展生成Key_r[1],并和L_r[1]、R_r[1]参与第2轮计算,产生结果L_r[2]和R_r[2]。同时,第2组数据会进行初始化和密钥扩展操作,生成新的Key_r[0],并参与第1轮计算,产生新的L_r[1]和R_r[1]。以此类推,直至16轮迭代计算完成,然后依次输出16组数据的加密结果。显然,每组数据都要经过16个时钟周期才能计算出结果。但是,当流水线满负荷工作时,每个时钟周期都会产生输出,相比于串行DES算法,其处理速度提高了16倍,具有很高的计算性能。
由于FPGA属于位级计算部件,非常适合与或非、异或、移位等操作。而DES运算中,正好含有大量的位级运算,但在每轮运算中需要8个S盒参与运算,S盒的优化显得十分重要。S盒是一个十分复杂的非线性函数,可以使用多重case,以LUT和MUX进行实现;还可以使用卡诺图进行适当化简,得到逻辑表达式,然后使用硬件语言描述;或者直接使用BRAM(Block Random Access Memory)进行S盒存储。前2种方法规模较小,适宜特定硬件平台。第3种方法随着硬件工艺的提升,对拥有丰富BRAM资源的FPGA非常适用。
本文采用第3种方法,以BRAM存储S盒,不仅可以充分利用FPGA资源,还可平衡LUT、寄存器和BRAM的使用,有利于FPGA布局布线。优化后的DES单轮结构如图7所示。
Figure 7 DES single round structure图7 DES单轮结构
文献[18]通过对大量真实口令集的统计分析,指出口令的频率分布符合Zipf分布,为评估口令猜测攻击模型提供了理论基础。由于DES破解速度十分快,结合口令的Zipf分布,只需采用穷举策略,即可满足恢复的要求。如果采用字典进行破解,传输带宽将成为计算瓶颈。同时,由于字典通常只包括常见的弱口令,且无法涵盖所有口令,必然存在口令遗漏的情况。本文方案优化并实现了掩码攻击和奇偶概率攻击,缩短了计算时间。
对于DES算法,其口令长度固定为8 B,因此采用全空间的掩码攻击。相比于暴力穷举攻击,掩码攻击可对口令的每一位进行配置,使攻击更加有效。为充分发挥FPGA计算效率,使多个算子并行计算,将掩码口令划分为2部分,其中一部分用来产生口令前缀,另一部分用来穷举余下的口令。这样,就可将不同的口令前缀分配到多个算子,并将口令前缀和余下穷举的口令组合形成完整的口令输入DES进行计算。其过程如算法2所示。
算法2掩码口令生成算法
输入:口令配置信息pwd_config[7:0][0:7],pwd_fix[0:7]。
输出:候选口令password[7:0][0:7]。
1.Fori= 0 to 7do
2.password[i] = Null;
3.index[i] = 0;
4.Endfor
5.While(True)do
6.Fori= 0 to 7do
7.If(pwd_fix[i] == 1)∥该位为已知明文
8.password[i] =pwd_config[i];
9.Else∥全空间穷举
10.password[i] =AllCharSet(index[i]);
11.EndIf
12. 判断第i位索引index[i]是否需要进位或归0
13.Endfor
14. 输出password;
15. 如果index[0,…,7]全为0,跳出While循环;
16.EndWhile
显然,算法2可以以流水线的方式实现,在算法中的第1~4行可在1个时钟周期内完成初始化,第6~13行可使用8个模块并行计算,并将口令第i(0≤i≤7)位对应的字符同时输出,然后在1个时钟周期内完成拼接并输出,如图8所示。
Figure 8 Mask password generation pipeline 图8 掩码口令生成流水线
此外,口令生成的速度在某些情况下会成为计算的瓶颈,需要进行深度优化。本文采用2级流水线的方法,将原流水线隔断为2个独立的流水线,1个模块工作在低频,另1个模块工作在高频,并将低频流水线生成的口令,通过异步FIFO传输给高频模块,高频模块再对低频模块生成的口令进行补位扩充操作,并产生最终的口令。经该方法优化后,掩码攻击最高每秒可产生400M个口令。
对于DES算法的64 bit密钥,其中8 bit是奇偶校验位,只有56 bit参与计算。因此,只需从0到256-1穷尽56 bit所有密钥,即可达到百分之百破解率。进一步,结合统计学分析,采取先穷举偶数,再穷举奇数的规则,以优先恢复出其中的部分口令,达到事半功倍的效果。同时,放置多个算子并行计算,每个算子分配不同的密钥前缀,以提高攻击性能。奇偶概率攻击口令生成算法如算法3所示。
算法3奇偶概率口令生成算法
输入:口令配置key_config[17:0]。
输出:候选口令key[55:0]。
1.key_high[17:0] =key_config[17:0];
2.key_low[37:0] = 0;
3.While(True)do
4.If(key_low== 38’hFFFFFFFFE)
5.key_low= 1;
6.Else
7.key_low=key_low+2;
8.EndIf
9.If(key_low== 38’hFFFFFFFFF)
10.Break;
11.EndIf
12.key= {key_high,key_low}。∥拼接生成key
13.EndWhile
网络协议授权过程中,Hash+DES的方式仍被广泛应用着,它以用户口令输入Hash函数,并将产生的结果经过处理作为DES加密的密钥,以此保护用户数据安全。如图9所示,详细给出了VPN PPTP使用微软Ms CHAP v2身份认证的过程。
Figure 9 Ms CHAP v2 authentication process图9 Ms CHAP v2认证过程
客户端和服务端会分别由Ms CHAP v2身份认证过程产生各自的NtResponse,并在服务端进行对比验证,如果2个NtResponse一致,则验证成功,否则验证失败。从图9中的流程可以看出,在截获协议交互信息后,可以通过穷举用户口令产生NtResponse,并与截获的NtResponse进行对比,如果一致,则找到了正确的口令。进一步,由于用户口令范围极广,16 bit的全字符空间约有PwdNum=9516个口令,而DES密钥空间为KeyNum=256,显然,PwdNum要远大于KeyNum,采用奇偶概率攻击是十分有效的方法,且对DES密钥空间搜索可以达到100%的破解率。由此,还可直接对3个DES进行密钥奇偶概率攻击,还原MD4哈希值,并据此恢复其他加密数据。最后,对诸如此类的网络协议,如LM、NTLM v1、Ms CHAP v1、Kerberos 5等,都可以用类似方法进行密钥恢复。
对于使用DES加密数据的恢复,在得到足够多密文的情况下,可以用口令逐一尝试,并以输出明文为判断条件,当连续得到np组明文时,即找到了唯一的正确口令。对于DES ECB模式的口令恢复如图10所示。
Figure 10 DES ECB decryption diagram图10 DES ECB解密示意图
由于ASCII码表中有256个字符,其中95个为可显示字符,则DES解密全为明文的概率为q=(95/256)8≈3.60×10-4。全口令空间大小为488(去除奇偶校验位重复的字符),只有一个正确口令的概率为p=1/(488)≈3.55×10-14。如果连续解密成功4组数据,有q4≈1.67×10-14,且q4
在服务器领域,Linux/Unix系统由于其开放性、公开性和可移植性等优势,被绝大多数用户使用。但是,其带来诸多便利的同时,安全问题也随之而来。其中DES Crypt作为用户身份认证加密算法仍被使用着。DES Crypt算法使用盐值Salt作为参数,完成对用户口令的加密。例如,特征串“s2JQ85JElCMeU”,其中“s2”为Salt值,“JQ85JElCMeU”为加密后的验证信息。整个过程需要25次DES迭代,如图11所示。
Figure 11 Linux/Unix user password verification process图11 Linux/Unix用户口令验证过程
由于DES口令输入为8个字符,因此用户口令空间为958,可以使用掩码进行全空间搜索,以达到100%的破解率。进一步,对循环迭代使用DES或DES Crypt算法的其他软件、密码机或系统都可进行类似的口令恢复。
对于以DES为核心的口令恢复算法,可以用四元组表示PWRC={PWD,CORE(DES),CMP,SRP},其中,PWD表示口令,可以是掩码攻击、奇偶攻击或字典攻击产生的口令;CORE(DES)表示以DES为核心的算法,可以是DES的变形算法或其他算法的组合,如DES Crypt、Hash+DES、2次DES迭代组合等;CMP表示结果对比;SRP表示存储正确口令。
为了有效支持各种应用场景的DES恢复,对PWRC进行可重构设计,如图12所示。图12中深灰色表示粗粒度可重构模块[19],各模块间由FIFO互连。采用基于算核的映射方式,在PWD、CORE(DES)、CMP各阶段选择不同的算核进行灵活重构,形成应用。其次,改变FIFO位宽和深度衔接各个模块,完成异步时钟域的同步和数据传输。最后,以参数配置的形式实例化多个算子,适配多种FPGA并提高了资源利用率。针对网络协议、数据和系统的口令恢复,给出如下几种重构结构,如表1所示。
Table 1 Reconstruction structure description of each application表1 各应用重构结构说明
本文实验的硬件平台是4核FPGA集成加速卡,芯片型号为XILINX公司的xcku060,其查找表LUT资源为331 680,FF寄存器资源为663 360。软件平台为集设计、仿真、综合、布线、生成于一体的Vivado软件。实验通过对DES口令恢复算法的各模块进行深度优化,给出了资源占用及各种重构方案,使最终算法在吞吐量、运行速度、资源利用率等方面有了较大的提升。其次,与CPU、GPU和其他方案进行了性能对比分析。最后,给出了各种应用及口令策略的恢复效率分析。
表2所示为DES口令恢复算法主要算核的资源占用情况。从表2中可以看出,各模块占用资源较少,完全满足算核的设计要求,可重构成各种结构,并布局多个模块并行计算,满足不同应用的需求。表3所示为4种典型应用的DES算核重构方案及实现情况。从表3中可以看出,每个应用不仅充分利用了FPGA资源,工作频率还均在360~400 MHz,具有非常高的性能。
Table 2 Implementation of each module表2 各模块实现情况
Table 3 Typical application of DES computing kernel reconstruction and implementation表3 典型应用DES算核重构及实现情况
首先,给出了本文DES实现方案与其他方案的对比,如表4所示,其中吞吐量的计算公式为:吞吐量=输入位宽×频率。从表4中可以看出,本文实现的17级流水线DES方案较其他方案具有更高的吞吐量。
Table 4 Comparison of the scheme in this paper with other schemes表4 本文方案与其他方案对比
其次,以VPN DES为例,使用FPGA加速卡与使用CPU、使用GPU在性能、功耗和能效比方面进行了对比,结果如表5所示。其中CPU型号为NVIDIA Intel i5-7500(4核,3.40 GHz),GPU为GTX 1080(2 560核,1 860 MHz),软件测试平台为hashcat v3.60。能效比计算公式为:能效比=性能/功耗,显然能效比越高越好。
Table 5 Performance comparison among platforms FPGA,CPU and GPU 表5 FPGA、CPU和GPU平台上性能对比
从表5中可以看出,使用FPGA的速度分别是使用CPU和GPU的2 353.14倍和14.19倍,使用GPU的速度是使用CPU的165.81倍。使用FPGA的能效比分别是使用CPU和使用GPU的584.96倍和11.02倍,使用GPU是使用CPU的53.08倍。无论是从速度还是能效比,使用FPGA都要优于使用CPU和GPU。一方面由于DES算法主要为逻辑运算,非常适合FPGA实现。另一方面,基于算核的设计方法充分利用了FPGA资源,提高了FPGA计算频率,具有明显的优势。
最后,给出了单个FPGA随DES算核个数增加及加速卡随FPGA个数增加的功耗变化情况,如图13和图14所示。从图13和图14中可以看出,板卡空载功耗约为64.48 W,每个算核的功耗约为0.3 W,整个加速卡的功耗约为276.32 W。显然,基于算核的实现方式,在保证了DES性能的同时具有较低的功耗,适合大规模使用。
Figure 13 FPGA power consumption changes with the increasement of DES computing kernels图13 FPGA随DES算核增加的功耗变化
Figure 14 Accelerator card power consumption changes with the increasesment of FPGAs图14 加速卡随FPGA个数增加的功耗变化
针对DES ECB加密模式,使用掩码模式攻击,对数据进行恢复。当连续np组解密后的数据都为明文时,即可判断解密成功。表6给出了各种口令组合使用单个加速卡掩码攻击的恢复时间。
Table 6 DES ECB mask attack recovery time表6 DES ECB掩码攻击恢复时间
从表6中可以看出,对于常用的数字+字母组合口令,使用加速卡进行恢复,仅需要8.88 s的时间,对数字+字母+特殊字符的组合口令,最长也仅需要177.90 s。显然,对于DES ECB加密模式数据的恢复,本文方案基本可以做到实时恢复,效率十分可观。
对于Linux/Unix系统口令的恢复,每次初始化计算时会先将口令左移1 bit,但参与DES Crypt计算的仍为56 bit有效密钥。这样,可以统计分析移位后的字符,并直接使用移位后的字符作为新的字符表,再去除其中重复的字符,以此来减少口令空间。同时,由于DES Crypt需要循环迭代25次,使用掩码攻击,其恢复时间会增加25倍。
搭建服务器集群,每个服务器配有8个加速卡,以VPN PPTP为恢复对象,采用奇偶概率攻击,穷举0~256-1所有56 bit密钥,表7所示为随着服务器个数的增加,其恢复时间的变化。
Table 7 Password recovery time on server cluster 表7 服务器集群上口令恢复时间
从表7中可以看出,当服务器集群规模为16时,加速卡可在0.58 h内穷尽56 bit全部密钥空间,达到100%的恢复效率。而crack.sh系统含有48块 XILINX Virtex-6 LX240T FPGA,需要26 h才能穷尽56 bit密钥空间,文献[4]在120块XC7S100 FPGA规模下,也需要19 h。对大量VPN的恢复任务,本文服务器集群可保证短时间内的有效恢复,为电子取证提供了强力支撑。
本文提出的混合可重构的DES算核多应用口令恢复方案,以DES算核为研究对象,设计并优化了串行、全流水结构的DES算核。然后,基于统计学原理,给出了掩码攻击和奇偶概率攻击,提高了应用口令恢复效率,并给出了不同应用场景下的恢复策略。最后,通过深入剖析各应用的特征,以DES算核的变结构组合,适配各种应用。实验结果表明,该方案可重构出的DES算法在性能、资源、功耗等方面具有明显优势,较使用CPU和GPU有10倍以上的提升。同时,结合口令恢复策略,可在较短时间内恢复出原始口令。
进一步,基于算核的设计思想,为定制ASIC芯片提供了理论基础和技术支持。可将口令生成、密钥扩展、串行DES、流水线DES、对比模块等算核在ASIC芯片内部规划布局,通过配置信息完成相应算法的切换,并获取更高的计算性能。基于算核可重构的ASIC DES算法实现,也是下一步的研究方向。