零浮水印 Zero Watermarking 區塊鏈 去中心化

從特徵提取到NFT智慧合約 實作去中心版權自主控管平台

零浮水印技術結合區塊鏈 打造版權管理DApp

本文介紹零浮水印(Zero Watermarking)技術並實際進行操作,說明如何透過Ganache啟動本地以太坊測試鏈,使用Remix IDE撰寫Solidity智慧合約,再利用Web3.js建立前端使用者介面與智慧合約溝通,打造一個結合零浮水印與區塊鏈的去中心化版權管理應用程式(DApp)。

現今對數位圖片與數位藝術品的版權保護,多仰賴數位浮水印(Digital Watermarking)技術。傳統數位浮水印技術雖然可以用來做藝術品版權的保護,但在嵌入過程中不可避免地會改動原始圖片資料,進而影響作品的完整性。而零浮水印(Zero Watermarking)技術的出現,提供了一種嶄新的解決方案。其最大特色在於不須改動原始影像即可完成版權識別,使原始圖片資料得以完整保留。

然而,零浮水印技術仍存在保存浮水印與金鑰的問題,這些敏感資訊若無妥善保管,極易遭竄改或遺失。區塊鏈技術的引入,正好能彌補上述不足。透過其去中心化、不可竄改與可驗證的特性,可作為理想的數位版權資訊儲存機制。除此之外,非同質化代幣(Non-Fungible Token,NFT)技術也能讓數位作品於市場中自由流通,增加創作者收益與作品價值。

本文將說明一個結合零浮水印與區塊鏈的數位版權管理去中心化應用程式(DApp),實現無需第三方機構即可進行版權註冊、驗證與使用權轉移的完整流程,進一步保護與強化數位創作之權益。

背景知識介紹

在實際操作之前,先說明會使用到的相關技術。

零浮水印

在數位時代,經常聽到「數位浮水印」這個名詞,簡單來說,就是在圖片或影片中偷偷藏入一段識別資訊,好比作者簽名一樣,用來證明這是自己的作品。不過,這種技術通常會改動到圖片本身,即使肉眼看不出來,原始資料還是被動過。舉個例子,買家購買了一幅數位藝術品,即使使用不可見浮水印演算法進行浮水印嵌入,在浮水印嵌入過程也不可避免地會修改原始圖像資料,這將會對數位藝術品的完整性產生負面影響。

相較之下,零浮水印技術避免將浮水印直接嵌入到原始圖像中。它的最大特點是完全不動原始圖片,可透過圖1來介紹零浮水印的生成,首先會有原始圖片和作者自己的浮水印,零浮水印是透過提取圖片的特徵,從而得到二進位特徵圖片,接著將這個二進位特徵圖片與二進位浮水印結合(通常透過XOR),從而產生零浮水印圖片。日後如果有人要對某個數位藝術品進行版權驗證,只需要提取出這幅數位藝術品的特徵與系統儲存的零浮水印做XOR,即可還原浮水印,最後比對該浮水印是否為真,就可以驗證版權是否為正版的。

圖1  生成零浮水印示意圖。

經過上述的介紹,可以發現這項技術相比傳統數位浮水印更適合數位藝術品、數位圖片等相對注重完整性的應用。但相對地,零浮水印最為人詬病的點在於「怎麼保管生成出來的零浮水印和零浮水印演算法執行過程用到的金鑰?如何避免這些資料被竄改或遺失?」,而這正是區塊鏈技術的強項。

什麼是區塊鏈?不被竄改的資料帳本

現今多數的應用程式與軟體都是透過中心化資料庫來儲存資料並提供使用者服務,而區塊鏈是一種去中心化(Decentralized)的資料儲存技術,它與資料庫最大的差別就是不依賴單一的伺服器或機構來管理資料,而是透過網路中許多節點(也就是電腦)共同維護一份公開透明的帳本。帳本上的每筆紀錄都稱為一個「區塊」,這些區塊會依照時間戳順序串接起來,就像一條鎖鏈一樣,從而形成「區塊鏈」。

想像一下,你有一本記事本,每當完成一項工作,就寫上一筆紀錄。而這本記事本不是只有自己保管,而是全世界很多人都有一份一模一樣的副本,大家一起記帳、一起驗證。只要有人想偷偷改掉其中一筆紀錄,其他人的版本馬上就能發現「不對勁」,這就是區塊鏈(Blockchain)的基本概念。

最重要的是,每個區塊在加入時都要先驗證,一旦寫入就無法輕易更改,因為修改某個區塊會影響整條鏈,這樣的設計讓區塊鏈具備高度防竄改性與資料可信任性。

透過上述的介紹,可以了解到區塊鏈本質上就是一個去中心化的資料庫,並且它具有幾個重要特性:去中心化、不可竄改性、資料可信任性等。而這些特性,剛好能有效地解決零浮水印的缺點,將生成的零浮水印和執行過程產生的金鑰安全保存,防止資料遺失或遭到竄改。

什麼是以太坊?讓區塊鏈不只是用於加密貨幣

區塊鏈其最成功且最耳熟能詳的應用為比特幣,人們開始意識到,區塊鏈這種防竄改、去中心化的技術,不只於金融領域,或許可以應用在更多領域上。然而,比特幣的設計目的是作為一種加密貨幣,它的功能相對單一,只需記錄交易資訊。這時以太坊創辦人Vitalik Buterin提出了更進一步的想法:如果區塊鏈不只是交易紀錄,而是一個可以執行各種程式邏輯的平台呢?

因此,Vitalik於2013年發表了以太坊(Ethereum)白皮書,最大的創新就是加入智慧合約的概念,介紹一個能夠透過智慧合約支援各種去中心化應用程式(DApp)的以太坊區塊鏈平台,將區塊鏈應用擴展到金融領域之外。

智慧合約(Smart Contract)

簡單來說,智慧合約就是寫在區塊鏈上的程式,它可以自動執行合約條款,例如如果A完成某件事,就自動把報酬轉給A。智慧合約不需要第三方機構仲介,整個過程透明且不可篡改,大幅提升了信任與效率。

以太坊提供一個完整的平台,讓開發者可以使用一種叫做Solidity的程式語言,撰寫並部署自己的智慧合約到區塊鏈上。因此,在以太坊上可以開發出像是去中心化金融(DeFi)、NFT市場、遊戲、投票系統、供應鏈管理等等各式各樣的應用,讓區塊鏈技術真正進入日常生活的各個角落。

實際操作

圖2為系統架構圖,接下來將會介紹如何開發建置一個結合零浮水印與區塊鏈的版權管理去中心化應用程式,從如何啟動本地以太坊測試鏈開始,依序為智慧合約、如何部署智慧合約至本地以太坊測試鏈、如何讓前端使用者介面使用智慧合約功能、為什麼要使用IPFS儲存圖片,以及最後前端與後端零浮水印程式如何串接。

圖2  系統架構圖。

Start Ethereum Test Network(Ganache)

為了模擬智慧合約於區塊鏈上的實際運作環境,本文使用Ganache測試工具作為本地以太坊測試網路。首先至官方網站(https://archive.trufflesuite.com/ganache/)安裝Ganache。安裝完成後,啟動Ganache並點選〔QUICKSTART〕,便完成本地以太坊測試網路的啟動,如圖3所示。

圖3  Ganache開始畫面。

啟動後,Ganache會自動產生十組測試Address,請記住RPC SERVER,後續將用於與Remix IDE連接以部署智慧合約至本地以太坊測試網路。

Smart Contract

在以太坊上撰寫智慧合約時,安全性是一個非常重要的議題,因為智慧合約一旦部署到區塊鏈上之後,若發生錯誤將無法輕易修正。為此,簡要介紹OpenZeppelin,它是一個廣受信賴的開源框架,提供了經過社群驗證的智慧合約程式碼,協助開發者能更快速且安全地建立自己的應用程式。

OpenZeppelin提供許多常用的標準合約範本,例如ERC-20、ERC-721(NFT標準)等。開發者可以直接引用這些元件,減少從零撰寫程式碼的風險,並專注於開發自身應用的邏輯。

這裡將使用Solidity程式語言,實作一份基於ERC-721標準的智慧合約。該智慧合約依賴於OpenZeppelin提供的ERC-721範例合約,並在此基礎上擴充了版權管理相關的主要功能,包含版權資訊註冊、NFT鑄造、使用權轉移與查詢區塊鏈儲存資訊等功能。

ERC721標準為Ethereum上非同質化代幣(NFT)所採用的協議之一,適用於具有唯一性識別的數位資產,例如數位藝術品、證書等。

Deploy Smart Contract

接著,介紹智慧合約部署至本地以太坊測試網路流程。首先說明Remix IDE,Remix IDE是一個可以線上編輯Solidity程式碼並編譯和部署智慧合約的IDE。

只須造訪Remix IDE(https://remix.ethereum.org/)並打開編寫好的智慧合約程式碼,點選「Solidity Compiler」功能頁籤進行合約編譯,如圖4所示。編譯成功後,切換至左側的「Deploy & Run Transactions」頁籤,於「ENVIRONMENT」選項中選擇「Custom - External Http Provider」,並填入Ganache上的RPC SERVER位址(預設為http://127.0.0.1:7545),以完成與本地以太坊測試網路的連接,如圖5所示。

圖4  Remix IDE智慧合約編譯。
圖5  Remix IDE連接Ganache本地以太坊測試網路。

完成連接後,選擇欲部署的合約名稱並點選〔Deploy〕按鈕,即可將智慧合約部署至本地以太坊測試網路。

使用Web3.js串接智慧合約與使用者介面

智慧合約成功部署後,雖然可透過Remix IDE提供的Deployed Contracts區塊直接呼叫智慧合約中的各項函式(圖6),但此方式僅適用於開發與測試階段,並不適合一般使用者操作。因此,這裡使用Web3.js這個JavaScript函式庫,作為前端使用者介面與區塊鏈之間的橋樑,實現智慧合約功能的互動與調用。

圖6  智慧合約定義的函式功能。

Web3.js可透過RPC連線至本地以太坊測試網路(Ganache),並根據智慧合約部署後所產生的合約位址(Contract Address)與ABI(Application Binary Interface)進行合約實例化。合約實例化的過程中,Web3.js會建立一個可供操作的合約物件,讓前端應用能夠調用合約中所定義的公開函式。

以圖7所示為例,透過第9行contract.methods可以列出所有可用的合約方法,這些方法即為開發者在Solidity中撰寫的函式,即為圖6中的所有功能。透過JavaScript把Web3.js程式編寫好後,使用者就能夠透過前端介面操作,進行版權資訊的註冊、查詢NFT擁有者資訊、轉移使用權等操作,達到與智慧合約互動的目的。

圖7  Web3.js範例(輸出所有合約方法)。

使用IPFS進行數位畫作儲存

由於以太坊區塊鏈在儲存圖片時會消耗高額的Gas費用,並不適合直接將圖片儲存至鏈上,因此使用星際檔案系統(InterPlanetary File System,IPFS)作為圖片的去中心化儲存方案,來解決區塊鏈儲存成本問題。

為方便開發與測試,本系統使用Pinata提供的免費IPFS服務。造訪Pinata官方網站(https://pinata.cloud)註冊帳號並取得專屬的API Key與API Secret,如圖8所示,藉此存取其IPFS API接口。

圖8  Pinata新增API Key頁面。

使用者透過前端介面上傳圖片後,系統可以使用JavaScript或Python調用Pinata提供的IPFS API,將使用者上傳的圖片上傳至IPFS。成功上傳後,IPFS將回傳一組唯一的內容識別碼(Content Identifier,CID),該CID可作為該圖片的永久雜湊指標,將該CID透過智慧合約儲存於區塊鏈上,就能夠達成圖片的去中心化儲存。

如圖9所示,可透過取得的API Key和Secret調用Pinata IPFS API,並將上述上傳功能封裝成一個由Express.js實作的後端API,提供給前端使用者介面呼叫。

圖9  Pinata IPFS API範例程式。

前後端溝通

最後,本文的版權管理去中心化應用程式結合了零浮水印技術,通常零浮水印程式與侵權檢測程式都是透過Python程式語言撰寫,因此系統必須能於特定階段(例如版權註冊與驗證)動態執行上述的演算法。

在實作上,為了讓前端(JavaScript請求)能與後端Python模組進行即時資料交換,所以採用WebSocket通訊協定建立雙向連線。透過WebSocket,前端發出的請求(如註冊版權或進行侵權檢測)可即時傳送至後端,由對應的Python演算法進行處理。

舉例而言,當使用者從網頁端上傳作品並發出版權註冊請求時,系統會透過WebSocket將圖片和相關資料傳送給Python程式,進行零浮水印特徵提取與版權註冊操作(將相對應資料上傳至IPFS並透過智慧合約儲存至區塊鏈等等)。同理,在進行版權驗證或侵權檢測時,系統也會透過相同機制將資料傳送至後端,執行侵權檢測演算法,並回傳結果至前端顯示。

情境演練

身為數位藝術家的Rex創作了一幅數位畫作,希望將其版權註冊並上鏈保存。Rex打開版權管理DApp,透過使用者介面上傳作品圖片與作品基本資訊(圖10),系統會自動透過這些資訊,為Rex產生一組版權資訊(如零浮水印、版權浮水印)。接著,DApp將這份版權資訊存入區塊鏈,並鑄造一個對應的NFT作為該作品的唯一識別,完成作品的版權註冊。

圖10  版權註冊。

之後,一位買家Bob(錢包Address為0x88…)在DApp首頁發現Rex的作品(以Pepper為範例),並希望購買其使用權。Bob隨即透過DApp發起使用權轉移申請,Bob確認完他的錢包Address(0x88)和餘額是否足夠後,送出請求,系統會自動執行智慧合約,將對應的NFT使用權轉移到Bob的錢包Address(0x88),並在區塊鏈上記錄下此次的轉移事件。完成作品購買後,Bob想要驗證購買作品的版權歸屬,只須透過DApp內「我的藝術品」頁面點擊該作品,即可透過後端Python程式進行版權浮水印的提取。

驗證成功後,系統將跳轉至「版權驗證結果」頁面,如圖11網頁畫面所示。該頁面會顯示由後端零浮水印程式提取出的版權聲明QR Code。

圖11  版權驗證結果。

為了便於測試與展示,QR Code中的內容設計為簡單的版權聲明敘述,Bob可以透過讀取QR Code驗證版權。同時,系統會自動將此提取出的版權聲明QR Code圖片與原作者於版權註冊時所產生並儲存於IPFS的原始版權聲明QR Code進行相似度比對。

驗證結果會以相似度數值呈現,數值越接近1,表示越相似,代表該作品的版權資訊無誤。若相似度低於預設閾值,則視為驗證失敗,代表作品可能已遭竄改或非原創。

透過這樣的設計,整個版權管理流程完全在去中心化的架構下自動執行,無須依賴第三方機構,既確保了數位作品原始數據的完整性,也提升了版權資訊的可信度。

結語

在現今社會,數位產品如圖片、影片、音樂等數量逐年增加,隨之而來的盜用問題也層出不窮,對於數位版權的保護提出了更高的需求。透過文章的介紹,由淺入深,從介紹何為零浮水印與區塊鏈,並探討結合零浮水印技術與區塊鏈技術應用於數位圖片、藝術品版權保護管理的可能,最後實際建置一套簡單的版權管理去中心化應用程式(Dapp)。這樣的技術整合不僅提升了數位版權保護的效率與可信度,也預示著未來創作將逐步邁向更加開放、透明與自主的去中心化新時代。

<本文作者:社團法人台灣E化資安分析管理協會(ESAM, https://www.esam.io/)國立台北大學密碼編碼與計算理論實驗室創立於2009年,主持人為資訊工程學系特聘教授張仁俊,實驗室的研究領域除包含與資訊安全相關的密碼技術、編碼技術、計算理論外,也涵蓋車載資通訊安全、網路安全、數位影像處理與版權保護、醫學影像、數據分析等領域。>


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!