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