1. 程式人生 > >RSA加密、解密、簽名、驗籤的原理及方法

RSA加密、解密、簽名、驗籤的原理及方法

二、RSA加密、簽名區別

  加密和簽名都是為了安全性考慮,但略有不同。常有人問加密和簽名是用私鑰還是公鑰?其實都是對加密和簽名的作用有所混淆。簡單的說,加密是為了防止資訊被洩露,而簽名是為了防止資訊被篡改。這裡舉2個例子說明。

第一個場景:戰場上,B要給A傳遞一條訊息,內容為某一指令。

RSA的加密過程如下:

(1)A生成一對金鑰(公鑰和私鑰),私鑰不公開,A自己保留。公鑰為公開的,任何人可以獲取。

(2)A傳遞自己的公鑰給B,B用A的公鑰對訊息進行加密。

(3)A接收到B加密的訊息,利用A自己的私鑰對訊息進行解密。

  在這個過程中,只有2次傳遞過程,第一次是A傳遞公鑰給B,第二次是B傳遞加密訊息給A,即使都被敵方截獲,也沒有危險性,因為只有A的私鑰才能對訊息進行解密,防止了訊息內容的洩露。

第二個場景:A收到B發的訊息後,需要進行回覆“收到”。

RSA簽名的過程如下:

(1)A生成一對金鑰(公鑰和私鑰),私鑰不公開,A自己保留。公鑰為公開的,任何人可以獲取。

(2)A用自己的私鑰對訊息加簽,形成簽名,並將加簽的訊息和訊息本身一起傳遞給B。

(3)B收到訊息後,在獲取A的公鑰進行驗籤,如果驗簽出來的內容與訊息本身一致,證明訊息是A回覆的。

  在這個過程中,只有2次傳遞過程,第一次是A傳遞加簽的訊息和訊息本身給B,第二次是B獲取A的公鑰,即使都被敵方截獲,也沒有危險性,因為只有A的私鑰才能對訊息進行簽名,即使知道了訊息內容,也無法偽造帶簽名的回覆給B,防止了訊息內容的篡改。

  但是,綜合兩個場景你會發現,第一個場景雖然被截獲的訊息沒有洩露,但是可以利用截獲的公鑰,將假指令進行加密,然後傳遞給A。第二個場景雖然截獲的訊息不能被篡改,但是訊息的內容可以利用公鑰驗籤來獲得,並不能防止洩露。所以在實際應用中,要根據情況使用,也可以同時使用加密和簽名,比如A和B都有一套自己的公鑰和私鑰,當A要給B傳送訊息時,先用B的公鑰對訊息加密,再對加密的訊息使用A的私鑰加簽名,達到既不洩露也不被篡改,更能保證訊息的安全性。

  總結:公鑰加密、私鑰解密、私鑰簽名、公鑰驗籤。