RSA 1024和AES 256,這兩種加密演算法理論上哪種更安全?
是否已經被破解?
回答這個問題,需要先了解下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進行業務數據的加解密。
各有所長。前者是非對稱加密,是PKI/CA的基礎,是業內普遍使用的,加密效率較後者低,存在一些破解的報道,雖然在成本的限制下可行性不高。AES256是美國NIST在幾種加密演算法競賽中選出來的對稱加密演算法,是用於取代(3)DES的,原名為Rijndael加密法,破解的報道相對少些。
如果單純從密碼學上講,要實現與AES256相當的加密強度,RSA加密演算法長度要達到16384位,另外RSA1024目前已經不被認為是安全的加密演算法了。
其實我覺得這樣的比較意義不大。RSA和AES分別為非對稱加密和對稱加密的代表,各有各的用途。縱然,如前幾位知友所述,RSA1024的安全性和效率較AES256低,但對稱加密演算法再好,其能被使用的前提也是雙方握有相同的秘鑰。而非對稱加密是業界普遍採用的交換秘鑰的方式。所以更多的情況下,兩者是協同工作的,不存在誰好誰壞的問題。
從安全強度來說,1024rsa只有80bit等效密鑰強度。而且目前大數分解的能力已經迫近,1024已經不可靠了
256bit的aes還是靠譜的,安全使用的話沒問題。(當然那些作死的用法另當別論)AES演算法更安全,但是二者使用場景不同
加密後的數據膨脹讓人很是煩惱。。
這兩種加密演算法所適用的業務場景不同,沒有可比性。
RSA是非對稱加密演算法,一般用於密鑰交換、數字簽名,或者保護動態隨機對稱加密密鑰。
RSA效率低下,只能用於對少量內容的加密(如動態隨機對稱加密密鑰、HASH摘要)。就RSA本身的安全性而言,RSA 768已於2009年被破解,RSA 1024理論上只是略高於RSA 768,因此也被認為不適合使用了,業務場景中推薦RSA 2048或以上。AES是對稱加密演算法,包含三種密鑰長度(128、192、256),目前都是安全的,商業用途使用AES 128目前是足夠的,AES 256更好。
AES主要的業務場景是對內容進行加密,效率高。把RSA和AES進行比較,好比鎚子和斧頭那個更好一樣。
利用好各自的特點,組合使用,效果更佳。
比如數字證書(密鑰協商時用RSA來傳遞,確定密鑰後用AES或其它對稱加密來傳輸)、比如微軟的RMS系統(隨機AES密鑰對內容加密,然後用RSA傳遞到伺服器保護起來),都是組合使用這兩種演算法的。===========廣告時間==========本人運營維護微信公眾號:網路安全生命周期 (Security_SDL),歡迎關注~共同探討網路安全體系建設~都不安全。
如果我用1pb的硬碟,存儲了世界基於正態分布的密碼庫,通過存儲來換時間。
撒1kb鹽才是王道。推薦閱讀:
※能否設計出「可以杜絕主辦方作弊的」匿名投票系統?
※誰能最簡單的詳解橢圓曲線演算法,secp256k1 是如何生成公鑰和私鑰的?
※疑似被新浪微博官方盜號,如何收集證據起訴?
※將大於2的正整數分解成2個因數(不是質因數),並求其各結果間兩因數最小非負數差,這樣的數有研究的意義嗎?
※密碼學如何入門,從什麼方向開始,能推薦書?