什麼是密碼學?

買賣虛擬貨幣

本文聊聊什麼是密碼學。密碼學底層的演算法研究屬於數學領域,不是咱們要討論的重點。同時,密碼學也暗示了人和人在網際網路上溝通交流的一個新的方式,涉及到加密經濟和密碼朋克的一些理念,可以從偏向人文和社會科學的角度來研究。但是我們本節的思路是中間化的路線,從工程技術的角度來聊密碼學。給出它的精確定義,理論基礎和主流技術方案。

定義

先說定義。維基百科上是這樣說的:

密碼學是對安全通訊技術的研究,要能夠有效的防範潛在攻擊

說白了,就是研究一些能私密的傳遞資訊的協議。密碼學是數學和電腦科學的一個交叉。主要有兩個方面的應用:一個就是加密通訊,這個方向的主要任務是保證資訊在傳送過程中不會被篡改和竊聽,這也是咱們比較容易想到的一個方向。但是,另一個方向其實也同樣重要,那就是數字簽名。數字簽名跟現實世界中的紙筆簽名類似,可以用來認證簽署人身份,防止抵賴。密碼學早期比較常見於軍事領域,民用方面涉及電子商務,銀行支付,數字版權等等社會關鍵領域,所以,說密碼學是當代社會的一個支柱並不為過。最近幾年,區塊鏈和加密貨幣興起,密碼學的發展又進入了一個新的階段,區塊鏈的底層是密碼學技術,但是也涉及到經濟學。

密碼學最基礎的幾個概念是加密,解密,密文和金鑰。比如 Alice 有一段資料要傳遞給 Bob ,就要首先執行加密演算法把資料轉換成密文,密文就是一些看起來不知所云的內容。密文到了 Bob 機器上,Bob 執行對應的解密演算法,就可以把密文再轉換成資料。那麼什麼是金鑰呢?其實在加密和解密運算過程中有兩個要素,一個是演算法,另外一個是金鑰,英文叫 key 。key 就是參與加密解密運算過程的一小段資料。其實目前流行的加密解密演算法一般都是公開的,因為不公開一般也沒人敢用,怕有後門。所以資訊的安全完全在於加密人和解密人手裡是握有 key 的。如果我們把加密演算法封裝到一個加密函式中,函式的輸入就是兩個,一個是資訊,一個是 key ,而函式的返回結果就是密文。解密過程也類似,就是把密文和 key 傳遞給解密函式,返回結果就是資訊。我們以凱撒密碼為例,凱撒要給他的將軍發一封密信,這裡凱撒使用的演算法是把字母按照字母表順序往後移動一定的位數,比如資訊本來是 A ,現在往後移動 3 個位數,就變成了 D ,這樣生成的密文就誰也看不懂了。那這個過程中演算法是“字母偏移”,而 key 就是 3。將軍收到密文後,根據同樣的演算法和 key 反推就可以解密。

好,我們再來重複一次:密碼學是對安全通訊技術的研究,要能夠有效的防範潛在的攻擊。當然,密碼學涉及到的方向不光是加密通訊,還有數字簽名。

理論基礎

再來說一點點密碼學的理論基礎。

首先,當代密碼學是“網際網路上的密碼學”。歷史上,從凱撒年代,就有秘密通訊的概念,所以也誕生了凱撒密碼這樣的加密方式。後來電氣革命興起,人們也發明了專門用於加密的硬體器材。但是真正密碼學的大發展其實是計算機興起之後。尤其是網際網路到來後,所有的資訊都是在公共區域進行傳輸,任何人都可以擷取我們的資料,於是在資料傳輸之前進行加密就顯得尤其重要,當代的密碼學也是在這個情景下來發展的。

第二,我們要記住,

沒有不可破解的密碼

理論上,任何密碼至少都可以透過暴力搜尋的方式來破解。網際網路上的加密演算法都是公開的,所以 key 的一些特徵也是明確的,例如總共多少位。對於計算機來說,一個個去猜,也就是用暴力搜尋的方式去破解,也是一種很容易想到的攻擊方式。所以這就給加密演算法的設計者提出了一個基本要求,那就是演算法一定是要保證足夠的計算難度。從而保證雖然理論上可以算出 key 來,但是實際中用當前的硬體需要花費的時間是不可接受的,例如一萬年。當然,數學理論一直在發展,計算機的處理速度也一直在提升,所以密碼學本身也是一個不斷進化的學科。

理解了密碼學主要是用在網際網路條件下去保證兩個陌生人進行溝通,就能理解為何密碼學的演算法基本上都是公開的了。同時,理解了沒有不可以破解的密碼,只有很難破解的密碼,就知道為何加密演算法需要不斷迭代了。

公鑰加密的核心地位

接下來我們深入到具體的技術方案來聊。當代密碼學一直以來是分兩套系統:對稱加密和非對稱加密。其中非對稱加密也被叫做公鑰加密,密碼學的最核心技術。

對稱加密和非對稱加密是如何區分的呢?剛剛咱們提過,加密和解密過程中都是要有 key 參與,如果加密和解密使用同一個 key ,這就是對稱加密技術,否則則是非對稱加密技術。非對稱加密略有一些反直覺。具體做法是首先生成一對 key ,其中一個是公鑰,Public Key ,公鑰是可以公開給任何人的,另外一個是私鑰,Private Key ,要嚴格保密。傳送方首先拿到接收方的公鑰,用公鑰把資訊加密,接收方收到密文後,用私鑰解密獲得資訊。之所以公鑰和私鑰能夠這樣配合工作,是因為它們兩個天生就是一對兒,有著天然的數學聯絡。具體的聯絡方式就跟使用的具體的加密演算法有關了。非對稱加密中最著名的演算法有兩種,一個是 RSA ,這是用三個作者的名字的縮寫命名的演算法, 另外一個是 ECC ,也就是橢圓曲線演算法。RSA 是非對稱加密技術的開山鼻祖。ECC 是更高效的一種加密演算法,比特幣就是使用了這種加密演算法。

對稱加密在傳送方和接收方使用相同的 key ,所以建立安全通訊的前提是雙方先要有共享的 key ,那麼沒有加密通道的情況下,key 應該如何安全的傳遞給對方呢?這個在網際網路上是非常有挑戰性的。相對比之下,公鑰加密技術要分享的是公鑰,不用擔心洩露問題,相對要安全一些,另外公鑰加密技術也衍生出了數字簽名技術。

當然,公鑰加密技術也需要考慮如何確認公鑰所有人等技術問題,所以就有了 CA 也就是發證機構,以及 PKI 公鑰基礎設施等等這些的概念,這裡我們就不展開了。

總結

本節我們對密碼學做了一個簡要的介紹,大體上要點有這麼幾個:第一,密碼學是對安全通訊技術的研究,要能抵禦各種惡意攻擊。第二,密碼學的底層是數學,密碼學的安全取決於一個難度足夠高的數學問題,保證計算機在可接受的時間跨度內根本不可能運算出金鑰。第三,當代密碼學是網際網路環境下的密碼學,關鍵性技術是公鑰加密技術。

參考:

免責聲明:

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

推荐阅读

;