在學習TLS的握手程序之前,先復習一些基礎知識,
基礎知識
對稱加密演算法
對稱加密演算法的特點是加密密鑰和解密密鑰是同一把密鑰K,且加解密速度快,典型的對稱加密演算法有DES、AES等

非對稱加密演算法
非對稱加密演算法的特點是使用一對可互為加解密的密鑰,

一個自己保留,不能讓其他人知道,叫私鑰,
一個可以公開,叫公鑰

加密密鑰(即公鑰)PK是公開資訊,而解密密鑰(即私鑰)SK是需要保密的,加密演算法E和解密演算法D也都是公開的,雖然解密密鑰SK是由公開密鑰PK決定的,但卻不能根據PK計算出SK ,

典型的非對稱加密演算法有RSA、DSA等,
若欲RSA原理的,請參考如下兩篇網路上比較好的講解
https://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html
http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html
摘要演算法
摘要演算法又稱哈希演算法、散列演算法,它通過一個函式,把任意長度的資料轉換為一個長度固定的資料串(通常用16進制的字串表示),
F(M) = D
F是單向散列函式:即如果已知x,很容易計算F(x),但已知F(x),卻很難算出x,
常見的摘要演算法,如 MD5,SHA1,SHA512 等等,
MD5即Message-Digest Algorithm 5(資訊-摘要演算法),屬于摘要演算法,是一個不可逆程序,就是無論多大資料,經過演算法運算后都是生成固定長度的資料,結果使用16進制進行顯示的128bit的二進制串,通常表示為32個十六進制數連成的字串,

數字簽名
數字簽名就是用私鑰將摘要加密的結果,這樣能夠保證資料的完整性,防篡改,
E(D)=S

校驗資料的完整性
Bob 把要發送的明文生成摘要,摘要生成簽名,Bob把明文和摘要一并發送給Alice,

Alice收到郵差送來的訊息包,如何驗證訊息是完整的,未受篡改的呢?

Alice 需要做的是
- 明文算出摘要
- 通過Bob的公鑰和簽名反算出被Bob簽名的Hash值
若兩個值相等,則說明Alice拿到的原文的內容和Bob算hash值的時候的原文內容是一致的,也就是原文沒有被篡改,

簽名加密,與解密驗簽流程
若是Bob想要把機密檔案加密發給Alice, 并且還要防止被人篡改, Bob需要將原文簽名,并將原文和簽名一并加密,然后將加密后的密文發出給Alice,
實際通信中,非對稱加密由于效率低的原因往往僅僅用來協商生成對稱密鑰,在雙方協商出對稱密鑰后,原文和簽名將使用對稱密鑰加密,
Bob:
* 將原文生成摘要
* 將摘要生成簽名
* 將原文和簽名一并加密
最終生成的密文發出

Alice在收到密文后,
* 使用協商的對稱密鑰解密
* 將原文內容算出摘要
* 將簽名內容通過驗簽演算法算出被簽名前的值 (即Bob算出的摘要值)
Alice需要對比第二步和第三步中算出的值,若相等,則說明資料是完整的,未被篡改的,

那么:
對稱密鑰是如何安全傳遞給通信雙方的?
簽名和驗簽的原理是什么?
答案在 ECDH,ECDHE, ECDHA
個人用于學習交流的公眾號

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/323491.html
標籤:其他
