公鑰捂刺、私鑰到踏、數(shù)字簽名鲫竞、數(shù)字證書這些名詞在密碼學(xué)經(jīng)常見識到遂填,但是你真的理清了它們之間的關(guān)系以及互相起到的作用了嗎铲觉?
1)鮑勃有兩把鑰匙,一把是公鑰吓坚,另一把是私鑰
2)鮑勃把公鑰送給他的朋友們----帕蒂撵幽、道格、蘇珊----每人一把礁击。
3)蘇珊要給鮑勃寫一封保密的信盐杂。她寫完后用鮑勃的公鑰加密,就可以達(dá)到保密的效果哆窿。
4)鮑勃收信后链烈,用私鑰解密,就看到了信件內(nèi)容挚躯。這里要強(qiáng)調(diào)的是强衡,只要鮑勃的私鑰不泄露,這封信就是安全的码荔,即使落在別人手里漩勤,也無法解密号涯。
5)鮑勃給蘇珊回信,決定采用"數(shù)字簽名"锯七。他寫完后先用Hash函數(shù)链快,生成信件的摘要(digest)。
6)然后眉尸,鮑勃使用私鑰域蜗,對這個摘要加密,生成"數(shù)字簽名"(signature)噪猾。
7)鮑勃將這個簽名霉祸,附在信件下面,一起發(fā)給蘇珊袱蜡。
8)蘇珊收信后丝蹭,取下數(shù)字簽名,用鮑勃的公鑰解密坪蚁,得到信件的摘要奔穿。由此證明,這封信確實(shí)是鮑勃發(fā)出的敏晤。
9)蘇珊再對信件本身使用Hash函數(shù)贱田,將得到的結(jié)果,與上一步得到的摘要進(jìn)行對比嘴脾。如果兩者一致男摧,就證明這封信未被修改過。
10)復(fù)雜的情況出現(xiàn)了译打。道格想欺騙蘇珊耗拓,他偷偷使用了蘇珊的電腦,用自己的公鑰換走了鮑勃的公鑰奏司。此時乔询,蘇珊實(shí)際擁有的是道格的公鑰,但是還以為這是鮑勃的公鑰结澄。因此哥谷,道格就可以冒充鮑勃,用自己的私鑰做成"數(shù)字簽名"麻献,寫信給蘇珊,讓蘇珊用假的鮑勃公鑰進(jìn)行解密猜扮。
11)后來勉吻,蘇珊感覺不對勁,發(fā)現(xiàn)自己無法確定公鑰是否真的屬于鮑勃旅赢。她想到了一個辦法齿桃,要求鮑勃去找"證書中心"(certificate authority惑惶,簡稱CA),為公鑰做認(rèn)證短纵。證書中心用自己的私鑰带污,對鮑勃的公鑰和一些相關(guān)信息一起加密,生成"數(shù)字證書"(Digital Certificate)香到。
12)鮑勃拿到數(shù)字證書以后鱼冀,就可以放心了。以后再給蘇珊寫信悠就,只要在簽名的同時千绪,再附上數(shù)字證書就行了。
13)蘇珊收信后梗脾,用CA的公鑰解開數(shù)字證書荸型,就可以拿到鮑勃真實(shí)的公鑰了,然后就能證明"數(shù)字簽名"是否真的是鮑勃簽的炸茧。
HTTPS詳解
HTTP協(xié)議的網(wǎng)站容易被篡改和劫持瑞妇,如一些不良的運(yùn)營商會通過代理服務(wù)器在你的頁面中植入廣告等。
因此很多網(wǎng)站選擇使用HTTPS協(xié)議梭冠。HTTPS協(xié)議通過TLS層和證書機(jī)制提供了內(nèi)容加密踪宠,身份認(rèn)證,數(shù)據(jù)完整性三大功能妈嘹。
14)下面柳琢,我們看一個應(yīng)用"數(shù)字證書"的實(shí)例:https協(xié)議。這個協(xié)議主要用于網(wǎng)頁加密润脸。
15)首先柬脸,客戶端向服務(wù)器發(fā)出加密請求。
16)服務(wù)器用自己的私鑰加密網(wǎng)頁以后毙驯,連同本身的數(shù)字證書倒堕,一起發(fā)送給客戶端。
17)客戶端(瀏覽器)的"證書管理器"爆价,有"受信任的根證書頒發(fā)機(jī)構(gòu)"列表垦巴。客戶端會根據(jù)這張列表铭段,查看解開數(shù)字證書的公鑰是否在列表之內(nèi)骤宣。
18)如果數(shù)字證書記載的網(wǎng)址,與你正在瀏覽的網(wǎng)址不一致序愚,就說明這張證書可能被冒用憔披,瀏覽器會發(fā)出警告。
19)如果這張數(shù)字證書不是由受信任的機(jī)構(gòu)頒發(fā)的,瀏覽器會發(fā)出另一種警告
20.如果數(shù)字證書是可靠的芬膝,客戶端就可以使用證書中的服務(wù)器公鑰望门,對信息進(jìn)行加密,然后與服務(wù)器交換加密信息锰霜。
總之
數(shù)字簽名柱搜, 先對報(bào)文進(jìn)行hash形成報(bào)文摘要抛蚤,再使用個人私鑰對報(bào)文摘要進(jìn)行加密,是私人性的。
數(shù)字證書蜕衡,是由CA中心派發(fā)的,具有一定的權(quán)威性拴孤,一般無法進(jìn)行偽造口糕。