張曼,李洪濤,董科軍,延志偉
中國(guó)互聯(lián)網(wǎng)絡(luò)信息中心,北京 100190
互聯(lián)網(wǎng)的發(fā)展經(jīng)歷了不同的階段,最初的Web 1.0 時(shí)期用戶只能進(jìn)行網(wǎng)頁(yè)瀏覽,只有少數(shù)的技術(shù)人員才具備在網(wǎng)絡(luò)上發(fā)布內(nèi)容的資質(zhì);然后到Web 2.0階段網(wǎng)絡(luò)已能提供豐富的內(nèi)容管理與交互方式,每個(gè)用戶都能成為網(wǎng)絡(luò)內(nèi)容的發(fā)布者,在應(yīng)用場(chǎng)景上涵蓋了社交、購(gòu)物、點(diǎn)評(píng)等各個(gè)方面,內(nèi)容形式也更加多樣化,包括文本圖像音視頻等[1]。但是發(fā)展至今,當(dāng)前網(wǎng)絡(luò)依然存在一些問題,比如因安全與隱私漏洞導(dǎo)致的數(shù)據(jù)泄露丟失、網(wǎng)絡(luò)審查、非法網(wǎng)站攻擊等。Web 3.0 致力于更好的解決這些問題,在去中心化、語(yǔ)義理解、人工智能、多維度空間等方面構(gòu)建新一代網(wǎng)絡(luò)[2]。
網(wǎng)絡(luò)空間標(biāo)識(shí)是互聯(lián)網(wǎng)的基礎(chǔ)資源架構(gòu),關(guān)系著互聯(lián)網(wǎng)的安全穩(wěn)定和良好可用性。全球范圍內(nèi)構(gòu)建起的DNS 系統(tǒng)負(fù)責(zé)將可讀性強(qiáng)的域名地址轉(zhuǎn)化為枯燥難記的IP 地址,是保障互聯(lián)網(wǎng)正常訪問的基石;另一方面由于DNS 的特殊地位致使其很容易成為網(wǎng)絡(luò)攻擊的目標(biāo),存在著安全隱私隱患。當(dāng)前的DNS層次結(jié)構(gòu)中,頂部是由互聯(lián)網(wǎng)名稱與數(shù)字地址分配機(jī)構(gòu)(The Internet Corporation for Assigned Names and Numbers,ICANN)管理的根區(qū)域,ICANN 將根域分配給政府、機(jī)構(gòu)和像Verisign 這樣的營(yíng)利性公司進(jìn)行管理,如注冊(cè).com 域名需要向ICANN和Verisign 支付一定金額的費(fèi)用。域名系統(tǒng)的根區(qū)文件由互聯(lián)網(wǎng)數(shù)字分配機(jī)構(gòu)(The Internet Assigned Numbers Authority,IANA)管理,更新區(qū)文件內(nèi)容需要向IANA 提出申請(qǐng),極端情況其可以直接修改或者刪除區(qū)文件的內(nèi)容。
當(dāng)前數(shù)字認(rèn)證體系建立在受信任的第三方之上,通信時(shí)為防止消息被第三方竊取,需要驗(yàn)證對(duì)方身份,數(shù)字證書由證書頒發(fā)機(jī)構(gòu)頒發(fā),根證書由全球權(quán)威的幾家公司頒發(fā),作為整個(gè)架構(gòu)的信任錨。
網(wǎng)絡(luò)中不同的網(wǎng)站與應(yīng)用往往使用各自獨(dú)立的身份驗(yàn)證體系,從用戶自身來(lái)說(shuō),多個(gè)繁瑣的賬戶信息不方便記錄和保存,同時(shí)存在信息泄露被盜的風(fēng)險(xiǎn)。另一方面,應(yīng)用的賬戶管理權(quán)限掌握在特定公司手里,其可以隨時(shí)刪除、封鎖賬戶或其發(fā)布的內(nèi)容信息。
因此,當(dāng)前的互聯(lián)網(wǎng)在基礎(chǔ)架構(gòu)、認(rèn)證機(jī)制及應(yīng)用層面仍是一個(gè)相對(duì)中心化的系統(tǒng),其建立在對(duì)少數(shù)權(quán)威機(jī)構(gòu)的信任機(jī)制之上,容易造成網(wǎng)絡(luò)攻擊和信息泄露,普通用戶缺少相應(yīng)的自主權(quán)。
區(qū)塊鏈相關(guān)技術(shù)從最初的數(shù)字貨幣逐漸與其他行業(yè)進(jìn)行融合,在網(wǎng)絡(luò)基礎(chǔ)資源領(lǐng)域也展開了相關(guān)的探索與研究,基于區(qū)塊鏈的網(wǎng)絡(luò)空間標(biāo)識(shí)服務(wù)最早推出在2011年前后,主要利用區(qū)塊鏈匿名性,不存在中心節(jié)點(diǎn),網(wǎng)絡(luò)中各個(gè)參與者之間相互制衡來(lái)保證安全等技術(shù),致力構(gòu)建新型網(wǎng)絡(luò)空間標(biāo)識(shí)方案。
當(dāng)前DNS 系統(tǒng)可能存在域名劫持、緩存污染、DDoS 攻擊、網(wǎng)絡(luò)釣魚等問題[3]。
域名劫持實(shí)現(xiàn)方式分為直接對(duì)原始登記信息進(jìn)行破解修改,以及第三方監(jiān)聽請(qǐng)求,截獲響應(yīng)消息,并將虛假信息回復(fù)給請(qǐng)求方,從而使請(qǐng)求映射到惡意IP 等。
DDoS 通過(guò)發(fā)送過(guò)量的請(qǐng)求完全占據(jù)應(yīng)答方資源(例如包括很多最終驗(yàn)證為無(wú)效的分組),或冒充目標(biāo)方向服務(wù)端發(fā)送大量請(qǐng)求,進(jìn)而接收過(guò)量的應(yīng)答導(dǎo)致目標(biāo)方帶寬阻塞。其對(duì)應(yīng)的防治措施包括網(wǎng)絡(luò)防御帶寬擴(kuò)充、分散業(yè)務(wù)部署、分組清洗;DNS響應(yīng)速率限制技術(shù)限制突增請(qǐng)求的響應(yīng)頻率;利用系統(tǒng)監(jiān)測(cè),日志分析等進(jìn)行處理等[4]。
部分DNS 攻擊的實(shí)施基礎(chǔ)是基于DNS 未進(jìn)行響應(yīng)發(fā)送方驗(yàn)證,DNS 安全擴(kuò)展(Domain Name System Security Extensions,DNSSEC)增加了相應(yīng)校驗(yàn),并且檢查收到的DNS 響應(yīng)信息是否被惡意修改[5]。DNSSEC 的實(shí)現(xiàn)基于非對(duì)稱加密方法,逐層利用私鑰進(jìn)行簽名,并利用HASH 對(duì)比檢驗(yàn)消息內(nèi)容是否經(jīng)過(guò)改動(dòng);它以根域名服務(wù)器作為信任錨,由上到下逐層構(gòu)建起信任機(jī)制,增加了四類資源記錄類型和對(duì)應(yīng)的消息Header 位來(lái)實(shí)現(xiàn)上述功能[6]。但是DNSSEC 并未對(duì)DNS 消息進(jìn)行加密,同時(shí)在廣泛部署推廣上存在一定的困難。
隱私泄露是DNS 面臨的另一問題,DNS 查詢經(jīng)過(guò)各級(jí)服務(wù)器,基本都是基于UDP 的明文傳輸,同時(shí)支持搶答,各級(jí)服務(wù)器和第三方監(jiān)聽者很容易能夠獲取用戶的域名查詢行為數(shù)據(jù),圍繞域名系統(tǒng)的隱私信息挖掘、用戶分析等已日益嚴(yán)重。針對(duì)以上問題現(xiàn)已提出一系列技術(shù)方案(DNSCurve、DNSCrypt、DoT[7]、DoH[8]等),借 助HTTPS、TLS等技術(shù)對(duì)消息進(jìn)行加密,但部分技術(shù)本身或在應(yīng)用層面仍存在一定的局限性。
區(qū)塊鏈的關(guān)鍵技術(shù)主要包含:共識(shí)機(jī)制、P2P網(wǎng)絡(luò)協(xié)議、密碼加密簽名相關(guān)方法、數(shù)據(jù)結(jié)構(gòu)模型、智能合約,同時(shí)其實(shí)現(xiàn)包括跨學(xué)科設(shè)計(jì)如經(jīng)濟(jì)學(xué)原理等。
1.2.1 比特幣
比特幣各區(qū)塊間通過(guò)哈希指針連接,每一筆交易要指明其來(lái)源與輸出,并加上發(fā)送方的簽名[10]。在交易中發(fā)送方會(huì)說(shuō)明自己的公鑰,網(wǎng)絡(luò)中的其他節(jié)點(diǎn)驗(yàn)證該交易時(shí)會(huì)拿發(fā)送方給出的公鑰與當(dāng)前交易的輸入來(lái)源對(duì)應(yīng)交易的輸出地址進(jìn)行校驗(yàn),以確定用戶身份合法性。
比特幣區(qū)塊大小限制為1M,由于交易大小不一,平均每個(gè)區(qū)塊包含大約2500~3000 個(gè)交易[13]。其節(jié)點(diǎn)分為全節(jié)點(diǎn)和輕節(jié)點(diǎn),全節(jié)點(diǎn)保存塊頭和塊體,可以參與挖礦;輕節(jié)點(diǎn)只保存塊頭,負(fù)責(zé)交易驗(yàn)證。nonce 值是一個(gè)4 字節(jié)的隨機(jī)數(shù)值,挖礦過(guò)程需要求解符合條件的nonce 值。
比特幣的共識(shí)是以最長(zhǎng)合法鏈為準(zhǔn),其他分叉鏈得不到任何獎(jiǎng)勵(lì),其引入出塊時(shí)間不過(guò)短,增加區(qū)塊確認(rèn)等機(jī)制防止非法操作。比特幣中分叉包括硬分叉和軟分叉,硬分叉會(huì)形成分裂;軟分叉達(dá)到半數(shù)以上的更新,正常情況下能夠自動(dòng)進(jìn)行合并。
比特幣隨著算力變化不斷進(jìn)行難度調(diào)整以維持平均出塊時(shí)間保持不變(每2016 個(gè)區(qū)塊調(diào)整一次),同時(shí)閾值改變限定在上下四倍之內(nèi)。區(qū)塊頭中nBits字段表示target 的編碼版本,驗(yàn)證礦工挖出的區(qū)塊是否合法時(shí),會(huì)檢查nBits 標(biāo)識(shí)的版本編碼是否與當(dāng)前target 一致。
隨著網(wǎng)絡(luò)整體算力增加,單個(gè)個(gè)體算力有限很難獲得較好的收益,于是出現(xiàn)了礦池機(jī)制。礦池管理者收取一定的管理費(fèi),挖礦成功后收益在內(nèi)部成員之間分配,分配規(guī)則按照提交給礦主的降低難度后近似有效值的數(shù)量。礦池使得算力薄弱的個(gè)體礦工能夠獲得相對(duì)穩(wěn)定的收入,但大型礦池會(huì)使得對(duì)于區(qū)塊鏈的攻擊變得更加容易。
1.2.2 以太坊
以太坊出塊時(shí)間是十幾秒,因此會(huì)出現(xiàn)較多暫時(shí)性分叉,臨時(shí)分叉過(guò)多導(dǎo)致不少礦工投入大量資源卻得不到任何獎(jiǎng)勵(lì),高過(guò)時(shí)率降低了區(qū)塊鏈的安全性,另一方面出現(xiàn)分叉時(shí)大型礦池由于資源集中將具有更大的優(yōu)勢(shì)(高于其占有的算力比例),因此以太坊引入改進(jìn)的GHOST 協(xié)議解決上述問題[11]。礦工挖下一個(gè)區(qū)塊時(shí)可以把其它分叉上的節(jié)點(diǎn)當(dāng)做UNCLE 區(qū)塊加入到自己的區(qū)塊頭中,分叉合并后,挖出UNCLE 區(qū)塊的礦工可以獲得7/8 的出塊獎(jiǎng)勵(lì),而主鏈上的區(qū)塊因加入U(xiǎn)NCLE 區(qū)塊可以額外獲得1/32 的出塊獎(jiǎng)勵(lì),每個(gè)區(qū)塊最多可以加入兩個(gè)UNCLE 區(qū)塊。同時(shí)七代以內(nèi)的分叉區(qū)塊都可以作為UNCLE 區(qū)塊獲得獎(jiǎng)勵(lì),每代獎(jiǎng)勵(lì)遞減1/8,而礦工因加入U(xiǎn)NCLE 區(qū)塊獲得的額外獎(jiǎng)勵(lì)不變。這種設(shè)計(jì)方案可以避免惡意競(jìng)爭(zhēng),鼓勵(lì)出現(xiàn)分叉后盡早合并,同時(shí)該獎(jiǎng)勵(lì)只針對(duì)于每個(gè)分叉上的第一個(gè)區(qū)塊,以避免分叉攻擊等問題[14]。
以太坊挖礦過(guò)程想要限制ASIC 芯片的使用,在求解算法的設(shè)計(jì)上突出內(nèi)存要求,包括一個(gè)初始為16M 的偽隨機(jī)緩存和1G 的DAG 數(shù)據(jù)集,其大小隨時(shí)間線性增長(zhǎng),緩存用于輕節(jié)點(diǎn)驗(yàn)證,DAG 用于礦工挖礦。緩存數(shù)據(jù)的生成是基于種子值依次計(jì)算哈希得出,DAG 中的每個(gè)數(shù)據(jù)都是某個(gè)初始選定的緩存數(shù)據(jù)經(jīng)過(guò)256 次迭代處理生成,DAG 數(shù)據(jù)集生成需要數(shù)個(gè)小時(shí),每3 萬(wàn)個(gè)區(qū)塊更新一次。挖礦過(guò)程是求解符合難度條件的nonce 值,獲取包含128 個(gè)數(shù)的DAG 數(shù)據(jù)集隨機(jī)切片,每次讀取的數(shù)據(jù)位置由上一次位置計(jì)算哈希得到,初始數(shù)據(jù)位置由區(qū)塊頭計(jì)算得出;一次讀取相鄰兩個(gè)位置的數(shù)據(jù),迭代64次后將這些數(shù)據(jù)的哈希值與目標(biāo)target 比較,判斷是否符合要求。
以太坊2.0 提出分片、PoS、新虛擬機(jī)eWASM等技術(shù)改進(jìn),并將1.0 到2.0 的轉(zhuǎn)換劃分為3 個(gè)不同的階段依次進(jìn)行[12]:最初階段將創(chuàng)建一個(gè)新的Beacon 鏈,此階段將有兩個(gè)活動(dòng)的以太坊鏈,此時(shí)所有交易和智能合約的執(zhí)行仍是在原始以太坊鏈(Eth 1.0)上進(jìn)行;然后階段1 將引入分片以增加系統(tǒng)的可擴(kuò)展性與伸縮性,主鏈上的狀態(tài)記錄和交易信息將被劃分為不同的分片進(jìn)行單獨(dú)管理,分片機(jī)制的引入需要DAPP 在設(shè)計(jì)時(shí)有更多的考量以選取合適的分片;階段2 是各功能的融合和拓展,同時(shí)分片鏈會(huì)更加完善[9]。
以太坊2.0 計(jì)劃采用Casper FFG 算法[27],該算法依據(jù)股權(quán)大小決定投票權(quán)重占比,每50 個(gè)區(qū)塊為單位設(shè)置檢查點(diǎn),并形成檢查點(diǎn)樹,節(jié)點(diǎn)針對(duì)兩個(gè)檢查點(diǎn)之間片段進(jìn)行投票,如投票總數(shù)超過(guò)總存款的2/3,則該部分兩檢查點(diǎn)將分別變?yōu)橐炎C明合理(justified)和最終確定(finalized)狀態(tài)。該算法采用動(dòng)態(tài)驗(yàn)證集,只需擁有足夠存款(最低32ETH)即可申請(qǐng),并能自主選擇加入或離開。驗(yàn)證者參與驗(yàn)證可以獲得獎(jiǎng)勵(lì),但是如果惡意投票會(huì)受到處罰。
Namecoin 發(fā)布于2011年,其能夠防止網(wǎng)絡(luò)審查與監(jiān)管,是可讀性強(qiáng)和去中心化的網(wǎng)絡(luò)空間標(biāo)識(shí)體系。
Namecoin 不支持頂級(jí)域申請(qǐng),目前僅支持.bit 頂級(jí)域下的域名注冊(cè),在Bitcoin 的基礎(chǔ)上,Namecoin 增加了RPC 命令進(jìn)行交易提交等操作。Namecoin 采用基于工作量證明的共識(shí)機(jī)制,挖礦過(guò)程采用SHA-256 哈希算法求解H(block header) <= target 函數(shù)中符合要求的nonce 值,其平均出塊時(shí)間與挖礦獎(jiǎng)勵(lì)設(shè)置都與比特幣相同。
2.1.1 注冊(cè)過(guò)程
Namecoin 采用基于鍵值對(duì)的數(shù)據(jù)存儲(chǔ),其域名管理過(guò)程如下[15]:
(1)NAME_NEW:注冊(cè).bit 名字需要name_new 和name_firstupdate RPC 命 令,name_new 步 驟要拿0.01NMC 與要申請(qǐng)的域名之間綁定生成一個(gè)代幣,其代表該名字的所有權(quán),綁定的NMC 將不能用于正常交易。在name_new 中會(huì)將用戶注冊(cè)的域名與一個(gè)隨機(jī)值一起做哈希進(jìn)行加鹽加密,然后發(fā)送帶有加密值的交易進(jìn)行域名預(yù)定,域名的加密值寫在交易的scriptPubKey 中。
(2)NAME_FIRSTUPDATE:該操作可以設(shè)置名字內(nèi)容值,例如IP 地址等,為防止搶注,該命令必須在對(duì)應(yīng)的name_new 之后等待12 個(gè)區(qū)塊才能執(zhí)行,以確保區(qū)塊鏈已就當(dāng)前new_new 交易達(dá)成共識(shí)[16]。name_firstupdate 提交的數(shù)據(jù)會(huì)寫到對(duì)應(yīng)交易的scriptPubKey 里,其輸出部分包括申請(qǐng)的<域名,值>對(duì)的信息。交易驗(yàn)證時(shí),會(huì)拿scriptPubKey 里寫入的域名和隨機(jī)值跟name_new 中的哈希值進(jìn)行校驗(yàn)。
(3)NAME_UPDATE:注 冊(cè) 完 成 后name_update 命令用來(lái)更新名字對(duì)應(yīng)的數(shù)據(jù)值,重置有效期或進(jìn)行交易等。域名的有效期是36 000 個(gè)區(qū)塊,大約250 天,到期之前必須通過(guò)name_update 進(jìn)行更新操作,否則域名將被釋放。
對(duì)于每個(gè)名稱操作,交易發(fā)起人需要支付交易費(fèi)(0.005 NMC),預(yù)定域名的name_new 命令具有0.01 NMC 的額外固定成本。最初Namecoin 為防止成立之初域名搶注,在name_firstupdate 階段還另外設(shè)置網(wǎng)絡(luò)費(fèi),創(chuàng)世塊處的網(wǎng)絡(luò)費(fèi)為50 NMC,同時(shí)隨著時(shí)間的推移緩慢降低(每8 192 個(gè)區(qū)塊減少2 倍,大約2 個(gè)月),2012年12月后,網(wǎng)絡(luò)費(fèi)已被取消。
2.1.2 存在的問題
Namecoin 存在的問題包括:
域名搶注導(dǎo)致個(gè)別用戶擁有大量注冊(cè)域名,致使Namecoin 網(wǎng)絡(luò)上存在大量的垃圾注冊(cè)信息,已注冊(cè)的正常使用中的域名占比很小。
另一方面Namecoin 開發(fā)社區(qū)較小,同時(shí)合并挖礦也造成一些安全問題,Namecoin 使用合并挖礦原本想要吸引算力提高自身安全性,然而由于其自身算力較小,某些在比特幣上構(gòu)不成威脅的大型礦池加入后曾出現(xiàn)長(zhǎng)達(dá)幾個(gè)月時(shí)間內(nèi)算力超過(guò)51%的情況。
此外.bit 域的解析往往需要用戶額外運(yùn)行本地軟件、進(jìn)行單獨(dú)配置或增加瀏覽器擴(kuò)展才能實(shí)現(xiàn),使用成本及門檻較高。
2.2.1 整體架構(gòu)
Blockstack 分為四層使各部分相對(duì)獨(dú)立,其架構(gòu)如圖1 所示[17]。
底層區(qū)塊鏈層:控制模塊將底層邏輯與業(yè)務(wù)抽離開來(lái),底層區(qū)塊鏈負(fù)責(zé)交易的存儲(chǔ)及共識(shí)機(jī)制的實(shí)現(xiàn),虛擬鏈層在不改變底層鏈的情況下增加了一些針對(duì)名字系統(tǒng)的操作。
虛擬區(qū)塊鏈層:虛擬區(qū)塊鏈層負(fù)責(zé)交易處理,處理邏輯對(duì)底層區(qū)塊鏈不可見,其從底層區(qū)塊鏈獲取交易內(nèi)容并根據(jù)交易類型和轉(zhuǎn)換狀態(tài)進(jìn)行對(duì)應(yīng)操作。虛擬鏈只進(jìn)行部分校驗(yàn)信息、全局狀態(tài)數(shù)據(jù)的存儲(chǔ),區(qū)文件內(nèi)容的完整性可以通過(guò)該層存儲(chǔ)的哈希值進(jìn)行驗(yàn)證。
路由層:路由層負(fù)責(zé)數(shù)據(jù)查詢,為了使用戶能夠自由地選擇存儲(chǔ)服務(wù),Blockstack 對(duì)查詢與存儲(chǔ)操作實(shí)施了解耦和。
存儲(chǔ)層:Blockstack 架構(gòu)最上層是存儲(chǔ)層,存儲(chǔ)的數(shù)據(jù)包括name-value 對(duì),并且?guī)в性撚蛎姓叩暮灻?/p>
2.2.2 Stacks 區(qū)塊鏈
Blockstack 底層鏈采用Bitcoin,虛擬區(qū)塊鏈層是自身設(shè)計(jì)的Stacks 鏈,當(dāng)前部署的是其1.0 版本,2020年4月2.0 公開測(cè)試網(wǎng)開啟[20,23],其設(shè)計(jì)包括以下幾個(gè)方面:
共識(shí)機(jī)制采用燃燒證明(Proof-of-Burn,PoB)與工作量證明(Proof-of-Work,PoW)相結(jié)合,并且計(jì)劃用轉(zhuǎn)移證明(Proof of Transfer,PoX)[21]代替燃燒證明。
由于新鏈啟動(dòng)時(shí)往往沒有足夠的算力參與其中,Blockstack 在工作量證明的基礎(chǔ)上增加了燃燒證明,利用本身的PoW 和另一種更加穩(wěn)定的加密貨幣的燃燒證明,進(jìn)而在借用算力的基礎(chǔ)上逐漸把更多的權(quán)重放在自身機(jī)制上面,以此來(lái)安全地發(fā)展Stacks鏈[19]。
2020年2月Blockstack 發(fā)布了2.0 版本的草案,提議用PoX 代替PoB, PoX 中礦工將提交的加密貨幣轉(zhuǎn)移給網(wǎng)絡(luò)中的其他參與者。這種方案主要考量是使用PoB 需要燃燒一定的基礎(chǔ)貨幣,新鏈啟動(dòng)時(shí)其安全性和對(duì)應(yīng)的貨幣價(jià)值都難以得到保障,礦工可能沒有很強(qiáng)意愿燃燒基礎(chǔ)貨幣(如價(jià)值比較高的比特幣)來(lái)獲得新鏈上的貨幣獎(jiǎng)勵(lì)。
圖1 Blockstack 架構(gòu)圖Fig. 1 Blockstack architecture
2019年發(fā)布的智能合約語(yǔ)言Clarity[22]的設(shè)計(jì)采用所見即所得的方法,提高了系統(tǒng)安全性。Clarity是一種可判定語(yǔ)言,具有非圖靈完備特性,可以進(jìn)行靜態(tài)分析,使得很多復(fù)雜性問題可溯源、可預(yù)測(cè)。同時(shí)它是一種解釋性語(yǔ)言,能夠更加方便地部署bug修復(fù)方案。
2.2.3 存儲(chǔ)系統(tǒng)
Blockstack 中數(shù)據(jù)主體存儲(chǔ)在Gaia 去中心化存儲(chǔ)系統(tǒng)中,只有數(shù)據(jù)位置的指針及數(shù)據(jù)內(nèi)容哈希等被保存到Satcks 區(qū)塊鏈上。Gaia 賦予所有者對(duì)其擁有的內(nèi)容的安全隱私保護(hù),用戶數(shù)據(jù)由密鑰加密之后進(jìn)行保存同時(shí)加上自身簽名,存儲(chǔ)系統(tǒng)本身無(wú)法獲取用戶數(shù)據(jù)內(nèi)容;同時(shí)用戶可以根據(jù)自己需求選擇包括各種云存儲(chǔ)平臺(tái)在內(nèi)的不同存儲(chǔ)提供商,通過(guò)Stacks 鏈上存儲(chǔ)的內(nèi)容哈希值進(jìn)行校驗(yàn)防止數(shù)據(jù)被篡改,使得用戶與存儲(chǔ)平臺(tái)以去信任的方式建立可信存儲(chǔ)機(jī)制。
用戶向Gaia 寫數(shù)據(jù)時(shí),寫請(qǐng)求需要包含私鑰簽名的令牌來(lái)判斷其是否具有寫入特定區(qū)域的權(quán)限,并為同一用戶的不同應(yīng)用設(shè)置了單獨(dú)的私鑰,以將不同應(yīng)用解耦和,其讀寫步驟如圖2 所示[18]。
圖2 存儲(chǔ)系統(tǒng)讀寫步驟Fig. 2 Read and write steps of the storage system
2.2.4 注冊(cè)流程
Blockstack 名字系統(tǒng)設(shè)計(jì)全局的名字層次結(jié)構(gòu),最上層是名字空間,它在功能上類似于DNS 中的頂級(jí)域,其長(zhǎng)度為1-19 位。名稱空間實(shí)行先到先得的方法并且創(chuàng)建者可以制定相關(guān)屬性規(guī)則,但其不歸包括創(chuàng)建者在內(nèi)的任何用戶所有。創(chuàng)建名稱空間需要支付一定的費(fèi)用,長(zhǎng)度越短價(jià)格越高,創(chuàng)建后永久有效并且存儲(chǔ)在區(qū)塊鏈上,它可以規(guī)定其下的名字規(guī)則,例如注冊(cè)名字的費(fèi)用,有效期,注冊(cè)費(fèi)如何處置等,未來(lái)Blockstack 名字系統(tǒng)將致力于發(fā)展類似DNS 的代理銷售商體系。
名稱空間的下一級(jí)域名(如test.id)記錄存儲(chǔ)在區(qū)塊鏈上,但其狀態(tài)通常存儲(chǔ)在Atlas 網(wǎng)絡(luò)中,所有權(quán)和狀態(tài)通過(guò)發(fā)送交易控制;持有對(duì)應(yīng)私鑰的用戶擁有其所有權(quán),名字有效期等由名稱空間進(jìn)行設(shè)置。
名字子域(如sub.test.id)信息不在鏈上存儲(chǔ),所有權(quán)歸擁有私鑰的用戶,但是創(chuàng)建或更新時(shí)需要上層名字將其狀態(tài)廣播,同時(shí)對(duì)應(yīng)的上級(jí)名字到期后其更新會(huì)受影響[30]。
Blockstack 域名管理流程如表1 所示。
表1 Blockstack 名字注冊(cè)管理操作Table 1 Blockstack name registration management operations
2.3.1 簡(jiǎn)介
Handshake 設(shè)計(jì)理念是兼容同化而不是遷移,它是一種與現(xiàn)有DNS 向后兼容的名字協(xié)議,不會(huì)替換DNS,但其使用基于工作量證明及加密簽名產(chǎn)生的區(qū)塊鏈系統(tǒng)進(jìn)行根域管理,同時(shí)要求盡量減小對(duì)用戶的干預(yù),本質(zhì)是一個(gè)分布式去中心化的區(qū)文件,任何人都有權(quán)在其中添加條目。Handshake 以UTXO結(jié)構(gòu)為基礎(chǔ),2020年2月主網(wǎng)發(fā)布[28]。
在Handshake 中,任何人都可以注冊(cè)自己的TLD,其規(guī)定當(dāng)前已存在的頂級(jí)域不能申請(qǐng),并且保留部分公司及組織名對(duì)應(yīng)的頂級(jí)域。在貨幣流轉(zhuǎn)方面,Handshake 將絕大多數(shù)(占比0.7)資產(chǎn)無(wú)償發(fā)送給開源代碼貢獻(xiàn)者,激勵(lì)研發(fā)和軟件包維護(hù)人員增加其相關(guān)集成[24]。
2.3.2 PoW
Handshake 起初使用具有較強(qiáng)內(nèi)存限制的圖形函數(shù)Cuckoo Cycle[25]實(shí)現(xiàn)工作量證明,后來(lái)替換為集成SHA3 和blake2b[26]的方法。鑒于系統(tǒng)發(fā)布時(shí)整個(gè)空間的算力情況未知及使用新的求解函數(shù)可能引發(fā)的不穩(wěn)定性,Handshake 設(shè)計(jì)每個(gè)區(qū)塊進(jìn)行一次難度target 調(diào)整。具體采用改進(jìn)的DigiShield 方法,其在算力動(dòng)態(tài)變化時(shí)具有較好的表現(xiàn)。
2.3.3 Urkel 樹
Handshake 設(shè)計(jì)Urkel 樹,又叫做FFMT(Flat-File Merkle Tree)。FFMT 類似于Merklix 樹,將按位trie與默克爾樹結(jié)合,但是樹節(jié)點(diǎn)內(nèi)容存在平面文件(flat files)中。FFMT 是二叉樹,包含內(nèi)部節(jié)點(diǎn)和葉子節(jié)點(diǎn)兩種類別,只需根據(jù)指針去對(duì)應(yīng)的文件位置讀取內(nèi)容,即可依次進(jìn)行節(jié)點(diǎn)遍歷。內(nèi)部節(jié)點(diǎn)分別包含對(duì)應(yīng)的左右子節(jié)點(diǎn)的hash,內(nèi)容存儲(chǔ)的文件及位置指針等;葉節(jié)點(diǎn)包含鍵值,對(duì)應(yīng)的位置定位信息及空間大小。
葉節(jié)點(diǎn)的哈希包含其原始數(shù)據(jù)內(nèi)容的哈希,F(xiàn)FMT 基于哈希鍵值前綴進(jìn)行構(gòu)造,在一棵FFMT中插入新數(shù)據(jù),其會(huì)從根節(jié)點(diǎn)開始查找,直到新數(shù)據(jù)所在位置,當(dāng)插入過(guò)程出現(xiàn)鍵值沖突時(shí),才會(huì)新生成沖突路徑上的中間節(jié)點(diǎn)表示其公共前綴,并根據(jù)沖突位數(shù)進(jìn)行分層處理,同時(shí)刪除操作也需要對(duì)應(yīng)的合并調(diào)整。
名字?jǐn)?shù)據(jù)每天分四次定期更新插入到樹中,并且設(shè)定每個(gè)區(qū)塊執(zhí)行樹更新操作的最大次數(shù),保證最壞情況可預(yù)測(cè)。同時(shí)FFMT 實(shí)現(xiàn)了緩存、原子性、崩潰一致性設(shè)計(jì),其具有高性能、簡(jiǎn)單、存儲(chǔ)空間小、交易證明所需空間小等優(yōu)勢(shì)。
2.3.4 注冊(cè)流程
Handshake 中域名的注冊(cè)通過(guò)智能合約以拍賣形式完成,流程如下:
BID:拍賣以BID 類型合約開始,由第一個(gè)參與者發(fā)起競(jìng)標(biāo)階段,其他參與者可以自由加入并進(jìn)行出價(jià)。BID 階段需要輸入投標(biāo)的名字和一個(gè)盲值,該盲值是投標(biāo)金額與一個(gè)256 位的隨機(jī)值連接組成的摘要,但是可以設(shè)置大于等于投標(biāo)值的鎖定值,來(lái)混淆其真實(shí)投標(biāo)值。
REVEAL:投標(biāo)結(jié)束進(jìn)入公示期,公開各參與者投標(biāo)情況,公示階段,參與投標(biāo)的nonce 值與投標(biāo)值才會(huì)公開。
REGISTER:公示結(jié)束最終勝出者進(jìn)入REGISTER合約,支付第二高的出價(jià),剩余的投標(biāo)值將作為找零返還。
REDEEM:勝出者產(chǎn)生后,投標(biāo)失敗的參與者可以進(jìn)入REDEEM 類型合約,將合約中鎖定的資金退回。
UPDATE:域名擁有一年有效期,之后需要進(jìn)行續(xù)簽,更新合約中所有者地址不允許改變。提交更新時(shí)必須提供最近主鏈上6 個(gè)月以內(nèi)的區(qū)塊哈希,以刷新計(jì)時(shí)器防止用戶單次申請(qǐng)過(guò)長(zhǎng)時(shí)間的所有權(quán)。
TRANSFER,REVOKE,F(xiàn)INALIZE: TRANSFER合約改變名字所有權(quán),但為防止名字盜竊等行為,會(huì)進(jìn)行48 小時(shí)延遲鎖定,鎖定期間名字所有者可以使用REVOKE 合約撤銷轉(zhuǎn)換所有權(quán)的操作,撤銷后該名字輸出不能使用,并且會(huì)重新進(jìn)行投標(biāo)。撤銷操作允許合法所有者在密鑰丟失時(shí)撤銷或質(zhì)疑名稱轉(zhuǎn)讓行為。正常轉(zhuǎn)移鎖定完成后,執(zhí)行FINALIZE 更新地址字段值,完成所有權(quán)轉(zhuǎn)移。
Handshake 域名拍賣采用Vickrey 拍賣,它是一種封閉式投標(biāo)拍賣,投標(biāo)者在不知道拍賣中其他人出價(jià)情況下提交投標(biāo),出價(jià)第一的人中標(biāo),但只需支付第二名的出價(jià)值,Handshake 每周會(huì)解鎖一組新名字進(jìn)行競(jìng)標(biāo)。
未被注冊(cè)并且在推出時(shí)間段的名字可以進(jìn)行拍賣,推出時(shí)間的計(jì)算方法是對(duì)名字進(jìn)行哈希處理計(jì)算SHA3 值,然后對(duì)52 取模得到特定星期數(shù),保證對(duì)于可用名稱其推出時(shí)間隨機(jī)均勻分布。
Handshake 設(shè)計(jì)SPV 域名解析,其實(shí)現(xiàn)了自身的迭代解析器和權(quán)威解析器,利用鏈上的數(shù)據(jù)進(jìn)行DNS 響應(yīng),可以無(wú)信任地完成解析過(guò)程并且具備比較高的速率;此外定義了一個(gè)非遞歸解析器,用于未在Handshake 中聲明的已有頂級(jí)域,此時(shí)會(huì)通過(guò)現(xiàn)有DNS 系統(tǒng)解析該域名。
ENS(Ethereum Name Service)[29]最早啟動(dòng)于2017年,由于以太坊中的地址是一串辨識(shí)性差的隨機(jī)字符,ENS 可以用簡(jiǎn)短的名字將其代替,同時(shí)可供以太坊中的DAPP 接入以提升其操作便捷性。ENS 不支持用戶注冊(cè)頂級(jí)域名,主網(wǎng)支持.eth,可以在去信任機(jī)制下安全地購(gòu)買和管理.eth 域名。
2.4.1 實(shí)現(xiàn)
ENS 的具體實(shí)現(xiàn)包括一系列以太坊上運(yùn)行的智能合約,主要包括注冊(cè)表、解析器、注冊(cè)中心等,注冊(cè)中心是管理頂級(jí)域名的智能合約,用戶可以按照合約規(guī)定注冊(cè)自己的域名。
域名在智能合約中并不是直接表示,而是用256 位的加密哈希值標(biāo)識(shí),ENS 中使用Namehash 算法為域名生成唯一對(duì)應(yīng)的哈希[31]。Namehash 過(guò)程首先將域名進(jìn)行標(biāo)準(zhǔn)化,按‘.’分割成不同的標(biāo)簽,對(duì)標(biāo)簽調(diào)用keccak256 得出哈希值,并遞歸得到完整域名值。最終的輸出值稱作節(jié)點(diǎn)(node),作為ENS 中該域名的唯一標(biāo)識(shí)。
ENS 中域名的注冊(cè)權(quán)與所有權(quán)是分開的。擁有注冊(cè)權(quán)可以改變域名的所有者,所有者可以看做是域名的管理者,真正掌握域名核心權(quán)利的是其注冊(cè)權(quán)擁有者。
2.4.2 注冊(cè)流程
起初域名的注冊(cè)通過(guò)Vickrey 拍賣的方式,依次進(jìn)行投標(biāo)、公示、結(jié)標(biāo)階段。投標(biāo)階段持續(xù)3 天,在此過(guò)程中投標(biāo)金額和投注的域名都不會(huì)公布;投標(biāo)結(jié)束后是為期兩天的公示階段,期間未按時(shí)公開自己的投標(biāo)金額將被沒收全部投標(biāo)值,最終未獲勝的用戶可以取回其投標(biāo)金額,但是會(huì)收取0.5%的手續(xù)費(fèi)。中標(biāo)的用戶投標(biāo)值會(huì)被鎖定,所有權(quán)有效期為一年,期滿之后可以退回鎖定的金額,最初的投標(biāo)只對(duì)7 個(gè)長(zhǎng)度以上的域名開放。2019年5月ENS引入永久注冊(cè)中心已經(jīng)不需要拍賣的過(guò)程,只要進(jìn)行兩個(gè)間隔一分鐘以上的交易就可以完成域名的注冊(cè),并且采用租金的方式,之前注冊(cè)的域名需要切換到新方式,但免除2020年5月之前的年費(fèi)。ENS注冊(cè)流程轉(zhuǎn)換成租金方式的原因主要是防范域名搶注,及域名私鑰丟失等情況發(fā)生時(shí)的回收問題。
引入永久注冊(cè)中心不久ENS 開放了3-6 長(zhǎng)度短域名注冊(cè),短域名注冊(cè)分為3 個(gè)步驟:預(yù)注冊(cè),拍賣,最后進(jìn)行即時(shí)注冊(cè)。拍賣過(guò)程采取英式拍賣且最低出價(jià)為一年的注冊(cè)費(fèi),拍賣時(shí)間的長(zhǎng)短由名字長(zhǎng)度決定,如表2 所示。拍賣勝出者獲得該域名為期一年的所有權(quán),之后需要付年費(fèi)進(jìn)行續(xù)約。拍賣結(jié)束后所有在預(yù)定和拍賣中未被聲明的3-6 字符長(zhǎng)度的域名可以按照長(zhǎng)域名注冊(cè)方式進(jìn)行注冊(cè)。
表2 3-6 位長(zhǎng)度名字申請(qǐng)?jiān)O(shè)置[33]Table 2 Application settings of 3-6 character names
在ENS 上聲明的DNS 域不需要支付租金,同時(shí)ENS 子域名也不需要租金以減少交易成本,子域注冊(cè)可以通過(guò)合約進(jìn)行管理,比如控制上級(jí)域名所有者無(wú)權(quán)將子域名收回。ENS 規(guī)定并非只有域名所有者才能支付該域名的租金,如果主域名租金未正常支付從而影響到其子域名正常使用,其它用戶可以代為支付該主域名租金。
注冊(cè)域名支付的租金并未被燃燒,而是轉(zhuǎn)入由ENS 根密鑰多重簽名持有者控制的以太坊賬戶中(需要七個(gè)簽名持有人中的四人簽名),作為ENS 項(xiàng)目生態(tài)發(fā)展的資金支持及相關(guān)項(xiàng)目捐贈(zèng)。
ENS 正在致力于提供DNS 頂級(jí)域的集成,集成基于DNSSEC 實(shí)現(xiàn),2018年9月作為嘗試ENS啟動(dòng)了對(duì).xyz 頂級(jí)域的支持,集成過(guò)程完成后可以在ENS 中聲明與DNS 相同的頂級(jí)域下域名(如ethereum.org)[32]。由于當(dāng)前ENS 根由七個(gè)根密鑰持有者控制,為了方便DNS 集成廣泛部署,ENS 引入一個(gè)新合約作為ENS 根所有者,同時(shí)該合約歸多重簽名持有者管理。任何可以提供有效DNSSEC 證明的人都可以配置頂級(jí)域。
本節(jié)對(duì)Namecoin,Blockstack 名字系統(tǒng),Handshake,ENS 技術(shù)方案進(jìn)行對(duì)比分析討論,主要包括以下幾個(gè)方面,如表3 所示。
表3 不同系統(tǒng)對(duì)比Table 3 Comparison of different systems
通過(guò)對(duì)以上基于區(qū)塊鏈的網(wǎng)絡(luò)空間標(biāo)識(shí)系統(tǒng)的分析,不同的項(xiàng)目在域名分配、解析、數(shù)字認(rèn)證、身份標(biāo)識(shí)等方面提出了各自的解決方案,在此基礎(chǔ)上部署了一系列應(yīng)用并取得了一定的成果,但同時(shí)也面臨一些挑戰(zhàn)與問題。
現(xiàn)行DNS 已有數(shù)十億用戶,并且擁有比較高的用戶友好性,基于區(qū)塊鏈的新型網(wǎng)絡(luò)空間標(biāo)識(shí)系統(tǒng)需要考慮的問題包括:
(1)域名組織結(jié)構(gòu):域名以何種方式進(jìn)行組織及各級(jí)域名存儲(chǔ)和管理機(jī)制等。
(2)域名注冊(cè)分配機(jī)制:包括如何防止名字被少數(shù)用戶大批量搶注,域名注冊(cè)方式選擇(先到先得,拍賣,押金租金等),如何制定合理的名字定價(jià)方案使不同的名字盡量接近其市場(chǎng)價(jià)格及子域名注冊(cè)管理機(jī)制等。
(3)名字注銷機(jī)制:域名所有者對(duì)域名的持有權(quán)期限,及私鑰丟失等情況的處理方案。
(4)解析效率:跟當(dāng)前DNS 系統(tǒng)相比解析速率是否足夠高效。
(5)易用性:從當(dāng)前DNS 系統(tǒng)切換到區(qū)塊鏈網(wǎng)絡(luò)標(biāo)識(shí)系統(tǒng)用戶是否需要額外的工作量,能否進(jìn)行無(wú)干預(yù)切換。另外從功能角度如何更好地滿足用戶需求,比如用戶想要搜索與給定字符串匹配且低于指定價(jià)格的所有可出售的名稱。
(6)推廣:如何制定更有效的激勵(lì)措施或通過(guò)集成等方式得到更廣泛的用戶市場(chǎng)。
另一方面,針對(duì)利用區(qū)塊鏈技術(shù)來(lái)改進(jìn)現(xiàn)有的標(biāo)識(shí)服務(wù)體系也存在一些爭(zhēng)議與討論,首先網(wǎng)絡(luò)去中心化是否真正是更好的選擇,區(qū)塊鏈技術(shù)帶來(lái)一些優(yōu)勢(shì)的同時(shí)也引發(fā)了一些新問題。無(wú)監(jiān)管、抗審查的特性被一些惡意軟件所利用來(lái)托管命令和操作,使其能夠更加隱蔽地實(shí)施非法行為,同時(shí)發(fā)現(xiàn)違法行為后進(jìn)行阻止的代價(jià)也非常大。此外,DNS 系統(tǒng)是相對(duì)比較平穩(wěn)高效的基礎(chǔ)設(shè)施,當(dāng)前提出的新型系統(tǒng)一直未得到大規(guī)模的應(yīng)用,一部分原因在于用戶沒有很強(qiáng)的意愿付出成本進(jìn)行轉(zhuǎn)換,相比之下現(xiàn)有技術(shù)在效率、易用性等方面仍有待提高。此外,對(duì)應(yīng)的硬件支持、性能狀況、政策趨勢(shì)等都是影響其發(fā)展的因素。
利益沖突聲明
所有作者聲明不存在利益沖突關(guān)系。