本发明涉及区块链技术领域,特别涉及一种基于区块链智能合约的防篡改定时数据保密传输方法。
背景技术:
时间控制加密技术(timed-releaseencryption,tre)解决了“发送一个仅可在指定时间之后才能解密的信息”这一问题。现存的tre方案可简单的分为tlp与代理服务器两种。tlp方案是通过解决某些非并行计算问题来实现tre,由于问题设计的不可并行性,可预估解决问题需要花费时间。以此作为解密的时间控制。代理服务器方案分为交互式代理服务器(可信任代理)和非交互式服务器。两种方式均设置了一个“时间服务器”,解密时通过时间服务器在指定时刻发布的时间陷门来完成。
现有tre技术的局限性是显而易见的。tlp方案需要计算机无休止的进行运算直到解密过程结束。这意味巨大的资源消耗和解密时间的不确定性。长时间的计算除解密外很难提供其他的社会价值,如果其解密结果本身价值并不很大,则采用这种方式加密是得不偿失的。时间服务器方案解决了上述两个问题,但其问题同样明显。
时间服务器方式中,目前不能提供任意时间的解密实际控制,且一旦时间服务器受到攻击或时间服务器恶意发起攻击,模型的安全性便会受到严重挑战。
区块链的兴起为tre技术带来了新的解决方式。对于公共区块链网络,区块链中的信息可基本认为是不可篡改的。而其区块生成的时序性又保证了其时间的精确性。最近已有部分模型使用区块链上节点代替时间服务器来进行定时传输,现有的区块链tre模型有li等人在2018年发表的论文《decentralizedreleaseofself-emergingdatausingsmartcontracts》中提出的模型。在此文中li等人使用区块链网络中节点为中间人,而中间人负责在指定时间之后将解密秘钥交给接收者。
li等人提出的模型虽然采用区块链节点作为时间参照,去除了唯一功能的时间服务器,但其也有部分不足。该模型要求每一个中间人,提供超过其传输内容的押金作为其信用支撑。对于高价值内容,这意味着中间人将被冻结一大笔资金。这会导致中间人成本过高,甚至无中间人可用。同时,该模型虽然使用押金防止中间人违规,但其模型不存在安全冗余。即只要传输路径上任何一个中间人违规或出错,皆会导致指定时刻的解密工作失败。虽然该模型设计,发送者最终会得到一笔补偿,但是这仍然会为系统带来声誉上的影响。同时,li给出的模型无法应对替换攻击。
技术实现要素:
本发明的目的在于解决现有的模型中存在的中间人押金过大且无法应对替换攻击问题,提出一种基于区块链智能合约的防篡改定时数据保密传输方法。
为了实现上述目的,本发明采用以下技术方案:
一种基于区块链智能合约的防篡改定时数据保密传输方法,包括:
中间人生成公钥、私钥对<pubkey,privkey>,以使发送者s通过所述公钥pubkey对传输的密文分片进行二次加密并在ts时刻发送至中间人;所述中间人由公共区块链上的网络节点调用中间人注册合约注册生成;
中间人接收发送者s在ts时刻发送的通过所述公钥pubkey二次加密后的密文分片,并在tr时刻之前进行解密得到原始密文分片,在tr时刻,将原始密文分片传输至接收者r,以使接收者r判断从中间人接收的原始密文分片是否被篡改,若被篡改则对中间人进行处罚。
进一步地,所述中间人注册合约包括:
在注册时提供资金d与公钥pubkey;
仅可使用流通资金da作为新的押金ds;以及,
仅可在没有资金作为押金时进行注销。
进一步地,在所述中间人接收发送者s在ts时刻发送的通过所述公钥pubkey二次加密后的密文分片,并在tr时刻之前进行解密得到原始密文分片时,还包括:
同时产生一个由中间人的私钥privkey签名的第一签名证书。
进一步地,在所述将原始密文分片传输至接收者r时,还包括:
同时产生一个由中间人的私钥privkey签名的第二签名证书。
进一步地,还包括:
中间人提交攻击报告,所述攻击报告包含所述第一签名证书及所述第二签名证书;
通过所述第一签名证书及所述第二签名证书判断中间人是否违规,违规的中间人押金ds被没收,押金ds一部分作为提交攻击报告中间人的奖励,另一部分补偿发送者s或合规的中间人。
一种基于区块链智能合约的防篡改定时数据保密传输方法,包括:
通过服务设置合约选定中间人;
将传输的密文分片使用选定中间人的公钥pubkey进行二次加密,并在ts时刻将二次加密的密文分片发送至中间人,以使中间人在tr时刻之前进行解密得到原始密文分片;同时将传输的密文分片发送至接收者r,以使接收者r判断从中间人接收的原始密文分片是否被篡改,若被篡改则对中间人进行处罚。
进一步地,所述服务设置合约包括:
在ts时刻之前,计算所需的报酬r与每位中间人提交的押金ds并选择中间人;
在ts时刻,验证选定的中间人是否有足够的流通资金da支付押金ds,若所有选定的中间人da>ds均成立则开始服务;若有中间人da<ds,则拒绝服务并要求重新选择中间人。
进一步地,在所述将传输的密文分片使用选定中间人的公钥pubkey进行二次加密之前,还包括:
采用密文分解方法将密文拆分得到密文分片;或,
采用秘密共享方法产生密文分片。
进一步地,所述ds满足:
当采用密文分解方法将密文拆分得到密文分片时,
当采用秘密共享方法产生密文分片时,
一种基于区块链智能合约的防篡改定时数据保密传输方法,包括:
接收发送者s在ts时刻发送的密文分片;
接收中间人在tr时刻发送的原始密文分片;
判断从中间人接收的原始密文分片是否被篡改,对原始密文分片被篡改的中间人进行处罚:
将从中间人接收的原始密文分片与从发送者s接收的密文分片进行匹配,若匹配成功,退还所有中间人的押金ds,否则检测中间人行为,对违规的中间人没收押金,返还合规的中间人的押金。
与现有技术相比,本发明具有的有益效果:
本发明无需消耗大量的计算能力,也不需要唯一功能的时间服务器。公有区块链网络代替原有的时间服务器作为时间参考。区块链上的记录依照时序记录,而且在客观上区块链上记录的内容是无法被篡改的。
相比于li提出的模型,记传输内容价值为v,传输内容共有n个密文分片,其模型对应有n个中间人,每个中间人提交的最小押金皆为ds=v,其所有中间人需要提交的押金总额为nv。本发明中,使用秘密共享方法时,无论中间人数量为多少,其总押金额皆为2v,每个中间人需要提交的最小押金为
附图说明
图1为本发明实施例的一种基于区块链智能合约的防篡改定时数据保密传输方法的基本流程图;
图2为本发明实施例的另一种基于区块链智能合约的防篡改定时数据保密传输方法的基本流程图;
图3为本发明一种基于区块链智能合约的防篡改定时数据保密传输方法的密文分解方法下贿赂成本和攻击者收益的数学期望曲线图;
图4为本发明实施例的又一种基于区块链智能合约的防篡改定时数据保密传输方法的基本流程图;
图5为本发明实施例的一种基于区块链智能合约的防篡改定时数据保密传输方法的行为树示意图。
具体实施方式
下面结合附图和具体的实施例对本发明做进一步的解释说明:
如图1所示,一种基于区块链智能合约的防篡改定时数据保密传输方法,包括以下步骤:
步骤s101:中间人生成公钥、私钥对<pubkey,privkey>,以使发送者s通过所述公钥pubkey对传输的密文分片进行二次加密并在ts时刻发送至中间人;所述中间人由公共区块链上的网络节点调用中间人注册合约注册生成;
中间人注册合约使任何一个公有区块链网络中的节点都可以注册成为一个中间人。节点注册成为中间人时需要提交一部分资金作为自己的信用支撑,这笔资金记为d。同时,中间人需要生成属于本节点的公钥、私钥对<pubkey,privkey>。注册生成的中间人组成候选中间人列表。
步骤s102:中间人接收发送者s在ts时刻发送的通过所述公钥pubkey二次加密后的密文分片,并在tr时刻之前(临近tr时刻)进行解密得到原始密文分片,在tr时刻,将原始密文分片传输至接收者r,以使接收者r判断从中间人接收的原始密文分片是否被篡改,若被篡改则对中间人进行处罚。作为一种可实施方式,tr时刻之前指临近tr时刻,具体指tr时刻之前5分钟。
具体地,所述中间人注册合约包括:
a1.中间人在注册时需要向合约提供资金d与本节点公钥pubkey。
a2.中间人仅可使用流通资金da作为新的押金ds。
a3.中间人仅可在没有资金作为押金时进行注销。
中间人注册合约要求中间人提供资金d作为押金来源,同时为了让一个中间人可以同时进行多个服务,并不要求中间人为某一次服务提供自己所有的资金作为押金。因此,在进行服务的过程中间,中间人的资金会被分为两部分:押金(被冻结的资金)ds与流通资金(未被冻结的资金)da,即d=da+ds。中间人能够随意使用的资金仅有流通资金da,这部分资金可被用于支付下一次服务的押金ds,也可随时被中间人取回自己的账户。需要说明的是,当资金作为押金ds时,资金的所有权会暂时的转移至中间人注册合约所在的地址,直至服务正常结束。解冻押金ds,使其返还为中间人流通资金的唯一方式是服务完成且中间人并没有违规。
当某个中间人申请注销时,检查中间人是否仍有押金未被解冻。如果没有,将申请者移出候选中间人列表并返还其所有的资金d;如果仍有押金尚未解冻,则会拒绝其注销申请。
具体地,在所述中间人接收发送者s在ts时刻发送的通过所述公钥pubkey二次加密后的密文分片,并在tr时刻之前进行解密得到原始密文分片时,还包括:
同时产生一个由中间人的私钥privkey签名的第一签名证书;每一个中间人的解密操作结束均会生成一个由其私钥privkey签名的证书和得到的密文分片的hash值,以作为其合规的证明。
具体地,在所述将原始密文分片传输至接收者r时,还包括:
同时产生一个由中间人的私钥privkey签名的第二签名证书。
为应对中断攻击与替换攻击,要求中间人在将原始密文分片传输至接收者r时自动提交一个由其私钥privkey签名的证书以及发送密文分片的hash值。随着运行,这部分信息将被永久的储存在区块链上。在客观上,这部分证据是无法被篡改的,除非攻击者拥有超过全网络50%算力。
中间人的第一签名证书说明了其解密完成的时间te。如果|te-tr|过大则意味着中间人提早很多进行了解密,此时中间人接受贿赂发动提前释放的可能性就会加大。中间人的第二签名证书说明了其向接收者r发送密文分片的时间tp。如果tp早于tr,则说明中间人发动了提前释放攻击。尽管无论采用哪种密文分片生成方式,单个中间人的提前传输行为不会使提前释放攻击成功,但仍然会认为该中间人行为违规。对违规的中间人的押金,取其中的一部分a作为举报的中间人的赏金,并将剩下的部分用于对发送者s进行补偿(多个中间人受贿)或奖励其他合规的中间人。
由于公有区块链网络目前大约每10分钟生成一个区块,因此tp在区块链网络中的记录与实际情况会有约10分钟的误差。但10分钟的时间不足以供行贿者修改其自身的文件。
具体地,还包括:
中间人提交攻击报告,所述攻击报告包含所述第一签名证书及所述第二签名证书;
通过所述第一签名证书及所述第二签名证书判断中间人是否违规,违规的中间人押金ds被没收,押金ds一部分作为提交攻击报告中间人的奖励,另一部分补偿发送者或合规的中间人。
具体地,中间人提交攻击报告遵循攻击报告合约,攻击报告合约给予所有注册的中间人报告某次服务中的违规行为。一旦违规行为被确认,违规的中间人为本次服务提供的押金ds将被全额没收,而举报的中间人可从中获得一部分奖金a。
攻击报告合约内容如下:
b1.任何一个注册的中间人都可以提交一个攻击报告。
b2.攻击报告应包含由违规的中间人的私钥privkey签名的证书(第一签名证书及第二签名证书)。
b3.一旦攻击被证实,违规的中间人的押金ds将被没收,押金ds中的一部分会作为举报的中间人的奖励a,另一部分将被用来补偿发送者s或奖励合规的中间人。
由上述可知,所有的中间人在进行解密和传输的同时会产生一个由其私钥签名的证书,即第一签名证书及第二签名证书,这两个证书可以作为中间人行为的证明。每一个试图举报违规的中间人以获得奖励的中间人在举报时,应提交一个被举报的中间人的私钥privkey签名证书的信息。根据举报人提供的信息可以在区块链网络中找到对应证书,使用被举报的中间人的公钥pubkey即可验证该证书的归属。若被举报的中间人被判违规,则没收其押金ds,同时向举报的中间人发放奖励a。
在这一报告机制中,任何理性的中间人的最佳策略即是举报违规的中间人以获得奖励a。因此,任何理性的中间人都不会接受少于其押金ds的贿赂。同时,由于每一次举报操作都会消耗一定量的gas(gas是以太坊虚拟机(evm)内部流通货币,以太坊虚拟机用gas来对交易打包,智能合约执行等操作收取费用)作为调用攻击报告合约的“燃料”,所以任何理性的中间人都不会举报未违规的中间人。综上所述,在这种情况下攻击报告合约处于纳什均衡状态。
如图2-3所示,另一种基于区块链智能合约的防篡改定时数据保密传输方法,包括:
步骤s201:发送者s通过服务设置合约选定中间人;
在服务设置合约中,发送者s需要提供自己选择的中间人集群并设定每个中间人需要提交的押金ds数额。在设置的最后,发送者s向服务设置合约地址提交中间人报酬并开始服务。
步骤s202:发送者s将传输的密文分片使用选定中间人的公钥pubkey进行二次加密,并在ts时刻将二次加密的密文分片发送至中间人,以使中间人在tr时刻之前(临近tr时刻)进行解密得到原始密文分片;同时发送者s将传输的密文分片发送至接收者r,以使接收者r判断从中间人接收的原始密文分片是否被篡改,若被篡改则对中间人进行处罚。作为一种可实施方式,tr时刻之前指临近tr时刻,具体指tr时刻之前5分钟。
具体地,所述服务设置合约包括:
c1.在ts时刻之前,发送者s计算所需的报酬r与每位中间人提交的押金ds并从候选中间人列表中选择中间人;
c2.在ts时刻,验证发送者s选定的中间人是否有足够的流通资金da支付押金ds,若所有选定的中间人da>ds均成立则开始服务;若有中间人da<ds,则拒绝服务并要求重新选择中间人。
发送者s为每一次服务需要支付一笔资金r,这笔资金将被用于支付中间人的报酬。同时,由于在以太坊环境下,发送者实际支付的报酬包含了中间人的工作成本rc,以及中间人实际的收入α。
具体地,在所述将传输的密文分片使用选定中间人的公钥pubkey进行二次加密之前,还包括:
采用密文分解方法将密文拆分得到密文分片,密文分解方法具体包括:
输入:密文c
输出:密文分片<c1,c2,c3,……cn>、矩阵a、最小密文分子大小u
算法步骤:
(1)取合数q,质数x,、y,且满足x×y=q。
(2)取正整数1至q,充分随机的组合成x×y的矩阵a。
(3)对密文c进行尾部填充,使其大小为uq。
(4)将填充过的密文分解为q个最小密文分子,以1至q进行编号。
(5)依次取矩阵a的1至x行,将每行数字对应编号的最小密文分子依次组合。
使用密文分解方法时,用户可以将密文c分解为x份密文分片,每份密文分片的大小为uy。除非攻击者盗取所有的密文分片、矩阵a以及最小密文分子大小u,否则攻击者无法获得完整的原始密文c。
发送者s可以在密文分解之前或之后的任何时间将矩阵a和最小密文分子u告知接收者r。接收者r在获得所有的密文分片以后,便可恢复密文。密文恢复算法如下:
输入:密文分片<c1,c2,c3,……cn>、矩阵a、最小密文分子大小u
输出:密文c
算法步骤:
(1)将密文分片<c1,c2,c3,……cx>按照大小为u分解为q个最小密文分子。
(2)按照矩阵a中的数字,将q各最小密文分子按对应编号重组。
(3)去除重组密文的尾部填充。
当使用密文分解方法时,无论是分解还是重组需要消耗的资源都非常小,而且采用简单的代码就可实现。当密文面临风险较小时,密文分解方法将会是最好的解决问题方式。
或,
采用秘密共享方法产生密文分片:
秘密共享是指将某一秘密k分解为n份,而仅需n份中的t份就可以恢复秘密k。由于t值可自由设置,所以用户可根据自己的需要来进行设置。在防篡改定时数据保密传输智能合约的场景下,发送者可以使用秘密共享方案生成n份密文分片进行传输。
需要指出的是,t值的设置是秘密共享方法的安全性和可靠性进行博弈的结果。若t值过低,会导致安全性降低,即攻击者仅需少量密文分片便可获得完整密文;若t值过高,会导致密文可靠性降低,即攻击者仅需破坏少量密文分片便可导致密文无法正确恢复。
具体地,如何合理的计算中间人需要支付的押金ds包括:
假设发送者s发送成功并赢得竞争的情况下获得的收益总额为p,每一份密文的价值是有限的,对于发送者来说,其发送内容不能简单的等价为其预期收益,因此以v表示。假设在某一项目中会有多个发送者s向同一接收者r发送文件,而这些发送者s具有相近的竞争力,中间人中没有发送者s的竞争者;中间人不会对发送者s进行报复式的攻击,在竞争者(发送者s)实力相近的情况下,每一个参与者都有相同的概率获得胜利。因此,每一份在传输中的密文价值均为kp,当存在n个竞争者时有
由于中间人接收贿赂必然会导致押金ds被没收,因此只有攻击者提供的贿金bi大于中间人的押金ds时,攻击才会成立。则仅需ds>bi满足时,攻击就不会发生,即∑ds>∑bi=bpeers>kp成立。
当发送者s采用密文分解方法生成密文分片时,攻击者一旦成功贿赂任何一个中间人,就可以发动中断攻击,即攻击者的攻击成本仅为bi。解决这个问题的一个可行的方式是重复发送,即发送者s可以为每一份密文分片挑选多个中间人发送。此时,攻击者需要将其中一个分片的所有中间人全部贿赂才能够成功发动攻击。
记攻击者贿赂m个中间人,则有mbi<kp。假设密文c共生成n个密文分片,进行j次重复发送则共需要中间人nj个,则需要满足nds>kp。另负责传送同一个密文分片的多个中间人为一组中间人,记“攻击者从nj个中间人中取m个贿赂,m个中间人中至少有一组中间人”为事件b。则有,事件b发生的概率为:
同时为应对提前释放攻击和替换攻击,押金ds亦需要满足nds≥kp,即
值得说明的是:
中断攻击是指中间人丢弃了自己保存的密文分片,以此试图使密文无法正确恢复。由于中间人为每一次服务都提交了押金,因此中间人不会无缘无故的发动攻击。一种导致中间人发动攻击的原因是中间人受到了贿赂。当行贿者支付的贿金小于其可能获得的收益时,贿赂就有可能发生。
提前释放攻击是指在指定的tr时刻之前,中间人就将密文分片传送给了接收者r。提前释放攻击同样是伴随着贿赂发生的。但与中断攻击不同是,提前释放攻击的发生意味着接收者r也参与了贿赂。
替换攻击是指中间人使用接收者r的公钥pubkey生成了伪造的密文分片,由此导致接收者r在接收到所有的密文分片以后无法正确的恢复生成明文。与中断攻击类似,替换攻击也会伴随着相同的贿赂方式产生。但与之不同的是,替换攻击采用了偷梁换柱的攻击方式,这种攻击方式更难检测和举证。
当发送者采用秘密共享方法生成密文分片时。如有n份密文分片,其中获得t份密文分片时可成功解密。如攻击者试图发动中断攻击或替换攻击,则攻击者需要至少贿赂n-t+1个中间人。此时有bi×(n-t+1)<kp,因此,仅需
使用秘密共享方案的时候,要贿赂一半的中间人才能够拿到恢复出秘密的足够份额,所以安全阈值是50%。如图4所示,又一种基于区块链智能合约的防篡改定时数据保密传输方法,包括:
步骤s301:接受者r接收发送者s在ts时刻发送的密文分片;
步骤s302:接受者r接收中间人在tr时刻发送的原始密文分片;
步骤s303:接受者r判断从中间人接收的原始密文分片是否被篡改,对原始密文分片被篡改的中间人进行处罚:
将从中间人接收的原始密文分片与从发送者s接收的密文分片进行匹配,若匹配成功,退还所有中间人的押金ds,否则检测中间人行为,对违规的中间人没收押金,返还合规的中间人的押金。
本发明无需消耗大量的计算能力,也不需要唯一功能的时间服务器。公有区块链网络代替原有的时间服务器作为时间参考。区块链上的记录依照时序记录,而且在客观上区块链上记录的内容是无法被篡改的。
本发明相比于li提出的模型,记传输内容价值为v,传输内容共有n个密文分片,其模型对应有n个中间人,每个中间人提交的最小押金皆为ds=v,其所有中间人需要提交的押金总额为nv。本发明中,使用秘密共享方法时,无论中间人数量为多少,其总押金额皆为2v,每个中间人需要提交的最小押金为
本发明中总押金数为jv,每个中间人需要的押金
为本发明的运行过程设计行为树,以此来分析各种情况下发送者、中间人、行贿者的收益情况,行为树如图5所示。为了方便解释,在行为树中仅设计了三个中间人节点,但中间人更多时情况是相同的。虽然中间人列表的知情人仅有发送者s和接收者r,但假设攻击者通过某种方式获知了中间人列表的内容,并以此行贿发动攻击。每一个中间人面对贿赂会面临两个选择接受贿赂或拒绝贿赂,假设中间人并不知道其他的中间人是否发动攻击。
如图5所示,以h代表节点的合规行为,以g代表节点的不合规行为。为方便表示,假设攻击者每次贿赂成组的中间人(假设为两人),或不贿赂任何一个中间人。在图5中,中间人peer1在n1节点的合规行为诞生了n2节点、不合规行为诞生了n3节点。同样的中间人peer2的行为诞生了n4至n7节点。中间人peer3的行为产生了n8至n15节点。此时,由密文分解方法押金计算公式可得,图中押金ds应满足ds≥0.66kp,而此时对贿金bi有bi<0.33kp。
图5中,在n11、n13、n14、n15的情况下,攻击者行贿的成本大于其所得的收益kp,因此在这种情况下攻击者不会发动攻击。导致n12结果的是中间人peer1接受了贿赂发动攻击,此时中间人的收益为bi-ds,由ds≥0.66kp>bi可知,此时中间人peer1接收的贿赂是无法弥补其押金的损失的,因此n12不会发生。同理,n9、n10两种情况亦不会出现。由此可得,中间人无论在何种情况下,其最佳的策略皆为遵守合约。
以上所示仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。