一文詳細解讀https

1.Https是什麼

https是基於http協議的一個擴展,與SSL(安全套接層)組合使用的HTTP被稱為HTTPS(HTTP Secure,超文本傳輸安全協議),https盛行的原因是什麼呢?當然是因為安全原因啦,http是不加密的,HTTP缺點:

1.通信使用明文不對數據進行加密(內容容易被竊聽);

2.不驗證通信方身份(容易偽裝);

3.無法確定報文完整性(內容易被篡改);

HTTPS 並非是應用層的一種新協議。只是HTTP通信接口部分用 SSL(SecureSocket Layer)和 TLS(Transport Layer Security)協議代替而已;

通常,HTTP 直接和 TCP 通信。當使用 SSL 時,則演變成先和 SSL 通信,再由 SSL和 TCP 通信了。簡言之,所謂 HTTPS,其實就是身披 SSL 協議這層外殼的HTTP;

一文詳細解讀https

2.Http/Https處於ISO的應用層

ISO7層模型,網絡由下往上分為:

物理層-- 網線,集線器hub;

數據鏈路層-- 交換機,mac地址;

網絡層-- 路由器,IP協議;

傳輸層-- TCP/UDP協議;

會話層-- …

表示層-- …

應用層-- FTP、Telnet、SMTP、RIP、NFS、DNS。 HTTP(s)協議;

3.SSL/TLS是什麼?

SSL就是Https中的s,學習https的關鍵就在於SSL的內容,而ssl的內容又包含一系列的加密方法的內容,所以實際上學習的重點其實是SSL下面的加密方法;

3.1.SSL

SSL:(Secure Socket Layer,安全套接字層),位於可靠的面向連接的網絡層協議和應用層協議之間的一種協議層。SSL通過互相認證、使用數字簽名確保完整性、使用加密確保私密性,以實現客戶端和服務器之間的安全通訊。該協議由兩層組成:SSL記錄協議和SSL握手協議;

SSL是Netscape開發的專門用戶保護Web通訊的,目前版本為3.0。最新版本的TLS 1.0是IETF(工程任務組)制定的一種新的協議,它建立在SSL 3.0協議規範之上,是SSL 3.0的後續版本。兩者差別極小,可以理解為SSL 3.1,它是寫入了RFC的;

3.2.TLS

TLS:(Transport Layer Security,傳輸層安全協議),用於兩個應用程序之間提供保密性和數據完整性。該協議由兩層組成:TLS記錄協議和TLS握手協議;

4.SSL倆種基本的加密方法

4.1.對稱密鑰加密(共享密鑰加密)

以共享密鑰方式加密時必須將密鑰也發給對方。可究竟怎樣才能安全地轉交?在互聯網上轉發密鑰時,如果通信被監聽那麼密鑰就可會落入攻擊者之手,同時也就失去了加密的意義。另外還得設法安全地保管接收到的密鑰。

4.2.非對稱密鑰加密(公開密鑰加密) - Public-key cryptography

Client向Server發送請求前的通知;

Server收到前置招呼後,向Client提供一個帶有簽名,有公鑰,並且只有自己有私鑰的請求容器;

Client收到容器後用公鑰打開,然後往容器內寫入請求字段,再次發送給Server;

Hacker攔截到消息,但是沒有私鑰,無法破解信息;

Server收到信息,用自己私鑰開開心心的閱讀解析Client發來的請求;

5.Https的工作流程

一文詳細解讀https

可以看到工作流程,基本分為三個階段:

認證服務器。瀏覽器內置一個受信任的CA機構列表,並保存了這些CA機構的證書。第一階段服務器會提供經CA機構認證頒發的服務器證書,如果認證該服務器證書的CA機構,存在於瀏覽器的受信任CA機構列表中,並且服務器證書中的信息與當前正在訪問的網站(域名等)一致,那麼瀏覽器就認為服務端是可信的,並從服務器證書中取得服務器公鑰,用於後續流程。否則,瀏覽器將提示用戶,根據用戶的選擇,決定是否繼續。當然,我們可以管理這個受信任CA機構列表,添加我們想要信任的CA機構,或者移除我們不信任的CA機構。

協商會話密鑰。客戶端在認證完服務器,獲得服務器的公鑰之後,利用該公鑰與服務器進行加密通信,協商出兩個會話密鑰,分別是用於加密客戶端往服務端發送數據的客戶端會話密鑰,用於加密服務端往客戶端發送數據的服務端會話密鑰。在已有服務器公鑰,可以加密通訊的前提下,還要協商兩個對稱密鑰的原因,是因為非對稱加密相對複雜度更高,在數據傳輸過程中,使用對稱加密,可以節省計算資源。另外,會話密鑰是隨機生成,每次協商都會有不一樣的結果,所以安全性也比較高。

加密通訊。此時客戶端服務器雙方都有了本次通訊的會話密鑰,之後傳輸的所有Http數據,都通過會話密鑰加密。這樣網路上的其它用戶,將很難竊取和篡改客戶端和服務端之間傳輸的數據,從而保證了數據的私密性和完整性。

6.常見加密算法

6.1.對稱加密算法

常用的算法包括:

DES(Data Encryption Standard):數據加密標準,速度較快,適用於加密大量數據的場合。

3DES(Triple DES):是基於DES,對一塊數據用三個不同的密鑰進行三次加密,強度更高。

AES(Advanced Encryption Standard):高級加密標準,是下一代的加密算法標準,速度快,安全級別高;

1、加密方和解密方使用同一個密鑰。

2、加密解密的速度比較快,適合數據比較長時的使用。

3、密鑰傳輸的過程不安全,且容易被破解,密鑰管理也比較麻煩。

4、加密算法:DES(Data Encryption Standard)、3DES、AES(Advanced Encryption Standard,支持128、192、256、512位密鑰的加密)、Blowfish。

5、加密工具:openssl、gpg(pgp工具)

6.2.非對稱加密算法

RSA:由 RSA 公司發明,是一個支持變長密鑰的公共密鑰算法,需要加密的文件塊的長度也是可變的;

DSA(Digital Signature Algorithm):數字簽名算法,是一種標準的 DSS(數字簽名標準);

ECC(Elliptic Curves Cryptography):橢圓曲線密碼編碼學。

ECC和RSA相比,在許多方面都有對絕對的優勢,主要體現在以下方面:

抗攻擊性強。相同的密鑰長度,其抗攻擊性要強很多倍。

計算量小,處理速度快。ECC總的速度比RSA、DSA要快得多。

存儲空間佔用小。ECC的密鑰尺寸和系統參數與RSA、DSA相比要小得多,意味著它所佔的存貯空間要小得多。這對於加密算法在IC卡上的應用具有特別重要的意義。

帶寬要求低。當對長消息進行加解密時,三類密碼系統有相同的帶寬要求,但應用於短消息時ECC帶寬要求卻低得多。帶寬要求低使ECC在無線網絡領域具有廣泛的應用前景。

1、每個用戶擁用一對密鑰加密:公鑰和私鑰。

2、公鑰加密,私鑰解密;私鑰加密,公鑰解密。

3、公鑰傳輸的過程不安全,易被竊取和替換。

4、由於公鑰使用的密鑰長度非常長,所以公鑰加密速度非常慢,一般不使用其去加密。

5、某一個用戶用其私鑰加密,其他用戶用其公鑰解密,實現數字簽名的作用。

6、公鑰加密的另一個作用是實現密鑰交換。

7、加密和簽名算法:RSA、ELGamal。

8、公鑰簽名算法:DSA。

9、加密工具:gpg、openssl

由於非對稱加密算法的運行速度比對稱加密算法的速度慢很多,當我們需要加密大量的數據時,建議採用對稱加密算法,提高加解密速度。

對稱加密算法不能實現簽名,因此簽名只能非對稱算法。

由於對稱加密算法的密鑰管理是一個複雜的過程,密鑰的管理直接決定著他的安全性,因此當數據量很小時,我們可以考慮採用非對稱加密算法。

在實際的操作過程中,我們通常採用的方式是:採用非對稱加密算法管理對稱算法的密鑰,然後用對稱加密算法加密數據,這樣我們就集成了兩類加密算法的優點,既實現了加密速度快的優點,又實現了安全方便管理密鑰的優點。

6.3.單向加密(散列算法)

散列是信息的提煉,通常其長度要比信息小得多,且為一個固定長度。加密性強的散列一定是不可逆的,這就意味著通過散列結果,無法推出任何部分的原始信息。任何輸入信息的變化,哪怕僅一位,都將導致散列結果的明顯變化,這稱之為雪崩效應。散列還應該是防衝突的,即找不出具有相同散列結果的兩條信息。具有這些特性的散列結果就可以用於驗證信息是否被修改。

單向散列函數一般用於產生消息摘要,密鑰加密等,常見的有:

1、MD5(Message Digest Algorithm 5):是RSA數據安全公司開發的一種單向散列算法,非可逆,相同的明文產生相同的密文。

2、SHA(Secure Hash Algorithm):可以對任意長度的數據運算生成一個160位的數值;

SHA-1與MD5的比較

因為二者均由MD4導出,SHA-1和MD5彼此很相似。相應的,他們的強度和其他特性也是相似,但還有以下幾點不同:

1、對強行供給的安全性:最顯著和最重要的區別是SHA-1摘要比MD5摘要長32 位。使用強行技術,產生任何一個報文使其摘要等於給定報摘要的難度對MD5是2128數量級的操作,而對SHA-1則是2160數量級的操作。這樣,SHA-1對強行攻擊有更大的強度。

2、對密碼分析的安全性:由於MD5的設計,易受密碼分析的攻擊,SHA-1顯得不易受這樣的攻擊。

3、速度:在相同的硬件上,SHA-1的運行速度比MD5慢。

1、特徵:雪崩效應、定長輸出和不可逆。

2、作用是:確保數據的完整性。

3、加密算法:md5(標準密鑰長度128位)、sha1(標準密鑰長度160位)、md4、CRC-32

4、加密工具:md5sum、sha1sum、openssl dgst。

5、計算某個文件的hash值,例如:md5sum/shalsum FileName,openssl dgst –md5/-sha1

一文詳細解讀https


分享到:


相關文章: