本發(fā)明涉及信息安全領(lǐng)域,具體涉及一類基于長密鑰的SM4密鑰擴(kuò)展算法的實(shí)現(xiàn)系統(tǒng)及其方法。
背景技術(shù):
SM4算法是國內(nèi)廣泛使用的WAPI無線網(wǎng)絡(luò)標(biāo)準(zhǔn)算法中使用的加密算法。SM4算法原名為SMS4算法,在2012年被國家商用密碼管理局確定為國家密碼行業(yè)標(biāo)準(zhǔn),標(biāo)準(zhǔn)編號GM/T0002-2012并且改名為SM4算法。SM4分組密碼算法與SM2橢圓曲線公鑰密碼算法、SM3密碼雜湊算法共同作為國家密碼行業(yè)標(biāo)準(zhǔn),在我國密碼行業(yè)有著重要的位置。
密鑰長度決定密鑰空間的大小。密鑰空間是保障加密算法不受窮舉法破解的最基本的安全保障?,F(xiàn)在使用的128位密鑰的分組加密算法足夠安全,并廣泛運(yùn)用在各個(gè)需要加密的環(huán)境中,例如AES-128、SM4、Camellia-128等。隨著現(xiàn)在計(jì)算機(jī)運(yùn)算速度成倍的增加,特別是量子計(jì)算機(jī)的突飛猛進(jìn)。在未來幾十年內(nèi),具有128位密鑰空間的加密算法也存在著被破譯的可能。使用256位密鑰的分組加密算法如AES-256、Camellia-256等被稱為“高級算法”,使用現(xiàn)存量子算法并配合量子計(jì)算機(jī)也無法破解。相對AES和Camellia算法而言,SM4算法存在著密鑰空間較小的安全隱患。
技術(shù)實(shí)現(xiàn)要素:
基于以上不足之處,本發(fā)明提供一種基于長密鑰的SM4密鑰擴(kuò)展算法的實(shí)現(xiàn)系統(tǒng)及其方法,解決了現(xiàn)在SM4算法存在的密鑰空間較小的安全隱患。
本發(fā)明所采用如下技術(shù):一種基于長密鑰的SM4密鑰擴(kuò)展算法的實(shí)現(xiàn)系統(tǒng),包括混沌映射模塊、數(shù)據(jù)緩存模塊、異或模塊、非線性置換S盒模塊和線性變換L模塊,所述混沌映射模塊輸入為部分初始密鑰,通過利用混沌映射的多次迭代,產(chǎn)生具有良好隨機(jī)性的偽隨機(jī)序列作為原SM4密鑰擴(kuò)展算法的輸入,通過對混沌性能和硬件實(shí)現(xiàn)資源消耗的考慮,混沌映射模塊選擇Logist ic映射;
所述異或模塊為多輸入異或邏輯門電路;
所述非線性置換S盒模塊共使用四個(gè)并行的8輸入的S盒,每個(gè)并行的S盒對輸入的8比特?cái)?shù)地址進(jìn)行尋址,輸出存儲(chǔ)在S盒中的8比特?cái)?shù)據(jù);
所述線性變換L模塊是簡單地移位和異或操作。
本發(fā)明還具有如下技術(shù)特征:采用如上所述的實(shí)現(xiàn)系統(tǒng)得出的一種基于長密鑰的SM4密鑰擴(kuò)展算法的實(shí)現(xiàn)方法,包括如下步驟:
步驟1001:數(shù)據(jù)緩存模塊接收128位初始密鑰。將接收到的初始密鑰分成4個(gè)32比特的數(shù)據(jù),并分別緩存起來。Logistic混沌映射模塊接收剩余初始密鑰,輸出偽隨機(jī)序列。
步驟1002:將數(shù)據(jù)緩存模塊中的4個(gè)32比特的數(shù)據(jù)中選取3個(gè)和Logistic混沌映射模塊產(chǎn)生的偽隨機(jī)序列異或,得到最終的32比特?cái)?shù)據(jù)。
步驟1003:將步驟1002中最終生成的32比特?cái)?shù)據(jù)劃分成4個(gè)8比特?cái)?shù)據(jù),并分別作為尋址地址輸入到4個(gè)并行8輸入的S盒中。最后將得到置換后的4個(gè)8比特?cái)?shù)進(jìn)行位拼接,形成新的32比特?cái)?shù)。
步驟1004:將步驟1003中最終得到的32比特?cái)?shù)分別同時(shí)循環(huán)移位不同位數(shù),并與步驟1002中數(shù)據(jù)緩存模塊剩余的一個(gè)32比特?cái)?shù)異或,得到最終的32比特?cái)?shù)。該32比特?cái)?shù)置換數(shù)據(jù)緩存模塊中的一個(gè)32比特?cái)?shù),并緩存起來。
步驟1005:重復(fù)步驟1002至步驟1004共32次,并停止輸出。
本發(fā)明通過引入混沌系統(tǒng)Logistic映射,加強(qiáng)了每輪子密鑰的隨機(jī)性,增大了SM4算法的密鑰空間,解決了現(xiàn)在SM4算法存在的密鑰空間較小的安全隱患。
附圖說明
圖1為本發(fā)明的一種基于長密鑰的SM4密鑰擴(kuò)展算法的實(shí)現(xiàn)框圖;
圖2為本發(fā)明實(shí)施例提供的Logistic混沌映射實(shí)現(xiàn)框圖;
圖3為本發(fā)明的一種基于長密鑰SM4的密鑰擴(kuò)展算法的實(shí)現(xiàn)系統(tǒng)結(jié)構(gòu)圖。
具體實(shí)施方式
實(shí)施例1
如圖1所示,一種基于長密鑰的SM4密鑰擴(kuò)展算法的實(shí)現(xiàn)系統(tǒng),包括混沌映射模塊、數(shù)據(jù)緩存模塊、異或模塊、非線性置換S盒模塊和線性變換L模塊,所述混沌映射模塊輸入為部分初始密鑰,通過利用混沌映射的多次迭代,產(chǎn)生具有良好隨機(jī)性的偽隨機(jī)序列作為原SM4密鑰擴(kuò)展算法的輸入,通過對混沌性能和硬件實(shí)現(xiàn)資源消耗的考慮,混沌映射模塊選擇Logist ic映射;
所述異或模塊為多輸入異或邏輯門電路;
所述非線性置換S盒模塊共使用四個(gè)并行的8輸入的S盒,每個(gè)并行的S盒對輸入的8比特?cái)?shù)地址進(jìn)行尋址,輸出存儲(chǔ)在S盒中的8比特?cái)?shù)據(jù);
所述線性變換L模塊是簡單地移位和異或操作。
實(shí)施例2
如圖3所示,采用實(shí)施例1的系統(tǒng)得出的一種基于長密鑰的SM4密鑰擴(kuò)展算法的實(shí)現(xiàn)方法,包括下步驟:
步驟1001:將初始密鑰分為兩個(gè)部分。一部分為固定大小的128比特k1,剩余的初始密鑰為另一部分k2。k2的位數(shù)需要大于或等于32比特。故整個(gè)初始密鑰的位數(shù)需要大于或等于160比特。
步驟1002:將固定的128比特密鑰k1從高位到低位按順序劃分為4個(gè)32比特?cái)?shù)據(jù),并存儲(chǔ)在Xi、Xi+1、Xi+2和Xi+3中。剩余的初始密鑰k2作為Logistic混沌映射的初始值,并存儲(chǔ)在yi中。
步驟1003:將Xi+1、Xi+2和Xi+3相異或,最后在與k2中抽取低的32位數(shù)據(jù)異或,得到最終的32比特?cái)?shù)V。
步驟1004:將32比特?cái)?shù)V從高位到低位按順序劃分為4個(gè)8比特?cái)?shù)。將這4個(gè)8比特?cái)?shù)作為尋址地址輸入到4個(gè)并行的8輸入非線性置換S盒中,置換出S盒中相應(yīng)位置存儲(chǔ)的8比特?cái)?shù)據(jù)。最后將置換后的4個(gè)8比特?cái)?shù)據(jù)位拼接為32比特?cái)?shù)據(jù)S(V)。于此同時(shí),將yi作為輸入數(shù)據(jù),送入取反模塊和乘4模塊中。取反模塊將yi與相同位數(shù)的二進(jìn)制數(shù)值1相異或得到u。乘4模塊將yi向左移動(dòng)2比特?cái)?shù)得到w。
步驟1005:將S(V)通過線性函數(shù)L。其操作具體為:將S(V)同時(shí)循環(huán)左移2位、循環(huán)左移10位、循環(huán)左移18位、循環(huán)左移24位,再將這四次循環(huán)移位后的數(shù)據(jù)異或,最后再與S(V)異或得到32比特?cái)?shù)L(S(V))。與此同時(shí),將u加一得到z。
步驟1006:將32比特?cái)?shù)L(S(V))與Xi異或厚的數(shù)據(jù)更新Xi+4的值。并同時(shí)將Xi+1的值傳遞給原Xi,Xi+2的值傳遞給原Xi+1,Xi+3的值傳遞給原Xi+2。與此同時(shí)將z與w相乘得到h。從數(shù)據(jù)h低位中提取與初始密鑰k2相同位數(shù)的比特?cái)?shù)據(jù),并將該比特?cái)?shù)據(jù)更新yi的值。
步驟1007:將步驟1001至步驟1006重復(fù)共32次后停止。