❶ 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進行業務數據的加解密。
❷ 對稱、非對稱加解密、SSL、HTTPS 詳細介紹
對稱加密:加密和解密使用的是同一個密鑰,信息接收雙方都需事先知道這個密鑰(最常見的對稱加密演算法是DES、AES)。
溫馨提示:閱讀下面內容請對照此網站內的圖片,有助於理解。 http://www.blogjava.net/yxhxj2006/archive/2012/10/15/389547.html
非對稱加密:加密和解密用的是不同的密鑰(最常用的非對稱加密演算法是RSA)。是一對密鑰,公鑰和私鑰,公鑰對外公開,私鑰由自己保存,公鑰可以有很多份拷貝,好比多客戶端和單一伺服器的網路拓撲結構,每一個客戶端上都有一個公鑰,伺服器有一個私鑰,而這個公鑰,是伺服器發給客戶端的。客戶端用公鑰解密接受來的密文,而這個密文是伺服器用私鑰加密的。相反,如果客戶端向伺服器發送請求,客戶端是用伺服器發來的公鑰加密,伺服器接收到密文後,用自己的私鑰去解密。
1.非對稱加密之數字摘要:是採用單向的(不可逆)Hash函數將需要加密的明文加密成一串固定長度(128位)的密文,這一串密文又稱為數字指紋,因為不同的明文形成的摘要不同,而相同的明文形成的摘要必定相同。所以叫數字指紋比較貼切。數字摘要是https確保數據完整性和防篡改的根本原因。(Hash函數包括MD5、SHA這些不屬於加密演算法,因為是不可逆的,只能相當於指紋,而加密演算法是可逆的。Base64也是可逆的。)
2.非對稱加密之數字簽名:做了非對稱加密和數字摘要後,用自己的私鑰對數字摘要加密後就是「數字簽名」,簡單的說就是,經過私鑰加密的數字摘要就是數字簽名。可以把數字簽名附到明文上。
這時候發送的密文中就有數字摘要和數字簽名,接受者只要用發送者的公鑰就能解密簽名,得到摘要信息,然後用Hash函數對收到的原文處理產生一個摘要信息,與解密的摘要信息對比。如果相同,說明收到的信息是完整的,在傳輸的過程中沒有被修改。數字簽名只能夠驗證信息的完整性,數據本身是否加密不屬於數字簽名的控制范圍。
3.非對稱加密之數字證書:只從「明確發送者身份」和「確保數據完整性」,數字簽名就可以完全做到了,但是前提是數字簽名所依賴的密鑰是真是可靠的才可以。如果接受方所持有的公鑰來路有問題或是被替換了,那麼,持有對應私鑰的人就可以冒充發送方發送明文給接受方,但是接收方並不知道。這里的問題就是:對於接受方來說,它怎麼能確定它所得到的公鑰一定是從目標主機那裡發布的,而且沒有被篡改過呢?這時候,我們需要有一個權威的值得信賴的第三方機構(一般是由政府審核並授權的機構)來統一對外發放機構公鑰,只要發送方有這種機構的公鑰,就避免了上述問題的發生。這種機構被稱為證書權威機構(Certificate Authority, CA),它們所發放的包含主機機構名稱、公鑰在內的文件就是人們所說的「數字證書」。
數字證書的頒發過程一般為:用戶首先產生自己的密鑰對,並將公共密鑰及部分個人身份信息傳送給認證中心。認證中心在核實身份後,將執行一些必要的步驟,以確信請求確實由用戶發送而來,然後,認證中心將發給用戶一個數字證書,該證書內包含用戶的個人信息和他的公鑰信息,同時還附有認證中心的簽名信息。用戶就可以使用自己的數字證書進行相關的各種活動。數字證書由獨立的證書發行機構發布。數字證書各不相同,每種證書可提供不同級別的可信度。可以從證書發行機構獲得您自己的數字證書。
SSL:是安全協議,SSL建立通信的過程分為兩個階段:握手階段和傳輸階段。下圖為握手階段。
SSL協議在握手階段使用的是非對稱加密(上面介紹的很清楚),在傳輸階段使用的是對稱加密(簡單不多贅述),也就是說在SSL上傳送的數據是使用對稱密鑰加密的!這並不奇怪,因為非對稱加密的速度緩慢,耗費資源。其實當客戶端和主機使用非對稱加密方式建立連接後,客戶端和主機就已經決定好了在傳輸過程中使用的對稱加密演算法和對稱加密密鑰,由於這個過程本身是安全可靠的,所以對稱加密密鑰是不可能被竊取的,因此,保證了在傳輸過程中對數據進行對稱加密也是安全可靠的,因為除了客戶端和主機之外,不可能有第三方竊取並解密出對稱加密密鑰!
HTTPS:HTTPS是由SSL+HTTP協議構建的可進行加密傳輸、身份認證(確認客戶端連接的主機是否是真實正確的主機)的網路協議。HTTPS所能實現的安全保證,正式SSL的功勞。
HTTPS劣勢:
https的主要缺點就是性能問題。造成https性能低於http的原因有兩個:
1.對數據進行加解密決定了它比http慢。
2.另外一個重要原因的是https禁用了緩存。
相關測試數據表明使用HTTPS協議傳輸數據的工作效率只有使用HTTP協議傳輸的十分之一。因此對於一個網站來說,只有那對那些安全要求極高的的數據才會選擇使用https進行傳輸。