王懷營 曹三省
(中國傳媒大學媒體融合與傳播國家重點實驗室,北京 100024)
數字版權保護涉及的關鍵技術有加密技術、數字簽名技術、可信計算技術等。例如在版權追蹤溯源方面,主要是采用數字指紋技術[1]和數字水印技術[2]判斷內容是否為盜版,為內容提供商的盜版追溯提供技術支撐。國內外很多企業以及科研院所都已獲得了一批數字版權保護技術的核心專利,如國外的微軟、索尼、三星等,國內的華為、中興等公司以及清華大學和中國科學院等。
隨著媒體融合的進一步發展,盜版問題屢見不鮮,傳統版權保護方式已經很難解決當前的數字媒體內容保護問題,因此國內的許多研究人員也提出了關于數字媒體版權保護方面的研究。例如劉欣亮等人提出的面向開放互聯網的多媒體數字版權保護系統[3]、張婷提出的面向移動智能終端的多媒體版權保護系統的研究與設計[4]、余芳提出的移動端的多媒體版權保護系統研究與實現[5]等。上述的方案大多還是基于第三方機構對于數字版權內容進行授權和驗證,存在數據中心化管控的問題。并且融合媒體數字版權保護不能只關注加密和授權技術,而應該對媒體產品的整個發行過程進行保護,確保數字媒體內容在整個生命周期內得到合法使用。[6]
總體來說,數字版權保護技術還處于快速發展與不斷創新階段。隨著數字網絡技術的快速發展和應用、新興業態的不斷涌現,以及社會版權環境的不斷改善,數字版權保護技術將得到更多重視和更大發展。
區塊鏈技術帶來的去中心化技術熱潮引發了學術、產業界的高度關注[7],ITU、IETF、ISO等國際組織確立區塊鏈研究方向以探索技術標準化方向以及與應用的融合點,國內權威機構發布區塊鏈標準規范、發展狀況白皮書以指導區塊鏈技術發展和應用。區塊鏈的概念在2008 年就已經由中本聰首次提出,但在近幾年迎來了研究爆發期。2021年我國的區塊鏈行業專利申請數量達15985項,占全球申請總量的84%,位居第一。[8]目前區塊鏈技術正在進入3.0時代。區塊鏈的典型應用場景有金融服務、征信管理、版權保護、物流與供應鏈以及物聯網等領域。[9]在金融服務領域,國內的中國人民銀行早在2016年就對外發布了積極關注區塊鏈技術發展的消息,國外的許多國家,如美國、日本、加拿大、瑞典等均已經推出了以政府為主導的數字貨幣。在版權保護領域,中國搜索歷時4年自主研發區塊鏈技術,于2021年1月發布了“媒體融合鏈”區塊鏈版權平臺。[10]
區塊鏈是一種使用鏈結構和密碼算法進行分布式數據存儲的賬本技術。可以將區塊鏈看成是一種特殊的分布式數據庫,用于維護公共數據賬本。區塊鏈由一系列區塊組成,每個區塊包含一個區塊頭和一個區塊體。區塊頭用于鏈接前后區塊并且保證歷史數據的完整性,它記錄了前一區塊的Hash值、時間戳、隨機數、Merkle根等。根據比特幣挖礦算法,節點(礦工)檢驗交易的有效性,競猜隨機數來解決數學難題,成功挖礦的節點將交易打包加入區塊,并連接到區塊鏈上最新的區塊。前一區塊的Hash值使得當前區塊始終唯一地指向前一區塊,從而形成區塊鏈獨特的鏈式結構。區塊頭中的隨機數是礦工解決上述數學難題的解。其中Merkle根由所有交易數據的Hash值兩兩進行Hash計算后得出,能夠總結并快速歸納校驗區塊中的某個交易被篡改,并且需要相應地改變區塊頭中的Merkle根以保證區塊數據的完整性,再通過對區塊頭進行計算得到每個區塊的唯一Hash值來代表此區塊的獨一無二性。區塊體包含當前區塊的交易數量和每個交易特定的哈希值,它們通過Merkle樹的數據結構連接。區塊鏈結構如圖1所示。

圖1 區塊鏈結構示意圖
聯盟鏈是用于機構間的許可準入式區塊鏈,只針對某個特定群體的成員和有限的第三方,雖然非完全的“去中心化”,但在效率和成本優化上具有優勢[11],適用于構建媒體融合場景下的區塊鏈版權保護系統。
Fabric是一種聯盟鏈的分布式操作系統,只有獲得許可的用戶才能在授權的通道上查詢或調用交易,它為實現多用途分布式解決方案提供了一個安全、私有、靈活、可擴展的平臺。由于無許可區塊鏈對所有人完全開放,因此不利于保證所有參與者的隱私。與所有成員都可以參與的無許可區塊鏈機制不同,提供特定訪問機制的許可區塊鏈可以確保數據只在系統指定的參與者之間流動。[12]Hyperledger Fabric是目前最流行的許可區塊鏈平臺,它通過將系統劃分為不同的通道,保證只有同一通道的參與者可以查看通道的數據,而不在通道的參與者不能進入通道。Fabric使用即插即用的成員管理服務和共識服務運行,這些服務實現了可定制的智能合約的理念,以規范各方之間的交互。Hyperledger Fabric架構圖如圖2所示。

圖2 Hyperledger Fabric架構圖
密碼算法是保障信息安全的核心技術,區塊鏈技術的安全依賴于密碼安全。區塊鏈長期使用國際通用的密碼算法體系和相關標準,如SHA、RSA等。為從根本上擺脫對國外密碼技術和產品的過度依賴,國家密碼管理局制定了一系列密碼標準,包括SM1、SM2、SM3、SM4、SM7、SM9、ZUC 等。
在Hyperledger Fabric的交易過程中,每個階段都應用了密碼學算法。非對稱加密算法主要用于在交易過程中驗證節點的身份。為保證數據不被篡改,在數據簽名和發證過程中采用單向哈希算法對數據進行哈希處理。對稱加密算法在區塊鏈的通信和隱私數據保護中發揮著重要作用。
2019年4 月,國家廣播電視總局官網發布《縣級融媒體中心網絡安全規范》,該規范中的多項要求中指出在采用密碼相關技術時要支持國密算法,基于國密算法對內容數據進行數字簽名、驗簽,使其具備內容防篡改功能。從技術角度上來講,Hyperledger Fabric采用模塊化設計方案,有助于實現密碼模塊的國密算法轉換。
為了使版權保護技術適用于當前融合媒體的發展[13],滿足國家在數字版權保護等廣播影視重要領域開展國產密碼應用的要求,本文將基于國產密碼學標準,實現國密加解密、簽名驗簽、哈希算法,并將其集成到Fabric平臺,實現國密版Fabric。Hyperledger Fabric國密版支持主要體現在簽名算法采用SM2橢圓曲線公鑰密碼算法,雜湊算法采用SM3密碼雜湊算法,對稱加密算法采用SM4加解密算法。
3.2.1 Hyperledger Fabric底層密碼學套件
為實現Hyperledger Fabric的國密化改造,需要先對其底層密碼學套件進行分析,了解密碼服務在Fabric中的 加 密 機 制。BCCSP(Blockchain Cryptographic Service Provider,即區塊鏈密碼服務提供者)是Hyperledger Fabric的加密服務提供者,它能夠用來提供加解密、簽名校驗相關功能,并定義了系統所需的各種密碼算法。系統上層應用模塊中(如MSP、cryptogen、CA、Fabric-SDK-Go等)使用的密碼算法都只是對BCCSP中定義的密碼算法的調用。另外,不同的模塊也會根據需要來定義特定使用的密碼模塊。
從圖3中可以看出,BCCSP通過MSP(Membership Provider Service)向核心模塊以及客戶端SDK提供加密算法相關服務。MSP是基于數字證書的成員身份管理,通過調用BCCSP,即證書服務,來完成簽名驗簽等功能。Fabric提供國密算法服務的同時需要使用基于國密的數字證書服務,以便使用數字證書時能夠驗證國密的數字簽名,從而辨別用戶身份。BCCSP模塊對上層抽象出了區塊鏈密碼服務,包含非對稱加密、對稱加密、數字簽名算法、哈希計算,以及各種算法對于密鑰的生成和導入。不同的加密算法需要實現BCCSP中定義的接口,以向上層提供加密服務。在BCCSP中實現了一種對稱算法(AES)和兩種公鑰算法(RSA和ECDSA)。使用AES加密明文時,pkcs7用于填充明文,然后使用CBC模式加密明文。解密時用CBC解密,pkcs7用于恢復明文。RSA和ECDSA的密鑰結構和簽名加密算法分別由crypto/rsa和crypto/ecdsa實現。通過BCCSP可以實現Fabric中的可插拔密碼算法模塊,BCCSP密碼服務套件是改造Hyperledger Fabric底層密碼套件的突破點。

圖3 BCCSP結構
3.2.2 架構設計
由上一節中對Fabric底層密碼學套件的分析,可以得出Fabric國密化改造會涉及到的模塊如圖4所示。

圖4 Fabric國密改造涉及的主要模塊
其中上層調用模塊主要是由MSP等模塊為Fabric提供成員加密服務,它的實現依賴于BCCSP模塊和X509模塊。
BCCSP模塊主要實現了四套接口,分別是BCCSP接口、opts接口、key接口以及keystore接口。其中以BCCSP接口為主,它包含了加解密、簽名驗簽等主要方法。其他三套接口為輔,它們主要包含用于密鑰管理和存儲的一些方法。BCCSP模塊有兩套實現方式,一套是標準加密,它直接依賴于GoSDK原生的加密庫,另一套是國密實現,需要依賴于第三方的提供的底層加密庫,一般分為硬實現和軟實現兩種方式,其中硬實現就是加密機,軟實現采用Go語言實現。由于實驗條件的限制,本文選擇軟實現的方式實現國密加密庫。由于Fabric定義的BCCSP接口并不直接兼容于第三方提供的加密接口,因此需要做一個國密適配器,主要用于適配上層的BCCSP模塊和底層的第三方加密庫,這個國密適配器主要包含了SM2、SM3以及SM4三種國密算法的適配。
X509模塊主要提供的是有關證書的一系列方法。Fabric默認是使用標準X509的,底層直接調用的是Go SDK原生的加密庫。為了讓X509支持國密的同時也兼容標準加密,可以把證書相關的接口抽象出來定義為X509接口,然后底層采用標準加密和國密。標準加密依舊是直接調用原生Go SDK標準加密庫,而國密則是調用第三方的國密庫,以此來實現國密算法的可插拔式。啟動區塊鏈網絡時可根據實際需求通過在Orderer、Peer和CLI的配置文件中的配置項來指定使用國密或標準加密算法。
3.3.1 Hyperledger Fabric底層密碼學套件
本次Fabric國密化改造中所涉及到的加密算法主要是ECDSA簽名算法、SHA256雜湊算法以及AES對稱加密算法,它們是由Golang底層的標準庫crypto包實現的。參考Fabric原有的加密算法的實現,將國密算法在Fabric中的具體實現分為以下6個步驟:
1)在crypto模塊中定義SM2公私鑰的基礎類型,即SM2公鑰和私鑰的構造函數。將公鑰定義為 PublicKey,將私鑰定義為 PrivateKey。
2)實現國密適配器gmsm分為三個接口的實現,分別是:SM2接口、SM3接口、SM4接口。其中SM2接口主要包含密鑰生成、簽名、簽名驗證、加密、解密等方法,SM3接口主要包含計算數據摘要等方法,SM4接口主要包含用SM4對稱密鑰加解密等方法。
3)在BCCSP模塊實現國密工廠類型GMFactory,使用創建出的國密工廠類型調用initBCCSP方法初始化BCCSP對象。
4)在x509模塊中定義證書類型結構體。本模塊涉及兩套實現,分別是國密證書庫gmX509和標準證書庫standX509。gmX509通過對第三方x509庫進行封裝實現,standX509通過對GoSDK原生的x509庫進行封裝實現。
5)完成Fabric源碼中密碼函數包的SM2、SM3、SM4算法替換后,將這些重新設計的密碼函數包封裝在國密插件中,再將國密插件嵌入到BCCSP的底層實現中。然后改變各個模塊中密碼算法相關部分的調用方式,使這些調用指向BCCSP模塊中的國密插件提供的國密接口,從而實現各個上層應用對國密算法的調用支持。
6)如果使用國密算法,需要針對參數(比如gmsm)加載對應的國密插件,調用 InitGMPlugin方法,初始化SM2、SM3和SM4三個結構體,否則不會加載國密插件,默認指定為非國密。
3.3.1 擴展BCCSP模塊
前文已經對相應的國密算法進行了實現,本小節將對BCCSP模塊進行國密擴展,添加國密插件。
BCCSP在Fabric中用來提供相關的密碼標準及其實現。BCCSP模塊包含一些重要的接口,其中涉及到密鑰操作、哈希散列、簽名驗簽、加密解密等一些關鍵操作。在該模塊中,BCCSP.go所定義的BCCSP接口需要借助前面實現的國密適配器中提供的國密算法相關接口來實現相應的接口功能。
BCCSP接口中主要包含以下方法,如表1所示。

表1 基于國密改造的BCCSP接口方法實現
本系統主要為媒體行業的融合媒體數字版權保護場景提供解決方案,數字版權作品類型包括文本、視頻、音頻、圖片,應用場景,如圖5所示。本系統的服務對象主要有原創機構、企業自媒體、原創媒體以及個人創作者。原創機構是指報社、雜志社、原創圖片網站等;原創媒體是指文章作者、原創自媒體、攝影師、插畫師等原創個體;企業自媒體是指微信、微博、頭條號等原創運營者以及企業賬號等運營者。

圖5 基于區塊鏈的融合媒體數字版權保護系統應用場景
系統設計實現的主要目的是,充分利用區塊鏈的優良特性,為融合媒體數字版權創建一個安全可信的計算執行環境。[14]同時基于國密版Fabric聯盟鏈作為本系統的區塊鏈服務層,構建一個集版權存證、交易、查詢溯源為一體的系統,為融合媒體數字版權交易提供一個弱中心、去第三方、透明公開的安全可信平臺。本系統基于經過國密改造的Fabric實現,使得版權保護系統滿足國家在數字版權保護領域開展國產密碼應用的要求。
本系統利用Hyperledger Fabric開源框架來搭建聯盟鏈網絡。該網絡包含兩個組織,每個組織都包含相關組件。網絡節點架構示意圖如圖6所示。

圖6 網絡節點架構示意圖
在本系統的鏈碼設計中,抽象出以下功能函數,實現區塊鏈環境下融合媒體數字作品的版權保護功能,以滿足版權存證和溯源的需求。本文在鏈碼中設計的主要功能函數如表2所示。

表2 鏈碼主要功能函數設計
以上函數中,最核心也是最復雜的應該是媒體作品的版權交易,版權交易函數偽代碼如下:
workExchange(ownerId,DigitalrightId,currentOwnerId){
newOwner=currentOwnerId; // 獲取版權轉讓人
oldOwner=owneId; // 獲取版權被轉讓人
deleteoldOwnwe.list(); // 更新轉讓方版權列表
changeOwnerOfWork.Owner()=newOwner; // 媒體作品版權轉讓
updatenewOwner.list(); // 更新被轉讓人版權列表
updateDigitalrightHistory(); // 更新版權轉讓歷史記錄
}
通過系統各節點相應鏈碼的shim API中的函數方法來獲取或寫入賬本數據。本系統的鏈碼由Go語言編寫。在鏈碼實現之前需要將賬本數據映射為編程語言數據結構,以實現對數據對象的處理。以媒體版權作品對象為例,定義媒體版權作品對象為:
type Digitalright struct {
Name string `json:”name”` // 媒體版權作品名稱
Id string `json:”id”` // 媒體版權作品編號
Type string `json:”type”` // 媒體版權作品類型
Time string ‘json:”time”’ // 媒體版權生成時間
Metadata string `json:”metadata”` // 媒體版權hash值
}
本系統選擇Hyperledger Fabric聯盟鏈作為實施平臺,初步實現了“版權登記”“版權信息查詢”“版權轉讓”“版權交易記錄查詢”等功能,基本滿足了融合媒體版權保護系統功能需求。其中系統版權登記界面效果如圖7所示:

圖7 版權登記界面
區塊鏈因其不可篡改、可追溯、去中心組織化的特性,可以被應用到版權保護領域之中,為媒體資源的版權保護提供基礎技術支持,從而解決傳統版權保護方式存在的安全性差、交易流程復雜、成本高等問題。通過實現對Fabric支持國密算法的改造,滿足當前對基于區塊鏈的融合媒體數字版權保護技術的要求。另外,侵權行為的實時檢測也是版權保護研究的一個重要環節,這一環節目前無法只使用區塊鏈技術自身來實現,可以通過引入大數據分析、人工智能、網絡爬蟲等其他計算機技術,實現對大部分盜版行為頻繁發生的網站甚至整個互聯網范圍的實時版權監測,從而更好地保護版權。