溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

區(qū)塊鏈的哪些地方用到了密碼學(xué)

發(fā)布時(shí)間:2022-01-14 09:58:02 來(lái)源:億速云 閱讀:166 作者:iii 欄目:互聯(lián)網(wǎng)科技

今天小編給大家分享一下區(qū)塊鏈的哪些地方用到了密碼學(xué)的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。

區(qū)塊鏈的哪些地方用到了密碼學(xué)?

首先,如果你是一個(gè)區(qū)塊鏈用戶,可能在你房間里的某個(gè)角落,會(huì)有一張紙條,上面抄著十二個(gè)不知道怎么來(lái)的單詞,有的人還有很多張,甚至有些大 holder 會(huì)把這十二個(gè)英文單詞刻在鋼板上,然后鎖進(jìn)保險(xiǎn)箱里。

是的,為什么這十二個(gè)助記詞,或者像一長(zhǎng)串亂碼般的私鑰能夠代表你對(duì)資產(chǎn)的所有權(quán)呢?

這背后的原理其實(shí)就是密碼學(xué)。

區(qū)塊鏈上的密鑰、地址和錢包都是通過(guò)密碼學(xué)去實(shí)現(xiàn),利用非對(duì)稱加密技術(shù)——橢圓曲線算法(ECC)可以驗(yàn)證某人持有的私鑰是否是吻合某個(gè)公鑰,通過(guò)這個(gè)方式我們可以證明這個(gè)人是否是這筆加密資產(chǎn)的持有人,因?yàn)槌藫碛兴借€的人之外,其他沒(méi)有該私鑰的人是沒(méi)有辦法解鎖這筆資產(chǎn)的。

我們?cè)诖擞帽忍貛排e例私鑰、公鑰和地址生成的原理,一個(gè)比特幣錢包中包含一系列的密鑰對(duì),每個(gè)密鑰對(duì)包括一個(gè)私鑰和一個(gè)公鑰。私鑰通常是一個(gè)隨機(jī)選出的 256 位的數(shù)字?;谒借€,我們就可以使用 secp256k1 標(biāo)準(zhǔn)的橢圓曲線這個(gè)單向密碼函數(shù)產(chǎn)生一個(gè)公鑰?;诠€,我們又可以使用一個(gè)單向哈希函數(shù) SHA256 和 RIPEMD160 生成比特幣地址,再通過(guò) Base58 check 編碼將比特幣地址變成現(xiàn)在這較為簡(jiǎn)潔的形式。而像我們比較常用的助記詞,則是通過(guò)基于 BIP 39 標(biāo)準(zhǔn)而生成的隨機(jī)英文單詞。如果沒(méi)有私鑰或助記詞的人,是無(wú)法使用這筆加密資產(chǎn)的。
區(qū)塊鏈的哪些地方用到了密碼學(xué)
當(dāng)我們有了可以配對(duì)的密鑰對(duì)后,可以在各種類型的錢包或者客戶端上做驗(yàn)證,確認(rèn)資產(chǎn)的所有權(quán),并且通過(guò)這個(gè)客戶端來(lái)進(jìn)行各種資產(chǎn)的使用。例如最簡(jiǎn)單 BTC 轉(zhuǎn)賬,或者再進(jìn)階一點(diǎn)的用某個(gè)錢包去簽署智能合約的交易:比如用 Metamask、imToken 或者 Alphawallet 等錢包里的 ETH 去購(gòu)買加密貓,或者在 DeFi 的平臺(tái)上面進(jìn)行借貸,以及用 Uniswap 交換某些 ERC20 Token 等。

除了轉(zhuǎn)賬等基本的驗(yàn)證外,現(xiàn)在甚至某些平臺(tái)的身份驗(yàn)證都可以用公私鑰來(lái)做登錄驗(yàn)證,或者通過(guò)驗(yàn)證你是某筆資產(chǎn)的所有人來(lái)進(jìn)行各種權(quán)益的證明。簡(jiǎn)單來(lái)說(shuō),公私鑰驗(yàn)證系統(tǒng)背后的密碼學(xué)就是用戶想暢游區(qū)塊鏈?zhǔn)澜绲耐ㄐ凶C。

在區(qū)塊鏈中,還有另外一個(gè)不可忽視的密碼學(xué)使用場(chǎng)景,就是區(qū)塊中的交易排序,以及 Merkle Tree 等決定區(qū)塊排序的過(guò)程。比特幣就是將每筆交易用 SHA256 算法進(jìn)行加密,在這里加密算法確保了區(qū)塊鏈的安全性,以及幾乎不可能被篡改的特性。光是在這兩個(gè)比特幣的基礎(chǔ)使用場(chǎng)景中就都用到了密碼學(xué),于是乎甚至還有許多人在猜測(cè),中本聰可能是個(gè)密碼學(xué)大佬,才能夠把密碼學(xué)在這個(gè)點(diǎn)對(duì)點(diǎn)的現(xiàn)金系統(tǒng)中使用的淋漓盡致。

當(dāng)然,除了在區(qū)塊的生成和公私鑰驗(yàn)證這兩大區(qū)塊鏈的核心功能上可以發(fā)揮用途之外,密碼學(xué)在隱私保護(hù)甚至擴(kuò)容等方面都可以派上用場(chǎng)。

現(xiàn)在的公鏈如何使用密碼學(xué)?

Wow,這是一條新的公鏈嗎?
那它有沒(méi)有錢包啊 ?
又要多一組新地址和抄一組新的助記詞了。。。

如果一個(gè)用戶真的愿意自己好好地保管自己的資產(chǎn),也勤于投資不同的公鏈,我相信他們一定也會(huì)有類似的經(jīng)驗(yàn)和好幾組不同的助記詞或私鑰。但到最后,他們能夠保存好的,可能只剩下那些最主要的持倉(cāng)資產(chǎn),有些人甚至忘記備份某些資產(chǎn)的助記詞。

長(zhǎng)期下來(lái),區(qū)塊鏈資產(chǎn)管理的問(wèn)題也導(dǎo)致區(qū)塊鏈的門檻越來(lái)越高。所以一些錢包為了解決這個(gè)問(wèn)題,已經(jīng)提出了很多的優(yōu)化方案。有些錢包甚至可以做到一個(gè)身份錢包的單一助記詞,可以管理多種資產(chǎn)等功能,但仍然有許多組不同的地址必須要由用戶來(lái)做管理。這樣的問(wèn)題對(duì)于很多新公鏈而言可能更為嚴(yán)重,因?yàn)槿绻脩粢ネㄟ^(guò)他們的網(wǎng)頁(yè)或手機(jī)錢包,去嘗試鏈上的應(yīng)用,用戶就會(huì)增加許多管理公私鑰的成本,更何況他們不像郵箱的密碼一樣可以任由用戶自己定義,既不滑順也不香。

但為什么區(qū)塊鏈會(huì)有這樣的限制?

這樣的限制是因?yàn)槟壳霸S多的公鏈,都將很多密碼學(xué)原語(yǔ)的使用場(chǎng)景寫入了共識(shí)層,因此在這些公鏈中,像公私鑰簽名、客戶端驗(yàn)證,以及區(qū)塊生成的哈希和常用的加密算法,基本上都是鑲嵌在共識(shí)層中的。例如地址所使用的驗(yàn)證、交易使用的簽名等,其實(shí)都寫在底層協(xié)議中,因此會(huì)變得非常難以改動(dòng)。另外,許多公鏈的虛擬機(jī)性能都不足以支持靈活的密碼學(xué)原語(yǔ)部署,因此對(duì)于這樣的公鏈而言,如果底層的虛擬機(jī)不預(yù)先支持某個(gè)密碼學(xué)原語(yǔ),那么基于該密碼學(xué)原語(yǔ)的場(chǎng)景可能很難直接被開發(fā)者使用。

如果要更動(dòng),唯一的辦法就是硬分叉!

拿以太坊為例,以太坊的共識(shí)層寫入了哪些密碼學(xué)的場(chǎng)景呢?

除了區(qū)塊的加密簽名和 Merkle Tree 的哈希外,還有交易簽名和客戶端的驗(yàn)證。如果有任何人想要在這些點(diǎn)上做改動(dòng),例如將以太坊公私鑰的哈希算法 keccak-256 換成其他簽名算法,那么唯一的辦法就是提一個(gè) EIP (Ethereum Improvement Proposal),然后等待、祈禱這個(gè)提案被排入硬分叉之中。因?yàn)閷懺趨f(xié)議層的內(nèi)容,就是全網(wǎng)的所有用戶都必須遵從的規(guī)則。

然而硬分叉往往需要非常長(zhǎng)的時(shí)間,以 EIP 152 為例,這是一個(gè) 2016 年就提出的提案,希望將簽名算法 BLAKE2 加入以太坊中,但直到 2019 年底的伊斯坦布爾提案中才被加入到升級(jí)的內(nèi)容當(dāng)中,整整歷時(shí) 3 年之久。

從剛才 EIP 152 的例子中我們還會(huì)發(fā)現(xiàn)另一個(gè)限制,那就是在以太坊上如果要使用虛擬機(jī)不支持的密碼學(xué)原語(yǔ),幾乎是不可能的。因?yàn)閷?duì)于以太坊虛擬機(jī)而言性能是一大限制,光是簡(jiǎn)單的運(yùn)算,就能夠消耗大量的 gas。

因此我們?nèi)绻仡櫼蕴簧蠚v次的分叉,就可以發(fā)現(xiàn)從家園(HomeStead)的硬分叉升級(jí)開始,以太坊就不斷地把所有可能常用到的密碼學(xué)原語(yǔ),例如 sha256 hash、ripenmd160hash 等持續(xù)的通過(guò)預(yù)編譯(precompiled)的方式,加入到底層的虛擬機(jī)中。這點(diǎn)在拜占庭(Byzantium)或者伊斯坦布爾(Istanbul)的升級(jí)中也可以看到。以太坊通過(guò)硬分叉的形式,來(lái)預(yù)編譯密碼學(xué)原語(yǔ)以及這些密碼學(xué)原語(yǔ)運(yùn)算的 gas 定價(jià)。

如果不通過(guò)預(yù)編譯合約在節(jié)點(diǎn)先進(jìn)行實(shí)現(xiàn),那么許多簽名算法的智能合約部署將花費(fèi)非常非常高的 gas 費(fèi),導(dǎo)致其根本無(wú)法部署。例如 EIP 196、 EIP 197 之所以被采納,就是預(yù)見(jiàn)了 zkSNARK 需要大量的 gas 進(jìn)行鏈上的運(yùn)算。因此預(yù)先將這些加密算法,如橢圓曲線加法、乘法和配對(duì)驗(yàn)證等編譯進(jìn)了底層的 EVM 中,好讓這些計(jì)算成本可以節(jié)省下來(lái)。所以,我們可以說(shuō)在以太坊上除了已經(jīng)做了預(yù)編譯的簽名算法外,其余的加密算法基本上是沒(méi)辦法使用的。

上述這些固化的密碼學(xué)使用方式,對(duì)于開發(fā)者而言是一個(gè)很大的限制。

由于交易和客戶端的簽名驗(yàn)證都被寫入共識(shí)層,因此驗(yàn)證工具和流程都必須按照規(guī)定的加密算法進(jìn)行。例如在比特幣或以太坊中,如果我們要?jiǎng)?chuàng)建一個(gè)賬戶,那么我們依舊需要管理一組新的密鑰對(duì)。

對(duì)于想要帶來(lái)良好用戶體驗(yàn)的開發(fā)者而言,這樣會(huì)產(chǎn)生很多的限制,并且需要通過(guò)其他方式,去彌補(bǔ)固化的底層設(shè)施帶來(lái)的不友善的用戶體驗(yàn)。比如在創(chuàng)建助記詞之后,我們可以在某些錢包中使用 FaceID(如 imToken),比如在 ABC Wallet 中,用戶起初只需要靠像手機(jī)里的六字驗(yàn)證碼就能夠登入,等你真的覺(jué)得你需要把私鑰或助記詞導(dǎo)出了,再進(jìn)行導(dǎo)出和備份。

這些都是開發(fā)者試圖提升用戶體驗(yàn)所想出來(lái)的好辦法,但對(duì)于每一條新的公鏈,密鑰對(duì)管理的本質(zhì)都是需要有一組新地址和密鑰,這個(gè)問(wèn)題是一直存在的。

上述的公私鑰驗(yàn)證方式不夠靈活的問(wèn)題,在比特幣、以太坊等較為先發(fā)的公鏈上或許還不明顯,因?yàn)樗麄円呀?jīng)有既有的用戶,這些用戶也被折磨習(xí)慣了。但對(duì)于近期興起的公鏈而言,如果還存在和先前公鏈同樣的進(jìn)入摩擦成本,那么就是給用戶設(shè)置了障礙,也會(huì)影響開發(fā)者是否想要在這個(gè)公鏈上開發(fā)的意愿。

一個(gè)對(duì)用戶有學(xué)習(xí)成本的公鏈,在獲取用戶上就存在著先天的壁壘,即使這些公鏈有其他的亮點(diǎn),可能對(duì)于開發(fā)者而言,也不會(huì)那么有吸引力,因?yàn)樗麄冎篮芏嗟挠脩艨赡芏急贿@些不友善的用戶體驗(yàn)給嚇走了。

另外,密碼學(xué)原語(yǔ)不能夠靈活使用的問(wèn)題,影響的層面還不止于公私鑰的保存。對(duì)于開發(fā)者而言,如果以后他們想用更先進(jìn)的密碼學(xué)原語(yǔ)來(lái)保證隱私及安全,一樣會(huì)面臨到底層的虛擬機(jī)能不能部署,以及支持簽名驗(yàn)證的挑戰(zhàn)。當(dāng)然還會(huì)影響目前大家討論的很熱的話題:跨鏈,因?yàn)椴煌逆準(zhǔn)褂玫拿艽a學(xué)原語(yǔ)也會(huì)有所不同,在虛擬機(jī)驗(yàn)證交易時(shí)就會(huì)遇到這個(gè)難題,這也是為什么目前許多同構(gòu)跨鏈的解決方案(Cosmos / Polkadot )可行,但對(duì)于異構(gòu)跨鏈的方案卻停滯不前的原因。

Nervos 的設(shè)計(jì)有何不同?

在 Nervos CKB 中,除了交易排序外,沒(méi)有其他硬編碼的密碼學(xué)原語(yǔ),資產(chǎn)所有權(quán)的驗(yàn)證是通過(guò) cell 中的 lock script 來(lái)做驗(yàn)證,其中的驗(yàn)證規(guī)則和使用的密碼學(xué)原語(yǔ)都是可以自定義的,因此幾乎所有的密碼學(xué)原語(yǔ)都可以被開發(fā)者靈活的使用。

套用一句 Nervos 研究員 Cipher 老師的話來(lái)說(shuō),就是:「在 CKB 上除了最基礎(chǔ)的交易排序以外,其余都是應(yīng)用層的內(nèi)容。」這讓開發(fā)者擁有了非常大的開發(fā)彈性,去進(jìn)行各式各樣的開發(fā),例如更自由的賬戶驗(yàn)證方法等。

因?yàn)樵诨?RISC-V 的 CKB-VM 中,要求的就是一套能夠符合 RISC-V 編碼的驗(yàn)證規(guī)則而已,開發(fā)者有很多能夠自由揮灑的空間。下圖可以看出 Nervos 和其他可以支持智能合約的公鏈在靈活度上的差異,應(yīng)用層的內(nèi)容表示的是可以去做自定義的,協(xié)議層代表的是需要經(jīng)過(guò)「分叉」才能改動(dòng)的內(nèi)容。

區(qū)塊鏈的哪些地方用到了密碼學(xué)

以目前 Nervos 的 Grnats 團(tuán)隊(duì) Lay2 為例,為什么他們開發(fā)的 pw-sdk 能夠用以太坊的地址,甚至是 ENS 來(lái)接收 CKB?是因?yàn)樵?CKB 上,地址是開發(fā)者可以任意把玩的應(yīng)用層內(nèi)容。理論上只要鏈上有已經(jīng)有驗(yàn)證規(guī)則的 cell 和非對(duì)稱加密的加密算法庫(kù),這種地址生成規(guī)則就能夠被驗(yàn)證。例如我們可以把以太坊的 Keccak-256 (SHA-3)的簽名算法和驗(yàn)證規(guī)則和比特幣的 SHA-256 都部署在鏈上,那么未來(lái)的其他開發(fā)者就可以用 cell deps 進(jìn)行調(diào)用。

也因此,任何的開發(fā)者未來(lái)如果想在 CKB 上 ,為他的資產(chǎn)添加更先進(jìn)的加密算法做為解鎖的規(guī)則,是完全可行的。因?yàn)槿魏稳硕伎梢圆渴鸶鞣N密碼學(xué)原語(yǔ)庫(kù)在 CKB 上,并且可以通過(guò)優(yōu)化去節(jié)省存儲(chǔ)空間以及減少驗(yàn)證所需的 cycle 去降低部署的成本,讓任何先進(jìn)的密碼學(xué)原語(yǔ)不用等到硬分叉也能夠被使用。

在 CKB 上可能看見(jiàn)的區(qū)塊鏈未來(lái):直逼互聯(lián)網(wǎng)的用戶體驗(yàn)

基于靈活的密碼學(xué)原語(yǔ),我們可以說(shuō)在未來(lái),很多互聯(lián)網(wǎng)上用戶非常習(xí)慣的驗(yàn)證規(guī)則,也完全可能被寫成 RISC-V 可以讀取的形式,并且被部署到鏈上,例如 PGP Key 驗(yàn)證或者指紋解鎖等功能。如果在鏈上有一個(gè)能夠?qū)?yīng)他們所使用的驗(yàn)證標(biāo)準(zhǔn)的腳本,并且有可以支援這種驗(yàn)證的可信環(huán)境,那么如此方便的使用方式在未來(lái)是真的可能實(shí)現(xiàn)的。

再更深入一點(diǎn)地看,未來(lái)的應(yīng)用層,會(huì)有更多的場(chǎng)景會(huì)使用到密碼學(xué)的各種算法。

近兩年在分層擴(kuò)容的領(lǐng)域(Layer 2),除了原先的閃電網(wǎng)絡(luò)、狀態(tài)通道以及其他的側(cè)鏈解決方案之外,又出現(xiàn)了一種新興的密碼學(xué)擴(kuò)容應(yīng)用:Rollup,也就是利用簽名算法來(lái)壓縮交易。

目前在 Rollup 上最主流的壓縮交易的方式是零知識(shí)證明 (zkp),也就是所謂的 zkRollup。未來(lái)如果在 Rollup 上有其他更先進(jìn)的零知識(shí)證明解決方案,或者利用其他去簽名算法(如 BLS 等),對(duì)于 CKB 而言,只要開發(fā)者可以想到低成本的實(shí)現(xiàn)方法,都可以直接讓 CKB-VM 驗(yàn)證,而不需要通過(guò)硬分叉。因?yàn)檫@并不涉共識(shí)層的內(nèi)容,而且 CKB-VM 相較于 EVM 而言也更加地高效。目前安比實(shí)驗(yàn)室也在開發(fā)在 CKB 上可使用的零知識(shí)證明庫(kù),未來(lái)可供開發(fā)者任意使用。

另外,CKB 因?yàn)榭梢灾С朱`活的密碼學(xué)原語(yǔ),也在區(qū)塊鏈跨鏈資產(chǎn)轉(zhuǎn)移方面,比其它的公鏈有更大的先天優(yōu)勢(shì)進(jìn)行來(lái)自不同鏈的交易驗(yàn)證,讓 CKB 更有機(jī)會(huì)完成異構(gòu)跨鏈的資產(chǎn)流通與轉(zhuǎn)移。

打從中本聰?shù)谋忍貛虐灼鴨?wèn)世開始,區(qū)塊鏈就是一個(gè)可以在中心化的環(huán)境下用密碼學(xué)去證明共識(shí)的新技術(shù),這是在互聯(lián)網(wǎng)上無(wú)法完成的事情。但要大規(guī)模的使用區(qū)塊鏈,我們要做的不是讓用戶在體驗(yàn)上委曲求全,而是像 Lay2 團(tuán)隊(duì)的 Frank 說(shuō)的那樣:「我們需要一個(gè)能夠有能力去支持開發(fā)者‘開門迎客’的基礎(chǔ)設(shè)施」,讓區(qū)塊鏈不會(huì)因?yàn)榈讓釉O(shè)施的不靈活,而成為少數(shù)極客或圈內(nèi)人的玩物。

公鏈如果能夠靈活的支持各種密碼學(xué)原語(yǔ),讓開發(fā)者可以有更高的彈性,那么就更可以跳過(guò)「教育用戶」的這個(gè)緩慢的過(guò)程。因?yàn)榫秃突ヂ?lián)網(wǎng)一樣,雖然現(xiàn)在大家都是無(wú)網(wǎng)不歡的人,但對(duì)于純粹的 C 端用戶而言,他們依舊不需要知道互聯(lián)網(wǎng)到底分了幾層,或者 P2P 網(wǎng)絡(luò)是怎么回事。

同樣的,區(qū)塊鏈的純 C 端用戶在使用區(qū)塊鏈技術(shù)時(shí)也不需要知道區(qū)塊鏈的底層知識(shí),我們要做的是打造一個(gè)可以擁有互聯(lián)網(wǎng)體驗(yàn),又有區(qū)塊鏈的憑證,以及安全和去中心化等加成效果的基礎(chǔ)設(shè)施,而具有高度編程靈活性的 Nervos CKB 正在這條道路上奮勇向前!

以上就是“區(qū)塊鏈的哪些地方用到了密碼學(xué)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI