Https的數字證書與數字簽名

本文介紹一下
爲了解決非對稱加密中公匙來源的不安全性。我們可以使用數字證書和數字簽名來解決。

1.數字證書的申請

在現實中,有一些專門的權威機構用來頒發數字證書,我們稱這些機構爲認證中心(CA Certificate Authority)。我們(服務器)可以向這些CA來申請數字證書。申請的過程大致是:自己本地先生成一對密匙,然後拿着自己的公匙以及其他信息(比如說企業名稱啊什麼的)去CA申請數字證書。CA在拿到這些信息後,會選擇一種單向Hash算法(比如說常見的MD5)對這些信息進行加密,加密之後的東西我們稱之爲摘要。單向Hash算法有一種特點就是單向不可逆的,只要原始內容有一點變化,加密後的數據都將會是千差萬別(當然也有很小的可能性會重複,有興趣的小夥伴鴿巢原理了解一下),這樣就防止了信息被篡改。生成摘要後還不算完,CA還會用自己的私匙對摘要進行加密,摘要加密後的數據我們稱之爲數字簽名。最後,CA將會把我們的申請信息(包含服務器的公匙)和數字簽名整合在一起,由此而生成數字證書。然後CA將數字證書傳遞給我們(這裏可能會引出另一個疑問,認證中心如何安全的將數字證書傳遞給服務器的呢?如果在傳遞的過程中,數字證書被中間人給替換了呢?對於這個問題,其實現在如果我們去申請,那麼認證中心是通過https傳遞給我們的。但是剛開始沒有https的時候呢?目前我是不太明白的,有興趣的同學可以一起研究下,我們就認爲數字證書不是誰都能申請的,要經過嚴格的認證才行,反正數字證書就可以安全的達到服務器)。

2.數字證書怎麼起作用

服務器在獲取到數字證書後,服務器會將數字證書發送給客戶端,客戶端就需要用CA的公匙解密數字證書並驗證數字證書的合法性。那我們如何能拿到CA的公匙呢?我們的電腦和瀏覽器中已經內置了一部分權威機構的根證書,這些根證書中包含了CA的公匙。
在這裏插入圖片描述

之所以是根證書,是因爲現實生活中,認證中心是分層級的,也就是說有頂級認證中心,也有下面的各個子級的認證中心,是一個樹狀結構,計算機中內置的是最頂級機構的根證書,不過不用擔心,根證書的公匙在子級也是適用的。

客戶端用CA的公匙解密數字證書,如果解密成功則說明證書來源於合法的認證機構。解密成功後,客戶端就拿到了摘要。此時,客戶端會按照和CA一樣的Hash算法將申請信息生成一份摘要,並和解密出來的那份做對比,如果相同則說明內容完整,沒有被篡改。最後,客戶端安全的從證書中拿到服務器的公匙就可以和服務器進行安全的非對稱加密通信了。服務器想獲得客戶端的公匙也可以通過相同方式。

下圖用圖解的方式說明一般的證書申請及其使用過程。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章