一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于区块链的分布式数据同步加密方法

2022-06-29 16:15:27 来源:中国专利 TAG:


1.本发明涉及一种基于区块链的分布式数据同步加密方法,属于数据加密技术领域。


背景技术:

2.数据库作为当今计算机发展和应用的关键技术之一,主要是承担着数据存储的作用,在信息化时代发展中,数据是各个领域激烈竞争中的关键之一。尤其是大数据和云计算时代的到来,数据库的应用也由单点数据库变成多点数据库的集成。多点数据库系统数据库同步方案主要以主从模式实现,主数据库负责数据库增量同步到从数据库,而数据库的更改变动操作只能在主数据库上进行,这种模式的单点问题依旧存在。
3.随着分布式技术的发展,分布式数据库的模式更加完善,给主从模式所存在的问题带来了一定的解决方案。分布式系统模式下每个数据库节点都是平等的数据库节点,因此数据库同步技术成为分布式系统处理的核心,分布式节点不仅需要处理本地数据库操作,同样需要从其他节点同步数据来完善自身数据集,分布式系统中每个数据库节点都承担着数据的写入和同步任务。
4.节点间频繁的数据共享已是常态,但是,分布式系统形态对数据加密存在一定局限性。随着的大量数据共享操作,随之而来的是数据泄露、恶意篡改、数据追溯困难等问题。例如,中国发明申请cn202010998073.x公开了一种分布式数据库的数据交互加密系统,包括智能加密模块、请求加密模块、权限管理模块和转发控制模块;所述智能加密模块和请求加密模块用于连接数据源和分布式数据库节点,通过两个加密模块对进入所述数据库节点的数据进行加密管理。该专利申请中分布式数据库的数据交互中的加密是解决数据隐私的有效手段,但是加密过程中密钥的存储存在一定安全隐患,数据库存储仍会出现密钥发生篡改和追溯困难的可能性。如何对分布式数据库同步进行有效加密以保证数据安全成为关键。
5.上述问题是在分布式数据同步加密过程中应当予以考虑并解决的问题。


技术实现要素:

6.本发明的目的是提供一种基于区块链的分布式数据同步加密方法解决现有技术中存在的具有被恶意篡改,数据追溯困难,数据安全性有待提高的问题。
7.本发明的技术解决方案是:
8.一种基于区块链的分布式数据同步加密方法,包括以下步骤,
9.s1、产生数据变动的分布式数据库节点即数据同步节点,数据同步节点通过随机密钥函数生成密钥key,密钥用于对明文di进行加密和解密;
10.s2、数据同步节点将明文di加入时间序列后,采用生成密钥通过高级加密标准aes实现的对称加密算法进行加密,得到密文数据ci;
11.s3、数据同步节点将密文数据ci共享到区块链系统内所有的目的节点;
12.s4、数据同步节点将密文数据ci通过散列函数hash计算,获得对应的哈希散列作为密文数据ci的密文散列hash(ci);
13.s5、数据同步节点将密钥key、分布式数据库节点id与同步时间作为存储数据,以密文散列hash(ci)为数据索引组合,以密文散列为数据索引组合,生成键值对上链数据m
kv
,然后通过程序包sdk上传到区块链平台;
14.s6、区块链平台通过数据同步节点请求中的证书信息验证节点身份,身份验证成功后将键值对上链数据m
kv
记录到区块链账本;
15.s7、目的节点对收到的密文数据ci进行hash计算获得密文散列,然后目的节点向区块链平台请求身份验证,身份验证成功后,通过密文散列向区块链平台请求获取上链数据m
kv
,进而获取密钥key后,通过高级加密标准aes解密密文数据ci,获取明文di。
16.进一步地,步骤s1中,数据同步节点通过随机密钥函数生成密钥key,具体为,
17.s11、确定密钥key的基本参数:最终生成密钥长度l
key
与密钥复杂度o
key
,最终生成密钥长度l
key
=(l1,l2)∈z,l1,l2为最短及最长的密钥长度,密钥复杂度o
key
决定生成密钥的组合复杂度;
18.s12、数据同步节点根据选择的l
key
及o
key
参数调用随机选择函数rand(l
key
,o
key
,n),n为不重复计数,随机选择函数以l
key
为次数进行遍历生成随机密钥值,密钥值组合为最终生成密钥key。
19.进一步地,步骤s2中,数据同步节点将待同步数据,即为明文di加入时间序列后,采用生成密钥通过高级加密标准aes实现的对称加密算法进行加密,得到密文数据ci,具体为,
20.s21、数据同步节点生成明文di,i为分布式系统同步数据唯一索引,后续明文di要计算hash散列,为减少hash冲突每个明文di在生成时加入生成时间序列;
21.s22、设高级加密标准aes的加密函数为e,则ci=e(key,di),加密函数把明文di和密钥key作为加密函数的参数输入,租加密函数e会输出对应的密文数据ci。
22.进一步地,步骤s21中,数据同步节点生成明文di,具体为,
23.s211、数据同步节点查询本地数据库数据同步记录表,获取其顺序主键的最大值nid
max
,同时获取数据同步节点在系统内的唯一标识id;
24.s212、获取此时系统时间t
now
,并通过序列化函数format获取时间序列化值s=format(t
now
);
25.s213、原始数据d
ini
中引入外部嵌入函数ex,将时间序列化值s嵌入到原始数据中以获取明文di;
26.s214、综合步骤s211、步骤s212、步骤s213计算获取明文di,如下:
[0027][0028]
进一步地,步骤s3中,数据同步节点将密文数据ci共享到区块链系统内所有的目的节点,具体为,
[0029]
s31、分布式数据库节点之间彼此保持通信,由传输控制协议tcp作为通信协议,同时定义目的节点“心跳”机制保持节点存活性,数据同步节点对区块链系统内所有的目的节
点判定心跳是否正常;
[0030]
s32、数据同步节点向所有保持心跳正常的目的节点发送数据密文,每个目的节点在收到密文后将在t时间后回复完整性校验结果。
[0031]
进一步地,步骤s31中,定义目的节点“心跳”机制保持节点存活性,具体为,
[0032]
s311、建立发送通信包定时器kat(t),t为通信包的发送间隔时间;
[0033]
s312、根据发送通信包定时器kat(t)发送通信包,同时更新收到通信包的时间rtk,k为次数;
[0034]
s313、建立判断定时器jt(b),b为连接标识符,每次收到通信包b=true;
[0035]
s314、判断定时器jt(b)不断计算收到的通信包间隔t
jt
=t
now-rtk,t
now
为当前时间,如果t
jt
大于设定值,则将连接标识符b=false判作超时,目的节点心跳不正常;否则连接标识符b=true,目的节点心跳正常。
[0036]
进一步地,步骤s5中,数据同步节点将密钥key、分布式数据库节点id与
[0037]
同步时间作为存储数据,以密文散列hash(ci)为数据索引组合,以密文散列为数据索引组合,生成键值对上链数据m
kv
,然后通过程序包sdk上传到区块链平台,具体为,
[0038]
s51、数据同步节点获取本节点在系统内的唯一标识id,同时获取当前时间t
now
,按照轻量化编程语言javascript对象表示法json格式序列号组合为数据序列{key,id,t
now
};
[0039]
s52、区块链账本记录包括不可更改的区块链和状态数据库账本,其中状态数据库以键值对key-value的形式存在,采用密文散列hash(ci)组成键值对上链数据m
kv
={hash(ci),{key,id,t
now
}};
[0040]
s53、每个数据同步节点都作为区块链平台的客户端client,数据同步节点调用本地逻辑中的软件开发套件sdk程序指定到区块链平台的背书节点进行set请求,将键值对上链数据m
kv
上传至区块链平台。
[0041]
进一步地,步骤s6中,区块链平台通过数据同步节点请求中的证书信息验证节点身份,身份验证成功后将键值对上链数据m
kv
记录到区块链账本,具体为,
[0042]
s61、在区块链平台中设置认证ca节点进行client身份验证,数据同步节点作为client向作为服务端server的ca节点发出注册申请,server返回注册密码用于client用户登录,以便获取身份证书,区块链平台对每次client请求都会验证用户身份,用户身份验证成功后建立连接,进入下一步骤s62;
[0043]
s62、区块链平台的排序节点收到键值对上链数据m
kv
的执行提案记录后进行排序,排序后交易同步到区块链平台的记账节点,记账节点保存交易到记账节点的账本中,同时更新状态数据库。
[0044]
进一步地,步骤s7中,目的节点对收到的密文数据ci进行hash计算获得密文散列,然后目的节点向区块链平台请求身份验证,身份验证成功后,通过密文散列向区块链平台请求获取上链数据m
kv
,进而获取密钥key后,通过高级加密标准aes解密密文数据ci,获取明文di,具体为,
[0045]
s71、目的节点收到密文数据ci后,通过验证计时器ch(ci,ca[t])计算得到哈希散列hash(ci),然后目的节点向区块链平台请求身份验证,身份验证成功后通过密文散列向区块链平台请求获取密钥信息的形式对收到密文数据ci进行完整性校验,将完整性校验的结果发送给数据同步节点,完整性校验成功后获取键值对上链数据m
kv
中的数据序列;
[0046]
s72、设高级加密标准aes解密函数为d,解密函数通过密钥和密文获取明文di=d(key,ci)。
[0047]
进一步地,步骤s71中,目的节点收到密文数据ci后,通过验证计时器ch(ci,ca[t])计算得到哈希散列hash(ci),然后目的节点向区块链平台请求身份验证,身份验证成功后通过密文散列向区块链平台请求获取密钥信息的形式对收到密文数据ci进行完整性校验,将完整性校验的结果发送给数据同步节点,完整性校验成功后获取键值对上链数据m
kv
中的数据序列,具体为,
[0048]
s711、目的节点收到密文数据ci后建立验证计时器ch(ci,ca[t]),ca为执行条件,密文数据ci为验证计时器ch(ci,ca[t])的传入参数;
[0049]
s712、计时器ca[t]以t为等待时间,数据同步节点上传区块链时延为t
up
,区块链平台排序记账时延为t
bc
,同步数据传输时延为tc,通过与步骤s711联合计算出
[0050][0051]
s713、目的节点向区块链平台请求身份验证,身份验证成功后,目的节点将计算到的哈希散列hash(ci)作为参数,通过sdk向区块链平台请求获取密钥信息;
[0052]
s714、如果区块链平台返回的结果为nil,表示区块链账本中没有该密文哈希散列,密文数据完整性丢失,目的节点将完整性校验的结果发送给数据同步节点,请求数据同步节点重新发送,返回步骤s711;否则验证成功,目的节点将完整性校验的结果发送给数据同步节点,并获取键值对上链数据m
kv
中的数据序列{key,id,t
now
}。
[0053]
该种基于区块链的分布式数据同步加密方法中,区块链系统主要包括以下三种角色:
[0054]
数据同步节点:产生数据变动的分布式数据库节点,主要负责数据加密密钥的确定,密钥上传及加密数据共享。整个方案数据流程的起始端。
[0055]
区块链平台:可信的去中心化平台,通过自身身份认证(ca)节点保证分布式数据库节点身份安全,账本记录不可篡改数据供分布式数据库节点请求读取与数据追溯。
[0056]
目的节点:数据库同步的接收者,也是分布式数据库节点,验证收到的同步数据并请求区块链平台获取密钥。
[0057]
本发明的有益效果是:该种基于区块链的分布式数据同步加密方法,采用对称加密算法对分布式数据库同步数据进行加密,能够保证共享过程中的数据隐私安全。通过区块链技术保存相关数据,保证数据的不可篡改性与可追溯性,解决了密钥共享安全、难以追溯的问题。该种基于区块链的分布式数据同步加密方法,在区块链系统中引入认证节点,分布式数据库节点与区块链的交互都需要通过证书认证,保证了密钥存取的节点身份安全。
附图说明
[0058]
图1是本发明实施例基于区块链的分布式数据同步加密方法的流程示意图。
[0059]
图2是实施例中数据同步节点、区块链平台和目的节点的说明示意图。
[0060]
图3是实施例中区块链平台记账的说明示意图。
[0061]
图4是实施例中数据目的节点获取明文的说明示意图。
具体实施方式
[0062]
下面结合附图详细说明本发明的优选实施例。
[0063]
实施例
[0064]
一种基于区块链的分布式数据同步加密方法,如图1和图2,包括以下步骤,
[0065]
s1、产生数据变动的分布式数据库节点即数据同步节点,数据同步节点通过随机密钥函数生成密钥key,密钥用于对明文di进行加密和解密;
[0066]
s11、确定密钥key的基本参数:最终生成密钥长度l
key
与密钥复杂度o
key
,最终生成密钥长度l
key
=(l1,l2)∈z,l1,l2为最短及最长的密钥长度,密钥复杂度o
key
决定生成密钥的组合复杂度;
[0067]
s12、数据同步节点根据选择的l
key
及o
key
参数调用随机选择函数rand(l
key
,o
key
,n),n为不重复计数,随机选择函数以l
key
为次数进行遍历生成随机密钥值,密钥值组合为最终生成密钥key。
[0068]
s2、数据同步节点将明文di加入时间序列后,采用生成密钥通过高级加密标准aes实现的对称加密算法进行加密,得到密文数据ci;
[0069]
s21、数据同步节点生成明文di,i为分布式系统同步数据唯一索引,后续明文di要计算hash散列,为减少hash冲突每个明文di在生成时加入生成时间序列;
[0070]
s211、数据同步节点查询本地数据库数据同步记录表,获取其顺序主键的最大值nid
max
,同时获取数据同步节点在系统内的唯一标识id;
[0071]
s212、获取此时系统时间t
now
,并通过序列化函数format获取时间序列化值s=format(t
now
);
[0072]
s213、原始数据d
ini
中引入外部嵌入函数ex,将时间序列化值s嵌入到原始数据中以获取明文di;
[0073]
s214、综合步骤s211、步骤s212、步骤s213计算获取明文di,如下:
[0074][0075]
s22、设高级加密标准aes的加密函数为e,则ci=e(key,di),加密函数把明文di和密钥key作为加密函数的参数输入,租加密函数e会输出对应的密文数据ci。
[0076]
s3、数据同步节点将密文数据ci共享到区块链系统内所有的目的节点;
[0077]
s31、分布式数据库节点之间彼此保持通信,由传输控制协议tcp作为通信协议,同时定义目的节点“心跳”机制保持节点存活性,数据同步节点对区块链系统内所有的目的节点判定心跳是否正常;如图4。
[0078]
步骤s31中,定义目的节点“心跳”机制保持节点存活性,具体为,
[0079]
s311、建立发送通信包定时器kat(t),t为通信包的发送间隔时间;
[0080]
s312、根据发送通信包定时器kat(t)发送通信包,同时更新收到通信包的时间rtk,k为次数;
[0081]
s313、建立判断定时器jt(b),b为连接标识符,每次收到通信包连接标识符b=true;
[0082]
s314、判断定时器jt(b)不断计算收到的通信包间隔t
jt
=t
now-rtk,t
now
为当前时
间,如果t
jt
大于设定值,则将连接标识符b=false判作超时;否则连接标识符b=true。
[0083]
s32、数据同步节点向所有保持心跳正常的目的节点发送数据密文,每个目的节点在收到密文后将在t时间后回复完整性校验结果。
[0084]
s4、为保证数据传输过程的完整性,数据同步节点将密文数据ci通过散列函数hash计算,获得对应的哈希散列作为密文数据ci的密文散列hash(ci);
[0085]
s5、数据同步节点将密钥key、分布式数据库节点id与同步时间作为存储数据,以密文散列hash(ci)为数据索引组合,以密文散列为数据索引组合,生成键值对上链数据m
kv
,然后通过程序包sdk上传到区块链平台。
[0086]
s51、数据同步节点获取本节点在系统内的唯一标识id,同时获取当前时间t
now
,按照轻量化编程语言javascript对象表示法json格式序列号组合为数据序列{key,id,t
now
};
[0087]
步骤s51中,按照json格式序列号组合为{key,id,t
now
},具体为,
[0088]
s511、新建与区块链平台运行的智能合约相对应的对象结构体struct={data,peerid,time};
[0089]
s512、新建对象并初始化temp={nil,0,nil};
[0090]
s513、将对应参数赋值temp={key,id,t
now
},最后调用json.marshal函数序列化为json序列号{key,id,t
now
}。
[0091]
s52、区块链账本记录包括不可更改的区块链和状态数据库账本,其中状态数据库以键值对key-value的形式存在,采用密文散列hash(ci)组成键值对上链数据m
kv
={hash(ci),{key,id,t
now
}};
[0092]
s53、每个数据同步节点都作为区块链平台的客户端client,数据同步节点调用本地逻辑中的软件开发套件sdk程序指定到区块链平台的背书节点进行set请求,将键值对上链数据m
kv
上传至区块链平台。
[0093]
s6、区块链平台通过数据同步节点请求中的证书信息验证节点身份,身份验证成功后将键值对上链数据m
kv
记录到区块链账本;如图3。
[0094]
s61、在区块链平台中设置认证ca节点进行client身份验证,数据同步节点作为client向作为服务端server的ca节点发出注册申请,server返回注册密码用于client用户登录,以便获取身份证书,区块链平台对每次client请求都会验证用户身份,用户身份验证成功后建立连接,进入下一步骤s62;
[0095]
s62、区块链平台的排序节点收到键值对上链数据m
kv
的执行提案记录后进行排序,排序后交易同步到区块链平台的记账节点,记账节点保存交易到记账节点的账本中,同时更新状态数据库。
[0096]
s7、目的节点对收到的密文数据ci进行hash计算获得密文散列,然后目的节点向区块链平台请求身份验证,身份验证成功后,通过密文散列向区块链平台请求获取上链数据m
kv
,进而获取密钥key后,通过高级加密标准aes解密密文数据ci,获取明文di,如图4。
[0097]
s71、目的节点收到密文数据ci后,通过验证计时器ch(ci,ca[t])计算得到哈希散列hash(ci),然后目的节点向区块链平台请求身份验证,身份验证成功后通过密文散列向区块链平台请求获取密钥信息的形式对收到密文数据ci进行完整性校验,将完整性校验的结果发送给数据同步节点,完整性校验成功后获取键值对上链数据m
kv
中的数据序列;
[0098]
s711、目的节点收到密文数据ci后建立验证计时器ch(ci,ca[t]),ca为执行条件,
密文数据ci为验证计时器ch(ci,ca[t])的传入参数;
[0099]
s712、计时器ca[t]以t为等待时间,数据同步节点上传区块链时延为t
up
,区块链平台排序记账时延为t
bc
,同步数据传输时延为tc,通过与步骤s711联合计算出
[0100][0101]
s713、目的节点向区块链平台请求身份验证,身份验证成功后,目的节点将计算到的哈希散列hash(ci)作为参数,通过sdk向区块链平台请求获取密钥信息;
[0102]
s714、如果区块链平台返回的结果为nil,表示区块链账本中没有该密文哈希散列,密文数据完整性丢失,目的节点将完整性校验的结果发送给数据同步节点,请求数据同步节点重新发送,返回步骤s711;否则验证成功,目的节点将完整性校验的结果发送给数据同步节点,并获取键值对上链数据m
kv
中的数据序列{key,id,t
now
}。
[0103]
s72、设高级加密标准aes解密函数为d,解密函数通过密钥和密文获取明文di=d(key,ci)。
[0104]
该种基于区块链的分布式数据同步加密方法,采用对称加密算法对分布式数据库同步数据进行加密,能够保证共享过程中的数据隐私安全。通过区块链技术保存相关数据,保证数据的不可篡改性与可追溯性,解决了密钥共享安全、难以追溯的问题。该种基于区块链的分布式数据同步加密方法,在区块链系统中引入认证节点,分布式数据库节点与区块链的交互都需要通过证书认证,保证了密钥存取的节点身份安全。
[0105]
该种基于区块链的分布式数据同步加密方法,应用区块链技术,通过设置分布式数据库节点与区块链平台的安全交互,将加密密钥、节点身份等信息记录到区块链账本,以区块链平台为中间件解析同步数据密钥,避免了数据库同步的数据隐私及安全问题。同时区块链技术不可篡改的特性可以支持每条同步数据的反向查询,保证数据源可追溯。
[0106]
尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献