AESDES等對稱加密算法,只有一個密匙,加解密速度優(yōu)于非對稱加密算法,弊端是,傳輸信息過程中,一旦密匙被盜,加密信息無法保證安全性。RSA等非對稱加密算法,公匙加密只有私匙能解密,私匙加密只有公匙能解密,但加解密要比對稱算法耗性能。原文信息數(shù)據(jù)較大,一般使用對稱加密算法進(jìn)行加解密,以保證傳輸性能和保密性問題。
數(shù)字簽名:對原文信息哈希出來的哈希值(簡稱信息摘要)進(jìn)行非對稱加密得到數(shù)字簽名。數(shù)字簽名用以保證完整性(信息傳輸時不被篡改)和有效性(信息使用者是否合法)。
不考慮中間人攻擊的情況下,對稱加密與非對稱加密算法在信息傳輸中的使用(以客戶端向服務(wù)端發(fā)送https請求獲取數(shù)據(jù)為例):
- 客戶端請求安全連接。
- 服務(wù)端將原數(shù)據(jù)通過哈希函數(shù)計算得到哈希值(摘要信息)。
- 將摘要信息通過服務(wù)端私匙加密生成數(shù)字簽名。
- 將原數(shù)據(jù)通過對稱密匙加密(加密數(shù)據(jù))與數(shù)字簽名一同傳輸給客戶端。
- 客戶端接收到加密數(shù)據(jù)和數(shù)字簽名后,將數(shù)字簽名通過客戶端持有的服務(wù)端公匙解密(若解密成功,則證明是服務(wù)端發(fā)送的數(shù)據(jù),否則,不是服務(wù)端發(fā)送的數(shù)據(jù),該操作保證有效性。)得到信息摘要, 將加密數(shù)據(jù)通過客戶端持有的對稱密匙解密,得到原數(shù)據(jù),并用該原數(shù)據(jù)通過哈希函數(shù)得到信息摘要,兩個信息摘要(哈希值)作對比,若相同,則確定原數(shù)據(jù)為被篡改(保證了完整性)。
以上流程幾個問題:
1、客戶端與服務(wù)端怎么持有約定的對稱密匙?
2、為何要有公匙私匙的存在?
3、客戶端怎么持有的服務(wù)端的公匙?
問題思考解析:
1、雙方數(shù)據(jù)交互,數(shù)據(jù)傳輸要進(jìn)行加密,獲取數(shù)據(jù)要進(jìn)行解密,使用對稱密匙,但發(fā)送對稱密匙給對方,傳輸過程中易被竊取,一旦竊取,保密性不能保證,因此引入了非對稱加密的機制。
2、非對稱加密,各自持有對方的公匙,來解密對方用私匙加密傳輸?shù)臄?shù)據(jù),問題出在,依然要將公匙傳送給對方,一旦公匙在信息傳輸過程中被竊取,中間人可以通過自己的公私匙做中間的調(diào)用,以達(dá)到竊取篡改信息的目的。那么,問題就出在,如何保證密匙安全的被對方持有。由此引入了第三方權(quán)威證書認(rèn)證機構(gòu)(CA)。
3、CA為公匙做認(rèn)證。證書認(rèn)證機構(gòu)用私匙將公匙和相關(guān)信息(一般包括對稱密匙和哈希摘要)進(jìn)行加密,生成數(shù)字證書。
4、客戶端擁有內(nèi)嵌的證書機構(gòu)頒發(fā)的數(shù)字證書及公匙。確保了公匙的安全性,隨之確保了對稱密匙的安全性,至此,信息的傳輸就有了保密性、有效性、完整性。