基於區塊鏈的軟件知識產權認證系統的設計與實現

1 論文摘要

在全球互聯網大潮下,軟件運用到各行各業。軟件傳播成本低廉,創新成果容易被複制,使得軟件知識產權侵權盜版現象嚴重,造成開發者財產損失。目前,國內外大多數提供軟件知識產權證明和信息追溯服務的應用系統都依賴於中心機構,這些應用系統受傳統信任模型的影響,惡意用戶或為利益相互妥協的多方可能能夠篡改數據。此外,在維權的過程中,第三方機構提供的服務給軟件開發方帶來了服務費用和時間成本。

針對如何保證軟件知識產權在互聯網上進行可靠的認證與存證,本文設計 並實現了基於區塊鏈技術的軟件知識產權認證系統。系統憑藉區塊鏈技術去中 心化、不可篡改、可追溯、多方維護的特性,以綁定時間戳的方式存儲認證信 息,保證軟件知識產權認證信息能夠安全存證、多方共享。

本文基於Vue框架和Spring Boot框架實現前端Web平臺和後端業務服務,維護系統良好擴展性,以應對快速擴展的業務需求。利用LDAP和Fabric CA實現聯盟鏈節點的用戶信息管理和身份認證。開發證書工具客戶端,實現軟件加密生成軟件證書,保證軟件製品不會洩露。採用基於Hyperledger Fabric和IPFS協議的區塊鏈應用程序解決方案,解決區塊鏈數據膨脹問題,搭建聯盟鏈網絡,實現軟件知識產權全網公證,信息不可篡改。通過TiDB數據庫緩存IPFS文件數據,降低數據查詢耗時,加快服務響應速度。最歡採用Docker部署系統各個服務,Kubernetes集群管理容器的調度,擴展,負載均衡。

本系統已經在公司部署。公司測試節點結合阿里雲和騰訊雲部署的兩個Fabric共識節點對系統進行測試。測試結果表明系統能夠基於聯盟鏈提供可靠的軟件知識產權認證與存證服務。同時在100tps的交易吞吐量下,系統聯盟鏈仍能維持良好的可用性。系統聯盟鏈網絡中,每個節點都擁有完整一致的賬本,賬本數據由所有參與方共同維護,不會被利益群體惡意篡改。最終,用戶能夠不依賴於第三方機構,在聯盟鏈網絡中對軟件知識產權進行全網認證並在任意節點準確追溯知識產權信息。

關鍵詞: 知識產權保護、軟件產權認證、數字簽名、聯盟鏈、星際文件系統、鏈碼

2 技術介紹

2.1 EEA和Fabric對比

目前比較成熟的聯盟鏈方案包括Hyperledger Fabric和EEA(企業以太坊聯 盟)。 EEA是在Hyperledger Fabric 之後推出的,力求引領基於以太坊的標準區塊鏈設計,其技術基礎是摩根大通開源的Quorum平臺,在效率方面要高於Fabric。聯盟鏈項目想要發展成為領域生態圈,擴展性設計是必須要考慮的問題。EEA基於以太坊,理論上節點擴展性是沒有限制的,但是缺乏實際項目支撐,而Fabric的節點擴展性可以滿足目前大多數落地項目的要求,同時可以 支持較多的客戶端。

對比兩個方案的共識機制,EEA支持Raft和IBFT,Hyperledger Fabric支持PBFT,如表1所示。PBFT 是基於消息傳遞的共識機制,和IBFT一樣都是基於拜占庭容錯的共識算法,BFT的變體。Raft強調可用性和最終一致性,效率非常高,但是在安全性方面較差,防欺詐通常只能事後檢查。

基於區塊鏈的軟件知識產權認證系統的設計與實現

表1 EEA和Fabric共識機制對比

在智能合約方面,Quorum的智能合約方案基本沿襲了以太坊公鏈思路。Hyperledger Fabric的chaincode設計是一個開創性的智能合約設計框架,同 時chaincode基於Docker容器執行,滿足區塊鏈和容器之間低耦合設計。

EEA是由三十幾家創始成員組成,大多是銀行機構。Quorum目前也是被應用在金融領域,在其他領域缺乏有效的案例,無法評估其穩定性。Hyperledger Fabric是由Linux基金會管理的開源項目,成熟且完整,有大量的國際化落地應用支撐,儘管在理論設計上,效率和擴展性都比不上EEA,但也能夠滿足本系統的應用場景和需求,其穩定性才是最為契合工程應用需求的特性。

結合上述的技術分析以及目前兩個方案的發展狀況,本系統基Hyperledger Fabric開源項目搭建聯盟鏈。

2.2 工程技術選型

Vue生態:從狹義的角度來看,Vue是一套前端框架,但從廣義的角度,它是一 套Web應用前端構建通用解決方案,包含自己的技術生態體系。本系統平臺是以Vue作為前端的技術體系。

微服務:微服務架構實現了部署和更新服務的簡易性,簡化運維人員複雜的手工配置和處理工作。動態地發現和綁定服務提供系統模塊之間的低耦合設計,提高系統可維護性。本系統採用的是基於Spring Boot結合Kubernetes實現的微服務架構方案。參考Spring Cloud組成架構,基於Spring Boot實現服務內部的對外接口,通過Docker容器部署運行。採用Kubernetes集群代Spring Cloud集成的服務註冊中心,實現對應用實例的註冊、管理、發現、訪問。

Spring Boot:本系統使用Spring Boot作為後端框架。Spring Boot作為目前最常用的Java後端框架。其提供良好的REST風格接口設計,簡化了配置,自帶servlet容器可以獨立運行,自動管理依賴包,支持各種主流工具,對開發人員屏蔽底砇實現。這些優化設計使得Sprint Boot框架能夠開箱即用,減少開發人員在項目配置和管理上的時間成本,提高開發效率。

IPSF:本系統通過IPFS去中心化的P2P分佈式文件存儲網絡,將大量超媒體文件存儲在區塊鏈外,根據文件內容生成唯一加密哈希值。區塊鏈不再需要存儲相關的業務數據庫中的數據,轉而存儲業務數據在IPFS中對應的內容相關hash值,以此來解決區塊鏈的存儲能力問題。

TiDB: 本系統是通過XML文件的形式存儲鏈外數據到IPFS網絡中。考慮到 從IPFS讀取文件並解析成數據對象的效率問題,系統採用TiDB作為緩存數據庫,對用戶所需的業務數據進行存儲,方便用戶再次查詢。

LDAP: 本系統是採用聯盟鏈方案而不是公有鏈,節點參與方是管理機構或者軟件 開發企業。這些機構或公司內部已經使用LDAP實現了統一身份管理,為方便部署區塊鏈節點,同時保護各節點的用戶隱私,本文使用LDAP存儲用戶信息,

並結合Fabric CA完成用戶在系統中的區塊鏈訪問權限認證。

本系統平臺通過使用工業界成熟的框架和開源技術,包括Fabric、IPFS、Vue、Spring Boot、LDAP等,構建具有良好擴展性並能支持需求快速擴展的系統。包括前端交互平臺、證書工具、基於微服務架構設計的籓端服務和依賴Fabric開源項目實現的底砇區塊鏈服務。最終實現區塊鏈技術在軟件知識產權領域的實踐應用。

3 工程實現與設計

3.1 需求分析

基於區塊鏈的軟件知識產權認證系統的設計與實現

圖1 系統用例圖

根據對系統涉眾的特性分析,得出系統相關用例,如圖 1所示。系統涉眾包括軟件開發方,軟件需求方和證書工具。軟件開發方主要進行軟件知識產權認證,產權查詢,產權版本管理,區塊鏈數據查詢,軟件證書生成,軟件驗證。軟件需求方主要進行軟件驗證和區塊鏈數據查詢。證書工具子系統提供證書生成服務和軟件驗證服務。

3.2 總體架構

基於區塊鏈的軟件知識產權認證系統的設計與實現

圖 2 系統架構圖

本系統是基於區塊鏈的分佈式應用,圖 2描述了系統的整體架構。系統整體採用了P2P的網絡拓撲結構,每個系統節點由前端、服務端、數據層三部分構成。前端採用Vue框架、Axios異步編程框架、Vuex中心化狀態管理插件、ElementUI開源組件,實現系統的視圖展示和用戶交互。服務端採用Spring Boot實現業務服務,包括證書服務、產權認證服務、產權版本管理服務、鏈外 文件存儲服務、區塊鏈服務、用戶管理服務。其中,證書服務由證書工具客戶 端提供,支持離線服務。用戶管理服務基於LDAP協議實現,由節點所屬機構內部管理節點用戶。數據層包括IPFS節點,Fabric節點,TiDB節點。IPFS節點用來管理鏈外數據,數據以文件的形式存儲到IPFS網絡。Fabric節點用來管理鏈上數據,由區塊鏈賬本、Fabric CA和chaincode鏈碼組成。區塊鏈賬本用來保存所有的鏈上交易數據,所有節點賬本數據相同。Fabric CA結合LDAP完成用戶身份認證和區塊鏈訪問權限管理。chaincode是Fabric獨特的智能合約實現方式,自動執行數據上鍊更新賬本和獲取賬本授權數據。TiDB節點作為系統的緩存數據庫,緩存IFPS中被訪問的文件數據,提高系統數據查詢響應速度。

3.3 證書生成模塊

證書工具模塊主要是實現軟件與證書之間的轉換,以證書來代替真實軟件

在系統中傳輸。同時能通過證書來驗證軟件的真實性和未被篡改。

考慮到系統模塊解耦,軟件證書的生成和驗證可以單獨作為一個客戶端工 具獨立運行。如果以靜態服務的形式集成到前臺系統會造成項目文件過大,首 頁加載速度低下。該服務會帶來客戶端瀏覽器壓力。如果以後端服務的形式集 成,違背了對用戶軟件隱私保護的目的,同時對軟件製品的類型就有了條件限 制,不利於維護平臺的業務擴展性。作為一個獨立的客戶端工具使用,不僅對 系統屏蔽了軟件製品的真實實體,保護了軟件開發方的資產隱私,同時還可以 離線使用。

用戶使用證書工具進入證書生成交互界面。輸入用戶名後,需要提供用戶 的私鑰文件,如果用戶已經使用LDAP驗證過,證書工具會調用LDAP服務獲取用戶私鑰。證書中不需要包含公鑰,軟件認證服務可以使用文件中的用戶信

息從LDAP獲取。指定好軟件製品文件路徑和證書生成路徑後,證書工具會獲

取軟件文件並對文件進行MD5加密,生成與內容對應的唯一hash 值。之後使用用戶私鑰對MD5散列值進行RSA加密生成用戶數字簽名。其作用是在軟件產權認證信息上鍊時,通過用戶公鑰解密用戶簽名獲得加密的hash,對比軟件hash,驗證軟件證書是否被篡改,保證網絡傳輸中信息沒有被篡改。以XML 的格式保存用戶簽名、散列hash、時間戳、用戶信息、加密算法,生成證書文件並寫入到指定路徑。

3.4 軟件知識產權認證模塊

軟件產權認證即軟件知識產權的確權,通過區塊鏈保證軟件產權信息的安 全性、不可篡改,所有授權節點的產權認證信息都會被區塊鏈記錄下來。區塊 鏈每個節點都有完整的產權認證信息賬本,可以隨時追溯軟件知識產權的所屬 方,並且真實可信。軟件產權認證模塊的主要功能包括兩個部分:(1)軟件開發 方對自己開發的軟件進行知識產權認證,上傳軟件證書,將軟件產權認證信息 上鍊存證。(2)軟件更新迭代時,軟件開發方更新該軟件的產權信息,上傳新的 證書,將軟件產權更新信息記錄到鏈上。

由於系統基於區塊鏈技術進行數據存儲,區塊鏈只允許“增和查”的服務, 不提供對賬本已有數據進行更新。因此係統對於軟件產權信息的更新設計是把 軟件產權的新版本作為新的產權認證記錄提交到鏈上,通過Leaf生成的標識來追溯軟件版本的變更過程。

軟件產權認證的具體流程分為五個步驟。首先,查看登陸用戶在授權節點Fabric CA裡的身份權限,是否生成證書允許用戶訪問區塊鏈。接著,選擇軟件認證的服務類型,可以是認證新軟件,可以是更新已有軟件知識產權的版本。軟件開發方填寫產權認證所需的軟件相關信息。如果軟件開發方選擇的是更新產權版本就會自動保留上一個版本的部分信息,包括軟件名,軟件描述等,用戶可以更改這些信息。然後,軟件開發方必須上傳軟件證書到IPFS文件存儲網絡,獲取IPFS根據文件內容生成的hash 地址。開發方可以根據情況選擇是否上傳軟件製品。完成上傳提交認證表單。其次,後端認證服務從LDAP獲取用戶公鑰,通過上傳證書返回的hash值從IPFS裡獲取證書文件,解析證書文件得到用戶私鑰加密的數字簽名。使用用戶公鑰對數字簽名進行RSA解密,對比解密後的hash 值和證書裡存的軟件hash值是否一致。如果不一致反饋給用戶出現了網絡攔截,有人試圖修改產權信息。最歡,將軟件相關的業務信息以XML文件的形式存到IPFS網絡,利用Leaf生成軟件產權id,作為該軟件的標識。將id、證書hash、用戶信息、以及業務信息hash 通過智能合約存儲到區塊鏈上。

3.5 數據上鍊服務

數據上鍊過程模型如圖3所示,在獲取到CA權限後,1.Fabric Client加入channel通道,區塊鏈服務發起交易提案。2. 交易提案發送給一系列背書節點(Endorser)。背書節點校驗通過後,運行相應的智能合約模擬交易執行並對狀態變化結果簽名。返回背書結果3.當獲得預定條件的背書結果後,區塊鏈服務通過Fabric Client向排序節點廣播交易。4.排序節點對未打包的交易進行排序生成區塊,廣播給記賬節點。5. 記賬節點檢查交易簽名,交易結構是否完整。校驗交易是否符合背書策略,執行區塊中的合法交易,更新賬本狀態。

基於區塊鏈的軟件知識產權認證系統的設計與實現

圖3 數據上鍊過程模型

3.6 軟件知識產權版本管理模塊

考慮到軟件具有一定使用週期,需要迭代更新的特性,隨著軟件迭代,軟 件知識產權也需要更新認證信息。對軟件知識產權的管理包括:管理軟件知識 產權所有版本變更,查看用戶所有的軟件產權,搜索特定的軟件產權等服務。

軟件知識產權版本更新:由於區塊鏈不提供更新的功能,系統將新狀態下的產權信息存儲到區塊鏈上來記錄產權的變更。

軟件產權信息查詢:根據查詢條件獲取用戶的已有軟件知識產權最新版本信息。產權歷史版本追溯:通過區塊鏈記錄軟件知識產權的所有歷史版本產權信息,可以準確追溯到每個歷史版本的變更信息。

3.7 區塊鏈賬本查詢服務

基於區塊鏈的軟件知識產權認證系統的設計與實現

圖4 區塊鏈賬本查詢服務流程圖

如圖4所示,從區塊鏈賬本獲取軟件知識產權數據要經過四個步驟。在從CA獲取到身份證書後,區塊鏈服務模塊通過Fabric Client發起交易提案,經過背書節點驗證並模擬執行智能合約返回結果。Fabric client從背書結果中直接獲取到查詢結果,區塊鏈服務通過數據映射將賬本數據轉換為系統內部軟件產權實體對象。然後版本管理服務以區塊鏈數據中的hash值為id查詢TiDB緩存,獲取鏈外存儲的產權實體業務信息,未查詢到緩存則通過hash去IPFS獲取文件並解析出軟件實體業務屬性,同時寫入到TiDB作為緩存。最終將完整的軟件知識產權信息返回。

4 總結與展望

本文實現了軟件知識產權認證系統,解決軟件知識產權認證過程中存在的存證、效率和信任問題。 涉及的技術有Hyperledger Fabric、IPFS星際文件系統、Vue 框架、Spring Boot框架等本系統目前已經部署在公司。結合阿里雲和騰訊雲上部署的共識節點,對系統進行功能測試與性能測試。測試結果表明利用區塊鏈技術實現知識產權認證和存證服務的可行性,可用性。本系統已經可以穩定上線運行,但聯盟鏈節點數量較少。系統將進一步邀 請更多相關軟件管理機構作為驗證者節點參與到聯盟鏈當中,並授權可信任的 軟件開發方作為參與者加入到聯盟鏈,提高聯盟鏈的穩定性、安全性和區塊鏈 賬本記錄在維權時的法律效力。

在業務方面,系統平臺將進一步應用到軟件眾包領域,實現對軟件產權分配和眾包協同開發。目前軟件產權的所屬方是參與節點以公司為單位授權的用戶,實際開發中,會出現越來越多眾包協同開發的情況。結合相關眾包技術,平臺將進一步實現軟件知識產權依據開發者貢獻進行產權分配,依靠區塊鏈技 術記錄各個開發方的產權佔比,通過智能合約實現產權變現後按自動分配,防 止眾包開發者的權益受到侵害。同時平臺業務廣度將向軟件產權交易變現方向延伸,促進認證的軟件產權在平臺實現快速變現,打造去中心化共同維護的一站式軟件知識產權服務平臺。

在性能方面,系統將使用更加高效的區塊鏈共識算法,來降低節點數量增長後共識過程的延遲。同時優化系統存儲策略和緩存策略,維持系統良好的可用性和可擴展性。


分享到:


相關文章: