多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > https是如何工作的?

https是如何工作的?

來源:程序員人生   發布時間:2016-11-28 13:44:50 閱讀次數:2841次

最近在看到這么1篇講授Https原理的文章,語言精煉,通俗易懂,特地將其翻譯下,原文在此how does https work

加密算法簡介

正文開始之前,我先來解釋簡單的解釋下對稱加密和非對稱加密.

對稱加密采取對稱密碼編碼技術,也就是編碼和解碼采取相同描寫字符,即加密和解密使用相同的密鑰,實現這類加密技術的算法稱對稱加密算法。對稱加密使用簡單,密鑰較短,加密和解密進程較快,耗時短,常見的對稱加密算法有DES,3DES,lDEA,AES,RC4等。

非對稱加密與對稱加密不同,其加密算法需要兩個密鑰:公然密鑰(publickey)和私有密鑰(private),二者是1對的。如果用公鑰加密,只能用私鑰才能解密。非對稱加密保密性好,但加密和解密花費的時間較長,不合適對大文件加密而只合適對少許的數據加密。常見的非對稱加密算法有RSA,ECC,DSA(數字簽名)等。

Hash算法是1種單向算法,通過Hash算法可以對目標數據生成1段特定長度、唯1的hash值,但是不能通過這個hash值重新計算出原始的數據,因此也稱之為摘要算法,常常被用在不需要數據還原的密碼加密和數據完全性校驗上,經常使用的算法有MD2,MD4,MD5,SHA等。

現在我們對對稱加密,非對稱加密及Hash算法做了簡單的說明以后,就能夠開始了解https的工作原理了。


https是如何工作的?

這篇文章是我在我團隊中分享的。很多人不理解https的好處,不理解https的原理,因此我將這篇文章也分享給大家。

加密(Cipher)

在java 1.2時,引入JCR(java 加密擴大)系統,用來負責java中的密鑰和證書。

我們都知道,如果我們想要加密或解密1些信息,我們必須要有1個密鑰。這好比你想要開門或鎖門,必須要有鑰匙1樣。

在java中,密鑰由KeyGenerator或KeyPairGenerator生成。前者用來生成對稱密鑰,后者用來生成非對稱密鑰。

  • 對稱密鑰:使用同1個密鑰進行加密和解密
  • 非對稱密鑰:使用不同的密鑰進行加密和解密,通常被稱為公鑰(public key)和私鑰(private key)。 公鑰可以廣泛傳播,但是私鑰只有其所有者知道。在1個安全的非對稱密鑰加密方案中,當信息用公鑰加密后,只有用私鑰才能解密。所以,即便1個黑客拿到你公鑰加密過后的信息,也沒法解密它,由于它沒有配對的私鑰。這樣,傳輸的消息就是安全的。

證書(Certificate)

在現實中,如果你進入到鉆石專賣店中想要買1顆鉆石,你怎樣知道鉆石是真的?作為1個普通人來講,我們沒有鉆石方面的知識,但是如果這鉆石有個由美國政府頒發的許可證,我們就會相信它是真的。(去過珠寶店的同學都知道,每件珠寶都有自己的鑒定書)

證書的作用也是如此。在計算機世界中,它多是包括1些密鑰,是另外一個證書(姑且稱之為證書B好了)。這些密鑰是我們需要的,而證書B是1個許可證,用來證明這個證書是可信賴的。

做個簡短的解釋,每一個鉆石都有自己的“身份證書”,但是如何說明這個身份證書是合法的,而不是自己捏造的?因此,我們需要1個權威的機構來證明這個鉆石的身份證書是合法的,如果這個鉆石的身份是合法的,該權威機構就會為其頒發1個“許可證”,這個許可證就相當于上面我們說到的證書B。可以看到,證書B的目的就是證明這個身份證書是這個鉆石的身份證書,即證明某某東西是某某東西的東西

問題來了:我們怎樣肯定證書B是可信賴的呢?這個問題非常棒。

Android已把將近150個CA根證書(數字證書認證機構認證過的證書)內置在我們手機中。這150多個證書被全球信賴,他們就像是美國的大法官。

這150多個證書類似我們剛才說的證書B,分別用來證明某某東西是某某東西的東西

B證書中里有另外1個證書(姑且稱之為C證書),我們通過檢查C來肯定C是不是是可信任的。。。通過這個證書鏈,如果我們找到的最后1個或根證書 和手機中預置的150個證書中某個相同,我們就能夠這個證書原件(此處就是B)

這里我對證書鏈進行說明。證書之間的信任關系是可以嵌套的。比如,CA信任D,D信任C,C信任B
,B信任A。。。這就是證書鏈。只要我們信任證書鏈上的頭1個證書,那末后續的證書都是可以信任的。這里也就是如果我信任了證書CA,那末后面的D,C,B,A都是可以信任的。這里來打個比方,架設軍隊中的每一個兵士都只認識自己的直接上級,那末這時候候總司令怎樣確認某個兵士是自己部隊 當中的呢?總司令(CA)會問的直接下級(D),而司令的直接下級又會找自己的直接下級,順次往下找…如果最后能找到這個兵士直屬上級,那就說明這個兵士是該部隊當中的。

附:證書有多種格式

  • x.509
    x.509證書通經常使用于包括1個公鑰

  • PKCS12
    PKCS12證書通經常使用來包括1個私鑰。因此,PKCS12需要密碼才能打開。


Https

現在我們來了解https部份。Https(http over ssl)包括上面提到的加密和證書兩部份,被設計用來在Internet安全進行通訊。

如何安全的通訊?

如何安全通訊呢?對稱加密是我們最早想到的方案:將數據進行加密,然后將加密過的數據和密鑰同時傳到服務器服務器使用這個密鑰解密加密過后的數據。
這里寫圖片描述

現在,我們來看看這類可能的場景:黑客截獲了該通訊,這意味著黑客具有了密鑰和密文。1旦黑客有了密鑰,那末解密密文就是很簡單的事情了,我們的數據就這樣泄漏了。

如何使用非對稱加密?

上面的解決方案非常不安全。我們繼續往下看。使用非對稱加密怎樣樣?

這個想法非常棒:服務端發送給你公鑰,你使用這個公鑰加密數據。由于服務端是唯1具有私鑰的,
這意味著只有服務端能夠解密密文。即便黑客截獲了該通訊,但由于沒有私鑰也就沒法解密密文。

但是,非對稱加密比對稱加密更加耗時。為了用戶體驗,不建議使用非對稱加密這類方式來加密/解密大量的數據

終究方案

前兩種方案都沒法解決我們安全通訊,我們怎樣結合上面的兩種方案呢?來看看終究方案:
這里寫圖片描述

上面這張圖片已清楚的展現了HTTPS工作的流程。

1.[Server]生成1對密鑰:公鑰和私鑰,我們稱之為“KeyPub”,“KeyPri”
2.[Server]服務端將公鑰(KeyPub)發送到客戶端
3.[Client]生成1個對稱密鑰(姑且稱之為key2),然后用key2加密數據。
4.[Client]使用公鑰(KeyPub)加密key2.這時候,key2是安全的,由于只有服務度有私鑰KeyPri
5.[Client]發送用key2加密后的信息及用KeyPub加密過的key2到服務端
6.[Server]服務端使用KeyPri解密得到加密過的key2,得到真實的key2
7.[Server]使用key2解密消息正文。這樣,數據就被安全的傳輸到了服務端。

結論

由于對稱加密比非對稱加密快,https決定使用對稱加密來加密數據,使用非對稱加密對稱加密生成的密鑰,以確保安全。

這篇文章最后并沒有很好的說明證書的作用,因此如果你之前沒了解過,到此可能產生1些困惑,后面我會再單獨寫1篇文章來講明下。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 淫片免费 | 日韩在线一区高清在线 | 手机看片精品高清国产日韩 | 免费一区二区三区四区 | 国产一区免费在线观看 | 国产免费福利体检区久久 | 免费一级淫片aa | 欧美日韩精品乱国产 | 亚洲无线一二三四区 | aaaaaa级特色特黄的毛片 | 国产成人综合亚洲欧美在 | 中国老头gay高清xxxx | 亚洲日本1区2区3区二区 | 久久爱老牛影视一区二区 | 国产成人精品久久一区二区小说 | 日韩一级在线 | 日本免费不卡视频一区二区三区 | 国产日韩久久 | 7777精品伊人久久久大香线蕉 | 最近中文字幕视频在线资源 | 亚洲国产精品综合福利专区 | 亚洲 在线播放 | 老司机午夜精品 | 日本一道dvd在线中文字幕 | 中文字幕一区二区三区有限公司 | 伊人伊人影院 | 一区二区三区视频免费 | 欧美性bbbbbxxxxx| 久久影视一区 | 欧美视频福利 | 国内交换一区二区三区 | 欧美另类69xxxxx免费 | 中文字幕在线资源 | 国产精品日产三级在线观看 | 亚洲精品99久久久久久欧美版 | 五月天综合网 | 欧美午夜性刺激在线观看免费 | 欧洲妇女成人淫片aaa视频 | 99国产精品农村一级毛片 | 中日韩欧美中文字幕毛片 | 国产69精品久久久久999三级 |