通信安全:哈希、加密、證書、簽名、密鑰協商、ECDH、TLS、DTLS

通信風險

  1. 竊聽風險(eavesdropping):第三方可以獲知通信內容。
  2. 篡改風險(tampering):第三方可以修改通信內容。
  3. 冒充風險(pretending):第三方可以冒充他人身份參與通信。

風險防範

  1. 信息加密傳輸,第三方無法竊聽。
  2. 增加校驗機制,一旦被篡改,通信雙方會立刻發現。
  3. 配備身份證書,防止身份被冒充。

​哈希(Hash)

哈希也叫散列,是把任意長度的輸入通過散列算法變換成固定長度的輸出,該輸出就是散列值,也叫摘要(Digest)。

通信安全:哈希、加密、證書、簽名、密鑰協商、ECDH、TLS、DTLS

哈希是一種壓縮映射,通常不可逆

這種轉換是一種壓縮映射。也就是,散列值的空間通常遠小於輸入的空間,不同的輸入可能會散列成相同的輸出,所以不可能從散列值來確定唯一的輸入值,但如果輸出的位數足夠,不同輸入散列成相同輸出的概率非常非常小。

簡單的說,散列就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的過程

散列是不可逆的,也就是無法通過輸出還原輸入,此特性常被用於密碼保存。

SHA-512、MD5等都是著名的散列函數,MD5生成的散列碼是128位,甚至MD5就是哈希的同名詞,你可以通過網站:https://passwordsgenerator.net/sha512-hash-generator/ 在線計算哈希。

散列有什麼用?

  1. 散列可用於保存密碼,明文保存密碼是危險的。通常我們把密碼哈希加密之後保存,這樣即使洩漏了密碼,因為是散列後的值,也沒有辦法推導出密碼明文(字典攻擊難以破解)。驗證的時候,只需要對密碼(明文)做同樣的散列,對比散列後的輸出和保存的密碼散列值,就可以驗證同一性。
  2. 可用於驗證下載文件的完整性以及防篡改,比如網站提供安裝包的時候,通常也同時提供md5值,這樣用戶下載之後,可以重算安裝包的md5值,如果一致,則證明下載到本地的安裝包跟網站提供的安裝包是一致的,網絡傳輸過程中沒有出錯。

加密

加密就是把明文變成密文的過程,解密就是反方向把密文變成明文

比如著名的凱撒密碼,就是把每個字對應到另一個,這樣的話,只要有密碼本,就能對照完成加解密。比如最簡單的,對於英文26個字母,每個字母右移3個,abc變成def,這也是一種加密,當然這種加密很簡單,很容易被破譯。

而諸如AES(高級加密標準)、3DES(三重數據加密算法)則被公認為很難破解,不過山東大學女教授王小云很厲害,破解了MD5和SHA-1,迫使加密標準升級,最終當上了院士。

對稱加密

對稱加密就是加解密的密鑰是一樣的,優點是快,這也是傳統的加密方式,像AES、3DES都是對稱加密。

非對稱加密

非對稱加密用於加解密的密鑰不一樣,有2個密鑰,公鑰和私鑰,公鑰可以公開,私鑰妥善保管。RSA、ECC(橢圓曲線加密算法)、DH(密鑰交換算法)這些都是非對稱加密。

非對稱加密很慢,有多慢?相比對稱加密慢1000倍,因為慢,所以它常用於密鑰協商(Handshake),協商出會話密鑰後,再用對稱密鑰加密通信數據。

1976年,Whitfield Diffie和Martin Hellman首次提出了非對稱加密的概念,該算法被稱為Diffie-Hellman密鑰交換。然後在1978年,麻省理工學院的Ron Rivest,Adi Shamir和Leonard Adleman發表了RSA 算法。這些都可以被視為非對稱加密的基礎。

非對稱加密也稱為公鑰基礎結構,又稱PKI。非對稱加密的提出是密碼學上的一次革命,影響深遠。

非對稱加密算法用私鑰加密,用公鑰解密,或者用公鑰加密,用私鑰解密。

證書

證書就是為了證明我是我,比如你要訪問中國銀行網站,但中行官網如何證明它是中行官網呢?答案就是數字證書。

CA是數字證書中心,服務器需要找CA做認證,讓CA給自己頒佈數字證書,數字證書內一般包含服務的一些信息、以及服務器的公鑰,通過CA的私鑰加密後,產生的數字證書,因為CA的權威性,且它的公鑰天下皆知,所以,如果你能用CA的公鑰解開證書,那便可證明該證書一定是CA頒發的,要不然它不會有CA的私鑰,也便沒法產生可用CA公鑰解密的證書。

所以,由此可見,數字證書用到了非對稱加密。

數字簽名

日常生活中也有簽名,每個人的筆跡是不一樣的,你刷卡消費後在賬單簽上大名,服務員校驗過之後保存下來,你哪天賴賬,便可以有簽名為證,因為別人寫的字跟你的筆跡終有差別。

那數字簽名是什麼呢?比如a發一封email,接收方怎麼證明這封信是a寫的?

本質上,數字簽名也是利用了非對稱加密。

前面講了,非對稱加密有公鑰和私鑰,如果發生方用私鑰加密,然後接收方用發送方的公鑰可以解密,那便可以證明是從某發送方發送的,因為別人拿不到你的私鑰,也便無法用你的私鑰加密,你不能抵賴。

數字簽名通常先對內容算哈希,產生內容摘要,再用私鑰加密,得到簽名。

密鑰協商

下面舉一個例子來說明這幾個問題:

張三有2把鑰匙,一把公鑰,公告天下,一把私鑰,妥善保管,只有自己知道,很明顯,非對稱加密。

李四給張三寫信,寫完之後,用張三的公鑰加密,通過郵局寄給張三,即使郵遞員拆開信封看,他也看不懂,因為內容是密文,只有張三的密鑰才能解密。

張三收到信後,用私鑰解密,可以正常閱讀。

現在張三要給李四回信,寫完後,用hash函數生成摘要digest。

然後張三,再用私鑰對摘要加密,生成數字簽名signature。

然後把簽名附在信的下面,一起發給李四。

過程是:信明文 -> hash -> digist -> 私鑰加密 -> signature。

李四收到回信後,用張三的公鑰對數字簽名解密,得到摘要,由此證明,信確實是張三發出的,為什麼?因為如果不是張三發的,那寫信的人就沒有張三私鑰,用別的私鑰加密得到的簽名,是無法用張三的公鑰解開的。

李四,再對信的內容做hash,得到摘要,與上一步得到的摘要對比,如果一致,則證明信的內容沒有被修改過,信的內容是完整的。

複雜的情況出現了。

王五,用自己的公鑰替換李四保存的張三的公鑰,也就是王五欺騙了李四,李四誤把王五的公鑰當張三的公鑰,這樣一來,王五就能冒充張三給李四寫信(王五用自己的私鑰加密)。

問題是什麼?問題是李四不能確信自己保存的公鑰真的是張三的公鑰。如果客戶端電腦上存的工商銀行官網的公鑰,實際上是騙子公司的公鑰,那就麻煩大了。

怎麼破?讓張三去認證中心CA(Certificate Authority),為公鑰做認證,怎麼做呢?CA中心用自己的私鑰,對張三的公鑰和其他相關信息一起加密,生成數字證書(Digital Certificate)。

張三拿到數字證書後,以後給李四回信,在簽名的同時,附帶上數字證書。

李四收到信之後,從CA的公鑰解開數字證書,取出張三的公鑰(一定是真的),然後就能放心的愉快的按之前的流程解開簽名了。

數字證書加入後,核心區別就是張三的公鑰不再保存在李四處,而是通過數字證書下發。

為什麼數字證書裡的張三的公鑰一定是真的呢?因為CA是權威機構,假設全世界就一家(其實不止,但也不多),它的公鑰天下盡知,就是固定的串,所以能用CA公鑰解開的證書,一定是CA頒佈的,因為CA用它的私鑰加密產生的證書。很明顯,非對稱加密能用於證明我是我。

密鑰交換算法

著名的DH密鑰交換算法,這個算法很有意思,也很巧妙,簡而言之,就是通信雙方交換一點信息(不怕被偷看到),然後就在兩端,分佈產生出一個相同的密鑰,神奇啊。

有一個很有意思的例子。

通信安全:哈希、加密、證書、簽名、密鑰協商、ECDH、TLS、DTLS

Alice和Bob要協商出一個公共的顏色,他們可以交換信息,但交換的信息,可以被偷看到,怎麼辦?既能協商出公共顏色,又不能讓別人知道呢。

  1. 首先,他們有公共的顏色,都是1毫升黃色。
  2. 然後Alice挑選一個私密的紅色,Bob選綠色,都是1毫升。只有自己知道,不會告訴別人。
  3. 然後Alice把黃色和紅色混合在一起,Bob把黃色和綠色混合在一起,各為2毫升。
  4. 然後,他們把自己混合後的2毫升顏色液體,發給對方。
  5. 然後,用自己的一毫升私密顏色液體,跟從對方那裡收到的2毫升液體,混合,下面就是見證奇蹟的顏色的時刻,他們得到了相同的顏色,而第三方並不能通過偷看他們傳遞的數據知道他們最終得到的顏色(基於一個假設,圖裡有說明)。

密鑰交換算法的原理跟這個差不多,網上有大量的資料講述這個問題,我覺得理解了上面的例子,再看ECDH便也不難了。

眾所周知http是互聯網協議,但是它不夠安全,所以後面有改進版的https,其實就是多了一個TLS,這個是傳輸層加密,本質上,就是通過handshake,協商出一個會話密鑰,後面的數據傳遞,都用這個密鑰做對稱加解密。

我們經常講安全通道,其實也就是協商出一個會話密鑰,他並不神秘。胡亂放幾張圖片吧。

為了減少這幾個RTT,又想了各種辦法,然後複用連接的話,就可以做到0RTT,1RTT了。

通信安全:哈希、加密、證書、簽名、密鑰協商、ECDH、TLS、DTLS
通信安全:哈希、加密、證書、簽名、密鑰協商、ECDH、TLS、DTLS
通信安全:哈希、加密、證書、簽名、密鑰協商、ECDH、TLS、DTLS
通信安全:哈希、加密、證書、簽名、密鑰協商、ECDH、TLS、DTLS
通信安全:哈希、加密、證書、簽名、密鑰協商、ECDH、TLS、DTLS

就說這些吧,最後拋幾個名詞,有興趣自行百度學習:DTLS,HMAC,AEAD,重放攻擊,放大攻擊,是不是很高端?

"


分享到:


相關文章: