大家有沒有想過,為什麼這麼多人對區塊鏈這麼感興趣,對發幣這麼感興趣。答案很簡單,無非是區塊鏈的通證經濟能夠讓大家的生活越來越好,也讓大家都知道區塊鏈的經濟形態是條不錯的致富之道。
可是,是什麼樣的機制保障了區塊鏈的經濟形態能夠安全穩定持續地發展下去呢?
今天我們來分享為區塊鏈保駕護航的機制—加密演算法的介紹。
先解釋加密演算法前,請老司機原諒,我們先簡單介紹下密碼學。
密碼學本質是加密演算法,為數據的明文文件進行加密處理,使其變成不可讀的一段代碼,但輸入相應的密鑰後,才能顯示本真的內容。大家通過這樣的方式來保護數據的安全,確保數據不被盜竊不被閱讀,該過程稱為加密;該過程逆向邏輯是解密;該過程中,在討論用什麼樣的數學演算法進行保密性高的加密,稱為密碼學。
現在比特幣常用的加密演算法有哪些呢?我們逐一介紹。
現比特幣仍繼續使用公開密鑰加密(public-key cryptography,也稱為非對稱加密)方式進行數據加密,實質是一對數學演算法相關的公鑰密鑰解密的關係,使用通過私鑰解開公鑰(公開的密鑰)後獲取本真的信息,此過程是非對稱加密演算法。
公鑰的主要作用:加密;驗證簽名。
私鑰的主要作用:簽名;解密。
特性:
通過私鑰可以計算出公鑰,反之則不行。
公鑰加密:公鑰加密的內容可以用私鑰來解密——只有私鑰持有者才能解密。
私鑰簽名:私鑰簽名的內容可以用公鑰驗證。公鑰能驗證的簽名均可視為私鑰持有人所簽署。
使用原則:
① 每一個公鑰都對應一個私鑰。
② 密鑰對中,讓大家都知道的是公鑰,不告訴大家,只有自己知道的,是私鑰。
③ 如果用其中一個密鑰加密數據,則只有對應的那個密鑰纔可以解密。
④ 如果用其中一個密鑰可以進行解密數據,則該數據必然是對應的那個密鑰進行的加密。
對稱密鑰密碼的主要應用就是公鑰加密和公鑰認證
舉個例子:
A(客戶)想給B(伺服器)發送一段文字,但是不想讓別人看到,因此想使用非對稱加密方法來加密這段文字,當然,B需要有一對公鑰和私鑰:
① B將他的公鑰發送給A② A用B給他的公鑰加密這段文字,然後傳給B③ B用他的私鑰解密A發過來的消息,這裡要強調的是,只要B的私鑰不泄露,這封信就是安全的,即使落在別人手裡,也無法解密。通過這幾步,B就能成功收到A發送的信息,同時又達到了保密的目的。
那如何解密呢?
另一種是橢圓曲線加密演算法
橢圓曲線密碼學(英語:Elliptic curve cryptography,縮寫為 ECC),一種建立公開密鑰加密的演算法,基於橢圓曲線數學。橢圓曲線在密碼學中的使用是在1985年由Neal Koblitz和Victor Miller分別獨立提出的。
橢圓曲線密碼學的主要優勢是在某些情況下它比其他的方法使用更小的密鑰——比如RSA加密演算法——提供相當的或更高等級的安全。橢圓曲線密碼學的另一個優勢是可以定義羣之間的雙線性映射,基於Weil對或是Tate對;雙線性映射已經在密碼學中發現了大量的應用,例如基於身份的加密。不過一個缺點是加密和解密操作的實現比其他機制花費的時間長。
雙線性映射解釋:在數論中,一個雙線性映射是由兩個向量空間上的元素,生成第三個向量空間上一個元素之函數,並且該函數對每個參數都是線性的。
橢圓曲線加密演算法本質是數標軸上曲線的方程式計算,通過數的計算得到加密/解密。
例如:
公開密鑰演算法總是要基於一個數學上的難題。比如RSA 加密演算法依據的是:給定兩個素數p、q 很容易相乘得到n,而對n進行因式分解卻相對困難。那橢圓曲線上有什麼難題呢?
假設如下方程等式:
K=kG [其中 K,G為Ep(a,b)上的點,k為小於n(n是點G的階)的整數]
不難發現,給定k和G,根據加法法則,計算K很容易;但給定K和G,求k就相對困難了。
這就是橢圓曲線加密演算法採用的難題。我們把點G稱為基點(base point),k(k<n,n為基點G的階)稱為私有密鑰(privte key),K稱為公開密鑰(public key)。
我們看下圖,下圖描述一個利用橢圓曲線進行加密通信的過程: