以A將信息發(fā)送給B為例
對稱加密:A生成密鑰,將密鑰給B。A使用密鑰將信息進行加密片习,將加密后的信息發(fā)送給B,B得到信息后蹬叭,使用A給他的密鑰進行解密藕咏。
對稱加密中的問題:對稱加密中的密鑰很容易被第三方獲取。
非對稱加密:A要將信息發(fā)送給B秽五,首先B生成密鑰孽查,B生成的密鑰中包含公鑰和私鑰(公鑰加密的文件只有私鑰能夠解開,私鑰加密的數(shù)據(jù)只能公鑰解)坦喘,然后B將公鑰給A盲再,A得到數(shù)據(jù)后通過B給他的公鑰進行加密數(shù)據(jù)西设。A將加密后的數(shù)據(jù)發(fā)送給B;
非對稱加密過程中的問題:
- 在B將公鑰交給A的過程中答朋,可能會被第三方C進行攔截贷揽,然后C也生成公鑰以及私鑰。 然后C將自己的公鑰發(fā)送給A梦碗。A收到公鑰之后使用C提供的數(shù)據(jù)對信息進行加密禽绪,就會導致信息的泄露。
問題:A得到B的公鑰之后怎樣確保得到的公鑰是B產(chǎn)生的呢洪规?
解決辦法:通過第三方機構(CA)印屁。B產(chǎn)生公鑰和私鑰之后,先將公鑰交給CA進行擔保斩例,CA為B出示一份數(shù)字證書(數(shù)字證書中包含B的公鑰)雄人,B再講數(shù)字證書交給A。A收到數(shù)字證書之后念赶,A可以驗證數(shù)字證書是否是CA頒發(fā)的础钠,如果是,則可以確定此密鑰是B產(chǎn)生的叉谜。(問:如果C攔截數(shù)字證書呢旗吁?答:密碼學沒有安全性可言,密碼學必須以一個信任點(CA)來建立密碼結構)
舉例:在互聯(lián)網(wǎng)上進行登錄銀行網(wǎng)站的時候正罢,銀行網(wǎng)站首先向用戶出示數(shù)字證書(將公鑰交給用戶)阵漏,用戶拿到數(shù)字證書的時候,首先驗證此證書是否是銀行的(瀏覽器內(nèi)部自帶校驗功能翻具,判斷數(shù)字證書是否有CA頒發(fā))履怯。驗證成功之后用戶再使用此數(shù)字證書(證書中的公鑰)對用戶名和密碼進行加密。 - C如果攔截到B給A的數(shù)字證書之后裆泳。當A將加密之后的信息發(fā)送給B的過程中叹洲,C將信息攔截下來,再將自己的信息使用數(shù)字證書進行加密發(fā)送給B工禾。
問題:B收到A的回信時运提,如何判斷此信息是由A發(fā)送的呢?
解決辦法:A產(chǎn)生公鑰和私鑰闻葵,A將帶有自己公鑰的數(shù)字證書發(fā)送給B民泵。然后A使用B的公鑰對信息進行加密之后,A得到信息的摘要(數(shù)字簽名槽畔,即使用MD5算法得到信息的編碼)栈妆,A使用自己的私鑰對摘要(數(shù)字簽名)進行加密,然后將信息發(fā)送給B,B得到信息之后鳞尔,先使用A的私鑰歲數(shù)字簽名進行解密嬉橙,得到A發(fā)送過來的數(shù)字簽名。在通過信息得到信息的數(shù)字簽名(使用MD5算法)寥假,比較兩個數(shù)字簽名是否相同市框,如果相同說明信息是A發(fā)送的并且信息沒有被改動。