HTTPS秦躯,在我的概念中就是更安全,需要服務(wù)器配置證書裆装,但是到底什么是HTTPS踱承,為什么會(huì)更安全倡缠,整套流程又是如何實(shí)現(xiàn)的,在腦子里沒有具體的概念茎活。下文將為大家介紹HTTPS整套加密機(jī)制是如何實(shí)現(xiàn)的昙沦,讓更多之前不清楚HTTPS加密到底是什么的同學(xué)有一個(gè)入門的理解。
HTTP是什么樣的载荔?
HTTP是屬于應(yīng)用層的協(xié)議盾饮,它是基于TCP/IP的,所以它只是規(guī)定一些要傳輸?shù)膬?nèi)容懒熙,以及頭部信息丐谋,然后通過TCP協(xié)議進(jìn)行傳輸,依靠IP協(xié)議進(jìn)行尋址煌珊,通過一幅最簡(jiǎn)單的圖來描述:
客戶端發(fā)出請(qǐng)求号俐,服務(wù)端進(jìn)行響應(yīng),就是這么簡(jiǎn)單定庵。在整個(gè)過程中吏饿,沒有任何加密的東西,所以它是不安全的蔬浙,中間人可以進(jìn)行攔截猪落,獲取傳輸和響應(yīng)的數(shù)據(jù),造成數(shù)據(jù)泄露畴博。
加個(gè)密呢笨忌?
因?yàn)樯蠄D中數(shù)據(jù)是明文傳輸?shù)模覀兡芟氲阶詈?jiǎn)單的提高安全性的方法就是在傳輸前對(duì)數(shù)據(jù)進(jìn)行加密俱病,如下圖:?
這種加密方式叫做:對(duì)稱加密官疲。
加密和解密用同一個(gè)秘鑰的加密方式叫做對(duì)稱加密。
好了亮隙,我們對(duì)數(shù)據(jù)進(jìn)行加密了途凫,問題解決了嗎?
多個(gè)客戶端怎么辦溢吻?
這是一個(gè)客戶端维费,但是在WWW上,是成千上萬的客戶端促王,情況會(huì)怎樣呢犀盟?
為所有的客戶端都應(yīng)用同一個(gè)秘鑰A,這種方式很顯然是不合理的蝇狼,破解了一個(gè)用戶阅畴,所有的用戶信息都會(huì)被盜取。
想一想题翰,是不是還有別的辦法呢恶阴?
相信大家都可以想到诈胜,如果對(duì)每一個(gè)客戶端都用不同的秘鑰進(jìn)行傳輸是不是就解決這個(gè)問題了:
對(duì)稱加密秘鑰如何傳輸?
我們對(duì)每個(gè)客戶端應(yīng)用不同的對(duì)稱加密秘鑰冯事,那么這個(gè)秘鑰客戶端或者服務(wù)端是如何知道的呢焦匈,只能是在一端生成一個(gè)秘鑰,然后通過HTTP傳輸給另一端:
那么這個(gè)傳輸秘鑰的過程缓熟,又如何保證加密?如果被中間人攔截摔笤,秘鑰也會(huì)被獲取够滑。也許你會(huì)說,對(duì)秘鑰再進(jìn)行加密吕世,那又如何保證對(duì)秘鑰加密的過程彰触,是加密的呢?
好像我們走入了?while(1)命辖,出不來了况毅。
非對(duì)稱加密
在對(duì)稱加密的路上走不通了,我們換個(gè)思路尔艇,還有一種加密方式叫非對(duì)稱加密尔许,比如RSA。
非對(duì)稱加密會(huì)有一對(duì)秘鑰:公鑰和私鑰终娃。
公鑰加密的內(nèi)容味廊,只有私鑰可以解開,私鑰加密的內(nèi)容棠耕,所有的公鑰都可以解開(當(dāng)然是指和秘鑰是一對(duì)的公鑰)余佛。
私鑰只保存在服務(wù)器端,公鑰可以發(fā)送給所有的客戶端昧辽。
在傳輸公鑰的過程中衙熔,肯定也會(huì)有被中間人獲取的風(fēng)險(xiǎn),但在目前的情況下搅荞,至少可以保證客戶端通過公鑰加密的內(nèi)容,中間人是無法破解的框咙,因?yàn)樗借€只保存在服務(wù)器端咕痛,只有私鑰可以破解公鑰加密的內(nèi)容。
現(xiàn)在我們還存在一個(gè)問題喇嘱,如果公鑰被中間人拿到篡改呢:
MITM:Man-in-the-MiddleAttack
客戶端拿到的公鑰是假的茉贡,如何解決這個(gè)問題?
第三方認(rèn)證
公鑰被掉包者铜,是因?yàn)榭蛻舳藷o法分辨?zhèn)骰毓€的到底是中間人腔丧,還是服務(wù)器放椰,這也是密碼學(xué)中的身份驗(yàn)證問題。
在HTTPS中愉粤,使用?證書 + 數(shù)字簽名?來解決這個(gè)問題砾医。
這里假設(shè)加密方式是MD5,將網(wǎng)站的信息加密后通過第三方機(jī)構(gòu)的私鑰再次進(jìn)行加密衣厘,生成數(shù)字簽名如蚜。
數(shù)字證書 = 網(wǎng)站信息 + 數(shù)字簽名?
假如中間人攔截后把服務(wù)器的公鑰替換為自己的公鑰,因?yàn)閿?shù)字簽名的存在影暴,會(huì)導(dǎo)致客戶端驗(yàn)證簽名不匹配错邦,這樣就防止了中間人替換公鑰的問題。
瀏覽器安裝后會(huì)內(nèi)置一些權(quán)威第三方認(rèn)證機(jī)構(gòu)的公鑰型宙,比如VeriSign撬呢、Symantec以及GlobalSign等等,驗(yàn)證簽名的時(shí)候直接就從本地拿到相應(yīng)第三方機(jī)構(gòu)的公鑰妆兑,對(duì)私鑰加密后的數(shù)字簽名進(jìn)行解密得到真正的簽名魂拦,然后客戶端利用簽名生成規(guī)則進(jìn)行簽名生成,看兩個(gè)簽名是否匹配箭跳,如果匹配認(rèn)證通過晨另,不匹配則獲取證書失敗。
為什么要有簽名谱姓?
大家可以想一下借尿,為什么要有數(shù)字簽名這個(gè)東西呢?
第三方認(rèn)證機(jī)構(gòu)是一個(gè)開放的平臺(tái)屉来,我們可以去申請(qǐng)路翻,中間人也可以去申請(qǐng)呀:
如果沒有簽名,只對(duì)網(wǎng)站信息進(jìn)行第三方機(jī)構(gòu)私鑰加密的話茄靠,會(huì)存在下面的問題:
因?yàn)闆]有認(rèn)證茂契,所以中間人也向第三方認(rèn)證機(jī)構(gòu)進(jìn)行申請(qǐng),然后攔截后把所有的信息都替換成自己的慨绳,客戶端仍然可以解密掉冶,并且無法判斷這是服務(wù)器的還是中間人的,最后造成數(shù)據(jù)泄露脐雪。?
對(duì)稱加密
在安全的拿到服務(wù)器的公鑰之后厌小,客戶端會(huì)隨機(jī)生成一個(gè)對(duì)稱秘鑰,使用服務(wù)器公鑰加密战秋,傳輸給服務(wù)端璧亚,此后,相關(guān)的?Application Data?就通過這個(gè)隨機(jī)生成的對(duì)稱秘鑰進(jìn)行加密/解密脂信,服務(wù)器也通過該對(duì)稱秘鑰進(jìn)行解密/加密:
整體流程圖
HTTPS = HTTP + TLS/SSL
HTTPS中具體的內(nèi)容還有很多癣蟋,可以通過下圖做一個(gè)參考:
總結(jié)
HTTPS就是使用SSL/TLS協(xié)議進(jìn)行加密傳輸透硝,讓客戶端拿到服務(wù)器的公鑰,然后客戶端隨機(jī)生成一個(gè)對(duì)稱加密的秘鑰疯搅,使用公鑰加密濒生,傳輸給服務(wù)端,后續(xù)的所有信息都通過該對(duì)稱秘鑰進(jìn)行加密解密秉撇,完成整個(gè)HTTPS的流程甜攀。
https加密相關(guān)文章
HTTPS加密已經(jīng)是公認(rèn)的有效解決數(shù)據(jù)泄露、流量劫持琐馆、釣魚網(wǎng)站的基礎(chǔ)安全措施规阀。電子前沿基金會(huì)(EFF)的報(bào)告顯示,50%的網(wǎng)絡(luò)流量已啟用HTTPS加密瘦麸。HTTPS加密已成互聯(lián)網(wǎng)大趨勢(shì)谁撼,百度、淘寶滋饲、天貓厉碟、京東、亞馬遜中國(guó)等國(guó)內(nèi)網(wǎng)站流量之王屠缭,都陸續(xù)啟用了全站HTTPS加密箍鼓。
網(wǎng)站如何實(shí)現(xiàn)HTTPS?技術(shù)工程師手把手教你打造SSL加密站點(diǎn)
SSL證書呵曹,也稱為服務(wù)器證書款咖,是遵守SSL協(xié)議的一種數(shù)字證書,由全球信任的證書頒發(fā)機(jī)構(gòu)(CA)驗(yàn)證服務(wù)器身份后頒發(fā)奄喂。將SSL證書安裝在網(wǎng)站服務(wù)器上铐殃,可實(shí)現(xiàn)網(wǎng)站身份驗(yàn)證和數(shù)據(jù)加密傳輸雙重功能。SSL證書加密后的網(wǎng)站安全性將大大提升跨新,同時(shí)也更受搜索引擎的親睞富腊,對(duì)網(wǎng)站的SEO有巨大幫助。
web service在企業(yè)應(yīng)用中常常被用作不同系統(tǒng)之間的接口方式域帐。但是如果沒有任何安全機(jī)制的話赘被,顯然是難以委以重任的。比較直接的web service加密方式就是使用HTTPS方式(SSL證書加密)加密連接肖揣,并且只允許持有信任證書的客戶端連接帘腹,即SSL雙向認(rèn)證。
參考網(wǎng)址:https://www.wosign.com/news/httpsjiami_20180817.htm