数字签名、数字证书、对称加密算法、非对称加密算法、单向加密(散列算法)——Web网络系列学习笔记
數(shù)字簽名是什么?
1.
鮑勃有兩把鑰匙,一把是公鑰,另一把是私鑰。
2.
鮑勃把公鑰送給他的朋友們—-帕蒂、道格、蘇珊—-每人一把。
3.
蘇珊給鮑勃寫信,寫完后用鮑勃的公鑰加密,達(dá)到保密的效果。
4.
鮑勃收信后,用私鑰解密,看到信件內(nèi)容。
5.
鮑勃給蘇珊回信,寫完后用Hash函數(shù),生成信件的摘要(digest)。
6.
然后,鮑勃使用私鑰,對(duì)這個(gè)摘要加密,生成”數(shù)字簽名”(signature)。
7.
鮑勃將這個(gè)簽名,附在信件下面,一起發(fā)給蘇珊。
8.
蘇珊收信后,取下數(shù)字簽名,用鮑勃的公鑰解密,得到信件的摘要。由此證明,這封信確實(shí)是鮑勃發(fā)出的。
9.
蘇珊再對(duì)信件本身使用Hash函數(shù),將得到的結(jié)果,與上一步得到的摘要進(jìn)行對(duì)比。如果兩者一致,就證明這封信未被修改過。
10.
復(fù)雜的情況出現(xiàn)了。道格想欺騙蘇珊,他偷偷使用了蘇珊的電腦,用自己的公鑰換走了鮑勃的公鑰。因此,他就可以冒充鮑勃,寫信給蘇珊。
11.
蘇珊發(fā)現(xiàn),自己無法確定公鑰是否真的屬于鮑勃。她想到了一個(gè)辦法,要求鮑勃去找”證書中心”(certificate authority,簡(jiǎn)稱CA),為公鑰做認(rèn)證。證書中心用自己的私鑰,對(duì)鮑勃的公鑰和一些相關(guān)信息一起加密,生成”數(shù)字證書“(Digital Certificate)。
12.
鮑勃拿到數(shù)字證書以后,就可以放心了。以后再給蘇珊寫信,只要在簽名的同時(shí),再附上數(shù)字證書就行了。
13.
蘇珊收信后,用CA的公鑰解開數(shù)字證書,就可以拿到鮑勃真實(shí)的公鑰了,然后就能證明”數(shù)字簽名”是否真的是鮑勃簽的。
14.
下面,我們看一個(gè)應(yīng)用”數(shù)字證書”的實(shí)例:https協(xié)議。這個(gè)協(xié)議主要用于網(wǎng)頁加密。
15.
首先,客戶端向服務(wù)器發(fā)出加密請(qǐng)求。
16.
服務(wù)器用自己的私鑰加密網(wǎng)頁以后,連同本身的數(shù)字證書,一起發(fā)送給客戶端。
17.
客戶端(瀏覽器)的”證書管理器”,有”受信任的根證書頒發(fā)機(jī)構(gòu)”列表。客戶端會(huì)根據(jù)這張列表,查看解開數(shù)字證書的公鑰是否在列表之內(nèi)。
18.
如果數(shù)字證書記載的網(wǎng)址,與你正在瀏覽的網(wǎng)址不一致,就說明這張證書可能被冒用,瀏覽器會(huì)發(fā)出警告。
19.
如果這張數(shù)字證書不是由受信任的機(jī)構(gòu)頒發(fā)的,瀏覽器會(huì)發(fā)出另一種警告。
20.
數(shù)字證書如果是可靠的,客戶端就可以使用證書中的服務(wù)器公鑰,對(duì)信息進(jìn)行加密,然后與服務(wù)器交換加密信息。
—————————-
在簽名的過程中,有一點(diǎn)很關(guān)鍵,收到數(shù)據(jù)的一方,需要自己保管好公鑰,但是要知道每一個(gè)發(fā)送方都有一個(gè)公鑰,那么接收數(shù)據(jù)的人需要保存非常多的公鑰,這根本就管理不過來。并且本地保存的公鑰有可能被篡改替換,無從發(fā)現(xiàn)。怎么解決這一問題了?由一個(gè)統(tǒng)一的證書管理機(jī)構(gòu)來管理所有需要發(fā)送數(shù)據(jù)方的公鑰,對(duì)公鑰進(jìn)行認(rèn)證和加密。這個(gè)機(jī)構(gòu)也就是我們常說的CA。認(rèn)證加密后的公鑰,即是證書,又稱為CA證書,證書中包含了很多信息,最重要的是申請(qǐng)者的公鑰。
CA機(jī)構(gòu)在給公鑰加密時(shí),用的是一個(gè)統(tǒng)一的密鑰對(duì),在加密公鑰時(shí),用的是其中的私鑰。這樣,申請(qǐng)者拿到證書后,在發(fā)送數(shù)據(jù)時(shí),用自己的私鑰生成簽名,將簽名、證書和發(fā)送內(nèi)容一起發(fā)給對(duì)方,對(duì)方拿到了證書后,需要對(duì)證書解密以獲取到證書中的公鑰,解密需要用到CA機(jī)構(gòu)的”統(tǒng)一密鑰對(duì)“中的公鑰,這個(gè)公鑰也就是我們常說的CA根證書,通常需要我們到證書頒發(fā)機(jī)構(gòu)去下載并安裝到相應(yīng)的收取數(shù)據(jù)的客戶端,如瀏覽器上面。這個(gè)公鑰只需要安裝一次。有了這個(gè)公鑰之后,就可以解密證書,拿到發(fā)送方的公鑰,然后解密發(fā)送方發(fā)過來的簽名,獲取摘要,重新計(jì)算摘要,作對(duì)比,以驗(yàn)證數(shù)據(jù)內(nèi)容的完整性。
總結(jié):
(1)信息 + HASH = 摘要 摘要 + 私鑰 = 數(shù)字簽名(給收方做對(duì)比用的,驗(yàn)證收發(fā)內(nèi)容是否一致)
(2)公鑰 + 相關(guān)信息 + CA私鑰 = 數(shù)字證書(驗(yàn)證發(fā)送者是否正確,是可信任的公鑰)
用于我發(fā)保密信息給你之前,你得讓我相信真的是“你”讓我“這么做”的。
(1)、對(duì)稱加密算法
常用的算法包括:
DES(Data Encryption Standard):數(shù)據(jù)加密標(biāo)準(zhǔn),速度較快,適用于加密大量數(shù)據(jù)的場(chǎng)合。
3DES(Triple DES):是基于DES,對(duì)一塊數(shù)據(jù)用三個(gè)不同的密鑰進(jìn)行三次加密,強(qiáng)度更高。
AES(Advanced Encryption Standard):高級(jí)加密標(biāo)準(zhǔn),是下一代的加密算法標(biāo)準(zhǔn),速度快,安全級(jí)別高;
1、加密方和解密方使用同一個(gè)密鑰。
2、加密解密的速度比較快,適合數(shù)據(jù)比較長(zhǎng)時(shí)的使用。
3、密鑰傳輸?shù)倪^程不安全,且容易被破解,密鑰管理也比較麻煩。
4、加密算法:DES(Data Encryption Standard)、3DES、AES(Advanced Encryption Standard,支持128、192、256、512位密鑰的加密)、Blowfish。
5、加密工具:openssl、gpg(pgp工具)
(2)、非對(duì)稱加密算法
RSA:由 RSA 公司發(fā)明,是一個(gè)支持變長(zhǎng)密鑰的公共密鑰算法,需要加密的文件塊的長(zhǎng)度也是可變的;
DSA(Digital Signature Algorithm):數(shù)字簽名算法,是一種標(biāo)準(zhǔn)的 DSS(數(shù)字簽名標(biāo)準(zhǔn));
ECC(Elliptic Curves Cryptography):橢圓曲線密碼編碼學(xué)。
ECC和RSA相比,在許多方面都有對(duì)絕對(duì)的優(yōu)勢(shì),主要體現(xiàn)在以下方面:
抗攻擊性強(qiáng)。相同的密鑰長(zhǎng)度,其抗攻擊性要強(qiáng)很多倍。
計(jì)算量小,處理速度快。ECC總的速度比RSA、DSA要快得多。
存儲(chǔ)空間占用小。ECC的密鑰尺寸和系統(tǒng)參數(shù)與RSA、DSA相比要小得多,意味著它所占的存貯空間要小得多。這對(duì)于加密算法在IC卡上的應(yīng)用具有特別重要的意義。
帶寬要求低。當(dāng)對(duì)長(zhǎng)消息進(jìn)行加解密時(shí),三類密碼系統(tǒng)有相同的帶寬要求,但應(yīng)用于短消息時(shí)ECC帶寬要求卻低得多。帶寬要求低使ECC在無線網(wǎng)絡(luò)領(lǐng)域具有廣泛的應(yīng)用前景。
1、每個(gè)用戶擁用一對(duì)密鑰加密:公鑰和私鑰。
2、公鑰加密,私鑰解密;私鑰加密,公鑰解密。
3、公鑰傳輸?shù)倪^程不安全,易被竊取和替換。
4、由于公鑰使用的密鑰長(zhǎng)度非常長(zhǎng),所以公鑰加密速度非常慢,一般不使用其去加密。
5、某一個(gè)用戶用其私鑰加密,其他用戶用其公鑰解密,實(shí)現(xiàn)數(shù)字簽名的作用。
6、公鑰加密的另一個(gè)作用是實(shí)現(xiàn)密鑰交換。
7、加密和簽名算法:RSA、ELGamal。
8、公鑰簽名算法:DSA。
9、加密工具:gpg、openssl
由于非對(duì)稱加密算法的運(yùn)行速度比對(duì)稱加密算法的速度慢很多,當(dāng)我們需要加密大量的數(shù)據(jù)時(shí),建議采用對(duì)稱加密算法,提高加解密速度。
對(duì)稱加密算法不能實(shí)現(xiàn)簽名,因此簽名只能非對(duì)稱算法。
由于對(duì)稱加密算法的密鑰管理是一個(gè)復(fù)雜的過程,密鑰的管理直接決定著他的安全性,因此當(dāng)數(shù)據(jù)量很小時(shí),我們可以考慮采用非對(duì)稱加密算法。
在實(shí)際的操作過程中,我們通常采用的方式是:采用非對(duì)稱加密算法管理對(duì)稱算法的密鑰,然后用對(duì)稱加密算法加密數(shù)據(jù),這樣我們就集成了兩類加密算法的優(yōu)點(diǎn),既實(shí)現(xiàn)了加密速度快的優(yōu)點(diǎn),又實(shí)現(xiàn)了安全方便管理密鑰的優(yōu)點(diǎn)。
(3)、單向加密(散列算法)
散列是信息的提煉,通常其長(zhǎng)度要比信息小得多,且為一個(gè)固定長(zhǎng)度。加密性強(qiáng)的散列一定是不可逆的,這就意味著通過散列結(jié)果,無法推出任何部分的原始信息。任何輸入信息的變化,哪怕僅一位,都將導(dǎo)致散列結(jié)果的明顯變化,這稱之為雪崩效應(yīng)。散列還應(yīng)該是防沖突的,即找不出具有相同散列結(jié)果的兩條信息。具有這些特性的散列結(jié)果就可以用于驗(yàn)證信息是否被修改。
單向散列函數(shù)一般用于產(chǎn)生消息摘要,密鑰加密等,常見的有:
1、MD5(Message Digest Algorithm 5):是RSA數(shù)據(jù)安全公司開發(fā)的一種單向散列算法,非可逆,相同的明文產(chǎn)生相同的密文。
2、SHA(Secure Hash Algorithm):可以對(duì)任意長(zhǎng)度的數(shù)據(jù)運(yùn)算生成一個(gè)160位的數(shù)值;
SHA-1與MD5的比較
因?yàn)槎呔蒑D4導(dǎo)出,SHA-1和MD5彼此很相似。相應(yīng)的,他們的強(qiáng)度和其他特性也是相似,但還有以下幾點(diǎn)不同:
1、對(duì)強(qiáng)行供給的安全性:最顯著和最重要的區(qū)別是SHA-1摘要比MD5摘要長(zhǎng)32 位。使用強(qiáng)行技術(shù),產(chǎn)生任何一個(gè)報(bào)文使其摘要等于給定報(bào)摘要的難度對(duì)MD5是2128數(shù)量級(jí)的操作,而對(duì)SHA-1則是2160數(shù)量級(jí)的操作。這樣,SHA-1對(duì)強(qiáng)行攻擊有更大的強(qiáng)度。
2、對(duì)密碼分析的安全性:由于MD5的設(shè)計(jì),易受密碼分析的攻擊,SHA-1顯得不易受這樣的攻擊。
3、速度:在相同的硬件上,SHA-1的運(yùn)行速度比MD5慢。
1、特征:雪崩效應(yīng)、定長(zhǎng)輸出和不可逆。
2、作用是:確保數(shù)據(jù)的完整性。
3、加密算法:md5(標(biāo)準(zhǔn)密鑰長(zhǎng)度128位)、sha1(標(biāo)準(zhǔn)密鑰長(zhǎng)度160位)、md4、CRC-32
4、加密工具:md5sum、sha1sum、openssl dgst。
5、計(jì)算某個(gè)文件的hash值,例如:md5sum/shalsum FileName,openssl dgst –md5/-sha1
總結(jié)
以上是生活随笔為你收集整理的数字签名、数字证书、对称加密算法、非对称加密算法、单向加密(散列算法)——Web网络系列学习笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++题解-Leecode 520. 检
- 下一篇: 分布式CAP理论:为什么CAP理论中的三