一种基于马尔科夫链的生成式区块链隐蔽通信方法

文档序号:31340196发布日期:2022-08-31 09:56阅读:119来源:国知局
一种基于马尔科夫链的生成式区块链隐蔽通信方法

1.本发明涉及一种基于区块链隐蔽通信技术,具体涉及一种基于马尔科夫链的生成式区块链隐蔽通信方法。


背景技术:

2.随着个人计算机计算能力的大幅度提升与计算架构的快速发展,传统的保护隐私安全的方法受到了前所未有的挑战。有别于常用的隐蔽信息传输媒介,区块链作为一种具备去中心化、去信任、不可篡改、开放共识等特点的分布式技术平台,其特性契合隐蔽通信的需求,可解决传统隐蔽通信的诸多痛点。区块链3.0时代重点在于应用落地,近几年基于区块链构建隐蔽通信得到研究者们的深入探索,但这些现有研究中仍存在以下尚未完全解决的问题:
3.(1)通常在预处理或信道构建过程中需要额外的人工干预,这为隐蔽信道增添了不确定性;同时为实现通信同步则需通过预先协商来确定开始标识符、结束标识符、信息接收对象和密钥等关键信息,这又增加了隐蔽信道的构建成本和构建风险。
4.(2)一些基于区块链交易地址进行信息隐写的方案较简易且隐蔽性较差,难以抵抗常规的隐蔽信道检测;另外由于区块链的透明性,若该区块链网络中存在其他隐蔽通信对象,则容易出现“信息交叉”的现象,即节点间互相可探测其他隐蔽信道传输的秘密信息。
5.(3)传统隐蔽通信通常需要引入第三方公共媒介,若通过数学方法统计分析则可能存在一定身份暴露的风险;而完全严格基于区块链平台的隐蔽信道构建方法因其隐蔽容量过小,导致完成一次通信过程时延较长,或对出块交易顺序等条件要求苛刻,很难满足实际应用场景需求。


技术实现要素:

6.为了解决上述问题,本发明提供了一种基于马尔科夫链的生成式区块链隐蔽通信方法,相较于目前的同类模型,可进一步提高嵌入强度和时间效率,降低隐蔽信道构建风险,避免信息交叉,提升隐蔽性。
7.本发明的技术方案涉及一种基于马尔科夫链的生成式区块链隐蔽通信模型,该模型分为4个过程:预处理、嵌入、传输和提取,具体包括以下步骤:
8.(一)预处理过程
9.步骤1:对所持有的文本数据集a进行文本预处理,操作为:
10.l(si)=p(h(g(f(si)))),si∈s,
11.其中s表示文本数据集a中以结束符为标志的句子集合,即s={s1,s2,...,sn};函数f,g,p分别表示删除句子si中的特殊字符、网页链接和表情符号;函数h表示将句子si转换为小写形式。
12.步骤2:对预处理后的文本数据集a进行马尔可夫模型训练。进一步地,所述步骤2具体包括:
13.步骤2.1:建立一个包含数据集内全部单词的集合d={word1,word2,...,wordn},对应为马尔可夫链模型中给定的随机变量有限集合,将该字典中的所有单词放入候选池中作为备选。
14.步骤2.2:每个句子si的相应位置和单词可对应至马尔可夫链中的离散取值的时间与状态,即
[0015][0016]
其中j的取值集合为{j|i∈n
*
,1≤j≤l},si为句子编号,l为该句的句子长度。
[0017]
步骤2.3:利用一阶马尔可夫链(实际使用中可根据需求采取二阶或三阶马尔可夫链使之生成更加具备可读性的文本)计算每个单词的转移概率:
[0018][0019]
同时满足:
[0020][0021]
其中sn表示集合s的元素个数。
[0022]
通过以上步骤2.1、2.2和2.3,即可得到所需的条件转移概率矩阵:
[0023][0024]
步骤2.4:初始哈夫曼树表示所有可能位于初始位置的单词,并利用出现概率作为权值构成初始哈夫曼树t1;若除初始位置以外,以某个单词wordi为基准转移到下一个位置word
i+1
的所有可能的每个单词转移概率p(wordi)为权值构成哈夫曼树。这样的情况共有j-1种,即除初始哈夫曼树t1以外还可构造j-1个状态转移哈夫曼树,并定义函数:
[0025]
o(wordi,p(wordi)=o(word
i-1
,p(word
i-1
))=ti,
[0026]
其中i的取值集合为{i|i∈n
*
,2≤i≤j}。利用该函数构造各状态哈夫曼树并与初始哈夫曼树t1共同得到哈夫曼树集合t={t1,t2,...,tj},t1为初始状态哈夫曼树;函数o(x,y)表示哈夫曼树构造算法;p(wordi)表示该单词位置条件转移概率。
[0027]
(二)嵌入过程:
[0028]
步骤1:发送方将需要传输的秘密信息文本(secret_message)转换为二进制流(bin),即bin=z(secret_message)。
[0029]
步骤2:从初始状态哈夫曼树t1中查找与二进制流开始阶段的对应单词,并将其放入初始位置,即
[0030]
word1=f(bin1,t1),
[0031]
bin2=g(bin1,word1),
[0032]
其中f(x,y)表示哈夫曼解码函数;g(x,y)表示每完成一次解码过程则将y对应的二进制流即解码读取的前n位二进制流从完整二进制流x中删去。
[0033]
步骤3:完成初始二进制流信息嵌入之后,继续对剩余信息进行嵌入,即:
[0034]
wordi=f(bini,h(word
i-1
)),
[0035]
bin
i+1
=g(bini,wordi),
[0036]
其中i的取值集合为{i|i∈n
*
,2≤i≤j},函数h(x)表示查找单词x在集合t中对应的状态哈夫曼树。
[0037]
步骤4:重复步骤2.3直至二进制流信息嵌入完毕,若存在最后位置的二进制流无法顺利解码,则在末尾自动补0直至完全解码完毕。
[0038]
步骤5:解码完毕后得到wordi,i∈n
*
,and i∈[1,j]组成有序集合sen={word1,word2,...,wordj}(j的取值与秘密二进制流长度有关),并将该有序集合按照其排列顺序组成语句作为载密文本输出。
[0039]
(三)传输过程:
[0040]
步骤1:由秘密信息发送方创建一笔交易:transaction(cover-message)
[0041]
步骤2:为隐藏实际信息发送方身份而对该区块链交易transaction(cover-message)进行环签名操作。进一步地,所述步骤2具体包括:
[0042]
步骤2.1:首先定义函数其中ek为加密算法,k为ek对应的密钥。
[0043]
步骤2.2:对该区块链交易transaction(cover-message)进行环签名,环签名中各成员公钥分别为p1,p2,...,pn,消息发送方拥有公钥ps及对应的私钥。令k=hash(transaction(cover-message)),发送方随机选取一个值v。然后除发送方以外随机选取n-1个值{x1,x2,...,xn},并利用对应的公钥pi计算yi=gi(xi)得到相应的{y1,y2,...,yn}。
[0044]
步骤2.3:令c
k,v
(y1,y2,...,ys,...yn)=v,计算令等式成立的ys。可以把ys看作是通过公钥ps加密得到,而发送方拥有ps对应的私钥,因此可通过解密ys得到xs。最后得到关于发送方创建的交易消息transaction(cover-message)的环签名,该签名是一个2n+1元组(p1,p2,...,pn;v;x1,x2,...,xn),区块链网络用户通过该签名无法获知真正的信息发送方。
[0045]
步骤3:发送方将通过环签名后的交易发布到区块链网络中,并在各节点中进行广播,被验证交易正确有效之后打包至区块内经过共识更新该新生成的区块,至此载密信息完成上链,包括隐蔽通信信息接收者在内的所有区块链用户都可收到并查看链上信息。
[0046]
(四)提取过程:
[0047]
步骤1:秘密信息接收方拥有与发送方相同的文本数据集a,首先使用与预处理过程同样的方法构造哈夫曼树,如预处理过程对应步骤所述,由于使用了完全相同的文本数据集与处理算法,因此可生成完全相同的集合t={t1,t2,...,tj}。同样的,处理一次之后可将模型m与哈夫曼树集合t保存以便以后的双方通信,降低其通信成本。
[0048]
步骤2:接收方提取秘密信息。进一步地,所述步骤2具体包括:
[0049]
步骤2.1:接收方遍历区块链网络中新生成的交易信息,即:
[0050]
message=f(time,transaction(text)),其中time表示设定的区块链交易读取时间间隔,函数f(x,y)表示每隔x时间间隔遍历y中新生成的交易字段。
[0051]
步骤2.2:将message设定为有序集合mes,即:
[0052]
mes={word1,word2,...,wordn}。
[0053]
步骤2.3:利用训练得到的哈夫曼树集合t对该有序集合mes中的元素wordi逐一解码,并定义函数:
[0054]
codei=g(wordi,t),i∈n*,and i∈[1,n],
[0055]
其中函数g(x,y)表示在集合y中寻找合适的元素对单词x进行解码得到二进制流,并将解码得到的二进制codei放入有序集合c中,即:
[0056]
c={code1,code2,...coden}。
[0057]
步骤2.4:若不能完全执行步骤3,则证明该消息并不是发给自身的秘密信息;反之若能得到完整有序集合c,则该有序集合元素组成的二进制流为发送给自身的秘密信息,即:
[0058]
bin=h(code1,code2,...,coden),
[0059]
其中函数h(x1,x2,...,xn)表示将二进制x1,x2,...,xn进行拼接,
[0060]
步骤2.5:拼接得到的秘密二进制流bin进行逆操作,即:
[0061]
secret_message=z-1
(bin),
[0062]
其中函数z(x)表示将秘密信息文本x转化为二进制流。接收方通过上述步骤得到秘密信息文本secret_message。
[0063]
由于区块链网络的透明性,网络中其他用户可任意查看区块交易信息,但无法辨别并区分含有秘密信息的交易信息,只可查看到合法交易内容,且由于该交易信息是可读性较强的文本信息,进一步增强了信道的隐蔽性,使得其他用户无法察觉该信道的存在性。
[0064]
与现有技术相比,本发明的有益效果如下:
[0065]
(1)本文在区块链隐蔽通信信道构建中使用生成式文本隐写技术,大大降低了人工干预可能带来的信道不稳定的风险,其方法满足区块链网络合约执行自动化这一设计思想,更有利于隐蔽信道在区块链网络中的构建,同时为其带来更强的可拓展性与灵活性,减少了信道暴露的风险,一定程度上解决了前述问题(1)。
[0066]
(2)本文在隐写过程中引入马尔可夫链与哈夫曼编码结合的形式,在保证其信道隐蔽性的前提下,免除了预协商过程,实现了完全的异步式通信,无需协商隐蔽通信位置以及通信的开始与结束,降低了隐蔽传输的成本,进一步解决了前述问题(1)。
[0067]
(3)不同“通信对”只需维持不同的模型训练文本数据集即可保证该通信双方信道的完全隐蔽,并将不同隐蔽通信对隔离开,不会存在其他用户“误读”的情况,解决了前述问题(2)
[0068]
(4)相较于以往基于区块链区块结构的隐写方法,在不接入第三方平台的情况下大大提高了信道隐藏容量,使其在隐藏容量与潜在风险两者中达到相对平衡;此外,严格将区块链作为通信媒介并引入环签名技术,实现了现实对象与网络节点的剥离,打破了可能存在的映射关系,使实际隐蔽通信对象完全实现现实身份的隐藏,区块链的透明性使得通信发送方并不需要直接将携带有秘密信息的交易直接发给信息接收方,解决了前述问题(3)。
附图说明
[0069]
为了更清楚的说明本发明的技术方案,下面将对实施例或现有技术描述中所需要使用的附图简单地介绍。
[0070]
图1是本发明所述的基于马尔可夫链的生成式区块链隐蔽通信模型。
[0071]
图2是本发明所述的预处理过程。
[0072]
图3是本发明所述的嵌入过程。
[0073]
图4是本发明所述的传输过程。
[0074]
图5是本发明所述的提取过程。
具体实施方式
[0075]
下面将结合本发明附图和具体实施方式对本发明技术方案作进一步的说明。
[0076]
本发明的具体实例使用fisco bcos模拟区块链网络,在区块链网络中创建20个账户,各账户信息如表1所示。假设账户1是隐蔽通信发送者账户,账户2是接收者账户。在构建隐蔽通信信道之前,本发明中选用alec g公开且从twitter中提取的1600000条用于情感分析的评论,作为用于马尔可夫链模型训练的文本数据集。
[0077]
如图1所述,本发明所述一种基于马尔科夫链的生成式区块链隐蔽通信方法的具体实施方式包括4个过程:预处理,嵌入,传输和提取,具体描述如下:
[0078]
(一)预处理过程
[0079]
首先对文本数据集进行文本预处理,将预处理后的文本内容进行马尔科夫链训练,得到条件转移概率矩阵,在以每个单词的转移概率为权值构成哈夫曼树,将训练得到的马尔可夫模型m与哈夫曼树集合t保存以便未来使用该数据集与对方通信。部分预处理后文本内容如表2所示。表3为通过该模型随机生成的3句文本。根据训练结果可得出该模型生成文本基本符合人类语言习惯,具有较强隐蔽性。
[0080]
表1 fisco bcos区块链网络账户信息
[0081][0082]
表2文本预处理后内容
[0083][0084]
表3随机生成式文本
[0085][0086]
(二)嵌入过程
[0087]
发送方希望传输的秘密信息为:“we will do it tomorrow”,在嵌入过程中,发送方将文本信息转换为二进制流:“1110111110010110000 011101111101001110110011011001000001100100111111100000110100111101001000001110100110111 1110110111011111110010111001011011111110111”;然后进行秘密信息嵌入,得到的载密文本为:“i hate when i have so much school work to do and does anyone know if there is a book for student”。
[0088]
(三)传输过程
[0089]
在传输过程中发送方无需直接选择接收方账户,而可任意选择账户发送交易信息。发送方将生成的文本放入交易data字段中并进行环签名,环签名后向区块链网络中发布交易,交易经过验证、共识后打包成块,其中为便于观察,将每个区块打包交易数设置为1。区块部分字段结构与交易部分字段结构如下表4、表5所示,可见该载密信息已成功上链。
[0090]
表4区块结构
[0091][0092]
(四)提取过程
[0093]
在提取过程中,接收方进行接收秘密信息的尝试,每隔一段时间主动利用通过文本数据集a产生的哈夫曼森林对交易的data字段进行编码,在对上表5中的交易data字段时发现能顺利得到一串匹配的二进制流“111011111001011000001110111110100111011001101100100000110010011011111000001101001111010010000011101001101111110110111011111110010111001011011111110111”,接着利用相关函数验证环签名,验证通过后进行该二进制流的逆向操作即可得到秘密信息:“we will do it tomorrow”。
[0094]
表5交易结构
[0095][0096]
以上所述的具体实例是对本发明的进一步解释说明。对本领域的技术人员来说,在不脱离本发明整体构思前提下,可做相应的改变和进一步改进,这些也限定本发明的保护的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1