
密鑰密碼算法最明顯的特徵是拿2個相關密鑰把加密與解密分開,其中一個密鑰是公開的,稱為公開密鑰,簡稱公鑰,用來加密;另一個密鑰給用戶專用,因此是保密的,叫做秘密密鑰,簡稱密鑰,用來解密,所以公鑰密碼體制也叫雙鑰密碼體制。
整個加解密的過程可以分成如下步驟。
(1)需要接收消息的端系統,得到一對用於加、解密的密鑰,接收者B產生密鑰PKB,SKB,其中前者是公鑰,後者是密鑰;
(2)端系統B公開加密密鑰,另一密鑰則被保密;
(3)A若要想給B發消息m,就要用B的公鑰加密m;
(4)B收到密文後,拿自己的密鑰SKB進行解密。
由於僅有B知道SKB,因此他人均不能解密密文。
公鑰加密算法不只可用來加、解密,還可以給發方A發的消息m進行認證,用戶A用自己的密鑰SKA對m加密,把密文發往B,B用A的公鑰PKA解密。
由於在m那裏得到密文是顺利获得A的密鑰SKA加密,僅A才可以實現。所以密文可作為A給m的數字簽字。另一方面,得不到A的密鑰SKA的所有人是無法篡改m的,因此以上過程認證消息的來源與完整性。
實際應用中,尤其在用戶數目非常多時,上面認證方法需特別大的存儲空間,由於每個文件均得顺利获得明文形式進行存儲,這樣便於實際中的使用,且還須存儲每個文件在加密之後的密文形式,也就是數字簽字,為了方便在有爭議時對文件的來源與內容進行認證。改進方法是減小文件數字簽字的大小,就是先把文件顺利获得一個函數壓縮為較小的比特串,此比特串叫認證符。認證符有這樣一個性質:若使認證符的值不動來修改文件計算上行不通。用發送者的密鑰加密認證符,加密結果是原文件的數字簽字。
上述認證過程中,因消息是拿用戶自己的密鑰進行加密的,因此消息不會被他人篡改,不過卻可被竊聽。這是由於無論是誰都能用用戶的公鑰解密消息。為有認證功能與保密性,可用雙重加、解密。
