https基本原理解析

文章簡單回答https數據傳輸原理。

非對稱加解密技術

加密就是一鍾映射與變換。

密文 = f(明文,key1)
明文 = g(密文,key2)

如果key1==key2,則叫對稱加密。如DES
如果key1!=key2,則叫非對稱加密。如RSA

因爲是非對稱的,所以可以一個key給別人,稱爲公鑰,一個key自留着,稱爲私鑰。

當然,數學原理和算法上保證了兩點。

  • 公鑰加密的數據,只有私鑰能正確解出。
  • 私鑰加密的數據,只有公鑰能正解解出。

這兩點性質是後面的基礎。

數字摘要

數字摘要 = hash(數據)

這個過程也有三點性質

  • 數據有任何微小的改變,數字摘要就會發生變化。
  • 同一份相同的數據,生成的數字摘要是相同的。
  • 可由數據變換成數字摘要,但無法由數字摘要推導或反解出數據。

這個性質可以保證數據完整和不被篡改。
比如,發一份數據的同時,後面再跟一串這個數據的數字摘要。
收到數據的人,用同樣的hash函數對數據處理,得到摘要。
與後面的摘要進行對比。若相同,則表明數據是完整的未被改動過。
至於數據是不是真實的,就是後面的事了。

常用的hash函數有:MD5sha1

數字簽名

就是把上面兩項組合下。
發送者:

附加數據 =f(hash(數據),私鑰)

[數據+附加數據]

[數據+附加數據]傳給接收者後

接收者:

hash(數據) ?= g(附加數據,公鑰)

如果相等,則可以認定這個數據是私鑰擁有者發的完整天數據。

數字簽名有兩種功效:

  • 確定消息確實是由發送方簽名併發出來的,因爲別人假冒不了發送方的簽名。
  • 數字簽名能確定消息的完整性,因爲數字摘要的存在。

數字證書

數字證書的存在,是爲了解決上面過程的一個漏洞。

無法驗證公鑰的真實性。如果在傳輸過程中被換掉了呢。
數字簽名和數字證書這裏面有比較深動的圖解。

爲了驗證公鑰的真實性。
需要一個權威的值得信賴的第三方機構(Certificate Authority, CA)。

把公鑰和公鑰擁有者的信息

數字證書 = [[公鑰+公鑰擁有者的信息]+f(hash([公鑰+公鑰擁有者的信息]),CA私鑰)]

這樣通訊的時候,直接給這個數字證書就可以了。
先通過CA的公鑰,把個人的公鑰解確認。
再用個人公鑰去進行上面的操作。

相當於,如果X信任Y,Y信任Z,X就能信任Z了。

這是一個證書鏈的原型吧。

SSL/TLS

上面的過程,可以確定發出者的身份,數據的真實性,完整性。但在傳輸過程中,別人還是可以查看到你發的什麼信息呢。

SSL就是基於上面說的原理,定的一個安全傳輸協議。
詳細的過程可以查看Https(SSL/TLS)原理詳解

總得來說,就是先用RSA,確認身份,再商量出一個密鑰,用DES對數據加密再輸出。

https

基本就是就SSL+HTTP。
有空再來補充。

參考

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