• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于區(qū)塊鏈的數(shù)字圖像批量確權(quán)與公平交易方法*

      2022-11-14 01:49:26張文博李海羽張文政
      密碼學(xué)報(bào) 2022年5期
      關(guān)鍵詞:提供者數(shù)字圖像合約

      張文博, 王 濤,2,, 楊 波, 李海羽, 張文政

      1. 陜西師范大學(xué) 計(jì)算機(jī)科學(xué)學(xué)院, 西安 710119

      2. 綜合業(yè)務(wù)網(wǎng)理論及關(guān)鍵技術(shù)國家重點(diǎn)實(shí)驗(yàn)室, 西安 710071

      3. 保密通信重點(diǎn)實(shí)驗(yàn)室, 成都 610041

      1 引言

      數(shù)字圖像是指在計(jì)算機(jī)中以數(shù)字形式表示的圖像. 相比于傳統(tǒng)圖像, 經(jīng)過數(shù)字化處理后的圖像更加易于創(chuàng)作、存儲(chǔ)、交易和共享[1]. 然而, 數(shù)字圖像自身屬性決定了對(duì)其編輯和篡改比傳統(tǒng)的非數(shù)字圖像更加容易, 且不會(huì)留下明顯的痕跡[2]. 惡意的個(gè)人或團(tuán)體可以肆意地對(duì)數(shù)字圖像進(jìn)行非法傳播、使用和篡改,嚴(yán)重?fù)p害產(chǎn)權(quán)方的利益, 阻礙了數(shù)字圖像的交易與共享[3]. 因此, 數(shù)字圖像的確權(quán)和產(chǎn)權(quán)保護(hù)尤為重要.

      數(shù)據(jù)確權(quán)是指確定數(shù)據(jù)的權(quán)利人, 即誰擁有對(duì)數(shù)據(jù)的所有權(quán)、占有權(quán)、使用權(quán)、受益權(quán), 以及對(duì)個(gè)人隱私權(quán)負(fù)有保護(hù)責(zé)任等, 其關(guān)鍵在確定數(shù)據(jù)的持有人, 包括數(shù)據(jù)的原始產(chǎn)生者、數(shù)據(jù)交易后的擁有者兩方面[4]. 近年來, 隨著大數(shù)據(jù)的飛速發(fā)展與廣泛應(yīng)用, 數(shù)據(jù)確權(quán)的問題不斷受到學(xué)術(shù)界的重視.

      傳統(tǒng)數(shù)據(jù)確權(quán)[5–7]采用中心化模式或引入第三方機(jī)構(gòu)來實(shí)現(xiàn), 確權(quán)結(jié)果受主觀影響、評(píng)審材料容易遭受破壞, 影響確權(quán)的公平性. 在圖像確權(quán)方面, 常用的方法是在圖像中嵌入數(shù)字水印, 當(dāng)需要鑒權(quán)時(shí), 將水印從圖像中提取出來進(jìn)行驗(yàn)證. 但是在批量圖像確權(quán)問題中, 這種方法需要對(duì)每張圖像分別進(jìn)行水印提取和驗(yàn)證操作, 確權(quán)效率較低.

      利用區(qū)塊鏈去中心化、去信任化和不可篡改等特點(diǎn), 可以解決傳統(tǒng)數(shù)據(jù)確權(quán)中的公平性問題, 實(shí)現(xiàn)確權(quán)的公正公開. 王海龍等人提出了基于區(qū)塊鏈的公開、可信、不可篡改的大數(shù)據(jù)確權(quán)方案, 該方案將大數(shù)據(jù)分塊, 對(duì)每個(gè)數(shù)據(jù)塊分別取認(rèn)證器并將所有認(rèn)證器聚合, 通過驗(yàn)證聚合認(rèn)證器來對(duì)整個(gè)大數(shù)據(jù)進(jìn)行驗(yàn)證,該方案可以實(shí)現(xiàn)對(duì)數(shù)據(jù)的高效驗(yàn)證, 但是并未將認(rèn)證器嵌入到數(shù)據(jù)中去, 因此不能直接用于數(shù)字圖像侵權(quán)證明, 且該方案引入了第三方審計(jì)中心, 此外, 該方案沒有涉及到數(shù)據(jù)的公平交易過程[8]. 文獻(xiàn)[9—11] 研究了基于區(qū)塊鏈的數(shù)據(jù)溯源問題. Gong 等人根據(jù)區(qū)塊鏈的可追溯性和不可篡改性, 提出了個(gè)人健康數(shù)據(jù)來源驗(yàn)證模型, 并利用智能合約保障數(shù)據(jù)確權(quán)[9]; 喬蕊等人通過記錄網(wǎng)絡(luò)動(dòng)態(tài)數(shù)據(jù)流轉(zhuǎn)的全生命周期, 對(duì)動(dòng)態(tài)數(shù)據(jù)進(jìn)行記錄、追溯和確權(quán), 能夠有效防止對(duì)物聯(lián)網(wǎng)動(dòng)態(tài)數(shù)據(jù)的非法攻擊[10]. Tian 等人提出的基于區(qū)塊鏈的安全數(shù)字證據(jù)框架(Block-DEF) , 采用松耦合結(jié)構(gòu), 將證據(jù)和其它信息分別維護(hù), 很好地平衡了隱私性和可追溯性[11]. 但這些研究均未涉及數(shù)據(jù)的版權(quán)驗(yàn)證, 不能用于數(shù)字圖像批量高效確權(quán), 且沒有研究數(shù)據(jù)的公平交易問題. 文獻(xiàn)[12—14] 研究了基于區(qū)塊鏈的版權(quán)保護(hù)問題. 李莉等人搭建了基于聯(lián)盟鏈的數(shù)字版權(quán)交易系統(tǒng), 實(shí)現(xiàn)了版權(quán)注冊(cè)和交易[12]; Ouyang 等人將區(qū)塊鏈應(yīng)用于版權(quán)管理, 以解決傳統(tǒng)版權(quán)管理平臺(tái)存在的安全性差、確權(quán)難、交易程序復(fù)雜等問題[13]; 劉嘉琪等人設(shè)計(jì)了“區(qū)塊鏈+ 音樂指紋”的音頻版權(quán)存證模型, 構(gòu)造音樂作品的發(fā)布證明, 并發(fā)送給區(qū)塊鏈進(jìn)行存證[14]. 但這些研究重點(diǎn)在于搭建一個(gè)版權(quán)登記、存證和交易的平臺(tái), 而不能實(shí)現(xiàn)對(duì)批量圖像進(jìn)行侵權(quán)證明.

      針對(duì)數(shù)字圖像確權(quán)難、確權(quán)效率低等問題, 本文基于數(shù)字水印、線性同態(tài)簽名和區(qū)塊鏈技術(shù), 提出了一種數(shù)字圖像批量確權(quán)與公平交易方法, 用來實(shí)現(xiàn)數(shù)字圖像的公平交易, 解決非授權(quán)用戶侵權(quán)使用數(shù)字圖像的問題. 該方法基于概率性審計(jì)算法, 只需要一次驗(yàn)證操作, 就可以高效快速對(duì)批量數(shù)字圖像確權(quán), 并且確保交易過程的公平可信. 表1 對(duì)比了本文提出的確權(quán)方案和現(xiàn)有方案在數(shù)字圖像批量確權(quán)和公平交易方面的性能對(duì)比.

      表1 方案性能對(duì)比Table 1 Performance comparisons between schemes

      本文的主要貢獻(xiàn)如下:

      (1) 提出了一種基于區(qū)塊鏈的數(shù)字圖像確權(quán)方案, 可以在不引入評(píng)審中心或其他第三方機(jī)構(gòu)的情況下實(shí)現(xiàn)數(shù)字圖像的批量、高效確權(quán), 方案被部署在區(qū)塊鏈公有鏈上, 保障了確權(quán)過程和交易過程的公開可審計(jì)性和可追溯性. 利用線性同態(tài)簽名方案為授權(quán)圖像生成簽名, 并將簽名以數(shù)字水印形式插入圖像. 在底層數(shù)字水印方案抗毀的假設(shè)下, 本文方案可以保護(hù)數(shù)字圖像不被侵權(quán)使用、內(nèi)容完整性不受破壞, 同時(shí)在確權(quán)階段可以提供高效的批量確權(quán)審計(jì).

      (2) 數(shù)字圖像提供者和使用者通過智能合約實(shí)現(xiàn)公平交易. 提供者和使用者首先達(dá)成交易約定, 然后提供者將授權(quán)信息嵌入數(shù)字圖像并基于智能合約執(zhí)行交易, 智能合約確保交易的公平性.

      (3) 針對(duì)熱點(diǎn)圖像授權(quán)問題, 方案支持提供者對(duì)多個(gè)使用者進(jìn)行高效授權(quán). 熱點(diǎn)圖像授權(quán)問題是指數(shù)字圖像提供者將同一批較為熱門的圖像分享給多個(gè)使用者. 在本文的方案中, 提供者將多個(gè)使用者的身份信息進(jìn)行拼接, 作為授權(quán)信息的一部分, 給多個(gè)使用者發(fā)送相同的授權(quán)信息, 使用相同的授權(quán)信息和簽名公私鑰對(duì)圖像進(jìn)行統(tǒng)一簽名. 不同的使用者調(diào)用同一個(gè)合約進(jìn)行交易和授權(quán).

      (4) 如果有未授權(quán)用戶侵權(quán)使用數(shù)字圖像, 或?qū)嵤┝巳魏涡问降谋I版行為, 基于本文的方案可以通過概率性檢查算法執(zhí)行相應(yīng)的挑戰(zhàn)-驗(yàn)證協(xié)議,來證明其侵權(quán)行為,從而對(duì)數(shù)字圖像的版權(quán)提供保障.

      (5) 通過實(shí)驗(yàn)對(duì)方案中同態(tài)簽名生成與驗(yàn)證、水印插入與提取和智能合約部署與調(diào)用三個(gè)關(guān)鍵技術(shù)模塊進(jìn)行了測試, 并與單一圖片確權(quán)方案在驗(yàn)證操作上的時(shí)間開銷進(jìn)行了對(duì)比. 實(shí)驗(yàn)結(jié)果表明, 本文的方案在計(jì)算開銷、智能合約開銷方面是高效的.

      2 基礎(chǔ)知識(shí)

      2.1 數(shù)字水印

      數(shù)字水印是一種隱藏信息技術(shù), 它將具有特定意義的標(biāo)識(shí)信息隱藏在數(shù)據(jù)載體中, 以達(dá)到保護(hù)數(shù)字產(chǎn)品版權(quán)、證明內(nèi)容真實(shí)性和驗(yàn)證數(shù)據(jù)完整性等目的[15]. 數(shù)字水印有各種不同的分類標(biāo)準(zhǔn). 按照可見性來分類, 可分為可見水印和不可見水印; 按照抗攻擊性來分類, 可分為魯棒水印、易碎水印和半易碎水印; 從來源來分, 可分為獨(dú)立于圖像的水印和圖像自適應(yīng)的水印[16]. 當(dāng)前, 數(shù)字水印被廣泛應(yīng)用于版權(quán)保護(hù)、數(shù)字指紋和拷貝控制等多個(gè)方面[17].

      如圖1 所示, 數(shù)字水印系統(tǒng)包含插入水印和提取水印兩個(gè)算法:

      (1) Insert(w,X)→Xw, 即水印插入算法, 輸入水印w和待插入水印的原始數(shù)據(jù)X, 輸出插入水印后的數(shù)據(jù)Xw.

      (2) Extract(Xw)→w′, 水印提取模塊, 接收已插入水印的數(shù)據(jù)Xw, 從中提取出水印w′, 在算法正確的情況下,w′應(yīng)該和w相同, 或能夠通過正確性驗(yàn)證.

      上述過程可以用圖1 來描述:

      圖1 數(shù)字水印系統(tǒng)Figure 1 Watermarking system

      目前基于數(shù)字水印的認(rèn)證技術(shù)有很多, 例如, Yeung 和Minzter 提出了一種對(duì)高質(zhì)量彩色和灰度圖像的不可見水印方案, 可以實(shí)現(xiàn)精確認(rèn)證, 并把篡改定位精確到一個(gè)像素[18]. 劉瑞禎等人提出了一種基于奇異值分解(SVD) 的數(shù)字水印方法, 由于SVD 的良好特性, 這種水印方法具有較高的魯棒性[19]. Wong等人提出了一種基于最低有效位的加密水印認(rèn)證方案, 可以檢測圖像的任何修改, 并指出被修改的具體位置[20].

      2.2 同態(tài)簽名

      數(shù)字簽名是一段由簽名者產(chǎn)生且其他人無法偽造的數(shù)字串. 數(shù)字簽名使用公鑰加密體制來實(shí)現(xiàn), 是非對(duì)稱密鑰加密技術(shù)與數(shù)字摘要技術(shù)的應(yīng)用. 一個(gè)數(shù)字簽名系統(tǒng)通常具有簽名和驗(yàn)證兩種算法.

      同態(tài)簽名是數(shù)字簽名技術(shù)中的一種, 最早由Johnson 提出[21]. 根據(jù)同態(tài)簽名理論, 用戶使用私鑰sk對(duì)n個(gè)消息進(jìn)行簽名{m}ni=1, 得到簽名集合{σ}ni=1, 映射f:Mn →M為從{m1,m2,··· ,mn}到m的映射, 同態(tài)簽名的性質(zhì)允許在不知道sk 的情況下計(jì)算出f(m1,m2,··· ,mn) 的簽名[22]. 當(dāng)f為一個(gè)線性函數(shù)時(shí), 即為線性同態(tài)簽名方案.

      令Fq為有域域,FNq為n維消息向量空間, 則一個(gè)線性同態(tài)簽名方案定義為一個(gè)包含四個(gè)算法的元組(Setup, Sign, Combine, Verify)[23]:

      安全性: 線性同態(tài)簽名是安全的, 意味著不存在敵手A能在多項(xiàng)式時(shí)間內(nèi)以不可忽略的優(yōu)勢贏得以下游戲.

      (1) Setup. 挑戰(zhàn)者生成參數(shù)(p,PK,SK), 并將p和PK 發(fā)送給敵手.

      (2) Queries. 敵手選擇消息集合(v1,v2,··· ,vm)∈V并發(fā)送給挑戰(zhàn)者, 挑戰(zhàn)者從標(biāo)識(shí)空間隨機(jī)選擇idi并計(jì)算對(duì)應(yīng)的簽名(σ1,σ2,··· ,σm), 最后將(σ1,σ2,··· ,σm) 發(fā)送給敵手.

      (3) Output. 敵手輸出(id*,v*,σ*),v*∈FNq. 敵手獲勝有兩種情況: ①給定v*/∈V, 能夠產(chǎn)生可以通過驗(yàn)證的簽名σ*; ②給定V上簽名σ*, 能夠生成v*/∈V使得Verify(PK,id,v*,σ*)=1.

      2.3 區(qū)塊鏈

      區(qū)塊鏈?zhǔn)潜忍貛诺牡讓蛹夹g(shù)[24], 它作為分布式賬本用來公開記錄比特幣的交易信息, 每個(gè)區(qū)塊都存儲(chǔ)了一部分交易, 這些區(qū)塊依次鏈接構(gòu)成一條區(qū)塊鏈. 由于其具有去中心化、去信任化、不可篡改等特點(diǎn),被廣泛運(yùn)用于金融、法律、新聞等各個(gè)領(lǐng)域. 隨著區(qū)塊鏈技術(shù)的不斷完善, 已經(jīng)發(fā)展出了以以太坊為代表的圖靈完備可編程區(qū)塊鏈.

      2.4 智能合約

      智能合約的概念最初由密碼學(xué)家Nick Szabo 提出的, 他認(rèn)為隨著技術(shù)的發(fā)展, 計(jì)算機(jī)程序終有一天能夠處理一切合約事務(wù)[25]. 區(qū)塊鏈技術(shù)的出現(xiàn)將智能合約從構(gòu)想變?yōu)楝F(xiàn)實(shí), 2013 年Vitalik Buterin 發(fā)布了以太坊白皮書, 為智能合約提供了平臺(tái). 通俗來講, 智能合約是一段觸發(fā)特定條約后能夠自動(dòng)執(zhí)行的計(jì)算機(jī)代碼, 它被部署在區(qū)塊鏈上, 具有以下特性:

      (1) 公開性. 智能合約本身和其執(zhí)行過程都是向所有節(jié)點(diǎn)公開的, 使用戶能夠進(jìn)行監(jiān)督;

      (2) 永久性. 部署在區(qū)塊鏈上的智能合約被所有區(qū)塊鏈節(jié)點(diǎn)共同維護(hù), 理論上可以永久運(yùn)行下去;

      (3) 不可篡改性. 智能合約一經(jīng)發(fā)布, 任何人通過任何方式都無法對(duì)其更改, 可以保證交易的公平公正.

      2.5 Merkle 哈希樹

      Merkle 哈希樹是一種二叉樹, 它基于單向密碼哈希函數(shù)構(gòu)造, 葉子節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù)塊的哈希值, 其內(nèi)部節(jié)點(diǎn)都是孩子節(jié)點(diǎn)聯(lián)結(jié)后的哈希[26]. 每個(gè)葉節(jié)點(diǎn)的內(nèi)容和位置都可以通過其驗(yàn)證路徑信息進(jìn)行驗(yàn)證,且計(jì)算成本很低[27]. 由于Merkle 哈希樹可以實(shí)現(xiàn)快速高效數(shù)據(jù)驗(yàn)證, 所以常被用于驗(yàn)證大型數(shù)據(jù)內(nèi)容.圖2 給出了Merkle 哈希樹的具體結(jié)構(gòu), 可以看出每個(gè)節(jié)點(diǎn)的值都是由其左右孩子節(jié)點(diǎn)的值聯(lián)結(jié)并計(jì)算哈希得到的. 例如, H12=Hash(H1||H2).

      圖2 Merkle 哈希樹結(jié)構(gòu)Figure 2 Structure of Merkle Hash tree

      Merkle 哈希樹的構(gòu)造過程如下:

      (1) Merkle 哈希樹最底層是數(shù)據(jù)塊, 為各數(shù)據(jù)塊計(jì)算對(duì)應(yīng)的Hash 值, 作為Merkle 樹底層葉子節(jié)點(diǎn);

      (2) 擴(kuò)展上層樹結(jié)構(gòu)時(shí), 將相鄰的兩個(gè)Hash 值合并成一個(gè)字符串, 計(jì)算該字符串的Hash 值, 若最底層的Hash 總數(shù)為奇數(shù), 則被余下的那個(gè)節(jié)點(diǎn)單獨(dú)做Hash 運(yùn)算;

      (3) 每一層都重復(fù)過程(2),從底層到上層不斷擴(kuò)充,直到新的一層只有一個(gè)節(jié)點(diǎn),即為根節(jié)點(diǎn)Merkle Root, 形成的樹就是Merkle 哈希樹.

      3 方案設(shè)計(jì)

      3.1 方案概述

      3.1.1 系統(tǒng)模型如圖3 所示, 系統(tǒng)分為三個(gè)層次, 用戶層、智能合約層和區(qū)塊鏈層.

      圖3 系統(tǒng)模型Figure 3 System model

      用戶層: 由提供者和使用者組成. 提供者生產(chǎn)數(shù)字圖像, 擁有數(shù)字圖像版權(quán); 使用者分為授權(quán)使用者和非授權(quán)使用者, 授權(quán)使用者通過向數(shù)字圖像提供者支付一定費(fèi)用, 來獲得數(shù)字圖像使用權(quán), 非授權(quán)使用者非法使用未授權(quán)給他們的圖像.

      智能合約層: 由公平交易合約和挑戰(zhàn)驗(yàn)證合約組成. 公平交易合約用于提供者和使用者對(duì)數(shù)字圖像進(jìn)行交易和授權(quán); 挑戰(zhàn)驗(yàn)證合約在發(fā)生版權(quán)糾紛時(shí), 驗(yàn)證是否存在對(duì)圖像侵權(quán)使用的行為.

      區(qū)塊鏈層: 智能合約部署在區(qū)塊鏈公鏈上.

      如圖4 所示, 本文將方案分為了四個(gè)階段.

      (1) 約定達(dá)成階段: ①提供者和使用者約定好交易價(jià)格; ②使用者將其身份信息(如以太坊賬戶地址)發(fā)送給提供者, 提供者生成授權(quán)信息.

      (2) 簽名生成和水印插入階段: ①采用Boneh 等人提出的同態(tài)簽名方案對(duì)數(shù)字圖像和上述信息進(jìn)行簽名[23]; ②再將每個(gè)圖片對(duì)應(yīng)的簽名作為數(shù)字水印插入該圖片, 該過程由提供者在本地進(jìn)行.

      (3) 交易和授權(quán)階段: 提供者和使用者通過智能合約進(jìn)行交易和授權(quán). ①提供者對(duì)已生成的數(shù)字圖像簽名、Merkle 樹根哈希值、授權(quán)信息和數(shù)量等信息進(jìn)行簽名, 將得到的簽名和上述信息一并發(fā)送給智能合約, 同時(shí)設(shè)定交易價(jià)格, 提交押金; ②智能合約使用提供者的公鑰對(duì)簽名進(jìn)行驗(yàn)證; ③如果驗(yàn)證通過, 使用者支付費(fèi)用; ④智能合約對(duì)使用者授權(quán); 否則扣除提供者押金, 交易被終止. 上述數(shù)字圖像確權(quán)和交易授權(quán)的過程及相關(guān)數(shù)據(jù)被保存在存儲(chǔ)空間, 可以被公開查驗(yàn).

      (4) 挑戰(zhàn)-驗(yàn)證階段: 經(jīng)過授權(quán)的使用者可以依照約定使用數(shù)字圖像. 如果出現(xiàn)未經(jīng)授權(quán)的使用者對(duì)數(shù)字圖像進(jìn)行侵權(quán)使用, 本方案采用挑戰(zhàn)-驗(yàn)證協(xié)議, 基于概率性檢查算法來驗(yàn)證其侵權(quán)行為. 如圖4 所示, 智能合約對(duì)使用者發(fā)起挑戰(zhàn). ①智能合約從數(shù)字圖像索引中隨機(jī)抽取若干圖像, 并為每個(gè)索引選擇一個(gè)系數(shù), 將挑戰(zhàn)集合發(fā)送給使用者; ②使用者從數(shù)字圖像中提取水印; ③按照指定算法將水印聚合; ④將聚合水印作為證據(jù)返回; ⑤智能合約對(duì)證據(jù)進(jìn)行驗(yàn)證; ⑥公開驗(yàn)證結(jié)果.

      圖4 方案的四個(gè)階段Figure 4 Four stages of scheme

      3.2 具體方案

      3.2.1 約定達(dá)成階段

      在該階段, 提供者和使用者達(dá)成交易約定, 確定交易金額、涉及數(shù)據(jù)權(quán)利和時(shí)間戳等信息. 約定達(dá)成可以通過交易平臺(tái)實(shí)現(xiàn)或者交易雙方在線下實(shí)現(xiàn), 具體實(shí)現(xiàn)手段跟本論文研究的重點(diǎn)不相關(guān). 提供者將數(shù)據(jù)價(jià)格value 發(fā)送給使用者, 使用者將其以太坊地址addru發(fā)送給提供者. 如圖5 所示, 提供者使用自己的以太坊地址作為身份信息, 將使用者以太坊地址作為使用者身份信息, 與時(shí)間戳和數(shù)字圖像標(biāo)識(shí)符組合在一起, 使用公式(1)生成數(shù)據(jù)標(biāo)簽Auth.

      圖5 生成授權(quán)信息Figure 5 Generate authorize information

      其中addrp是提供者的以太坊地址, addru是使用者的以太坊地址, ts 是時(shí)間戳, id 是隨機(jī)選取的數(shù)字圖像標(biāo)識(shí)符.

      在熱點(diǎn)圖像授權(quán)問題中, 提供者將多個(gè)使用者的以太坊地址進(jìn)行拼接, 即addru= addru1||addru2||···||addrun.

      3.2.2 簽名生成與水印插入階段

      如圖6 所示, 簽名生成與水印插入階段分為3 個(gè)步驟: 初始化、生成簽名和插入水印. 提供者調(diào)用KeyGen 算法生成同態(tài)簽名公鑰和私鑰, 再調(diào)用HomSign 算法將圖像與授權(quán)信息一起作為消息進(jìn)行簽名,最后執(zhí)行水印插入操作, 將對(duì)應(yīng)的簽名插入到原始圖像中去.

      圖6 簽名生成和水印插入Figure 6 Signature generation and watermark insertion

      (1) 初始化

      提供者調(diào)用KeyGen 算法生成公鑰Hpk 和私鑰Hsk, 使用私鑰Hsk 對(duì)圖像進(jìn)行簽名, 將公鑰Hpk公開用于驗(yàn)證.

      KeyGen 算法具體步驟如算法1 所示. (G1,G2,GT,p,e) 是域Fq上的雙線性映射五元組,G1,G2和GT是橢圓曲線群,階均為p,其中p是一個(gè)安全素?cái)?shù),e是定義在這三個(gè)群上的雙線性映射e:G1×G2→GT. 算法首先在G1中隨機(jī)選擇N個(gè)生成元r1,r2,··· ,rN ←G1, 隨機(jī)選擇h ←G2, 隨機(jī)選擇x ←Fq作為私鑰, 并計(jì)算u:=hx,H是哈希函數(shù), 滿足條件H:Z×Z →G1, (Hpk,Hsk) 是簽名的公私鑰對(duì),令Hpk:=(r1,r2,··· ,rN,h,u), Hsk:=x, 將Hpk 公開, Hsk 保密.

      算法1 KeyGen Input: k Output: Hpk, Hsk 1 從G1 中隨機(jī)選擇N 個(gè)生成元r1,r2,··· ,rN 2 從G2 中隨機(jī)選擇公鑰參數(shù)h 3 在域Fq 上隨機(jī)選擇私鑰x 4 計(jì)算公鑰參數(shù)u := hx 5 設(shè)置私鑰Hsk := x 6 設(shè)置公鑰Hpk := (r1,r2,··· ,rN,h,u)7 return Hpk,Hsk

      (2) 生成簽名

      提供者接下來使用HomSign 方法對(duì)每張圖像進(jìn)行簽名,并且將所有簽名構(gòu)造成一個(gè)Merkle 樹,Hom-Sign 算法具體步驟如算法2 所示.

      算法2 HomSign Input: Hsk, Auth, v Output: σ,hσ 1 設(shè)置簽名集合σ = [ ]2 σ1,σ2,··· ,σn ←G1 //設(shè)置σ1,σ2,··· ,σn 為G1 類型3 for k = 1 : n do )Hsk//生成簽名;5 σ. append(σk) //將簽名加入到集合中;6 end 7 hσ = MerkleHashTree(σ) //將所有簽名組織成Merkle 樹, 將樹根賦值給hσ 8 return σ,hσ 4 σk :=(n∏H(Auth,i)vk,N-n+i N-n∏rvk,j i=1 j=1 j

      算法使用公式(2)為每個(gè)圖像計(jì)算簽名, 得到簽名集合σ=(σ1,σ2,··· ,σn).

      接下來調(diào)用MerkleHashTree 函數(shù)得到簽名的Merkle 根. MerkleHashTree 是建立Merkle 樹的函數(shù), 具體操作為: 對(duì)每個(gè)簽名取哈希, 得到Merkle 樹的最底層節(jié)點(diǎn), 從底層反復(fù)向上層擴(kuò)充, 直到獲得根節(jié)點(diǎn)為止, 返回簽名Merkle 樹的根hσ.

      (3) 插入水印

      使用WmInsert 算法(如算法3 所示),將得到的簽名σ作為數(shù)字水印插入到圖像中,其中wm_insert是用戶選擇的水印插入算法, 該算法應(yīng)使插入的水印不能被去除. 水印插入后, 可以通過水印提取方法wm_extract 進(jìn)行提取. 由于水印中嵌入了交易雙方的身份信息和時(shí)間戳等信息, 從而提供了圖像版權(quán)保護(hù)和圖像內(nèi)容完整性保護(hù)的雙重保障.

      算法3 WmInsert Input: img, σ Output: imgw 1 設(shè)置插入水印圖像集合imgw = [ ]2 for i = 1 : n do 3 imgwi = wm_insert(imgi,σi) //將對(duì)應(yīng)的簽名插入到圖像中4 imgw. append(imgw) //將圖像加入到集合中5 end 6 return imgw

      3.2.3 交易與授權(quán)階段

      如圖7 所示, 提供者選擇ECDSA 簽名算法, 使用其私鑰sk 對(duì)Hpk||Auth||hσ進(jìn)行簽名, 得到簽名Sig, 并將{Hpk,pk,Auth,hσ,Sig}發(fā)送給智能合約, 其中pk 是提供者公鑰; 智能合約調(diào)用Verify 函數(shù)驗(yàn)證提供者發(fā)送信息的真實(shí)性.

      圖7 交易與授權(quán)Figure 7 Transaction and authorization

      如果Verify 輸出為1, 則說明驗(yàn)證通過, 交易可以繼續(xù)進(jìn)行. 此時(shí), 使用者需要向智能合約轉(zhuǎn)賬, 智能合約收到費(fèi)用后對(duì)使用者進(jìn)行授權(quán). 在熱點(diǎn)圖像授權(quán)問題中, 有多個(gè)使用者, 提供者只需要提交一份押金,驗(yàn)證通過后, 多個(gè)使用者調(diào)用合約中的同一個(gè)方法進(jìn)行交易和授權(quán). 當(dāng)所有使用者都授權(quán)完成后, 提供者可以從智能合約中提取自己支付的押金和使用者支付的費(fèi)用, 完成交易.

      3.2.4 挑戰(zhàn)-驗(yàn)證階段

      如果懷疑非授權(quán)使用者對(duì)數(shù)字圖像侵權(quán)使用, 將進(jìn)入所有權(quán)確權(quán)階段. 采用挑戰(zhàn)-驗(yàn)證協(xié)議進(jìn)行圖像的侵權(quán)驗(yàn)證. 如果使用者是授權(quán)用戶, 則能夠通過驗(yàn)證, 如果使用者為非授權(quán)用戶, 則方案保證其僅以可忽略概率偽造能夠通過驗(yàn)證的簽名.

      如圖8 所示, 智能合約調(diào)用ChalGen 算法產(chǎn)生挑戰(zhàn)集合chal, 并將其發(fā)送給使用者. 使用者收到挑戰(zhàn)集合后, 調(diào)用WmExtract 從相應(yīng)圖像中提取水印, 再調(diào)用ProofGen 算法計(jì)算證據(jù), 將證據(jù)發(fā)送給智能合約. 智能合約收到證據(jù)后, 調(diào)用HomVerify 算法進(jìn)行驗(yàn)證, 并公開驗(yàn)證結(jié)果.

      圖8 挑戰(zhàn)驗(yàn)證協(xié)議Figure 8 Challenge verification protocol

      (1) 智能合約產(chǎn)生挑戰(zhàn)集合

      智能合約調(diào)用ChalGen 算法產(chǎn)生挑戰(zhàn)集合. ChalGen 算法的作用是從n個(gè)圖像索引中隨機(jī)抽取m個(gè)不重復(fù)的索引, 并為每個(gè)索引選擇一個(gè)隨機(jī)數(shù)作為系數(shù). 首先生成m個(gè)不重復(fù)的隨機(jī)數(shù), 其范圍在[1,n] 之間, 作為被抽取的索引; 再在域Fq中選擇m個(gè)隨機(jī)數(shù), 作為每個(gè)對(duì)應(yīng)索引的系數(shù).

      ChalGen 算法的具體步驟如算法4 所示. 其中, random(1,n,m) 是用戶選擇的隨機(jī)抽樣算法, 實(shí)現(xiàn)從1 到n之間抽取m個(gè)隨機(jī)整數(shù), 系數(shù)(β1,β2,··· ,βm) 是Fq上的隨機(jī)數(shù).

      算法4 ChalGen Input: n, m Output: chal 1 設(shè)置簽名集合σ = [ ]2 set d = [ ], β = [ ]3 d = random(1,n,m)4 for i = 1 : m do R←- Fq 6 β. append(βi)7 end 8 chal = {d,β}9 return chal 5 βi

      (2) 使用者產(chǎn)生證據(jù)

      如圖8 所示, 使用者收到挑戰(zhàn)集合chal 后, 首先使用WmExtract 算法, 從挑戰(zhàn)集合chal 中每個(gè)索引對(duì)應(yīng)的圖像中提取數(shù)字水印. WmExtract 算法的具體步驟如算法5 所示. 其中算法wm_extract 為wm_insert 對(duì)應(yīng)的提取水印算法, 得到水印集合w′.

      算法5 WmExtract Input: chal,imgw Output: w′1 set w′ = [ ] //設(shè)置水印集合2 for i = 1 : m do 3 wmi = wm_extract(imgw di) //從圖像di 中提取水印4 w′. append(wmi) //將水印加入集合5 end 6 return v′,σ′

      接下來, 使用ProofGen 算法計(jì)算證據(jù)v′,σ′.

      v′是所有被抽取圖像向量通過公式(3)線性組合得到的N維向量,

      σ′是所有被抽取圖片的簽名通過公式(4)加權(quán)聚合得到的聚合簽名.

      再將v′,σ′,Auth′發(fā)送給智能合約. 其中, Auth′是使用者提供的將授權(quán)信息, 要求Auth′中的被授權(quán)方必須包含該使用者, 否則智能合約拒絕接收. ProofGen 算法具體步驟如算法6 所示.

      算法6 ProofGen Input: chal,w′Output: v′,σ′1 v′ ←Fq //設(shè)置v′ 在域Fq 上2 σ′ ←G1 //設(shè)置σ′ 為G1 類型3 v′ =m∑k=1βkvdk //計(jì)算聚合圖像向量4 σ′ =m∏k=1(w′dk)βk //計(jì)算聚合簽名5 return w′

      (3) 智能合約驗(yàn)證

      智能合約收到證據(jù)v′,σ′后, 使用HomVerify 算法判斷驗(yàn)證簽名是否合法. 首先通過公式(5)計(jì)算σ′′:

      接下來計(jì)算映射γ1=e(σ′,h) 和γ2=e(σ′′,u), 如果γ1==γ2, 則驗(yàn)證通過, 否則不通過. HomVerify具體過程如算法7 所示.

      方案中涉及到以下兩個(gè)智能合約.

      (1) 數(shù)字圖像交易合約(Image Sell Contract)

      該合約用于數(shù)字圖像提供者和使用者進(jìn)行交易,合約中包含三個(gè)方法,分別為UploadImageInfo、Purchase 和Withdraw. UploadImageInfo 方法用于提供者設(shè)定價(jià)格和提交圖像信息, 該方法輸入包括數(shù)字圖像標(biāo)識(shí)符id, 數(shù)字圖像描述des, 同態(tài)簽名公鑰Hpk, 授權(quán)信息Auth, 圖像簽名Merkle 根哈希值hσ,提供者簽名Sig 和提供者以太坊公鑰pk, 提供者在調(diào)用該方法時(shí)會(huì)向智能合約支付一定金額作為押金deposite. 該方法首先使用pk 對(duì)Sig 進(jìn)行驗(yàn)證, 若驗(yàn)證通過, 則記錄下圖像信息, 并設(shè)置圖像價(jià)格value,若驗(yàn)證未通過, 則操作失敗. Purchase 方法用于使用者購買圖像, 它接收使用者的轉(zhuǎn)賬, 判斷轉(zhuǎn)賬方是否屬于待授權(quán)使用者集合以及轉(zhuǎn)賬金額與圖像價(jià)格value 是否相等, 如果判斷結(jié)果為是, 則將圖像授權(quán)給使用者, 否則將轉(zhuǎn)賬失敗. 當(dāng)所有購買者都完成授權(quán), 提供者可以通過Withdraw 函數(shù)取回押金. 算法8 給出了數(shù)字圖像交易合約的偽代碼.

      算法7 HomVerify Input: Hpk,Auth′,v′,σ′Output: result 1 σ′′ ←G1 //設(shè)置σ′′ 為G1 類型2 σ′′ := n∏i=1H(Auth′,i)v′N-n+i N-n∏j=1rv′j j //計(jì)算σ′′3 γ1 ←GT 4 γ2 ←GT 5 u ←Hpk.u 6 γ1 = e(σ′,h) //計(jì)算映射γ1 7 γ2 = e(σ′′,u) //計(jì)算映射γ2 8 if is_equal(γ1,γ2) then 9 result = 1 //如果γ1 == γ2 則驗(yàn)證通過10 end 11 else 12 result = 0 //否則驗(yàn)證不通過13 end 14 return result

      算法8 數(shù)字圖像交易合約(ISC, image sell contract)(1) Set event sellImage2User(address_user, string_id);(2) Set function UploadImageInfo Input: 數(shù)字圖像標(biāo)識(shí)符id, 數(shù)字圖像描述des, 同態(tài)簽名公鑰Hpk, 授權(quán)信息Auth, 圖像簽名Merkle 根哈希值hσ, 提供者簽名Sig 和提供者以太坊公鑰pk Assert ($sender == provider)1. data = Hpk||Auth||hσ;2. if Verify(pk,data,Sig)) == false then 3. goto final; //提供者身份驗(yàn)證失敗;4. end 5. Set image.id ←id 6. Set image.des ←des 7. Set image.pk ←Hpk 8. Set image.auth ←Auth 9. Set image.merkleRoot ← merkleRoot 10. Set $value ←msg.value 11. Set $deposit ←msg.value 12. state = State.active; //將合約狀態(tài)設(shè)置為已激活(3) Set function Purchase()Assert (&sender ∈ user)Assert (msg.value == $value)Assert(state == State.active)1. 給user 授權(quán)2. emit sellImage2User(user, image.name);(4) Set function Withdraw()Assert(all users are authorized)Assert(state == State.active)Assert ($sender == provider)1. state = State.inactive; //將合約狀態(tài)設(shè)置為未激活2. provider.transfer(this.balance).

      (2) 挑戰(zhàn)驗(yàn)證合約(challenge and verify contract)

      該合約用于數(shù)字圖像的使用產(chǎn)生糾紛時(shí), 對(duì)圖像的版權(quán)進(jìn)行驗(yàn)證. 合約中包括兩個(gè)方法, 分別為Chal-Gen 和Verify. ChalGen 方法輸入為索引范圍n, 該方法從n個(gè)索引中隨機(jī)選取m個(gè), 并為每個(gè)索引選擇一個(gè)系數(shù), 將選擇的索引和系數(shù)輸出. Verify 方法輸入為被挑戰(zhàn)者輸入的證據(jù), 也就是聚合向量v′和聚合簽名σ′, 同態(tài)簽名公鑰Hpk, 使用者提交的授權(quán)信息Auth′, 該方法利用這兩個(gè)參數(shù)進(jìn)行驗(yàn)證, 并輸出驗(yàn)證結(jié)果. 算法9 給出了挑戰(zhàn)驗(yàn)證合約的偽代碼.

      算法9 挑戰(zhàn)驗(yàn)證合約(CVC, challenge and verify contract)(1) Set function Challenge Input: 索引范圍n 1. 根據(jù)預(yù)先設(shè)定的挑戰(zhàn)比, 計(jì)算挑戰(zhàn)圖像數(shù)量m 2. Set idx = (idx1,idx2,··· ,idxm), coef = (coef1,coef2,··· ,coefm);3. for i = 1 : m do 4. Set idxi ←randomIndex(n);5. Set coefi ←randomCoef(n);6. end 7. return idx,coef;(2) Set function Verify Input: 使用者提交的授權(quán)信息Auth′, 提供者同態(tài)簽名公鑰Hpk, 聚合向量v′, 聚合簽名σ′1. if msg.sender /∈Auth′.authorized then 2. goto final;3. end 4. if HomVerify(Hpk,Auth,v′,σ′) == true then 5. return 1; //驗(yàn)證通過6. end 7. else 8. return 0; //驗(yàn)證未通過9. end

      3.2.5 熱點(diǎn)圖像授權(quán)方案

      熱點(diǎn)圖像授權(quán)問題是指數(shù)字圖像提供者將同一批較為熱門的圖像分享給多個(gè)使用者. 按照一般圖像授權(quán)方案, 如果有n個(gè)使用者, 則需要生成n份智能合約, 且提供者需要對(duì)同一批圖像提交n份押金, 同時(shí)能執(zhí)行的數(shù)量受限于提供方的資金數(shù). 在本文的方案中, 提供者將多個(gè)使用者的身份信息進(jìn)行拼接, 作為授權(quán)信息的一部分, 給多個(gè)使用者發(fā)送相同的授權(quán)信息, 使用相同的授權(quán)信息和簽名公私鑰對(duì)圖像進(jìn)行統(tǒng)一簽名, 不同的使用者調(diào)用同一個(gè)合約進(jìn)行交易和授權(quán).

      在交易約定達(dá)成階段, 提供者和多個(gè)使用者達(dá)成交易約定. 將多個(gè)使用者的以太坊地址進(jìn)行拼接得到addru, 即addru= addru1||addru2||···||addrun. 再按照3.2.1 節(jié)中的方法將addru與提供者以太坊地址addrp、時(shí)間戳ts 和數(shù)字圖像標(biāo)識(shí)符id 拼接, 得到授權(quán)信息Auth.

      在簽名生成與水印插入階段, 與一般圖像授權(quán)問題相同, 提供者調(diào)用KeyGen 算法生成公鑰和私鑰,調(diào)用HomSign 算法對(duì)圖像進(jìn)行簽名, 再調(diào)用WmInsert 算法將簽名作為水印插入到圖像中.

      在交易與授權(quán)階段, 提供者按照3.2.3 節(jié)中的方法將相關(guān)信息發(fā)送給智能合約. 雖然被授權(quán)方有多個(gè)使用者, 但提供者只需要提交一份押金. 多個(gè)使用者分別調(diào)用合約中的Purchase 方法進(jìn)行交易和授權(quán). 當(dāng)所有使用者都授權(quán)完成后, 提供者可以從智能合約中提取自己支付的押金和使用者支付的費(fèi)用, 完成交易.

      在挑戰(zhàn)-驗(yàn)證階段, 按照3.2.4 節(jié)中的方法, 智能合約產(chǎn)生挑戰(zhàn)集合chal 并發(fā)送給使用者. 使用者提取水印, 計(jì)算證據(jù), 將證據(jù)v′,σ′和保存在使用者本地的授權(quán)信息Auth′發(fā)送給智能合約. 智能合約會(huì)核對(duì)Auth′的addru字段中是否包含使用者的身份信息, 如果不包含, 則拒絕接收. 最后, 智能合約調(diào)用HomVerify 算法對(duì)證據(jù)進(jìn)行驗(yàn)證.

      3.3 方案分析

      本節(jié)將從正確性和安全性兩方面對(duì)基于區(qū)塊鏈的數(shù)字圖像確權(quán)與公平交易方案進(jìn)行分析.

      3.3.1 正確性

      定理1 假設(shè)各實(shí)體誠實(shí)執(zhí)行方案, 使用者經(jīng)過授權(quán)后合法使用圖像, 且數(shù)字圖像未被破壞的情況下,使用者提供的證明可以通過挑戰(zhàn)驗(yàn)證.

      證明: 使用者通過驗(yàn)證, 等價(jià)于γ1==γ2成立.

      根據(jù)水印算法特性, 提取到的水印與插入圖像的水印相同, 因此:

      當(dāng)使用者是經(jīng)過授權(quán)的合法用戶時(shí), Auth′=Auth.

      根據(jù)雙線性映射性質(zhì)和線性同態(tài)簽名方案的正確性[23], 可知:

      3.3.2 安全性

      本節(jié)將從可靠性和公平性兩個(gè)方面來分析方案的安全性.

      定理2 假設(shè)本方案底層使用的同態(tài)簽名算法是安全的、嵌入的數(shù)字水印是不可移除的, 則未經(jīng)授權(quán)非法使用數(shù)字圖像的使用者無法通過驗(yàn)證, 內(nèi)容完整性受到破壞的圖像, 也無法通過驗(yàn)證.

      證明: 數(shù)字圖像中嵌入的水印是圖像提供者使用線性同態(tài)簽名私鑰, 對(duì)圖像及其授權(quán)信息Auth 進(jìn)行簽名后得到的. 令使用者提供的授權(quán)信息為Auth′, 真實(shí)的授權(quán)信息為Auth. 只有當(dāng)Auth′的被授權(quán)方是該使用者時(shí)才能被智能合約接收, 由于使用者是非授權(quán)用戶, 因此Auth′/=Auth. 方案底層使用的同態(tài)簽名算法是安全的, 所以

      因此無法通過驗(yàn)證.

      同時(shí), 由于圖像中嵌入的數(shù)字水印是不可移除的, 因此未經(jīng)授權(quán)的使用者無法將圖像中原有水印去除,而將包含偽造授權(quán)信息的水印加入到圖像中, 這為方案的安全性提供了又一層保障.

      假設(shè)未經(jīng)篡改的圖像為vi(1≤i ≤n), 被篡改后的圖像為v*i. 被篡改后的圖像能夠通過驗(yàn)證, 等價(jià)于存在v*i/=vi使得由于方案底層使用的同態(tài)簽名算法是安全的, 所以在計(jì)算上來說不可能找到這樣的img′i. 因此, 不存在使用者可以對(duì)數(shù)字圖像的內(nèi)容完整性進(jìn)行破壞, 并使得破壞后的圖像通過驗(yàn)證.

      定理3 本方案保證了公平交易.

      證明: 本方案利用智能合約的強(qiáng)制執(zhí)行性和不可篡改性保證了數(shù)字圖像提供者和使用者之間的公平交易. 數(shù)字圖像提供者需要預(yù)先提交押金, 如果提供者發(fā)送的信息真實(shí)性無法通過驗(yàn)證, 則交易不能夠繼續(xù), 提供者提交的押金會(huì)被鎖在智能合約中. 如果提供者發(fā)送的信息真實(shí)性能夠通過驗(yàn)證, 則交易可以繼續(xù)進(jìn)行, 購買者需要按照約定的價(jià)格向智能合約轉(zhuǎn)賬, 智能合約會(huì)檢查購買者支付的金額與提供者設(shè)定的價(jià)格是否相等, 如果不相等, 則此次轉(zhuǎn)賬無效. 若相等, 則將圖像授權(quán)給購買者. 所有購買者完成授權(quán)后,提供者可以提取押金和購買者支付的費(fèi)用.

      4 測試與分析

      本文設(shè)計(jì)了一種基于區(qū)塊鏈的數(shù)字圖像批量確權(quán)和公平交易方案, 該方案是為了實(shí)現(xiàn)高效、可信的數(shù)字圖像確權(quán)和公平交易. 本節(jié)針對(duì)所提方案的算法和協(xié)議過程, 測試方案的有效性、時(shí)間等開銷.

      本文提出的方案分為四個(gè)階段, 所用關(guān)鍵技術(shù)可以歸納到三個(gè)技術(shù)模塊, 圖9 展示了不同階段用到的技術(shù), 及這三個(gè)技術(shù)模塊的測試內(nèi)容.

      圖9 關(guān)鍵技術(shù)及測試內(nèi)容Figure 9 Key technologies and test content

      下面介紹具體的測試方案和結(jié)果.

      4.1 同態(tài)簽名生成和驗(yàn)證

      簽名算法基于PBC 庫實(shí)現(xiàn)[28], 配對(duì)參數(shù)選用了PBC 庫中F 類型參數(shù), 哈希函數(shù)采用了SHA256算法實(shí)現(xiàn).

      本文選取1000 張數(shù)字圖像[29], 挑戰(zhàn)驗(yàn)證過程抽取樣本比例為1 : 10, 即抽取其中100 張進(jìn)行挑戰(zhàn).測試樣例中部分參數(shù)取值如表2 所示.

      表2 測試樣例部分參數(shù)Table 2 Some parameters of test sample

      表3 給出了KeyGen、Sign、ChalGen、ProofGen 和HomVerify 等五個(gè)算法運(yùn)行所需時(shí)間代價(jià). 如表3 所示, KeyGen 算法耗時(shí)20.237 秒. Sign 算法耗時(shí)427.313 秒, 時(shí)間開銷較大, 且遠(yuǎn)大于其他算法, 但由于該算法由提供者在本地完成且只執(zhí)行一次, 故不影響確權(quán)效率. ChalGen、ProofGen 和HomVerify三個(gè)算法的作用是在線生成挑戰(zhàn)集合、計(jì)算證明和驗(yàn)證, 這三個(gè)算法均耗時(shí)分別為0.072 秒、0.093 秒和9.197 秒, 時(shí)間開銷很小, 確保了確權(quán)過程高效進(jìn)行.

      表3 算法運(yùn)行時(shí)間開銷Table 3 Algorithm running time cost

      圖10 給出了聚合驗(yàn)證時(shí)間開銷與所有圖像單個(gè)驗(yàn)證總時(shí)間開銷對(duì)比, 其中, 圖像數(shù)量從100 到1000,挑戰(zhàn)比例為10%. 從圖中可以看出, 隨著圖像數(shù)量增長, 單個(gè)驗(yàn)證總時(shí)間基本呈線性增長, 當(dāng)圖像數(shù)量為100 時(shí), 驗(yàn)證總用時(shí)為49.255 秒, 圖像數(shù)量為1000 時(shí), 驗(yàn)證總用時(shí)為602.183; 而聚合驗(yàn)證用時(shí)始終保持在9 秒左右.

      圖10 聚合驗(yàn)證與單個(gè)驗(yàn)證的時(shí)間開銷對(duì)比Figure 10 Time cost of aggregate validation versus individual validation

      本文方案采用了概率性檢查算法, 現(xiàn)對(duì)檢查概率進(jìn)行分析. 假設(shè)圖像數(shù)量為n, 偽造授權(quán)圖像數(shù)量為d, 挑戰(zhàn)數(shù)量為m, 偽造能夠被檢測到的概率為P, 則有[30]:

      圖11 展示了當(dāng)圖像數(shù)量n和抽樣比例q取不同值, 偽造比例f分別取1%、5%、10% 和20% 時(shí)P的值, 其中抽樣比例q=m/n表示抽樣數(shù)量占圖像數(shù)量的比例, 偽造比例f=d/n表示偽造數(shù)量占圖像數(shù)量的比例.

      圖11 檢測出偽造的概率Figure 11 Probability of forgery being detected

      4.2 水印插入與提取

      水印插入與提取實(shí)驗(yàn)基于Matlab 9.0, 在Windows 10 平臺(tái)中實(shí)現(xiàn). 水印系統(tǒng)包含兩個(gè)算法, watermarkInsert 算法用于接收原始圖像和水印, 將水印插入到原始圖像, 并輸出插入水印的圖像; watermarkGet 算法用于接收插入水印的圖像, 將水印從圖像中提取出來, 并輸出提取到的水印.

      本文實(shí)驗(yàn)采用的是基于離散小波變換(DWT) 和奇異值分解(SVD) 的盲水印方案, 該算法利用高頻帶奇異值加強(qiáng)視覺透明性和魯棒性, 在解碼器中引入了一種基于簽名的認(rèn)證機(jī)制, 以提高安全性, 具有較好的不可見性和較強(qiáng)的魯棒性, 使嵌入的水印不能被去除[31].

      如圖12 所示, 將包含同態(tài)簽名信息的水印插入測試圖像后, 對(duì)圖像無視覺影響.

      實(shí)驗(yàn)對(duì)不同數(shù)量規(guī)模圖像進(jìn)行插入和提取水印, 記錄所消耗時(shí)間, 其中每張圖像的大小是512×512,插入的水印大小為512×512, 23.1 KB. 結(jié)果如圖13—15 所示, 兩條折線分別表示不同規(guī)模圖像插入水印用時(shí)統(tǒng)計(jì)及提取水印用時(shí)統(tǒng)計(jì).

      對(duì)1 張圖片插入水印用時(shí)0.586 s, 提取水印用時(shí)0.415 s. 圖13 顯示了對(duì)10—100 張圖像插入和提取水印的時(shí)間統(tǒng)計(jì), 圖14 顯示了對(duì)100—1000 張圖像插入和提取水印的時(shí)間統(tǒng)計(jì), 圖15 顯示了對(duì)1000—10 000 張圖像插入水印和提取的時(shí)間統(tǒng)計(jì), 可以看出, 水印大小和圖像大小固定時(shí), 水印插入和提取用時(shí)與圖像數(shù)量呈線性關(guān)系.

      圖13 插入水印前后對(duì)圖像對(duì)比(10—100 張圖像)Figure 13 Image comparison before and after inserting watermark (10–100 images)

      圖14 插入水印前后對(duì)圖像對(duì)比(100—1000 張圖像)Figure 14 Image comparison before and after inserting watermark (100–1000 images)

      圖15 插入水印前后對(duì)圖像對(duì)比(1000—10 000 張圖像)Figure 15 Image comparison before and after inserting watermark (1000–10 000 images)

      4.3 智能合約

      智能合約使用Solidity 語言編程,使用Remix IDE 和Rinkby 測試網(wǎng)絡(luò)作為智能合約的測試環(huán)境. 如表4 所示, 按照2021 年8 月5 日匯率來計(jì)算, 部署數(shù)字圖像交易合約需要消耗5.2951×10-4ETH, 合人民幣9.1896 元,調(diào)用UploadImageInfo 需要消耗1.5324×10-4ETH,合人民幣2.6594 元,調(diào)用Purchase需要消耗0.2827×10-4ETH, 合人民幣0.4906 元, 調(diào)用Withdraw 需要消耗0.2105×10-4ETH, 合人民幣0.3653 元, 部署挑戰(zhàn)驗(yàn)證合約需要消耗2.1062×10-4ETH, 合人民幣3.6553 元, 調(diào)用Challenge 需要消耗5.9238×10-4ETH, 合人民幣10.2807 元, 部署數(shù)字圖像交易合約需要消耗0.1449×10-4ETH,合人民幣0.2515 元. 可見, 本文的方案所需合約執(zhí)行成本是可接受的.

      表4 智能合約開銷Table 4 Smart contract costs

      5 結(jié)論

      針對(duì)數(shù)字圖像的確權(quán)與交易問題, 本文應(yīng)用數(shù)字水印和區(qū)塊鏈技術(shù), 基于線性同態(tài)簽名, 提出了一種數(shù)字圖像批量確權(quán)與公平交易方案. 該方案應(yīng)用線性同態(tài)簽名方法實(shí)現(xiàn)了一次性對(duì)數(shù)字圖像批量審計(jì), 并且通過為圖像插入數(shù)字水印, 來保證其版權(quán)和內(nèi)容完整性. 數(shù)字圖像提供者和使用者通過智能合約實(shí)現(xiàn)公平交易, 提供者和使用者首先達(dá)成交易約定, 接下來通過智能合約執(zhí)行交易過程, 只要兩者均誠實(shí)地執(zhí)行合約內(nèi)容, 使用者就可以通過支付相應(yīng)的費(fèi)用來獲得數(shù)字圖像的使用權(quán)限. 當(dāng)數(shù)字圖像出現(xiàn)版權(quán)糾紛時(shí),可以通過挑戰(zhàn)-驗(yàn)證方式來對(duì)圖像版權(quán)和內(nèi)容完整性進(jìn)行驗(yàn)證. 數(shù)字圖像的確權(quán)和交易過程被保存在區(qū)塊鏈的存儲(chǔ)空間, 可以被公開查驗(yàn), 保證了公平性.

      實(shí)驗(yàn)結(jié)果表明, 本文提出的基于區(qū)塊鏈的數(shù)字圖像批量確權(quán)與公平交易方法具有低成本、高效性和安全性等特點(diǎn). 該方案對(duì)解決數(shù)字圖像高效確權(quán)、版權(quán)保護(hù)和公平交易等問題提供了思路, 具有一定的應(yīng)用價(jià)值.

      猜你喜歡
      提供者數(shù)字圖像合約
      網(wǎng)絡(luò)交易平臺(tái)提供者的法律地位與民事責(zé)任分析
      法制博覽(2020年2期)2020-04-29 06:45:18
      基于隱私度和穩(wěn)定度的D2D數(shù)據(jù)共享伙伴選擇機(jī)制
      ARGUS-100 藝術(shù)品鑒證數(shù)字圖像比對(duì)系統(tǒng)
      網(wǎng)絡(luò)言論自由的行政法規(guī)制研究
      基于塊效應(yīng)測度的JPEG數(shù)字圖像盲取證
      做商用車行業(yè)新材料應(yīng)用解決方案的提供者——訪同元集團(tuán)副總裁趙延?xùn)|
      專用汽車(2015年12期)2015-03-01 04:12:07
      數(shù)字圖像修復(fù)在圖像壓縮上的應(yīng)用
      基于DirectShow的便攜式X射線數(shù)字圖像采集的實(shí)現(xiàn)
      合約必守,誰能例外!——對(duì)“情勢變更”制度不可寄于過高期望
      疏附县| 安国市| 阿瓦提县| 八宿县| 乐亭县| 左云县| 武隆县| 岗巴县| 德令哈市| 来安县| 项城市| 桐柏县| 忻城县| 平邑县| 宣武区| 射阳县| 新民市| 天长市| 滨州市| 武宁县| 广宗县| 宕昌县| 宜章县| 兴安县| 天气| 垦利县| 克东县| 江华| 观塘区| 宁夏| 高阳县| 堆龙德庆县| 阿城市| 丹江口市| 孟连| 庆阳市| 资中县| 乌兰县| 陵川县| 永嘉县| 枞阳县|