公鑰和私鑰的概念
在現代密碼體制中加密和解密是采用不同的密鑰(公開密鑰),也就是公開密鑰算法(也叫非對稱算法、雙鑰算法)”,每個通信方均需要兩個密鑰,即公鑰和私鑰,這兩把密鑰可以互為加解密。公鑰是公開的,不需要保密,而私鑰是由個人自己持有,并且必須妥善保管和注意保密。
公鑰私鑰的原則:
- 一個公鑰對應一個私鑰。
- 密鑰對中,讓大家都知道的是公鑰,不告訴大家,只有自己知道的,是私鑰。
- 如果用其中一個密鑰加密數據,則只有對應的那個密鑰才可以解密。
- 如果用其中一個密鑰可以進行解密數據,則該數據必然是對應的那個密鑰進行的加密。
- 非對稱密鑰密碼的主要應用就是公鑰加密和公鑰認證,而公鑰加密的過程和公鑰認證的過程是不一樣的
基于公開密鑰的加密過程
比如有兩個用戶Alice和Bob,Alice想把一段明文通過雙鑰加密的技術發送給Bob,Bob有一對公鑰和私鑰,那么加密解密的過程如下:
Bob將他的公開密鑰傳送給Alice。
Alice用Bob的公開密鑰加密她的消息,然后傳送給Bob。
Bob用他的私人密鑰解密Alice的消息。
基于公開密鑰的認證過程
身份認證和加密就不同了,主要用戶鑒別用戶的真偽。這里我們只要能夠鑒別一個用 戶的私鑰是正確的,就可以鑒別這個用戶的真偽。還是Alice和Bob這兩個用戶,Alice想讓Bob知道自己是真實的Alice,而不是假冒的,因此 Alice只要使用公鑰密碼學對文件簽名發送給Bob,Bob使用Alice的公鑰對文件進行解密,如果可以解密成功,則證明Alice的私鑰是正確的, 因而就完成了對Alice的身份鑒別。整個身份認證的過程如下:
Alice用她的私人密鑰對文件加密,從而對文件簽名。
Alice將簽名的文件傳送給Bob。
Bob用Alice的公鑰解密文件,從而驗證簽名。
so the two main branches of public key cryptography are:
Public key encryption — a message encrypted with a recipient's public key cannot be decrypted by anyone except a possessor of the matching private key -- presumably, this will be the owner of that key and the person associated with the public key used. This is used for confidentiality.
Digital signatures — a message signed with a sender's private key can be verified by anyone who has access to the sender's public key, thereby proving that the sender had access to the private key
目前的公開密鑰算法主要有RSA和ECC,RSA是比較老的算法,基于大質數分解,速度較慢,ECC(橢圓曲線)是最新的公鑰加密算法,基于離散對數計算,速度比RSA快,安全性據說更高一些。