大家早上好,有段時間沒更新文章了,
其實疫情期間在家呆了一個多月的時間不能出門,時間倒是挺多的,我也利用這段時間寫了幾篇新文章,但由于新寫的這些文章大都是配合著新書中的內容的,受疫情的影響我寫的新書遲遲不能出版,導致這些文章也無法發布,等得我好是焦急,希望疫情早日結束,大家都能快點恢復到正常的生活當中,
那么今天先發布一篇和Android無關的技術文章,
https這項技術現在已經應用得非常廣泛了,隨著蘋果、Google等各大互聯網領頭企業紛紛在自己的作業系統、瀏覽器等主流產品中強制要求使用https,http的淘汰也正式進入了倒計時,
其實https對于客戶端開發人員來說并沒有什么需要特別注意的地方,因為代碼和寫http請求時并沒有什么兩樣,但也正是因為這個原因,導致許多客戶端開發人員對https并不了解,只知道它是安全的加密網路傳輸,對其具體的作業原理卻一無所知,
那么客戶端開發人員到底需不需要了解https呢?我認為還是有一定必要的,掌握了https的作業原理可以幫助你更加有效地理解并解決一些作業當中遇到的問題,另外,有很多公司也喜歡在面試的時候問一些https相關的問題,如果你完全不了解的話,在這里就很容易會被刷掉,
https://plsshjz.edublogs.org
我自己當初在學習https的時候查閱了很多網上的資料,但是絕大多數的文章寫得都不是那么易懂,讓不少人對https產生了一些畏懼,我認為要想理解https的作業原理,并不一定非得要知道它方方面面的細節(網上許多文章就是因為寫得太細,導致很難懂),其實只要掌握它的整體作業流程,以及搞清楚為什么它能夠保證網路通信的安全就可以了,因此,今天我就給大家帶來一篇最好懂的https講解,
在正式開始講解https之前我們還得先搞清楚兩個概念:什么是對稱加密,以及什么是非對稱加密?這兩個概念都是屬于加密學中的基礎知識,其實非常好懂,
對稱加密比較簡單,就是客戶端和服務器共用同一個密鑰,該密鑰可以用于加密一段內容,同時也可以用于解密這段內容,對稱加密的優點是加解密效率高,但是在安全性方面可能存在一些問題,因為密鑰存放在客戶端有被竊取的風險,對稱加密的代表演算法有:AES、DES等,
http://plsshjz.wikidot.com
而非對稱加密則要復雜一點,它將密鑰分成了兩種:公鑰和私鑰,公鑰通常存放在客戶端,私鑰通常存放在服務器,使用公鑰加密的資料只有用私鑰才能解密,反過來使用私鑰加密的資料也只有用公鑰才能解密,非對稱加密的優點是安全性更高,因為客戶端發送給服務器的加密資訊只有用服務器的私鑰才能解密,因此不用擔心被別人破解,但缺點是加解密的效率相比于對稱加密要差很多,非對稱加密的代表演算法有:RSA、ElGamal等,
掌握了這兩個概念之后,我們就可以開始學習https了,這里先提前拋出一個問題,同時也是面試時可能經常會問到的一個問題:https為了保證資料傳輸的安全,使用的是對稱加密還是非對稱加密呢?
學完本篇文章之后你就能知道答案了,
首先我們來看一下,傳統的http方式在網路傳輸時存在哪些問題,
由于我們在傳輸資料時資訊都是明文的,因此很容易出現資料被監聽和竊取的情況,
另外,傳輸的資料還有可能被一些別有用心的人篡改,導致瀏覽器與網站收發的內容不一致,示意圖如下:
也就是說,使用http傳輸資料至少存在著資料被監聽以及資料被篡改這兩大風險,因此http是一種不安全的傳輸協議,
那么解決方案大家肯定都知道是使用https,但是我們先嘗試著自己思考一下該如何保證http傳輸的安全性,進而也就能一步步地理解https的作業原理了,
既然資料以明文的形式在網路上傳輸是不安全的,那么我們顯然要對資料進行加密才行,剛才提到了,加密方式主要有兩種,對稱加密和非對稱加密,對稱加密的優點是加解密效率高,而我們在網路上傳輸資料是非常講究效率的,因此這里很明顯應該使用對稱加密,
由于我們在網路上傳輸的資料都是密文,所以不怕被監聽者獲取到,因為他們無法得知原文是什么,而瀏覽器收到密文之后,只需要使用和網站相同的密鑰來對資料進行解密就可以了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/722.html
標籤:其他
上一篇:自訓練和半監督學習介紹
