但對稱加密也存在缺陷。
傳送方和接收方都必須使用相同的金鑰。使用相同的金鑰雖然也可以,但是其中存在一個問題是我們如何在共享金鑰的同時保證金鑰不被竊聽者攔截?
假設我們要用對稱加密技術傳輸資料,並保證資料不被其他人截獲,那麼我們就必須要將金鑰共享給接收者。如果接收者住在附近,我們可以直接用信封或其他線下辦法把金鑰交給他,但是如果接收者來自其他州或其他國家的話該怎麼辦?在這種情況下,傳送金鑰的任務變得十分困難,因此要克服此問題,就要用到另一種名為“非對稱加密”的技術。
我們在區塊鏈技術中使用的正是這種非對稱加密技術。
非對稱加密技術
非對對稱加密技術使區塊鏈技術的機制更加穩健,並且解決了對稱加密技術的弊端。
“非對稱加密技術比對稱加密技術稍微複雜一點,二者之間的主要區別是:對稱加密使用共享金鑰來解密資料,非對稱加密使用金鑰對來解密資料”。
金鑰對由兩部分組成:公鑰和私鑰。
下面我們以Gmail為例,假設我們需要向個人或公司傳送郵件:
1. Gmail的每個使用者都有自己的的使用者名稱和密碼。
2. 使用者透過接收者的使用者名稱傳送資訊。
3. 接收者收到來自傳送者的資訊,並讀取內容。
同樣的過程也適用於非對稱加密技術。
“每個使用者都有像自己使用者名稱一樣的公鑰,所有人都能看到,但無權訪問其中的資料。私鑰就像你的郵箱密碼一樣,幫助你將資料傳送給另一個人”。
要想傳送資料,首先,我們要有私鑰(即密碼)以及接收者的公鑰(即使用者名稱),這使加密技術變得更加複雜。
然後,接收者使用其私鑰(即密碼)和傳送者的公鑰(即使用者名稱)來對資料進行解密。這保證了資料在傳輸過程中免受竊聽者的攻擊,該加密系統也變得更加堅固。
不需要中間人,我們就可以將資料傳送給這個世界上的任何人。
同樣,為了更好地理解該過程,我也將其視覺化為下圖:
數字簽名
現在,當你要透過郵箱ID傳送郵件時,接收者透過檢視使用者名稱就能知道你是發件人。沒有密碼的話是無法傳送資料的,即你要為透過自己的使用者名稱傳送的任何郵件負責。因為沒有密碼的話,任何人都無法進入你的帳戶。
同樣,如果沒有私鑰,就沒有人可以透過你的公鑰傳送訊息。透過你的公鑰傳送資訊的只能是你一人,其他人都無法過你的地址傳送訊息。只不過我們必須更加小心一點,因為對於Gmail來說,我們可以透過中央資料庫來檢索密碼,但是區塊鏈是分散的,因此你要更小心謹慎地儲存好自己的私鑰。
當我們透過私鑰傳送資料時,該資料會由我們的數字簽名進行簽名,並且具有不可抵賴性,這意味著傳送訊息的人必須擁有私鑰才可以。
“如果你使用私鑰加密(“鎖定”)了某物,則任何人都可以對其進行解密(“解鎖”),但這可以作為對其進行加密的證據:該物已由你進行“數字簽名”的。”——PanayotisVryonis