1. 程式人生 > >常見加密演算法&HTTP資料傳遞的加密

常見加密演算法&HTTP資料傳遞的加密

密碼演算法

1.數字簽名

摘要演算法,對任意長度的資料,計算出固定長度的16進位制字串。

MD5:128bit,32位十六進位制
SHA1:160bit,40位十六進位制

用途:校驗資料的完整性;密碼的傳輸和儲存

2.對稱加密

加密演算法,加密和解密使用相同的金鑰(或者使用兩個可以簡單的互相推算的金鑰)

常見演算法:DES、AES、3DES、Blowfish、IDEA、RC5、RC6。

優點:加密解密速度快,對資源消耗小
缺點:無法保證金鑰傳輸的安全性

3.非對稱加密

加密演算法,加密解密由公鑰+私鑰完成,公鑰是公開出去的,私鑰是自己儲存的。

常見演算法:RSA

包含:
KeyGen:金鑰生成演算法,PK,SK=KeyGen()
Encrypt:加密演算法,X=Encrypt()
Decrypt:解密演算法,M=Decrypt()
Sign:簽名演算法,sign=Sign(SK,M)
Verify:驗證演算法,b=Verify(PK,sign,M)
注:PK:公鑰。SK:私鑰。M:明文。X:密文。sign:明文的簽名。

用途:
a.公鑰加密,私密解密。用於傳輸資料的加密。
b.私鑰簽名,公鑰驗籤。用於傳輸資料的完整性校驗。

優點:加密解密演算法使用不同的金鑰。
缺點:加密解密速度慢,資源消耗大。

HTTP資料傳遞的加密

HTTP對稱加密

1.客戶端生成對稱金鑰K
2.明文傳遞K到服務端
3.伺服器接收到K,明文加密為密文返回
4.客戶端通過K,將密文解密

缺點:金鑰傳輸過程安全性無法保證,會被嗅探

HTTP非對稱加密

1.客戶端隨機生成非對稱加密金鑰PK1,SK1
2.客戶端把PK1明文傳送給服務端
3.服務端隨機生成對稱加密K,並用PK1機密後傳送給客戶端
4.客戶端拿到通過PK1加密後的K,通過SK1解密後,獲取到伺服器端發過來的對稱加密金鑰
5.雙方完成對稱加密金鑰的交換,接下來就可以用K來進行資料加密傳輸

缺點:缺乏身份驗證機制,容易受到中間人攻擊

HTTPS傳輸

CA:證書管理機構。負責發放證書,確保證書申請者的身份和合法性等。

1.客戶端發出請求,告訴伺服器支援的加密演算法,SSL/TLS協議版本號等
2.服務端選出最終演算法和協議回覆客戶端,並帶上伺服器的證書(包含PK)
3.客戶端校驗證書的合法性並取出伺服器PK,使用最終演算法生成對稱金鑰K
4.客戶端使用服務端的PK加密K後傳送給服務端
5.服務端使用SK解密出對稱加密K,並校驗資料的完整性,然後使用K加密資料返回給客戶端
6.客戶端使用K解密資料並校驗資料的完整性,握手完畢
7.雙方完成對稱加密金鑰的交換,接下來進行資料加密傳輸