http筆記整理:數字簽名與證書

實現完整性的手段主要是摘要算法(Digest Algorithm)

也就是常說的散列函數、哈希函數(Hash Function)

摘要算法理解成特殊的“單向”加密算法,它只有算法,沒有密鑰,加密後的數據無法解密,不能從摘要逆推出原文。

摘要算法實際上是把數據從一個“大空間”映射到了“小空間”,所以就存在“衝突”(collision,也叫碰撞)的可能性,就如同現實中的指紋一樣,可能會有兩份不同的原文對應相同的摘要。

MD5(Message-Digest 5)、SHA-1(Secure Hash Algorithm 1)

它們就是最常用的兩個摘要算法,能夠生成 16 字節和 20 字節長度的數字摘要。但這兩個算法的安全強度比較低,不夠安全,在 TLS 裏已經被禁止使用了

TLS 推薦使用的是SHA-2

SHA-2 實際上是一系列摘要算法的統稱,總共有 6 種,常用的有 SHA224、SHA256、SHA384,分別能夠生成 28 字節、32 字節、48 字節的摘要。

摘要算法保證了“數字摘要”和原文是完全等價的。所以,我們只要在原文後附上它的摘要,就能夠保證數據的完整性。

摘要算法不具有機密性,如果明文傳輸,那麼黑客可以修改消息後把摘要也一起改了,網站還是鑑別不出完整性。

真正的完整性必須要建立在機密性之上,在混合加密系統裏用會話密鑰加密消息和摘要。 

哈希消息認證碼(HMAC)

 

數字簽名

加密算法結合摘要算法,我們的通信過程可以說是比較安全了。但這裏還有漏洞,就是通信的兩個端點(endpoint)

黑客可以僞裝成網站來竊取信息。而反過來,他也可以僞裝成你,向網站發送支付、轉賬等消息,網站沒有辦法確認你的身份,錢可能就這麼被偷走了

使用私鑰再加上摘要算法,就能夠實現“數字簽名”,同時實現“身份認證”和“不可否認”。

數字簽名的原理其實很簡單,就是把公鑰私鑰的用法反過來,之前是公鑰加密、私鑰解密,現在是私鑰加密、公鑰解密

因爲非對稱加密效率太低,所以私鑰只加密原文的摘要,這樣運算量就小的多,而且得到的數字簽名也很小,方便保管和傳輸。

簽名只有用私鑰對應的公鑰才能解開,拿到摘要後,再比對原文驗證完整性,就可以像簽署文件一樣證明消息確實是你發的

 

CA(Certificate Authority,證書認證機構)。它就像網絡世界裏的公安局、教育部、公證中心,具有極高的可信度,由它來給各個公鑰簽名,用自身的信譽來保證公鑰無法僞造,是可信的

知名的 CA 全世界就那麼幾家,比如 DigiCert、VeriSign、Entrust、Let’s Encrypt 等,它們簽發的證書分 DV、OV、EV 三種,區別在於可信程度

DV 是最低的,只是域名級別的可信,背後是誰不知道。EV 是最高的,經過了法律和審計的嚴格覈查,可以證明網站擁有者的身份(在瀏覽器地址欄會顯示出公司的名字,例如 Apple、GitHub 的網站)

 

 

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