宋 上,彭 伟
(国防科技大学 计算机学院,长沙 410000)
区块链作为比特币的底层技术,由于其分散和去中心化的特点,受到众多研究者的青睐。区块链不仅用于加密货币,还广泛应用于医疗保健、物联网等诸多领域。
如何利用区块链构建一个隐蔽通信系统也得到了越来越多的研究。与其他隐藏媒体相比,基于区块链的应用程序具有匿名和易于访问的优点。随着基于区块链的应用程序的发展,在其内部实现隐蔽通信也是很有希望的。
传统的隐写术通常会修改多媒体文件中的某些数据位并重新编码以隐藏秘密信息。然而,基于区块链的应用中区块的不可修改性使得直接使用这种方法变得困难。目前,这一新领域的相关研究成果还并不丰富。BLOCCE[1]是在区块链上建立可证明安全的隐蔽通信的首次尝试。BLOCCE采用在交易地址中隐藏通信消息的方法来建立发送方和接收方之间的连接。
然而,BLOCCE有2个缺点。其一,每个区块最多可以嵌入1 bit数据,导致信道利用率极低。其二,每个通信过程都需要预先协商一个消息开始标识符,导致额外的通信开销。为了解决BLOCCE的不足,笔者设计并提出了一种改进的基于区块链的隐蔽通信方法 BLOCCE+。BLOCCE+通过增加单个交易地址中嵌入的数据位数和增加提交到单个区块中的交易数量来提高数据嵌入效率。另外,BLOCCE+在前一次通信过程中完成了新的消息开始标识符的协商,而无需使用另一个单独的过程。理论分析表明:BLOCCE+能够在保证可靠性和安全性的前提下,提高系统的通信效率。
隐蔽通信包括以下2个关键技术:隐写术通过将秘密消息嵌入不同的隐藏媒介来隐藏秘密消息的存在,匿名路由则增加了对手查找用户身份和关联通信参与方的难度。隐写术有几种典型的实现方法。基于多媒体载体,发送者可以将秘密消息嵌入数字媒体中。如Kadham等[2]总结了过去的工作,并介绍了数字图像隐写的最新工作。Limkar等[3]提出了一种新的技术,可以将所有格式扩展的文件嵌入视频中,而不会降低视频质量。基于网络协议,发送方可以使用报文头部或其他部分的冗余进行隐写,如handel等[4]介绍了OSI模型里各层中可利用的隐蔽通道。匿名路由的研究始于Chaum的Mix Net[5],该网络主要用于邮件系统中,以密码学为基础隐藏通信双方。洋葱路由系统Tor[6]作为该领域最著名的成就,可以提供低延迟的匿名通信服务。
区块链作为比特币[7]的底层技术被引入。它可以在无需任何集中方提供数据真实性保证的条件下建立分布式信任。区块链不仅在以太网[8]、物联网[9]、医疗保健[10]等应用中得到了更多的研究,也在学术界引起了更多的关注。Cachin[11]提出了使用区块链保护隐私数据的方法。Herbert等[12]使用区块链解决版权问题。此外,研究人员在安全性、共识算法等方面进行了深入的探索。
区块链具有开放和公开的特点,是一个潜在的实现隐蔽通信的平台[13]。然而目前这方面的研究成果还很少。Matzutt等[14]试图将数据插入区块链中,其在接收地址上设计嵌入方法的思想与本文研究的BLOCCE系统类似。但以往的方法并没有解决数据插入的隐私和隐藏问题,这也是BLOCCE的主要动机。
BLOCCE[1]是一个基于区块链的可证明安全的隐蔽通信系统。系统的基本设计思想是在交易地址中嵌入经过加密的秘密消息。
为了隐藏嵌入在区块链应用程序中的秘密信息,BLOCCE设计了一种在交易地址中嵌入消息的方法。在BLOCCE中,支付的接收者i生成一对密钥,接收者的地址使用公钥和哈希函数IHash()计算,例如,add(i)=IHash)。用户Alice可以生成一列密钥对,然后使用这些密钥对对应生成一列接收地址。接着,Alice可以创建一个发送给自己的交易列表,并用交易地址的最低有效位(LSB)来嵌入秘密消息。要在交易地址中嵌入消息,Alice会对地址列表进行排序,以便交易地址的LSB对与要嵌入的消息位相同。最后,Alice依次提交带有这些接收地址的交易,这些交易将在区块链系统中广播传输,从而让秘密消息的接收者能够从相关交易中提取秘密消息。
另外,消息的接收者Bob需要知道嵌入消息的起始位置,BLOCCE使用一个nλ位字符串λ作为消息开始标识符(MSI),该标识符在隐蔽通信过程之前协商完成。当Bob在Alice提交的交易接收地址的LSB中找到这个λ时,它将提取Alice提交的后续N-nλ个交易地址的LSB,组成秘密消息m。这里N是包含了MSI的嵌入消息总长度。
为了提高系统的安全性,嵌入的秘密消息应该具有与其他普通交易地址的LSB相同的统计特性。在嵌入前,BLOCCE使用具有密文不可区分性的对称加密算法[15]对明文信息进行加密,并通过交易不可区分实验验证嵌入方法的安全性。
虽然BLOCCE是第1个可证明安全的基于区块链的隐蔽通信系统,但它存在着嵌入率低而导致通信效率低以及每个隐蔽通信过程之前需要协商新的MSI从而带来额外开销的不足。
消息在每个区块中最多嵌入1位。要传输长度为n位的消息时,BLOCCE需要等待至少n个区块。在现实世界中,不同的区块链系统以不同的速度生成交易,这将影响用户发送与接收秘密消息的时间开销。例如,EOS每0.5 s生成一个区块。在STEAM和BTX中生成区块需要3 s,比特币则为10 min。区块生成速度越慢,用户收到秘密消息的时间开销越大。
另外,BLOCCE使用消息开始标识符来确定嵌入消息的开始,但是在每次发送消息前需要提前协商。虽然MSI的作用在BLOCCE中进行了说明,但是它以明文形式发送而不能被重复使用,将带来额外开销的MSI的重新协商并没有在BLOCCE中进行考虑。
在设计中,假设Alice试图在区块链上向Bob发送消息m。BLOCCE+遵循BLOCCE的消息嵌入方法,但增加了嵌入位的数量。此外,BLOCCE+在传输秘密消息过程中建立了下一个MSI的协商过程。在BLOCCE+中,MSI在每个消息中被一分为二,第1部分用于标识当前消息的开始,第2部分用于下一次消息传输。BLOCCE+的总体流程如下:
1)嵌入消息的一部分(第2个MSI+秘密消息)通过对称加密算法加密,我们假设通信双方事先协商好了加密密钥和第1个MSI。
2)Alice生成1对密钥(pk,sk),并通过IHash(pk)计算出交易的接收地址。IHash函数同样是BLOCCE中使用的理想哈希函数。
3)如果地址的低α位不等于要嵌入的消息中对应的α位,则返回步骤2)。否则,Alice使用IHash(pk)作为接收地址来生成交易。
4)如果仍有要嵌入的位,返回步骤2)。否则,Alice将所有这些交易按顺序提交到区块链中。
5)Bob查看Alice的交易历史,当交易接收地址的低α位顺序生成MSI时,提取和解密嵌入消息,获取秘密消息m。
6)Bob加密用于Alice继续回复的MSI和自己的回复信息,并与本次解密提取出的第2个MSI组合起来,形成自己的嵌入消息,随后嵌入交易地址中发送出去。
图1给出了BLOCCE+的整体通信流程。
BLOCCE在每个区块中只嵌入1位消息,考虑到计算机计算能力的强大,这是非常低效的。所以BLOCCE+增加了每个交易嵌入位的数量和在每个区块中提交的交易数量。
1)将嵌入位的数量增加到α(1<α<add(i))
在add(i)位地址空间中,使用低α位来嵌入数据。用于嵌入数据的地址低α位必须与嵌入消息的相应α位匹配。然而计算这样一个特定的结果,过大的α将大大增加哈希函数的时间开销,成为系统负担。关于α更详细的讨论将在下一节的效率分析中进行。嵌入方法如图2所示。
2)增加每个区块提交的交易量
在生成新区块的过程中,Alice可以提交多个交易,从而增加嵌入位的数量。简化的多笔交易提交结构如图3所示。
为了避免在传输消息之前需要额外协商新的MSI,BLOCCE+将消息开始标识符λ分为2部分。第1部分用作标识本次嵌入消息的开始,第2部分用于接收者发送回复消息。第2部分和秘密消息一起通过加密算法进行加密。为了区分这2个部分,它们被分别识别为λ1和λ2。λ2由当前通信的发起方生成。
BLOCCE+的新嵌入消息结构如图4所示。
λ1用作本次交易的消息开始标识符,λ2用作回复消息。Enc(k,m′)是具有密文不可区分性的对称加密算法,m′由λ2和秘密消息m组成,即m′=λ2‖m。
改进后的设计具有以下2个优点:
1)λ2与m2一起加密,同样具有密文不可区分性,从而双方安全地在本次通信过程中完成了用于下次隐蔽通信的MSI的协商。
2)所以除了Alice和Bob,区块链系统中其他人均无法获取λ2。下一个通信过程中,Alice可以通过再次λ2确认回复消息的发送者。
本节对BLOCCE+系统的安全性、可靠性和效率进行了分析。
BLOCCE使用具有密文不可区分性的对称加密算法来加密消息。双方事先协商密钥k进行加密。BLOCCE+的安全性仍然基于加密算法的这一属性。在BLOCCE+中嵌入消息的交易仍然无法区分,从而使安全性得到了保证。
BLOCCE系统不可靠的概率上界在式(1)中给出,N表示嵌入消息总长度,nλ表示MSI的长度
这也同样是BLOCCE+第1阶段不可靠的概率上界,nλ1表示第1个MSI的长度,α表示每个交易的嵌入位数,θ表示需要提交的交易总数。
另外,第2个MSI的加入使得BLOCCE+系统产生第2阶段错误成为可能。以下是对出错过程的具体描述:Alice向Bob发送1条消息,但在第1阶段,交易地址的最低α位先于实际的消息开始标识符意外形成。在得到错误的λ1后,Bob将λ1后的随机数据错误地解释为加密消息,因此采用对称加密算法SE对随机位序列bitseq进行解密,得到错误的消息段mE。然后,Bob提取出前nλ2位并继续将其错误解释为Alice生成的第2个msi,即λ2。接着生成回复消息并将其嵌入交易地址并提交到区块链中。最后,这个随机序列又再次意外地与Alice生成的正确的λ2一致,从而使Alice确信通信过程是正确的。整个出错过程如图5所示。
尽管有连续的错误出现,但通信双方都没有意识到错误已经发生。由于发生碰撞的概率很低,错误被掩盖。Bob还是完成了信息的回复,唯一的问题是Alice传递的正确消息被随机字符串替换。进一步假设这一部分回复并不重要甚至被忽略,Alice和Bob将永远不会知道错误的发生。
这一阶段的不可靠情况发生在Bob解密随机字符串时,结果形成与Alice生成的λ2相同的值。概率用公式表示,nλ2表示第2个MSI的长度
只有当2个阶段同时发生错误时,BLOCCE+系统才会出错,因此BLOCCE+的不可靠概率为
根据设计,λ1和λ2的长度相等,即
BLOCCE+嵌入消息的总长度与BLOCCE相同(为了对计算过程做出简化)
与BLOCCE相比较
因此,BLOCCE+的可靠性下界比BLOCCE可靠性下界的低nλ×2-(nλ+1)。
BLOCCE+的可靠性下界满足
综上所述,得出以下结论:
1)根据式(9),BLOCCE+的可靠性主要由MSI的长度决定。当λ足够长时,系统的可靠性可以保证在1个较高的下界之上。
2)根据式(8),当λ 的长度足够大时,BLOCCE+的可靠性下界略低于BLOCCE,但差距很小,不足以影响BLOCCE+的可靠性。
嵌入率低导致的块等待时间问题是我们试图改进嵌入方法的重要原因。本节对BLOCCE+的效率进行了详细分析。
4.3.1 信道利用率
在BLOCCE中,每个区块的嵌入容量最多为1 bit,即信道利用率仅为1 bit/block。BLOCCE+增加了嵌入位数到α,当发送方能够快速生成满足条件的公私钥对时,它将能够向区块链提交尽可能多的交易。假设发送方可以在块生成时间内向系统提交K个交易,那么信道利用率将大大提高到Kαbit/block。
4.3.2 发送时间
相比BLOCCE系统,改进系统在发送时间计算上最大的变化在于满足条件的α位嵌入地址的密钥对生成上。的低α位等于隐蔽消息在该段的值,考虑到这里哈希函数是理想状态的随机预言,概率等于均匀随机的比特序列{0,1}α中选出1个预定结果,所以这个阶段单交易的计算复杂度理想值为2α(CGen+CIHash)。另外,对于每个交易都需要生成1个时间标识符t以及交易的签名η,这个阶段的计算复杂度为Ct+Csig。区块生成时间是固定的,则在BLOCCE系统中嵌入α位的时间为αTB。
所以,想要改进系统在发送时间上有进步,则:
即BLOCCE+在嵌入数量α满足式(10)时能够带来效率提升。
4.3.3 效率的进一步提升
改进系统可以从信道使用率和发送时间2个方面带来效率的提升,其中发送时间的讨论是建立在系统每个步骤按顺序进行的基础之上。但是,我们可以考虑在等待区块生成或者是更早的通信准备阶段,通信双方就已经可以进行这样的哈希计算,并对这些(add(i))数值对根据后α位值的不同做存储。当通信方有能力快速计算并大量存储这样的数值对时,通信中将大量减少哈希函数计算的等待时间,最理想情况下甚至能够完全不需要这样的等待。这样能将系统的整体发送时间问题转化为如何在区块生成期间尽可能多地提交交易的问题,从而进一步减少等待区块生成的个数,提高了系统效率。
BLOCCE+使用单交易多地址嵌入和单区块多交易提交这2种方法,把块等待问题转化成为哈希算法的计算具有特定低α位的结果问题。每个消息的消息开始标识符被一分为二,第2部分通过加密算法与秘密消息一起加密,不仅完成下一个消息开始标识符的协商,还增加了双方的验证过程。
为了验证改进是否有效,对BLOCCE+系统的安全性、可靠性和效率进行了分析,得到如下结论:BLOCCE+在安全性、可靠性得到保证的前提下,能够在一定的嵌入量范围内,从信道使用率和发送时间2个方面实现系统通信效率的提升。
简化区块链模型上的讨论省略了一些与理论研究无关的细节。但是想要实现原型系统还需要考虑许多复杂的问题,如网络和共识算法等。这将在未来的工作中进行研究,将尝试使用现有的区块链系统(如以太坊)在实践中实现BLOCCE+。此外,还有一些问题需要进一步研究。首先,需要新的信息隐藏方法,例如在数据包的不同区域使用冗余来嵌入消息。其次,利用区块链系统的广播机制实现隐蔽通信也需要研究。