數字簽名與數字證書入門級解讀

2021-09-12 15:24:59 字數 2177 閱讀 1280

這篇文章不解釋具體的概念定義而是以通俗易懂的語言來解讀數字簽名與數字證書,我們先來理一理需要用到的知識點。

摘要演算法

摘要演算法是單向演算法,明文只能轉換成密文,密文卻無法轉換成明文,這種演算法也叫hash演算法,如sha1,md5,crc等。可以這樣理解,幾乎很難找到兩個不同的明文能生成同乙個摘要。所以摘要演算法能夠用於驗證資料的完整性,防篡改。

對稱加密

即加密和解密都用同樣的金鑰,如 aes,des。

非對稱加密

非對稱加密即有兩個金鑰,乙個用於加密(私鑰),乙個用於解密(公鑰),並且是成對出現。用乙個加密後需用另乙個解密。公鑰是公開的(大家都能看到),而私鑰只能自己知道。常見的演算法是rsa。

rsa演算法的原理是基於這樣的數學事實:兩個大質數相乘得到的大數難以被因式分解。即乙個大數很難被因式分解。

對稱加密和非對稱加密的作用都是對明文進行保護,但是他們都面臨著乙個問題,怎樣分發金鑰才安全?對稱加密需要在網路中傳輸金鑰顯然不安全,而非對稱加密確沒有該問題。由於非對稱金鑰的公鑰是公開的,所以即使在網路中傳輸也無所謂,所以現在網際網路上大多都使用的非對稱加密。但是這又產生了新的問題,怎樣保證公鑰的真實性,如果通訊中有中間人存在,並且它偽造了通訊呢?帶著這些問題,數字簽名和數字證書應運而生。

數字簽名的計算方法:算出內容hash值,然後用私鑰加密,這就是數字簽名。

客戶收到資訊後,用公鑰解密數字簽名得到hash值,然後算出內容的hash值,兩者相對比。

數字簽名的作用: 不可抵賴與資料完整性

不可抵賴:如果公鑰能解密,則內容一定是與該公鑰對應的私鑰加密而來,即可證明**。

資料完整性:數字簽名的hash值和自己計算出的hash值一致,即可證明該內容是完整的未經修改過。

但是數字簽名不能確保"公鑰"的真實性,第三方可偷換"公鑰",達到與偽伺服器通訊的目的,這樣又產生了數字證書。

由權威證書中心ca(certificate authority,簡稱ca)頒發,作用是證明"公鑰"的真實信。

數字證書裡面包含了伺服器的公鑰,伺服器的網域名稱以及伺服器所屬的公司資訊等內容,並且該資訊是用ca的私鑰進行加密的。客戶請求服務時,伺服器會同時傳送數字簽名和數字證書給客戶。證書工作流程如下:

伺服器向ca中心申請證書,ca負責核實伺服器的真實性,並在證書裡內建伺服器網域名稱證書使用者資訊

客戶瀏覽器或作業系統裡內建有權威ca的公鑰資訊(即ca公鑰不需要在網路中傳輸)

客戶請求服務時,伺服器把自己申請的數字證書和內容的數字簽名一同發給客戶

客戶收到資訊後在本地ca列表裡查詢ca公鑰對數字證書解密,拿到真正的簽名公鑰,再用該公鑰去解密數字簽名,拿到hash值去對比完整性

數字證書能解密就能證明它確實由ca所頒發,但還不能證明該證書是對應該伺服器的(因為如果偽造者也申請有正規的數字證書,並且他通過中間人的方式把真實伺服器的證書替換掉,用它的證書給傳你呢?)。那麼怎麼證明呢?證書裡是帶有伺服器網域名稱資訊的,只有訪問的網域名稱和證書裡面授權的網域名稱相匹配,那麼該證書才授信。

所以這兩點,保證了伺服器的公鑰的真實性。那麼如果有中間人攻擊的情況呢?即使中間人截獲了請求也沒法對內容進行修改,因為他沒有私鑰,沒法對內容進行加密。如果用自己的私鑰加密那客戶就沒法進行解密了。

這裡還有乙個疑問,萬一我通過網域名稱劫持的方式把對方的網域名稱攔截到我的伺服器,並在我的伺服器中匯入對方的證書呢,這種情況是否可行?這樣也不行,因為你還是沒有對方的私鑰,沒法對傳輸的資訊進行加密。

綜上,所以數字證書能保證伺服器公鑰的真實性,並且能夠防止中間人攻擊

漏洞

ca的公鑰是儲存在本地計算機列表的,如果手動往列表裡面匯入了不可信的ca公鑰,那麼ca就可以仿冒,失去了權威性。

瀏覽器顯示授信的站點就一定安全?

不一定!通常使用者是通過https判斷真實**,現在假冒**也用上了https,這部分極度依賴ca的可靠性,由於部分ca對申請證書的監管要求不高,導致釣魚**也能申請正規的ca證書。

普通使用者可能需要警惕,**使用ssl證書僅表示**加密傳輸資料,並不意味著它是乙個合法的**,或者它實際上是它聲稱的那個**。需要通過兩種方式來識別:

1.訪問的網域名稱是否顯示為你要訪問的伺服器網域名稱

2.檢視證書詳情裡的真實身份資訊是否為該**真實的身份資訊

參考

理解數字簽名和驗籤過程

數字簽名與數字證書

數字簽名 將 報文按雙方約定的hash 演算法計算得到乙個固定位數的 報文摘要。在 數學上保證 只要改動報文中任何一位,重新計算出的 報文摘要值就會與原先的值不相符。這樣就保證了報文的不可更改性。將該報文摘要值用傳送者的私人 金鑰加密,然後連同原報文一起傳送給接收者,而產生的報文即稱 數字簽名 數字...

數字簽名與數字證書

數字簽名 將 報文按雙方約定的hash 演算法計算得到乙個固定位數的 報文摘要。在 數學上保證 只要改動報文中任何一位,重新計算出的 報文摘要值就會與原先的值不相符。這樣就保證了報文的不可更改性。將該報文摘要值用傳送者的私人 金鑰加密 然後連同原報文一起傳送給接收者,而產生的報文即稱 數字簽名 數字...

數字簽名與數字證書

數字簽名 將 報文按雙方約定的hash 演算法計算得到乙個固定位數的 報文摘要。在 數學上保證 只要改動報文中任何一位,重新計算出的 報文摘要值就會與原先的值不相符。這樣就保證了報文的不可更改性。將該報文摘要值用傳送者的私人 金鑰加密,然後連同原報文一起傳送給接收者,而產生的報文即稱 數字簽名 數字...