1.一种基于联盟链的跨链数据安全共享方法,其特征在于,包括:构建联盟链网络结构,该结构包括联盟链A和联盟链B;分别对联盟链A和联盟链B进行系统初始化,即联盟链A和联盟链B通过密钥生成服务器生成秘密份额与公钥,并把秘密份额分发给联盟链内各个用户;其中联盟链B将自身公钥和相关公共参数发送给联盟链A,并部署密文存证合约和解密验证上链合约;联盟链A将自身公钥和相关公共参数发送给联盟链B,并部署门限签名存证合约和跨链响应数据合约;联盟链B生成秘密份额与公钥包括:系统初始化,生成公共参数p和g;服务器随机选取大素数p和一个整数xu,其中,1≤xu≤p‑1;计算 并将yu作为公钥,xu作为私钥;组织密钥生成服务器随机选择一个t‑1次多项式f(x),并在有限域GF(p)中选择n个非零且互不相同的元素x1,x2,…,xn;根据选取的多项式和n个非零且互不相同的元素计算秘密份额,即yi=f(i),i=1,2,…,n;组织密钥生成服务器将第i个点(xi,yi)分发给组织内的第i名用户Pi,其中,yi是Pi的秘密份额值,并将公钥yu和公开参数以及跨链数据请求发送给联盟链A;
多项式f(x)的表达式为:
其中,ai∈Zp*,GF(p)表示有限域,Zp*表示乘法群,modp表示对p进行模运算,p表示随机大素数,g表示生成元;
联盟链A生成秘密份额与公钥包括:随机选取x∈[0,p‑1]作为私钥,sk=x,计算公钥pkx
=y=g (modp),g是群G的生成元;组织密钥生成服务器运行Shamir算法,并结合BLS算法生成的私钥x生成秘密份额;组织密钥生成服务器将第i个点(xi,yi)分发给组织内的第i名用户Pi,其中,yi是Pi的秘密份额值,并将公钥y和公开参数,以及所选择的哈希函数发送给数据接收方即联盟链B;
联盟链A生成秘密份额与公钥包括:
跨链数据安全共享的过程包括:
S1:联盟链B向联盟链A发送跨链请求r;
S2:联盟链A内的用户根据跨链请求r从账本中获取相应的请求数据d;根据请求数据d生成明文M;采用的秘密份额对明文M进行计算,生成中间参数 根据中间参数对联盟链A的账本进行更新;采用秘密份额对请求数据进行处理的过程包括:各用户由秘密份额生成的用于构建门限签名的中间参数 并各自在联盟链账本上根据 进行PutState()更新操作;
S3:联盟链A根据跨链请求r、公钥以及相关参数采用跨链响应数据合约对请求数据d进行加密,将加密后的密文(c1||c2)上链,并发送给联盟链B;具体包括:跨链响应数据合约接收用户输入的跨链请求消息r,跨链响应数据合约获取跨链请求消息内容包含的数据索引k通过从联盟链账本中读取对应值d,接调用门限签名存证合约获得门限签名s,令M1=(M,s)作为跨链数据并运行ElGamal加密算法,即使用伪随机生成器生成一个伪随机数r∈[2,p‑r r
2]并计算c1≡g (mod p),c2≡M1·Yu (mod p);将(c1,c2)进行PutState()更新操作,最后将(c1,c2)上链;
S4:接收方联盟链B的用户Ui接收跨链响应数据后,调用密文存证合约将收到的密文(c1||c2)进行上链存证;
S5:联盟链B的各个用户从账本上获取密文,并调用解密验证上链合约获取秘密份额的中间参数,通过获取的中间参数对跨链数据密文进行解密,根据解密后的明文在账本上进行PutState()更新操作;具体包括:联盟链B各个用户从账本上获取密文,计算并提交包括秘密份额的中间参数到联盟链账本,用户调用密文存证合约收集包括秘密份额的中间参数以解密跨链数据密文,并将明文在账本上进行PutState()更新操作,具体包括:根据跨链请求消息r的数据索引k从联盟链账本中读取经密文存证合约上链的密文(c1||c2)和进行r(f(i))门限解密所需的中间参数g ;联盟链B根据中间参数对密文进行解密;联盟链B根据联盟链A公布的公钥对解密后的门限签名进行验证,若验证失败,则数据共享请求失败,若验证成功,则对账本进行写操作,完成交易;其中写操作的内容包括生成的明文;相关节点将交易打包并存储至联盟链,实现数据的安全共享。