宋 上,彭 偉
(國防科技大學(xué) 計(jì)算機(jī)學(xué)院,長沙 410000)
區(qū)塊鏈作為比特幣的底層技術(shù),由于其分散和去中心化的特點(diǎn),受到眾多研究者的青睞。區(qū)塊鏈不僅用于加密貨幣,還廣泛應(yīng)用于醫(yī)療保健、物聯(lián)網(wǎng)等諸多領(lǐng)域。
如何利用區(qū)塊鏈構(gòu)建一個(gè)隱蔽通信系統(tǒng)也得到了越來越多的研究。與其他隱藏媒體相比,基于區(qū)塊鏈的應(yīng)用程序具有匿名和易于訪問的優(yōu)點(diǎn)。隨著基于區(qū)塊鏈的應(yīng)用程序的發(fā)展,在其內(nèi)部實(shí)現(xiàn)隱蔽通信也是很有希望的。
傳統(tǒng)的隱寫術(shù)通常會(huì)修改多媒體文件中的某些數(shù)據(jù)位并重新編碼以隱藏秘密信息。然而,基于區(qū)塊鏈的應(yīng)用中區(qū)塊的不可修改性使得直接使用這種方法變得困難。目前,這一新領(lǐng)域的相關(guān)研究成果還并不豐富。BLOCCE[1]是在區(qū)塊鏈上建立可證明安全的隱蔽通信的首次嘗試。BLOCCE采用在交易地址中隱藏通信消息的方法來建立發(fā)送方和接收方之間的連接。
然而,BLOCCE有2個(gè)缺點(diǎn)。其一,每個(gè)區(qū)塊最多可以嵌入1 bit數(shù)據(jù),導(dǎo)致信道利用率極低。其二,每個(gè)通信過程都需要預(yù)先協(xié)商一個(gè)消息開始標(biāo)識(shí)符,導(dǎo)致額外的通信開銷。為了解決BLOCCE的不足,筆者設(shè)計(jì)并提出了一種改進(jìn)的基于區(qū)塊鏈的隱蔽通信方法 BLOCCE+。BLOCCE+通過增加單個(gè)交易地址中嵌入的數(shù)據(jù)位數(shù)和增加提交到單個(gè)區(qū)塊中的交易數(shù)量來提高數(shù)據(jù)嵌入效率。另外,BLOCCE+在前一次通信過程中完成了新的消息開始標(biāo)識(shí)符的協(xié)商,而無需使用另一個(gè)單獨(dú)的過程。理論分析表明:BLOCCE+能夠在保證可靠性和安全性的前提下,提高系統(tǒng)的通信效率。
隱蔽通信包括以下2個(gè)關(guān)鍵技術(shù):隱寫術(shù)通過將秘密消息嵌入不同的隱藏媒介來隱藏秘密消息的存在,匿名路由則增加了對手查找用戶身份和關(guān)聯(lián)通信參與方的難度。隱寫術(shù)有幾種典型的實(shí)現(xiàn)方法?;诙嗝襟w載體,發(fā)送者可以將秘密消息嵌入數(shù)字媒體中。如Kadham等[2]總結(jié)了過去的工作,并介紹了數(shù)字圖像隱寫的最新工作。Limkar等[3]提出了一種新的技術(shù),可以將所有格式擴(kuò)展的文件嵌入視頻中,而不會(huì)降低視頻質(zhì)量?;诰W(wǎng)絡(luò)協(xié)議,發(fā)送方可以使用報(bào)文頭部或其他部分的冗余進(jìn)行隱寫,如handel等[4]介紹了OSI模型里各層中可利用的隱蔽通道。匿名路由的研究始于Chaum的Mix Net[5],該網(wǎng)絡(luò)主要用于郵件系統(tǒng)中,以密碼學(xué)為基礎(chǔ)隱藏通信雙方。洋蔥路由系統(tǒng)Tor[6]作為該領(lǐng)域最著名的成就,可以提供低延遲的匿名通信服務(wù)。
區(qū)塊鏈作為比特幣[7]的底層技術(shù)被引入。它可以在無需任何集中方提供數(shù)據(jù)真實(shí)性保證的條件下建立分布式信任。區(qū)塊鏈不僅在以太網(wǎng)[8]、物聯(lián)網(wǎng)[9]、醫(yī)療保?。?0]等應(yīng)用中得到了更多的研究,也在學(xué)術(shù)界引起了更多的關(guān)注。Cachin[11]提出了使用區(qū)塊鏈保護(hù)隱私數(shù)據(jù)的方法。Herbert等[12]使用區(qū)塊鏈解決版權(quán)問題。此外,研究人員在安全性、共識(shí)算法等方面進(jìn)行了深入的探索。
區(qū)塊鏈具有開放和公開的特點(diǎn),是一個(gè)潛在的實(shí)現(xiàn)隱蔽通信的平臺(tái)[13]。然而目前這方面的研究成果還很少。Matzutt等[14]試圖將數(shù)據(jù)插入?yún)^(qū)塊鏈中,其在接收地址上設(shè)計(jì)嵌入方法的思想與本文研究的BLOCCE系統(tǒng)類似。但以往的方法并沒有解決數(shù)據(jù)插入的隱私和隱藏問題,這也是BLOCCE的主要?jiǎng)訖C(jī)。
BLOCCE[1]是一個(gè)基于區(qū)塊鏈的可證明安全的隱蔽通信系統(tǒng)。系統(tǒng)的基本設(shè)計(jì)思想是在交易地址中嵌入經(jīng)過加密的秘密消息。
為了隱藏嵌入在區(qū)塊鏈應(yīng)用程序中的秘密信息,BLOCCE設(shè)計(jì)了一種在交易地址中嵌入消息的方法。在BLOCCE中,支付的接收者i生成一對密鑰,接收者的地址使用公鑰和哈希函數(shù)IHash()計(jì)算,例如,add(i)=IHash)。用戶Alice可以生成一列密鑰對,然后使用這些密鑰對對應(yīng)生成一列接收地址。接著,Alice可以創(chuàng)建一個(gè)發(fā)送給自己的交易列表,并用交易地址的最低有效位(LSB)來嵌入秘密消息。要在交易地址中嵌入消息,Alice會(huì)對地址列表進(jìn)行排序,以便交易地址的LSB對與要嵌入的消息位相同。最后,Alice依次提交帶有這些接收地址的交易,這些交易將在區(qū)塊鏈系統(tǒng)中廣播傳輸,從而讓秘密消息的接收者能夠從相關(guān)交易中提取秘密消息。
另外,消息的接收者Bob需要知道嵌入消息的起始位置,BLOCCE使用一個(gè)nλ位字符串λ作為消息開始標(biāo)識(shí)符(MSI),該標(biāo)識(shí)符在隱蔽通信過程之前協(xié)商完成。當(dāng)Bob在Alice提交的交易接收地址的LSB中找到這個(gè)λ時(shí),它將提取Alice提交的后續(xù)N-nλ個(gè)交易地址的LSB,組成秘密消息m。這里N是包含了MSI的嵌入消息總長度。
為了提高系統(tǒng)的安全性,嵌入的秘密消息應(yīng)該具有與其他普通交易地址的LSB相同的統(tǒng)計(jì)特性。在嵌入前,BLOCCE使用具有密文不可區(qū)分性的對稱加密算法[15]對明文信息進(jìn)行加密,并通過交易不可區(qū)分實(shí)驗(yàn)驗(yàn)證嵌入方法的安全性。
雖然BLOCCE是第1個(gè)可證明安全的基于區(qū)塊鏈的隱蔽通信系統(tǒng),但它存在著嵌入率低而導(dǎo)致通信效率低以及每個(gè)隱蔽通信過程之前需要協(xié)商新的MSI從而帶來額外開銷的不足。
消息在每個(gè)區(qū)塊中最多嵌入1位。要傳輸長度為n位的消息時(shí),BLOCCE需要等待至少n個(gè)區(qū)塊。在現(xiàn)實(shí)世界中,不同的區(qū)塊鏈系統(tǒng)以不同的速度生成交易,這將影響用戶發(fā)送與接收秘密消息的時(shí)間開銷。例如,EOS每0.5 s生成一個(gè)區(qū)塊。在STEAM和BTX中生成區(qū)塊需要3 s,比特幣則為10 min。區(qū)塊生成速度越慢,用戶收到秘密消息的時(shí)間開銷越大。
另外,BLOCCE使用消息開始標(biāo)識(shí)符來確定嵌入消息的開始,但是在每次發(fā)送消息前需要提前協(xié)商。雖然MSI的作用在BLOCCE中進(jìn)行了說明,但是它以明文形式發(fā)送而不能被重復(fù)使用,將帶來額外開銷的MSI的重新協(xié)商并沒有在BLOCCE中進(jìn)行考慮。
在設(shè)計(jì)中,假設(shè)Alice試圖在區(qū)塊鏈上向Bob發(fā)送消息m。BLOCCE+遵循BLOCCE的消息嵌入方法,但增加了嵌入位的數(shù)量。此外,BLOCCE+在傳輸秘密消息過程中建立了下一個(gè)MSI的協(xié)商過程。在BLOCCE+中,MSI在每個(gè)消息中被一分為二,第1部分用于標(biāo)識(shí)當(dāng)前消息的開始,第2部分用于下一次消息傳輸。BLOCCE+的總體流程如下:
1)嵌入消息的一部分(第2個(gè)MSI+秘密消息)通過對稱加密算法加密,我們假設(shè)通信雙方事先協(xié)商好了加密密鑰和第1個(gè)MSI。
2)Alice生成1對密鑰(pk,sk),并通過IHash(pk)計(jì)算出交易的接收地址。IHash函數(shù)同樣是BLOCCE中使用的理想哈希函數(shù)。
3)如果地址的低α位不等于要嵌入的消息中對應(yīng)的α位,則返回步驟2)。否則,Alice使用IHash(pk)作為接收地址來生成交易。
4)如果仍有要嵌入的位,返回步驟2)。否則,Alice將所有這些交易按順序提交到區(qū)塊鏈中。
5)Bob查看Alice的交易歷史,當(dāng)交易接收地址的低α位順序生成MSI時(shí),提取和解密嵌入消息,獲取秘密消息m。
6)Bob加密用于Alice繼續(xù)回復(fù)的MSI和自己的回復(fù)信息,并與本次解密提取出的第2個(gè)MSI組合起來,形成自己的嵌入消息,隨后嵌入交易地址中發(fā)送出去。
圖1給出了BLOCCE+的整體通信流程。
BLOCCE在每個(gè)區(qū)塊中只嵌入1位消息,考慮到計(jì)算機(jī)計(jì)算能力的強(qiáng)大,這是非常低效的。所以BLOCCE+增加了每個(gè)交易嵌入位的數(shù)量和在每個(gè)區(qū)塊中提交的交易數(shù)量。
1)將嵌入位的數(shù)量增加到α(1<α<add(i))
在add(i)位地址空間中,使用低α位來嵌入數(shù)據(jù)。用于嵌入數(shù)據(jù)的地址低α位必須與嵌入消息的相應(yīng)α位匹配。然而計(jì)算這樣一個(gè)特定的結(jié)果,過大的α將大大增加哈希函數(shù)的時(shí)間開銷,成為系統(tǒng)負(fù)擔(dān)。關(guān)于α更詳細(xì)的討論將在下一節(jié)的效率分析中進(jìn)行。嵌入方法如圖2所示。
2)增加每個(gè)區(qū)塊提交的交易量
在生成新區(qū)塊的過程中,Alice可以提交多個(gè)交易,從而增加嵌入位的數(shù)量。簡化的多筆交易提交結(jié)構(gòu)如圖3所示。
為了避免在傳輸消息之前需要額外協(xié)商新的MSI,BLOCCE+將消息開始標(biāo)識(shí)符λ分為2部分。第1部分用作標(biāo)識(shí)本次嵌入消息的開始,第2部分用于接收者發(fā)送回復(fù)消息。第2部分和秘密消息一起通過加密算法進(jìn)行加密。為了區(qū)分這2個(gè)部分,它們被分別識(shí)別為λ1和λ2。λ2由當(dāng)前通信的發(fā)起方生成。
BLOCCE+的新嵌入消息結(jié)構(gòu)如圖4所示。
λ1用作本次交易的消息開始標(biāo)識(shí)符,λ2用作回復(fù)消息。Enc(k,m′)是具有密文不可區(qū)分性的對稱加密算法,m′由λ2和秘密消息m組成,即m′=λ2‖m。
改進(jìn)后的設(shè)計(jì)具有以下2個(gè)優(yōu)點(diǎn):
1)λ2與m2一起加密,同樣具有密文不可區(qū)分性,從而雙方安全地在本次通信過程中完成了用于下次隱蔽通信的MSI的協(xié)商。
2)所以除了Alice和Bob,區(qū)塊鏈系統(tǒng)中其他人均無法獲取λ2。下一個(gè)通信過程中,Alice可以通過再次λ2確認(rèn)回復(fù)消息的發(fā)送者。
本節(jié)對BLOCCE+系統(tǒng)的安全性、可靠性和效率進(jìn)行了分析。
BLOCCE使用具有密文不可區(qū)分性的對稱加密算法來加密消息。雙方事先協(xié)商密鑰k進(jìn)行加密。BLOCCE+的安全性仍然基于加密算法的這一屬性。在BLOCCE+中嵌入消息的交易仍然無法區(qū)分,從而使安全性得到了保證。
BLOCCE系統(tǒng)不可靠的概率上界在式(1)中給出,N表示嵌入消息總長度,nλ表示MSI的長度
這也同樣是BLOCCE+第1階段不可靠的概率上界,nλ1表示第1個(gè)MSI的長度,α表示每個(gè)交易的嵌入位數(shù),θ表示需要提交的交易總數(shù)。
另外,第2個(gè)MSI的加入使得BLOCCE+系統(tǒng)產(chǎn)生第2階段錯(cuò)誤成為可能。以下是對出錯(cuò)過程的具體描述:Alice向Bob發(fā)送1條消息,但在第1階段,交易地址的最低α位先于實(shí)際的消息開始標(biāo)識(shí)符意外形成。在得到錯(cuò)誤的λ1后,Bob將λ1后的隨機(jī)數(shù)據(jù)錯(cuò)誤地解釋為加密消息,因此采用對稱加密算法SE對隨機(jī)位序列bitseq進(jìn)行解密,得到錯(cuò)誤的消息段mE。然后,Bob提取出前nλ2位并繼續(xù)將其錯(cuò)誤解釋為Alice生成的第2個(gè)msi,即λ2。接著生成回復(fù)消息并將其嵌入交易地址并提交到區(qū)塊鏈中。最后,這個(gè)隨機(jī)序列又再次意外地與Alice生成的正確的λ2一致,從而使Alice確信通信過程是正確的。整個(gè)出錯(cuò)過程如圖5所示。
盡管有連續(xù)的錯(cuò)誤出現(xiàn),但通信雙方都沒有意識(shí)到錯(cuò)誤已經(jīng)發(fā)生。由于發(fā)生碰撞的概率很低,錯(cuò)誤被掩蓋。Bob還是完成了信息的回復(fù),唯一的問題是Alice傳遞的正確消息被隨機(jī)字符串替換。進(jìn)一步假設(shè)這一部分回復(fù)并不重要甚至被忽略,Alice和Bob將永遠(yuǎn)不會(huì)知道錯(cuò)誤的發(fā)生。
這一階段的不可靠情況發(fā)生在Bob解密隨機(jī)字符串時(shí),結(jié)果形成與Alice生成的λ2相同的值。概率用公式表示,nλ2表示第2個(gè)MSI的長度
只有當(dāng)2個(gè)階段同時(shí)發(fā)生錯(cuò)誤時(shí),BLOCCE+系統(tǒng)才會(huì)出錯(cuò),因此BLOCCE+的不可靠概率為
根據(jù)設(shè)計(jì),λ1和λ2的長度相等,即
BLOCCE+嵌入消息的總長度與BLOCCE相同(為了對計(jì)算過程做出簡化)
與BLOCCE相比較
因此,BLOCCE+的可靠性下界比BLOCCE可靠性下界的低nλ×2-(nλ+1)。
BLOCCE+的可靠性下界滿足
綜上所述,得出以下結(jié)論:
1)根據(jù)式(9),BLOCCE+的可靠性主要由MSI的長度決定。當(dāng)λ足夠長時(shí),系統(tǒng)的可靠性可以保證在1個(gè)較高的下界之上。
2)根據(jù)式(8),當(dāng)λ 的長度足夠大時(shí),BLOCCE+的可靠性下界略低于BLOCCE,但差距很小,不足以影響B(tài)LOCCE+的可靠性。
嵌入率低導(dǎo)致的塊等待時(shí)間問題是我們試圖改進(jìn)嵌入方法的重要原因。本節(jié)對BLOCCE+的效率進(jìn)行了詳細(xì)分析。
4.3.1 信道利用率
在BLOCCE中,每個(gè)區(qū)塊的嵌入容量最多為1 bit,即信道利用率僅為1 bit/block。BLOCCE+增加了嵌入位數(shù)到α,當(dāng)發(fā)送方能夠快速生成滿足條件的公私鑰對時(shí),它將能夠向區(qū)塊鏈提交盡可能多的交易。假設(shè)發(fā)送方可以在塊生成時(shí)間內(nèi)向系統(tǒng)提交K個(gè)交易,那么信道利用率將大大提高到Kαbit/block。
4.3.2 發(fā)送時(shí)間
相比BLOCCE系統(tǒng),改進(jìn)系統(tǒng)在發(fā)送時(shí)間計(jì)算上最大的變化在于滿足條件的α位嵌入地址的密鑰對生成上。的低α位等于隱蔽消息在該段的值,考慮到這里哈希函數(shù)是理想狀態(tài)的隨機(jī)預(yù)言,概率等于均勻隨機(jī)的比特序列{0,1}α中選出1個(gè)預(yù)定結(jié)果,所以這個(gè)階段單交易的計(jì)算復(fù)雜度理想值為2α(CGen+CIHash)。另外,對于每個(gè)交易都需要生成1個(gè)時(shí)間標(biāo)識(shí)符t以及交易的簽名η,這個(gè)階段的計(jì)算復(fù)雜度為Ct+Csig。區(qū)塊生成時(shí)間是固定的,則在BLOCCE系統(tǒng)中嵌入α位的時(shí)間為αTB。
所以,想要改進(jìn)系統(tǒng)在發(fā)送時(shí)間上有進(jìn)步,則:
即BLOCCE+在嵌入數(shù)量α滿足式(10)時(shí)能夠帶來效率提升。
4.3.3 效率的進(jìn)一步提升
改進(jìn)系統(tǒng)可以從信道使用率和發(fā)送時(shí)間2個(gè)方面帶來效率的提升,其中發(fā)送時(shí)間的討論是建立在系統(tǒng)每個(gè)步驟按順序進(jìn)行的基礎(chǔ)之上。但是,我們可以考慮在等待區(qū)塊生成或者是更早的通信準(zhǔn)備階段,通信雙方就已經(jīng)可以進(jìn)行這樣的哈希計(jì)算,并對這些(add(i))數(shù)值對根據(jù)后α位值的不同做存儲(chǔ)。當(dāng)通信方有能力快速計(jì)算并大量存儲(chǔ)這樣的數(shù)值對時(shí),通信中將大量減少哈希函數(shù)計(jì)算的等待時(shí)間,最理想情況下甚至能夠完全不需要這樣的等待。這樣能將系統(tǒng)的整體發(fā)送時(shí)間問題轉(zhuǎn)化為如何在區(qū)塊生成期間盡可能多地提交交易的問題,從而進(jìn)一步減少等待區(qū)塊生成的個(gè)數(shù),提高了系統(tǒng)效率。
BLOCCE+使用單交易多地址嵌入和單區(qū)塊多交易提交這2種方法,把塊等待問題轉(zhuǎn)化成為哈希算法的計(jì)算具有特定低α位的結(jié)果問題。每個(gè)消息的消息開始標(biāo)識(shí)符被一分為二,第2部分通過加密算法與秘密消息一起加密,不僅完成下一個(gè)消息開始標(biāo)識(shí)符的協(xié)商,還增加了雙方的驗(yàn)證過程。
為了驗(yàn)證改進(jìn)是否有效,對BLOCCE+系統(tǒng)的安全性、可靠性和效率進(jìn)行了分析,得到如下結(jié)論:BLOCCE+在安全性、可靠性得到保證的前提下,能夠在一定的嵌入量范圍內(nèi),從信道使用率和發(fā)送時(shí)間2個(gè)方面實(shí)現(xiàn)系統(tǒng)通信效率的提升。
簡化區(qū)塊鏈模型上的討論省略了一些與理論研究無關(guān)的細(xì)節(jié)。但是想要實(shí)現(xiàn)原型系統(tǒng)還需要考慮許多復(fù)雜的問題,如網(wǎng)絡(luò)和共識(shí)算法等。這將在未來的工作中進(jìn)行研究,將嘗試使用現(xiàn)有的區(qū)塊鏈系統(tǒng)(如以太坊)在實(shí)踐中實(shí)現(xiàn)BLOCCE+。此外,還有一些問題需要進(jìn)一步研究。首先,需要新的信息隱藏方法,例如在數(shù)據(jù)包的不同區(qū)域使用冗余來嵌入消息。其次,利用區(qū)塊鏈系統(tǒng)的廣播機(jī)制實(shí)現(xiàn)隱蔽通信也需要研究。