一種基于Spark平臺的口令哈希值恢復(fù)方法和裝置的制造方法
【專利摘要】本發(fā)明公開了一種基于Spark平臺的口令哈希值恢復(fù)方法和裝置,其設(shè)計(jì)方法包括口令哈希表到彩虹表數(shù)據(jù)生成步驟和彩虹表解密步驟,記彩虹鏈鏈?zhǔn)坠?jié)點(diǎn)值為SV(Start Value),鏈尾節(jié)點(diǎn)值為EV(End Value),本發(fā)明利用Spark平臺的對大規(guī)模數(shù)據(jù)的處理能力,用map函數(shù)高效地計(jì)算出SV對應(yīng)的EV,生成彩虹鏈保存在HDFS中,完成彩虹表數(shù)據(jù)的生成,利用filter函數(shù)找到與待解密的密文對應(yīng)的所有SV,再調(diào)用foreach函數(shù)根據(jù)每個(gè)SV生成完整的彩虹鏈,對密文進(jìn)行解密。
【專利說明】
一種基于Spark平臺的口令哈希值恢復(fù)方法和裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明屬于網(wǎng)絡(luò)信息安全技術(shù)領(lǐng)域與密碼學(xué)中的密碼逆向恢復(fù)技術(shù)領(lǐng)域,特別涉及一種基于Spark平臺的口令哈希值恢復(fù)方法和裝置。
【背景技術(shù)】
[0002]為了保證數(shù)據(jù)信息安全屬性中的不可篡改性,通常不對口令明文進(jìn)行直接存儲,而是對經(jīng)過哈希運(yùn)算的口令明文對應(yīng)的哈希值進(jìn)行存儲。哈希算法,又稱散列算法,通過置換和混淆等密碼模塊將任意長度的明文輸入轉(zhuǎn)化為固定長度的哈希值輸出,且具有較好的單向性,無法輕易地由輸出逆推得到輸入,由于哈希函數(shù)良好的保密特性和校驗(yàn)功能,因此被廣泛用于數(shù)字簽名、下載校驗(yàn)、口令存儲等應(yīng)用。
[0003]破解口令哈希值的方法包括暴力窮舉法和字典查找法,暴力窮舉法對簡單的密碼和簡單的密碼系統(tǒng)是可行的,但對于復(fù)雜的密碼和密碼系統(tǒng),則會產(chǎn)生無窮大的字典,從而需要海量的計(jì)算時(shí)間;而字典查找法則需要海量的存儲空間,解密代價(jià)太高。
[0004]為了減小所需要字典的大小,減少產(chǎn)生和查找字典的時(shí)間,現(xiàn)有技術(shù)提供一種針對碰撞鏈的解決方案--彩虹表,其基于Mar t i η He 11 man理論(基于內(nèi)存與時(shí)間的權(quán)重理論)。彩虹表是暴力窮舉和字典查找的折中,通過預(yù)計(jì)算的方式來減少口令恢復(fù)的時(shí)間花銷,其核心思想是將明文計(jì)算得到的哈希值由一個(gè)映射函數(shù)映射回到明文空間,進(jìn)而交替地計(jì)算明文和哈希值,以減少哈希值密碼恢復(fù)的時(shí)間。
[0005]Spark是一個(gè)開源簇運(yùn)算框架,最初是由加州大學(xué)伯克利分校AMPLab所開發(fā)。相對于Hadoop的MapReduce會在運(yùn)行完工作后將中介數(shù)據(jù)存放到磁盤中,Spark使用了存儲器內(nèi)運(yùn)算技術(shù),能在數(shù)據(jù)尚未寫入硬盤時(shí)即在存儲器內(nèi)分析運(yùn)算。Spark在存儲器內(nèi)運(yùn)行程序的運(yùn)算速度能做到比Hadoop MapReduce的運(yùn)算速度快上100倍,即便是運(yùn)行程序于硬盤時(shí),Spark也能快上1倍速度。Spark的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)是RDD,Spark平臺將操作封裝在transformat 1n 和act 1n 中,其中 transformat1n 是對RDD 的轉(zhuǎn)換,act1n 是對RDD 進(jìn)行計(jì)算。調(diào)用transformat1n的act1n中的API,Spark平臺會自行進(jìn)行分布式運(yùn)算,程序員只需對Spark進(jìn)行配置,無需考慮分布式是如何進(jìn)行的,這大大降低了平臺使用的門檻。
【發(fā)明內(nèi)容】
[0006]為了克服上述現(xiàn)有技術(shù)的缺點(diǎn),本發(fā)明的目的在于提供一種基于Spark平臺的口令哈希值恢復(fù)方法和裝置,可實(shí)現(xiàn)大容量彩虹表的并行生成、彩虹鏈并行過濾和彩虹鏈并行解密,使其具有高性能、低門檻等優(yōu)點(diǎn)。
[0007]為了實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案是:
[0008]利用Spark平臺進(jìn)行分布式并行生成彩虹表和解密。在生成彩虹表的過程中,需要根據(jù)所有隨機(jī)生成的鏈?zhǔn)坠?jié)點(diǎn)值生成其對應(yīng)的鏈尾節(jié)點(diǎn)值。利用Spark平臺的map函數(shù),可以對每一個(gè)鏈?zhǔn)坠?jié)點(diǎn)進(jìn)行獨(dú)立操作,也就是說,生成彩虹表是可以高度并行的,這大大提高了生成效率。彩虹表在HDFS中是以分塊的方式進(jìn)行存儲的,調(diào)用Spark平臺的fi I ter函數(shù),可以并行地從各塊找出待解密密文對應(yīng)的彩虹鏈,這大大加快了文本匹配的速度。利用Spark平臺的f or each函數(shù),可以并行地從彩虹鏈中計(jì)算出待解密密文所對應(yīng)的明文。
[0009]具體地,本發(fā)明的技術(shù)方案是:
[00?0] —種基于Spark平臺的口令哈希值恢復(fù)方法,包括彩虹表數(shù)據(jù)生成步驟和彩虹表解密步驟,其特征在于,
[0011 ]設(shè)彩虹鏈的數(shù)量為S,長度為L,L>I,則所述彩虹表數(shù)據(jù)生成步驟包括:
[0012]步驟A:根據(jù)字符集隨機(jī)生成S個(gè)鏈?zhǔn)坠?jié)點(diǎn)值SV;
[0013]步驟B:根據(jù)彩虹鏈的生成規(guī)則,計(jì)算出鏈?zhǔn)坠?jié)點(diǎn)值SV對應(yīng)的鏈尾節(jié)點(diǎn)值EV;
[0014]步驟C:將生成的所有(SV,EV)的元組保存在Hadoop分布式文件系統(tǒng)HDFS中;
[0015]所述彩虹表解密步驟包括:
[0016]步驟D:從HDFS中讀出彩虹表;
[0017]步驟E:從彩虹表中過濾出密文對應(yīng)的彩虹鏈;
[0018]步驟F:根據(jù)得到的彩虹鏈計(jì)算出該密文對應(yīng)的明文;
[0019 ]具體地,所述鏈尾節(jié)點(diǎn)值EV的計(jì)算包括以下步驟:
[0020]步驟BI:對每個(gè)鏈?zhǔn)坠?jié)點(diǎn)值SV執(zhí)行L-1次f函數(shù),生成L-2個(gè)中間節(jié)點(diǎn)和一個(gè)鏈尾節(jié)點(diǎn);f函數(shù)包括H函數(shù)和R函數(shù)兩個(gè)部分;其中H函數(shù)即指定的加密函數(shù),R函數(shù)是與當(dāng)前節(jié)點(diǎn)位置i有關(guān)的函數(shù)(KiSL-1),該函數(shù)的定義域和值域需要和H函數(shù)相反;本文用R1表示參數(shù)為i的R函數(shù),fi表示H函數(shù)和Ri函數(shù)的組合;可以令Ri=(X+i)mod N(其中X表示經(jīng)過H函數(shù)處理后的字符串,N表示明文的范圍);步驟B2:調(diào)用Spark平臺的map函數(shù)并行地執(zhí)行步驟Bl0
[0021 ]所述彩虹表中過濾出密文對應(yīng)的彩虹鏈包括以下步驟:
[0022]步驟El:猜測待解密密文所對應(yīng)的明文在彩虹鏈中的位置i,依次從L-1到I進(jìn)行嘗試;
[0023]步驟E2:對密文執(zhí)行Ri函數(shù),將結(jié)果保存在中間節(jié)點(diǎn)M中;再對M執(zhí)行fi+i,fi+2,…,f L-1,將結(jié)果賦值給Μ;
[0024]步驟Ε3:調(diào)用Spark平臺的f i I ter函數(shù)并行地過濾出所有鏈尾節(jié)點(diǎn)值等于M的彩虹鏈,若彩虹表中沒有鏈尾節(jié)點(diǎn)值等于M的彩虹鏈,則嘗試下一個(gè)i;若所有嘗試均未找到符合要求的彩虹鏈,則解密失敗;若存在鏈尾節(jié)點(diǎn)值等于M的彩虹鏈,則進(jìn)入下一步驟。
[0025]根據(jù)彩虹鏈計(jì)算出明文包括以下步驟:
[0026]步驟Fl:從步驟E中得到該密文對應(yīng)的明文在彩虹鏈中的位置i,對該彩虹鏈的鏈?zhǔn)坠?jié)點(diǎn)值SViRf1,f2,…,f1-1,得到的結(jié)果即為該密文對應(yīng)的明文。
?0027] 本發(fā)明同時(shí)提出一種基于Spark平臺的口令哈希值恢復(fù)裝置,包括Spark配置單元、彩虹表數(shù)據(jù)生成單元和彩虹表解密單元,其中:
[0028]Spark配置單元執(zhí)行該恢復(fù)裝置的準(zhǔn)備工作,對Spark平臺提供的計(jì)算能力進(jìn)行配置;
[0029]彩虹表數(shù)據(jù)生成單元產(chǎn)生若干條彩虹鏈的集合,每條彩虹鏈均通過一系列哈希運(yùn)算和映射函數(shù)迭代計(jì)算得到,彩虹表數(shù)據(jù)生成單元僅需要存儲鏈?zhǔn)坠?jié)點(diǎn)和鏈尾節(jié)點(diǎn);
[0030]彩虹表解密單元對待解密密文所對應(yīng)的明文所在位置進(jìn)行猜測,尋找該密文對應(yīng)的鏈尾節(jié)點(diǎn);然后在彩虹表中找到鏈尾節(jié)點(diǎn)與該密文對應(yīng)的鏈尾節(jié)點(diǎn)相同的彩虹鏈,根據(jù)這些彩虹鏈計(jì)算出該密文對應(yīng)的明文。
[0031 ] 具體地,所述Spark配置單元的準(zhǔn)備工作主要包括:
[0032]搭建Spark平臺,配置Master和Slave,然后再對Worker數(shù)量及大小進(jìn)行配置。
[0033]所述彩虹表數(shù)據(jù)生成單元執(zhí)行功能主要包括:
[0034]隨機(jī)生成S個(gè)鏈?zhǔn)坠?jié)點(diǎn)值,然后根據(jù)彩虹鏈生成規(guī)則,計(jì)算鏈?zhǔn)坠?jié)點(diǎn)值對應(yīng)的鏈尾節(jié)點(diǎn)值,調(diào)用Spark平臺的map函數(shù)將計(jì)算結(jié)果存儲在Hadoop分布式文件系統(tǒng)HDFS中。
[0035]所述彩虹表解密單元執(zhí)行功能主要包括:
[0036]猜測待解密密文所對應(yīng)的明文在彩虹鏈中的位置i,對密文執(zhí)行R1函數(shù),將結(jié)果保存在中間節(jié)點(diǎn)M中;再對M執(zhí)行fi+1,fi+2,…,fL-1,將結(jié)果賦值給M,得到該密文對應(yīng)的鏈尾節(jié)點(diǎn);然后調(diào)用Spark平臺的f i I ter函數(shù)從彩虹表中過濾出鏈尾節(jié)點(diǎn)等于密文對應(yīng)的鏈尾節(jié)點(diǎn)的彩虹鏈,若彩虹表中沒有鏈尾節(jié)點(diǎn)值等于M的彩虹鏈,則嘗試下一個(gè)i ;若所有嘗試均未找到符合要求的彩虹鏈,則解密失敗;若存在鏈尾節(jié)點(diǎn)值等于M的彩虹鏈,則調(diào)用Spark平臺的f oreach函數(shù)對每個(gè)彩虹鏈計(jì)算該密文對應(yīng)的明文。
[0037]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:利用Spark平臺在內(nèi)存中高效計(jì)算及其高度并行的特點(diǎn),大大地提高了彩虹表的生成和解密的效率。
【附圖說明】
[0038]圖1是基于Spark平臺口令哈希值恢復(fù)方法的流程圖。
[0039]圖2是基于Spark平臺口令哈希值恢復(fù)方法生成彩虹表部分的流程圖。
[0040]圖3是基于Spark平臺口令哈希值恢復(fù)方法對待解密密文進(jìn)行解密部分的流程圖。[0041 ]圖4是基于Spark平臺口令哈希值恢復(fù)裝置的功能框圖。
[0042]圖5是基于Spark平臺口令哈希值恢復(fù)裝置彩虹表生成單元的功能框圖。
[0043]圖6是基于Spark平臺口令哈希值恢復(fù)裝置解密單元的功能框圖。
【具體實(shí)施方式】
[0044]下面結(jié)合附圖和實(shí)施例詳細(xì)說明本發(fā)明的實(shí)施方式。
[0045]Spark是UC Berkeley AMP lab所開源的類Hadoop MapReduce的通用的并行計(jì)算框架,Spark基于map reduce算法實(shí)現(xiàn)的分布式計(jì)算,擁有Hadoop MapReduce所具有的優(yōu)點(diǎn)。此外,Spark任務(wù)中間輸出和結(jié)果可以保存在內(nèi)存中,這可以加快計(jì)算的讀寫效率。RDD是Spark的最基本抽象,是對分布式內(nèi)存的抽象使用,實(shí)現(xiàn)了以操作本地集合的方式來操作分布式數(shù)據(jù)集的抽象實(shí)現(xiàn)。
[0046]RDD是Spark最核心的東西,它表示已被分區(qū),不可變的并能夠被并行操作的數(shù)據(jù)集合,不同的數(shù)據(jù)集格式對應(yīng)不同的RDD實(shí)現(xiàn)。RDD必須是可序列化的ADD可以cache到內(nèi)存中,每次對RDD數(shù)據(jù)集的操作之后的結(jié)果,都可以存放到內(nèi)存中,下一個(gè)操作可以直接從內(nèi)存中輸入,省去了MapReduce大量的磁盤1操作。
[0047]本發(fā)明正是利用Spark平臺的內(nèi)存計(jì)算和高度并行,利用RDD作為中間結(jié)果,高效地實(shí)現(xiàn)彩虹表生成與解密。具體地,本發(fā)明的一種基于Spark平臺的口令哈?;謴?fù)方法,包括如圖1所示的3個(gè)步驟。
[0048]Stepl,配置Spark平臺參數(shù),主要包括搭建Spark平臺、配置Spark平臺的Master和Slave (即配置Spark平臺控制多少臺主機(jī))和配置Spark平臺的Worker數(shù)量及大小(即配置每臺主機(jī)擁有的工作線程數(shù)量及每個(gè)線程可使用的內(nèi)存和CPU的大小)。
[0049]Step2,生成彩虹表。
[0050]Step3,對待解密密文進(jìn)行解密。
[0051]具體地,彩虹表的生成步驟包括(見圖2,設(shè)彩虹表的大小為S,每條彩虹鏈的長度為L(L>1),虹鏈鏈?zhǔn)坠?jié)點(diǎn)值為SV(Start Value),鏈尾節(jié)點(diǎn)值為EV(End Value)):
[0052]Step 21,隨機(jī)生成S個(gè)彩虹鏈?zhǔn)坠?jié)點(diǎn)值SV,保存在列表list中。
[0053]Step 22,根據(jù)彩虹鏈的生成規(guī)則,將list中的每個(gè)SV作為彩虹鏈?zhǔn)坠?jié)點(diǎn)值計(jì)算出鏈尾節(jié)點(diǎn)值EV,調(diào)用Spark的transformat 1n操作中的map函數(shù),將所有(SV,EV)元組生成RDD數(shù)據(jù)集。
[0054]Step 23,將RDD數(shù)據(jù)集保存在HDFS中。
[0055]彩虹表的解密步驟包括(見圖3):
[0056]Step 31,從HDFS中讀入彩虹表。
[0057]Step 32,猜測密文對應(yīng)的明文所在的位置i,對密文執(zhí)行Ri函數(shù),將結(jié)果保存在中間節(jié)點(diǎn)M中。
[0058]Step 33,對財(cái)丸行乜+1,&+2,...,紅—1,將結(jié)果賦給10
[0059]Step 34,從彩虹表中過濾出鏈尾節(jié)點(diǎn)值EV等于M的彩虹鏈。
[0060]Step 32?Step34具體步驟如下:
[0061 ]初始化i為L-1;
[0062]對待解密的密文執(zhí)行R1函數(shù),得到中間節(jié)點(diǎn)M;
[0063]令j= i+]_;
[0064]若j彡L-1,則對M執(zhí)行H函數(shù),Rj+1函數(shù),并將結(jié)果賦值給M,轉(zhuǎn)至(5);否則轉(zhuǎn)至(6);
[0065]令j = j+1,轉(zhuǎn)至(4);
[0066]調(diào)用Spark的transformat 1n操作中的filter函數(shù),從彩虹表中過濾出所有EV等于M的SV。若SV的數(shù)量等于O,則令i = 1-Ι,若i >0,則轉(zhuǎn)至(2),若i = 0,否則解密失敗;若SV的數(shù)量大于O,則進(jìn)入下一步驟;
[0067]Step 35,調(diào)用Spark的act 1n操作中的f oreach函數(shù),對每個(gè)符合條件的彩虹鏈鏈?zhǔn)坠?jié)點(diǎn)值SViRfl,f 2,…,f 1-1,得到的結(jié)果即為對應(yīng)的明文。
[0068]本發(fā)明同時(shí)提出一種基于Spark平臺口令哈?;謴?fù)裝置,包括如圖4所示的3個(gè)單元,Spark配置單元、彩虹表生成單元以及解密單元。
[0069]其中,Spark配置單元執(zhí)行的功能包括:
[0070]搭建Spark平臺,配置Master和Slave,以及配置Worker數(shù)量及大小。
[0071]如圖5所示,彩虹表生成單元執(zhí)行的功能包括:
[0072]鏈?zhǔn)坠?jié)點(diǎn)生成單元,該單元用于隨機(jī)生成S個(gè)鏈?zhǔn)坠?jié)點(diǎn),并且保證節(jié)點(diǎn)不重復(fù)。
[0073]鏈尾節(jié)點(diǎn)計(jì)算單元,該單元根據(jù)彩虹鏈生成規(guī)則,計(jì)算鏈?zhǔn)坠?jié)點(diǎn)值對應(yīng)的鏈尾節(jié)點(diǎn)值,調(diào)用Spark平臺的map函數(shù)將計(jì)算結(jié)果存儲在Hadoop分布式文件系統(tǒng)HDFS中
[0074]如圖6所示,解密單元執(zhí)行的功能包括:
[0075]密文對應(yīng)的鏈尾節(jié)點(diǎn)計(jì)算單元,該單元猜測待解密密文所對應(yīng)的明文在彩虹鏈中的位置i,對密文執(zhí)行Ri函數(shù),將結(jié)果保存在中間節(jié)點(diǎn)M中,再對M執(zhí)行fi+i,fi+2,…,fL-1,將結(jié)果賦值給M,得到該密文對應(yīng)的鏈尾節(jié)點(diǎn)。
[0076]彩虹鏈過濾單元,該單元調(diào)用Spark平臺的f i I ter函數(shù)從彩虹表中過濾出鏈尾節(jié)點(diǎn)等于密文對應(yīng)的鏈尾節(jié)點(diǎn)的彩虹鏈。
[0077]生成明文單元,該單元調(diào)用Spark平臺的f oreach函數(shù)對每個(gè)彩虹鏈計(jì)算該密文對應(yīng)的明文。
[0078]以上對本發(fā)明所提供的一種基于Spark平臺口令哈?;謴?fù)方法和裝置進(jìn)行了詳細(xì)介紹,本文對本發(fā)明的原理及具體的實(shí)施方式進(jìn)行了闡述,以上詳細(xì)步驟的用于幫助理解本發(fā)明的方法及核心思想;同時(shí),對于本領(lǐng)域的技術(shù)人員,根據(jù)本發(fā)明的思想,在具體的實(shí)現(xiàn)方式上均會有變化和改進(jìn)之處,這些變化和改進(jìn)均屬于本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種基于Spark平臺的口令哈希值恢復(fù)方法,包括彩虹表數(shù)據(jù)生成步驟和彩虹表解密步驟,其特征在于, 設(shè)彩虹鏈的數(shù)量為S,長度為L,L> I,則所述彩虹表數(shù)據(jù)生成步驟包括: 步驟A:根據(jù)字符集隨機(jī)生成S個(gè)鏈?zhǔn)坠?jié)點(diǎn)值SV; 步驟B:根據(jù)彩虹鏈的生成規(guī)則,計(jì)算出鏈?zhǔn)坠?jié)點(diǎn)值SV對應(yīng)的鏈尾節(jié)點(diǎn)值EV; 步驟C:將生成的所有(SV,EV)的元組保存在Hadoop分布式文件系統(tǒng)HDFS中; 所述彩虹表解密步驟包括: 步驟D:從HDFS中讀出彩虹表; 步驟E:從彩虹表中過濾出密文對應(yīng)的彩虹鏈; 步驟F:根據(jù)得到的彩虹鏈計(jì)算出該密文對應(yīng)的明文。2.根據(jù)權(quán)利要求1所述基于Spark平臺的口令哈希值恢復(fù)方法,其特征在于,所述鏈尾節(jié)點(diǎn)值EV的計(jì)算包括以下步驟: 步驟BI:對每個(gè)鏈?zhǔn)坠?jié)點(diǎn)值SV執(zhí)行L-1次f函數(shù),生成L-2個(gè)中間節(jié)點(diǎn)和一個(gè)鏈尾節(jié)點(diǎn);f函數(shù)包括H函數(shù)和R函數(shù)兩個(gè)部分;其中H函數(shù)即指定的加密函數(shù),R函數(shù)是與當(dāng)前節(jié)點(diǎn)位置i有關(guān)的函數(shù)(I彡iSL-1),該函數(shù)的定義域和值域需要和H函數(shù)相反;用仏表示參數(shù)為i的R函數(shù),fi表示H函數(shù)和Ri函數(shù)的組合;令Ri= (X+i)mod N,其中X表示經(jīng)過H函數(shù)處理后的字符串,N表示明文的范圍; 步驟B2:調(diào)用Spark平臺的map函數(shù)并行地執(zhí)行步驟BI。3.根據(jù)權(quán)利要求2所述基于Spark平臺的口令哈希值恢復(fù)方法,其特征在于,所述彩虹表中過濾出密文對應(yīng)的彩虹鏈包括以下步驟: 步驟El:猜測待解密密文所對應(yīng)的明文在彩虹鏈中的位置i,依次從L-1到I進(jìn)行嘗試;步驟E2:對密文執(zhí)行Ri函數(shù),將結(jié)果保存在中間節(jié)點(diǎn)M中;再對M執(zhí)行f i+i,f i+2,…,fL-1,將結(jié)果賦值給M; 步驟E3:調(diào)用Spark平臺的f i I ter函數(shù)并行地過濾出所有鏈尾節(jié)點(diǎn)值等于M的彩虹鏈,若彩虹表中沒有鏈尾節(jié)點(diǎn)值等于M的彩虹鏈,則嘗試下一個(gè)i;若所有嘗試均未找到符合要求的彩虹鏈,則解密失敗;若存在鏈尾節(jié)點(diǎn)值等于M的彩虹鏈,則進(jìn)入下一步驟。4.根據(jù)權(quán)利要求3所述基于Spark平臺的口令哈希值恢復(fù)方法,其特征在于,根據(jù)彩虹鏈計(jì)算出明文包括以下步驟: 步驟Fl:從步驟E中得到該密文對應(yīng)的明文在彩虹鏈中的位置i,對該彩虹鏈的鏈?zhǔn)坠?jié)點(diǎn)值SViRf1,f2,…,f1-1,得到的結(jié)果即為該密文對應(yīng)的明文。5.一種基于Spark平臺的口令哈希值恢復(fù)裝置,其特征在于,包括Spark配置單元、彩虹表數(shù)據(jù)生成單元和彩虹表解密單元,其中: Spark配置單元執(zhí)行該恢復(fù)裝置的準(zhǔn)備工作,對Spark平臺提供的計(jì)算能力進(jìn)行配置;彩虹表數(shù)據(jù)生成單元產(chǎn)生若干條彩虹鏈的集合,每條彩虹鏈均通過一系列哈希運(yùn)算和映射函數(shù)迭代計(jì)算得到,彩虹表數(shù)據(jù)生成單元僅需要存儲鏈?zhǔn)坠?jié)點(diǎn)和鏈尾節(jié)點(diǎn); 彩虹表解密單元對待解密密文所對應(yīng)的明文所在位置進(jìn)行猜測,尋找該密文對應(yīng)的鏈尾節(jié)點(diǎn);然后在彩虹表中找到鏈尾節(jié)點(diǎn)與該密文對應(yīng)的鏈尾節(jié)點(diǎn)相同的彩虹鏈,根據(jù)這些彩虹鏈計(jì)算出該密文對應(yīng)的明文。6.根據(jù)權(quán)利要求5所述基于Spark平臺的口令哈希值恢復(fù)裝置,其特征在于,所述Spark配置單元的準(zhǔn)備工作主要包括: 搭建Spark平臺,配置Master和Slave,然后再對Worker數(shù)量及大小進(jìn)行配置。7.根據(jù)權(quán)利要求5所述基于Spark平臺的口令哈希值恢復(fù)裝置,其特征在于, 所述彩虹表數(shù)據(jù)生成單元執(zhí)行功能主要包括: 隨機(jī)生成S個(gè)鏈?zhǔn)坠?jié)點(diǎn)值,然后根據(jù)彩虹鏈生成規(guī)則,計(jì)算鏈?zhǔn)坠?jié)點(diǎn)值對應(yīng)的鏈尾節(jié)點(diǎn)值,調(diào)用Spark平臺的map函數(shù)將計(jì)算結(jié)果存儲在Hadoop分布式文件系統(tǒng)HDFS中。8.根據(jù)權(quán)利要求5所述基于Spark平臺的口令哈希值恢復(fù)裝置,其特征在于,所述彩虹表解密單元執(zhí)行功能主要包括: 猜測待解密密文所對應(yīng)的明文在彩虹鏈中的位置i,對密文執(zhí)行R1函數(shù),將結(jié)果保存在中間節(jié)點(diǎn)M中;再對M執(zhí)行fi+1,fi+2,…,fw,將結(jié)果賦值給M,得到該密文對應(yīng)的鏈尾節(jié)點(diǎn);然后調(diào)用Spark平臺的filter函數(shù)從彩虹表中過濾出鏈尾節(jié)點(diǎn)等于密文對應(yīng)的鏈尾節(jié)點(diǎn)的彩虹鏈,若彩虹表中沒有鏈尾節(jié)點(diǎn)值等于M的彩虹鏈,則嘗試下一個(gè)i;若所有嘗試均未找到符合要求的彩虹鏈,則解密失?。蝗舸嬖阪溛补?jié)點(diǎn)值等于M的彩虹鏈,則調(diào)用Spark平臺的f oreach函數(shù)對每個(gè)彩虹鏈計(jì)算該密文對應(yīng)的明文。
【文檔編號】H04L9/08GK105933120SQ201610211597
【公開日】2016年9月7日
【申請日】2016年4月6日
【發(fā)明人】覃征, 李志鵬, 黃凱, 葉樹雄, 楊曉, 張任偉, 徐凱平
【申請人】清華大學(xué)