一種AES算法與ElGamal算法相結合的加密文件傳輸方法與流程
2023-11-06 04:12:12 7

本方法涉及信息技術領域的加密文件的傳輸方法,特別是一種aes算法與elgamal算法相結合的加密文件傳輸方法。
背景技術:
一、aes算法
高級加密標準(英語:advancedencryptionstandard,縮寫:aes)是美國聯邦政府採用的一種區塊加密標準。這個標準用來替代原先的des,已經被多方分析且廣為全世界所使用。經過五年的甄選流程,高級加密標準由美國國家標準與技術研究院(nist)於2001年11月26日發布於fipspub197,並在2002年5月26日成為有效的標準。2006年,高級加密標準已然成為對稱密鑰加密中最流行的算法之一。
aes的區塊長度固定為128比特,密鑰長度則可以是128,192或256比特。大多數aes計算是在一個特別的有限域完成的。
aes加密過程是在一個4×4的字節矩陣上運作,這個矩陣又稱為「狀態(state)」,其初值就是一個明文區塊(矩陣中一個元素大小就是明文區塊中的一個byte)。加密時,各輪aes加密循環(除最後一輪外)均包含4個步驟:
addroundkey—矩陣中的每一個字節都與該次輪秘鑰(roundkey)做xor運算;每個子密鑰由密鑰生成方案產生。
subbytes—通過非線性的替換函數,用查找表的方式把每個字節替換成對應的字節。
shiftrows—將矩陣中的每個橫列進行循環式移位。
mixcolumns—為了充分混合矩陣中各個直行的操作。這個步驟使用線性轉換來混合每列的四個字節。
最後一個加密循環中省略mixcolumns步驟,而以另一個addroundkey取代。
其存在的問題在於傳統的邏輯門存在一定位上的扇出,即兩個輸入,卻只有一個輸出。這樣便有利於邊信道攻擊中的功耗分析進行破解。
二、可逆邏輯線路
可逆邏輯線路是由一系列可逆邏輯門搭建而成的具有一定函數功能的邏輯電路。它具有如下特點:
(1)輸入數等於輸出數;
(2)沒有扇入與扇出;
(3)沒有反饋;
(4)網絡分層級聯,有時為了保證網絡可逆,需要添加一些無用的輸出或輸入信息位,即垃圾信息位;
(5)n輸入、輸出向量的可逆網絡共有2n!種。
三、elgamal算法
elgamal公鑰密碼體質基於有限域上的離散對數困難問題。它既能用於數據加密也能用於數字籤名,在現代密碼學中應用十分廣泛,是目前應用最為廣泛的數字籤名方案,這些方案可以應用於數字籤名、認證、加密以及各種安全協議中,在金融系統中,廣泛地使用到elgamal籤名體質,同時在通信系統中,也大量使用基於elgamal籤名算法的認證和通信協議
elgamal的加密過程如下:
(1)參數產生:設g為有限域zp上的乘法群,p是一個素數,α是zp上的一個生成元
(2)密鑰生成:選取α∈[1,p-2],計算β=αamodp,那麼得到私鑰為a,公鑰為(p,α,β)。
(3)加密過程:對於加密消息m可以任意選取隨機數k∈[1,p-2],計算γ=akmodp和δ=mβkmodp,可以得到密文為c=(γ,δ)。
(4)解密過程:接受著收到密文c=(γ,δ)後,使用私鑰a,計算γ-aδ=(αk)-aδ=α-ka(mβk)=α-kamαakmodp=mmodp=m,得到明文m。
利用以上參數和密鑰,數字籤名算法dsa(digitalsignaturealgorithm)如下:
籤名過程:對消息m,任意選取隨機數k∈[1,p-2],計算r=αkmodp,s=k-1(h(m)+ar)mod(p-1),其中h為hash函數。那麼(r,s)為消息m的籤名。
信息安全不僅體現在文件存儲的環節,文件在傳輸過程中的安全也同樣至關重要。市場上大多數的文件傳輸會根據相應的公共協議對傳輸的消息進行加解密,但在用戶將消息發送到信道的過程中,信息的安全性卻備受考驗,存在著截流的風險。同時,對稱加解密採用同樣的密鑰也加大了對密鑰傳輸安全性的考驗,通常的加密系統,用戶會將密鑰交給第三方安全機構來授予,通過數字籤名等對身份、屬性的驗證來派發。第三方的公信力就顯得至關重要,公信力的缺失和用戶個人信息的洩漏同樣威脅著安全。如何管理密鑰,如何確保傳輸消息的安全引起了廣泛的思考。
技術實現要素:
本發明的目的是為了克服以上不足,提供一種aes算法與elgamal算法相結合的文件傳輸加密方法,既保證了文件的加密效果,又保證了文件及密鑰傳輸過程中的安全性。
本發明的目的通過以下技術方案來實現:一種aes算法與elgamal算法相結合的加密文件傳輸方法,具體步驟包括:
a、文件在發送端採用aes算法進行加密處理,然後運用發送端提供的elgamal公鑰對aes密鑰進行加密處理,並將加密後的文件與密鑰發送至接收端;
b、文件在接收端運用本地保存的elgamal私鑰先對接收到的aes密鑰進行解密處理,然後將還原後的密鑰對接收到的aes密文進行解密處理,得到發送端發送的原文。
在本發明一個較佳實施例中,用戶在註冊時自動調用elgamal算法,生成對應的公鑰publickey和私鑰privatekey,分別存儲在伺服器和本地資料庫。
在本發明一個較佳實施例中,所述aes算法為基於可逆邏輯的aes算法。
在本發明一個較佳實施例中,所述可逆邏輯的aes算法,具體為:
a、運用可逆邏輯門的可逆特性,構造相應的可逆邏輯電路來替換、改造傳統aes算法中列混合過程的電路構造,達到運用可逆邏輯門來替代傳統邏輯門的效果,從而實現aes算法中的加密過程;
b、運用可逆邏輯門的可逆特性,構造相應的可逆邏輯電路來替換、改造傳統aes算法中逆列混合過程的電路構造,達到運用可逆邏輯門來替代傳統邏輯門的效果,從而實現aes算法中的解密過程。
在本發明一個較佳實施例中,所述步驟a中的所述列混合過程的具體步驟如下:
列混合的操作是通過矩陣相乘來實現的,在算法中,矩陣的乘法和加法都是定義基於z2[x]的不可約多項式m(x)=x8+x4+x3+x+1構造的有限域gf(28)上的運算,所涉及到的加法和乘法運算具體如下:
列混合是針對字、字節和位的操作,到最終列混合是針對位的操作,寫成多項式相乘的形式,令其中w(x)是迦羅瓦域上的多項式,記為:
w(x)={03}x3+{01}x2+{01}x+{02}
為了便於計算操作,寫成如下的形式:
所以
經過該乘法計算後,每一列中的一個字有下述結果取代:
通過構造可逆邏輯可逆電路來實現;
其中b7b6b5b4b3b2b1b0輸入的相應的字節,也即是狀態矩陣中每個元素的值,其中b(x)為一個字節;
而一個狀態中共含有16個元素,即含有16個字節,每一個字節都需要進行上述的操作,為了簡化電路,我們將迦羅瓦域中2·b(x)的運算封裝成一個小的可逆邏輯模塊電路。
在本發明一個較佳實施例中,所述步驟b中所述逆列混合過程的具體步驟如下:
逆列混合變換是列混合變換的逆變換,逆混合變換是在狀態上對每一列進行運算,將每一列看作是4次多項式,將狀態的列看作gf(28)上的多項式且被一個固定的多項式w-1(x)模x4+1,其中w-1(x)為:
w-1(x)={03}x3+{01}x2+{01}x+{02}
同樣,這裡可以寫成矩陣乘法,令
經過該乘法計算後,一列中的4個字節將由下述結果取代:
本發明aes算法與elgamal算法相結合的文件傳輸加密方法與現有技術相比具有以下優點:
1、雙重加密:
本文件傳輸加密方法先運用了aes算法進行第一重加密,然後在其基礎上對aes的密鑰也運用elgamal算法進行第二重加密,在不降低效率的前提下保證了文件的傳輸安全。
2、aes算法基於可逆邏輯線路構造:
基於可逆邏輯構造的原理,通過增加可構造密鑰的種類提升了加密線路的抗攻擊性。在n條線路上的有限域內可以構造的密鑰種類多達2n!種,而傳統的線路構造方法可以實現的密鑰種類僅有2n!種。
3、私鑰在本地保管:
在整個文件傳輸過程中,只有擁有私鑰才能將文件進行解密,而接收端的私鑰僅在本地保存而不參與傳輸過程,提升了接收端的安全度,防止在傳輸過程中的密鑰洩露。
附圖說明
圖1是aes與elgamal結合的傳輸結構圖;
圖2是aes與elgamal結合的用例圖;
圖3是加密文件傳輸過程的流程圖;
圖4是加密文件傳輸過程的時序圖;
圖5是aes算法的加密流程圖;
圖6是為實現aes算法中的列混合過程而設計的可逆邏輯電路;
圖7是可逆邏輯電路數乘2的電路構造;
圖8是u器件;
圖9是可逆邏輯電路;
圖10是逆列混合的電路構造圖。
具體實施方式
為使本發明實施例的目的、技術方案和優點更加清楚,下面將對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。在本發明的一種實施方式中描述的元素和特徵可以與一個或更多個其它實施方式中示出的元素和特徵相結合。應當注意,為了清楚的目的,說明中省略了與本發明無關的、本領域普通技術人員已知的部件和處理的表示和描述。基於本發明中的實施例,本領域普通技術人員在沒有付出創造性勞動的前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
結合圖1-4,本發明公開了一種aes算法與elgamal算法相結合的加密文件傳輸方法,具體步驟包括:
(1)用戶在註冊時自動調用elgamal算法,生成一個對應的公鑰publickey,和私鑰privatekey,分別存儲在伺服器和本地資料庫。
(2)發送方a首先調用aes算法對原文件plaintext進行加密,生成密文ciphertext。
(3)發送方a根據接收方b的用戶id訪問伺服器資料庫,取得接收方b存儲在伺服器上的公鑰qu_b,利用獲取的接收方b的公鑰qu_b,對aes加密時生成的密鑰aeskey調用elgamal算法進行加密,將加密後的文件和密鑰打包發送給接收方b。
(4)接收方b在收到文件後,解析出其中的密鑰部分,首先調用elgamal算法還原出aes加密所使用的密鑰aeskey。
(5)然後利用還原出的aeskey調用aes算法對密文ciphertext解密,最終還原出明文plaintext。
優選地,所述aes算法採用基於可逆邏輯的aes算法。
結合圖5所示,所述基於可逆邏輯的aes算法具體步驟如下:
(1)、運用可逆邏輯門的可逆特性,構造特殊的可逆邏輯電路來替換、改造傳統aes算法中列混合過程的電路構造,達到運用可逆邏輯門來替代傳統邏輯門的效果,從而實現aes算法中的加密過程。
(2)、運用可逆邏輯門的可逆特性,構造特殊的可逆邏輯電路來替換、改造傳統aes算法中逆列混合過程的電路構造,達到運用可逆邏輯門來替代傳統邏輯門的效果,從而實現aes算法中的解密過程。
列混合過程改造:
列混合是整個加密過程中最為重要的一個部分,本質上來講列混合的操作是通過矩陣相乘來實現的,在算法中,矩陣的乘法和加法都是定義基於z2[x]的不可約多項式m(x)=x8+x4+x3+x+1構造的有限域gf(28)上的運算,所涉及到的加法和乘法運算的詳細介紹見下面所述。
列混合是針對字,字節和位的操作,到最終列混合說到底是針對位的操作,之前提到列混合的操作相當於是通過矩陣相乘來實現的,我們可以用來寫成多項式相乘的形式,令其中w(x)是迦羅瓦域上的多項式,記為:
w(x)={03}x3+{01}x2+{01}x+{02}
為了便於計算操作,可以寫成如下的形式:
所以
經過該乘法計算後,每一列中的一個字有下述結果取代:
這裡我們通過構造可逆邏輯可逆電路來實現,見圖6。
其中b7b6b5b4b3b2b1b0輸入的相應的字節,也即是狀態矩陣中每個元素的值,圖7就表示迦羅瓦域中2·b(x)的運算,其中b(x)為一個字節。
而一個狀態中共含有16個元素,即含有16個字節,每一個字節都需要進行上面的操作,為了簡化電路,我們將圖7封裝成一個小的可逆邏輯模塊電路圖,見圖8所示。
而針對每一列所進行的操作,我們構造如下的可逆邏輯電路圖,見圖9。
逆列混合過程改造:
逆列混合變換是列混合變換的逆變換。逆混合變換是在狀態上對每一列進行運算。將每一列看作是4次多項式。將狀態的列看作gf(28)上的多項式且被一個固定的多項式w-1(x)模x4+1,其中w-1(x)為:
w-1(x)={03}x3+{01}x2+{01}x+{02}
同樣這裡可以寫成矩陣乘法。令
經過該乘法計算後,一列中的4個字節將由下述結果取代:
構造的可逆邏輯電路圖見圖10。
最後應說明的是:雖然以上已經詳細說明了本發明及其優點,但是應當理解在不超出由所附的權利要求所限定的本發明的精神和範圍的情況下可以進行各種改變、替代和變換。而且,本發明的範圍不僅限於說明書所描述的過程、設備、手段、方法和步驟的具體實施例。本領域內的普通技術人員從本發明的公開內容將容易理解,根據本發明可以使用執行與在此所述的相應實施例基本相同的功能或者獲得與其基本相同的結果的、現有和將來要被開發的過程、設備、手段、方法或者步驟。因此,所附的權利要求旨在在它們的範圍內包括這樣的過程、設備、手段、方法或者步驟。