非對稱加密和簽名認證

現代密碼學中,加密算法包括兩部分。

  1. 算法,一組規定如何進行加解密的規則,描述加解密的具體操作步驟。為了方便使用及保證算法可靠性,算法都是公開的
  2. 密鑰,用於算法的秘密參數

對稱加密中,無論加密還是解密,都使用同一個密鑰。因此,

  • 對密鑰的保護十分重要,洩露則意味著通信密文不再安全
  • 通信雙方在交換密鑰時,特別是在公開的、不可信的鏈路(互聯網)上交換密鑰時,要確保密鑰從未洩露(Diffie-Hellman 密鑰交換算法)

受Diffie-Hellman 密鑰交換算法的啟發,人們意識到加密和解密可以使用不同的密鑰,只要這對密鑰有某種對應關係即可

這種新的加密模式被稱為非對稱加密

  • 有兩把密鑰,一把是公開的公鑰,還有一把是不公開的私鑰
  • 公鑰和私鑰一一對應,有一把公鑰就必然有一把與之對應的、獨一無二的私鑰,反之亦成立
  • 同時生成公鑰和私鑰應該相對容易,但從公鑰推算私鑰應是極其困難或是不可能的
  • 所有的密鑰對(公鑰和私鑰)都是不同的
  • 用私鑰可以解開公鑰加密的消息,反之亦成立

加密與解密

A事先生成好了一對密鑰,並公開了自己的公鑰。

B想加密發送給A的消息,需要

用A的公鑰,加密要發給A的信息,將密文發送給A
A收到密文後,用自己的私鑰解密
這段密文只有用對應的私鑰(A的私鑰)才可以解密。只要A的私鑰沒有洩露,這段密文就只有A能解開,即使其他人獲得密文,也無法解密。

常用的非對稱加密算法有RSA、ElGamal、ECC等。

摘要和簽名

舉個例子。B寫了一張紙條,讓同桌傳給A,紙條內容為

A,我是B,我喜歡你。

對通信的雙方,

  • 要保證紙條在傳遞過程中未經改動。當內容被篡改時,接收方可以發現
  • 接收方能確定紙條來自發送方,而不是他人冒充

用更簡單些的文字來描述整個過程,通信的雙方都知道,

  • 發送方認可消息的內容(授權)
  • 接收方能確定消息來源(身份認證)
  • 消息在整個通信過程中未經改動(內容的完整性)

為了實現上述需求,B需要

  • 將紙條內容哈希(Hash),得到摘要(Digest)
  • 用自己的私鑰“加密”摘要,得到簽名(Signature)
  • 讓同桌傳遞紙條和簽名

A收到紙條和簽名後,

  • 用B的公鑰,對簽名“解密”,得到摘要[1]
  • 將紙條內容哈希,得到摘要[2]
  • 比較摘要[1] 和摘要[2] 的內容是否一致

如果內容相同,則說明紙條確實由B所寫,且內容未經改動。這是因為,

  • 李雷的私鑰只有他自己擁有,用私鑰(李雷的私鑰)“加密”的內容(簽名)只有用對應的公鑰(李雷的公鑰)才能解開(身份認證)
  • 哈希函數的特性保證,如果紙條內容在傳遞過程中改變,則得到的摘要[2] 一定與摘要[1] 不同(完整性)

總結
對於雙鑰系統,加密解密時,

  • 公鑰用於加密,私鑰用於解密

身份認證時,

  • 私鑰用於簽名,公鑰用於驗證

如果喜歡文章, 不妨按下喜歡訂閱支持

如果真的想支持我進行創作與實踐計畫, 也可以進行打賞
BTC (BTC) : 1LFRBqvWR9GGizBzoFddkb5xRpAzKRVoDC
BTC (BSC) : 0xe1cda3eb778d1751af17feac796a4bbe4dbca815
BTC (ERC20) : 0xe1cda3eb778d1751af17feac796a4bbe4dbca815
USDT (TRC20) : TT7wgKuYoHwfRy3vCr38Qy3gnS3JJ1aKvn

如果想使用幣安, 可以使用我的推薦連結可以節省手續費10%
或使用推薦碼 : A5YRMD2T


#blockchain #區塊鏈 #ecc #ecdsa #rsa #非對稱加密 #cryptocurrency #虛擬貨幣 #加密貨幣 #加密 #密碼學 #對稱加密







Related Posts

Mongo Atlas & Heroku & mailchimp - Newsletter Project

Mongo Atlas & Heroku & mailchimp - Newsletter Project

MVC 架構 - 以 express 為例

MVC 架構 - 以 express 為例

npm 無法安裝 craco

npm 無法安裝 craco


Comments