我們絕大多數(shù)凡人,獨自感嘆天賦不足、創(chuàng)造不夠什么的,其實都是幻覺。問題歸結到最后,無非就是一懶,二拖,三不肯讀書,如此而已。
——《代表作和被代表作》
基于區(qū)塊鏈的公鑰、私鑰、加密、認證這些較為復雜的問題,容易被搞混淆,他們的概念不太容易理解,就容易產(chǎn)生似是而非的概念,為了讓大家加深一步理解,我今天就分享一下相關的內(nèi)容。
加密和認證
首先我們需要區(qū)分加密和認證這兩個基本概念。
加密是將數(shù)據(jù)資料加密,使得非法用戶即使取得加密過的資料,也無法獲取正確的資料內(nèi)容,所以數(shù)據(jù)加密可以保護數(shù)據(jù),防止監(jiān)聽攻擊。其重點在于數(shù)據(jù)的安全性。
身份認證是用來判斷某個身份的真實性,確認身份后,系統(tǒng)才可以依不同的身份給予不同的權限;其重點在于用戶的真實性,兩者的側重點是不同的。
公鑰和私鑰
先弄清楚這兩個的概念及作用。
在現(xiàn)代密碼體制中加密和解密是采用不同的密鑰(公開密鑰),非對稱密鑰密碼系統(tǒng),每個通信方均需要兩個密鑰,即公鑰和私鑰;
這兩把密鑰可以一個加密一個解密。公鑰是公開的,不需要保密,而私鑰是由個人自己持有,并且必須妥善保管和注意保密。
而非對稱加密算法是一種密鑰的保密方法。
非對稱加密算法需要兩個密鑰:公開密鑰(publickey:簡稱公鑰)和私有密鑰(privatekey:簡稱私鑰)。
公鑰與私鑰是一對,如果用公鑰對數(shù)據(jù)進行加密,只有用對應的私鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。
要明白公鑰和私鑰只是一個相對概念,就是說我們不能單純的去稱呼一對密鑰中的一個為公鑰,另一個為私鑰,它們的公私性總是相對于生成者來說的。
一對密鑰生成后,保存在生成者手里的就是生成者私鑰,生成者發(fā)布出去的就是生成者公鑰,可以看到我們在稱呼它們的時候前面帶上了生成者,這樣可以便于我們理解,避免混淆概念。一對公私鑰,不能由其中的一個導出另一個。
可以暫時這么理解:
一對密鑰在剛生成的時候是沒有公私之分的,但是生成者會保留一個在自己手里,發(fā)布一個給別人用,正是這個“保留與發(fā)布”的操作才使得這對密鑰有了公私之分,那么對于生成者來說,保留在自己手里的密鑰就被稱作生成者私鑰,發(fā)布給別人用的那個密鑰就被稱作生成者公鑰,注意這里的稱呼帶上了生成者,就是為了表明一對密鑰的公私性總是相對于它們的生成者來說的。(實際中私鑰和公鑰在生成的時候已經(jīng)具備了公私性,因為公鑰和私鑰是不同的生成機理,但這樣理解也是沒有錯的,有助于幫助我們理清后面的關系)
比如:我們使用支付寶SDK(軟件開發(fā)工具包)的時候,我們商戶端會生成一對密鑰A和B,支付寶也會生成一對密鑰C和D。
如果我們商戶端保存了A,而把B發(fā)布給了支付寶,A就被稱作商戶端私鑰,B就被稱作商戶端公鑰。(注意稱呼公私鑰的時候帶上生成者的名字,這樣可以便于我們理解,避免混淆概念)
當然我們也可以保存B,而把A發(fā)布給支付寶,這樣B就被稱作商戶端私鑰,A就被稱作商戶端公鑰。(實際中不會這么做,因為公私鑰已經(jīng)提前確定好了,它們的生成機理不同但這樣理解也是沒有錯的,有助于幫助我們理清后面的關系)
同樣,假設支付寶保存了C,而把D發(fā)布給了我們,那么C就被稱作支付寶私鑰,D就被稱作支付寶公鑰,反之同理;
非對稱加密算法的保密性比較好,它消除了最終用戶交換密鑰的需要。
小結
一個公鑰對應一個私鑰。
密鑰對中,讓大家都知道的是公鑰,不告訴大家,只有自己知道的,是私鑰。
如果用其中一個密鑰加密數(shù)據(jù),則只有對應的那個密鑰才可以解密。
如果用其中一個密鑰可以進行解密數(shù)據(jù),則該數(shù)據(jù)必然是對應的那個密鑰進行的加密。
非對稱密鑰密碼的主要應用就是公鑰加密和公鑰認證,而公鑰加密的過程和公鑰認證的過程是不一樣的。