最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

區(qū)塊鏈通識——數(shù)據(jù)層、網絡層(包含網絡攻擊)

2022-10-09 15:45 作者:苦茶今天斷更了嗎  | 我要投稿

一、區(qū)塊鏈分層架構

傳統(tǒng)互聯(lián)網架構


區(qū)塊鏈網絡架構

區(qū)塊鏈系統(tǒng)由數(shù)據(jù)層、網絡層、共識層、激勵層、合約層應用層組成。

區(qū)塊鏈網絡架構模型:由P2P網絡、公鑰體制、共識機制智能合約等技術所構建的區(qū)塊鏈網絡結構

?

數(shù)據(jù)層(Data Layer):負責區(qū)塊鏈數(shù)據(jù)的存儲。“數(shù)據(jù)結構”,即“區(qū)塊+鏈”的結構。從還沒有記錄交易信息的創(chuàng)世區(qū)塊起,直到現(xiàn)在仍一直在新添加的區(qū)塊,構成的鏈式結構,里面包含了哈希值、隨機數(shù)、認證交易的時間戳、交易信息數(shù)據(jù)、公鑰和私鑰等,是整個區(qū)塊鏈技術中最底層的數(shù)據(jù)結構。

?

網絡層(Network Layer):負責各個節(jié)點之間的網絡連接和傳輸。主要是點對點P2P網絡機制、數(shù)據(jù)傳播機制數(shù)據(jù)驗證機制。分布式算法以及加密簽名等都在網絡層中實現(xiàn),區(qū)塊鏈上的各個節(jié)點通過這種方式來保持聯(lián)系,共同維護整個區(qū)塊鏈賬本,比較熟知的有閃電網絡、雷電網絡等第二層支付協(xié)議。目前很多區(qū)塊鏈數(shù)據(jù)傳輸都采用RPC或者GRPC。

?

共識層(Consensus Layer):負責實現(xiàn)各個賬本的數(shù)據(jù)一致性。主要包括共識算法機制。目前為止有 PoW、PoS、DPoS、PoW 和 PoS 結合、燃燒證明、重要性證明等十幾種共識機制。共識層決定了區(qū)塊的記賬權(將數(shù)據(jù)連接到區(qū)塊鏈的權利)、信息的一致性(確保每個節(jié)點的數(shù)據(jù)都一樣)。

?

激勵層(Actuator Layer)包括激勵機制和分配制度。在區(qū)塊鏈中一般指挖礦獎勵,通過獎勵一部分數(shù)字資產從而激勵礦工去驗證交易信息,從而維持挖礦活動以及區(qū)塊鏈賬本更新的持續(xù)進行;另外,還會制定一些相關制度,獎懲分明,激勵記賬節(jié)點,懲罰惡意節(jié)點。

?

合約層(Contract Layer):負責實現(xiàn)智能合約、腳本的功能。使區(qū)塊鏈可編程。例如,智能合約是區(qū)塊鏈的一些腳本,區(qū)塊鏈上的各種交易會觸發(fā)對應的腳本。觸發(fā)后,該腳本就可以從區(qū)塊鏈讀取數(shù)據(jù)或向區(qū)塊鏈寫入數(shù)據(jù)甚至去觸發(fā)其他腳本協(xié)同工作。通過這種方式,就可以使用程序算法來替換人員去仲裁和執(zhí)行合同,為用戶節(jié)省巨大的信任成本?!景汛a寫到合約里,就可以自定義約束條件,不需要第三方信任背書,到時間立即實時操作?!?/p>

針對不同的業(yè)務需求,在合約層靈活定義邏輯、規(guī)則 、關系,通過合約層與區(qū)塊鏈網絡交互,是應用層訪問區(qū)塊鏈數(shù)據(jù)的接囗,也是區(qū)塊鏈中核心代碼邏輯的定義層和處理層。應用層通過調用存儲與區(qū)塊鏈狀態(tài)庫中的智能合約賬戶,提供相關輸入數(shù)據(jù),智能合約根據(jù)輸入數(shù)據(jù)及預置于合約代碼中的響應條件,對區(qū)塊鏈狀態(tài)進行相關更新,并將更新后的狀態(tài)疊加存入狀態(tài)庫。通過智能合約,應用層可以將產生的重要價值數(shù)據(jù)以智能合約提供的接囗存入區(qū)塊鏈。

?

應用層(Application Layer)該層封裝了區(qū)塊鏈的各種應用和場景。

?

應用層:可編程貨幣,可編程金融,可編程社會

合約層:腳本代碼、算法機制、智能合約

激勵層:發(fā)行機制、分配機制

共識層:PoW、PoS、DPoS、PBFT、Raft

網絡層:P2P網絡、傳播數(shù)據(jù)機制、驗證數(shù)據(jù)機制

數(shù)據(jù)層:數(shù)據(jù)區(qū)塊、鏈式結構、哈希算法、時間戳、默克爾樹、非對稱加密

?

區(qū)塊鏈生態(tài):技術生態(tài)、用戶生態(tài)、應用生態(tài)、存儲生態(tài)

?

?





二、數(shù)據(jù)層

每個分布式節(jié)點都可以通過特定的哈希算法Merkle 樹數(shù)據(jù)結構,將一段時間內接收到的交易數(shù)據(jù)和代碼封裝到一個帶有時間戳的數(shù)據(jù)區(qū)塊中,并鏈接到當前最長的主區(qū)塊鏈上,形成最新的區(qū)塊,該過程涉及區(qū)塊,鏈式結構,哈希算法,Merkle樹和時間等技術。

?

2.1 哈希函數(shù)

Hash,“散列”、“哈?!?,把任意長度的輸入(又叫做預映射,pre-image),通過散列算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數(shù)。

?

3個重要性質:

collision resistance抗碰撞;x≠y,可有H(x)=H(y)

若有一條信息x,我們希望別人知道我有x但不想讓別人知道x具體是什么,就可以通過告訴其Hash(x)。對方可以通過Hash(x)知道你確實知道x這個信息,但他無法(很難)通過Hash(x)反推出x。

hiding單向不可逆;H(x)無法x

collision resistance + hiding ?digital commitment:

先公布H(x),待揭曉后公布x,因為H是可知的,通過求H(x)即可知道x是否被篡改。

puzzle friendly;哈希值的計算是不可預測的,

如果想要H(x)落在某個范圍之內,只能一個個去試。

該性質保證了比特幣系統(tǒng)中,只能通過“挖礦”獲得比特幣。保證了工作量證明(POW)機制可以運行下去【“挖礦難,但驗證易”】。

?

2.2 賬戶模型(以以太坊為代表)

賬戶保存了余額的狀態(tài),與銀行賬戶很像

優(yōu)點:

①合約以代碼形式保存在Account中,并且Account擁有自身狀態(tài)

②該模型具有更好的可編程性,易被開發(fā)人員理解,場景更廣泛

③批量交易的成本較低。設想礦池向礦工支付手續(xù)費,UTXO中因為每個Input和Out都需要單獨Witness script 或者Locking script,交易本身會非常大,簽名驗證和交易存儲都需要消耗鏈上寶貴的資源。而Account模型可以通過合約的方式極大的降低成本。

?

缺點:

①Account模型交易之間沒有依賴性,需要解決重放問題

②對于實現(xiàn)閃電網絡/雷電網絡,Plasma等,用戶舉證需要更復雜的Proof證明機制,子鏈向主鏈進行狀態(tài)遷移需要更復雜的協(xié)議。

?

2.3 UTXO賬戶模型(以比特幣為代表)

UTXO —— Unspent Transation Output 未支出的交易輸出。

不可再分的最小交易單元。

上一筆交易將比特幣匯至某一地址,這筆比特幣可長期存儲,直到該地址的主人要將款項匯至下一個收款人。在某筆款項尚未被提出匯至下一個地址之前,這筆款項被稱為UTXO。

?

以比特幣為例,每筆交易都有一個或多個交易的輸入可以追溯到鑄幣(coinbase)獎勵。交易的每一個輸出即為一個新的UTXO,一個用戶所擁有的比特幣余額即為該用戶所有的UTXO之和,這些UTXO并不集中在同一個“賬戶”之中,而是記錄在多個零散的交易區(qū)塊中。

?

優(yōu)點:

①原子性,或成功,或失敗,無中間狀態(tài);

②可并發(fā)

③消耗存儲空間較小

缺點:

①查詢余額需要遍歷所有交易數(shù)據(jù)

②UTXO無狀態(tài),若賬戶中需要存放復雜狀態(tài)(如智能合約),則無法支持

③當Input較多時,見證腳本也會增加

④簽名本身是比較消耗CPU和存儲空間

?

2.4 地址

比特幣里的地址是“一個0x00字節(jié)”+ “收款人公鑰的哈希值”+ “4字節(jié)的校驗”,整個地址以Base58編碼(詳細內容見另一個文檔)

①添加版本的目的是為了明確需要編碼的數(shù)據(jù)類型,數(shù)據(jù)類型如下:

②添加校驗碼主要是為了檢測轉錄過程中出現(xiàn)的錯誤;

③Base58check是什么?

????二進制:0、1

????十進制:0~9

????十六進制:0~9,A~F

????Base64(相當于64進制):0~9,a~z,A~F,以及連個符號(例如,-、+)

????Base58:是Base64編碼格式的子集,同樣使用大小寫字母和10個數(shù)字,但舍棄了一些容易錯讀和在特定字體中容易混淆的字符。具體地,Base58不0(數(shù)字0)、O(大寫字母o)、l(小寫字母L)、I(大寫字母i),以及“+”和“/”兩個字符。

????Base58Check:是一種常用在比特幣中的Base58編碼格式,增加了錯誤校驗碼來檢查數(shù)據(jù)在轉錄中出現(xiàn)的錯誤。校驗碼長4個字節(jié),添加到需要編碼的數(shù)據(jù)之后。最終生成的這個地址,就是你的賬號了。

?

2.5 交易

每個比特幣交易都有一個交易Hash(txhash),此Hash的值是針對整個交易內容計算得到唯一指向此條交易。因此,在比特幣追那個交易Hash通常作為交易ID。

?

交易的正文包括2部分:輸入地址信息、輸出地址信息

輸入地址信息:記錄此次交易發(fā)送方的賬戶信息

并不是記錄發(fā)送者的賬號,而是記錄輸入資金的來源(pre-txhash),即通過來源交易Hash指定全局賬本中的一條交易,并通過索引信息(index)來指定交易中對應的輸出地址,并通過簽名信息(sign)證明用戶對這筆資金的所有權。

?

輸出地址信息:記錄此次交易接受方的賬戶信息

包括輸出地址account和輸出金額(amount)

輸出地址是由用戶自行生成的公鑰信息經過字符變換得到的一串字符串,輸出地址經過反向變換后可以得到公鑰的Hash,用于驗證簽名。

?

交易具體例子

交易實例部分介紹了2條交易

其中編號為“10002”的交易中第“0”個輸入地址中的來源交易Hash是同時索引為“1”

因此,可以確定此輸入地址的真實賬戶是編號“10001”交易中第“1”個輸出地址“1 A 1 R m b b V o L 4 p n M Z f”

?

2.6 時間戳

時間戳:上一個區(qū)塊的hash

人類歷史上第一次實現(xiàn)非物理時鐘

區(qū)塊鏈技術要求獲得記賬權的節(jié)點必須在當前數(shù)據(jù)區(qū)塊頭中加蓋時間戳,表明區(qū)塊數(shù)據(jù)的寫入時間。因此,主鏈上各區(qū)塊是按照時間順序(區(qū)塊高度)依次排列的

時間戳技術本身并不復雜,但其在區(qū)塊鏈技術中的應用是具有重要意義的創(chuàng)新,從而為區(qū)塊鏈應用公證,知識產權注冊等時間敏感的領域奠定了基礎。

①區(qū)塊數(shù)據(jù)的存在性證明(Proof of existence)

②有助于形成不可篡改和不可偽造的區(qū)塊鏈數(shù)據(jù)庫

?

2.7 數(shù)據(jù)區(qū)塊

每個數(shù)據(jù)區(qū)塊一般包含:區(qū)塊頭(Header)和區(qū)塊體(Body)兩部分

區(qū)塊頭封裝了: ?當前版本號(Version);

前一區(qū)塊的目標地址(Prev-block)

當前區(qū)塊的目標哈希值(Bits)

當前區(qū)塊POW共識過程的解隨機數(shù)(Nonce)

Merkle根(Merkle-root)

時間戳(TimeStamp)等信息

比特幣網絡可以可以動態(tài)調整POW共識過程的難度值,首先找到正確的解隨機數(shù)Nonce并經過全體礦工驗證的礦工將會獲得當前區(qū)塊的記賬權

區(qū)塊體則包括當前區(qū)塊的交易數(shù)量以及經過驗證的,區(qū)塊創(chuàng)建過程中生成的所有交易記錄,這些記錄通過Merkle樹的哈希過程生成唯一的Merkle根并記入區(qū)塊頭

?

2.8 Merkle Tree(默克爾樹)

默克爾樹是一種二叉樹,由一組葉節(jié)點,一組中間節(jié)點和一個根節(jié)點構成。

優(yōu)點:

①節(jié)約存儲空間(已經花費過的交易,如果時間很久就可以丟棄)

②可以只保留根節(jié)點的hash,即Merkle根,放到區(qū)塊頭里,便于支付驗證。

③比特幣中沒有交易的區(qū)塊頭只有80bytes

?

2.9 鏈式結構

取得記賬權的礦工將當前區(qū)塊鏈接到前一區(qū)塊,形成最新的區(qū)塊主鏈,各個區(qū)塊依次環(huán)環(huán)相接,形成從創(chuàng)世區(qū)塊到當前區(qū)塊的一條最長主鏈,它記錄了區(qū)塊鏈數(shù)據(jù)的完整歷史。

優(yōu)點:

①能夠提供區(qū)塊鏈數(shù)據(jù)的溯源和定位功能

②任意數(shù)據(jù)都可以通過此鏈式結構順藤摸瓜,追本溯源

分叉:如果短時間內有兩個礦工同時“挖出”兩個新的區(qū)塊加以鏈接的話,區(qū)塊主鏈可能會出現(xiàn)暫時的“分叉”現(xiàn)象

分叉解決方法:

約定礦工總是選擇延長累計工作量證明最大的區(qū)塊鏈。

因此,當主鏈分叉后,后續(xù)區(qū)塊的礦工將通過計算和比較,將其區(qū)塊鏈接到當前累計工作量證明最大化的備選鏈上,形成更長的新主鏈,從而解決分叉問題。

?

三、網絡層

【方框內為之前肖臻老師的網課筆記】

Application layer(應用層):運行Bitcoin Block Chain

Network layer(底層):運行P2P Overlay Network(P2P覆蓋網絡)

比特幣系統(tǒng)中所有節(jié)點完全平等,不像一些其他網絡存在超級節(jié)點(super node)。要加入網絡,至少需要知道一個種子節(jié)點,通過種子節(jié)點告知自己它所知道的節(jié)點。節(jié)點之間的通信采用了TCP協(xié)議,便于穿透防火墻。當節(jié)點離開時,只需要自行退出即可,其他節(jié)點在一定時間后仍然沒有收到該節(jié)點消息,便會將其刪掉。

?

比特幣網絡設計原則:simple,robust but not efficient,flooding。

每個節(jié)點維護一個鄰居節(jié)點集合,消息傳播在網絡中采用洪泛法,某個節(jié)點在收到一條消息會將其發(fā)送給所有鄰居節(jié)點并標記,下次再收到便不會再發(fā)送該消息。鄰居節(jié)點選取隨機,未考慮網絡底層拓撲結構,也與現(xiàn)實世界物理地址無關。該網絡具有極強魯棒性,但犧牲了網絡效率。

比特幣系統(tǒng)中,每個節(jié)點要維護一個等待上鏈的交易集合。第一次聽到交易,若是合法交易,則將其加入該交易集合并轉發(fā)給鄰居節(jié)點,以后再收到該交易就不再轉發(fā)(避免網絡上交易無線傳輸)。假如網絡中存在兩個沖突交易,具體接收哪個取決于節(jié)點先接收到哪個交易,之后收到另一個交易會將其放棄。

新發(fā)布區(qū)塊在網絡中傳播方式與新發(fā)布交易傳播方式類似,每個節(jié)點除檢查該區(qū)塊內容是否合法,還要檢查是否位于最長合法鏈上。區(qū)塊越大,則網絡上傳輸越慢。

比特幣網絡傳播屬于 Best effort(盡力而為) ,不能保證一定傳輸成功。以一個交易發(fā)布到網絡上,未必所有節(jié)點都能收到,也未必所有節(jié)點收到交易順序都一致

3.1 概述

網絡層封裝了區(qū)塊鏈系統(tǒng)的組網方式,消息傳播協(xié)議和數(shù)據(jù)驗證機制等要素,

結合實際應用需求,通過設計特定的傳播協(xié)議數(shù)據(jù)驗證機制,

可使得區(qū)塊鏈系統(tǒng)中每個節(jié)點都能參與區(qū)塊數(shù)據(jù)的校驗和記賬過程,

僅當區(qū)塊數(shù)據(jù)通過全網大部分節(jié)點驗證后,才能記入區(qū)塊鏈。

?

3.2 組網方式P2P網絡

組網方式:采用對等式網絡(Peer-to-peer networl, P2P網絡)來組織散布全球的參與數(shù)據(jù)驗證和記賬的節(jié)點。

P2P網絡:

每個節(jié)點均地位對等且以扁平式拓撲結構相互連通和交互

不存在任何中心化的特殊節(jié)點和層級結構

每個節(jié)點均會承擔網絡路由,驗證區(qū)塊數(shù)據(jù),傳播區(qū)塊數(shù)據(jù),發(fā)現(xiàn)新節(jié)點等功能

按照節(jié)點存儲數(shù)據(jù)量不同,可以分為全節(jié)點和輕量節(jié)點

特點:永不停止

初始化時通過硬編碼的種子節(jié)點建立連接。

?

分布式哈希表

核心思想:網絡中的每個節(jié)點都維護一部分索引信息,然后通過特定的規(guī)則將這些節(jié)點連接起來,使得在查詢或注冊時,按規(guī)則觸達相關節(jié)點或資源,這種方案既能避免中心化索引,也避免了網絡風暴。不同的“規(guī)則”對應著分布式哈希表不同的協(xié)議。

好處:網絡中有資源變更時不需要全網廣播,只需更新相關節(jié)點。

?

主流實現(xiàn)協(xié)議Kademlia

每一個節(jié)點都維護一張哈希表,表中將網絡的節(jié)點基于距離進行分組,每個分組下存放若干個節(jié)點代表

Kademlia協(xié)議將網絡中的節(jié)點和資源均映射成160位的二進制碼,編碼等于或接近某個資源的節(jié)點,需要知道該資源的下載地址。

優(yōu)點:替換與遞進的設計解決了點對點網絡中的組網問題。

?

3.3 數(shù)據(jù)傳播協(xié)議

任一區(qū)塊數(shù)據(jù)生成后,將由生成該數(shù)據(jù)的節(jié)點廣播到全網其他所有的節(jié)點來加以驗證。

每個節(jié)點向其直接連接的節(jié)點發(fā)送區(qū)塊信息,循環(huán)直至全網的節(jié)點。

在以太坊的具體實現(xiàn)中有兩種發(fā)送方式:①向相鄰節(jié)點發(fā)送完整區(qū)塊的消息【只向根號N個相鄰節(jié)點】;②向相鄰節(jié)點發(fā)送只包含區(qū)塊哈希的消息。

?

根據(jù)中本聰?shù)脑O計比特幣系統(tǒng)的交易數(shù)據(jù)傳播協(xié)議包括如下步驟:

①比特幣交易節(jié)點將新生成的交易數(shù)據(jù)向全網所有節(jié)點進行廣播

②每個節(jié)點都將收集到的交易數(shù)據(jù)存儲到一個區(qū)塊中

③每個節(jié)點基于自身算力在區(qū)塊中找到一個具有足夠難度的工作量證明

④當節(jié)點找到區(qū)塊的工作量證明后,就向全網所有節(jié)點廣播此區(qū)塊

⑤僅當包含在區(qū)塊中的所有交易都是有效的之前未存在過的,其他節(jié)點才認同該區(qū)塊的有效性。

⑥其他節(jié)點接受該數(shù)據(jù)區(qū)塊,并在該區(qū)塊的末尾制造新的區(qū)塊以延長該鏈條,而將被接受區(qū)塊的隨機哈希值視為先于新區(qū)塊的隨機哈希值。

?

3.4 數(shù)據(jù)驗證機制

數(shù)據(jù)驗證機制:P2P網絡中的每個節(jié)點都時刻監(jiān)聽比特幣網絡中廣播的數(shù)據(jù)與新區(qū)塊。

節(jié)點接受到鄰近節(jié)點發(fā)來的數(shù)據(jù)后,將首先驗證該數(shù)據(jù)的有效性。如果數(shù)據(jù)有效,則按照接受順序為新數(shù)據(jù)建立存儲池以暫存尚未記入區(qū)塊的有效數(shù)據(jù),同時繼續(xù)向鄰近節(jié)點轉發(fā);

如果數(shù)據(jù)無效,則立即廢棄該數(shù)據(jù),從而保證無效數(shù)據(jù)不會在區(qū)塊鏈網絡繼續(xù)傳播。

?

3.5 區(qū)塊鏈網絡攻擊以及防御方案

【補充知識】

區(qū)塊高度:時鐘高度,其實是用來描述一個區(qū)塊的序號的,從創(chuàng)世區(qū)塊 0 開始依次遞增。叫區(qū)塊序號更容易理解。

確認數(shù):

?

節(jié)點通過什么方式競爭,怎么競爭?競爭的方式就稱之為共識,描述分布式去中心化的系統(tǒng)中大家通過共識算法達成統(tǒng)一某個行為或是認知的這種行為,即大家達成了共識,本次由 A 節(jié)點進行記賬,下次由 B 節(jié)點進行記賬。

?

若某節(jié)點放棄自己的鏈,那么這條鏈里面的數(shù)據(jù)是不是都無效了?里面的交易呢?

答案是的,里面的交易都無效了,因為一個區(qū)塊是對一堆交易的打包,而對于同一筆交易來說,轉賬發(fā)起方會把這筆交易廣播給所有人,也就是對于一筆交易來說,每個礦工都可能會收到這條交易并且放到自己的交易池。雖然在這條鏈上無效了,但是這些交易也會被其他節(jié)點看到,說不定已經被其他節(jié)點挖到區(qū)塊并且記錄到下面這條區(qū)塊鏈里了。所以針對某筆交易來說,并沒有丟失。

?

3.5.1 51%攻擊

51% 攻擊:如果攻擊者擁有全網 51% 的算力,那么他就能夠利用算力優(yōu)勢搞一些動作。這里的 51% 是一個概稱,實際上運氣好的話可能不需要這么多的算力就能發(fā)動 51%攻擊。

?

攻擊者會利用 51%攻擊做什么事?

(1)雙花攻擊/做空比特幣

攻擊者擁有全網超過 51% 算力之后,首先是成功挖礦的概率增大了,由于成功挖礦的概率增大,那么攻擊者就能夠對挖到的區(qū)塊進行修改。假設攻擊者是理性的,為了利益考慮,那么他會修改區(qū)塊中關于自己的交易記錄,以便雙重支付,區(qū)塊中其他的交易,由于沒有發(fā)起者的簽名,攻擊者是不能夠去修改的,也就是說攻擊者沒法做到把別人的幣轉給自己。

具體做法就是把自己的幣轉到交易所,賣出后出金提現(xiàn),然后利用 51% 攻擊去修改這筆交易,轉到自己的另外一個錢包地址中,由于有算力優(yōu)勢,并且遵循最長鏈原則,那么之前轉到交易所的交易記錄被認為是無效的,區(qū)塊鏈中記錄的是后面這筆交易。也就是同一筆錢花了兩次,最終損失的是交易所。這里不一定是交易所,也可能是其他人或者商家等。

對于雙花攻擊,節(jié)點是有可能在 6 個確認周期內發(fā)現(xiàn)一筆交易被雙重支付了,從而對交易發(fā)起者進行一些懲罰。所以為了預防雙花,一般可以增加確認數(shù),對比特幣來說,6個確認周期是比較合適的。

區(qū)塊鏈是由一個個區(qū)塊形象的連接在一起,形成鏈狀。當其中某筆交易發(fā)生的時候,會被打包到區(qū)塊中,然后形成區(qū)塊鏈,每追加一個區(qū)塊,確認數(shù)加 1。計算方法很簡單,用當前最長鏈的最新區(qū)塊高度減去某筆交易所在的區(qū)塊高度即為確認數(shù)。注意:由于有分叉的可能,這筆交易在不同的鏈里面高度是不一樣的,所以正確獲得某筆交易所在的區(qū)塊高度是通過交易哈希去獲取的。

?

(2)摧毀比特幣系統(tǒng)

對比特幣發(fā)起51%攻擊,比特幣系統(tǒng)不會崩潰,而且還能恢復,但比特幣市值就不好說了,甚至整個加密貨幣的市值很可能損失0 ~ 90%以上。

本來POW是消耗了大量的電力來做算力競速的,但是在比特幣系統(tǒng)接近崩潰的時候,只要有算力的加入,整個區(qū)塊鏈網絡就能恢復起來。

如果是使用了POS的區(qū)塊鏈系統(tǒng),如果發(fā)生類似的51%攻擊,由于共識算法是以Stake 作為依據(jù)的,那么新節(jié)點加入并不能帶來任何起色,整個網絡基本上不可能恢復了。

?

51%攻擊悖論

發(fā)起 51%攻擊的成本很高,尤其是想持續(xù)一段時間的攻擊。那么收益的大小就很關鍵,但是無論怎么算,收益本身并不高并且風險巨大。

相比擁有 51% 算力誠實的參與比特幣挖礦得到的獎勵來說,可能都達不到。而且真實場景下,想要發(fā)起 51%攻擊,門檻很高,并且不可能做到無人察覺。所以這也就是為什么51%攻擊基本上不可能的原因。但是結合其他的攻擊手段,可以降低51%攻擊的算力門檻,比如日蝕攻擊。

?

對于區(qū)塊鏈系統(tǒng)來說,基本上不用擔心這種攻擊,因為有悖論的存在。真正需要關心的是門檻較低,風險較低,收益較高的攻擊。

?

3.5.2 日蝕攻擊

【補充知識】

P2P 網絡

P2P 從誕生到現(xiàn)在經過了幾個階段,分別是混合式 P2P,無結構化 P2P以及結構化 P2P。

混合式:P2P 網絡混合了傳統(tǒng)的 C/S 模型,網絡中有角色充當server角色;

無結構化:網狀結構模型,純分布式網絡,典型代表就是比特幣網絡,節(jié)點之間以一種隨機的、松散的方式組織在一起

結構化:節(jié)點按照一定規(guī)則組織在一起,路由算法比較精準,比如DHT算法。

?

路由表(鄰居表)

路由表里面保存了網絡里面的一些節(jié)點,具體數(shù)量從幾個到幾十個不等。路由表中的這些節(jié)點可以看做是這個節(jié)點與這個 P2P 網絡建立關聯(lián)的重要依據(jù),或者說表示節(jié)點到這個 P2P 網絡的一些入口。這個節(jié)點想要發(fā)送任何信息需要先轉發(fā)給路由表中的節(jié)點,再由它們負責轉發(fā)消息。

無論是哪一種結構的 P2P 網絡,每個節(jié)點都有一個類似于路由表的概念,本質上就是跟這個網絡中的多個節(jié)點建立了一些聯(lián)系,然后后續(xù)的所有收發(fā)包都交由這些鄰居代為收發(fā)。

所以對于 P2P 網絡里的一個節(jié)點來說,它看不到網絡的全貌,只能看到網絡的局部信息。并且由于路由表的存在,哪怕路由表中只保存了一個入口節(jié)點,這個節(jié)點也能服務于整個 P2P 網絡,其他節(jié)點也能通過一定的方式找到這個節(jié)點。

?

NAT 穿透

NAT穿透不是P2P網絡的一個必要特性,如果P2P網絡中都是公網節(jié)點(具有公網IP),其實是不需要NAT穿透的。如果有一些私網節(jié)點(局域網節(jié)點)也加入到了這個P2P網絡中,由于不能互通,導致其他節(jié)點無法發(fā)現(xiàn)這些私網節(jié)點,最后帶來的結果就是這個私網節(jié)點能夠成功發(fā)送信息到這個P2 網絡中,但是可能卻無法收到來自P2P網絡里的消息。注意這里的用詞是可能,因為存在一些場景是有可能收到的。

?

日蝕攻擊

日蝕攻擊針對特定的某個節(jié)點,通過一些方法,填滿被攻擊節(jié)點的路由表,以便切斷它們與其他對等點的所有入站/出站通信(這會有效地窒息受害者)。

?

造成什么后果?

①阻止受害節(jié)點查看真實的區(qū)塊鏈信息

②隔離網絡中多個節(jié)點,以達到分裂網絡的可能

③用少于51%的算力發(fā)起51%攻擊

受害節(jié)點被惡意節(jié)點包圍之后,惡意節(jié)點可以選擇性的給受害節(jié)點發(fā)包或者篡改真實的數(shù)據(jù)包,本質上就是讓這個節(jié)點誤以為自己還在這個網絡中挖礦,然而真實情況是它已經從網絡中隔離開來了。

如果受害節(jié)點很多的情況,從整個網絡全局來看就是被隔離成多個部分,網絡實際上已經被分裂了。那么就可以實施分裂網絡的 51%攻擊,只需要用比原來 51%攻擊更少的算力就行。

?

如何發(fā)起日蝕攻擊?以以太坊為例來做說明。

?

(1)以太坊 kademlia網絡原理

以太坊底層的 P2P 網絡采用的是kademlia算法,kademlia網絡是一種結構化的P2P網絡,網絡中的節(jié)點按照一定的規(guī)則組織在一起。

kademlia 算法中的核心特點是用異或來定義兩個節(jié)點的距離,這種距離與實際的物理距離沒有任何關系。

每個節(jié)點的路由表會保存不同距離的節(jié)點,這個距離的最小值當然是 0,也就是它自己,這個距離的最大值跟節(jié)點ID的長度有關系(NodeID)。NodeID 是一段具有特定長度的字符串,每個節(jié)點具有唯一的NodeID,用NodeID來作為這個節(jié)點在P2P網絡中的身份信息。比如:NodeID: DEA25B0AF6CC5EA9DA4961DBC5FFEB97

假設NodeID長度為N bit(對于上面的NodeID來說N為32 * 8 = 256),那么這個距離的最大值就是 N-1,即距離范圍在 [0, N)。

?

kademlia網絡中的節(jié)點的路由表中會保存每一個距離的節(jié)點,數(shù)量在1個以上,這個值稱為為α值。與自己的NodeID距離為 1 的會保存α個,距離為2的會保存α個,以此類推,直到距離為N-1的節(jié)點會保存α個。實際情況是距離越大,能找到符合要求的節(jié)點的概率也就越大,想一想為什么?

每一個距離稱為一個Bucket,每一個Bucket里保存著[0, α]個距離匹配的節(jié)點。

?

知道一個節(jié)點的NodeID,就能夠計算出這個節(jié)點的路由表中的每一個Bucket中應該填入什么樣的NodeID。而這就是日蝕攻擊的核心依據(jù)。

?

(2)發(fā)起日蝕攻擊

當我們知道目標節(jié)點的NodeID之后,就可以通過一定的方式去偽造生成滿足不同Bucket的NodeID,當這個目標節(jié)點重啟之后,馬上以這些NodeID啟動節(jié)點去連接目標節(jié)點,由于kademlia的特性,這些特意偽造的NodeID肯定會被填入目標節(jié)點的路由表中,從而把路由表占滿,以達到日蝕攻擊的目的。

?

至于讓目標節(jié)點重啟,可以等待目標節(jié)點自動重啟或者采用DOS攻擊迫使目標節(jié)點重啟,當重啟之后馬上進行上面的操作就可以完成日蝕攻擊。

當成功發(fā)起日蝕攻擊之后,隨后就能隔離節(jié)點,篡改目標節(jié)點的收發(fā)數(shù)據(jù)包了。

?

(3)如何防御日蝕攻擊

想要避免日蝕攻擊由很多種辦法:(可能只適用于 kademlia 網絡)

?

1.?提高節(jié)點進入網絡的準入門檻

節(jié)點進入P2P網絡需要一定的門檻,不論是以時間為代價還是以Stake或是工作證明為代價,這樣就能有效防止大批量偽造節(jié)點進入網絡,從而從源頭上避免日蝕攻擊

?

2.?針對同一個IP段的節(jié)點做連接限制

攻擊者很可能利用有限的 IP(1~2個)偽造大量節(jié)點,發(fā)起日蝕攻擊,那么對于目標節(jié)點來說,看到的節(jié)點都是來自于這個IP,多半可以說明這是惡意節(jié)點。那么只需要對來自同一個IP段的節(jié)點做一定數(shù)量的限制,比如最多2個,也能顯著提高攻擊者的攻擊成本。

?

3.?對節(jié)點主動建立連接和被動建立連接的數(shù)量做一定的均衡

發(fā)起日蝕攻擊,需要主動占滿目標節(jié)點的路由表,也就是主動與目標節(jié)點建立連接,即便不是這樣,也有方法讓目標節(jié)點主動建立連接到惡意節(jié)點。所以對于進出的連接數(shù),做一定的均衡能有效避免日蝕攻擊的發(fā)生

?

4.?NodeID 重啟之后變化

進行日蝕攻擊的前提是需要知道目標節(jié)點的NodeID,并且迫使目標節(jié)點重啟,然后以事先根據(jù)目標節(jié)點NodeID計算好的偽造節(jié)點發(fā)起連接,達成日蝕攻擊。所以如果節(jié)點重啟之后NodeID變?yōu)榕c原來不再一致,那么攻擊者事先計算偽造的節(jié)點就變得毫無可用之地了。

?

5.?其他輔助措施

比如節(jié)點實時檢測,發(fā)現(xiàn)惡意節(jié)點進行廣播,并采取一定的懲罰措施等。

?

由于以太坊采用的是結構化的P2P網絡,采用了kademlia算法,知道了NodeID,基本上就大致能知道這個路由表中應該填入一些什么類型的節(jié)點;

由于比特幣的P2P網絡采用的是無結構的模型,節(jié)點之間以隨機,松散的方式進行組織,比特幣節(jié)點不關心你的NodeID。但是還是有辦法迫使比特幣節(jié)點只與惡意節(jié)點建立連接的。

?

?

3.5.3 女巫攻擊

對于區(qū)塊鏈來說,女巫攻擊指攻擊者將一個節(jié)點偽裝成多個節(jié)點進入P2P網絡中,在P2P網絡中具有多重身份。通常用于惡意刷票、惡意刷排名、惡意刷信譽等網絡活動,或者在一些網絡活動中通過數(shù)量優(yōu)勢進行造假。

日蝕攻擊的著眼點在于某一個確定的節(jié)點,而女巫攻擊的著眼點在于整個網絡。通過偽造身份進入網絡,干擾路由,干擾信息傳遞等。

?

如何防御女巫攻擊?提高進入P2P網絡的門檻。

?

1.?身份驗證

進入這個網絡的任何節(jié)點都需要做驗證,驗證通過才能進入網絡。

通常有兩種方式:

①去中心化身份認證

②中心化身份認證(第三方身份認證)

但基于去中心化系統(tǒng)的匿名性,一般不推薦采用中心化的身份認證方式。所以在進入網絡之時,通常需要網絡當中已經存在較長時間或者信譽較高的多數(shù)節(jié)點共同達成認證公式,才能被允許進入。

?

2.?工作量證明

進入網絡是需要成本的,不能夠隨意的加入退出。所以可以利用類似 POW 的方式對節(jié)點入網做一定的工作量證明,提高節(jié)點準入門檻。

?

3.?特征向量

在針對日蝕攻擊的防御方案,其中有一個防御方案是采用“限制本地路由表中來自同一個 IP段的節(jié)點數(shù)量”。其實這種方式是可能造成誤殺的,因為并非來自同一個IP段的節(jié)點就可能是惡意節(jié)點。所以我們可能需要一種更加準確的方式去分析一個節(jié)點的行為,區(qū)分一個節(jié)點。

我們在做大數(shù)據(jù)的時候,往往需要通過很多特征向量來區(qū)分出是不是同一個用戶,同樣的在P2P網絡中,我們也可以通過這種特征向量來區(qū)分這個節(jié)點是不是偽造的節(jié)點。當然這種方式不能完全避免女巫攻擊,但是可以有效的減少女巫攻擊。這種是有成熟產品的,像SybilGuard 和 the Advogato Trust Metric。

?

女巫攻擊相對來說成本是很低的,但是可能獲取的收益是比較高的。通常這種攻擊也會結合一些日蝕攻擊,或者DDOS攻擊進行。所以真正的區(qū)塊鏈網絡攻擊,多半會結合多種攻擊手段一起進行。

?

?

3.5.4 拒絕服務攻擊

分布式拒絕服務攻擊(Distributed Denial of Service Attack)

信息安全的三要素——“保密性”、“完整性”和“可用性”中,拒絕服務攻擊,針對的目標正是“可用性”。該攻擊方式利用目標系統(tǒng)網絡服務功能缺陷或者直接消耗其系統(tǒng)資源,使得該目標系統(tǒng)無法提供正常的服務。

?

拒絕服務攻擊(DoS)?問題一直得不到合理的解決,目前還是世界性難題,究其原因是因為這是由于網絡協(xié)議本身的安全缺陷造成的,從而拒絕服務攻擊也成為了攻擊者的終極手法。攻擊者進行拒絕服務攻擊,實際上讓服務器實現(xiàn)兩種效果:①迫使服務器的緩沖區(qū)滿,不接收新的請求;②使用IP欺騙,迫使服務器把合法用戶的連接復位,影響合法用戶的連接。

?

分布式拒絕服務攻擊 (DDoS)?是指攻擊者采用分布式攻擊手法施行DoS攻擊,通常是控制了多臺機器向目標主機或者路由器發(fā)起DoS攻擊。

?

針對區(qū)塊鏈來說,攻擊者通過DDoS攻擊試圖減慢網絡速度,或者迫使網絡停止運作。也可用于針對礦池,使礦池脫機,或者針對特定的目標主機,使其從網絡離線。

?

?

危害

DDoS攻擊造成的危害自不必說,中心化場景下,通常針對網站或者主機施行攻擊,造成網站無法訪問,影響業(yè)務運作,造成巨大經濟損失;

?

在區(qū)塊鏈場景下,攻擊者目標通常是為了一定的利益才執(zhí)行這樣的攻擊,導致網絡速度變慢,或者影響礦工挖礦,從而方便攻擊者對目標下手。

DDoS并非是區(qū)塊鏈特有的攻擊,在中心化場景下的攻擊其實相對會更多。

?

攻擊形式

1.?帶寬攻擊

通過攻擊使受害者節(jié)點的網絡帶寬耗盡,從而造成拒絕服務的效果。

區(qū)塊鏈系統(tǒng)的底層構建于 P2P 網絡,其中通信上廣播占據(jù)了大部分通信,一次廣播通常就是大于N倍的收包,隨著網絡規(guī)模的擴大,節(jié)點數(shù)量的增多,通信的壓力也會很大。

攻擊者通過瘋狂向節(jié)點通信端口發(fā)包,或者攻擊者利用軟件邏輯觸發(fā)系統(tǒng)自動的大規(guī)模通信(比如觸發(fā)同步),耗盡節(jié)點的帶寬,最終從網絡中離線。

而一旦離線重啟之后,往往又會伴隨著其他的攻擊,比如日蝕攻擊。

?

2.?CC攻擊

DDoS攻擊是針對IP的攻擊,而CC攻擊的是服務器資源

CC攻擊全稱Challenge Collapsar,中文意思是挑戰(zhàn)黑洞,因為以前的抵抗DDoS攻擊的安全設備叫黑洞,新一代的抗DDoS設備已經改名為ADS(Anti-DDoS System),基本上已經可以完美的抵御CC攻擊了。

CC攻擊的原理是通過代理服務器或者大量肉雞模擬多個用戶訪問目標網站的動態(tài)頁面,制造大量的后臺數(shù)據(jù)庫查詢動作,消耗目標CPU資源,造成拒絕服務。CC不像DDoS可以用硬件防火墻來過濾攻擊,CC攻擊本身的請求就是正常的請求。動態(tài)網頁是需要與后臺數(shù)據(jù)庫進行交互的,消耗很多CPU資源,造成靜態(tài)網頁能打開,但是需要和數(shù)據(jù)庫交互的動態(tài)網頁打開慢或者無法打開的現(xiàn)象。這種攻擊方式相對于前兩種實現(xiàn)要相對復雜一些,但是防御起來要簡單的多,提供服務的企業(yè)只要盡量少用動態(tài)網頁并且讓一些操作提供驗證碼就能抵御一般的CC攻擊。

?

CC攻擊的種類有三種,直接攻擊,代理攻擊,僵尸網絡攻擊。

①直接攻擊主要針對有重要缺陷的WEB應用程序,一般說來是程序寫的有問題的時候才會出現(xiàn)這種情況,比較少見。

②僵尸網絡攻擊有點類似于DDOS攻擊了,從WEB應用程序層面上已經無法防御。

③代理攻擊是CC攻擊者一般會操作一批代理服務器,比方說100個代理,然后每個代理同時發(fā)出10個請求,這樣WEB服務器同時收到1000個并發(fā)請求的,并且在發(fā)出請求后,立刻斷掉與代理的連接,避免代理返回的數(shù)據(jù)將本身的帶寬堵死,而不能發(fā)動再次請求,這時 WEB服務器會將響應這些請求的進程進行隊列,數(shù)據(jù)庫服務器也同樣如此,這樣一來,正常請求將會被排在很后被處理。

?

3.?SYN 洪泛攻擊

SYN Flooding攻擊是指攻擊者發(fā)送了大量的TCP/SYN包,并且以一個假的IP作為發(fā)送地址到達目標主機,由于TCP在建立連接的時候有3次握手,也就是建立連接需要發(fā)送3個包,當目標主機收到這個SYN建連包之后,會回復一個SYN-ACK包。

但是由于攻擊者惡意偽造了來源 IP,那么攻擊者是收不到這個ACK包的,但是會導致目標主機打開了一個半開放的連接,如果攻擊者發(fā)動了頻繁的SYN洪泛攻擊,那么會造成目標主機TCP資源消耗枯竭,導致無法與正??蛻舳私⑦B接,以達到拒絕服務的效果。

?

4.?Land 攻擊

是SYN攻擊的變種,攻擊者此時偽造的來源IP就是目標主機的IP,就會導致目標主機向自己發(fā)送大量的SYN-ACK包,從而消耗TCP資源,阻止正??蛻舳说倪B接建立。

?

?

四、攻擊案例

(1)GitHub 遭受史上最大規(guī)模 DDoS 攻擊

在美國東部時間2月28日下午17:28分,幾乎一瞬間收到了1.35 Tbps的流量訪問。這是互聯(lián)網有史以來規(guī)模最大、威力最大的分布式拒絕服務攻擊 (DDos)。

不到十分鐘,GitHub就不得不向CDN服務商Akamai請求協(xié)助。最終Akamai接管GitHub的所有信息流,并通過其清理中心發(fā)送數(shù)據(jù)以清除和阻止惡意數(shù)據(jù)包。8分鐘后,攻擊者發(fā)現(xiàn)沒什么效果,選擇了撤退,停止了攻擊。

?

(2)2016 年以太坊DDoS攻擊

此次攻擊也被稱為 “EXTCODESIZE” 攻擊。

攻擊者讓礦工和節(jié)點需要花費很長的時間(20 ~ 60 秒) 來處理一些區(qū)塊。造成這次攻擊的原因是一個 EXTCODESIZE 的操作碼,它具有相當?shù)偷?gas 價格,需要節(jié)點從磁盤讀取狀態(tài)信息。攻擊交易調用此操作碼的頻率大約是50000次每區(qū)塊。這樣的后果就是,網絡大大放緩了,但沒有共識故障或是內存超載發(fā)生。

因為此次攻擊事件,很多媒體都宣告了以太坊的末日??梢娫趨^(qū)塊鏈世界里,DDoS 攻擊的后果是比較嚴重的。

?

(3)以太坊Fomo3D,黑客拿走2200萬

Fomo3D是以太坊上一個比較火爆的Dapp,是一個類似于資金盤的游戲。

首先,介紹一下 Fomo3D 這個游戲的規(guī)則:

規(guī)則1: 每個人參與游戲需要購買一個Key

規(guī)則2: 在一輪游戲中,誰是最后一個購買Key的人,則可以拿走獎池中的大獎

規(guī)則3: 只要有人購買一個Key, 游戲倒計時就會增加30秒

規(guī)則4: 游戲啟動從24小時倒計時

?

正常人一般都是在倒數(shù)的最后幾分鐘或者幾秒鐘去購買Key,這樣的話自己也許是倒計時結束后最后一個購買的人。

稍微高級一點的玩家,比如程序員,可能會寫個腳本,自動化的方式來購買Key,速度是不是比手工快多了。

?

黑客玩家是怎么做的?利用 DDoS 攻擊,在你購買成功后,馬上施行攻擊,拖慢整個網絡,造成礦工無法打包或者打包很慢,那么勢必會影響到其他交易的正常進行。如果你比較幸運,正好導致其他正在購買Key的人的交易失敗了,那么你就是大獎得主。

但是說起來容易,實際做起來還是不太容易操作的。因為你要能確保你購買成功后的 DDos攻擊能讓后續(xù)的交易都失敗。

了解以太坊的人應該聽說過gas機制,可以理解為一個交易的手續(xù)費,而礦工通常會優(yōu)先打包gas費用較高的交易,那么這位黑客利用自己的智能合約創(chuàng)建了大量的交易,并且具有高額的gas費用,幾乎壟斷了以太坊網絡的所有算力,這樣就造成了以太坊擁堵了接近 3 分鐘,進而使其他的玩家無法打包購買 Key 的交易,從而成為大獎得主。

該黑客此前還嘗試過多次這樣的攻擊,直至最后一次才成功。

?

是不是還是很有趣的?區(qū)塊鏈公鏈本身具有比較致命的缺陷就是 tps 很低,單位時間處理的交易有限。后續(xù)的交易只能在排隊,尤其是在網絡被攻擊拖慢的情況下,交易成功的時間會大大拉長。

?

五、DDoS 防御方案

1.?高防服務器

高防服務器:能獨立硬防御50Gbps以上的服務器,本身就能抑制一定的DDoS攻擊。買就是了,只是比較貴。

?

2.?CDN 加速

CDN本身就就有大帶寬,多節(jié)點的優(yōu)勢,并且隱藏了真實的網站 IP。通過把流量分配到多地多節(jié)點降低攻擊負載,防止源站崩潰。

?

3.?配置防火墻

防火墻能防御DDoS和其他的一些攻擊。防火墻有軟件防火墻和硬件防火墻之分。必要可以兩者結合。

?

4.?攻擊檢測和溯源

通過分析攻擊的方法和手段,追蹤攻擊的路由,檢測出惡意的 IP 和路由,做好相應的屏蔽,保護主機。

?

5.?黑名單機制

通過建立黑名單機制,限制黑名單的訪問。

?

DDoS 攻擊每天都在發(fā)生,對于區(qū)塊鏈系統(tǒng)來說,由于接入的節(jié)點性能參差不齊以及無許可的特征,想要利用中心化的防御機制去做好DDoS防御可能還是有難度。況且由于區(qū)塊鏈本身的弊端,性能瓶頸,更容易被攻擊者利用。

?

?

3.5.5 其他網絡攻擊

1. 異形攻擊

異形攻擊又稱地址污染攻擊,是指誘使同類鏈的節(jié)點之間互相發(fā)現(xiàn)、互聯(lián)、侵入的一種攻擊手法。同類鏈的意思是底層P2P網絡使用了相同或者相似的P2P通信協(xié)議。這尤其針對比特幣和以太坊系列的公鏈。

很多劣質公鏈大量 COPY 以太坊、比特幣的源碼,導致大量的公鏈的底層是相同的或者兼容的。

如果攻擊者執(zhí)行了異形攻擊,就有可能導致同類鏈的節(jié)點之間互相纏繞在一起,影響公鏈節(jié)點內部的通信和路由,進而影響到交易、共識和安全。從而讓攻擊者有機會施行其他的攻擊,比如 DDoS 攻擊,網絡分裂攻擊。

應對辦法也很簡單,首先是拒絕做伸手黨;其次加強對本公鏈的節(jié)點類型的檢測,比如節(jié)點地址不符合的一切拒絕,通信協(xié)議不一致的一切拒絕,通信報文頭特殊字段不一致的一切拒絕等等。

?

2.?竊聽攻擊

本質上就是流量行為分析,通過分析流量,甚至可以把IP和家庭地址關聯(lián)起來,從而知道某筆交易時來自某一個特定的客戶端或者某個人。

?

3.?交易延展性攻擊

延展性攻擊者偵聽P2P網絡中的交易,利用交易簽名算法的特征修改原交易中的input 簽名, 生成擁有一樣input和output的新交易,然后廣播到網絡中形成雙花,這樣原來的交易就可能有一定的概率不能被確認,在虛擬貨幣交易的情況下,它可以被用來進行二次存款或雙重提現(xiàn)。

?

4.?BGP劫持攻擊

BGP劫持,即利用BGP操縱因特網路由路徑,最近幾年中已經變得越來越頻繁。如誤導和攔截流量等,目前在區(qū)塊鏈網絡中節(jié)點的流量一但被接管又能對整個網絡造成巨大的影響,如破壞共識機制,交易等各種信息。

?

而對于BGP劫持攻擊中,目前有安全研究者已經證明該攻擊的概念可行性,從2015年11月5日至2016年11月15日通過對節(jié)點網絡的分析統(tǒng)計目前大多數(shù)比特幣節(jié)點都托管在少數(shù)特定的幾個互聯(lián)網服務提供商(ISPs),而60%的比特幣連接都是在這幾個ISP。所以這幾個ISP可以看到60%的比特幣流量,所以也能夠做到對目前比特幣網絡的流量控制權,研究者通過劫持的場景驗證了至少如下兩個攻擊概念是可行的,同時給出了驗證的代碼。

?

4.1 分割攻擊

攻擊者可以利用BGP劫持來講區(qū)塊鏈網絡劃分成兩個或多個不相交的網絡,此時的區(qū)塊鏈會分叉為兩條或多條并行鏈。攻擊停止后,區(qū)塊鏈會重新統(tǒng)一為一條鏈,以最長的鏈為主鏈,其他的鏈將被廢棄,其上的交易、獎勵等全部無效。

?

攻擊場景舉例:

1) 首先,攻擊者發(fā)動BGP劫持,將網絡分割為兩部分,一個大網絡、一個小網絡。

2) 在小網絡中,攻擊者發(fā)布交易賣出自己全部的加密貨幣,并兌換為法幣。

3) 經過小網絡的“全網確認”,這筆交易生效,攻擊者獲得等值的法幣。

4) 攻擊者釋放BGP劫持,大網絡與小網絡互通,小網絡上的一切交易被大網絡否定,攻擊者的加密貨幣全部回歸到賬戶,而交易得來的法幣,依然還在攻擊者手中,完成獲利。

?

4.2 路由攻擊

路由攻擊往往配合其他的攻擊來施行,攻擊者可以先利用女巫攻擊或者日蝕攻擊把網絡分裂,然后篡改消息發(fā)送到網絡當中。最終效果是影響了網絡中的通信和路由。


區(qū)塊鏈通識——數(shù)據(jù)層、網絡層(包含網絡攻擊)的評論 (共 條)

分享到微博請遵守國家法律
济南市| 井冈山市| 肥东县| 新沂市| 桂东县| 腾冲县| 营山县| 洪湖市| 稻城县| 中方县| 剑阁县| 遂平县| 洞口县| 天门市| 漯河市| 咸宁市| 济南市| 怀集县| 监利县| 龙里县| 乌拉特中旗| 石楼县| 台东市| 衡阳县| 武义县| 巨鹿县| 丰原市| 安徽省| 灌云县| 乌恰县| 孟津县| 左云县| 雷波县| 扶风县| 衡水市| 兴义市| 民丰县| 松桃| 襄汾县| 高州市| 定州市|