文章來源:看雪學院
作者:挽夢雪舞

區塊鏈是一個分佈式賬本,是一種通過去中心化、去信任的方式集體維護的可靠數據庫的技術方案。安全性將是區塊鏈應用最大障礙,制約區塊鏈發展的最重要的原因,很可能是安全問題。區塊鏈面臨着算法安全性、協議安全性、使用安全性、實現安全性和系統安全性的挑戰。

區塊鏈現在很熱,值得我們去關注這塊技術和應用,爲了方便大家交流區塊鏈安全技術,特開設此版塊,受到大家的熱烈歡迎,現已有很多熱心會員在此版塊發帖、回帖與大家分享、交流。

本文介紹了區塊鏈的起源和安全問題,由於文章較長,將分爲二個部分放出與大家分享,歡迎更多的人能夠加入我們的討論 。

< 前言 >

回憶幾年前看雪的發展之路可謂荊棘鋪路,曲折重重,後來隨着生活所迫,走上了學習技術的道路,在之後由於家庭的羈絆,工作的繁雜,生活的艱辛,以及時間的流逝,讓我漸漸淡出了看雪,甚至趨於忘卻……

而現在我十分感謝我的表弟,是他讓我回到了闊別已久的看雪——就在前天,也就是 2 月 25 號,我的表弟從網吧回來之後,參加了一場過年後很普通的家庭聚餐。在聚餐上,他從始至終都帶着一臉的沮喪與不甘,因爲平時的忙碌,我和他已經很久沒見面了,聯繫自然也少了很多,但從小我們的關係一直都很好,即便隨着年齡的增長,也未曾有所淡化,反而如美酒般愈發濃厚。

所以剛喫完飯,他就按耐不住衝動,推開椅子就跑過來和我聊天,接着就問我有沒有玩今年很火的「喫雞」啊?然後就開始抱怨,向我傾訴苦水,說他自己沒有注意到外掛的更新,結果 steam 賬號被「萬惡的」藍洞官方永久封停的醜事。說就說吧,但他一個 22 歲的小夥子了,年紀也不小了,可是一談起遊戲,就像長不大的孩子一樣,激動地手舞足蹈,張牙舞爪,臉還憋得通紅,真不知道他到底是被這件事氣得鬱悶,還是見到我激動得不能自已。我也是無語了啊 …… 對此,我只能是默默地注視着他,機械式地反覆點頭示意我在聽……

一刻鐘過後,感覺苦水傾瀉得差不多了,他激動的情緒也終於穩定下來了,於是我們的聊天才算是真正開始,步入了正常的範疇。。我也很無奈呀!他就開始問我:「知道吾愛破解不?那個外掛就是吾愛破解開發設計的,感覺很牛 X 啊!我就也想自己研究個外掛玩玩,但我看了一下那個裏邊沒啥玩意兒啊,我就想到黑客技術,然後就去找相關論壇,最後看到那個看雪論壇,這名字挺有詩意的,我點進去才發現好傢伙,這論壇都有 18 年的歷史了,感情它建立的時候我還不會走路吧?……」

就這樣,從他提到看雪論壇之後,對於他後面的話我已經記不清了,當時腦海裏只是充斥着幾個疑問和滿滿的回憶~~我疑惑他說的看雪是不是曾經的那個我所熟知的看雪,會不會是同名網站?抑或是換了站長及管理的新看雪論壇?如果是我童年的回憶,那麼如今的看雪發展成什麼樣了?……

接着腦海中湧現的便是曾經的種種美好回憶,那是青蔥歲月的見證,是屬於年少輕狂時代的嚮往與追求。直到今天寫到這兒,我纔回想起來當時既然表弟他都說了是擁有 18 年的歷史的,那肯定就是我心裏回憶起來的那個看雪論壇啊,只不過不清楚是否論壇的管理團隊已經有所變動,如今具體變成了什麼模樣罷了。

於是在聚餐結束的第二天就趕緊找到了看雪論壇,接着就發現現在加入的條件變鬆了,不需要邀請碼了,便果斷註冊了一個賬號,時隔數年,我終於有了看雪的賬號,看着註冊成功的提示語,我激動的心情久久難以平靜下來,這感覺真是恍若隔世啊!而恰逢其時的,我剛回歸看雪就遇到了【區塊鏈安全】這個板塊的開設,而我 2017 年年底剛好對這塊內容做過一些粗淺的研究,頗有種回家被迎接的感覺,於是決定在論壇潛水多年的我正式開始嶄露頭角,燃起燭光之焰!

PS:因爲早年想要加入論壇需要邀請碼嘛,我那時技術小白一個,自然拿不到了,只能當個遊客潛水等待時機,而現在時機已經成熟!

引言

首先說一下近況吧!隨着區塊鏈日益發展壯大,並被越來越多的各界人士所熟知,接着近些年來區塊鏈呈現井噴式的速度被各行各業所垂青,無論是在證券市場、支付系統、票據與供應鏈金融,還是在客戶徵信與反欺詐等應用場景中都具有很大的應用前景。

而與此同時,在享有「互聯網之後最具顛覆性的創新技術」之名的區塊鏈技術應用背後的安全問題也毫無疑問成爲了不可忽略的重要一環。

接下來我將爲大家簡單介紹區塊鏈的相關知識,並淺析區塊鏈技術可能存在的諸多安全問題。

區塊鏈歷史背景

自 1983 年 D.Chaum 發表第一篇電子現金論文以來,各界人士在電子現金方面的研究一直沒有間斷過,直到中本聰在 2008 發表了「一個新的電子現金系統」的白皮書,2009 年在一個開源的區塊鏈上運行比特幣才讓區塊鏈正式進入大家的視野。下圖爲區塊鏈前期發展起源歷史時間軸。

區塊鏈安全 | 淺析區塊鏈起源及安全問題

隨着相關科技的不斷研究深入,如今在密碼學領域和去中心化計算網絡上都產生了新的進展,從而帶來了區塊鏈技術(blockchain)這類前沿技術。與此同時,中國工信部在 2016 年將其定義爲一種分佈式數據存儲、點對點傳輸、共識機制、加密算法等計算機技術在互聯網時代的創新應用模式。

隨着相關科技的不斷研究深入,如今在密碼學領域和去中心化計算網絡上都產生了新的進展,從而帶來了區塊鏈技術(blockchain)這類前沿技術。與此同時,中國工信部在 2016 年將其定義爲一種分佈式數據存儲、點對點傳輸、共識機制、加密算法等計算機技術在互聯網時代的創新應用模式。

具體而言,區塊鏈技術本身最早是在 2008 年得到提出,中本聰在一次密碼學探究分享會上提出了比特幣的概念及其背後的技術方法。比特幣這套虛擬數字貨幣運行系統的底層所運用的技術即是區塊鏈技術及其思想的原型。於是便有了區塊鏈技術與比特幣息息相關這一說法,直到後來又衍生出許多山寨幣,但實際上它們之間是有許多相似共通之處的!

在區塊鏈這一名詞被正式提出之前,比特幣是爲世人所知的,而潛藏在比特幣背後的區塊鏈,就是被設計用來達到一種去中心化的、無需信任的貨幣運行平臺。在這個平臺之中,任何互不瞭解的人都可以通過加入該總賬,通過點對點的記賬、數據傳輸、認證或是合約等等,而不需要藉助任何一箇中間方或者說是中介性質的人就能來達成所謂的信用共識。

其中這個總賬包括了他們過去所有的交易記錄、歷史數據以及其他的相關信息,所有信息都進行了分佈式存儲並且透明可查,同時還以密碼學協議的方式進行加密處理,保證其不會被非法篡改,當然這也並非絕對安全,這就涉及到區塊鏈安全及密碼學的知識,我會在下文講到。

接着,到了 2010 年的時候,比特幣正式成立了交易所,趨於正規化、產鏈化,並因此逐漸被更多人所瞭解。至 2011 年開始,比特幣的全球化趨勢愈加強烈,對於與之密切相關的區塊鏈技術進行相關投資和研究的機構也順應時代潮流,如雨後春筍般迅速增多,而藉此機會區塊鏈技術從初級的實現程度,到後來不斷得到補充和完善。那麼站在前臺的比特幣自然也隨之獲益,區塊鏈技術的飛速發展讓比特幣這一貨幣體系也得到了迅速的成長機會,但其設計之初那種相對簡單的貨幣運行體制也開始面臨着一系列安全問題領域的挑戰:文件訪問權限的丟失,服務器密碼的泄漏、貨幣失竊、匿名貨幣難以追蹤監管等諸多漏洞層出不窮,這逐漸讓人們發現了這個貨幣體制的缺陷。

這些缺陷不足開始影響到人們對於比特幣的信任,跌重而來的就是對其貨幣價值的影響,這就在一定程度上造成了人們對比特幣的信任危機,可俗話說得好,「危險與機遇並存!」 於是一些善於審時度勢的人便以此作爲契機,伴隨着蝴蝶效應,更多的人開始增加對於比特幣的背後——底層區塊鏈技術的關注。

由此,在 2015-2016 年期間,區塊鏈技術終於度過了停留在理論和初步研究的階段,開始走向應用,面相市場,迎向更多的人們。於是許多傳統的金融機構、創業企業及其他相關組織較爲普遍得開始從實際應用的方面使用了該項區塊鏈技術,具體涉及到許多領域,比如交易結算、創新性的物聯網,以及數字資產管理、股權交易、公證、各種供應鏈等衆多金融領域。隨着行業的不斷髮展,世界上各個國家及地方組織也開始加強了對區塊鏈技術的潛在價值研究及相關領域的監管。

區塊鏈技術經過 20 多年的發展,到了現在,這種最初隱藏在數字虛擬貨幣——比特幣背後的底層分佈式賬本技術逐漸走向了公衆的視線,甚至在未來將成爲學術界乃至金融等產業界的「熱點」話題,隨着對區塊鏈技術不斷地深入研究,並且被更多的相關人士重視,以及越來越多的互聯網、安全界的大佬、專家投身加入到這一行列中,其未來發展潛質絕不可小覷,甚至有可能超過那些虛擬數字貨幣本身的價值!至少在當前,它們已經從那些虛擬數字貨幣的背後走了出來,與其並排而站!關於區塊鏈技術的歷史背景就講到這裏,想要更深入瞭解的朋友自行 Google、百度。

## 區塊鏈的定義、分類、特點

講了半天的區塊鏈技術歷史背景,那麼接下來就具體談談到底什麼是區塊鏈?什麼是區塊鏈技術?

首先我引用了 Google 上對區塊鏈的介紹來爲其定義,畢竟這個是比較權威、官方一點的,描述更爲準確精煉。

區塊鏈(Blockchain)是指通過去中心化和去信任的方式集體維護一個可靠數據庫的技術方案。該技術方案讓參與系統中的任意多個節點,把一段時間系統內全部信息交流的數據,通過密碼學算法計算和記錄到一個數據塊(block),並且生成該數據塊的指紋用於鏈接(chain)下個數據塊和校驗,系統所有參與節點來共同認定記錄是否爲真。

在寫這篇文章的時候,論壇剛好有位朋友發了個相關介紹的帖子,於是便順帶引用過來更形象詼諧地詮釋一下區塊鏈,這是他的原帖——[轉帖] 秒懂區塊鏈

區塊鏈是女生的福音~~

假如你是一位女生,在某個晚上,你男票跟你說了一句:「我愛你一生一世」; 然後,你把這句話發給了你的閨蜜、爸媽、朋友圈、公衆號、微信羣等,你男票再也無法抵賴,你打賞點小費感謝他們給你記住並作證,這個小費就是 token。

你、你男票、「我愛你一生一世」這句話、說這句話的時間地點等信息,打包起來形成一個結構化的信息包,這個信息包就叫「區塊」。而你的閨蜜、爸媽、朋友圈、公衆號、微信羣等節點就是鏈。最後你男票如果不承認說過這句話,當了負心漢;你翻出這個賬本對質,把他臭罵一頓,這就是區塊鏈應用。

還有啊,你男票這個節點會永遠被踢出網絡,如果你對朋友圈足夠大,這個男的可能永遠找不到女朋友了。

更具體一點的介紹~

區塊鏈是一種類似於 NoSQL(非關係型數據庫) 這樣的技術解決方案的統稱,就好比 MySQL 這種主流的 web 數據庫的名稱,而且這時需要特別注意的一點就是,因爲僅從區塊鏈這個名稱上看,如果沒有真正去接觸過的話,一般人普遍會按照慣性思維把它默認成是一種特定的技術,但實際上它並不是專指某種特定的技術。

而且實現區塊鏈的方式種類也有很多,目前最常見的有三種,包括 POW(Proof of Work,工作量證明),POS(Proof of Stake,權益證明),DPOS(Delegate Proof of Stake,股份授權證明機制) 等。 上文提到過區塊鏈之前是站在比特幣背後的底層技術,現在換個說法就是比特幣也可以看成是區塊鏈技術的首個在金融領域中的應用,而且是大獲成功啊! 總而言之,它們之前是密切關聯的,之後就不再贅述。接下來就該談談它的分類了。

分類:主要有三種:公有鏈(eg:比特幣)、聯盟鏈(eg:R3CEV)、私有鏈(eg:DAH)

對於公有鏈和私有鏈的區分,我們可以結合區塊鏈的定義,便可以基本認爲必須具有以下四點要素的才能被稱爲公開區塊鏈技術,也就是簡稱公有鏈;反之,如果只具備前三點要素,我們就可以認爲它爲私有區塊鏈技術,同樣簡稱爲私有鏈。所以簡單來講是否具備第四種要素是區別公有鏈和私有鏈的關鍵所在。

1、點對點的對等網絡 (權力對等、物理點對點連接)
2、可驗證的數據結構 (可驗證的 PKC 體系,不可篡改數據庫)
3、分佈式的共識機制 (解決拜占庭將軍問題,解決雙重支付)
4、納什均衡的博弈設計 (合作是演化穩定的策略)

作爲一個完美主義者,我爲了更好的詮釋上述三種區塊鏈分類的具體定義,便再次引用了 Google 上的定義,僅供大家參考。

公有鏈:所有的機器都是在公開的網絡上面,數量極其龐大,所以沒有人能夠控制這樣的機器去達到個人的 目的,比特幣就是一個典型公有鏈的例子。

聯盟鏈:由某個羣體內部指定多個預選的節點爲記賬人,每個塊的生成由所有的預選節點共同決定(預選節點參與共識過程),其他接入節點可以參與交易,但不過問記賬過程,其他任何人可以通過該區塊鏈開放的 API 進行限定查詢。

私有鏈:僅僅使用區塊鏈的總賬技術進行記賬,可以是一個公司,也可以是個人,獨享該區塊鏈的寫入權限,本鏈與其他的分佈式存儲方案沒有太大區別。

分類簡單介紹完了,到了特點了,這個是比較多一點的,因爲我對於區塊鏈的特點和特性區分不清,所以在這裏就混爲一談了,不足之處歡迎大佬指點迷津。

特點:分佈式即爲去中心化(Decentralized)、匿名性即爲去信任(Trustless)、開放性(高度透明)基本等同於開源(Open Source)、加密安全性(不可篡改)、集體維護(Collectively maintain)、可靠數據庫(Reliable Database)、隱私保護(Anonymity)

從小學學語文開始,老師就告訴我們理解一個東西,包括它衍生或者說引申出的東西,都要從其根源,即其本身的屬性定義出發,所以在這裏我再次結合圍繞區塊鏈技術的定義對於其諸多特點特性做一個簡單的介紹,同時配上幾個例子,使之更加通俗易懂,增添幾分趣味性。

去中心化:也就是說所有的交易都是點對點發生的 , 無需任何的信用中介或集中式清算機構 ; 更具而言就是整個網絡沒有中心化的硬件或者管理機構,任意節點之間的權利和義務都是均等的,且任一節點的損壞或者失去都會不影響整個系統的運作。因此也可以認爲區塊鏈系統具有極好的健壯性。

當我們要網購的時候,如今通常有兩種途徑,一種是淘寶、京東、阿里巴巴等網站(後面就僅拿淘寶舉例),另一種則是目前很火的微信的微商。在淘寶買東西的時候,我們的錢先是支付給了與之相關的阿里巴巴,然後是賣家發貨,等我們收到貨之後,阿里巴巴纔會把錢轉給賣家。這其中還涉及到網銀充值、付款限額、資金提現等等許多複雜的流程,但這樣確實在很大程度上保障了我們作爲買家的權益,而阿里巴巴則是這場交易的中心,充當了中介性質的中間方。

但在微信上買東西的時候,則存在一定風險了,因爲沒有類似於上述阿里巴巴這樣的中間方,我們的錢一般會以發紅包的形式,直接通過微信支付到賣家手裏,而一旦等對方拿到了錢,就完全可以直接把我們拉黑,不予理會!這就有點類似於區塊鏈的詐騙了!那麼這個日常生活中的小場景就是所謂的去中心化!

去信任:任意兩個節點間的數據交換無需互相信任,完全依靠區塊鏈中的交易歷史和數據的可追溯,以及共識機制來保證數據交換的正確且不可逆的執行。 參與整個系統中的每個節點之間進行數據交換是無需互相信任的,整個系統的運作規則是公開透明的,所有的數據內容也是公開的,因此在系統指定的規則範圍和時間範圍內,節點之間是不能也無法欺騙其它節點。

上面關於微信購買是有風險的,當然那一般是基於陌生人的!那麼我們一般什麼時候會在微信上買東西呢,很多時候是當對方是我們的熟人朋友時,不同於之前暗指的陌生人,因爲社交關係的建立會產生彼此之間的瞭解與信任,這讓我們可以較爲放心地進行交易。

而突破這種所謂陌生人之間的障礙也很簡單,我們可以假設這樣一樣場景:一個微商,建立了一個微信羣,他只在這個微信羣裏售賣產品,羣裏的其他人也只和羣中人進行交易。那麼形成一筆交易時,微商在羣裏 @ 所有人說,我將 XX 物賣給 XX,售價 X 元。購買者也 @ 所有人說,我花了 X 元向 XX 處購買了 XX 物。這樣一來,羣裏的人都見證了這筆交易,在潛意識中就達成了共識,那麼以後的交易就絕不能翻臉不認賬了。而這兩條消息記錄一旦發出去了就如同潑出去的水,絕不能更改,這也是區塊鏈的第四個特點,加密安全性(不可篡改)。

開放性:整個區塊鏈網絡中的數據是公開透明的,每個節點 (參與者) 都可自由加入該網絡中,下載到所有的數據。
加密安全性:跟當前銀行網銀系統 (特別是公司網銀系統) 的加密機制類似,區塊鏈的數據結構和交易流程中大量的使用了公私鑰來進行加解密,以保證數據的安全性。基於該技術基礎,甚至可以應用羣組簽名來保證共有數據的安全性。另外區塊鏈採取單向哈希算法,每個新產生的區塊嚴格按照時間線形順序推進,時間的不可逆性導致任何試圖入侵篡改區塊鏈內數據信息的行爲都很容易被追溯,導致被其他節點的排斥,從而可以限制相關不法行爲。
集體維護:系統中的數據塊由整個系統中所有具有維護功能的節點來共同維護的,而這些具有維護功能的節點是任何人都可以參與的。

可靠數據庫:整個系統將通過分數據庫的形式,讓每個參與節點都能獲得一份完整數據庫的拷貝。除非能夠同時控制整個系統中超過 51% 的節點,否則單個節點上對數據庫的修改是無效的,也無法影響其他節點上的數據內容。因此參與系統中的節點越多和計算能力越強,該系統中的數據安全性越高。
隱私保護:由於節點和節點之間是無需互相信任的,因此節點和節點之間無需公開身份,在系統中的每個參與的節點的隱私都是受到保護的。