SSL/TLS HTTPS CA 簡單介紹

## SSL/TLS

HTTP使用明文傳輸,明文傳輸主要有一下三大風(fēng)險(xiǎn):

- 竊聽風(fēng)險(xiǎn)

- 篡改風(fēng)險(xiǎn)

- 冒充風(fēng)險(xiǎn)

SSL/TLS協(xié)議就是為了解決這三大風(fēng)險(xiǎn)而設(shè)計(jì)的,它可以達(dá)到如下的效果:

- 所有信息都是加密傳輸,第三方無法竊聽

- 具有校驗(yàn)機(jī)制,一旦被篡改,通信雙方會立即發(fā)現(xiàn)

- 配備身份證書,放置身份被冒充

SSL/TLS協(xié)議的基本思想就是采用公鑰加密算法?;具^程就是client先向server索要公鑰,然后用公鑰加密信息,服務(wù)器收到密文后,用自己的私鑰解密。

這里有幾個問題:

1. 如何保證client收到的server的公鑰不是冒充的?使用CA服務(wù)器。

2. 非對稱加密計(jì)算量大的問題?每一次對話,client和server都會生成一個對稱加密的密鑰,它用于加密信息,對稱加密的速度非??臁6?wù)器的公鑰只用于加密那個對稱加密密鑰。

3. client沒有將client的公鑰傳給server,如果server想向client用非對稱加密的方式傳遞信息,那么server只能用server的私鑰給信息加密,然后client用server的公鑰解開。而公鑰是server分發(fā)給所有人的,這樣顯然很容易就會發(fā)生信息被竊取的情況。需要避免server用server的私鑰加密信息的情況。

## SSL/TLS過程

1. client向server發(fā)出加密通信的請求,其中client會生成一個隨機(jī)數(shù),稍后用于生成加密信息的對稱密鑰。

2. server收到client請求之后,向client發(fā)出回應(yīng)。server回應(yīng)的內(nèi)容包括server的證書、一個server生成的隨機(jī)數(shù)(稍后用于生成加密信息的對稱密鑰)等。

3. client收到server發(fā)的信息之后,首先驗(yàn)證服務(wù)器證書。如果證書不是可信機(jī)構(gòu)頒布、或者證書中的域名與實(shí)際域名不一致、或者證書已經(jīng)過期,就會向訪問者顯示一個警告,由其選擇是否還要繼續(xù)通信。如果證書沒有問題,client就會從證書中取出server的公鑰。然后生成一個隨機(jī)數(shù)作為對稱密鑰,用server的公鑰加密該對稱密鑰。

4. server收到client發(fā)送的密文后,用私鑰解開,得到對稱加密的密鑰。至此整個握手階段全部結(jié)束。client和server使用對稱密鑰加密內(nèi)容進(jìn)行通信。

需要注意的是,SSL/TLS握手階段都是使用的明文傳輸。

## HTTPS

HTTPS實(shí)際上就是使用上面SSL/TLS握手,然后用對稱密鑰加密傳輸之前HTTP傳輸?shù)拿魑膬?nèi)容。

## 數(shù)字簽名

數(shù)字簽名的作用主要是為了防止內(nèi)容被篡改。

比如SSL/TLS握手階段,server將自己的公鑰發(fā)送給client這個過程是明文傳輸,存在被第三方篡改的風(fēng)險(xiǎn)。

數(shù)字簽名的過程是先將內(nèi)容用hash算法生成摘要,然后使用一個私鑰對摘要進(jìn)行加密生成數(shù)字簽名,然后將數(shù)字簽名貼在內(nèi)容的后面。接收方收到內(nèi)容后,要驗(yàn)證內(nèi)容是否被篡改,只需要將數(shù)字簽名用公鑰解密,然后和內(nèi)容hash之后的結(jié)果進(jìn)行對比,如果不一致,一定發(fā)生了篡改。

## CA&數(shù)字證書

CA(證書中心)的作用就是給server頒發(fā)數(shù)字證書,確認(rèn)server的公鑰是可信的,防止第三方冒充。

server的數(shù)字證書:server的公鑰等信息+CA的數(shù)字簽名。

server將自己的公鑰等信息交給CA,CA將信息hash之后用自己的私鑰加密生成CA的數(shù)字簽名,然后server的公鑰等信息和CA的數(shù)字簽名一起封裝成數(shù)字證書頒發(fā)給server,之后server就使用CA為其頒發(fā)的數(shù)字證書。client在接受到信息之后,只需要用CA的公鑰驗(yàn)證一下CA的數(shù)字簽名即可知道server的公鑰等信息是否被篡改過。這里為了簡化模型,可以認(rèn)為client上的CA公鑰一定是可信的。只要client在SSL/TLS握手階段獲得的server公鑰是可信的,中間人是沒有機(jī)會竊取、篡改、冒充的。

## 總結(jié)

什么時(shí)候用公鑰加密信息?什么時(shí)候用私鑰加密信息?

加密信息:公鑰加密,私鑰解密。內(nèi)容不希望被別人看到。

簽名:私鑰簽名,公鑰驗(yàn)證。讓對方知道是我的發(fā)的,不希望被別人冒充、篡改。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容