轉載請保留來源:http://www.cnblogs.com/iceJava/p/7603706.html
看了網上的很多資料,發現有些點沒有說到,也比較複雜,這裏根據個人的理解,簡單描述,方便記憶。
先理解 公/私 鑰(yue)的意思:
私鑰,即 私人 的鑰匙,是唯一的,所以可以用來證明來源是特定的人
公鑰,即 公用 的鑰匙,我可以將它給很多人(公衆)。所以既然那麼多人都知道,所以公鑰並不能證明來源一定是特定的人
在理解 加密、簽名 的作用:
加密:用於防止信息外泄(泄露給不相關的人)
簽名:用於確認身份(可以類比下信用卡上的簽名)
----> 到底誰 創建、擁有、使用 公/私 鑰(yue)(這裏很多人會混淆,而且網上很少有人說明,但很重要)? <----
以 加簽/驗籤 爲例:
1. A 想 使用 我的服務,爲了安全,我不希望 A 以外的人可以使用這些服務
創建:
此時,我會要求 A 創建 一對 公私鑰,私鑰他自行保留(用於證明他自己的身份),公鑰給我(用於驗籤--驗證簽名)
擁有:
此時 我擁有 A 的公鑰,A 擁有自己的私鑰
使用:
A 請求 我的服務 時,使用私鑰簽名(具體如何簽名,自行百度吧,這方面的內容真的很多)
我 收到請求後,用 A 給我的公鑰 驗籤,驗籤通過即證明的確是A發送的請求,驗證不通過當然是拒絕訪問
2. 那如果 A 調用我的服務之後,需要我返回請求結果,但又要保證一定是我返回的請求結果呢?
創建:
此時,我 創建 一對 公私鑰,私鑰自行保留(用於證明我的身份),公鑰給 A(用於驗籤--驗證簽名)
擁有:
此時 我擁有 自己的私鑰,A 擁有我的公鑰
使用:
我的返回結果 時,使用私鑰簽名
A 收到請求結果後,用 我給A 的公鑰 驗籤,驗籤通過即證明的確是我返回的結果,驗證不通過當然是拒絕訪問
加密/解密:
簽名保證了信息的來源可靠性,加密可以保證數據的安全性(個人理解,在網絡上傳播消息,是可以通過各種手段攔截的,所以需要對數據進行加密)
如果 A 要 和 B 進行通訊:
在發送消息時:使用 對方的公鑰 進行加密;因爲使用對方的公鑰加密,就只要對方的私鑰可以解密,也就是說不會有第三方可以解密內容。
在接收信息時:使用 自己的私鑰 進行解密;
爲什麼不使用私鑰加密?
因爲使用私鑰加密之後,擁有公鑰的人都可以進行解密,那豈不是泄露了 A 和 B 之間的消息了?
感覺明白上面的問題,基本上都理解了。