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