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

買賣虛擬貨幣

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倍。

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

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

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;