關於HTTPS 原

####關於HTTPS的筆記

竊聽風險(eavesdropping):第三方可以獲知通信內容.

篡改風險(tampering):第三方可以修改通信內容.

冒充風險(pretending):第三方可以冒充他人身份參與通信.


SSL/TLS協議就是爲了解決這三大風險而設計的,那麼SSL/TLS如何解決這三大風險呢?

1.所有信息都是加密傳播,第三方無法竊聽 HTTPS一般使用的加密與HASH算法如下: 非對稱加密算法: RSA,DSA/DSS 對稱加密算法: AES,RC4,3DES HASH算法: MD5,SHA1,SHA256

2.具有校驗機制,一旦被篡改,通信雙方會立刻發現 使用HASH算法進行校驗內容是否被篡改.

3.配備數字證書,防止身份被冒充 如果數字證書是CA認證的,那麼就可以避免身份冒充.(用證書來標識自己的身份) 數字證書是一個文件,保存了加密過的用戶的信息及證書公鑰.

那麼數字證書在HTTPS的什麼時候會用上呢? 這就要提到HTTPS握手了.

Step1:服務端返回的數字證書(此爲用戶證書),客戶端會進行如下驗證:

  1. 遍歷計算機以及瀏覽器中保存的根證書(ROOT CA)和中間證書(Intermediate CA) 若其中某個根證書或中間證書的公鑰可以解開server端的證書,獲得server的公鑰和server域名.否則握手失敗. 整個HTTPS通信的唯一核心保障就是可信的根證書.
  2. 判斷證書中的域名(www.xxx.com)是否和正在訪問的域名相同,否則認證失敗.但是握手加密依然可以繼續. Step2: 客戶端產生一個隨機的對稱密鑰 Step3: 使用證書中服務端的公鑰加密此對稱密鑰 Step4: 將此已經加密過的對稱密鑰發給server.至此client和server都通過可靠的手段擁有對稱密鑰. Step5: 通過對稱密鑰加密Http的通信內容.

握手過程中涉及到兩種證書 https握手時server發給client的證書稱爲用戶證書 client所在計算機中原本保存的是根證書(ROOT CA)和中間證書(Intermediate CA)

CA,證書鏈,根證書 數字證書認證機構(CA) 它的出現就是爲了防止中間人攻擊的. 防止中間人攻擊,說白了就是要確保B收到的A的公鑰(證書)真實有效,這樣數字證書認證機構應運而生. 數字證書認證機構說白了就相當於一個受信任的中間人.CA有一對根密鑰,其公鑰稱爲根證書. A向CA申請一個證書,則CA利用其私鑰加密A的公鑰,其結果就是“服務器A,通過CA驗證的證書”. 而在用戶的操作系統(或者瀏覽器)中,會集成世界範圍內所有被信任的CA的根證書. 這樣,用戶B在收到A發送給他的證書後,需要利用CA的根證書(公鑰)解密後才能得到正確的公鑰, 如此一來,就完成了對A發送過來的信息的驗證,證明了A的正身,不是C僞造的假證書,從而達成了中間人攻擊的防範.

Q:數字證書從何而來 對於根證書(ROOT CA)和中間證書(Intermediate CA) 在用戶的操作系統(或者瀏覽器)中,會集成世界範圍內所有被信任的CA的根證書. 安裝軟件時順帶安裝,如支付寶安全控件等,此時軟件會請求管理員權限. 用戶自己下載安裝,如12306網站.

證書鏈 CA證書分爲兩類:根證書(Root CA)和中間證書(Intermediate CA). 但是根證書的使用是收到嚴格限制的,不可能對於每一類用戶都使用根證書去簽發子數字證書,所以就有了中間證書的概念. 中間證書由根證書或上一級中間證書籤發,它可以再往下級簽發數字證書. 例如我們自己爲某個域名申請了證書TH_CA,那麼對於三級證書鏈,它的簽發過程如下 Root CA 簽發 Intermediate CA,Intermediate CA 簽發 TH_CA, 然後我們就可以用TH_CA去給域名作數字認證了. 簽發關係很像鏈式結構,所以被稱作證書鏈.

驗證的過程可想而知,就是簽發的逆過程,這是通過證書鏈來完成的

瀏覽器會在計算機以及瀏覽器的證書列表中查找此CA是否可信,如果有則認爲TH_CA是可信的: 如果沒有,繼續往上找,直到根證書: 如果根證書是可信的,那麼整條證書鏈就是可信的. 如果根證書不可信,那麼TH_CA將被認作是不可信的,瀏覽器就會發出警告.

對稱加密的加解密密鑰非得是一樣的嗎? wikipedia上這麼說的 https://en.wikipedia.org/wiki/Symmetric-key_algorithm

Symmetric-key algorithms[1] are algorithms for cryptography that use the same cryptographic keys for both encryption of plaintext and decryption of ciphertext. The keys may be identical or there may be a simple transformation to go between the two keys.[2] The keys,in practice,represent a shared secret between two or more parties that can be used to maintain a private information link.[3] This requirement that both parties have access to the secret key is one of the main drawbacks of symmetric key encryption, in comparison to public-key encryption (also known as asymmetric key encryption).

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章