您好,登錄后才能下訂單哦!
在網(wǎng)絡(luò)和操作系統(tǒng)安全通信中經(jīng)常涉及到這幾個(gè)名詞: RSA, 公鑰,私鑰,CA,數(shù)字簽名,數(shù)字證書(shū)。
我找了很多資料,很少有把疑難點(diǎn)講全面的。但不講清楚這幾個(gè),很難有一個(gè)清晰的認(rèn)識(shí)和理解。
我現(xiàn)在也嘗試這樣的方式,自己總結(jié),以便后來(lái)查看,同時(shí)也希望能幫助一些人少走彎路,省去baidu, google, 看RFC的時(shí)間。
對(duì)稱(chēng)和非對(duì)稱(chēng),公鑰和私鑰:
加密的兩種方式:對(duì)稱(chēng)加密和非對(duì)稱(chēng)加密。
對(duì)稱(chēng)加密:加密的密鑰也叫公鑰和解密的密鑰(也叫私鑰)相同。特點(diǎn)是算法公開(kāi)、計(jì)算量小、加密速度快、加密效率高。
非對(duì)稱(chēng)加密:加密和解密使用的是兩個(gè)不同的密鑰,所以這種算法叫作非對(duì)稱(chēng)加密算法。RSA是一種非對(duì)稱(chēng)加密算法。
RSA是取的研究這個(gè)算法的三個(gè)專(zhuān)家的首字母。
加密算法中,公鑰用于對(duì)數(shù)據(jù)進(jìn)行加密,私鑰用于對(duì)數(shù)據(jù)進(jìn)行解密。
當(dāng)然了,這個(gè)也可以很直觀的理解:
公鑰就是公開(kāi)的密鑰,其公開(kāi)了大家才能用它來(lái)加密數(shù)據(jù)。私鑰是私有的密鑰,誰(shuí)有這個(gè)密鑰才能夠解密密文。在簽名算法中,私鑰用于對(duì)數(shù)據(jù)進(jìn)行簽名,公鑰用于對(duì)簽名進(jìn)行驗(yàn)證
。這也可以直觀地進(jìn)行理解:
對(duì)一個(gè)文件簽名,當(dāng)然要用私鑰,因?yàn)槲覀兿M挥凶约翰拍芡瓿珊炞?。?yàn)證過(guò)程當(dāng)然希望所有人都能夠執(zhí)行。
大家看到簽名都能通過(guò)驗(yàn)證證明確實(shí)是我自己簽的。如果你用私鑰加密了,所有人都能查到公鑰并解密,所以其實(shí)不能叫加解密。
數(shù)字簽名并不是簽一個(gè)字來(lái)證明這個(gè)東西是我的,而是做了一個(gè)數(shù)學(xué)計(jì)算。數(shù)字簽名(Digital Signature)是 先對(duì)消息內(nèi)容做Hash得到一串?dāng)?shù)字,然后用私鑰對(duì)這個(gè)數(shù)字進(jìn)行加密。
數(shù)字簽名就兩個(gè)目的:證明這消息是你發(fā)的;證明這消息內(nèi)容確實(shí)是完整的。(認(rèn)證和完整性)。
對(duì)消息做一次哈希(md5或者sha1都行),然后用你的私鑰加密這段哈希作為簽名,并一起公布出去
當(dāng)別人收到你的公告時(shí),他可以用你的公鑰解密你的簽名,如果解密成功,并且解密出來(lái)的哈希值確實(shí)和你的公告原文一致,
那么他就證明了兩點(diǎn):這消息確實(shí)是你發(fā)的,而且內(nèi)容是完整的。
我們?cè)诰W(wǎng)上下載文件,經(jīng)常會(huì)有一個(gè)長(zhǎng)串的字符 MD5值。我們下載資料后,linux可以用md5sum 檢查一下這個(gè)資料,命令輸出得到的值和網(wǎng)站上的md5值比較。如果一致,說(shuō)明文件下載完整。如果不一致,說(shuō)明下載的文件發(fā)生改變。windows可以用winmd5等軟件驗(yàn)證。
3.數(shù)字證書(shū)Digital Certificate和證書(shū)中心Certificate Authority
“服務(wù)器”要對(duì)外發(fā)布公鑰,那“服務(wù)器”如何把公鑰發(fā)送給“客戶(hù)”呢?我們第一反應(yīng)可能會(huì)想到以下的兩個(gè)方法:
a)把公鑰放到互聯(lián)網(wǎng)的某個(gè)地方的一個(gè)下載地址,事先給“客戶(hù)”去下載。
b)每次和“客戶(hù)”開(kāi)始通信時(shí),“服務(wù)器”把公鑰發(fā)給“客戶(hù)”。
但是這個(gè)兩個(gè)方法都有一定的問(wèn)題,
對(duì)于a)方法,“客戶(hù)”無(wú)法確定這個(gè)下載地址是不是“服務(wù)器”發(fā)布的,你憑什么就相信這個(gè)地址下載的東西就是“服務(wù)器”發(fā)布的而不是別人偽造的呢,萬(wàn)一下載到一個(gè)假的怎么辦?另外要所有的“客戶(hù)”都在通信前事先去下載公鑰也很不現(xiàn)實(shí)。
對(duì)于b)方法,也有問(wèn)題,因?yàn)槿魏稳硕伎梢宰约荷梢粚?duì)公鑰和私鑰,他只要向“客戶(hù)”發(fā)送他自己的私鑰就可以冒充“服務(wù)器”了。
為了解決這個(gè)問(wèn)題,數(shù)字證書(shū)出現(xiàn)了,它可以解決我們上面的問(wèn)題。先大概看下什么是數(shù)字證書(shū),一個(gè)證書(shū)包含下面的具體內(nèi)容:
指紋以及指紋算法
證書(shū)發(fā)布機(jī)構(gòu)除了給別人發(fā)布證書(shū)外,他自己本身也有自己的證書(shū)。證書(shū)發(fā)布機(jī)構(gòu)的證書(shū)是哪里來(lái)的呢???
這個(gè)證書(shū)發(fā)布機(jī)構(gòu)的數(shù)字證書(shū)(一般由他自己生成)在我們的操作系統(tǒng)剛安裝好時(shí)(例如windows xp等操作系統(tǒng)),
這些證書(shū)發(fā)布機(jī)構(gòu)的數(shù)字證書(shū)就已經(jīng)被微軟(或者其它操作系統(tǒng)的開(kāi)發(fā)機(jī)構(gòu))安裝在操作系統(tǒng)中了,
微軟等公司會(huì)根據(jù)一些權(quán)威安全機(jī)構(gòu)的評(píng)估選取一些信譽(yù)很好并且通過(guò)一定的安全認(rèn)證的證書(shū)發(fā)布機(jī)構(gòu),
把這些證書(shū)發(fā)布機(jī)構(gòu)的證書(shū)默認(rèn)就安裝在操作系統(tǒng)里面了,并且設(shè)置為操作系統(tǒng)信任的數(shù)字證書(shū)。
這些證書(shū)發(fā)布機(jī)構(gòu)自己持有與他自己的數(shù)字證書(shū)對(duì)應(yīng)的私鑰,他會(huì)用這個(gè)私鑰加密所有他發(fā)布的證書(shū)的指紋作為數(shù)字簽名。
數(shù)字證書(shū)總結(jié):
兩個(gè)前提:CA是可以信任的(CA是一家實(shí)實(shí)在在的公司,有信譽(yù))。微軟已經(jīng)把CA的數(shù)字證書(shū)(公鑰)默認(rèn)安裝在操作系統(tǒng)中,也就是說(shuō)操作系統(tǒng)中有CA的公鑰。
服務(wù)器向CA申請(qǐng)數(shù)字證書(shū)。CA生成服務(wù)器的數(shù)字證書(shū)(包含了服務(wù)器的公鑰)和私鑰給服務(wù)器。客戶(hù)端請(qǐng)求網(wǎng)頁(yè),然后客戶(hù)端收到服務(wù)器發(fā)來(lái)的信息和數(shù)字證書(shū)??蛻?hù)端用CA公鑰解開(kāi)服務(wù)器數(shù)字證書(shū),得到服務(wù)器公鑰。
有了服務(wù)器公鑰,客戶(hù)端就可以解開(kāi)服務(wù)器的加密網(wǎng)頁(yè)。
如何自己創(chuàng)建證書(shū)
每個(gè)證書(shū)發(fā)布機(jī)構(gòu)都有自己的用來(lái)創(chuàng)建證書(shū)的工具,不同類(lèi)型的證書(shū)都有一定的格式和規(guī)范,微軟為我們提供了一個(gè)用來(lái)創(chuàng)建證書(shū)的工具makecert.exe,在安裝Visual Studio的時(shí)候會(huì)安裝上。如果沒(méi)有安裝也無(wú)所謂,可以上網(wǎng)去下一個(gè),搜索makecert就可以了。證書(shū)創(chuàng)建工具 (Makecert.exe)。
++++++++++++++++++++++++++++++++++++++
1.排版有點(diǎn)麻煩,要排的好看,還要花時(shí)間。
2.自己想的與寫(xiě)的文字有差距。
++++++++++++++++++++++++++++++++++++++
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。