㈠ 什麼是AES對稱加密
AES加密標准又稱為高級加密標准Rijndael加密法,是美國國家標准技術研究所NIST旨在取代DES的21世紀的加密標准。AES的基本要求是,採用對稱分組密碼體制,密鑰長度可以為128、192或256位,分組長度128位,演算法應易在各種硬體和軟體上實現。1998年NIST開始AES第一輪分析、測試和徵集,共產生了15個候選演算法
㈡ 加密技術02-對稱加密-AES原理
AES 全稱 Advanced Encryption Standard(高級加密標准)。它的出現主要是為了取代 DES 加密演算法的,因為 DES 演算法的密鑰長度是 56 位,因此演算法的理論安全強度是 2^56。但二十世紀中後期正是計算機飛速發展的階段,元器件製造工藝的進步使得計算機的處理能力越來越強,所以還是不能滿足人們對安全性的要求。於是 1997 年 1 月 2 號,美國國家標准技術研究所宣布希望徵集高級加密標准,用以取代 DES。AES 也得到了全世界很多密碼工作者的響應,先後有很多人提交了自己設計的演算法。最終有5個候選演算法進入最後一輪:Rijndael,Serpent,Twofish,RC6 和 MARS。最終經過安全性分析、軟硬體性能評估等嚴格的步驟,Rijndael 演算法獲勝。
AES 密碼與分組密碼 Rijndael 基本上完全一致,Rijndael 分組大小和密鑰大小都可以為 128 位、192 位和 256 位。然而 AES 只要求分組大小為 128 位,因此只有分組長度為 128 位的 Rijndael 才稱為 AES 演算法。本文只對分組大小 128 位,密鑰長度也為 128 位的 Rijndael 演算法進行分析。密鑰長度為 192 位和 256 位的處理方式和 128 位的處理方式類似,只不過密鑰長度每增加 64 位,演算法的循環次數就增加 2 輪,128 位循環 10 輪、192 位循環 12 輪、256 位循環 14 輪。
給定一個 128 位的明文和一個 128 位的密鑰,輸出一個 128 位的密文。這個密文可以用相同的密鑰解密。雖然 AES 一次只能加密 16 個位元組,但我們只需要把明文劃分成每 16 個位元組一組的塊,就可以實現任意長度明文的加密。如果明文長度不是 16 個位元組的倍數,則需要填充,目前填充方式主要是 PKCS7 / PKCS5。
下來主要分析 16 個位元組的加解密過程,下圖是 AES 演算法框架。
密鑰生成流程
G 函數
關於輪常量的生成下文會介紹。
主要作用:一是增加密鑰編排中的非線性;二是消除AES中的對稱性。這兩種屬性都是抵抗某些分組密碼攻擊必要的。
接下來詳細解釋一下幾個關鍵步驟。
明文矩陣和當前回次的子密鑰矩陣進行異或運算。
位元組代換層的主要功能是通過 S 盒完成一個位元組到另外一個位元組的映射。
依次遍歷 4 * 4 的明文矩陣 P 中元素,元素高四位值為行號,低四位值為列號,然後在 S 盒中取出對應的值。
行位移操作最為簡單,它是用來將輸入數據作為一個 4 * 4 的位元組矩陣進行處理的,然後將這個矩陣的位元組進行位置上的置換。ShiftRows 子層屬於 AES 手動的擴散層,目的是將單個位上的變換擴散到影響整個狀態當,從而達到雪崩效應。它之所以稱作行位移,是因為它只在 4 * 4 矩陣的行間進行操作,每行 4 位元組的數據。在加密時,保持矩陣的第一行不變,第二行向左移動 1 個位元組、第三行向左移動 2 個位元組、第四行向左移動 3 個位元組。
列混淆層是 AES 演算法中最為復雜的部分,屬於擴散層,列混淆操作是 AES 演算法中主要的擴散元素,它混淆了輸入矩陣的每一列,使輸入的每個位元組都會影響到 4 個輸出位元組。行位移層和列混淆層的組合使得經過三輪處理以後,矩陣的每個位元組都依賴於 16 個明文位元組成可能。其實質是在有限域 GF(2^8) 上的多項式乘法運算,也稱伽羅瓦域上的乘法。
伽羅瓦域
伽羅瓦域上的乘法在包括加/解密編碼和存儲編碼中經常使用,AES 演算法就使用了伽羅瓦域 GF(2^8) 中的運算。以 2^n 形式的伽羅瓦域來說,加減法都是異或運算,乘法相對較復雜一些,下面介紹 GF(2^n) 上有限域的乘法運算。
本原多項式: 域中不可約多項式,是不能夠進行因子分解的多項式,本原多項式是一種特殊的不可約多項式。當一個域上的本原多項式確定了,這個域上的運算也就確定了,本原多項式一般通過查表可得,同一個域往往有多個本原多項式。通過將域中的元素化為多項式的形式,可以將域上的乘法運算轉化為普通的多項式乘法模以本原多項式的計算。比如 g(x) = x^3+x+1 是 GF(2^3) 上的本原多項式,那麼 GF(2^3) 域上的元素 3*7 可以轉化為多項式乘法:
乘二運算: 無論是普通計算還是伽羅瓦域上運算,乘二計算是一種非常特殊的運算。普通計算在計算機上通過向高位的移位計算即可實現,伽羅瓦域上乘二也不復雜,一次移位和一次異或即可。從多項式的角度來看,伽羅瓦域上乘二對應的是一個多項式乘以 x,如果這個多項式最高指數沒有超過本原多項式最高指數,那麼相當於一次普通計算的乘二計算,如果結果最高指數等於本原多項式最高指數,那麼需要將除去本原多項式最高項的其他項和結果進行異或。
比如:GF(2^8)(g(x) = x^8 + x^4 + x^3 + x^2 + 1)上 15*15 = 85 計算過程。
15 寫成生成元指數和異或的形式 2^3 + 2^2 + 2^1 + 1,那麼:
乘二運算計算過程:
列混淆 :就是把兩個矩陣的相乘,裡面的運算,加法對應異或運算,乘法對應伽羅瓦域 GF(2^8) 上的乘法(本原多項式為:x^8 + x^4 + x^3 + x^1 + 1)。
Galois 函數為伽羅瓦域上的乘法。
解碼過程和 DES 解碼類似,也是一個逆過程。基本的數學原理也是:一個數進行兩次異或運算就能恢復,S ^ e ^ e = S。
密鑰加法層
通過異或的特性,再次異或就能恢復原數。
逆Shift Rows層
恢復 Shift Rows層 的移動。
逆Mix Column層
通過乘上正矩陣的逆矩陣進行矩陣恢復。
一個矩陣先乘上一個正矩陣,然後再乘上他的逆矩陣,相當於沒有操作。
逆位元組代換層
通過再次代換恢復位元組代換層的代換操作。
比如:0x00 位元組的置換過程
輪常量生成規則如下:
演算法原理和 AES128 一樣,只是每次加解密的數據和密鑰大小為 192 位和 256 位。加解密過程幾乎是一樣的,只是循環輪數增加,所以子密鑰個數也要增加,最後輪常量 RC 長度增加。
㈢ RSA和AES區別
先了解下AES和RSA的區別,前者屬於 對稱加密 ,後者屬於 非對稱加密 。
1、對稱加密
對稱加密就是加密和解密使用同一個密鑰。
用數學公示表示就是:
▲加密:Ek(P) = C
▲解密:Dk(C) = P
這里E表示加密演算法,D表示解密演算法,P表示明文,C表示密文。
是不是看起來有點不太容易理解?看下圖:
看過間諜局的知友們一定知道電台和密碼本的功能。潛伏裡面孫紅雷通過電台收聽到一堆數字,然後拿出密碼本比對,找到數字對應的漢字,就明白上級傳達的指令。而軍統的監聽台沒有密碼本,只看到一堆沒有意義的數字,這就是對稱演算法的原理。
AES就屬於對稱加密 ,常見的對稱加密方法還有DES、3DES、Blowfish、RC2以及國密的SM4。
2、非對稱加密
對稱加密快而且方便,但是有個缺點——密鑰容易被偷或被破解。非對稱加密就可以很好的避免這個問題。
非對稱演算法 把密鑰分成兩個 ,一個自己持有叫 私鑰 ,另一個發給對方,還可以公開,叫 公鑰 ,用公鑰加密的數據只能用私鑰解開。
▲加密: E公鑰(P) = C
▲解密::D私鑰(C) = P
這下就不用擔心密鑰被對方竊取或被破解了,私鑰由自己保管。
非對稱加密演算法核心原理其實就是設計一個數學難題,使得用公鑰和明文推導密文很容易,但根據公鑰、明文和密文推導私鑰極其難。
RSA 就屬於非對稱加密,非對稱加密還有Elgamal、背包演算法、Rabin、D-H、ECC(橢圓曲線加密演算法)以及國家商用密碼SM2演算法。
3、AES和RSA
AES和RSA都很安全,至少在目前的計算機體系結構下,沒有任何有效的攻擊方式。量子計算機時代,RSA有一定的破綻,因為利用shro's algorithm,量子計算機窮舉計算質因子速度可以提高N個數量級,能夠在有限的時間內破解RSA密鑰。AES256至少目前並沒有什麼明顯的漏洞。
AES作為對稱加密技術,加密速度很快。 現在高端一點的CPU都帶有AES-NI指令,可以極快的完成加密和解密。
舉例來說,堅果雲存儲系統採用了intel 的AES-NI加速,在採用AES加密和解密的時候,
單核的性能可以超過 1GB Byte/秒,非常非常快,很適合對大量數據進行加解密。
但是AES作為對稱加密技術,如何安全的分發密鑰是一個難題。通過任何方式傳遞密鑰都有泄密的風險。當然,目前我國高大上的量子通信技術或許能很好的解決這個問題。
RSA作為非對稱加密技術的代表, 加解密的速度其實相當慢,只能對小塊的數據進行加解密。但是其非對稱的特點,滿足公鑰可以隨處分發,只有公鑰能解密私鑰加密的數據,只有私鑰能解密公鑰加密的數據。所以很適合用來進行密鑰分發和身份驗證,這兩個應用場景剛好相反。
1)用於對稱秘鑰分發的場景,其他人用公鑰加密對稱的秘鑰,那麼只有授權人才持有私鑰,因此才能解密獲得對應的秘鑰,解決了AES密鑰分發的難題;
2)對於身份驗證的場景,授權人用私鑰加密一段指令,其他人用公鑰解密對應的數據,驗證對應的指令與之前約定的某些特徵一致(例如,這段話必須使用四川口音,像是堅果雲CEO
的標准四川口音==),如果一致,那麼可以確認這個指令就是授權人發出的。
相關趣聞軼事:
RSA除了是一個偉大的發明,被免費開放給所有互聯網用戶使用。它的發明者還以此成立了一家名為 RSA Security 的網路安全公司,這家公司最後被EMC高價收購。這是德藝雙馨的偉大證明, 是「又紅又專」的典範。
RSA的演算法是以三個發明者的名字命名的,三位都是成功的數學家,科學家和企業家,其中的排名第一Ron Rivest,有非常多的傑出貢獻。
RSA是整個互聯網數據安全的基礎,與光纖處於同樣基礎和重要的方式。 大部分的加密和解密的應用都是同時應用RSA和AES。
總結
破解加密的難度除了跟 加密方法 有關,還跟 密鑰長度 以及 加密模式 有很大的關系,就拿AES來說,有AES128和AES256( 代表密鑰長度 ),顯然AES256的安全性能比AES128更高,而AES又要四種模式:ECB、CBC、CFB、OFB( 代表加密模式 )。
RSA1024是屬於非對稱加密,是基於大整數因式分解難度,也就是兩個質數相乘很容易,但是找一個大數的質因子非常困難。量子計算機時代,RSA有一定的風險,具體可以參考: 超鏈接
AES256目前沒有明顯的漏洞,唯一的問題就是如何安全的分發密鑰。
現在大部分的加密解密都是同時應用RSA和AES,發揮各自的優勢,使用RSA進行密鑰分發、協商,使用AES進行業務數據的加解密。
㈣ 用路由器設置的無線網路兩種加密類型: AES 和 TKIP有何區別
1,TKIP: Temporal Key Integrity Protocol(暫時密鑰集成協議)負責處理無線安全問題的加密部分,TKIP是包裹在已有WEP密碼外圍的一層「外殼」, 這種加密方式在盡可能使用WEP演算法的同時消除了已知的WEP缺點。x0dx0a2,TKIP另一個重要特性就是變化每個數據包所使用的密鑰,這就是它名纖褲稱中「動態」的出處。密鑰通過將多種因素混合在一起生成,包括基本密鑰(即TKIP中所謂的成對瞬時密鑰)、發射站的MAC地址以及數據包的序列號。x0dx0a3,AES:Advanced Encryption Standard(高級加密標准),是美國國家標准與技術研究所用於加密電子數據的規范,該演算法匯聚了設計簡單、密鑰安裝快、需要的內存空間少、在所有的平台上運行良好、支持並行處理並且可以抵抗所有已知攻擊等優點。x0dx0a4,AES 是一個迭代的、尺亂對稱密鑰分組的密碼,它可以使用128、192 和 256 位密鑰,並且用 128 位(16位元組)分組加密和解密數據。與公共密鑰密碼使用密鑰對不同,對稱密鑰密碼使用相同的密鑰加密和解密數據。x0dx0a5,AES提供了比 TKIP更加高級的加密技術, 現在無線路由器都提供了這2種演算法,不過比較傾向於AES。x0dx0a6,TKIP安全性不如AES,而毀困簡且在使用TKIP演算法時路由器的吞吐量會下降3成至5成,大大地影響了路由器的性能。