
Subscribe to kiralee.eth

Subscribe to kiralee.eth
<100 subscribers
<100 subscribers
Share Dialog
Share Dialog
透過範例了解區塊鏈的公鑰/私鑰與簽名
BlockChain demo 101作者:Anders Brownworth
我們上次談到了區塊鏈的整體,雖然擁有了分散式區塊鏈,能夠防止資料竄改,但顯然還有一個問題需要解決,也就是假冒交易的問題。

由於交易資料僅僅是文字方式的呈現,任何人都可以聲稱自己是anders來獲得區塊鏈獎勵。所以需要導入公鑰/私鑰來解決此問題。
公鑰/私鑰

公鑰/私鑰是指密碼學中的”非對稱式密碼學”,使用場景有”加密”與”數位簽章”。
私鑰只是一個隨機選取的數字,擁有和控制私鑰,即代表著你控制著相應的區塊鏈地址,包含地址上的所有資金。區塊鏈上的私鑰通常都是由64個16進制的數字組成。你可以投擲硬幣256次,得到一組隨機的二進制數字,再將其轉換為16進制,就可以得到私鑰,或是使用常見的區塊鏈錢包中的助記詞來管理私鑰。
公鑰是由私鑰所產生出來的一組數字,以太坊和比特幣使用的是”secp256k1“橢圓曲線算法。只能由私鑰產生公鑰,因此無法反向透過公鑰推算出私鑰。
Signatures/數位簽名

非對稱密碼學在區塊鏈的使用案例是“數位簽名”,私鑰可應用於交易的數位簽名,某筆交易經過數位簽名之後,只能使用其對應的公鑰來驗證。上圖是使用private key將要發送的訊息,簽署成Message Signature(數位簽名)。

之後,將此Signature(數位簽名)轉發給某人,或其他用戶,他們就能夠拿產生數位簽名的公鑰來驗證。如上圖,若message內容被修改過後,則使用公鑰驗證則會失效。

即,用戶A透過自己的私鑰簽署了一筆交易,成為了數位簽名,並發佈到區塊鏈上,而其他人就可以透過A的公鑰來驗證這筆交易,但沒辦法假冒A或是修改交易內容。
Transaction/交易

我們把數位簽名應用於交易上,上圖是由公鑰A轉20元給公鑰B,並透過私鑰進行簽署。
在實際案例中,在交易轉移時,是使用地址。以太坊地址是 唯一識別碼 unique identifiers,它們是使用單向雜湊函數(Keccak-256)從公鑰或合約產生的。

而交易發出後,就可以使用From公鑰對數位簽名進行驗證。
BlockChain/區塊鏈

若將區塊鏈中的資料替換成,帶有數位簽名,則可以確保,就算是礦工,也沒有辦法輕易更改區塊中的交易內容。上圖是將原本的轉帳人名改為公鑰(在實際案例中是區塊鏈地址)。

假設該區塊遭修改,且重新挖礦成功,但該筆被修改的資料仍然會出現數位簽名驗證失敗,因為該交易內容是被私鑰簽署過的。
透過範例了解區塊鏈的公鑰/私鑰與簽名
BlockChain demo 101作者:Anders Brownworth
我們上次談到了區塊鏈的整體,雖然擁有了分散式區塊鏈,能夠防止資料竄改,但顯然還有一個問題需要解決,也就是假冒交易的問題。

由於交易資料僅僅是文字方式的呈現,任何人都可以聲稱自己是anders來獲得區塊鏈獎勵。所以需要導入公鑰/私鑰來解決此問題。
公鑰/私鑰

公鑰/私鑰是指密碼學中的”非對稱式密碼學”,使用場景有”加密”與”數位簽章”。
私鑰只是一個隨機選取的數字,擁有和控制私鑰,即代表著你控制著相應的區塊鏈地址,包含地址上的所有資金。區塊鏈上的私鑰通常都是由64個16進制的數字組成。你可以投擲硬幣256次,得到一組隨機的二進制數字,再將其轉換為16進制,就可以得到私鑰,或是使用常見的區塊鏈錢包中的助記詞來管理私鑰。
公鑰是由私鑰所產生出來的一組數字,以太坊和比特幣使用的是”secp256k1“橢圓曲線算法。只能由私鑰產生公鑰,因此無法反向透過公鑰推算出私鑰。
Signatures/數位簽名

非對稱密碼學在區塊鏈的使用案例是“數位簽名”,私鑰可應用於交易的數位簽名,某筆交易經過數位簽名之後,只能使用其對應的公鑰來驗證。上圖是使用private key將要發送的訊息,簽署成Message Signature(數位簽名)。

之後,將此Signature(數位簽名)轉發給某人,或其他用戶,他們就能夠拿產生數位簽名的公鑰來驗證。如上圖,若message內容被修改過後,則使用公鑰驗證則會失效。

即,用戶A透過自己的私鑰簽署了一筆交易,成為了數位簽名,並發佈到區塊鏈上,而其他人就可以透過A的公鑰來驗證這筆交易,但沒辦法假冒A或是修改交易內容。
Transaction/交易

我們把數位簽名應用於交易上,上圖是由公鑰A轉20元給公鑰B,並透過私鑰進行簽署。
在實際案例中,在交易轉移時,是使用地址。以太坊地址是 唯一識別碼 unique identifiers,它們是使用單向雜湊函數(Keccak-256)從公鑰或合約產生的。

而交易發出後,就可以使用From公鑰對數位簽名進行驗證。
BlockChain/區塊鏈

若將區塊鏈中的資料替換成,帶有數位簽名,則可以確保,就算是礦工,也沒有辦法輕易更改區塊中的交易內容。上圖是將原本的轉帳人名改為公鑰(在實際案例中是區塊鏈地址)。

假設該區塊遭修改,且重新挖礦成功,但該筆被修改的資料仍然會出現數位簽名驗證失敗,因為該交易內容是被私鑰簽署過的。
No activity yet