密碼學是什麼?跟加密貨幣有什麼關係?

密碼學是什麼

密碼學是在加密貨幣,甚至在各個領域都有被運用的一種技術。

主要是市場先生在《加密貨幣聖經》一書及一些密碼學閱讀資料中的學習筆記,讓想了解加密貨幣安全性的人增加一些初步的認識。

本篇將以加密貨幣為主要案例,介紹密碼學如何運用在加密貨幣中。

密碼學是什麼?

密碼學(英文:Cryptography)是一種密碼的技術,主要用來保護及隱藏資訊。密碼學的運用非常廣泛,例如我們匯款時,需要去手機收的簡訊驗證碼,就是密碼學的應用之一。

我們現在常聽到的加密貨幣也是密碼學的應用。

密碼學中,主要有三個技術運用在加密貨幣中,分別是加密(Encrypt)、雜湊(Hash function)、數位簽章(Digital signature),

在很多加密貨幣白皮書或官方文件,我們都會經常看到這些詞彙。

以下一一介紹。

密碼學的應用一:加密

加密就是把訊息加上密碼,能夠將看的懂的訊息,變成看不懂的訊息 (例如一串文字+符號的組合)。

加密有分「對稱式加密」跟「不對稱式加密」,

簡單來說,對稱式加密就是加密/解密都採用同一把鑰匙(也就是加密貨幣裡常聽的金鑰,因為英文是Key,所以中文被翻譯成鑰匙或金鑰),不對稱加密就是加密/解密採用的是不同的鑰匙。

這裡指的鑰匙不是我們常使用的那種家裡鑰匙、車鑰匙…等,是指一個加密/解密的方法,可以想像是一個上面記載著密碼破解方式的一張紙。

對稱式加密

對稱式加密 (英文:Symmetric-key algorithm)的加密與解密的金鑰是同一把,也就是用同一個方法,就可以完成加密與解密。

舉例來說,市場先生要發送一個訊息「Hello」並用每一個字母在鍵盤上右邊的字代替,看的懂的訊息就變成看不懂的訊息:Hello 變成 Jr;;p,這樣就完成一個非常簡單的加密。

市場先生傳給同事這組字,同事把每一個字母還原,就知道訊息是Hello,這就是對稱式加密,加密與解密的方法都一樣,而「鍵盤上右邊的字代替」這個方法就是金鑰。

不對稱式加密

不對稱式加密 (英文:Public-key cryptography)又稱公開金鑰加密,它加密與解密的金鑰是不一樣的,所以你(訊息接收方)需要打造兩把鑰匙:一把是公開金鑰、一把是私密金鑰。

不對稱式加密相較對稱式加密,比較不容易破解,所以這也是目前被廣泛使用的加密方式。

不對稱式加密

你可以把公開金鑰發給所有的人,讓大家都可以透過這個公開金鑰發送加密訊息給你。

私密金鑰只有你自己知道,所以只有你可以把透過公開金鑰發送給你的已加密訊息,透過私密金鑰解密。

不對稱式加密在加密貨幣上的運用

以比特幣為例,就是你可以打造一個公開金鑰,獲得一個公開的比特幣地址(有點像是銀行帳號),任何人都可以透過這個公開金鑰轉比特幣給你,

但如果你要匯比特幣給別人,就需要私密金鑰簽署交易,才能夠成功把比特幣匯出。因為私密金鑰只有你才知道,所以有著身份驗證的功用,可以證明是「你」同意匯出比特幣。

私密金鑰的簽署,就是「數位簽章」的應用,這個之後會講到。

詳細可閱讀:比特幣是什麼

補充:公開金鑰長什麼樣子?

公開金鑰是由非常多字母、數字、符號所組成,例如intel就有公布他們的公開金鑰,詳細可到intel官網查看。

密碼學的應用二:雜湊

雜湊 (英文:Hash function)的全名是雜湊函數,又稱雜湊演算法,是把不同長度的訊息,變成資料量固定的「值」的演算法。

雜湊函數有非常多種,例如由美國國家安全局研發的SHA系列、由美國密碼學家Ronald Linn Rivest所設計的MD5等。

舉例來說,用SHA系列中的SHA256為例:

上圖中這兩個訊息的長度不一樣,但都產生出相同資料長度的「值」,這個「值」又稱雜湊值 (英文:Hash value),它是獨一無二的 (有些人會這個值為指紋、摘要digest)。

因為雜湊函數可以產生固定長度的雜湊值,所以會被用在處理大量資料,另外,不同的訊息幾乎不可能有相同的雜湊值 (說幾乎是因為以前有些雜湊函數已被破解),所以雜湊函數也可以做驗證資料的應用。

雜湊函數中,運用在加密貨幣上的是「加密雜湊函數」,以下介紹。

加密雜湊函數

加密雜湊函數 (英文:Cryptographic hash function)是一種雜湊函數,主要有幾個特性:

  1. 確定性:輸入同一個訊息,產生的雜湊值永遠都一樣。
  2. 獨特性:輸入不同的訊息,不可能有相同的雜湊值。(如果有,就會產生雜湊碰撞collision,代表這個雜湊函數已經無法再使用)
  3. 長度固定:使用同一個雜湊函數,即使輸入不同的訊息也會產生一樣長度的雜湊值。
  4. 不可反向回推:你無法從產生的雜湊值回推原本的訊息。(這也是加密跟雜湊最不一樣的地方)

加密雜湊函數常見的例子就是密碼,在網路上要登入某個帳戶,我們就必須輸入密碼,系統會對我們輸入的密碼進行加密雜湊函數的運算,產生雜湊值,再跟系統自己的雜湊值比對:

加密雜湊函數在加密貨幣上的運用

加密雜湊函數比特幣挖礦的過程、區塊鏈的連結區塊識別碼、數位簽章等等,都會運用到加密雜湊函數。

以下會以數位簽章為例,介紹雜湊的運用。

(這些講起來太複雜,目前市場先生也還在研究中,歡迎有經驗的讀者在下方留言跟我們分享)

詳細可閱讀:比特幣挖礦是什麼?區塊鏈是什麼?

密碼學的應用三:數位簽章

數位簽章(英文:Digital signatures)是一個加密後的簽章,目的是用在驗證訊息的真實性。數位簽章並不會保密原始資訊,但可以幫助我們確認原始資訊發送者的身分,驗證該內容訊息是否真的是由某人發出的。

例如我們收到一份紙本文件,上面有老闆的簽名,我們會認為這是老闆提供給自己的文件(如果簽名沒被仿冒的話)。但在數位的世界,我們怎麼確定一個訊息真的是老闆發出的呢?要怎麼辨識?數位簽章的功用不是為了保密這些訊息,而是為了幫我們確認訊息真的是由某人所發出的,而不是他人仿冒的。

數位簽章屬於是電子簽章的其中一種,但它並不是我們親手在電腦或平板上簽名的簽章。

要產生及驗證數位簽章,就需要用到不對稱式加密的技術,如果訊息太長,還會用到加密雜湊函數的計算。

數位簽章的原理

數位簽章屬於不對稱式加密反向的運用,也就是公開金鑰是用來解密、私密金鑰是用來加密。

數位簽章的原理有點複雜,以下分別以簽署人、驗證人的方式介紹:

  1. 簽署人將原始訊息用加密雜湊函數計算產生雜湊值
  2. 簽署人對雜湊值用私密金鑰加密,產生數位簽章
  3. 簽署人將數位簽章附在原始訊息上,並且公佈公開金鑰

這時,因為簽署人公佈了公開金鑰,所以任何一個人都可以用公開金鑰驗證這個數位簽章…

  1. 驗證人收到附上數位簽章的原始訊息
  2. 驗證人用公開金鑰解密數位簽章,獲得雜湊值
  3. 驗證人對拿掉數位簽章的原始訊息,進行加密雜湊函數的計算後,獲得雜湊值
  4. 驗證人將兩個獲得的雜湊值進行比對
  5. 如果兩個雜湊值相同,這個數位簽章就得到驗證

數位簽章在加密貨幣上的運用

要進行加密貨幣交易時,就需要用數位簽章來驗證交易,也因為加密貨幣的交易都會被記錄在區塊鏈上,所以任何一個人都可以用簽署人公佈的公開金鑰去驗證交易。

另外,也能對簽署人有身份驗證的作用:

  • 只有簽署人有私密金鑰,沒有任何一個人可以製作簽署人的數位簽章
  • 也因為只有簽署人有私密金鑰,簽署人無法否定原本訊息不是他簽的

不只加密貨幣,目前數位簽章也被廣泛運用在各個領域中。

密碼學重點整理

1. 密碼學(Cryptography)是一種密碼的技術,主要用來保護及隱藏資訊。密碼學的運用非常廣泛,在加密貨幣中主要有加密、雜湊、數位簽章的運用。

2. 加密就是把訊息加上密碼,能夠將看的懂的訊息,變成看不懂的訊息。加密有分「對稱式加密」跟「不對稱式加密」,對稱式加密就是加密/解密都採用同一把鑰匙,不對稱加密就是加密/解密採用的是不同的鑰匙 (公開金鑰、私密金鑰)。

3. 雜湊 (Hash function)雜湊函數、雜湊演算法,是把不同長度的訊息,變成資料量固定的「值」的演算法。

4. 數位簽章(Digital signatures)是一個加密後的簽章,常被用在驗證訊息的真實性,屬於不對稱式加密反向的運用。將原本訊息用加密雜湊函數計算後獲得雜湊值,再用私密金鑰加密,就會產生數位簽章。驗證方需用公開金鑰解密數位簽章獲得雜湊值,再用加密雜湊函數計算原始訊息獲得的雜湊值進行比對,
一樣則驗證成功。

在閱讀許多加密貨幣白皮書等文件時,上述這些概念會經常被看到,

希望這篇解說,能讓大家對加密貨幣及區塊鏈基礎運作原理有更多了解。

更多關於加密貨幣的延伸閱讀:

1. 比特幣是什麼?

2. 區塊鏈懶人包》關於區塊鏈,你至少要知道些什麼?

3. 虛擬貨幣/加密貨幣是什麼?加密貨幣除了比特幣還有哪些?

編輯:Eden 主編:市場先生

上 / 下一篇文章

一般留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *