一、網際網路存在的安全問題:
1、傳輸内容被偷窺,可使用加密資料解決資料的機密性問題;
2、傳輸内容被篡改,可使用單向加密解決資料的一緻性問題;
3、傳輸方身份無法得到驗證,可使用數字證書解決身份驗證問題;
二、加密和解密
|—————|
明文 ——-> | 轉換規則 | ——-> 密文 (加密)
|—————|
|—————|
密文 ——-> | 轉換規則 | ——-> 明文 (解密)
|—————|
一般來說通訊安全是通過密鑰而不是通過轉換規則來保證。
三、大話加密發展史
第一回合A和B直接使用明文通信
|—————|
A ——> | AABBCC | ——> B
|—————|
點評:僅能在可信的網絡環境下使用,否則資訊容易洩露
改進:可使用加密算法保證資料的機密性
對稱加密
1、特點:
a、加密密鑰和解密密鑰相同
b、需要為每個通信對端儲存一個單獨的密鑰
2、常用的對稱加密算法:
DES(支援56bits密鑰長度)、3DES(三重DES加密)、AES(支援128bits密鑰長度)
-------------------------------------------------------------------------------------------------------------------------------
第二回合A在通信之前把加密密鑰傳給B,之後雙方使用密文進行通信
|—————|
A ——> | XXXXXX | ——> B
|—————|
點評:在一定程度上提高了通信的安全性,但是密鑰的傳輸還是明文,容易被第三方截獲
改進:可使用DH算法實作密鑰的交換
DH交換算法
1、迪菲-赫爾曼密鑰交換(Diffie–Hellman key exchange,簡稱“D–H”) 是一種安全協定。
它可以讓雙方在完全沒有對方任何預先資訊的條件下通過不安全信道建立起一個密鑰。這個密鑰可以在後續的通訊中作為對稱密鑰來加密通訊内容。
2、交換過程簡述:
A發送兩個公開數g,p,M給B ####根據g,p,M很難推導出a####
B求出N再發送給A,雙方得到相同的值K,即協商的共享密鑰
A B
|——————| g,p,M |——————|
| a,g,p | ————————> | b |
| M = g^a%p| N | N = g^b%p |
| K = N^a%p | <———————— | K = M^b%p |
|——————| |——————|
(g^a%p)^b%p = g^ab%p = (g^b%p)^a%p
此處涉及的知識還有IKE(Internel Key Exchange)。
-------------------------------------------------------------------------------------------------------------------------------
第三回合A和B先使用DH協商對稱加密密鑰,然後使用該密鑰加密通信内容
|—————|
A ——> | XXXXXX | ——> B
|—————|
點評:雖然通信過程無法被第三方偷窺,但是還是通信的内容未遭到第三方的破壞
改進:使用單向加密算法保證通訊資料的完整性
單向加密
1、特征:
輸入相同輸出必然相同;
雪崩效應:輸入的一點點變化會導緻結果很大的不同;
定長輸出:輸出的長度是固定的;
不可逆:無法從輸出結果推倒出輸入内容;
2、常用的單向加密算法:
MD4、MD5(128bits輸出長度)、SHA1(160bits輸出長度)、CRC32校驗算法
-------------------------------------------------------------------------------------------------------------------------------
第四回合A先對通信内容進行一個單向加密,并把結果追加在原資料尾部,最後對整個資料加密
|—————| ——|
A ——> | XXXXXX | XX | ——> B
|—————| ——|
B收到資料之後先解密,然後對資料進行單向加密,把加密結果與資料尾部的加密結果對比,如果相同說明傳輸内容沒有被破壞,否則丢棄該消息。
點評:此方法可以檢測出傳輸的消息的完整性,但卻無法驗證發送方就是A
改進:使用非對稱加密算法驗證發送方身份
非對稱加密
1、特征:
有公鑰和私鑰兩種密鑰,且公鑰可以從私鑰中導出;
有效的簡化了密鑰管理,通信方隻需要儲存一份私鑰和公鑰即可;
主要用途是進行數字簽名;
2、使用方式:
使用私鑰加密公鑰解密,由于私鑰一般由所有者儲存,是以可以用于身份驗證
使用公鑰加密私鑰解密,但由于比較耗時是以一般不使用此方式加密資料
3、常用的加密算法:
RSA,可用于加密和簽名
DSA,隻能用于簽名
-------------------------------------------------------------------------------------------------------------------------------
第五回合A首先向B發送自己的公鑰,然後使用自己的私鑰對通信内容進行加密
|—————| ——|
A ——> | XXXXXX | XX | ——-> B
|—————| ——|
同樣地,B收到A發來的消息,先用A的公鑰解密,解密成功說明消息的确是A發來的消息
然後用單向加密算法檢驗消息的完整性;
點評:1、使用非對稱加密算法進行資料加密效率低下;
2、如果此時有C向B發送公鑰并聲稱自己是A,B并不能識别出發送方是否為真正的A
改進:1、僅使用非對稱加密算法加密對稱密鑰,一旦對稱密鑰傳輸到對方後就使用對稱加密
2、使用PKI體系來驗證發送方的身份
PKI(Public Key Infrastructure)
1、工作原理:
PKI/CA 的工作原理就是通過發放和維護數字證書來建立一套信任網絡,在同一信任網絡中的使用者通過申請到的數字證書來完成身份認證和安全處理。
2、CA(Certificate Authority,認證中心)
RootCA,信任關系鍊的根,信任該CA就要信任該CA認證的所有子CA和其子CA簽發的證書
一個認證中心是以它為信任源,由她維護一定範圍的信任體系,在該信任體系中的所有使用者、伺服器,都被發放一張數字證書來證明其身份已經被鑒定過,并為其發放一張數字證書,每次在進行交易的時候,通過互相檢查對方的數字證書即可判别是否是本信任域中的可信體
3、RA (Registration Authority)注冊機構
注冊中心負責稽核證書申請者的真實身份,在稽核通過後,負責将使用者資訊通過網絡上傳到認證中心,由認證中心負責最後的制證處理。證書的吊銷、更新也需要由注冊機構來送出給認證中心做處理。總的來說,認證中心是面向各注冊中心的,而注冊中心是面向最終使用者的,注冊機構是使用者與認證中心的中間管道。
4、數字證書:
a、數字證書就像日常生活中的身份證、駕駛證,在您需要表明身份的時候,必須出示證件來明确身份;
b、數字證書内容:x509标準證書
—————————————————————————————————————-
|#公鑰及其有效期限#。證書該如何被使用。證書的合法擁有者。證書頒發機構資訊。|
| —————————————————————————————————————
| *****************CA私鑰加密的特征碼*********************** |
|—————————————————————————————————————
#########CA使用自己的私鑰對該内容進行加密,說明CA認可該證書裡的資料###########
-------------------------------------------------------------------------------------------------------------------------------
第六回合
在PKI體系下,所有的通信端都應該信任RootCA,并持有RootCA的自簽名證書ca.crt。
1、A向CA注冊了自己的證書,在與B通信之前先把證書發送給B
|—————|
A ——> | A.CRT | ——-> B
|—————|
B收到該證書之後,使用CA的公鑰(ca.crt中含有)對該證書驗證,看是否是RootCA信任的。如果是的話就說明證書中包含的公鑰是真正的A的。
2、A向B發送對稱密鑰,并使用自己的私鑰加密
|—————|
A ——> | ShareKey | ——-> B
|—————|
3、A和B之間使用對稱加密算法對通信内容加密
|—————| ——|
A ——> | XXXXXX | XX | ——-> B
|—————| ——|
點評:完美解決了上述的所有問題,這基本就是現代網際網路資料通信的模型了;)
未完待續,coming soon…