我們採用AES GCM加密技術,保護您的交易資料安全
在使用API進行加密貨幣投資時存在一定的風險。如果API金鑰被不懷好意的人竊取,可能會導致資產被盜或發生非您本人的操作。
為了預防這種情況,我們採用了AES GCM加密技術,這是一種高階的加密標準,不僅加密數據,還提供完整性驗證,以保護您的交易資料安全。
此外,我們還設置了一個系統排程,每天自動更新加密的私鑰,進一步增強安全性和防護措施。
常見的加密主要分為兩類:對稱加密和非對稱加密,AES加密就是對稱加密的一種,即加密和解密使用相同的一把金鑰。它的全名為Advanced Encryption Standard(高級加密標準),主要是用來取代DES加密演算法,目前已經被全世界廣泛採用,各大處理器廠商也在各自的CPU中,整合了專門的AES指令集,從而在硬體層面提升了AES加解密的速度。
因為AES屬於對稱加密,我們可以先了解對稱加密的流程
1.對稱加密相關概念
1.明文P(plainText):未經加密的數據。
2.金鑰K(key):用來加密明文的密碼。在對稱加密演算法中,加密與解密的金鑰是相同的,由雙方協商產生,絕不可以洩漏。
3.密文C(cipherText): 經過加密的數據。
4.加密函數E(encrypt):C = E(K, P),即將明文與金鑰作為參數,傳入加密函數中,就可以得到密文。
5.解密函數D(decrypt):P = D(K, C),即將密文與金鑰作為參數,傳入解密函數中,就可以取得明文。
2.AES加密相關概念
1.分組(或叫塊):AES是一種分組加密技術,分組加密就是把明文分成一組一組的,每組長度相等,每次加密一組數據,直到加密完整個明文。那你可能要問:為何要進行分組呢?例如一個應用程式總共只能取得3M的記憶體空間來執行,而需要加密的檔案是100M,這時候就得進行檔案拆解加密。在AES標準規範中,分組長度只能是128 bits,也就是每個分組為16個bytes。
2.金鑰長度:AES支援的金鑰長度可以是128 bits、192 bits或256 bits。密鑰的長度不同,推薦加密輪數也不同,如下表:
加密輪數越多,當然安全性越好,但也更耗費時間。
3.加密模式:因為分組加密只能加密固定長度的分組,而實際需要加密的明文可能超過分組長度,此時就要對分組密碼演算法進行迭代,以完成整個明文加密,迭代的方法就是加密模式。它有很多種,常見的工作模式如下圖:
4.初始向量(IV,Initialization Vector):它的作用和MD5的「加鹽」有些類似,目的是防止同樣的明文區塊,始終加密成同樣的密文區塊,以CBC模式為例:
在每一個明文區塊加密前,會讓明文區塊和一個值先做異或操作。 IV作為初始化變量,參與第一個明文區塊的異或,後續的每一個明文區塊和它前一個明文區塊所加密出的密文區塊相異或,從而保證加密出的密文區塊都不同。
5.填充:因為AES是分組加密,所以當明文長度不是分組長度的整數倍時,就需要進行填充。常見的填充方式有PKCS5Padding、PKCS7Padding、ISO10126Padding等。
6.附加訊息(AAD,Additional Authenticated Data):附加訊息不是重要數據,它只是可以包含在協定中的純數據,需要對其進行完整性保護,但不需要加密。一個很好的例子是加密IP封包的標頭。如果對它進行加密,則不能將其用於路由;如果不保護它的完整性,則攻擊者可能會更改訊息的長度或來源位址,而收件者卻不知道
上述這些概念,通常會以參數的形式,出現在前後端的加密工具中,在使用之前,我們需要協商統一,才不會出現問題。
上文提到了AES工作模式的概念,在介紹GCM之前,我們需要先了解下CTR模式
1.CTR(Counter Mode,計數器模式)
圖中可以看出,加密過程使用了金鑰、Nonce(類似IV)、Counter(一個從0到n的編號),與上文提及的CBC模式相比,CTR最大的優勢是可以並行執行,因為所有的區塊只依賴Nonce與Counter,不會依賴前一個密文區塊,適合高速傳輸需求。但CTR不能提供密文訊息完整性校驗的功能(未被竄改),所以我們需要引進另一個概念:MAC(訊息認證碼)
2.MAC(Message Authentication Code, 訊息認證碼)
是一種用來確認訊息完整性並進行認證的技術。透過輸入訊息與共享金鑰,可以產生一段固定長度的資料(MAC值)
收發雙方需要提前共享一個密鑰,發送者使用密鑰產生訊息的MAC值,並隨訊息一起發送,接收者透過共享密鑰計算收到訊息的MAC值,與隨附的MAC值做比較,從而判斷訊息是否被改過(完整性),對於竄改者,由於沒有金鑰(認證),也就無法對竄改後的訊息計算MAC值。
3.GMAC (Galois message authentication code mode, 伽羅華訊息認證碼)
GMAC(伽羅華訊息認證碼)是一種與GCM(伽羅華/計數器模式)一同使用的訊息認證碼(MAC),旨在確保訊息的完整性和真實性。它利用伽羅華域的數學原理,透過固定區塊大小和伽羅華乘法運算來處理數據,生成認證標籤。GMAC以其高效率、良好的並行處理能力和抵抗側信道攻擊的特性,成為網絡安全和數據保護的關鍵技術,廣泛應用於HTTPS、IPsec和TLS等協議中。
4.GCM (Galois/Counter Mode, 伽羅華/計數器模式)
GCM是認證加密模式中的一種,它結合了上述兩者的特徵(GCM中的G就是指GMAC,C就是指CTR),能同時確保資料的保密性、完整性及真實性,另外,它也可以提供附加訊息的完整性校驗,加密流程如下圖:
就像CTR模式下一樣,先對區塊進行順序編號,然後將該區塊編號與初始向量(IV)組合,並使用金鑰k,對輸入做AES加密,然後,將加密的結果與明文進行XOR運算來生成密文。像CTR模式下一樣,應該對每次加密使用不同的IV。對於附加訊息,會使用金鑰H(由金鑰K得出),執行GMAC,將結果與密文進行XOR運算,產生可用於驗證資料完整性的驗證標籤。最後,密文接收者會收到一則完整的訊息,包含密文、IV(計數器CTR的初始值)、驗證標籤(MAC值)。
隨著科技的發展,加密技術尤其是高級加密標準(AES)結合伽羅華/計數器模式(GCM),已經成為保障我們日常生活中數據的保密性、完整性和真實性的重要手段。AES-GCM具有高效的數據處理能力和強大的安全性,可以在現代處理器上高效地進行並行處理,同時提供加密和消息認證的雙重保護。然而,這種模式也面臨著密鑰管理和性能影響的挑戰,並且對初始化向量(IV)的隨機性要求嚴格。儘管如此,AES結合GCM模式在可預見的未來仍然被認為是極其安全的,破解一個256位的AES密鑰需要幾十億年的計算時間,使其在需要高安全性的應用場合中得到廣泛使用。