【用于Fabric的AES加密算法的設計與實現(xiàn)13000字(論文)】_第1頁
【用于Fabric的AES加密算法的設計與實現(xiàn)13000字(論文)】_第2頁
【用于Fabric的AES加密算法的設計與實現(xiàn)13000字(論文)】_第3頁
【用于Fabric的AES加密算法的設計與實現(xiàn)13000字(論文)】_第4頁
【用于Fabric的AES加密算法的設計與實現(xiàn)13000字(論文)】_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

用于Fabric的AES加密算法的設計與實現(xiàn)目錄TOC\o"1-3"\h\u24753一、引言 131746二、物聯(lián)網數(shù)據安全與區(qū)塊鏈相關技術 131044(一)物聯(lián)網安全 1235691.目前存在的物聯(lián)網安全問題 129122.區(qū)塊鏈技術在物聯(lián)網應用中的特點 3327673.基于區(qū)塊鏈技術的物聯(lián)網安全優(yōu)勢 515725(二)區(qū)塊鏈相關技術 626721.賬本結構 6199562.共識機制 652323.智能合約 77116三、基于Fabric的數(shù)據傳輸和身份認證 82937(一)HyperledgerFabric 8104011.fabric的組成結構 8215842.Fabric的交易流程 912480(二)hyperledgerfabric平臺搭建 11546(三)Fabric1.4.0節(jié)點交易 1226491.Fabric節(jié)點交易測試 12110883.節(jié)點交易身份認證 1320357(四)Fabric鏈碼的安裝 1429125(五)本章小結 1512762四、用于Fabric的AES加密算法的設計與實現(xiàn) 1517100(一)AES加密算法 1529041.AES算法簡介 15129882.數(shù)學基礎 178170(二)AES加密過程 18151011.加密過程 18235152.解密過程 195422(三)AES加密算法的設計與實現(xiàn) 20324811.AES加密算法詳細設計 2011362.AES解密算法詳細設計 2124762(四)將AES加密算法應用于Fabric的實現(xiàn) 2197681.通過BCCSP模塊對AES算法的實現(xiàn) 2190652.FabricENCChaincode賬本AES128加密解密和簽名驗證 2328087(五)本章小結 242191五、總結與展望 2419184參考文獻 25一、引言目前物聯(lián)網應用主要采用中心化服務器體系架構來對物聯(lián)網數(shù)據進行存儲和共享。一方面,物聯(lián)網節(jié)點多、覆蓋廣、數(shù)據傳輸量大,很多設備直接暴露在互聯(lián)網上,這些設備可能被惡意感染為成僵尸主機,當中心服務器故障或病毒攻擊時,會導致整個系統(tǒng)宕機。例如美國域名服務商Dyn曾遭受大規(guī)模的分布式拒絕服務攻擊,其中重要的攻擊源來自眾多感染了惡意病毒的物聯(lián)網設備組成的僵尸網絡,美國東海岸幾乎癱瘓。另一方面,中心化服務器能夠正常運作的基礎是用戶對平臺的信任,然而可能存在為了利益出賣用戶隱私數(shù)據的非法商家。區(qū)塊鏈的興起為解決上述問題提供了新的可能性,在比特幣誕生初期,區(qū)塊鏈被提議作為底層技術。區(qū)塊鏈具有去中心化,數(shù)據不可篡改,隱私保護性強等特點。區(qū)塊鏈技術的引入可以改進物聯(lián)網的安全現(xiàn)狀,為物聯(lián)網的數(shù)據安全提供更好的保護。因此,通過對區(qū)塊鏈的研究來提高物聯(lián)網數(shù)據的安全性具有很好的發(fā)展前景。二、物聯(lián)網數(shù)據安全與區(qū)塊鏈相關技術(一)物聯(lián)網安全1.目前存在的物聯(lián)網安全問題與傳統(tǒng)互聯(lián)網相比,物聯(lián)網還因其自組織形式、網絡拓撲結構和網絡異構等自身特性而受到更多的安全威脅,如圖2-1所示,例如信息泄露、數(shù)據重放、數(shù)據篡改、數(shù)據偽造等問題。圖2-1物聯(lián)網主要安全威脅由于物聯(lián)網自身的異構型,以及隨著發(fā)展帶來的設備日益增多、數(shù)據量爆發(fā)式增長,同時受限于硬件條件,節(jié)點存儲空間有限,以下安全問題是物聯(lián)網的主要安全威脅:①擁塞攻擊:分為全頻段擁塞干擾和集中擁塞干擾,主要通過發(fā)射無線干擾射頻信號來達到破壞無線通信的目的。傳感器網絡可以使用跳頻和節(jié)點占空比等技術來防止擁塞攻擊。②物理破壞:攻擊者通過捕獲網絡中的節(jié)點,對捕獲的節(jié)點進行物理拆解,破壞網絡的正常功能,破壞網絡安全性。攻擊者可以立即停止被捕獲節(jié)點的正常運行,改變網絡結構,并且可以在節(jié)點設計過程中使用防篡改硬件來防止物理損壞。③碰撞攻擊:公共算法使用偽造的哈希值來欺騙密碼驗證并進入系統(tǒng)工作。為了確定沖突是否由惡意意圖引起,可以在應用沖突檢測的同時設置退避算法,或者可以使用糾錯編碼來解決。④耗盡攻擊:攻擊者不斷向通信節(jié)點發(fā)送數(shù)據使其大量耗能,導致無法工作。可以在協(xié)議編寫時,設定任一數(shù)據包的發(fā)送次數(shù),從而避免攻擊者能不斷發(fā)送數(shù)據包到通信節(jié)點。⑤非公平競爭:由于優(yōu)先級高的報文將被前置執(zhí)行,攻擊者用高優(yōu)先級的報文來影響正常的執(zhí)行順序,面對這一攻擊,可以調整幀大小,使每一幀更短,減少惡意消息占用信道的時間;另一種方法是使用爭用或時分多址(TDMA)進行數(shù)據傳輸。⑥虛假路由信息:通過欺騙、操縱或重發(fā)信息來干擾路由正常運行,同時改變信息的源路徑,用虛假信息來干擾網絡,影響數(shù)據傳輸。⑦選擇性轉發(fā)攻擊:攻擊者攻擊特定報文,使其丟失或者重復轉發(fā),導致報文無法到達目的地,造成網絡陷入混亂。當攻擊者確定其在數(shù)據流的路徑上時,這種類型的攻擊通常是最有效的。⑧槽洞攻擊:攻擊者利用漏洞對區(qū)域中的流量產生誘導,使其經過攻擊者設定的惡意節(jié)點,流量一旦通過這個惡意節(jié)點,數(shù)據就可能被修改,因此,無線傳感器網絡特別容易受到sinkhole攻擊。⑨女巫Sybil攻擊:明顯地降低分布式存儲、去中心化、多路徑路由等路由方案的容錯能力,其中通過位置信息來完成路由尋址的算法會遭受更多威脅。⑩洪泛攻擊:攻擊者可以利用TCP傳輸?shù)娜蛭帐謾C制,利用攻擊端偽造的IP地址向被攻擊端發(fā)送大量用戶請求,使被攻擊端無法及時得到生產消耗和服務器的響應信息資源。我們可以引入服務器端入侵機制,讓基站限制這些泛洪報文的發(fā)送。攻擊物聯(lián)網的方法有很多,主要是通過攻擊保密認證算法、通信節(jié)點本身以及路由信息來對物聯(lián)網造成傷害。目前,物聯(lián)網項目的安全性主要從數(shù)據機密性、數(shù)據完整性、數(shù)據新鮮性、可用性、魯棒性和訪問控制六方面來看,這些方面的專項加固是我們保障物聯(lián)網安全的主要手段。2.區(qū)塊鏈技術在物聯(lián)網應用中的特點因為物聯(lián)網的自身特性,在物聯(lián)網中處理的數(shù)據與傳統(tǒng)數(shù)據庫處理的離散數(shù)據不同,主要是流式數(shù)據。流式數(shù)據是連續(xù)性和實時性的,在受到攻擊時,流式數(shù)據因其連續(xù)性,將導致所有數(shù)據被攻擊。物聯(lián)網的快速發(fā)展帶來了龐大的數(shù)據量,這些數(shù)據的存儲和處理過程中有巨大的安全威脅,其存儲和處理結構如圖2-2所示。目前物聯(lián)網節(jié)點自身的數(shù)據庫來存儲傳感器獲取的外界信息數(shù)據,在數(shù)據處理和存儲過程中產生的非結構化數(shù)據則使用云服務器來進行存儲。由于在數(shù)據被反復調用時會產生很大的流量,中央云服務器的負擔巨大,并且無法保證企業(yè)數(shù)據的安全。物聯(lián)網應用需要考慮數(shù)據的安全性和隱私性,在數(shù)據傳輸過程中,還要防止非授權用戶入侵并使用數(shù)據。圖2-2物聯(lián)網數(shù)據存儲和處理結構目前物聯(lián)網連接設備數(shù)量龐大,數(shù)據的安全與隱私難以得到保障。在節(jié)點數(shù)過多時,由于節(jié)點和節(jié)點之間的高網絡延遲,導致事件被觀察到的序列在節(jié)點之間不是一致的,而通過設置在一個時間段內節(jié)點對所發(fā)生的事件先后順序形成共識的機制,物聯(lián)網節(jié)點之間的數(shù)據傳輸可以得到保護,這種機制稱為共識機制。而區(qū)塊鏈以下四個特點的實現(xiàn),將成為推動物聯(lián)網發(fā)展的關鍵。①去中心化:去中心化是區(qū)塊鏈最典型的特征,也是在物聯(lián)網數(shù)據進行安全應用范圍最廣的點。物聯(lián)網中節(jié)點眾多,網絡間的數(shù)據量龐大,如果采用傳統(tǒng)的中心節(jié)點進行數(shù)據的傳輸,將極大加重中心節(jié)點的負擔,使維持網絡的成本提高。而在區(qū)塊鏈網絡中,中心節(jié)點將被移除,網絡的安全維護將由具有維護功能的平等節(jié)點維護,每個節(jié)點將獲取完整的數(shù)據庫信息。當數(shù)據在節(jié)點之間發(fā)送時,接收者對發(fā)送者進行身份驗證,只有能夠正確認證,才會將接收的信息廣播到網絡。物聯(lián)網與區(qū)塊鏈的結合可以很好的改善物聯(lián)網中的數(shù)據存儲中心化和結構中心化問題,傳統(tǒng)物聯(lián)網對中心節(jié)點的依賴導致的一系列問題得到改善,消除了中心化帶來的隱患。P2P技術是一種去中心化的技術,其主要組織結構如圖2-3。圖2-3P2P主要結構②時序數(shù)據:若在每一數(shù)據中都有時間記錄,這樣就可以記錄每筆交易的時間,使數(shù)據能夠有序排列,將能數(shù)據糾錯提供很大幫助,因此區(qū)塊鏈在數(shù)據中加入了時間戳。區(qū)塊鏈使用默克爾數(shù)記錄交易數(shù)據,當產生交易時,記錄交易數(shù)據的默克爾樹生成于第一個區(qū)塊中,這樣在第一個區(qū)塊就存儲了所有交易的數(shù)據,該區(qū)塊的區(qū)塊頭存儲默克爾樹的樹根。然后區(qū)塊通過一定算法生成哈希函數(shù)并存入父區(qū)塊的哈希屬性,隨著區(qū)塊的發(fā)展,一個個區(qū)塊通過哈希值鏈接,就形成了區(qū)塊鏈,這是不可逆的過程。③數(shù)據加密:區(qū)塊鏈可以通過非對稱數(shù)據加密技術對數(shù)據進行加密和簽名,在進行數(shù)據加密后,物聯(lián)網數(shù)據安全得到有效提升。物聯(lián)網數(shù)據進行交易時,區(qū)塊鏈技術除了生成時序數(shù)據可供用戶通過實踐戳查詢每一筆交易外,還通過加密技術對每一新生成的區(qū)塊進行標識和加密,使每個區(qū)塊都擁有唯一獨立的ID,同時新生成的區(qū)塊需經過所有用戶的認證才能生成。區(qū)塊之間環(huán)環(huán)相扣,若要對一項數(shù)據進行修改,這需要改變所有區(qū)塊的數(shù)據,區(qū)塊鏈中的數(shù)據量巨大,攻擊者幾乎不可能修改數(shù)據,因此數(shù)據的安全性是有保障的。在區(qū)塊本身的保障之外,數(shù)據在區(qū)塊間進行廣播時還要經過身份認證進一步加強物聯(lián)網數(shù)據安全性。,④智能合約:NickSzabo提出,智能合約是一組用數(shù)字形式定義的承諾。從用戶的角度來說,智能合約不需要被操作,只需啟動,就能自動運行。從技術的角度來講,智能合約在區(qū)塊鏈上運行并執(zhí)行一些特定的程序,可以看作區(qū)塊鏈上的網絡服務器。智能合約通過編寫節(jié)點間的合約程序,并將程序存于區(qū)塊鏈中,當啟動條件達成時,智能合約就能自動運行,同時智能合約還用唯一的地址標識,當需要進行智能合約操作時,可以通過地址進行查找。3.基于區(qū)塊鏈技術的物聯(lián)網安全優(yōu)勢傳統(tǒng)物聯(lián)網的服務器與客戶端通過中心服務器的形式相連,這種架構搭建簡單,但是隨著物聯(lián)網的快速發(fā)展,龐大的數(shù)據量以及傳感器節(jié)點的增加使得中心服務器模式的能力捉襟見肘,逐漸與數(shù)據的增長脫節(jié),而區(qū)塊鏈去中心化的架構模式很好的解決了這些問題,同時帶來了物聯(lián)網發(fā)展的新方向,區(qū)塊鏈在物聯(lián)網相關領域的應用和好處包括:①在金融方面,區(qū)塊鏈去信任化以及數(shù)據加密的特點能夠用來改善金融領域的安全問題,例如信息偽造、銀行信用等,實現(xiàn)金融一體化;金融行業(yè)在區(qū)塊鏈的引導下展開了新型的發(fā)展模式。40多家跨國銀行集團在R3CEV的發(fā)起下組成區(qū)塊鏈聯(lián)盟,通過利用區(qū)塊鏈技術引導金融行業(yè)更好的發(fā)展。除了對行業(yè)產生影響,區(qū)塊鏈的發(fā)展在未來也會對個體產生影響。由于區(qū)塊鏈的開放性以及安全性,用戶可以通過區(qū)塊鏈將閑置資源產生新的價值且不用擔心數(shù)據安全。區(qū)塊鏈的賬本結構和加密技術有效的保障了無論是行業(yè)還是個體的數(shù)據安全。②數(shù)據存儲方面,利用區(qū)塊鏈的去中心化將改善大數(shù)據存儲的中性化現(xiàn)狀,使用區(qū)塊鏈數(shù)據加密技術確保文件安全;目前各種物聯(lián)網如NFC、RFID、二維碼使用頻繁,在使用時產生了大量的交易數(shù)據和隱私數(shù)據,存在一定的安全隱患,而通過區(qū)塊鏈的數(shù)據加密、數(shù)字簽名、賬本結構,有效的解決了這些問題。此外,區(qū)塊鏈中的數(shù)據訪問是通過數(shù)據地址進行訪問,而通過設置權限,用戶在不訪問所有交易原始數(shù)據的情況下就可以訪問自身有權限的相應數(shù)據,同時管理自己的隱私信息,通過原始交易數(shù)據的不可篡改保證數(shù)據存儲的安全性。若有攻擊者對服務器進行攻擊,也不能得到用戶隱私數(shù)據。③公共服務方面,通過利用區(qū)塊鏈實時數(shù)據可以標記產品的生產日期和產地,從而解決食品安全問題;同時能夠對醫(yī)療數(shù)據加密,保障用戶隱私;利用區(qū)塊鏈技術實現(xiàn)交通信息共享。(二)區(qū)塊鏈相關技術1.賬本結構由于區(qū)塊鏈使用去中心化的架構模式,在產生交易數(shù)據時,若數(shù)據符合身份認證,則會被廣播到網絡中,所有有記錄能力的節(jié)點將會保存這一數(shù)據,所以整個網絡中產生的交易數(shù)據都被存儲在所有節(jié)點中,確保了交易合法性和數(shù)據安全性。區(qū)塊鏈通過默克爾樹存儲數(shù)據,一個區(qū)塊中的交易數(shù)據將以默克爾樹的形式存于區(qū)塊中,其中區(qū)塊頭記錄默克爾樹根節(jié)點數(shù)據。區(qū)塊結構如圖2-4所示,區(qū)塊結構分為兩個部分:區(qū)塊頭和區(qū)塊體,區(qū)塊頭存儲默克爾樹的根結點以及前后區(qū)塊的哈希值,區(qū)塊之間通過哈希值鏈接在一起。交易數(shù)據存于區(qū)塊體中。隨著區(qū)塊鏈的廣泛應用,區(qū)塊鏈除了存儲包含交易信息的默克爾樹以及哈希值外,也能存儲一些可信的數(shù)據,不僅僅是交易數(shù)據。圖2-4區(qū)塊結構2.共識機制在區(qū)塊鏈中,所有記錄節(jié)點都會存儲關于在網絡中發(fā)生的所有交易信息,因此可以利用所有節(jié)點對一個數(shù)據進行驗證,從而確定其是否為有效數(shù)據,同時認證,由于數(shù)據量巨大,節(jié)點驗證的可信度得到了保證,所以也可以防篡改。根據應用場合的不同,為了提高不同場合的安全性,區(qū)塊鏈具有一致的共識機制,即工作量證明機制pow、權益證明機制pos、委托權益證明Dpos和驗證池共識機制池,在效率和安全之間取得了平衡。區(qū)塊鏈系統(tǒng)中沒有中心化的組織,在傳輸信息和節(jié)點交易時,共識機制必須解決并保證所有記賬節(jié)點上每筆交易的一致性和正確性。區(qū)塊鏈的共識機制使其即使在去中心化組織的情況下也能高效運轉。除了密碼學技術外,共識機制也是區(qū)塊鏈基本元素和核心部分,是保障區(qū)塊鏈系統(tǒng)持續(xù)運行的關鍵。3.智能合約智能合約是去中心化和可共享的區(qū)塊鏈上的程序代碼。在交易雙方就合約達成一致后。只要啟動就在區(qū)塊鏈中寫入智能合約,就能自動執(zhí)行合約,其中不需要任何機構去操縱,具有自動、去中心化等特點,從而避免了惡意干預,保障了交易的安全性,其運行機制如圖2-5。圖2-5智能合約運行機制智能合約運行過程如下:對狀態(tài)、轉換規(guī)則、觸發(fā)條件以及對應操作進行封裝打包,在交易方共同通過后,通過編程語言寫成程序代碼存入區(qū)塊鏈中等待調用;在網絡中進行傳播,驗證通過后存入每個節(jié)點中,每個節(jié)點在被調用時驗證其身份。來完成區(qū)塊鏈對智能合約的監(jiān)督,只有滿足觸發(fā)合約的條件,智能合約才允許自動運行。智能合約的興起為區(qū)塊鏈發(fā)展指明了新方向,通過交易雙方約定的智能合約,賦予了底層數(shù)據的可編程性,將詳細復雜的操作寫入智能合約后存入區(qū)塊鏈中,增加了區(qū)塊鏈的靈活性,同時為用戶應用提供了接口,其執(zhí)行的互不干擾保證了交易數(shù)據的安全,具有很高的研究價值。三、基于Fabric的數(shù)據傳輸和身份認證(一)HyperledgerFabric目前世界上發(fā)展的主要的區(qū)塊鏈技術平臺有比特幣(Bitcoin)、以太坊(Ethereum)以及超級賬本(HyperledgerFabric)REF_Ref42123729\r\h[23]。傳統(tǒng)的商業(yè)模式難以在跨機構交易時確保由可信機構來執(zhí)行,每個交易方都有自己獨立的賬簿,交易發(fā)生時,雙方的賬目必須分別變更,這將提高交易的開銷,此外,傳統(tǒng)模式只有少數(shù)幾個中心系統(tǒng),使得商業(yè)網絡相對脆弱。賬本結構、共識機制、數(shù)據加密和智能合約是企業(yè)級區(qū)塊鏈所需具備的是個條件。目前,其他三點都可以由如以太網eos等公鏈滿足,但隱私不能得到保證。此外,效率較低,還沒有最終確定,由愛好者為主,其發(fā)展趨勢與當今商業(yè)發(fā)展不太合適。聯(lián)盟鏈和許可制較為適用于企業(yè)級商用區(qū)塊鏈網絡。在聯(lián)盟鏈中,經過授權的節(jié)點中存儲著其身份認證信息,在網絡中是唯一的,只有通過其他節(jié)點的身份認證,才能進入區(qū)塊鏈中進行數(shù)據傳輸和交易,因此,未經授權的用戶將被拒絕服務,保證了節(jié)點的公開性和數(shù)據的安全性。目前最有發(fā)展前景的是產業(yè)鏈或區(qū)塊鏈,主要由各類行業(yè)組織形成,從而構成了行業(yè)內公開的半公開鏈。從這個角度來看,HyperledgerFabric有潛力成為未來領先的商業(yè)區(qū)塊鏈技術平臺,它提供了一種授權維護賬本的機制,確保數(shù)據隱私,值得技術開發(fā)人員花費時間和精力學習和研究。因此,我們使用Fabric超級帳本建立一個單機多節(jié)點網絡,并在其中模擬物聯(lián)網節(jié)點間的交易。1.fabric的組成結構Fabric組成結構如圖3-1所示圖3-1Fabric整體架構Fabric提供了gRPCAPI,SDK供應用調用。應用在運行時需要訪問Fabric中的各種數(shù)據,比如賬本數(shù)據、節(jié)點交易數(shù)據等,記錄有交易信息和數(shù)據的賬本是Fabric中最核心的部分,這時候需要依賴SDK完成訪問和調用REF_Ref42123873\r\h[24]。區(qū)塊鏈通過數(shù)據庫、共識機制等技術完成賬本結構的搭建以及交易的正確執(zhí)行,當交易產生時,其執(zhí)行過程是通過事先寫入鏈碼的程序來執(zhí)行,并且在有權限的情況下可調用于外部應用程序,這種調用和訪問由權限管理模塊負責。通過公鑰體系、各種加密算法以及數(shù)字簽名機制,F(xiàn)abric構建了一個穩(wěn)定的權限管理模塊。在Fabric底層,有很多P2P架構的節(jié)點,這些節(jié)點共同完成區(qū)塊鏈內賬本的同步,確保數(shù)據的安全性。2.Fabric的交易流程Fabric根據交易時的不同分工將節(jié)點劃分為Endorser節(jié)點和Committer節(jié)點,對應著交易發(fā)生時的不同任務。Fabric交易處理過程如圖3-2所示,各個組件的功能主要為:圖3-2Fabric交易流程客戶端(App):客戶端是用戶的操作端,為了從客戶端能夠訪問區(qū)塊鏈中的相應數(shù)據,需要使用SDK進行訪問。其過程如下:1.FabricCA將為客戶端發(fā)放身份證明,在身份驗證通過后加入區(qū)塊鏈;2.客戶端在交易前創(chuàng)建交易提案(Proposal)并提交給Endorser節(jié)點進行背書;3.客戶端通過審批策略構造合理的交易請求后,將交易請求發(fā)送到O-rderer節(jié)點進行排序處理。在區(qū)塊鏈中還存在這事件監(jiān)管機制,其功能是監(jiān)聽網絡中產生的信息,所以客戶端還可以通過它來查詢交易請求是否正確傳輸。Endorser節(jié)點:主要向客戶端提供ProcessProposal方法,通過這一方法,用戶可以對之前提出的交易請求進行簽名。Endorser節(jié)點在接受來自客戶端提交的交易請求后,首先驗證交易是否合法,然后檢查其ACL權限,在確認無誤后,對交易進行模擬,同時讀取交易產生時自動生成的密鑰,之后返回給用戶。Committer節(jié)點:完成區(qū)塊鏈及部分賬本結構的維護。當排序節(jié)點對區(qū)塊進行排序后,由Committer節(jié)點來驗證這些交易的正確性;Orderer節(jié)點:在網絡中產生的交易順利完成后,將寫入區(qū)塊中并用時間戳進行標記,而Orderer節(jié)點就根據時間戳對這些已經完成的交易區(qū)塊進行排序,在排序完成后交由Committer節(jié)點進行正確性檢查。由于Orderer節(jié)點只讀取時間戳,因此不需要訪問交易內容和賬本,降低節(jié)點間數(shù)據泄露的風險;CA:FabricCA負責對所有參與到交易過程中的節(jié)點進行身份信息和證書的發(fā)放,在完成證書發(fā)放之后就結束了工作,不需要參與到交易中,其架構如圖3-3。圖3-3FabricCA架構示意圖在Fabric的交易過程中,賬本是一個有序且不可篡改的記錄,可以進行狀態(tài)轉換。狀態(tài)轉換是參與者提交鏈碼后從不被調用到被調用的轉換。每筆交易生成一組鍵值對數(shù)據,在創(chuàng)建、更新或刪除時發(fā)送到總賬;賬本由鏈(chain)和狀態(tài)數(shù)據庫(StateDatebase)組成,該鏈將不可變的順序記錄存儲在塊中并維護一個狀態(tài)數(shù)據庫。每個channel都有一個賬本。每個peer都為其所加入的每個通道維護一個賬本。(二)hyperledgerfabric平臺搭建Hyperledgerfabric中的身份隱私保護技術和數(shù)據隱私保護技術確保其數(shù)據的安全,而且其智能合約可以以多種編程語言寫入,故適用于節(jié)點眾多環(huán)境復雜的物聯(lián)網中。經過學習和測試,F(xiàn)abric1.4.3網絡環(huán)境搭建在ubuntu16.04之上。先安ubuntu16.04,并安裝好fabric需要的前置環(huán)境git,curl,pip,go,node.js,npm,升級gcc,并添加相應環(huán)境變量以確保程序能正常運行;然后docker和docker-compose構成了鏈碼正常運行的基礎。在安裝docker-compose之前,需要先安裝python-pip;最后fabric源碼、fabric-samples源碼、fabric鏡像,在安裝成功后,可初步測試。(三)Fabric1.4.0節(jié)點交易1.Fabric節(jié)點交易測試在安裝好各種環(huán)境后,通過Fabric提供的e2e_cli示例,一旦crypto-config.yaml文件配置,就可以用cryptogen讀取該文件,并對其進行節(jié)點搭建及測試。步驟及流程如下:(1)初始化Fabric環(huán)境在docker-compose-cli.yaml中加入FabricDocker環(huán)境的配置,服務的運行和數(shù)據的存儲依賴于Docker容器;使用以下命令以啟動Fabric環(huán)境的容器:docker-compose-fdocker-compose-cli.yamlup-d創(chuàng)建Channel后,將每個節(jié)點加到其中。由于默認情況下CLI連接的節(jié)點是,所以將其他節(jié)點添加Channel時,必須更改CLI的環(huán)境變量使其指向其他peer。配置好通道和節(jié)點后,安裝并運行ChainCode。以e2e_cli為例。這個例子實現(xiàn)了兩個賬戶a和b,可以互相轉賬。鏈碼必須安裝在每個相關的peer上。對于Fabric提供的示例e2e_cli,如果4個peer都想在e2e_cli上工作,需要安裝4次。操作類似于peer0。在CLI命令下,切換到1節(jié)點。要安裝e2e_cli,您需要使用peerchaincodeinstall命令并為其命名。所有節(jié)點安裝完chaincode后,打包生成對應的鏡像和容器,在實例化時指定a-account100和b-account200,調用ChainCode的查詢代碼,返回結果QueryResult:100。(3)通過下列操作將a賬戶的10元交易給b:peerchaincodeinvoke-o:7050--tlstrue--cafile$ORDERER_CA-Cmychannel-nmycc-c'{"Args":["invoke","a","b","10"]}'以上操作在org1完成,而處于同一區(qū)塊鏈的org2在執(zhí)行查詢命令后,同樣可以查看交易過程與結果,其中就是節(jié)點間的信息傳輸。2.節(jié)點交易流程及數(shù)據傳輸在Fabric中節(jié)點之間的交易主被劃分為提交過程和提交后處理,其中提交過程是核心過程。提交過程包括四個步驟:預處理、驗證交易、更新本地區(qū)塊鏈結構和更新本地數(shù)據庫結構;預處理階段負責構造一個有效的內部區(qū)塊結構,其主要功能如圖3-4圖3-4預處理功能驗證交易是對區(qū)塊中的交易進行MVCC檢查,驗證私密讀寫集,并更新區(qū)塊元數(shù)據中的交易有效標記列表,主要實現(xiàn)方法如圖3-5。圖3-5驗證交易實現(xiàn)在完成驗證交易后,需更新本地區(qū)塊鏈結構,主要步驟是將區(qū)塊寫入本地Chunk文件,更新索引數(shù)據庫(區(qū)塊號、哈希值、文件指針、交易偏移量、區(qū)塊元數(shù)據)、將提交的區(qū)塊號更新到私有數(shù)據庫;更新數(shù)據庫是提交交易的最后一步,主要包括如下步驟:刪除過期的私密數(shù)據;更新私密DLM記錄數(shù)據庫;更新本地公共狀態(tài)數(shù)據庫和私密狀態(tài)數(shù)據庫;如果歷史數(shù)據庫在交易活動中啟動,這也要對其進行更新。提交結束后,清理本地臨時狀態(tài)數(shù)據庫、更新賬本高度信息,節(jié)點間的交易數(shù)據通過廣播的方式傳輸?shù)秸麄€區(qū)塊中,擁有權限的節(jié)點可以通過指令查詢交易數(shù)據。3.節(jié)點交易身份認證在Fabric賬本中,通過CA進行實現(xiàn)所有證書的管理,在節(jié)點交易測試時,使用abric-ca為節(jié)點用戶生成msp證書,以及tls證書。具體操作如下:安裝編譯依賴libtool、libtdhl-dev和fabric-ca-server、fabric-ca-client,設置程序執(zhí)行環(huán)境變量,其操作如圖3-6。圖3-6設置環(huán)境變量啟用fabric-ca服務并生成節(jié)點證書,更改文件夾中證書文件的路徑,方便在節(jié)點配置文件中配置證書路徑。該路徑用于在節(jié)點配置文件中查找tls證書的路徑,,其操作如圖3-7圖3-7修改證書路徑節(jié)點交易時,所有節(jié)點收到該區(qū)塊后,驗證該區(qū)塊中的交易背書是否已滿足且自讀取集創(chuàng)建以來未被更改,并將該區(qū)塊中的交易標記為有效或無效。(四)Fabric鏈碼的安裝區(qū)塊鏈中的智能合約在Fabric中又被稱為鏈碼。鏈碼是由go語言編寫的程序,通過Java等編程語言設定的接口進行調用,在安全的Docker容器中運行,由背書節(jié)點進程將其獨立,保障操作的抗干擾性。賬本中的數(shù)據就是通過鏈碼進行操作。在接下來的研究中,需要通過鏈碼對數(shù)據進行加密,因此需要提前完成對鏈碼的安裝。通過開源的Fabric超級帳本,下載其提供的enccc_example.go并安裝。在通過指令下載好enccc_example.go鏈碼后,對其進行安裝和實例化,步驟如下登錄cli容器,設置環(huán)境變量并安裝,詳細操作如圖3-8:圖3-8設置環(huán)境變量在安裝好鏈碼后,需對其實例化,實例化是一筆特殊的交易,完成后,將實例化信息廣播給通道內的所有節(jié)點,防止再次被實例化發(fā)生沖突,詳細操作如圖3-9圖3-9鏈碼實例化為了保護網絡中其他成員的chaincode邏輯的機密性,chaincode只能安裝在chaincode擁有背書的成員的peer節(jié)點上。沒有chaincode的成員不能執(zhí)行chaincode。但是,它們仍然可以驗證并將交易提交到賬本。成功實例化之后,鏈碼就會進入待命狀態(tài),在收到操作指令后就會對指令進行處理。在完成了鏈碼的安裝及實例化之后,在第四章將通過其BCCSP接口將用go語言編寫好的AES-128加密算法應用到Fabric鏈碼的數(shù)據加密中。(五)本章小結本章介紹Fabric超級帳本的相關知識,并將其與比特幣、以太坊兩種區(qū)塊鏈平臺做了簡單的對比,其優(yōu)勢在于屬于半公開的聯(lián)盟鏈,對授予了證書的機構開放,有很好的發(fā)展前景。同時在了解了Fabric交易流程的基礎上對節(jié)點間的交易以及身份認證進行了測試,最后安裝了鏈碼實例,為之后的通過鏈碼對節(jié)點的數(shù)據進行加密祝好準備工作。四、用于Fabric的AES加密算法的設計與實現(xiàn)目前的加密算法主要包括對稱加密算法和非對稱加密算法。對稱加密算法的加解密和解密密鑰是一樣的,由于加密速度高,適合頻繁的數(shù)據傳輸。非對稱加密則不同,加密和解密密鑰是不同的,密鑰傳輸方便,但加密慢。而在物聯(lián)網網絡中節(jié)點眾多,數(shù)據傳輸頻率高,因此采用對稱加密算法中的AES算法對Fabric節(jié)點的數(shù)據進行加密。(一)AES加密算法1.AES算法簡介高級加密標準(AES,AdvancedEncryptionStandard)是應用最廣泛的對稱加密算法[26]。對稱加密算法使用相同的密鑰進行加密和解密。具體加密過程如圖4-1所示:圖4-1AES算法加密流程其中各個部分的作用與意義如圖4-2:圖4-2加密算法各部分作用及意義AES加密算法分為3種,即AES-128,AES-192,AES-256。三者之間區(qū)別如圖4-3所示:圖4-3AES算法三種類型目前的AES-128加密算法更安全,沒有出現(xiàn)被攻破的情況REF_Ref42123790\r\h[27],因此,AES-128加密算法可以應用于信息安全研究。2.數(shù)學基礎AES加密算法的大部分操作是字節(jié)操作,也有一些是字操作。在有限域8GF(2)中,一個字節(jié)代表一個元素,四個字節(jié)為32位字(次數(shù)小于4),8GF(2)中的系數(shù)為[28]。各種元素的組合在有限域8GF(2)中有很多,而有限域的引入增加其復雜程度。有限域8GF(2)中的元素是由AES的多項式表示的。8GF(2)中的元素系數(shù)是小于8的多項式且系數(shù)在GF(2)中。例如由構成一個字節(jié)的多項式(4-1)其中,如二進數(shù)為01101011對應于多項式為(4-2)GF(28)中的加法使用二元多項式加法,系數(shù)滿足模2加法(即異或)。例如“6B”和“71”之和為:6B+71=1A,或多項式記法:(4-3)顯然,多項式加法和比特異或以字節(jié)為單位的結果是一樣的。在GF(28)上的乘法(用符節(jié)“.”表示)定義為二進制多項式的乘積以8次不可約多項式為模的乘積,該8次不可約多項式為:(4-4)十六進制是“11B”,二進制表示是100011011,這個乘法滿足GF(28)上的結合律,且有一個本原元(“01”),例如:(4-5)或者:(4-6)顯然,模數(shù)的結果是一個低于8階的多項式,與加法不同的是,乘法不是一個簡單的字節(jié)單運算。(二)AES加密過程AES加密算法主要由加密和解密兩部分組成。加密過程由字節(jié)替換、行移位、列混合洗和輪密鑰添加組成的函數(shù)的循環(huán)執(zhí)行形成。而解密過程則是由這些操作的逆操作循環(huán)執(zhí)行形成REF_Ref42123812\r\h[29]。1.加密過程在AES加密算法中,十輪加密輪函數(shù)的運行組成了其加密部分,完成了AES-128加密算法的加密部分,其中前九輪加密相同,只有第十輪加密不同REF_Ref42123839\r\h[30]。每一輪加密包括字節(jié)代換、行位移、列混合、輪密鑰加是個部分這四個部分就是AES加密算法的核心操作。AES加密算法將128位的明文數(shù)據包P和密鑰K分成16個字節(jié),分別標記為P=P0P1...P15和K=K0K1...K15。最常見的是,狀態(tài)矩陣用于以字節(jié)為單位描述文本數(shù)據包的數(shù)組,它代表了目前明文處于第幾輪加密。在十輪加密中,矩陣的狀態(tài)隨著加密的進行而改變,在每一輪都呈現(xiàn)出不同的狀態(tài),如圖4-4所示:圖4-4AES算法加密過程前九輪的加密操作相同,包括字節(jié)替換、行位移、列混合和輪密鑰加,行列混合在第十輪加密中不被進行,這就是第十輪加密與前九輪不同的地方。并且在第一輪加密之前,明文和密鑰進行異或加密。2.解密過程AES算法的解密輪次與加密相同,都是十輪,每輪解密操作包括反向字節(jié)替換、反向移動、反向列混合和輪密鑰添加。與加密操作一樣,最后一輪不進行反向混合,在第一輪解密之前進行密鑰添加操作,其過程如圖4-5:圖4-5AES解密算法流程(三)AES加密算法的設計與實現(xiàn)AES-128塊對稱加密是指將明文數(shù)據分解成多個16字節(jié)的明文塊,每個明文塊用一個密鑰加密,得到相同數(shù)量的16字節(jié)的文本塊。如果明文塊小于16字節(jié),則必須有填充和鏈式編碼方式。在FabricSuperLedger中給出了許多鏈碼示例,在本研究中我們選用ENCChaincode數(shù)據賬本進行實驗。1.AES加密算法詳細設計在AES加密函數(shù)中,第一步是將密鑰展開,然后將明文字符串讀入一個4*4的整數(shù)數(shù)組,形成狀態(tài)矩陣。在AES編碼函數(shù)中,每輪運算的行位移和列混合函數(shù)都會改變pArray(狀態(tài)矩陣函數(shù))。為了加密后的字符存儲在明文P中,經過10輪加密后,將pArray轉換回字符串,然后存儲在明文p的字符串中。這個轉換過程是通過convertArrayToStr()函數(shù)實現(xiàn)的,主要實現(xiàn)代碼如圖4-6。圖4-6AES加密函數(shù)2.AES解密算法詳細設計AES的解密函數(shù)和加密函數(shù)不同,解密函數(shù)中調用的是各輪操作的逆函數(shù)。主要實現(xiàn)代碼如圖4-7圖4-7AES解密函數(shù)在完成了AES-128算法的編寫后,將其儲存在Fabric超級帳本密碼算法模塊BCCSP(blockchaincryptoserviceprovider)中,即可在后續(xù)的實例中調用并對數(shù)據進行加密。(四)將AES加密算法應用于Fabric的實現(xiàn)1.通過BCCSP模塊對AES算法的實現(xiàn)在編寫好AES加密算法后,將其存入BCCSP的sw目錄之后,需對結構體進行定義,主要操作如圖4-8。圖4-8sw結構體定義之后通過定義加解密以及字符填充模塊,就可以在鏈碼中調用加密算法對數(shù)據進行加密,詳細過程如下:加密模塊主要內容如圖4-9,圖4-9加密模塊解密模塊主要內容如圖4-10,圖4-10解密模塊Fabric中使用的padding方法是:pkcs7Padding,即padding字符串由一個字節(jié)串組成,每個字節(jié)填充字節(jié)串的長度,如圖4-11。圖4-11字符填充在完成了各模塊的編寫,可以調用加密算法對鏈碼中的數(shù)據進行加密2.FabricENCChaincode賬本AES128加密解密和簽名驗證在之前的研究中,由Fabric超級帳本通過e2e_cli提供,進行了節(jié)點間的數(shù)據傳輸,而在這里,使用Fabric開源提供的enccc_example.go來進行數(shù)據傳輸?shù)募用芤约膀炞C簽名。AES128塊對稱加密是指將明文數(shù)據分解成多個16字節(jié)的明文塊,然后用密鑰對每個明文塊進行加密,得到相同數(shù)量的16字節(jié)密文塊。塊小于16字節(jié),它必須具有填充和鏈編碼模式。我們使用PKCS7Padding的方法來填充ENCChaincode,也就是用缺失的數(shù)字來填充。例如,如果塊長度為12個字節(jié),缺少4個字節(jié),則填寫4個字節(jié)的內容,每個字節(jié)的內容為十進制的4。在提供的鏈碼中,ENCKEY和DECKEY用于分組對稱加密和解密,IV為加密過程中使用的向量。ENCCC示例使用CBC模式,必須向鏈碼提供IV。如果未提供,它將隨機生成。但是,如果背書策略規(guī)定需要多個節(jié)點背書,那么必須指定一個唯一的IV,否則背書時節(jié)點會出現(xiàn)讀寫沖突。主要函數(shù)及功能如下:Encrypter把通過AES128位密鑰進行加密的value寫入賬本;Decrypter將賬本value讀出并通過AES128位密鑰進行解密;EncrypterSigner對value使用AES128位密鑰進行加密和prime256v1標準進行簽名,并將value寫入賬本;DecrypterVerify從賬本中讀取數(shù)據,使用AES128位密鑰進行解密和prime256v1標準驗證簽名。使用e2e_cli示例網絡結構:一個orderer節(jié)點,分屬兩個Org的四個peer節(jié)點。修改了script.sh腳本,在所有peer節(jié)點安裝、實例化ENCCC(ENCChaincode)測試過程中設置了ENCKEY、DECKEY、DECKEY1、IV、SIGKEY、VERKEY、VERKEY1為cli容器的環(huán)境變量。首先驗證其加密解密,使用ENCKEY將value寫入賬本,結果:數(shù)據可正確加密寫入如圖4-12:圖4-12寫入value使用DECKEY讀取value,數(shù)據正確讀出并解密如圖4-13圖4-13讀出數(shù)據但是如果使用DECKEY1讀取value,則解密失敗,說明節(jié)點的數(shù)據傳輸安全得到了保障,本區(qū)塊外的節(jié)點無法解密。最后就是簽名的認證,使用ENCKEY和SIGKEY在賬本中寫入值,結果數(shù)據正確簽名加密,并且寫入賬本,使用ENCKEY和VERKEY讀取值時,能夠正確讀出并解密,驗證簽名通過,使用ENCKEY和VERKEY1讀取值時可以讀取數(shù)據,但是簽名驗證不通過,增強了數(shù)據的安全保障。enccc_example為我們提供了一種加密分類帳數(shù)據的解決方案。要通過加密隔離數(shù)據,需要針對特定應用程序進行某些更改。通過對鏈碼的加密,提高節(jié)點間數(shù)據傳輸?shù)陌踩裕鳤ES加密算法適用于經常收發(fā)數(shù)據的場景,符合物聯(lián)網網絡的需求,通過應用AES算法加密的區(qū)塊鏈,它可以在一定程度上增強物聯(lián)網數(shù)據的安全性。(五)本章小結本章首先介紹了AES算法的相關知識和數(shù)學基礎,同時對其加密解密過程進行分析,然后通過Fabric的BCCSP模塊簡編寫好的AES加密算法包裝成可供節(jié)點調用的加密模塊,最后通過鏈碼實例enccc_example.go進行了數(shù)據加密以及簽名驗證。AES加密算法的加入,保證了節(jié)點數(shù)據的安全,只有在同一區(qū)塊中并且簽名

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論