專利名稱:一種基于組合編碼的文件加密和解密的方法
技術領域:
本發明涉及一種基于組合編碼的文件加密和解密的方法,屬于信息安全領域。
背景技術:
在信息技術飛速發展的現代社會,信息安全占有重要地位,而密碼技術是信息安 全的保障及核心。密碼作為保密信息手段,根據對明文處理方式不同,密碼編碼系統有分組密碼和 流密碼兩類,分組加密一次處理一組元素的輸入,分組密碼體制屬于傳統加密體制,目前已 有大量分組密碼,如DES的各種變形、IDEA算法、SAFER系列算法、RC系列算法等。分組密碼的設計準則包括安全性準則和實現性準則。安全性設計準則主要包括三 方面密碼算法設計準則、密鑰長度設計準則和分組長度設計準則。(1)密碼算法設計準則現代密碼體制的安全性僅依賴于密鑰的保密,而不依賴于算法保密。總之,密碼算 法設計要遵循表1所示準則。表1密碼算法設計準則
相關準則說明算法公開算法越復雜,密碼分析越困難混亂使明文、密文和密鑰間依賴關系足夠復雜,常用“代替”法擴散“擴散”可以隱藏明文統計特性,增加密碼分析者尋求明文冗余度的 難度。最簡單的“擴散”方法是“置換”法。抵抗差分分析可以對“弱”密鑰函數進行多次迭代,進而得到“強密碼”抵抗線性分析要求算法中包含高度非線性密碼函數。沒有弱密鑰當弱密鑰數較少時,在算法中稍作處理就可避免,且選取弱密鑰的概 率會隨著密鑰空間的增大而趨于零。其中,混亂和擴散是香農1945年提出的兩種隱藏明文冗余度的基本技術,是加密 算法設計的基石。而所謂弱密鑰是指對于初始密鑰k,生成的子密鑰都相等,則稱k是弱密 鑰;若有一對密鑰kl,k2,使得兩密鑰互為加密/解密密鑰,則稱kl,k2是半弱密鑰。(2)密鑰長度設計準則必須保證密鑰長度足夠大,才能使密碼算法抵抗強力攻擊,密鑰越長意味著安全 性越高,但是加密/解密的速度也越慢。目前64位密鑰長度已經不能滿足安全需要,所以 128/192/256位成了常用的長度。(3)分組長度設計準則為阻止對分組密碼進行統計分析,分組長度必須足夠大。分組越大意味著安全性 越高,但是加密/解密的速度也越慢。目前128位的分組大小被認為是一個合理的折衷。由 于目前分組密碼通常是簡單的代換密碼,而明文又有一定的冗余度,因此理論上可以對密文進行頻率統計分析。但是當分組長度足夠大時,這種分析就需要大量的密文數據,從而使 計算不可行。此外,由于分組密碼需要迭代計算,因此安全性準則通常還包括以下幾點(1)迭代輪數迭代輪數應該足夠多。一般來說,循環迭代輪數越多安全性越高,常用16輪循環, 也有11輪、8輪或6輪的,通常是安全性與實現性的折中。(2)迭代輪函數迭代輪函數要足夠復雜,復雜性越高,抗擊密碼分析的能力就越強。(3)密鑰編排算法一般說來,推測各個子密鑰和由此推出主密鑰的難度越大越好。因此子密鑰編排 算法越復雜,密碼分析就越困難。子密鑰生成算法同樣要滿足擴散性好以及具有混亂特性。分組密碼的實現性準則主要討論如何提高算法的執行速度。分組密碼既可以用軟 件實現,也可以用硬件實現。硬件實現的優點是可以獲得高速率,而軟件實現的優點是靈活 性強、代價低。現有加密/解密技術中變換算法所涉及矩陣固定,如S-盒表、各種置換表是固定 的,另外,各分組密鑰通常是相同的,這些因素使得加密技術的機密性存在隱患,保密性能差。
發明內容
本發明目的是為了解決現有對文件加密、解密方法的保密性能差的問題,提供了 一種基于組合編碼的文件加密和解密的方法。本發明基于組合編碼的文件加密的方法設定第一輪加密時,第1組分組序列的分組密鑰為初始密鑰Ktl,初始密鑰Ktl的單 位長度為k比特,每輪加密時都將待加密文件按組長度為η分成m組分組序列和一個余數, 一種基于組合編碼的文件加密的方法包括以下步驟步驟一、根據所述初始密鑰Ktl確定第一輪加密時所有組的分組密鑰Knri,步驟二、根據分組密鑰Knrl確定該組所有輪加密時的子密鑰K0^ (w_d,w為文件加 密輪數,步驟三、初始化加密的輪數w = 1,步驟四、將待加密文件按組長度為η進行分組,每組分組序列的元素數目為η,每個元素的單位長度為k比特,步驟五、對每組分組序列的數據進行全排列,形成字典空間C0^1)(w_d,并按如下公 式求取每組序列在各自字典空間中的序數 ㈣…—)
N_VV_(" — 7.)!_
ivCw-IXw-I) ~ La Lu X-IU
J=l x=l (novwxmwnh!)),
q=\q=x-\-\其中,j表示當前被處理元素在分組序列中的位置,i表示當前被處理元素在當前 組對應的密鑰序列中的位置,WX為密鑰序列中X位置的元素在分組序列中未經處理的數目,q表示除了 X以外的元素的位置,Wq是各個元素數目減去前面j個字符中已經出現過的相 應元素的數目,ii表示分組序列中密鑰元素數目不為零的密鑰元素總數,Niffl^1) ^ 0,步驟六、按分組序列含對應密鑰各元素的數目+分組序列的序數的原則將當前輪 各組序列進行重新拼接,結尾處加入余數長度,形成新的待加密文件,S卩,新的待加密文件拼接為第1組分組序列含對應密鑰各元素的數目+第1組分 組序列的序數Ntlirt)+第2組分組序列含對應密鑰各元素的數目+第2組分組序列的序數
N1^1)+......+第m組分組序列含對應密鑰各元素的數目+第m組分組序列的序數
Nim-D (W-D+余數長度,步驟七、將該輪所有組的密鑰序列進行循環拼接,使其長度與步驟六形成的新的 待加密文件的長度相同,然后與步驟六形成的新的待加密文件進行異或,結果作為下一輪 的待加密文件,步驟八、判斷w是否為奇數,判斷結果為是,執行步驟九,判斷結果為否,執行步驟十,步驟九、將步驟七形成的下一輪的待加密文件中所有元素的位置前后置換,作為 該輪形成的加密文件,并作為下一輪待加密文件,步驟十、判斷是否滿足下述條件w彡4,判斷結果為否,令w = w+1,執行步驟四,判斷結果為是,將本輪形成的加密文件作 為最終結果,完成對文件的加密。本發明基于組合編碼的文件解密的方法已知該文件在第一輪加密時,第1組分組序列的分組密鑰為初始密鑰Ktl,初始密鑰 K0的單位長度為k比特,已知該文件的被加密輪數為w輪,本方法的解密從第w輪開始,一種基于組合編碼的文件解密的方法包括以下步驟步驟1、根據所述初始密鑰Ktl確定第一輪加密時所有組的分組密鑰Knrl,步驟2、根據分組密鑰Knri確定該組所有輪加密時的子密鑰Km (w_d,步驟3、初始化被加密的輪數w = 4,步驟4、判斷w是否為奇數,判斷結果為是,執行步驟5,判斷結果為否,執行步驟6,步驟5、將待解密文件的所有元素的位置前后倒置,作為本輪的待解密文件,步驟6、將該輪所有組的密鑰序列進行循環拼接,使其長度與本輪的待解密文件的 長度相同,然后與本輪的待解密文件進行異或,異或結果作為該輪待解密文件,步驟7、將該輪待解密文件根據相關標志進行分組,形成m組數據,相關標志包括 密鑰各元素數目和序數長度,步驟8、通過步驟7每組數據中含對應密鑰各元素的數目、分組序列的序數和余數 長度信息,逐個解析步驟7獲得的m組數據,步驟9、按照當前分組序列對應的密鑰序列中元素的順序,采用窮舉方法解析該組 分組序列的數據,將解析完畢的m個分組序列及余數進行拼接,作為下一輪待解密文件,步驟10、判斷是否滿足下述條件w < 1,判斷結果為否,令w = w-1,執行步驟4,判斷結果為是,將本輪形成的解密文件作 為最終結果,完成對文件的解密。
8
本發明的優點組合加密技術算法獨特,不涉及固有矩陣參與運算,此外,現有加 密算法分組密鑰通常相同,而組合加密技術中子密鑰與分組密鑰都不相同,并且同初始的 主密鑰空間一樣大,從而加大了推測各個子密鑰、分組密鑰和由此推出初始主密鑰的難度, 使得保密性更強。該加密方法適合對文件進行軟件加密。
圖1是本發明基于組合編碼的文件加密的方法流程圖,圖2是本發明基于組合編 碼的文件解密的方法流程圖,圖3是密鑰關系圖。
具體實施例方式具體實施方式
一下面結合圖1和圖3說明本實施方式,本實施方式是一種基于組 合編碼的文件加密的方法,設定第一輪加密時,第1組分組序列的分組密鑰為初始密鑰Ktl, 初始密鑰Ktl的單位長度為k比特,每輪加密時都將待加密文件按組長度為η分成m組分組 序列和一個余數,一種基于組合編碼的文件加密的方法包括以下步驟步驟一、根據所述初始密鑰Ktl確定第一輪加密時所有組的分組密鑰Knri,步驟二、根據分組密鑰Knrl確定該組所有輪加密時的子密鑰K0^ (w_d,w為文件加 密輪數,步驟三、初始化加密的輪數w = 1,步驟四、將待加密文件按組長度為η進行分組,每組分組序列的元素數目為η,每個元素的單位長度為k比特,步驟五、對每組分組序列的數據進行全排列,形成字典空間C0rt)(w_d,并按如下公 式求取每組序列在各自字典空間中的序數 ㈣…—)
權利要求
一種基于組合編碼的文件加密的方法,其特征在于,設定第一輪加密時,第1組分組序列的分組密鑰為初始密鑰K0,初始密鑰K0的單位長度為k比特,每輪加密時都將待加密文件按組長度為n分成m組分組序列和一個余數,一種基于組合編碼的文件加密的方法包括以下步驟步驟一、根據所述初始密鑰K0確定第一輪加密時所有組的分組密鑰Km 1,步驟二、根據分組密鑰Km 1確定該組所有輪加密時的子密鑰K(m 1)(w 1),w為文件加密輪數,步驟三、初始化加密的輪數w=1,步驟四、將待加密文件按組長度為n進行分組,每組分組序列的元素數目為n,每個元素的單位長度為k比特,步驟五、對每組分組序列的數據進行全排列,形成字典空間C(m 1)(w 1),并按如下公式求取每組序列在各自字典空間中的序數N(m 1)(w 1) <mrow><msub> <mi>N</mi> <mrow><mrow> <mo>(</mo> <mi>m</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo></mrow><mrow> <mo>(</mo> <mi>w</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo></mrow> </mrow></msub><mo>=</mo><munderover> <mi>Σ</mi> <mrow><mi>j</mi><mo>=</mo><mn>1</mn> </mrow> <mi>n</mi></munderover><munderover> <mi>Σ</mi> <mrow><mi>x</mi><mo>=</mo><mn>1</mn> </mrow> <mrow><mi>i</mi><mo>-</mo><mn>1</mn> </mrow></munderover><mfrac> <mrow><mrow> <mo>(</mo> <mi>n</mi> <mo>-</mo> <mi>j</mi> <mo>)</mo></mrow><mo>!</mo> </mrow> <mrow><mrow> <mo>(</mo> <munderover><mi>Π</mi><mrow> <mi>q</mi> <mo>=</mo> <mn>1</mn></mrow><mrow> <mi>x</mi> <mo>-</mo> <mn>1</mn></mrow> </munderover> <mrow><mo>(</mo><msub> <mi>w</mi> <mi>q</mi></msub><mo>!</mo><mo>)</mo> </mrow> <mo>)</mo></mrow><mo>×</mo><mrow> <mo>(</mo> <msub><mi>w</mi><mi>x</mi> </msub> <mo>-</mo> <mn>1</mn> <mo>)</mo></mrow><mo>×</mo><mrow> <mo>(</mo> <munderover><mi>Π</mi><mrow> <mi>q</mi> <mo>=</mo> <mi>x</mi> <mo>+</mo> <mn>1</mn></mrow><mi>ii</mi> </munderover> <mrow><mo>(</mo><msub> <mi>w</mi> <mi>q</mi></msub><mo>!</mo><mo>)</mo> </mrow> <mo>)</mo></mrow> </mrow></mfrac><mo>,</mo> </mrow>其中,j表示當前被處理元素在分組序列中的位置,i表示當前被處理元素在當前組對應的密鑰序列中的位置,wx為密鑰序列中x位置的元素在分組序列中未經處理的數目,q表示除了x以外的元素的位置,wq是各個元素數目減去前面j個字符中已經出現過的相應元素的數目,ii表示分組序列中密鑰元素數目不為零的密鑰元素總數,N(m 1)(w 1)≥0,步驟六、按分組序列含對應密鑰各元素的數目+分組序列的序數的原則將當前輪各組序列進行重新拼接,結尾處加入余數長度,形成新的待加密文件,即,新的待加密文件拼接為第1組分組序列含對應密鑰各元素的數目+第1組分組序列的序數N0(w 1)+第2組分組序列含對應密鑰各元素的數目+第2組分組序列的序數N1(w 1)+······+第m組分組序列含對應密鑰各元素的數目+第m組分組序列的序數N(m 1)(w 1)+余數長度,步驟七、將該輪所有組的密鑰序列進行循環拼接,使其長度與步驟六形成的新的待加密文件的長度相同,然后與步驟六形成的新的待加密文件進行異或,結果作為下一輪的待加密文件,步驟八、判斷w是否為奇數,判斷結果為是,執行步驟九,判斷結果為否,執行步驟十,步驟九、將步驟七形成的下一輪的待加密文件中所有元素的位置前后置換,作為該輪形成的加密文件,并作為下一輪待加密文件,步驟十、判斷是否滿足下述條件w≥4,判斷結果為否,令w=w+1,執行步驟四,判斷結果為是,將本輪形成的加密文件作為最終結果,完成對文件的加密。
2.根據權利要求1所述的一種基于組合編碼的文件加密的方法,其特征在于,步驟一 中的分組密鑰I^1的獲取方法為第一輪加密時,每組分組密鑰Knri將其前一組密鑰序列的數據先循環右移或左移一位,形成待用密鑰序列,然后采用數據替代法生成當前組的分組密鑰Knrl,采用數據替代法生成當前組的分組密鑰Knri的過程為找到所述待用密鑰序列的第χ 號位置數據y,再尋找待用密鑰序列第y號位置的數據z,將數據ζ作為當前組的分組密鑰 Knrl第χ號位置的數據。
3.根據權利要求1所述的一種基于組合編碼的文件加密的方法,其特征在于,步驟二 中的子密鑰K0lrl) (w_d的獲取方法為第m-1組的子密鑰K0lri)(w_d根據當前組的前一輪的分組密鑰采用數據替代法生成,具 體過程為令第m-1組、前一輪的分組密鑰作為待用密鑰序列,找到所述待用密鑰序列的第χ號位置數據y,再尋找待用密鑰序列第y號位置的數據 z,將數據ζ作為當前第m-Ι組的子密鑰K^d^D第χ號位置的數據,形成新的序列, 然后將所述新的序列的數據循環右移或左移一位作為第m-Ι組的子密鑰K^d^D。
4.根據權利要求1所述的一種基于組合編碼的文件加密的方法,其特征在于,步驟五
5.根據權利要求1所述的一種基于組合編碼的文件加密的方法,其特征在于,步驟五 序數Νμ)^)所占位數與當前組的分組序列的最大序數P所占位數相同,最大序數P按下 述公式獲取p=c》xcK"2x......><;:-、P>0,當前組的分組序列中含有對應的密鑰序列中各密鑰元素的數目分別為m” n2......°
6.根據權利要求1所述的一種基于組合編碼的文件加密的方法,其特征在于,步驟六 中按分組序列含對應密鑰各元素的數目的存儲格式為 按照密鑰序列中元素大小的順序進行存儲,設定密鑰序列中元素的數目為a,如果某元 素數目每達到2k_l的倍數,便增加k位,存儲前a-Ι個密鑰元素的數目,最后一個元素數目 由分組序列長度減去已經存儲的前a-Ι個密鑰元素數目獲得。
7.根據權利要求1所述的一種基于組合編碼的文件加密的方法,其特征在于,步驟六 中余數長度為「log l。
8.一種基于組合編碼的文件解密的方法,其特征在于,已知該文件在第一輪加密時,第1組分組序列的分組密鑰為初始密鑰Ktl,初始密鑰Ktl的 單位長度為k比特,已知該文件的被加密輪數為w輪,本方法的解密從第w輪開始, 一種基于組合編碼的文件解密的方法包括以下步驟 步驟1、根據所述初始密鑰Ktl確定第一輪加密時所有組的分組密鑰Knri, 步驟2、根據分組密鑰Knri確定該組所有輪加密時的子密鑰K0rt)(w_d, 步驟3、初始化被加密的輪數w = 4, 步驟4、判斷w是否為奇數,判斷結果為是,執行步驟5,判斷結果為否,執行步驟6, 步驟5、將待解密文件的所有元素的位置前后倒置,作為本輪的待解密文件, 步驟6、將該輪所有組的密鑰序列進行循環拼接,使其長度與本輪的待解密文件的長度 相同,然后與本輪的待解密文件進行異或,異或結果作為該輪待解密文件,步驟7、將該輪待解密文件根據相關標志進行分組,形成m組數據,相關標志包括密鑰 各元素數目和序數長度,步驟8、通過步驟7每組數據中含對應密鑰各元素的數目、分組序列的序數和余數長度 信息,逐個解析步驟7獲得的m組數據,步驟9、按照當前分組序列對應的密鑰序列中元素的順序,采用窮舉方法解析該組分組 序列的數據,將解析完畢的m個分組序列及余數進行拼接,作為下一輪待解密文件, 步驟10、判斷是否滿足下述條件w≤1,判斷結果為否,令w = w-1,執行步驟4,判斷結果為是,將本輪形成的解密文件作為最 終結果,完成對文件的解密。
9.根據權利要求8所述的一種基于組合編碼的文件解密的方法,其特征在于,步驟1中 的分組密鑰Knri的獲取方法為第一輪加密時,每組分組密鑰Knri將其前一組密鑰序列的數據先循環右移或左移一位, 形成待用密鑰序列,然后采用數據替代法生成當前組的分組密鑰Knrl,采用數據替代法生成當前組的分組密鑰Knri的過程為找到所述待用密鑰序列的第X 號位置數據y,再尋找待用密鑰序列第y號位置的數據z,將數據ζ作為當前組的分組密鑰 Kffl^1第χ號位置的數據;步驟2中的子密鑰Kmm的獲取方法為第m-1組的子密鑰K0lri)(w_d根據當前組的前一輪的分組密鑰采用數據替代法生成,具 體過程為令第m-1組、前一輪的分組密鑰作為待用密鑰序列,找到所述待用密鑰序列的第χ號位置數據y,再尋找待用密鑰序列第y號位置的數據 z,將數據ζ作為當前第m-Ι組的子密鑰K^d^D第χ號位置的數據,形成新的序列, 然后將所述新的序列的數據循環右移或左移一位作為第m-1組的子密鑰K0^ (w_d ; 步驟8中分組序列的序數所占位數與當前組的分組序列的最大序數P所占位數相同, 最大序數P按下述公式獲取
10.根據權利要求8所述的一種基于組合編碼的文件解密的方法,其特征在于,步驟9 中所述的下一輪待解密文件的獲取過程為按照當前分組序列對應的密鑰序列的順序,采用窮舉方法解析該組分組序列的數據, 將解析完畢的m個分組序列及余數進行拼接,按照該組分組序列對應的密鑰序列中元素的順序來假定被測位置的元素,然后根據假 定元素,并根據下述公式獲取相應排列組合值ph(j,χ)
全文摘要
一種基于組合編碼的文件加密和解密的方法,屬于信息安全領域,本發明為解決現有對文件加密、解密方法的保密性能差的問題。本發明文件加密的方法根據初始密鑰求解所有的密鑰序列,每輪加密都先對分組序列中的數據進行全排列,形成字典空間,計算出序數,然后按規則進行拼接新序列,該輪所有組的密鑰序列進行循環拼接后與新序列進行異或,奇數輪時形成的加密文件前后置換元素,經過四輪加密形成最終加密文件;解密過程是加密的逆過程,遇奇數輪先前后置換元素,然后與循環拼接的密鑰序列進行異或,采用窮舉方法逐個解析分組序列的元素,將解析完畢的m個分組序列及余數進行拼接,作為待解密文件,經過四輪完成解密。
文檔編號H04L9/06GK101938350SQ20101022854
公開日2011年1月5日 申請日期2010年7月16日 優先權日2010年7月16日
發明者呂興鳳, 王圣宏, 陸軍, 陳立巖, 高揚 申請人:黑龍江大學