如下白話解釋目的爲了簡單易懂,可能部分措辭並不嚴謹,不當之處,還望指正。
來源: 我的博客
上回我白話了一下:「對稱加密」和「非對稱加密」的前因後果,收到了不錯的反饋,今天接着上一次白話留下的伏筆,說一說「對稱加密」和「非對稱加密」的實際應用:電子簽名(digital signature),電子證書(digital certificate)的來歷。git
由於「對稱加密」以及「非對稱加密」是兩種不一樣的「技術」,「技術「嘛,研究出來要「應用」到實際生活中的,固然同一種技術的「應用場景」能夠是千差萬別的,正若有人發明了「充氣輪胎」,而後被運用在了汽車上,飛機上還有自行車上。電子簽名和電子證書就是「應用」(正如汽車,飛機,自行車),可是它們的誕生離不開「對稱加密」和「非對稱加密」這些底層技術(充氣輪胎),一樣,對於你來講,若是你想明白我接下來白話的「電子簽名」和「電子證書」這些「應用」,你須要先讀懂我以前白話的「技術」《白話解釋 對稱加密算法 VS 非對稱加密算法》。github
========算法
ok,上回咱們說到,李四給張三發消息,先拿到「張三的公鑰」,而後使用張三的公鑰加密本身的信息,而後把加密後的密文發送給張三,這樣能夠保證發送的密文只能被「李四獲得的公鑰」所對應的「密鑰」解密(沒有黑客的狀況下,也就是張三的密鑰)。細心地同窗可能發現了,我上面對「張三的公鑰」加了引號!!!segmentfault
爲何???由於李四怎麼確認他收到的「公鑰」就是張三本人的呢?爲了更好地繼續白話,我們這裏作一個很大膽的假設,好比黑客小劉正在監聽李四和張三的對話,咱們也假設黑客小劉能夠輕易的修改中間傳輸的信息。那麼若是你是李四,你想一下怎麼才能把「機密信息」安全的傳送給張三?瀏覽器
好,咱們分析一下,爲了能把「機密信息」安全的傳給張三,李四須要:
1,加密的密文不能被破解,更嚴謹說,是不能被「輕易」破解(由於黑客小劉能截獲任何對話)
2,咱們用來加密的「公鑰」必須確實來在於「張三」本人(否則若是用了黑客小劉的公鑰,那麼即便李四加密了信息,也會被小劉秒破解)安全
至於第一點,非對稱加密已經替咱們解決了密文不會被輕易破解的問題,那麼咱們如今只要肯定所獲得的公鑰是來自於「張三」本人就能夠放心大膽的加密信息,而且發送加密後的密文啦!服務器
那麼李四怎麼肯定「公鑰」確實來自於張三本人呢?好辦!架構
張三:四兒,接好了,這是個人公鑰:fewfeef#¥#@#@#R###。 李四:三哥,別急嘛,12345? 張三:上山打老虎! 李四:歐了,這是我想對你說的話:$IJ4#(##(#(! 張三:好,講究!
也就是說李四爲了確認張三是否是張三本人,李四先和張三對了一下「暗號」,若是暗號不對,李四就不相信發過來的公鑰。學習
「我怎麼感受哪裏有點不對呢?」,嗯,我也以爲哪裏不對,由於上面說,黑客小劉正在監聽李四和張三的對話,這麼明顯的,弱智的,坑爹坑隊友的暗號,黑客小劉立馬就怒了:「把老子當白癡麼?!這點小伎倆我都看不出?!」,因而,黑客小劉就學會了這個暗號,當下次李四再想對暗號的時候,黑客小劉能夠截斷張三和李四的信號,僞裝是張三:加密
黑客小劉:四兒,上次那個公鑰我不用了,這是個人新公鑰:#¥#@#3@223#53R2#5##。 李四:哦.......12345? 黑客小劉:哎,你還不相信你三哥?上山打老虎! 李四:哈哈,三哥你看看這個計劃如何?2g3n&&$@#(#@) 黑客小劉:很好(邪惡的笑) 李四:...
這樣的話,李四仍是被騙了,hmmm,那怎麼辦呢?李四想了一招,因而有了下面的對話:
黑客小劉:四兒,最近有什麼新計劃沒?。 李四:沒。。。有。。。。 黑客小劉:沒有?我是你三哥,你說吧。 李四:那你先把你的證書給我看看? 黑客小劉:....神馬證...書..?上山打老虎! --- 李四已下線 ---
哈哈,原來,李四自從上次被坑了以後私下裏去找了一個叫「王五」的大哥,想尋求幫助,王五說這個事不難,王五對李四說:「若是你相信我,那麼我就來做證人證實張三是張三」。
李四說:「那沒問題,那你怎麼證實張三是他本人?」。
「我能夠給張三頒發一個證書!只要他給你看到這個證書,你就相信他是張三」,王五說。
李四思考了片刻又問道:「那我怎麼證實這個證書不是僞造的呢?」
王五說:「由於我能夠給你一個神器,這個神器可以讓你分辨這個證書確實是我頒發的!」。
「哇!這麼吊!那快給我!」,李四渴望的眼神中又閃爍着對王五的崇拜!
其實,這個神奇呢,很簡單,你想到了嗎?嗯,因而,王五就把這個神器交給了李四,這個神器是:「王五的公鑰」
!。
哈哈哈哈哈哈。。。
「王五的公鑰」!
「王五的公鑰」!
「王五的公鑰」!
明白了麼?明白了麼?明白了麼?重要的事情說三遍。
來,咱們先來整理一下整個過程,李四苦惱於沒法分辨出張三是否是他本人,因而去求助於「王五」大哥,但願王五大哥可以幫助證實「張三」是張三,而後王五大哥找到張三,親自拿到了張三的公鑰,檢查完畢以後,準備了一份證書,同時簽上了本身的」王五「大名,交給了張三,今後之後張三再和李四聊天的時候,就能夠出示本身的「證書」,證實他是張三本人了。
其實到這裏,整個過程和現實生活中的「公證」過程相似,好比你辛苦努力的學習,終於獲得了本身的大學畢業證,可是在現實生活中也有不少投機分子經過非法機構辦假證,這樣對像你同樣努力學習的同窗就不公平,因此用人單位爲了證實你給他們的畢業證確實是你的,他們怎麼辦呢?他們要求你去「公證處」去公證一下你的畢業證!公證處這裏就是大哥「王五」的角色,用人單位很信任「公證處」,因此只要你拿着「公證處」公證好的文件,用人單位(李四)也就相信了,這個畢業證(公鑰)確實是你的。
等一下,公證處的「公證文書」也能夠造假啊。
我。。。。
嗯,是的,我還沒說完,上面王五給李四說了:
「由於我能夠給你一個神器,這個神器可以讓你分辨這個證書確實是我頒發的!」。
咱們也知道了,這個神器就是王五的一個公鑰,那麼怎麼才能作到證書沒有被修改或者僞造呢?
原來,王五的簽名不是普通的簽名,也不是像公證處那種普通的蓋章,而是「電子簽名」!由於王五他也有本身的一對「私/公鑰」,因此他把張三的「我的信息」以及「公鑰信息」用他的私鑰加密成「密文」,把這個密文當作「電子簽名」簽在了證書上,而後這個證書就被稱爲「電子證書」,最後再把本身的公鑰送給了李四,那麼李四收到張三給的證書以後,就能夠利用王五給的公鑰進行解密證書上面的簽名,由於證書上的簽名是用王五私鑰加的密,因此相應的,也只能用王五的公鑰進行解密,李四最後將解密出來的公鑰信息和收到的公鑰信息進行比對,若是信息一致,就證實了兩個問題:
最後的最後,由於在這裏「王五」的神器(公鑰)太關鍵,它可以決定其餘人的證書是否真實有效,因此咱們把「王五」的公鑰叫作「根證書」
!
ok,問題順利解決!
上概念時間。。
公開密鑰基礎建設(英語:Public Key Infrastructure,縮寫:PKI),又稱公開密鑰基礎架構、公鑰基礎建設、公鑰基礎設施、公開密碼匙基礎建設或公鑰基礎架構,是一組由硬件、軟件、參與者、管理政策與流程組成的基礎架構,其目的在於創造、管理、分配、使用、存儲以及撤銷數字證書。密碼學上,公開密鑰基礎建設藉着數字證書認證機構(CA)將用戶的我的身份跟公開密鑰連接在一塊兒。對每一個證書中心用戶的身份必須是惟一的。連接關係經過註冊和發佈過程建立,取決於擔保級別,連接關係可能由CA的各類軟件或在人爲監督下完成。PKI的肯定連接關係的這一角色稱爲註冊管理中心(Registration Authority,RA)。RA確保公開密鑰和我的身份連接,能夠防抵賴。
簡單來講,PKI就是利用非對稱加密技術爲開展安全信息交換提供了一種系統和規範。同時,爲了整個系統能運轉,一些「特別」的機構也是須要做爲「值得信任的第三方」來接受我的或公司提交的「認證申請」。
registration authority (RA), 註冊機構,負責接受來自我的和公司的「認證申請」,RA負責審覈證書申請者的真實身份,審覈經過以後,將申請送給 certificate authority (CA)證書機構,CA將對這些申請簽名,並頒發給申請者電子證書,而後申請者獲得這些證書以後能夠好比:安裝在服務器上。
CA機構好比有:digicert,verisign
上面咱們說到了PKI,咱們來看一個具體的例子,以便讓你們更直觀的理解,咱們就拿segmentfault爲例。
咱們能夠看到這裏顯示sf安裝了證書,而且顯示是valid
,證實:
- sf是sf,我沒有被劫持到其餘站點 - 我和sf以前的通訊是加密的,安全的,其餘人竊取不到
那麼瀏覽器是怎麼驗證的sf的證書的呢?還記得上面我提了一句「根證書」麼?由於通常咱們去申請證書都是經過CA機構,同時你們都信任CA機構好比digicert,verisign,那麼咱們就能夠事先將這些CA機構的「神器」安裝到咱們的電腦上,也就是這些CA機構的"公鑰",咱們也稱它們爲「根證書」
。這些根證書是預先安裝在咱們電腦上的,因此每當咱們訪問segmentfault的時候,若是segmentfault服務器上安裝了證書,他想和咱們創建安全通訊,就比如上面例子中,張三直接把公鑰發給李四同樣,在這裏:
segmentfault說:「hi,咱們創建安全通訊吧,這是個人公鑰」 你的瀏覽器:「你怎麼證實你的公鑰是你的呢?」 segmentfault說:「這是個人證書,請查看」
而後segmentfault就把安裝在服務器上的證書傳給你的瀏覽器,由於你的瀏覽器已經有一些神器「根證書」的存在,因此這些根證書(CA機構的公鑰)就能夠來「解密」sf發過來的證書上的簽名,而後對比一下解密後的信息和sf證書中所呈現的信息是否一致,若是一致,就ok拉!
最後上一個截圖:
你們注意,最上面「DigiCert Global Root CA」,說明咱們使用digicert這個CA組織的根證書來進行認證sf的證書,而後digicert替咱們證實了sf證書的合理性:「This certificate is valid",同時給我列出來證書中的一些詳細信息,好比:證書的持有者,證書的過時時間,證書中所攜帶的「公鑰」信息(用來驗證你獲得的公鑰確實是sf的),而後還有其餘一些信息,感興趣的同窗能夠深究一下了!
更多內容歡迎訪問:做者博客
謝謝!