本發(fā)明涉及網(wǎng)絡(luò)安全
技術(shù)領(lǐng)域:
,特別是一種用于接入的安全二維碼生成方法。
背景技術(shù):
:身份認(rèn)證對(duì)于開(kāi)放環(huán)境中的各種信息系統(tǒng)的安全性極為重要,是網(wǎng)絡(luò)安全中其他安全服務(wù)的前提和基礎(chǔ)。隨著Internet,尤其是電子商務(wù)的迅猛發(fā)展,信息安全問(wèn)題已成為是會(huì)關(guān)注的熱點(diǎn)。傳統(tǒng)的賬戶(hù)密碼方式有著極為明顯的局限性。所以,現(xiàn)如今,已經(jīng)產(chǎn)生了多種新型密碼,例如U盾,動(dòng)態(tài)密碼。同時(shí),在遠(yuǎn)程操作過(guò)程中,直接傳輸信息是一件不安全的行為,容易被截取。二維碼是用某種特定的幾何圖形按一定規(guī)律在平面(二維方向上)分布的黑白相間的圖形記錄數(shù)據(jù)符號(hào)信息的;在代碼編制上巧妙地利用構(gòu)成計(jì)算機(jī)內(nèi)部邏輯基礎(chǔ)的“0”、“1”比特流的概念,使用若干個(gè)與二進(jìn)制相對(duì)應(yīng)的幾何形體來(lái)表示文字?jǐn)?shù)值信息,通過(guò)圖象輸入設(shè)備或光電掃描設(shè)備自動(dòng)識(shí)讀以實(shí)現(xiàn)信息自動(dòng)處理:二維碼能夠在橫向和縱向兩個(gè)方位同時(shí)表達(dá)信息,因此能在很小的面積內(nèi)表達(dá)大量的信息。而且,二維碼可以利用不同的算法實(shí)現(xiàn),這樣的話(huà),不知道正確的算法是不可以實(shí)現(xiàn)信息的解讀的。這樣存儲(chǔ)信息,不但達(dá)到了安全的目的,還壓縮了傳輸內(nèi)容,提高了傳輸效率。然而,由于U盾成本較高且容易丟失,二維碼一般用于存儲(chǔ)普通信息,不能通過(guò)更為低價(jià)且便于保管的方法進(jìn)行安全審核。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的在于提供一種安全性好、效率高的用于接入的安全二維碼生成方法。實(shí)現(xiàn)本發(fā)明目的的技術(shù)解決方案為:一種用于接入的安全二維碼生成方法,包括以下步驟:第一步,服務(wù)器為每一個(gè)用戶(hù)分配一個(gè)唯一的用戶(hù)ID,并使用改進(jìn)的SHA-1及ECC方法,將用戶(hù)ID加密得到密文m;第二步,使用DataMatrix編碼方法,將密文m轉(zhuǎn)化為二維碼;第三步,使用DataMatrix解碼方法,將二維碼轉(zhuǎn)化為密文m,用于安全審核;第四步,將密文m使用改進(jìn)的SHA-1及ECC方法解密得到用戶(hù)ID并進(jìn)行檢測(cè)。進(jìn)一步地,第一步中所述的改進(jìn)的SHA-1方法,具體為:使用安全散列值計(jì)算及變換原始邏輯函數(shù)的方法,在計(jì)算散列值時(shí)采取在原消息中添加一個(gè)隨機(jī)512bit分組的方法,將該隨機(jī)512bit分組添加到原消息的后面;SHA-1壓縮函數(shù)邏輯結(jié)構(gòu)有四輪循環(huán)模塊,每一輪用一個(gè)邏輯函數(shù);用f1,f2,f3,f4表示四輪循環(huán)對(duì)應(yīng)的邏輯函數(shù),每個(gè)函數(shù)都操作3個(gè)32位字,用AND、OR、NOT和XOR表示邏輯運(yùn)算符與、或、非和異或,B、C、D為上述的3個(gè)32位字,由于SHA-1中f2和f4邏輯函數(shù)相同,對(duì)f4的函數(shù)表達(dá)式進(jìn)行了變動(dòng),將f4的函數(shù)表達(dá)式改為(BANDNOTC)XORD。進(jìn)一步地,第一步中所述的改進(jìn)的ECC方法,具體為:使用點(diǎn)積運(yùn)算優(yōu)化的方法,在使用ECC方法進(jìn)行加密、解密的時(shí)候,對(duì)點(diǎn)積運(yùn)算nP=P1+…+Pn的優(yōu)化過(guò)程如下,n、P為點(diǎn)積運(yùn)算兩個(gè)向量:(1)將n用二進(jìn)制數(shù)的形式表示,即n=(nknk-1…ni…n1);(2)除去(nknk-1…ni…n1)的最高位nk,便得(nk-1…ni…n1);(3)依照(nk-1…ni…n1)從高到低的順序,當(dāng)ni=0時(shí),計(jì)算2P;當(dāng)ni=1時(shí),計(jì)算2P+P,并將計(jì)算結(jié)果作為下次運(yùn)算的初始值,即2P變?yōu)镻或2P+P變?yōu)镻。進(jìn)一步地,第一步中所述將用戶(hù)ID加密得到密文m,具體如下:(1)根據(jù)用戶(hù)ID生成的時(shí)間戳產(chǎn)生隨機(jī)分組Si;(2)將Si添加到用戶(hù)ID尾部,對(duì)添加了隨機(jī)分組的消息通過(guò)SHA-1方法計(jì)算散列值H1(ID,Si);(3)在得到散列值H1(ID,Si)后,進(jìn)行對(duì)ID和H1(ID,Si)進(jìn)行ECC加密立即產(chǎn)生一個(gè)隨機(jī)數(shù)k,所述ECC公鑰為PKB,G為橢圓基點(diǎn),進(jìn)行K1=kG和K2=k*PKB的計(jì)算;然后用K2的X坐標(biāo)對(duì)ID和H1(ID,Si)采用ECC方法進(jìn)行加密得到密文m。進(jìn)一步地,第二步中所述DataMatrix編碼方法的過(guò)程依次為:輸入數(shù)據(jù)生成碼字流、生成RS糾錯(cuò)碼、模塊排列和生成二維碼。進(jìn)一步地,第三步中所述DataMatrix解碼方法的過(guò)程依次為:DataMatrix條碼圖像讀入、圖像預(yù)處理、二維碼檢測(cè)和定位、圖像矯正和識(shí)別、糾錯(cuò)和解碼。進(jìn)一步地,第四步所述將密文m使用改進(jìn)的SHA-1及ECC方法解密得到用戶(hù)ID并進(jìn)行檢測(cè),具體如下:(1)將密文m進(jìn)行ECC解密,首先計(jì)算K=K1*SKB=k*G*SKB=n*PKB=K2,其中SKB為ECC方法私鑰,PKB為ECC方法公鑰,G為橢圓基點(diǎn),K1=kG,K2=k*PKB,k為隨機(jī)數(shù),然后通過(guò)K的X坐標(biāo)密文m進(jìn)行解密,得到ID和H1(ID,Si);(2)也根據(jù)時(shí)間戳產(chǎn)生隨機(jī)分組Si,將Si添加到用戶(hù)ID尾部,通過(guò)SHA-1方法計(jì)算散列值H2(ID,Si);(3)比較H1(ID,Si)和H2(ID,Si):若相等,則表明消息沒(méi)有被修改,轉(zhuǎn)至步驟(4);否則,轉(zhuǎn)至步驟(5);(4)進(jìn)行用戶(hù)ID確認(rèn):若存在此ID則完成安全接入;否則,轉(zhuǎn)至步驟(5);(5)拒絕接入。本發(fā)明與現(xiàn)有技術(shù)相比,其顯著優(yōu)點(diǎn):(1)使用二維碼作為接入的工具,降低了成本并且便于攜帶;(2)使用改進(jìn)的SHA-1及ECC方法,在確保接入的安全性的同時(shí),提高了接入的效率。附圖說(shuō)明圖1為本發(fā)明用于接入的安全二維碼生成方法的流程圖,其中(a)為加密轉(zhuǎn)換為二維碼的流程圖,(b)為將二維碼解密校驗(yàn)的流程圖。圖2為安全散列值工作流程圖。圖3為DataMatrix編碼方法流程圖。圖4為DataMatrix解碼方法流程圖。具體實(shí)施方式本發(fā)明在確保接入的安全性的前提下,將接入的驗(yàn)證信息使用DataMatrix編碼方法轉(zhuǎn)換為二維碼;驗(yàn)證時(shí)使用DataMatrix解碼方法獲取到接入的驗(yàn)證信息,進(jìn)行安全驗(yàn)證,實(shí)現(xiàn)通過(guò)二維碼的安全接入。結(jié)合圖1~2,本發(fā)明用于接入的安全二維碼生成方法,包括以下步驟:第一步,服務(wù)器為每一個(gè)用戶(hù)分配一個(gè)唯一的用戶(hù)ID,并使用改進(jìn)的SHA-1及ECC方法,將用戶(hù)ID加密得到密文m;所述的改進(jìn)的SHA-1方法,結(jié)合圖2,具體為:使用安全散列值計(jì)算及變換原始邏輯函數(shù)的方法,在計(jì)算散列值時(shí)采取在原消息中添加一個(gè)隨機(jī)512bit分組的方法,將該隨機(jī)512bit分組添加到原消息的后面;SHA-1壓縮函數(shù)邏輯結(jié)構(gòu)有四輪循環(huán)模塊,每一輪用一個(gè)邏輯函數(shù);用f1,f2,f3,f4表示四輪循環(huán)對(duì)應(yīng)的邏輯函數(shù),每個(gè)函數(shù)都操作3個(gè)32位字,用AND、OR、NOT和XOR表示邏輯運(yùn)算符與、或、非和異或,B、C、D為上述的3個(gè)32位字,由于SHA-1中f2和f4邏輯函數(shù)相同,對(duì)f4的函數(shù)表達(dá)式進(jìn)行了變動(dòng),將f4的函數(shù)表達(dá)式改為(BANDNOTC)XORD。所述的改進(jìn)的ECC方法,具體為:使用點(diǎn)積運(yùn)算優(yōu)化的方法,在使用ECC方法進(jìn)行加密、解密的時(shí)候,對(duì)點(diǎn)積運(yùn)算nP=P1+…+Pn的優(yōu)化過(guò)程如下,n、P為點(diǎn)積運(yùn)算兩個(gè)向量:(1)將n用二進(jìn)制數(shù)的形式表示,即n=(nknk-1…ni…n1);(2)除去(nknk-1…ni…n1)的最高位nk,便得(nk-1…ni…n1);(3)依照(nk-1…ni…n1)從高到低的順序,當(dāng)ni=0時(shí),計(jì)算2P;當(dāng)ni=1時(shí),計(jì)算2P+P,并將計(jì)算結(jié)果作為下次運(yùn)算的初始值,即2P變?yōu)镻或2P+P變?yōu)镻。所述將用戶(hù)ID加密得到密文m,具體如下:(1)根據(jù)用戶(hù)ID生成的時(shí)間戳產(chǎn)生隨機(jī)分組Si;(2)將Si添加到用戶(hù)ID尾部,對(duì)添加了隨機(jī)分組的消息通過(guò)SHA-1方法計(jì)算散列值H1(ID,Si);(3)在得到散列值H1(ID,Si)后,進(jìn)行對(duì)ID和H1(ID,Si)進(jìn)行ECC加密立即產(chǎn)生一個(gè)隨機(jī)數(shù)k,所述ECC公鑰為PKB,G為橢圓基點(diǎn),進(jìn)行K1=kG和K2=k*PKB的計(jì)算;然后用K2的X坐標(biāo)對(duì)ID和H1(ID,Si)采用ECC方法進(jìn)行加密得到密文m。第二步,使用DataMatrix編碼方法,將密文m轉(zhuǎn)化為二維碼;結(jié)合圖3,所述DataMatrix編碼方法的過(guò)程依次為:輸入數(shù)據(jù)生成碼字流、生成RS糾錯(cuò)碼、模塊排列和生成二維碼。第三步,使用DataMatrix解碼方法,將二維碼轉(zhuǎn)化為密文m,用于安全審核;結(jié)合圖4,所述DataMatrix解碼方法的過(guò)程依次為:DataMatrix條碼圖像讀入、圖像預(yù)處理、二維碼檢測(cè)和定位、圖像矯正和識(shí)別、糾錯(cuò)和解碼。第四步,將密文m使用改進(jìn)的SHA-1及ECC方法解密得到用戶(hù)ID并進(jìn)行檢測(cè)。所述將密文m使用改進(jìn)的SHA-1及ECC方法解密得到用戶(hù)ID并進(jìn)行檢測(cè),具體如下:(1)將密文m進(jìn)行ECC解密,首先計(jì)算K=K1*SKB=k*G*SKB=n*PKB=K2,其中SKB為ECC方法私鑰,PKB為ECC方法公鑰,G為橢圓基點(diǎn),K1=kG,K2=k*PKB,k為隨機(jī)數(shù),然后通過(guò)K的X坐標(biāo)密文m進(jìn)行解密,得到ID和H1(ID,Si);(2)也根據(jù)時(shí)間戳產(chǎn)生隨機(jī)分組Si,將Si添加到用戶(hù)ID尾部,通過(guò)SHA-1方法計(jì)算散列值H2(ID,Si);(3)比較H1(ID,Si)和H2(ID,Si):若相等,則表明消息沒(méi)有被修改,轉(zhuǎn)至步驟(4);否則,轉(zhuǎn)至步驟(5);(4)進(jìn)行用戶(hù)ID確認(rèn):若存在此ID則完成安全接入;否則,轉(zhuǎn)至步驟(5);(5)拒絕接入。下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明做進(jìn)一步詳細(xì)說(shuō)明。實(shí)施例1結(jié)合圖1(a)~(b)和圖2,本發(fā)明用于接入的安全二維碼生成方法,包括以下步驟:第一步,服務(wù)器為服務(wù)器為每一個(gè)用戶(hù)分配一個(gè)唯一的用戶(hù)ID,并用改進(jìn)的SHA-1及ECC方法,將用戶(hù)ID加密得到密文m。工作流程如下:(1)根據(jù)用戶(hù)ID生成的時(shí)間戳產(chǎn)生隨機(jī)分組Si;(2)將Si添加到用戶(hù)ID尾部,對(duì)添加了隨機(jī)分組的消息計(jì)算散列值H1(ID,Si);(3)在得到散列值H1(ID,Si)后,進(jìn)行對(duì)ID和H1(ID,Si)進(jìn)行ECC加密(公鑰為PKB)立即產(chǎn)生一個(gè)隨機(jī)數(shù),并進(jìn)行K1=nG(G為橢圓基點(diǎn))和K2=n*PKB的計(jì)算;然后用K2的X坐標(biāo)對(duì)ID和H1(ID,Si)采用ECC方法進(jìn)行加密得到密文m。在其中SHA-1方法進(jìn)行了安全散列值計(jì)算的改進(jìn),由于散列方法是公開(kāi)的,惡意節(jié)點(diǎn)可能會(huì)截獲處于傳輸過(guò)程中的消息,修改消息內(nèi)容,然后沖洗計(jì)算散列值并替換原來(lái)的散列值,使消息的完整性遭到破壞。為此在計(jì)算散列值時(shí)在消息中添加一個(gè)隨機(jī)的512bit分組的方法,從而增加安全系數(shù)。本發(fā)明將時(shí)間戳產(chǎn)生隨機(jī)分組,添加在用戶(hù)ID的后面。按照這種方法計(jì)算出的散列值,不僅可以有效地保證消息的完整性,還可以起到時(shí)間戳的作用,增強(qiáng)了消息的安全性,所以稱(chēng)其為安全散列值。SHA-1壓縮函數(shù)邏輯結(jié)構(gòu)有四輪循環(huán)模塊,每一輪用一個(gè)邏輯函數(shù)。用f1,f2,f3,f4表示四輪循環(huán)對(duì)應(yīng)的邏輯函數(shù),用AND、OR、NOT和XOR表示邏輯運(yùn)算符與、或、非和異或,由于SHA-1中f2和f4邏輯函數(shù)相同,這樣勢(shì)必會(huì)給防御攻擊帶來(lái)一定的風(fēng)險(xiǎn),所以本發(fā)明對(duì)f4的函數(shù)表達(dá)式進(jìn)行了適當(dāng)?shù)淖儎?dòng),將f4的函數(shù)表達(dá)式改為(BANDNOTC)XORD。這樣改進(jìn)不多,對(duì)運(yùn)算速度幾乎沒(méi)有影響,但卻相對(duì)提高了安全性。改進(jìn)后的四個(gè)邏輯函數(shù)表達(dá)式如表1所示。表1輪數(shù)邏輯函數(shù)函數(shù)表達(dá)式第一輪(0≤t≤19)f1(B,C,D)(BANDC)OR(NOTBANDD)第二輪(20≤t≤39)f2(B,C,D)BXORCXORD第三輪(40≤t≤59)f3(B,C,D)(BANDC)OR(BANDD)OR(CANDD)第四輪(60≤t≤79)f4(B,C,D)(BANDNOTC)XORD對(duì)ECC方法進(jìn)行了點(diǎn)積運(yùn)算的優(yōu)化,在使用ECC方法進(jìn)行加密、解密的時(shí)候,會(huì)有大量的點(diǎn)積運(yùn)算,如:nP=P1+…+Pn。對(duì)點(diǎn)積運(yùn)算的優(yōu)化過(guò)程如下:(1)將n用二進(jìn)制數(shù)的形式表示,即n=(nknk-1…ni…n1);(2)除去(nknk-1…ni…n1)的最高位nk,便可得(nk-1…ni…n1);(3)依照(nk-1…ni…n1)從高到低的順序,當(dāng)ni=0時(shí),計(jì)算2P;當(dāng)ni=1時(shí),計(jì)算2P+P,并將計(jì)算結(jié)果作為下次運(yùn)算的初始值,即2P→P或2P+P→P。如果使用傳統(tǒng)ECC算法,則需要進(jìn)行n次運(yùn)算,進(jìn)過(guò)點(diǎn)積運(yùn)算的優(yōu)化后,平均只需要進(jìn)行3/2[log2n]次運(yùn)算,最多也只需要3/2[log2n]次運(yùn)算,從而減少了運(yùn)算時(shí)間,提高了運(yùn)算效率。第二步,使用DataMatrix編碼方法,將密文m轉(zhuǎn)化為二維碼;結(jié)合圖3,具體步驟如下:(1)數(shù)據(jù)編碼,數(shù)據(jù)編碼,使用ASCII編碼數(shù)據(jù)進(jìn)行編碼將密文m轉(zhuǎn)化為碼字流。(2)生成RS糾錯(cuò)碼,在,在DataMatrix編碼方式中,我們使用Reed-Solomon算法獲得糾錯(cuò)碼。RS糾錯(cuò)方法中碼元符號(hào)可以表示成相應(yīng)的二元數(shù)組,與通常所用的二進(jìn)制序列相對(duì)應(yīng)。GF(2m)域中有2m個(gè)元素,除0和1之外的2m-2個(gè)元素由原本多項(xiàng)式P(x)生成。原本多項(xiàng)式P(x)的特性是得到的余式等于0.我們這里采用的原本多項(xiàng)式為:P(x)=X8+X4+X3+X2+1=0在RS碼生成多項(xiàng)式中,碼字長(zhǎng)n=2m-1,監(jiān)督元數(shù)目r=n-k=2t,能糾正t個(gè)錯(cuò)誤。在(n,k,d)的RS碼中,存在唯一的(n-k)次多項(xiàng)式g(x),使得每一個(gè)碼多項(xiàng)式c(x)都是g(x)的倍式,g(x)稱(chēng)為[n,k,d]RS碼的生成多項(xiàng)式。g(x)=(x-α)(x-α2)...(x-α2t)在DataMatrix中有G(x)=(x-2)(x-22)…(x-2K-1)=(x+2)(x+22)…(x+2K-1)糾錯(cuò)碼字是數(shù)據(jù)碼字被糾錯(cuò)多項(xiàng)式G(x)除的的余數(shù)即R(x)即為糾錯(cuò)碼字,跟在數(shù)字碼字的后面。(3)條碼數(shù)據(jù)模塊排布,如表2所示,給出一個(gè)碼字的符號(hào)結(jié)構(gòu)。8個(gè)模塊分別對(duì)應(yīng)每一個(gè)碼字的8bit二級(jí)制位數(shù)據(jù),MSB表示數(shù)據(jù)流中碼字8bit二進(jìn)制信息的最高位有效元,LSB表示數(shù)據(jù)流中碼字8bit二進(jìn)制信息的最低位有效元。我們?cè)讷@取條碼數(shù)據(jù)流,糾錯(cuò)碼和符號(hào)大小信息后,進(jìn)行模塊排布,生成DataMatrix條碼符號(hào),如果符號(hào)矩陣塊數(shù)大于1,則須按協(xié)議將矩陣分解表2碼字模塊的排布過(guò)程就是講數(shù)據(jù)流的碼字和糾錯(cuò)碼的碼字轉(zhuǎn)化為二進(jìn)制數(shù)據(jù),生成的碼字流的每一位映射到DataMatrix二維圖形,根據(jù)編碼方式和碼字流大小,按照相應(yīng)的編碼協(xié)議進(jìn)行排放。第三步,使用DataMatrix解碼方法,將二維碼轉(zhuǎn)化為密文m,結(jié)合圖4,具體步驟如下:(1)圖像與處理,DataMatrix條碼圖像灰度處理,將條碼圖片轉(zhuǎn)為灰度圖,以增強(qiáng)條碼處理的速度。DataMatrix條碼圖像去噪處理,使用中值濾波的方法對(duì)條碼圖像進(jìn)行去噪處理。DataMatrix條碼圖像二值化處理,采用最大類(lèi)間方差二值法進(jìn)行處理。(2)使用DataMatrix圖像檢測(cè)和定位找到二維碼的具體位置信息。(3)對(duì)二維碼進(jìn)行幾何畸形糾正,對(duì)圖像采取平移、旋轉(zhuǎn)、扭斜和縮放等措施,然后進(jìn)一步對(duì)條碼進(jìn)行透視失真糾正。(4)在透視變換之后,我們首先柵格化二維碼圖像,然后根據(jù)深淺顏色代表的碼字信息將二維碼轉(zhuǎn)換成數(shù)字矩陣,再通過(guò)所羅門(mén)糾錯(cuò)算法對(duì)矩陣信息進(jìn)行糾錯(cuò),最后通過(guò)相關(guān)譯碼規(guī)則即可得到條碼信息。第四步,將密文m使用改進(jìn)的SHA-1及ECC方法解密得到用戶(hù)ID并進(jìn)行檢測(cè),具體步驟如下:(1)將密文m進(jìn)行ECC解密,(SKB為私鑰)首先計(jì)算K=K1*SKB=n*G*SKB=n*PKB=K2,然后通過(guò)K的X坐標(biāo)密文m進(jìn)行解密,得到ID和H1(ID,Si);(2)也根據(jù)時(shí)間戳產(chǎn)生隨機(jī)分組Si,將Si添加到ID尾部,計(jì)算散列值H2(ID,Si);(3)比較H1(ID,Si)和H2(ID,Si),若相等,則表明消息沒(méi)有被修改;(4)進(jìn)行用戶(hù)ID確認(rèn),若存在此ID則完成安全接入。當(dāng)前第1頁(yè)1 2 3