本發(fā)明涉及信息安全技術(shù)領(lǐng)域,尤其涉及一種基于FPGA硬件的word2003文檔破解系統(tǒng)及方法。
背景技術(shù):
MD5(Message-Digest Algorithm 5)是目前廣泛應(yīng)用的Hash函數(shù)之一。MD5將任意長(zhǎng)度的“字節(jié)串”變換成一個(gè)128bit的大整數(shù),并且它是一個(gè)不可逆的字符串變換算法,換句話說就是,即使你看到源程序和算法描述,也無(wú)法將一個(gè)MD5的值變換回原始的字符串,從數(shù)學(xué)原理上說,是因?yàn)樵嫉淖址袩o(wú)窮多個(gè),這就像不存在反函數(shù)的數(shù)學(xué)函數(shù)。
MD5主要用途包括如下三個(gè)方面:
1、防止被篡改方面的應(yīng)用:比如發(fā)送一個(gè)電子文檔,發(fā)送前,我先得到MD5的輸出結(jié)果a,然后在對(duì)方收到電子文檔后,對(duì)方也得到一個(gè)MD5的輸出結(jié)果b,如果a與b一樣就代表中途未被篡改。
2、防止直接看到明文方面的應(yīng)用:現(xiàn)在很多網(wǎng)站在數(shù)據(jù)庫(kù)存儲(chǔ)用戶的密碼的時(shí)候都是存儲(chǔ)用戶密碼的MD5值,這樣就算不法分子得到數(shù)據(jù)庫(kù)的用戶密碼的MD5值,也無(wú)法知道用戶的密碼;用戶的密碼就是以MD5(或其它類似的算法如SHA1)經(jīng)加密后存儲(chǔ)在文件系統(tǒng)中,當(dāng)用戶登錄的時(shí)候,系統(tǒng)把用戶輸入的密碼計(jì)算成MD5值,然后再去和保存在文件系統(tǒng)中的MD5值進(jìn)行比較,進(jìn)而確定輸入的密碼是否正確。通過這樣的步驟,系統(tǒng)在并不知道用戶密碼的明碼的情況下就可以確定用戶登錄系統(tǒng)的合法性,這樣不但可以避免用戶的密碼被具有系統(tǒng)管理員權(quán)限的用戶知道,而且還在一定程度上增加了密碼被破解的難度。
3、防止抵賴(數(shù)字簽名)方面的應(yīng)用:這需要一個(gè)第三方認(rèn)證機(jī)構(gòu)。例如A寫了一個(gè)文件,認(rèn)證機(jī)構(gòu)對(duì)此文件用MD5算法產(chǎn)生摘要信息并做好記錄;若以后A說這文件不是他寫的,認(rèn)證機(jī)構(gòu)只需對(duì)此文件重新產(chǎn)生摘要信息,然后跟記錄在冊(cè)的摘要信息進(jìn)行比對(duì),相同的話,就證明是A寫的了,這就是所謂的“數(shù)字簽名”。
彩虹表(Rainbow Table)是一個(gè)用于加密散列函數(shù)逆運(yùn)算的預(yù)先計(jì)算好的表,是一種破解哈希算法的技術(shù),是一款跨平臺(tái)密碼破解器,主要可以破解MD5、SHA1等多種密碼。
在以前,國(guó)外的黑客們就發(fā)現(xiàn)單純地通過導(dǎo)入字典,采用和目標(biāo)同等算法破解,其速度其實(shí)是非常緩慢的,就效率而言根本不能滿足實(shí)戰(zhàn)需要。之后通過大量的嘗試和總結(jié),黑客們發(fā)現(xiàn)如果能夠?qū)崿F(xiàn)直接建立出一個(gè)數(shù)據(jù)文件,里面事先記錄了采用和目標(biāo)采用同樣算法計(jì)算后生成的Hash散列數(shù)值,在需要破解的時(shí)候直接調(diào)用這樣的文件進(jìn)行比對(duì),破解效率就可以大幅度地,甚至成百近千或近萬(wàn)倍地提高破解效率,這種事先構(gòu)造的Hash散列數(shù)據(jù)文件在安全界被稱之為Table表(文件)。
對(duì)現(xiàn)有技術(shù)的專利檢索發(fā)現(xiàn),專利號(hào)201110099441的“基于FPGA實(shí)現(xiàn)的超高吞吐量md5暴力破解裝置”提供了一種基于FPGA硬件暴力破解MD5算法的設(shè)計(jì)方法,該專利缺陷在于:暴力破解性能遠(yuǎn)不如彩虹表破解技術(shù),而且只有MD5單一算法,對(duì)于文檔破解無(wú)能為力。專利號(hào)2/277,039的“Hardware-implemented MD5 function”提出了基于FPGA的設(shè)計(jì)方法,但是不涉及彩虹表的破解。專利號(hào)3/440,264的“Efficient Implementation of Hash Algorithm on a Processor”提出基于ARM處理器實(shí)現(xiàn)MD5算法的方案,該專利缺陷在于:ARM處理器速度和效率不如FPGA,而且該方案也不涉及基于彩虹表的破解。專利號(hào)200510025068的“文件口令的破解方法”提出基于PC機(jī)的窮舉法破解方案,沒有涉及彩虹表破解,設(shè)計(jì)缺陷是破解太耗時(shí)間。
綜上所述,現(xiàn)有技術(shù)中并未涉及基于FPGA硬件技術(shù),并利用時(shí)空折中算法的進(jìn)行word2003文檔破解,因此如何提高word2003文檔破解效率,如何平衡破解時(shí)間和資源消耗之間的矛盾,如何權(quán)衡破解時(shí)間和彩虹表大小存儲(chǔ)之間的矛盾,如何提高數(shù)據(jù)處理速率和數(shù)據(jù)吞吐量,則是現(xiàn)有技術(shù)中有待解決的問題。
技術(shù)實(shí)現(xiàn)要素:
為了克服現(xiàn)有技術(shù)存在的缺點(diǎn)與不足,本發(fā)明提供一種基于FPGA硬件的word2003文檔破解系統(tǒng)及方法,能夠快速、高效地進(jìn)行文檔破解。
為解決上述技術(shù)問題,本發(fā)明提供如下技術(shù)方案:一種基于FPGA硬件的word2003文檔破解系統(tǒng),運(yùn)用于PC設(shè)備之中,該P(yáng)C設(shè)備設(shè)有輸入接口模塊和輸出接口模塊,所述輸入接口模塊和輸出接口模塊之間設(shè)有多個(gè)并行設(shè)置的破解模塊,所述破解模塊包括依次相連的子密鑰生成模塊、彩虹表匹配模塊和密鑰破解模塊;其中
所述子密鑰生成模塊用于生成子密鑰且實(shí)現(xiàn)子密鑰的MD5運(yùn)算以及RC4運(yùn)算;
所述彩虹表匹配模塊用于生成彩虹表且對(duì)所述子密鑰進(jìn)行彩虹表的匹配;
所述密鑰破解模塊用于將匹配后的子密鑰進(jìn)一步實(shí)現(xiàn)MD5運(yùn)算以及RC4運(yùn)算。
進(jìn)一步地,所述子密鑰生成模塊包括依次相連的子密鑰輪循控制器、MD5算法模塊以及RC4算法模塊,其中
所述子密鑰輪循控制器用于讀取密文且控制MD5算法、RC4算法的運(yùn)算次數(shù);
所述MD5算法模塊用于實(shí)現(xiàn)MD5算法運(yùn)算;
所述RC4算法模塊用于實(shí)現(xiàn)RC4算法運(yùn)算。
進(jìn)一步地,所述彩虹表匹配模塊包括依次相連的彩虹表控制器、讀取彩虹表控制器、彩虹表匹配器以及存儲(chǔ)器,所述存儲(chǔ)器均與所述彩虹表控制器、讀取彩虹表控制器相連,所述存儲(chǔ)器為DDR3存儲(chǔ)器,其中
所述彩虹表控制器接收所述子密鑰生成模塊運(yùn)算產(chǎn)生的子密鑰、讀取彩虹表控制器讀取子密鑰、彩虹表匹配器對(duì)子密鑰進(jìn)行彩虹表的對(duì)比匹配,所述彩虹表存儲(chǔ)在所述DDR3存儲(chǔ)器,若子密鑰與彩虹表匹配成功,則子密鑰進(jìn)入密鑰破解模塊;若否,則將匹配不成功的子密鑰做丟棄處理。
進(jìn)一步地,所述密鑰破解模塊包括算法輪循控制器、MD5算法模塊以及RC4算法模塊,其中
所述算法輪循控制器用于控制MD5算法、RC4算法的運(yùn)算次數(shù);
所述MD5算法模塊用于實(shí)現(xiàn)MD5算法運(yùn)算;
所述RC4算法模塊用于實(shí)現(xiàn)RC4算法運(yùn)算。
進(jìn)一步地,所述MD5算法模塊、RC4算法模塊均包括FPGA硬件以及FIFO存儲(chǔ)器,所述FPGA硬件實(shí)現(xiàn)MD5算法運(yùn)算或RC4算法運(yùn)算,其中
所述MD5算法進(jìn)行64次運(yùn)算,且對(duì)整個(gè)MD5算法做N級(jí)流水線處理,每級(jí)流水線使用所述FIFO存儲(chǔ)器進(jìn)行隔離和數(shù)據(jù)緩存,1≤N≤64;
所述RC4算法實(shí)施N輪流水線設(shè)計(jì),前N-1輪完成密鑰調(diào)度算法,第N輪完成偽隨機(jī)數(shù)生成,每輪流水線之間使用FIFO存儲(chǔ)計(jì)算的中間變量,1≤N≤17。
進(jìn)一步地,所述輸出接口模塊根據(jù)所述破解模塊的破解結(jié)果進(jìn)行報(bào)文分析組幀,且將破解結(jié)果報(bào)送所述PC設(shè)備進(jìn)行驗(yàn)證,若檢驗(yàn)通過,則說明破解成功,完成整個(gè)Word2003文檔破解任務(wù);若檢驗(yàn)沒有通過,則破解失敗,結(jié)束整個(gè)文檔破解任務(wù)。
本發(fā)明另一目的是提供一種基于FPGA硬件的word2003文檔破解系統(tǒng)的破解方法,包括下述步驟:
S1、PC設(shè)備接收word2003文檔密文并且進(jìn)行分析處理,然后產(chǎn)生密鑰和控制信息;
S2、PC設(shè)備將密鑰和控制信息發(fā)送給輸入接口模塊,輸入接口模塊接收密鑰和控制信息傳輸給破解模塊;
S3、破解模塊對(duì)密鑰和控制信息進(jìn)行一系列破解處理過程后,把破解結(jié)果傳輸給輸出接口模塊;
S4、輸出接口模塊根據(jù)所述破解模塊結(jié)果進(jìn)行報(bào)文分析組幀,且將破解結(jié)果報(bào)送所述PC設(shè)備進(jìn)行驗(yàn)證,若檢驗(yàn)通過,則說明破解成功,完成整個(gè)Word2003文檔破解任務(wù);若檢驗(yàn)沒有通過,則破解失敗,結(jié)束整個(gè)文檔破解任務(wù)。
進(jìn)一步地,步驟S3中,破解模塊對(duì)密鑰和控制信息進(jìn)行破解處理的具體方法為:
S31、密鑰以及控制信息均經(jīng)過子密鑰和彩虹表匹配,匹配成功,則子密鑰的高24bit和彩虹表鏈?zhǔn)妆4?,進(jìn)入破解模塊進(jìn)行破解運(yùn)算,進(jìn)入破解模塊的信號(hào)包括子密鑰的高24bit和彩虹表鏈?zhǔn)滓约翱刂菩盘?hào);
S32、根據(jù)MD5算法和RC4算法的特點(diǎn),對(duì)于子密鑰生成模塊的算法MD5和RC4算法、密鑰破解模塊的MD5算法和RC4算法,它們所實(shí)現(xiàn)的功能不一樣,但是算法實(shí)現(xiàn)一樣,即具體的算法是一樣的;其中,控制信息不參與算法運(yùn)算;
S33、破解模塊對(duì)輸入的密鑰進(jìn)行運(yùn)算,若運(yùn)算結(jié)果滿足一定條件的,則將破解結(jié)果和附加信息一起上報(bào)PC;若運(yùn)算結(jié)果不滿足一定條件,則丟棄;
S34、若破解模塊上報(bào)PC的破解結(jié)果和附加信息通過驗(yàn)證,則PC會(huì)下發(fā)停止破解指令,此時(shí)word2003破解系統(tǒng)停止破解運(yùn)算;若沒有通過驗(yàn)證,則破解模塊運(yùn)算完成所有待破解信息,上報(bào)PC,告知破解結(jié)束。
采用上述技術(shù)方案后,本發(fā)明至少具有如下有益效果:本發(fā)明利用彩虹表時(shí)空折中算法破解,而彩虹表相對(duì)于暴力破解和窮舉破解等提高了破解效率,減少破解時(shí)間;在綜合考慮彩虹表和FPGA的技術(shù)特點(diǎn)的基礎(chǔ)上,采用適當(dāng)?shù)牟屎绫磉M(jìn)行破解,很好的解決了破解時(shí)間和資源消耗矛盾之間的問題。
附圖說明
圖1是本發(fā)明基于FPGA硬件的word2003文檔破解系統(tǒng)的整體設(shè)計(jì)框圖;
圖2是本發(fā)明基于FPGA硬件的word2003文檔破解系統(tǒng)的破解模塊設(shè)計(jì)框圖;
圖3是本發(fā)明基于FPGA硬件的word2003文檔破解系統(tǒng)的MD5算法模塊設(shè)計(jì)框圖;
圖4是本發(fā)明基于FPGA硬件的word2003文檔破解系統(tǒng)的MD5算法第二輪設(shè)計(jì)流程圖;
圖5是本發(fā)明基于FPGA硬件的word2003文檔破解系統(tǒng)的RC4算法模塊設(shè)計(jì)框圖;
圖6是本發(fā)明基于FPGA硬件的word2003文檔破解系統(tǒng)的RC4算法第一輪設(shè)計(jì)流程圖;
圖7是本發(fā)明基于FPGA硬件的word2003文檔破解系統(tǒng)的破解方法步驟流程圖。
具體實(shí)施方式
需要說明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互結(jié)合,下面結(jié)合附圖和具體實(shí)施例對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)說明。
如圖1所示,本發(fā)明提供一種基于FPGA硬件的word2003文檔破解系統(tǒng),運(yùn)用于PC設(shè)備之中,該P(yáng)C設(shè)備設(shè)有輸入接口模塊和輸出接口模塊,所述輸入接口模塊和輸出接口模塊之間設(shè)有多個(gè)并行設(shè)置的破解模塊,所述破解模塊包括依次相連的子密鑰生成模塊、彩虹表匹配模塊和密鑰破解模塊;其中,所述PC設(shè)備接收word2003文檔密文并且進(jìn)行分析處理,然后產(chǎn)生密鑰和控制信息,進(jìn)一步PC設(shè)備將密鑰和控制信息發(fā)送給輸入接口模塊,輸入接口模塊接收密鑰和控制信息傳輸給破解模塊,破解模塊對(duì)密鑰和控制信息進(jìn)行一系列破解處理過程后,把破解結(jié)果傳輸給輸出接口模塊,輸出接口模塊根據(jù)所述破解模塊結(jié)果進(jìn)行報(bào)文分析組幀,且將破解結(jié)果報(bào)送所述PC設(shè)備進(jìn)行驗(yàn)證,若檢驗(yàn)通過,則說明破解成功,完成整個(gè)Word2003文檔破解任務(wù);若檢驗(yàn)沒有通過,則破解失敗,結(jié)束整個(gè)文檔破解任務(wù)。
如圖2所示,本發(fā)明包括一系列的破解模塊,每個(gè)破解模塊的組成和破解原來是相同的,多個(gè)破解模塊組合在一起,能夠快速對(duì)多個(gè)密文同時(shí)進(jìn)行處理,加快處理速度。其中,破解模塊包括依次相連的子密鑰生成模塊、彩虹表匹配模塊、密鑰破解模塊,子密鑰生成模塊用于生成子密鑰且實(shí)現(xiàn)子密鑰的MD5運(yùn)算以及RC4運(yùn)算,彩虹表匹配模塊用于生成彩虹表且對(duì)所述子密鑰進(jìn)行彩虹表的匹配,密鑰破解模塊用于將匹配后的子密鑰進(jìn)一步實(shí)現(xiàn)MD5運(yùn)算以及RC4運(yùn)算。
進(jìn)一步地,子密鑰生成模塊包括依次相連的子密鑰輪循控制器、MD5算法模塊以及RC4算法模塊,其中,子密鑰輪循控制器用于讀取密文且控制MD5算法、RC4算法的運(yùn)算次數(shù),MD5算法模塊用于實(shí)現(xiàn)MD5算法運(yùn)算,RC4算法模塊用于實(shí)現(xiàn)RC4算法運(yùn)算。
彩虹表匹配模塊包括依次相連的彩虹表控制器、讀取彩虹表控制器、彩虹表匹配器,以及均與所述彩虹表控制器、讀取彩虹表控制器相連的DDR3存儲(chǔ)器,其中,彩虹表控制器接收子密鑰生成模塊運(yùn)算產(chǎn)生的子密鑰、讀取彩虹表控制器讀取子密鑰、彩虹表匹配器對(duì)子密鑰進(jìn)行彩虹表的對(duì)比匹配,并且彩虹表是在破解文檔前就已經(jīng)存儲(chǔ)在DDR3存儲(chǔ)器中,若子密鑰與彩虹表匹配成功,則子密鑰進(jìn)入密鑰破解模塊;若否,則將匹配不成功的子密鑰做丟棄處理。
密鑰破解模塊包括算法輪循控制器、MD5算法模塊以及RC4算法模塊,算法輪循控制器用于控制MD5算法、RC4算法的運(yùn)算次數(shù),MD5算法模塊用于實(shí)現(xiàn)MD5算法運(yùn)算,RC4算法模塊用于實(shí)現(xiàn)RC4算法運(yùn)算。
上述所述的子密鑰生成模塊或密鑰破解模塊的MD5算法模塊以及RC4算法模塊,它們均實(shí)現(xiàn)MD5算法、RC4算法,原理是一樣的。
子密鑰輪循控制器控制MD5算法的運(yùn)行次數(shù),MD5算法經(jīng)過一系列運(yùn)行發(fā)給RC4算法模塊,RC4算法模塊根據(jù)次數(shù)要求再將運(yùn)算結(jié)果返回到MD5算法初始運(yùn)算,按此步驟循環(huán),直至MD5算法的第64次算法結(jié)束。
如圖3所示,MD5算法包括FF、GG、HH、II共計(jì)4大輪運(yùn)算,每輪16次運(yùn)算,原理相同,子密鑰輪循控制器控制對(duì)整個(gè)輪詢次數(shù)進(jìn)行運(yùn)算,控制MD5算法和RC4算法的運(yùn)行次數(shù);MD5算法經(jīng)過4輪64次運(yùn)算,其結(jié)果發(fā)給RC4算法模塊,RC4算法模塊根據(jù)次數(shù)要求再將運(yùn)算結(jié)果返回到MD5算法中進(jìn)行下次輪詢運(yùn)算,按此步驟循環(huán),直至完成D5算法和RC4算法輪詢次數(shù)結(jié)束。
如圖4所示,MD5的第一輪FF運(yùn)算結(jié)果緩存FIFO中,第二輪GG運(yùn)算啟動(dòng),讀取第一輪FIFO中數(shù)據(jù),GG進(jìn)行16次運(yùn)算,結(jié)果緩存本輪的FIFO中,用于第三輪HH運(yùn)算。
如圖5所示,讀取MD5的運(yùn)算結(jié)果,進(jìn)行RC4算法運(yùn)算,前16輪完成密鑰調(diào)度算法,原理一樣,第17輪完成偽隨機(jī)數(shù)生成,第17輪運(yùn)算結(jié)束時(shí),對(duì)輪詢次數(shù)進(jìn)行判決,完成輪詢次數(shù),則結(jié)果用于下級(jí)模塊的彩虹表匹配,否則送入MD5進(jìn)行下次輪詢運(yùn)算。
如圖6所示,第一輪運(yùn)算主要是將長(zhǎng)度為256的S-box中數(shù)據(jù)順序攪亂,達(dá)到隨機(jī)排序的效果;先讀取MD5的運(yùn)算結(jié)果,同時(shí)進(jìn)行RC4算法中的初始化,S-box的256個(gè)初始狀態(tài)緩存RAM中,完成運(yùn)算16次初始化算法運(yùn)算后,臨時(shí)結(jié)果緩存FIFO中,RAM中緩存的S-box數(shù)據(jù)被攪亂,雙通道的數(shù)據(jù)用于RC4第二輪的運(yùn)算,運(yùn)算原理同第一輪相同。
如圖7所示,本發(fā)明提供基于FPGA硬件的word2003文檔破解系統(tǒng)的破解方法,包括下述步驟:
S1、PC設(shè)備接收word2003文檔密文并且進(jìn)行分析處理,然后產(chǎn)生密鑰和控制信息;
S2、PC設(shè)備將密鑰和控制信息發(fā)送給輸入接口模塊,輸入接口模塊接收密鑰和控制信息傳輸給破解模塊;
S3、破解模塊對(duì)密鑰和控制信息進(jìn)行一系列破解處理過程后,把破解結(jié)果傳輸給輸出接口模塊;其中
S31、密鑰以及控制信息均經(jīng)過子密鑰和彩虹表匹配,匹配成功,則子密鑰的高24bit和彩虹表鏈?zhǔn)妆4?,進(jìn)入破解模塊進(jìn)行破解運(yùn)算,進(jìn)入破解模塊的信號(hào)包括子密鑰的高24bit和彩虹表鏈?zhǔn)滓约翱刂菩盘?hào);
S32、根據(jù)MD5算法和RC4算法的特點(diǎn),對(duì)于子密鑰生成模塊的算法MD5 和RC4算法、密鑰破解模塊的MD5算法和RC4算法,它們所實(shí)現(xiàn)的功能不一樣,但是算法實(shí)現(xiàn)一樣,即具體的算法是一樣的;其中,控制信息不參與算法運(yùn)算;
S33、破解模塊對(duì)輸入的密鑰進(jìn)行運(yùn)算,若運(yùn)算結(jié)果滿足一定條件的,則將破解結(jié)果和附加信息一起上報(bào)PC;若運(yùn)算結(jié)果不滿足一定條件,則丟棄;
S34、若破解模塊上報(bào)PC的破解結(jié)果和附加信息通過驗(yàn)證,則PC會(huì)下發(fā)停止破解指令,此時(shí)word2003破解系統(tǒng)停止破解運(yùn)算;若沒有通過驗(yàn)證,則破解模塊運(yùn)算完成所有待破解信息,上報(bào)PC,告知破解結(jié)束。
S4、輸出接口模塊根據(jù)所述破解模塊結(jié)果進(jìn)行報(bào)文分析組幀,且將破解結(jié)果報(bào)送所述PC設(shè)備進(jìn)行驗(yàn)證,若檢驗(yàn)通過,則說明破解成功,完成整個(gè)Word2003文檔破解任務(wù);若檢驗(yàn)沒有通過,則破解失敗,結(jié)束整個(gè)文檔破解任務(wù)。
盡管已經(jīng)示出和描述了本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域的普通技術(shù)人員而言,可以理解的是,在不脫離本發(fā)明的原理和精神的情況下可以對(duì)這些實(shí)施例進(jìn)行多種等效的變化、修改、替換和變型,本發(fā)明的范圍由所附權(quán)利要求及其等同范圍限定。