前記
有段時(shí)間處理了一個(gè)關(guān)于軟件SHA1和SHA2版本和服務(wù)器使用的證書(shū)加密方式之間關(guān)系的案件。不是很懂,于是靜下心來(lái)認(rèn)真學(xué)習(xí)了一下關(guān)于數(shù)字證書(shū)的知識(shí)。整理了這篇文章。
發(fā)明這個(gè)技術(shù)是為了解決什么問(wèn)題
以現(xiàn)實(shí)生活中網(wǎng)上購(gòu)物為例。
1:偽裝
有人偽造一個(gè)amazon網(wǎng)站,騙取客戶下單,然后取得客戶的錢,信用卡信息,住址等等信息
2:篡改
客戶訪問(wèn)了正確的amazon網(wǎng)站,但是下單給amazon的途中下單信息被修改了
3:偷聽(tīng)
客戶訪問(wèn)了正確的amazon網(wǎng)站,把下單信息正確傳遞給了amazon,但是下單內(nèi)容被別人竊聽(tīng)
4:否認(rèn)
→客戶訪問(wèn)了正確的amazon網(wǎng)站,把下單信息正確傳遞給了amazon,也沒(méi)有被別人竊聽(tīng),商品也正確發(fā)送,但是客戶對(duì)自己訂單不認(rèn)可。
怎么解決
數(shù)字證書(shū)(或者叫電子證書(shū))
簡(jiǎn)單來(lái)說(shuō),對(duì)因?yàn)閍mazon(B2C中的B)和客戶(B2C中的C)相互看不到,構(gòu)建不了相互信任。所以,需要對(duì)雙方都進(jìn)行約束。另外amazon和客戶之間的談話內(nèi)容,又不想讓第3者聽(tīng)到,所以需要把談話內(nèi)容加密。
什么是數(shù)字證書(shū)?
由電子證書(shū)發(fā)行機(jī)構(gòu)或者組織(簡(jiǎn)稱CA)生成,放置于網(wǎng)站服務(wù)器,證明網(wǎng)站的合法性和加密通信用的cer文件。
電子證書(shū)里有什么?
- 網(wǎng)站公開(kāi)信息(網(wǎng)站名,國(guó)家,證書(shū)有效期等等)
- 網(wǎng)站公鑰
- 依賴CA的電子簽名算法(通常是SHA256)
- 公開(kāi)信息的信息摘要(指紋)經(jīng)過(guò)CA加密后的密文。
- 信息摘要算法
電子證書(shū)怎么生成?
- 網(wǎng)站向合法的,已經(jīng)被認(rèn)可的CA機(jī)構(gòu)申請(qǐng)。
- 網(wǎng)站提供給CA必要的信息,CA通過(guò)一些手段確認(rèn)網(wǎng)站沒(méi)有信任問(wèn)題
- CA使用自己私鑰(※1)電子簽名(※2)網(wǎng)站信息,并打包成cer文件
※1
CA是提供給提出申請(qǐng)服務(wù)器數(shù)字證書(shū)的組織機(jī)構(gòu)。
機(jī)構(gòu)本身持有一對(duì)公鑰和私鑰。公鑰和私鑰本身就是成對(duì)的。
機(jī)構(gòu)本身是需要瀏覽器和操作系統(tǒng)認(rèn)可的。
CA的公鑰會(huì)提前保存于瀏覽器的【受信任的根證書(shū)頒發(fā)機(jī)構(gòu)】列表中。
這是事前準(zhǔn)備工作,具體用途,在下面解釋。普通用戶并不需要特別關(guān)心。
※2
網(wǎng)站提供給CA什么申請(qǐng)信息?
- 網(wǎng)站公開(kāi)信息(網(wǎng)站名,國(guó)家,證書(shū)有效期等等)
- 網(wǎng)站公鑰
- 依賴CA的電子簽名算法(通常是SHA256)
- 信息摘要(指紋)
- 信息摘要算法
電子證書(shū)怎么證明網(wǎng)站合法,已經(jīng)保護(hù)通信?
證明網(wǎng)站合法
1:在瀏覽器里輸入想訪問(wèn)的網(wǎng)址
2:經(jīng)過(guò)DNS服務(wù)器,將訪問(wèn)發(fā)送給服務(wù)器
3:服務(wù)器把自己的證明書(shū)發(fā)給瀏覽器
4:瀏覽器根據(jù)本地的CA公鑰,解析服務(wù)器證明書(shū)(證明書(shū)里有CA私鑰加密過(guò)的密文,以及服務(wù)器信息)
5:瀏覽器取得一個(gè)隨機(jī)數(shù)(為以后加密通訊用),使用證書(shū)里服務(wù)器的公鑰加密,傳遞給服務(wù)器
6:服務(wù)器使用自己的私鑰解密
7:以后瀏覽器和網(wǎng)站服務(wù)器之間的通信,就使用這個(gè)隨機(jī)數(shù)加密往來(lái)數(shù)據(jù)(對(duì)稱加密)
什么是公鑰和私鑰?
這就涉及到加密方式。
■對(duì)稱加密
加密和解密采用同一個(gè)密碼。最常見(jiàn)和普通的加密方式。例如,zip加密,execl加密
算法有DES、3DES、AES
■非對(duì)稱加密
加密和解密必須使用不同的密鑰。
非對(duì)稱加密是指用戶有兩個(gè)密鑰,一個(gè)是公鑰(publicKey),一個(gè)是私鑰(privateKey)
公鑰是公開(kāi)的,任何人可以使用,私鑰是保密的,只有用戶自己可以使用,公鑰和私鑰是對(duì)應(yīng)關(guān)系。
用戶可以用對(duì)方的公鑰加密信息,并傳送給對(duì)方,對(duì)方使用自己的私鑰將密文解開(kāi)。
公私鑰是互相解密的,而且絕對(duì)不會(huì)有第三者能插進(jìn)來(lái)。
算法有RSA
→SHA1,SHA256
■單向加密
信息摘要。從文件中通過(guò)算法提取固定長(zhǎng)度字符串的【指紋】。如果文件改動(dòng)過(guò),算出的【指紋】就會(huì)改變。
根據(jù)【指紋】不能還原文件內(nèi)容
【指紋】往往比原文件小很多很多,便于傳輸。
算法有MD5,SHA-1,SHA256,TLS1.2
后記
純文字描述,太難理解了。最好搭配找一些視頻來(lái)看。