A. 公有鏈的安全主要由什麼等方式負責維護
公有鏈:是指全世界任何人都可以隨時進入到系統中讀取數據、發送可確認交易、競爭記賬的區塊鏈。例如:比特幣、以太坊。
私有鏈:是指其寫入許可權由某個組織和機構控制的區塊鏈,參與節點的資格會被嚴格限制。
聯盟鏈:是指有若干個機構共同參與管理的區塊鏈,每個機構都運行著一個或多個節點,其中的數據只允許系統內不同的機構進行讀寫和發送交易,並且共同來記錄交易數據。
聯盟鏈是一種將區塊鏈技術應用於企業的相對較新的方式。公有鏈向所有人都開放,而私有鏈通常只為一個企業提供服務,聯盟鏈相對公鏈來說有更多限制,通常為多個企業之間的共同協作提供服務。
聯盟鏈與公有鏈的不同之處在於,它是需要獲得事先許可的。因此並不是所有擁有互聯網連接的任何人都可以訪問聯盟區塊鏈的。聯盟鏈也可以描述為半去中心化的,對聯盟鏈的控制權不授予單個實體,而是多個組織或個人。
對於聯盟鏈,共識過程可能與公有鏈不同。聯盟鏈的共識參與者可能是網路上的一組預先批準的節點,而不是任何人都可以參與該過程。聯盟鏈允許對網路進行更大程度的控制。
那說到聯盟鏈的優點:
首先,聯盟鏈受一個特定群體的完全控制,但並不是壟斷。當每個成員都同意時,這種控制可以建立自己的規則。
其次,具有更大的隱私性,因為來驗證區塊的信息不會向公眾公開,只有聯盟成員可以進行處理這些信息。它為平台客戶創造了更大的信任度和信心。
最後,與公共區塊鏈相比,聯盟鏈沒有交易費用,更靈活一些。公共區塊鏈中大量的驗證器導致同步和相互協議的麻煩。通常這種分歧會導致分叉,但聯盟鏈不會出現這種狀況。
聯盟鏈技術可以用來優化大多數傳統信息化系統的業務流程,特別適用於沒有強力中心、多方協作、風險可控的業務場景。聯盟鏈的共享賬本機制可以極大降低該類場景下的對賬成本、提高數據獲取效率、增加容錯能力、鞏固信任基礎、以及避免惡意造假。
隨著區塊鏈技術的不斷發展,越來越多的機構與企業開始加大對區塊鏈的研究與應用。相比公鏈而言,聯盟鏈具有更好的落地性,受到了許多企業與政府的支持。
聯盟鏈可以理解為是為了滿足特定行業需求,內部機構建立起來的一種分布式賬本。這個賬本對內部機構是公開透明的,但如果有相關業務需求,對該賬本的數據進行修改,則還是是需要智能合約的加入。
智能合約(Smart contract )是一種旨在以信息化方式傳播、驗證或執行合同的計算機協議。智能合約允許在沒有第三方的情況下進行可信交易,這些交易可追蹤且不可逆轉。
總體來說,目前聯盟鏈智能合約的主流架構是:系統合約 + 業務合約。
系統合約:在節點啟動前配置完成,一般用於系統管理(如BCOS的預編譯合約(許可權管理、命名管理等),由項目方編寫,安全性較高。
業務合約:根據實際業務編寫而成,需要部署,類似公鏈智能合約,由一般內部機構參與方編寫,需遵守一定的要求,安全性一般。
聯盟鏈合約相較於常規公鏈在規范性、和安全性都有一定的提升,但在以下幾個方面的安全性問題,仍可能存在安全風險:
(1)、代碼語言安全特性
一種是繼續沿用主流公鏈編程語言,並在其基礎上改進(如:BCOS使用的solidity),另一種則是以通用編程語言為基礎,指定對應的智能合約模塊(如:fabric的Go/Java/Node.js),不管使用什麼語言對智能合約進行編程,都存在其對應的語言以及相關合約標準的安全性問題。
(2)、合約執行所帶來的安全性問題
整型溢出:不管使用的何種虛擬機執行合約,各類整數類型都存在對應的存儲寬度,當試圖保存超過該范圍的數據時,有符號數就會發生整數溢出。
堆棧溢出:當定義方法參數和局部變數過多,位元組過大,可能使程序出現錯誤。
拒絕服務攻擊:主要涉及到的是執行合約需要消耗資源的聯盟鏈,因資源耗盡而無法完成對應的交易。
(3)、系統機制導致的合約安全問題
這里主要是指多鏈架構的聯盟鏈:
合約變數的生成如果依賴於不確定因素(如:本節點時間戳)或者某個未在賬本中持久化的變數,那麼可能會因為各節點該變數的讀寫集不一樣,導致交易驗證不通過。
全局變數不會保存在資料庫中,而是存儲於單個節點。因此,如果此類節點發生故障或重啟時,可能會導致該全局變數值不再與其他節點保持一致,影響節點交易。因此,從資料庫讀取、寫入或從合約返回的數據不應依賴於全局狀態變數。
在多鏈結構下進行外部鏈的合約調用時,可能僅會得到被調用鏈碼函數的返回結果,而不會在外部通道進行任何形式的交易提交。
合約訪問外部資源時,可能會暴露合約未預期的安全隱患,影響鏈碼業務邏輯。
(4)、業務安全問題
聯盟鏈的智能合約是為了完成某項業務需求執行某項業務,因此在業務邏輯和業務實現上仍是可能存在安全風險的,如:函數許可權失配、輸入參數不合理、異常處理不到位。
我們對聯盟鏈安全的建議:
(1)、簡化智能合約的設計,做到功能與安全的平衡
(2)、嚴格執行智能合約代碼審計(自評/項目組review/三方審計)
(3)、強化對智能合約開發者的安全培訓
(4)、在區塊鏈應用落地上,需要逐步推進,從簡單到復雜,在此過程中不斷梳理合約與平台相關功能/安全屬性
(5)、考慮DevSecOps(Development+Security+Operations)的思想
鏈平台安全包括:交易安全、共識安全、賬戶安全、合規性、RPC安全、端點安全、P2P安全等。
黑客攻擊聯盟鏈的手法包括:內部威脅、DNS攻擊、MSP攻擊、51%的攻擊等。
以MSP攻擊為例:MSP是Fabric聯盟鏈中的成員服務提供商(Membership Service Provider)的簡稱,是一個提供抽象化成員操作框架的組件,MSP將頒發與校驗證書,以及用戶認證背後的所有密碼學機制與協議都抽象了出來。一個MSP可以自己定義身份,以及身份的管理(身份驗證)與認證(生成與驗證簽名)規則。
針對MSP的攻擊,一般來說,可能存在如下幾個方面:
(1)、內部威脅:a)當前版本的MSP允許單個證書控制,也就是說,如果某個內部人員持有了可以管理MSP的證書,他將可以對Fabric網路進行配置,比如添加或撤消訪問許可權,向CRL添加身份(本質上是列入黑名單的身份),過於中心化的管理可能導致安全隱患。 b)如果有感測器等物聯網設備接入聯盟鏈,其可能傳播虛假信息到鏈上,並且因為感測器自身可能不支持完善的安全防護,可能導致進一步的攻擊。
(2)、私鑰泄露,節點或者感測器的證書文件一般存儲在本地,可能導致私鑰泄漏,進而導致女巫攻擊、雲中間人攻擊(Man-in-the-Cloud attack)等
(3)、DNS攻擊:當創建新參與者的身份並將其添加到MSP時,在任何情況下都可能發生DNS攻擊。向區塊鏈成員創建證書的過程在許多地方都可能發生攻擊,例如中間人攻擊,緩存中毒,DDOS。攻擊者可以將簡單的DNS查詢轉換為更大的有效載荷,從而引起DDoS攻擊。與CA攻擊類似,這種攻擊導致證書篡改和/或竊取,例如某些區塊鏈成員將擁有的許可權和訪問許可權。感測器網路特別容易受到DDOS攻擊。智慧城市不僅面臨著實施針對DDOS攻擊的弱點的感測器網路,而且面臨著弱點的伴隨的區塊鏈系統的挑戰。
(4)、CA攻擊:數字證書和身份對於MSP的運行至關重要。Hyperledger Fabric允許用戶選擇如何運行證書頒發機構並生成加密材料。選項包括Fabric CA,由Hyperledger Fabric,Cryptogen的貢獻者構建的過程,以及自己的/第三方CA。這些CA本身的實現都有其自身的缺陷。 Cryptogen在一個集中的位置生成所有私鑰,然後由用戶將其充分安全地復制到適當的主機和容器中。通過在一個地方提供所有私鑰,這有助於私鑰泄露攻擊。除了實現方面的弱點之外,MSP的整體以及因此區塊鏈的成員資格都在CA上運行,並且具有信任證書有效的能力,並且證書所有者就是他們所說的身份。對知名第三方CA的攻擊如果成功執行,則可能會損害MSP的安全性,從而導致偽造的身份。Hyperledger Fabric中CA的另一個弱點是它們在MSP中的實現方式。 MSP至少需要一個根CA,並且可以根據需要支持作為根CA和中間CA。如果根CA證書被攻擊,則會影響所有根證書簽發的證書。
成都鏈安已經推出了聯盟鏈安全解決方案,隨著聯盟鏈生態的發展,2020年成都鏈安已配合多省網信辦對當地政企事業單位的聯盟鏈系統進行了從鏈底層到應用層多級安全審計,發現多場景多應用多形態的聯盟鏈系統及其配套系統的漏洞和脆弱點。
並且,成都鏈安已與螞蟻區塊鏈開展了合作,作為螞蟻區塊鏈優選的首批節點加入開放聯盟鏈,我們將發揮安全技術、服務、市場優勢,與開放聯盟鏈共拓市場、共建生態、並為生態做好安全保駕護航。
一方面我們的智能合約形式化驗證產品VaaS將持續為開放聯盟鏈應用提供『軍事級』的安全檢測服務,為應用上線前做好安全檢測,預防其發生安全和邏輯錯誤;我們的『鷹眼』安全態勢感知系統採用AI+大數據技術,為開放聯盟鏈及其應用提供全面及時的『安全+運營』態勢感知、鏈上合約風險監測、安全預警、報警、防火牆阻斷及實時響應處理能力。
另一方面,我們的安全產品已經積累了數十萬的客戶群體,我們將發揮我們的全球客戶資源和市場優勢,與開放聯盟鏈共拓市場。
在聯盟鏈平台上,我們能提供全生命周期的整體安全解決方案,成都鏈安以網路安全、形式化驗證、人工智慧和大數據分析四大技術為核心,打造了面向區塊鏈全生態安全的『Beosin一站式區塊鏈安全服務平台』。
『Beosin一站式區塊鏈安全服務平台』包含四大核心安全產品和八大明星安全服務,為區塊鏈企業提供安全審計、虛擬資產追溯與AML反洗錢、安全防護、威脅情報、安全咨詢和應急等全方位的安全服務與支持,實現區塊鏈系統『研發→運行→監管』全生命周期的安全解決方案。
我們會積極發揮區塊鏈安全頭部企業優勢,共同構建安全的區塊鏈商業網路,推動區塊鏈產業健康、安全的發展,探索區塊鏈未來的無限可能。
B. 關於以太坊預編譯合約的一些使用方法
誠如以太坊黃皮書所言,這八個所謂的'預編譯'合約,意味著可能在以後成為原生擴展的初步體系結構。它是使用通用EVM執行框架的八個例外,用於評估消息調用。