小朋友都能懂的計算機(jī)算法 - 數(shù)字證書
碰到了大人物
小明最近碰到一件好事!

小明心想:
還有這等好事!
如果真能做到不給中國加關(guān)稅,
那是為國爭光了??!
再說了還能辦個綠卡,哈哈!
不行,萬一是騙子呢?
我要再多問幾句!

小明要看網(wǎng)址真的是白宮的,
連忙打開網(wǎng)頁:

哎喲,真的是白宮網(wǎng)站啊。
要抓住機(jī)遇,
小明連忙根據(jù)客服的提示,
填寫了自己的身份證和信用卡信息,
然后小明收到好幾條短信:

可惜不是通知辦綠卡的短信,
信用卡上的錢莫名花掉了好多,
那個特朗普也聯(lián)系不上了。
問題來了,
在這個又大又壞的網(wǎng)絡(luò)世界上,
我們?nèi)绾稳ヲ炞C對方是真是假呢?
又如何去驗證網(wǎng)站是真是假呢?
我們先來看看現(xiàn)實中是如何驗證的。
身份證
小明的信用卡莫名被盜刷了,
很是惱火,
馬上趕去銀行要把卡鎖住。
這時候銀行柜員說:
您好,請出示一下您的身份證?
小明趕快遞上自己的身份證:

銀行柜員仔細(xì)核對身份證后,
確認(rèn)了小明就是信用卡的主人,
馬上給他鎖定了信用卡,
防止“特朗普”繼續(xù)盜刷他的信用卡。
上面這個鎖定信用卡的過程中涉及到了3方人:

只有小明和銀行柜員,
明明是2方,為什么說是3方?
確實是3方,這里少了公安作為公正方:

這個過程是這樣的:
小明去公安機(jī)關(guān)辦理身份證
小明要提供戶口本等證明他真的是小明
公安驗證無誤后就給小明辦理了身份證
小明拿著身份證去辦理銀行卡業(yè)務(wù)
銀行柜員用公安聯(lián)網(wǎng)的機(jī)器驗證身份證真假
確認(rèn)無誤后給小明辦理業(yè)務(wù)。
現(xiàn)實中,就是通過這張叫做"身份證"的證書來解決了“小明”是“小明”的問題。
那網(wǎng)絡(luò)上是否也可以通過證書的方式來解決這個問題呢?
答案就是公鑰加密和數(shù)字證書!
公鑰加密
小明可以用身份證證明自己的身份,
雖然別人也可以偽造自己的身份證,
但偽造身份證還是很難的,
身份證里面加了各種防偽技術(shù)。
但如果有一個電子的身份證,也就是數(shù)字證書,
豈不是很容易偽造?
只要復(fù)制一份就行了?

是的,數(shù)字證書不能和普通的證書一樣,
否則就太容易被復(fù)制了,
它是由兩個文件組成的,
需要用到公鑰加密技術(shù)。
我在前面一篇文章中介紹過公鑰加密,
簡單說就是:
有一對鑰匙(文件),用藍(lán)綠來表示
如果用綠色鑰匙給消息加密,就必須用藍(lán)色鑰匙才能打開
如果用藍(lán)色鑰匙給消息加密,就必須用綠色鑰匙才能打開
真是一對歡喜冤家,
只有彼此才能解開對方的心結(jié)。

我們來看一下上面的場景:
小明有一對藍(lán)綠配對的鑰匙。
小明把藍(lán)色的鑰匙公開給了小輝和其他人。
小明想發(fā)送密碼是9527這段文字給小輝。
小明用保密的綠色鑰匙給這段文字加密。
小輝收到密文后用小明給的藍(lán)色鑰匙解密。
如果能解開,就說明是小明發(fā)的消息,因為只有小明才有綠色鑰匙,只有綠色鑰匙才能和藍(lán)色鑰匙配對解開。
如果解不開,就說明這消息不是小明發(fā)的。
通過這種方法就可以證明消息是否是小明發(fā)的。
至少有兩個好處:
防止小明抵賴。既然能用藍(lán)色鑰匙解密,那么肯定是小明發(fā)的。
防止別人冒充小明發(fā)消息。別人沒有綠色鑰匙,不能和藍(lán)色鑰匙配對解開。
這就是核心原理! 關(guān)于公鑰加密,可以讀我的上一篇專門關(guān)于公鑰加密的文章。
數(shù)字證書
雖然小明不能抵賴,
別人也不能冒充小明,
但還有一個問題:
我怎么知道給我證書的小明就是小明呢?
如果某個人給我一個身份證說他是特朗普,
我怎么確認(rèn)呢?
我去公安機(jī)關(guān)確認(rèn)!
數(shù)字證書也需要能夠證明身份的中間機(jī)構(gòu)。
整個過程是這樣的:

小明去證書機(jī)構(gòu)請求辦法證書,就像去辦身份證。
證書機(jī)構(gòu)驗證小明確實是小明后給他生成了一份包含它的公鑰以及他的身份的證書。

小明要發(fā)消息的時候先用私鑰加密,然后把加密好的消息和證書一起發(fā)給銀行。
銀行看到證書后,確定這確實小明的證書。如果證書造假怎么辦呢?這個證書也是通過公鑰加密技術(shù)加密和驗證的,確保確實是這個銀行頒發(fā)的。
然后銀行取出證書中的公鑰,進(jìn)行解密。并不是有了證書就說明消息是小明發(fā)的。如果別人獲得了證書以后冒充小明亂發(fā)呢?
下一步就是用公鑰去給消息解密,如果能解密就說明確實是小明發(fā)的,因為只有小明有另一個用來配對的鑰匙。
證書機(jī)構(gòu)
神秘的證書頒發(fā)機(jī)構(gòu)是誰呢?
理論上說誰都可以頒發(fā)證書!
上面的例子中銀行自己就是證書頒發(fā)機(jī)構(gòu),
你去銀行辦卡,
銀行如果給你一個U盤,
里面就是銀行給你頒發(fā)的數(shù)字證書。
里面包含了你的公鑰和私鑰!

你自己也可以頒發(fā)證書,
但問題是你自己頒發(fā)的證書自己用還可以,
如果是要跟外部來證明你就是你自己,
就相當(dāng)于自己畫了一整身份證,
別人肯定不認(rèn)的。
通用的證書
上面銀行頒發(fā)的證書也只是自己用,
你在網(wǎng)上轉(zhuǎn)賬的時候,
銀行自己驗證證書的有效性。
如果想要辦理大家都認(rèn)可的證書,
就需要大家都認(rèn)可的證書辦理機(jī)構(gòu),
這種機(jī)構(gòu)世界上也有很多家。
我們可以通過阿里云辦理數(shù)字證書,
他給的選擇有4個證書機(jī)構(gòu):

這說明只有這4家和阿里云有合作,
實際上有更多的數(shù)字證書機(jī)構(gòu)。
這些機(jī)構(gòu)頒發(fā)的證書是大家都公認(rèn)的!
安全的網(wǎng)頁
數(shù)字證書的其中一個重要應(yīng)用就是在網(wǎng)頁上,
1最開始假的特朗普發(fā)了假的白宮網(wǎng)站,
我們?nèi)绾尾鸫┧兀?/p>
我們打開真的白宮網(wǎng)站:
https://www.whitehouse.gov
會看到他的網(wǎng)址前面有個??的圖標(biāo),
這說明這個網(wǎng)站是有數(shù)字證書的:

點(diǎn)開這個??,就可以看到網(wǎng)站的身份證:

我們可以清楚的看到:
這個網(wǎng)站屬于美國政府的。
政府的簽發(fā)機(jī)構(gòu)是DigiCert這家公司。
難道我需要每個網(wǎng)站都點(diǎn)開查看證書嗎?
答案是沒必要!
因為瀏覽器已經(jīng)幫你做了這個事情,
如果沒有證書,瀏覽器會提示你:

如果有證書但是證書不知道是誰頒發(fā)的,
瀏覽器會這樣提示你:

不同的瀏覽器提示界面可能會略有不同,
但本質(zhì)是一樣的。
辦證
那么證書機(jī)構(gòu)怎么證明小明就是小明呢?
加入小明用域名whitehouse365.com去辦證,
喂,你好,我要辦個數(shù)字證書!
我的域名是:whitehouse365.com
我是:美國白宮
辦證機(jī)構(gòu)會驗證這個域名是不是美國白宮的。
對不起,這個域名的注冊人不是美國白宮。
根據(jù)域名查詢,主人叫張小明。
不能給你辦理!
而且白宮是政府機(jī)構(gòu),需要提供額外證明!
這樣就辦不成了!
但是小明可以這樣說:
喂,你好,我要辦個數(shù)字證書!
我的域名是:whitehouse365.com
我是:張小明
證書機(jī)構(gòu)驗證了張小明確實是這個域名的注冊人。
所以就給他辦了一張證書。
而且是合法的證書,是公認(rèn)機(jī)構(gòu)頒發(fā)的。
這種情況下,瀏覽器也沒有辦法。
所以在關(guān)鍵的網(wǎng)站上,
我們可以要多看一下的,
比如看一下域名whitehouse365.com,
這個是不是很山寨?
而且政府域名都是.gov結(jié)尾的!

我們也可以打開證書看看:

咦,怎么回事張小明?
是假的!
最后
又大又壞的網(wǎng)絡(luò)世界,
學(xué)點(diǎn)計算機(jī)知識是很有必要的!
有問題給我留言!
感謝點(diǎn)贊和轉(zhuǎn)發(fā)!
