彭俊霞 趙鵬 惠二鑫
(太原師范學院 山西省晉中市 030600)
目前的數據加密技術根據密鑰類型可分對稱加密機制和非對稱加密機制。1977年美國標準局公布的數據加密標準(DES),并且在之后的20年一直是美國政府采用的加密模式。后來,DES 被基于Rijndael 算法對稱高級數據加密標準AES 取代了。而非對稱加密機制因為加解密用的密鑰不同,進而解決了傳統密鑰管理繁瑣的問題,因而獲得廣泛好評,著名的RSA 算法正是非對稱加密機制的代表[1]。
因此,本文充分利用非對稱加密RSA 算法安全性高、密鑰管理便捷,對稱加密AES 算法加密速度快,采用AES 和RSA 相結合的混合加密算法解決單一加密機制的安全性、速度性、密鑰管理等問題,更適合網絡傳輸文件數據的加密。
對稱加密算法指加密和解密使用同一密鑰的算法。對稱加密算法種常用的算法包括DES、3DES、AES、DESX、RC4、RC5、RC6。
DES 加密算法:它是一種分組密碼,以64 位為分組對數據加密,密鑰長度是56 位。但是由于DES 密鑰長度短,已經不適用于現在對于數據加密安全性的要求。
3DES(Triple DES):是基于DES 的一種三重對稱加密算法,抗攻擊性更強。
AES加密算法:AES是迄今為止各方面最強大的對稱加密算法,因為AES 密鑰的長度不超過256 位,因此利用軟件和硬件都能實現高速處理。
根據表1,AES 算法對比其他對稱加密算法有更高的加密效率的同時,密鑰長度也更長。
非對稱加密算法的基本思想是,在數據通信時,通信雙方有兩把密鑰,一把公鑰;另一把私鑰,這兩把密鑰是一對一關系[2]。當用戶A 向用戶B 發出交易時,首先用戶A 用B 的公鑰對所要傳出的數據進行加密,然后把密文廣播到全網;但是所有收到密文的用戶中,只有B 用自己的私鑰才能把密文解成明文。
區塊鏈技術采用非對稱加密算法,全網節點能夠利用公鑰對交易進行驗證,最重要的是只有交易發起人能使用私鑰獲取交易內容。因此,在匿名的情況下有很大的安全優勢[3]。
本文針對AES 算法和RSA 算法的特點,取長補短,提出采用兩者結合的混合加密機制,后期研究將其應用于區塊鏈愛心眾籌平臺。
AES 采用分組密碼,把明文分成一組一組的數據,每組數據都是一樣的長度,加密也是一組一組進行,直到加密完整個明文。設加密函數為E,則密文C=E(K,P),設解密函數為D,則明文P=D(K,C),其中K 為密鑰。
在AES 加密算法中,分組長度只能128 位,每個分組為16 個字節。密鑰的長度不超過256 位。
明文分組以字節為單位的正方形矩陣,稱為狀態矩陣。在加密函數E 中,會執行一個輪函數,在輪函數每一輪迭代中,要經歷四個操作:
第一步,字節代換運算:是一個查表操作,在AES 中有一個S盒和逆S 盒。狀態矩陣中的元素按照高4 位作為行值,低4 位作為列值映射出一個新字節。
第二步,行變換:行變換是一種循環移位操作,狀態矩陣的第0 行不移位,第1 行循環左移1 字節,第2 行移2 字節;行逆變換第0 行不移位,第1 行循環右移1 字節,第2 行移2 字節,依次類推。
第三步,列混合變換:列變換是通過矩陣相乘,經行移位后的狀態矩陣與固定的矩陣相乘,得到混合后的狀態矩陣。任取一列乘以a(x),再將所得結果進行取模運算,模值為x4+1。其中a(x)=(03)x3+(01)x2+(01)x+(02)是一個固定的多項式,其中03、02、01 是三個固定的元素,因為a(x)與x4+1 互質,所以是可逆的。列混合變換的表達式為s'(x)=a(x)s(x),其中,s(x)表示狀態的列多項式。
第四步,輪密鑰的添加變換:是將128 位輪密鑰Ki 同狀態矩陣中的數據進行逐位異或操作,輪密鑰是根據密鑰表獲得的。
2.2.1 費馬定理和歐拉定理
費馬定理:若p 是素數,且a 是不能被p 整除的正整數,則有:
歐拉定理:若(r,n)=1,則將n 的同余類r mod n 稱為模n 的既約同余類,模n 的所有既約同余類的個數記為φ(n),稱歐拉函數。
歐拉定理指對于任何互質的正整數a 和n,有:
2.2.2 單向函數
RSA 算法抗攻擊能力取決于函數求逆的難度,而單向函數能滿足該難度。一個可逆函數f:A →B,若滿足以下2 個條件:
(1)對所有x∈A,容易計算f(x)。
(2)對“所有x∈A”利用現有算力由f(x)求x 極為困難,則稱f:A →B 為單向函數。
2.2.3 蒙哥馬利(Montgomery)算法
蒙哥馬利算法不是一個單一算法,而是三個算法集合[4],其中包括:
(1)蒙哥馬利乘模,計算x·y(mod n)。
(2)蒙哥馬利約減,計算t·ρ-1(mod n)。
(3)蒙哥馬利冪模,計算xy(mod n)。
假設一個集合是通過整數mod n 得到的:Zn={0,1,2,…,n-1},該集合叫做n 的剩余類環。任何屬于Zn的x 滿足兩個條件:一是集合元素都為正整數;二是集合最大長度是ln,其中ln是n 在base-b 進制下的位數。
(1)蒙哥馬利參數
需要預計算的參數:
ρ=bk指定一個最小整數k 使得bk>n;
ω=-n-1(mod ρ)
(2)蒙哥馬利表示法
對于x,0≤x≤n-1,x 的蒙哥馬利表示法為x=x·ρ(mod n)。
(3)蒙哥馬利約減
給定一些整數t,蒙哥馬利約減的計算結果是t·ρ-1(mod n),蒙哥馬利約減算法表示為:
Input:t,0≤t≤t·ρ-1
Output:r=t·ρ-1(mod n)
(4)蒙哥馬利乘模
一個蒙哥馬利乘模包括整數乘法和蒙哥馬利約減,蒙哥馬利表示法有相乘再用一次蒙哥馬利約減得到結果
蒙哥馬利乘模算法表示為:
(5)蒙哥馬利冪模
蒙哥馬利冪模運算是一種快速計算 的算法,是RSA 的核心冪模運算,快速冪模運算是將冪模運算轉換成一系列乘模運算,蒙哥馬利冪模是以此為基礎的運算。蒙哥馬利乘模算法表示為:
2.2.4 RSA 算法流程
RSA 算法具體過程:
(1)首先取兩個大素數p 和q。
2.2.5 RSA 算法優缺點
RSA 算法是一種公開密鑰體系,所以它具有公開密鑰體系的所有優點。優點表現在:
(1)密鑰管理便捷。加解密鑰不同,進而公鑰可以廣播給全網。
(2)保存的密鑰量少。每個用戶只需保存自己的私鑰。
(3)算法強度復雜。RSA 算法強度取決于大質數因子分解的難度。
不過,RSA 算法也有缺點:
(1)密鑰產生麻煩。
(2)加解密速度太慢。因為RSA 的分組長度太大,使運算代價很高,速度上較對稱加密算法慢幾個數量級,且隨著大數分解技術的發展,這個長度還在增加,不利于數據格式的標準化。
待傳輸信息在通信之前,發送方隨機生成一個加密密鑰,用AES 算法對待傳輸信息進行加密生成密文,再用RSA 算法的公鑰對AES 密鑰進行加密。密文通過網絡傳輸后,接收方收到密文以及被加密了的AES 密鑰,先用保存的私鑰解密得到AES 密鑰,再用AES 密鑰解密獲取明文,進而得到所傳輸的數據信息。該混合加密方案既有AES 加密算法的快速,又有RSA 加密算法的安全可靠和密鑰管理的便捷性。加解密實現流程圖如圖1所示。
將混合加密算法應用在區塊鏈愛心眾籌平臺上,利用AES 加密算法解決眾籌平臺上大量文本數據信息在傳輸中的加解密速度慢的問題,借此彌補RSA 的不足,同時利用RSA 的公鑰私鑰解決AES 中的密鑰管理不安全問題。
雙重混合加密:即使在傳輸過程中密文被攔截,經混合加密后的密文增強了攻擊破解的難度,使得傳輸數據更加安全。
算法加密速度比較:運行環境Windows 10,Intel 8 核處理器,8G 內存,256G 硬盤,測試軟件為IntelliJ IDEA 2019.2.4 x64。測試讀取純文本文件,把內容分行加密后在寫入另一個文件中,最后計算加解密時長,解密過程則與之相反。測試過程每組十次,去掉最大值和最小值,計算出平均時間。如表2-表4所示。

表1:三種對稱加密算法對比圖

表2:AES 加密算法加解密時長(密鑰長度128 位)

表3:RSA 加密算法加解密時長(密鑰長度2048 位)

表4:AES+RSA 混合加密算法加解密時長
通過上述測試結果可以看出,AES 加解密文件速度遠比RSA加解密文件快,因此混合機密中先使用AES 對文件進行加密形成密文,再用RSA 算法對AES 密鑰加密后通過網絡傳輸,解密過程與之相反,以此提高RSA 算法加密速度同時提高傳輸安全性。
RSA 算法是最具代表性的公開密鑰加密算法之一,然而RSA算法的速度瓶頸極大程度上受到冪模運算的影響,而模乘運算速度取決于模運算,模運算其實是除運算,但是除運算相對與加減乘運算要費時的多。所以,本文在模運算上利用蒙哥利馬算法去提高RSA 處理的速度,進而針對眾籌平臺上的大量文件數據信息加密,單獨使用RSA 消耗的資源太多了的問題,本文采用了AES 和RSA兩種算法的結合,在后續研究中會將算法應用于愛心眾籌平臺之上,利用AES 加解密速度快和RSA 的密鑰管理安全,共同對眾籌平臺數據傳輸安全提供保障。