從密碼學和私鑰角度解析持有鏈上資產的風險

摘要:許多Web3 的堅定擁護者將區塊鏈視為一項了不起的新技術,可以完全消除一個由來已久的問題—交易對手風險(counterparty risk)。但跨鏈橋被攻擊、NFT被盜的事件屢屢發生,這是為什麼?當我們擁有鏈上資產時會承擔哪些風險?區塊鏈的安全性如何?

作者:Williams Blockchain Coalition

編譯及整理:0x新聞Mary Liu

許多Web3 的堅定擁護者將區塊鏈視為一項了不起的新技術,可以完全消除一個由來已久的問題—交易對手風險(counterparty risk),即交易的一方不履約的風險。但跨鏈橋被攻擊、NFT被盜的事件屢屢發生,這是為什麼?當我們擁有鏈上資產時會承擔哪些風險?區塊鏈的安全性如何?

Screenshot-2019-07-28-at-17.47.53.png

儘管目前有許多區塊鏈,但本文試圖通過展示早期區塊鏈作為示例來回答這些問題,即比特幣和以太坊,它們已經設定了安全標準。

要掌握對區塊鏈安全性的基本了解,需要了解其主要組成部分:密碼學、API 和博弈論經濟激勵。 API 允許管理數據(交易、誰擁有什麼、哪些合約存儲在哪裡),激勵措施有助於激勵用戶運行節點並參與網絡,而密碼學保護區塊鏈安全。請注意,這些組成部分已經存在了一段時間——博弈論和經濟激勵自人類誕生以來就已經存在,API 自40 年代以來就已經存在,而由於密碼朋克們的努力,自80 年代以來,密碼學已經足夠安全,區塊鏈只是現有技術的組合。

如前所述,密碼學主要負責區塊鏈的安全性。儘管值得一提的是,存在一些與網絡規則相關的安全風險;例如,有多少個節點、塊之間的時間、難度、共識機制等。密碼學通過利用非對稱密碼學和哈希函數來實現安全所有權。數字簽名在技術上不是密碼學,只是驗證消息是否來自預期的發件人。

簡而言之,哈希函數具有抗碰撞性(每個輸入都有一個輸出)、確定性(輸入總是有相同的輸出)、計算速度快、單向(不能從輸出中獲取輸入)和偽隨機(稍微改變輸入會產生完全不同的輸出)。它們有許多用例,但其核心是可以加密消息,可能生成私鑰,還有助於有效地存儲數據。非對稱密碼學是這樣一種想法,即有一個安全保存的私鑰,可以讓一個人訪問他們的資金或解密發送給他們的消息;並且有一個從任何人都可以看到的私鑰派生的公鑰。這在實踐中的工作方式是Bob 使用Alice 的公鑰加密消息。可以解碼消息的唯一方法是使用只有Alice 知道的Alice 的私鑰。請注意,Alice 不知道發送者是誰。

Simpler-Cryptography.jpeg

私鑰是隨機生成的,有時像2 個素數一樣簡單(如RSA)或像橢圓曲線上的坐標一樣複雜(如DSA)。公鑰是通過將私鑰插入函數中生成的——在RSA 中,它是2 個素數的乘積,在DSA 中,它是橢圓曲線上的坐標。 DSA 用於區塊鏈,因為它提供更短的密鑰長度,從而更快的網絡響應時間。它使用沒有解決方案的橢圓曲線離散對數問題。因此,獲取私鑰的唯一方法是暴力破解。這與另一個廣泛使用的私鑰系統RSA 不同,RSA 中的一些密鑰可以從公鑰中解碼(大約0.2%)。因此,使用DSA 時,私鑰非常安全。

創建私鑰和公鑰的方式因非對稱密碼學的實施以及各方設置的規則而異。計算機科學家和教授組成了各種聯盟來製定標準,例如高效密碼學標準(SEC),其中概述了要使用的橢圓曲線域參數。以太坊使用來自SEC 2:推薦橢圓曲線域參數的secpk256k1。以太坊私鑰是一個32 字節長(64 個字符)的十六進製字符串。可以通過散列函數或使用BIP(比特幣改進提案)中概述的助記詞標準來生成私鑰。然後使用secpk256k1 參數將私鑰插入橢圓曲線數字簽名算法(ECDSA),然後在曲線上生成坐標。其中一個坐標是公鑰,不同的區塊鏈根據它來推導出地址。比特幣只是將其縮短為公鑰,而以太坊將(x,y) 放入另一個哈希函數keccak256。

這種派生私鑰和公鑰的方式適用於Solana、Cardano、Cosmos 區塊鏈、Algorand 等。它們都使用一種橢圓曲線密碼學形式,只是具有不同的參數和不同的私鑰長度和格式。許多都與BIP 39 兼容,這是許多錢包用來從短語生成密鑰的標準。

從這個關於如何創建公私密鑰對的簡化版本可以看出,他們帳戶的安全性完全依賴於隨機性和數學。

但是當一個人想要與一個節點交互並向他們的朋友發送一些代幣時會發生什麼?他們不需要出示他們的私鑰來證明他們擁有資金嗎?另外,是什麼阻止有人建立網絡篡改您的資金?這就是數字簽名發揮作用的地方。在用別人的公鑰加密消息的方式中,記住沒有辦法證明發件人是誰。 Bob 可以使用Alice 的公鑰加密一條消息,上面寫著“向Alice 發送5 個代幣”,但這沒有任何意義。這是因為唯一可以解密消息的人是Alice,甚至不是網絡中的一個節點。所以,Alice 會收到消息,但不知道它來自誰,什麼也不會發生。

Digital-Signature-Feature.png

相反,數字簽名有助於查看消息是否來自預期的發件人以及消息是否已被篡改。反之亦然:Bob 使用他自己的私鑰簽署消息——即“向Alice 發送5 個代幣”——並且消息可以由節點使用Bob 使用他的公鑰來驗證。請注意,Bob 的私鑰永遠不會暴露給除他之外的任何人;並且由於私鑰和公鑰在數學上是相互關聯的,因此可以驗證簽名中使用的私鑰是否與公鑰相關聯。

簡而言之,數字簽名是一種確保花錢的人無需出示所述密鑰即可訪問私鑰的方法。因此,如果Alice 試圖用她的私鑰簽署一條消息,說“從Paul 向Bob 發送5 個代幣”,那麼節點不會允許這種情況發生,因為Paul 的私鑰沒有用於簽署該消息。因此,數字簽名只允許擁有資金的人轉移資金。區塊鏈的開發人員無法轉移用戶的資金,因為他們無法控制超過50% 的網絡,因此無法創建具有最大哈希能力的更改鏈。

從對數字簽名和區塊鏈上數據更改方式的理解來看,如果私鑰永遠不必暴露並且沒有人可以惡意更改數據,還有什麼可擔心的呢?人們如何仍然被黑客入侵?

資金被盜或丟失的最普遍原因是私鑰管理不善。丟失它或告訴“discord mod”騙子您的私鑰是一些最常見的方式。竊取資金的另一種方式是智能合約黑客。儘管大多數錯誤發生在草率編碼的新項目或橋樑上,但已經審計的智能合約中仍然可能存在錯誤。這很容易被忽略——一位因預防了8 億美元資產被盜而從Polygon中獲得200 萬美元獎勵的白帽黑客寫道,這個錯誤就像合約錯誤地檢查了Plasma 退出ID 的第一個半字節,允許為單個銷毀交易創建多達224 個退出ID(這允許用戶以相同的資金退出L2 224 次)。而且這樣的故事還有很多。

一個不太常見的威脅是衝突——兩個人將創建相同的私鑰的想法。 2 個人使用BIP 39 生成助記詞和私鑰可能會發生這種情況。助記詞只有這麼多,但安全研究員Adrian Bednarek 估計,二人隨機選擇了同一個私鑰的可能性就像在海灘上找到一粒沙子,再把它扔回去,然後另一個人恰巧在地球上的千百個海灘中找到了它。然而,借助量子計算,猜測私鑰可能會更容易一些——這不僅是對加密貨幣的真正威脅,也是對世界的真正威脅——我們的核代碼將受到損害。

總體而言,區塊鏈的安全性很強,不會被黑客入侵,除非個人放棄自己的私鑰或者數千年來被暴力破解(只要不存在量子計算)。因此,將資產上鍊時所承擔的風險是私鑰管理,如果資金隨後被轉移到任何協議中,那麼合約中的代碼錯誤將催生更大的風險。

了解更多資訊歡迎加入:

0x新聞Discord 社群:https://discord.gg/QSvv7MZ2tz

0x新聞TG 交流群:https://t.me/BitPushCommunity

0x新聞TG 訂閱: https://t.me/bitpush

Twitter :https://twitter.com/BitpushNewsCN

本文來自0x新聞,文章鏈接: https://www.0xcj.com/articles/2445675 轉載需註明出處

Total
0
Shares
Related Posts