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