Comunion 區塊鏈深度學習系列|橢圓曲線數字簽名發展史

Comunion 是一個去中心化的(DAO) 組織協作網絡,提供面向數字時代的全新商業基礎設施和價值轉化機制,致力於讓勞動價值 像 資本一樣自由流通、交易和積累。

本系列內容包含:基本概念及原理、密碼學、共識算法、錢包及節點原理、挖礦原理及實現。

密碼學有兩類:私鑰密碼學,公鑰密碼學。也可以稱之爲:對稱密碼學,非對稱密碼學

其中公鑰密碼裏面有三個基本原理:公鑰加密、數字簽名、密鑰協商

本文詳細闡述的內容是:現代密碼學裏面,公鑰密碼學中數字簽名中的一種——橢圓曲線數字簽名。橢圓曲線數字簽名算法(ECDSA)是使用橢圓曲線對數字簽名算法(DSA)的模擬。 

學科爲什麼這樣分類?數字簽名是如何出現的?爲什麼產生?我們一起來了解一下密碼學的發展歷史。

私鑰密碼學

說起密碼學,其實我們並不陌生,比如二戰期間德國使用的加密機,在戰爭期間起到了很重要的作用。從那個時候就已經展現展示出了密碼學的一些作用和用處。

當時二戰期間德國使用的密碼機是恩尼格瑪密碼機(德語Enigma,又譯啞謎機,或謎)。這個密碼機放到當前密碼學學科裏面,屬於經典密碼學。

經典密碼學經典密碼是一種密碼類型,過去歷史上常用,但現代大部分的已經不再使用了。經典密碼是基於一個拼音字母(像是 A-Z)、動手操作或是簡單的設備,以使用了很多的技巧而著稱。

經典密碼學也可能是一種簡單的密碼法,以致於其效率和安全性並不值得信賴。而我們現在所瞭解的新密碼學被稱之爲現代密碼學,也就是私鑰密碼學和公鑰密碼學。

既然現代密碼學中分私鑰密碼學和公鑰密碼學,那麼什麼是私鑰密碼學呢?

也就是當使用私鑰密碼學進行加密、解密的時候,使用的密鑰是同一把。

例如,張三和李四進行通信,張三將一段明文加密,之後通過網絡傳播給李四,李四需要解密這段密文才能看到明文。那麼在這個過程當中,張三進行加密的密鑰和李四解密使用的密鑰是相同的。

這裏面存在一個很大的弊端,在這個傳輸過程中,李四獲得密鑰的方式有以下兩種:

1.張三和李四私下見面,張三將密鑰當面給李四;

2.張三將密鑰直接在線發給李四。

第一種方式,由於只有兩個人見面,所以其他人不會知道,這種方式很安全,但是很不方便,尤其是成本太大。比如一個人在中國,一個人在美國。這還是點對點,如果成千上萬的人需要傳輸,那麼這種方式根本不可行。

第二種方式,通過網絡傳送很方便,但是嚴格來說是不安全的,因爲直接傳送密鑰的話,那麼相當於傳送的數據是明文,而其他人可以通過一些其他方法截獲這些數據,所以存在很大的安全隱患。

在一個碩大的網絡系統當中,如果使用私鑰密碼學,就會存在嚴重的問題,那就是密鑰的共享問題,因爲私鑰密碼學裏面加密使用的密鑰和解密使用的密鑰是同一把。要麼協商成本太大,要麼存在風險。

這是私鑰密碼學和其存在的問題。科技永遠是在不斷的革新,有問題就要去解決,所以公鑰密碼學登上了歷史舞臺。


公鑰密碼學

在1976年,迪菲和赫爾曼兩個人提出了一個具有劃時代意義的思想,他們指出,在通信雙方之間不直接傳輸加密密鑰的保密通信是可能的。

也就是把密鑰分爲加密的公鑰和解密的私鑰,當使用這個密鑰對傳輸數據的時候,如果用公鑰加密數據就必須用私鑰解密,如果用私鑰加密也必須用公鑰解密,否則解密將不會成功。

這是第一個實用的在非保護信道中建立共享密鑰方法,也可以簡單理解爲將張三加密的密鑰和李四解密的密鑰分成兩把。

例如,張三和李四通過公鑰加密算法得到一個唯一的密鑰對(公鑰和私鑰),兩人各持一把,比如張三持公鑰,李四持私鑰。張三要給李四傳輸祕密數據,那麼張三通過公鑰進行加密,只有持有李四的私鑰纔可以將信息進行解密。反之,李四通過私鑰進行加密,只有持有張三的公鑰纔可以解密。

這樣即使信息在傳送過程中,即使被第三方截取,也不可能獲取其中的內容。

如果在一個碩大的網絡系統當中,所有人都將自己的公鑰公開,保留自己的私鑰。那麼就解決了一個問題:通信雙方都有彼此公鑰,通信時只要使用對方公鑰進行加密並且傳輸數據,即便這些加密的密文是完全公開的,但是隻有私鑰持有人才能解密數據內容。

密鑰協商

密鑰協商是將上文提出的思想進行實現的過程,兩人或多人即使沒有任何關係,也可以通過公開的、不安全的通信網絡進行交互,共同建立會話密鑰,任何一個參與者均對結果產生影響,不需要任何可信的第三方。

其中會話密鑰由每個協議參與者分別產生的參數通過一定的計算得出,這就是密鑰協商協議。

密鑰協商協會的生產方式可以分爲兩種:證書型和證書型

證書型,是指在會話密鑰的產生過程中,由一個可信的證書中心給參與密鑰協商的各方主體分別發放一個證書,此證書中含有各方的公鑰,ID及其他信息。優點是比較成熟,應用面廣泛,公私鑰均有利於統一管理。其缺點是強中心化,因此計算代價巨大,並且證書還需要維護。

無證書型,是指各方在進行會話密鑰的協商過程中不需要證書的參與,不需要可信證的書中心參與,這樣減少了計算量,同時安全性和證書型處於同一級別。其唯一缺點是設計起來比較複雜,因此現在無證書型是密鑰協商協議的主流種類。

數字簽名

數字簽名是隻有信息的發送者才能產生的別人無法僞造的一段數字串,這段數字串同時也是對信息的發送者發送信息真實性的一個有效證明。其作用是用來做數據認證的,它能夠鑑定數據在網絡當中傳播是否被篡改。

每一種簽名體制其實都根植於一個數學問題,當使用公鑰加密完成之後,只有私鑰擁有者才能解密,而其他人不能解密,其原理是基於數學問題的困難性。

我們通過代表性的公鑰加密發展史來理解一下:

RSA_DSA,是基於整數分解問題設計的加密體制,這裏的整數是很大的,比如是2^256長的比特串,此種加密體制沒有涉及到數字簽名。

ElGamal_DSA,是基於離散對數問題設計的加密體制。

EC_DSA,是基於有限運算的運算對數問題設計的加密體制。

Lattice_DSA,是基於最短象限的尋找問題設計的加密體制。

這四種加密體制出現的時間也是遵循從上到下的順序,前三者在量子攻擊面前是十分脆弱的,最後 Lattice_DSA 的出現就是爲了抵禦量子攻擊,當然現階段量子計算機從成熟到應用還有很長的一段時間。

數字簽名和公鑰的一些聯繫:簽名者使用私鑰進行簽名,簽名的私鑰僅對自簽名者公開,公鑰是公開的,每個人都可以用公鑰對私鑰擁有者產生的簽名進行驗證,來驗證是否是有私鑰擁有者簽署的。

有些朋友會問,在區塊鏈系統系統當中,爲什麼主要使用的是橢圓曲線數字簽名算法(ECDSA),而不是其它的呢?

如上圖所示,在橢圓曲線密碼體制中,當私鑰長度爲160位比特長度的時候,其安全級別是80位(這裏的80指的是2的80次方),當私鑰長度爲256位比特長度的時候,其安全級別是128位。

這裏可以對比一下其他密碼體制,比如 Elgamal 要想達到128位安全級別的話,其私鑰長度是3072位,是橢圓曲線私鑰長度的12倍。

而私鑰的長度對密碼體制的影響是:私鑰的長度越長,密碼系統裏面的加解密、簽名、驗籤算法等,其效率越低。因此,在同樣的安全級別下,區塊鏈系統使用了私鑰更短、效率更高的橢圓曲線。

所以,之所以在區塊鏈系統中主要使用的是橢圓曲線數字簽名算法,主要是因爲在數字簽名算法中,橢圓曲線數字簽名算法能夠以相對較短的密鑰長度達到更高的安全級別。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章