https的基本原理,看完你的程序员女朋友再也不和你提分手了
【http風險】
首先,我們來講一下平時上網的時候,存在的風險。
初步接觸過網絡的同學都知道,網絡上是很不安全的,尤其是各種公共場合的免費WIFI,以及手機上各種免費上網的萬能鑰匙。這些不安全因素會導致什么問題呢:
? ?
當然了,還有一些特殊的情況,比如說你在夜深人靜的夜,訪問某91網站,實際上你那做程序員的女朋友在另外一個房間,正在陪著你看,甚至你順手回了前女友一個消息,就算你及時刪除,卻還是沒躲過那雙程序員的眼睛。
? ?
? ?
很多同學已經比較了解http以及tcp/ip了,對于什么三次握手四次揮手也是熟的不能再熟了。http屬于應用層協議,位于五層網絡參考模型的最上層,小劉的數據包通過應用層,傳輸層,網絡層,鏈路層封裝之后,再經過物理層傳輸到蘭蘭的主機,在這幾層中,數據都沒有經過封裝,所以,你的數據特別容易被中間的女朋友倩倩獲取。
? ?
我們今天就來說一說,如何避免你的程序員女朋友盜取你的信息,趁機和你提分手。
? ?
【對稱加密】
信息如果想要不被盜取,就要經過加密,現在的加密算法大致可分為兩類,一類是對稱加密,一類是非對稱加密。
我們先來說說對稱加密。
? ?
對稱加密的基本含義,就是算法的加密和解密全都是使用同一個密鑰。
在一定條件下,對稱加密可以解決一部分網絡安全問題。因為你和蘭蘭互相發送的消息,只有你和蘭蘭知道加密解密密鑰,倩倩是不知道的,所以沒有辦法對你們之間的消息包進行解密,你們可以相互暢所欲言。
? ?
但是這樣是有前提條件的,就是倩倩不知道你們的密鑰。
如果你和蘭蘭在約定密鑰的時候數據包就已經被倩倩獲取了,那你們的行為無異于脫褲子放屁,沒有任何意義。
所以,對稱加密算法存在的最嚴重的一個問題就是,密鑰協商。
? ?
【非對稱加密】
非對稱加密算法需要兩個密鑰,一個叫公鑰,一個叫私鑰。
公鑰加密的內容需要用私鑰解密,私鑰加密的內容需要用公鑰解密,兩個密鑰成對出現,缺一不可。
私鑰由服務器(蘭蘭)自己保存,公鑰發送給客戶端(小劉)。
? ?
小劉拿到公鑰就可以把自己的消息加密并發給蘭蘭了,這個時候就算倩倩截獲了,也無法獲取消息包的具體內容,保證了小劉發給蘭蘭的消息的安全性。
非對稱加密和對稱加密一樣,都存在密鑰傳輸的問題,但是至少有一點可以保證,就是客戶端發往服務器端的消息不會被泄露。
非對稱加密還有一個問題,就是加密解密時的效率比較低,嚴重影響小劉和蘭蘭談情說愛。
? ?
所以我們又有一種辦法,就是第一次通信的時候使用非對稱加密,由客戶端(小劉)產生一個對稱加密的密鑰,用公鑰加密后發給服務器端(蘭蘭),服務器端用私鑰解密之后,就可以使用對稱加密發送消息了。
? ?
這個辦法看起來天衣無縫,既解決了密鑰協商的問題,又解決了非對稱加密效率低的問題。
但是真的就能無所顧及了嗎?并不能,我們看看倩倩的如下騷操作:
倩倩偽造了蘭蘭,也就是說,黑客利用一臺主機,偽造了真實的服務器,使用自己的公鑰和私鑰去和客戶端(小劉)進行消息交互,這樣不光可以獲取消息的內容,還可以偽造消息,從而達到某些不可告人的目的。
? ?
比如獲取你的銀行卡密碼,直接轉走你的所有資金,讓你人財兩空,再比如獲取你的私人信息,讓你身敗名裂。這些都是非常嚴重的后果。
? ?
【數字證書】
那小劉和蘭蘭就真的沒有更加安全的消息交互的辦法了嗎?
答案當然是,有!
? ?
現實生活中,我們也會有身份信息的證明,比如你說你是學生,怎么證明?我有學生證;你說你是警察,怎么證明?我有警官證。
? ?
網上也有這種證書,但是網上的證書不是實體的,所以叫數字證書。
? ?
客戶端第一次與服務器進行通信的時候,服務器需要拿出自己的證書,表明自己的身份以及公鑰,類似:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ?
那么這個數字證書是怎么產生的呢?總不能自己隨便寫一個吧。
我們思考一下,我們上面說的學生證,警官證為什么能夠被大家所認同呢,是因為學生證是教育部頒發的,警官證是公安部頒發的,上面有唯一的防偽編碼,我們上相關部門的網站就可以查詢到了,所以我們認同這些證書是因為我們認同教育部和公安部。
數字證書也是一樣,有唯一的防偽編碼,以及頒發的權威機構。
? ?
【CA機構】
CA機構就像之前說的教育部一樣,是權威的證書頒發機構,負責頒發證書以及驗證證書的合法性。
如果服務器需要做一個有身份的服務器,就需要向CA機構提交申請 <價格昂貴> ,需要提供包括域名,公司名稱,公鑰等一系列信息,CA機構審批后就可以給服務器頒發證書了。
? ?
客戶端拿到證書以后,需要做兩件事:
1. 驗證證書編號是否可以在CA機構查到
2.核對證書上的基本信息 <比如域名> 是否與當前一致,才可以使用公鑰和服務器協商對稱密鑰進行消息發送。
? ?
證書頒發之后,如何保證在傳輸的過程中不被篡改呢? 萬一倩倩獲取到證書之后,把公鑰改成了自己的,豈不是白費功夫?
? ?
【數字簽名】
依舊拿警官證舉例子,家里有警察的朋友們應該都知道,警官證上面的內容是不允許涂改的,如果需要修改,必須銷毀或者存檔舊的警官證,頒發新的警官證并蓋章才有效。
? ?
這個蓋章的操作,在網絡證書上面叫做數字簽名。
服務器向CA提出證書申請,CA在頒發證書的時候,會連同數字證書以及根據證書內容產生的摘要一并發給服務器,<摘要相當于MD5,一段絕對不會重復的無規律碼>。
這個摘要是通過CA的私鑰進行加密的,無法進行篡改。
? ?
過程如下:
? ?
哪些CA機構對于客戶端來說是權威或者說是認可的呢?我們打開IE瀏覽器能看到客戶端內置的CA機構的信息,包含了CA的公鑰、簽名算法、有效期等等。
? ?
在這之后,服務器在與客戶端通信的時候,就可以將數字證書以及數字簽名出示給客戶端了。
客戶端拿到數字證書與簽名,會進行如下過程:
如果摘要與服務器發過來的一致,則表明證書沒有被篡改。
? ?
注意一點:
如果是偽造的數字簽名,則在客戶端無法做解密。
因為CA的私鑰是自己負責保管的,別人無法獲取得到,所以無法對證書做私鑰加密,自然別人也無法使用公鑰進行解密。
? ?
【HTTPS】
好像一直沒有提到https。
其實https很簡單,就是在http的基礎上添加了一個叫做SSL的協議,SSL(Secure Sockets Layer)叫做"安全套接層",后來標準化之后叫做TLS。
所以,HTTPS協議就是通過以上的手段,達到網頁防偽造,防篡改的成果。
? ?
?
?
這樣,小劉就可以名正言順得和蘭蘭一起"月上柳梢頭,人約黃昏后",而不被倩倩發覺了。
? ?
?
? ?
{寫在最后,本文參考了大量網上對于https的理解,大家讀完之后還有不懂的歡迎一起討論}
? ?
? ?
? ?
? ?
? ?
? ?
??
轉載于:https://www.cnblogs.com/liuxia912/p/10980764.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的https的基本原理,看完你的程序员女朋友再也不和你提分手了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 非空即真、列表生成式、三元
- 下一篇: CentOS7下zip解压和unzip压