一种数据加解密方法、数据上传端、数据接收端及系统

文档序号:26531105发布日期:2021-09-04 11:44阅读:84来源:国知局
一种数据加解密方法、数据上传端、数据接收端及系统

1.本发明涉及区块链技术领域,特别涉及一种数据加解密方法、数据上传端、数据接收端及系统。


背景技术:

2.信息安全是当今社会广泛关注的热点,其中隐私数据的保护又是重中之重。隐私数据不仅需要对于除数据拥有者的其他用户保密,还需对数据储存单位进行保密,密码学的发展为前者提供了技术支撑,而区块链技术的产生为后者扫除了障碍。
3.智能合约是区块链中关键的逻辑代码,运行在一个安全隔离的虚拟机中,是数据从客户端到数据库的中间层。智能合约本质上来说就是一串计算机自动执行的代码,按照预设的条件,当满足合约中的要求时将自动运行逻辑代码。早期智能合约并没有得到特别的重视,直到区块链技术的诞生,极大了推动了智能合约的发展,其不可篡改,去中心化的特性正是智能合约能够正确,安全运行的基石。自此,一系列结合智能合约的应用场景应运而生。
4.在基于区块链的农产品溯源系统中,因为数据都保存在区块链中,导致所有隶属联盟链的组织都可以自由查看数据,而对于隐私数据,数据拥有者并不想公开,比如:对于生产商而言,涉及法人身份证号、联系电话、家庭住址等敏感数据就不想被公开,此时可以采用加密技术。
5.现有技术中,主要有两种类型的加密算法:对称加密和非对称加密,不管是哪种加密算法都面临着密钥管理的问题,一旦加密密钥丢失,数据的安全就受到威胁。因此,密钥的管理成为了制约信息发展安全的一大难题。


技术实现要素:

6.基于此,本发明的目的是提供一种数据加解密方法、数据上传端、数据接收端及系统,用于解决现有技术中的加密算法需要管理密钥,导致数据安全存在安全隐患的技术问题。
7.本发明一方面提供一种数据加密方法,所述方法包括:获取数据明文,对所述数据明文进行序列化处理,得到字节流明文;获取aes密钥,结合所述aes密钥对所述字节流明文进行aes算法加密,得到数据密文;将所述数据密文进行编码得到字符串密文;将所述字符串密文经数据上链写入至区块链数据库中。
8.本发明另一方面提供一种数据解密方法,所述方法包括:获取区块链数据库发送的数据密文;获取用户输入的解密口令,并从所述区块链数据库的布隆过滤器当中获取预设口令,将所述解密口令与所述预设口令进行认证,所述预设口令为所述数据密文上链前预存
到布隆过滤器当中的口令;当认证通过,则对所述数据密文进行aes算法解密,对aes算法解密后的数据密文进行逆序列化,得到与所述数据密文对应的数据明文,输出所述数据明文;当认证不通过,则输出所述数据密文。
9.上述数据加解密方法,通过将数据明文结合aes密钥对数据明文进行序列化处理得到的字节流明文进行aes算法加密,得到的数据密文经数据上链至区块链数据库中,当需要访问数据时,从区块链数据库中获取数据密文,根据预设口令认证输入的解密口令是否通过,认证通过后对数据解密并输出与数据密文对应的数据明文,认证失败则输出数据密文,通过口令认证的方式,不涉及密钥的分配,避免因密钥丢失而威胁数据安全,对于不同组的数据可通过设置不同的布隆过滤器进行验证,实现数据的差异化验证,保证了数据安全,解决了现有技术中的加密算法需要管理密钥,导致数据安全存在安全隐患的技术问题。
10.另外,根据本申请上述的数据加解密方法,还可以具有如下附加的技术特征:进一步地,所述获取aes密钥的步骤之前包括:通过aes密钥生成算法生成所述aes密钥。
11.进一步地,所述aes密钥可重复对多组数据明文进行使用。
12.进一步地,所述将所述字符串密文经数据上链写入至区块链数据库中的步骤包括:将所述字符串密文以k

v键值对方式写入至区块链数据库中。
13.进一步地,所述从所述区块链数据库的布隆过滤器当中获取预设口令的步骤之前包括:将所述布隆过滤器设于所述区块链数据库中;将所述预设口令储存于布隆过滤器中,当所述预设口令于所述布隆过滤器内的储存时长超过预设时长时,清空储存于所述布隆过滤器内的所述预设口令。
14.进一步地,所述布隆过滤器可同时容纳多个不同的预设口令。
15.本发明另一方面提供一种数据上传端,包括:数据明文获取模块,用于获取数据明文,对所述数据明文进行序列化处理,得到字节流明文;加密模块,用于获取aes密钥,结合所述aes密钥对所述字节流明文进行aes算法加密,得到数据密文;编码模块,用于将所述数据密文进行编码得到字符串密文;写入模块,用于将所述字符串密文经数据上链写入至区块链数据库中。
16.本发明另一方面还提供一种数据接收端,包括:数据密文获取模块,用于获取区块链数据库发送的数据密文;认证模块,用于获取用户输入的解密口令,并从所述区块链数据库的布隆过滤器当中获取预设口令,将所述解密口令与所述预设口令进行认证,所述预设口令为所述数据密文上链前预存到布隆过滤器当中的口令;第一执行模块,当认证通过,则对所述数据密文进行aes算法解密,对aes算法解密后的数据密文进行逆序列化,得到与所述数据密文对应的数据明文,输出所述数据明文;第二执行模块,当认证不通过,则输出所述数据密文。
17.本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实施例了解到。
附图说明
18.图1为本发明第一实施例中联盟链框架图;图2为本发明第一实施例中智能合约设计图;图3为本发明第一实施例中数据加密流程图;图4为本发明第一实施例中聚合加密过程架构图;图5为本发明第一实施例中数据解密流程图;图6为本发明第一实施例中布隆过滤器设计图;图7为本发明第一实施例中口令认证流程图;图8为本发明第一实施例中数据输入

查询流程示意图。
19.图9为本发明实施例中第四实施例中数据加解密系统架构图。
20.如下具体实施方式将结合上述附图进一步说明本发明。
具体实施方式
21.为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的若干实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容更加透彻全面。
22.除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。
23.联盟链是区块链的一种类型,在该链中各组织的节点是允许准入的。如图1所示,联盟链中各节点都在同一网络内,节点能够相互通信。智能合约运行在联盟链上,每个节点都安装了智能合约。本申请提出一种基于智能合约的聚合加密方法,聚合加密主要就是基于智能合约进行优化,在添加操作时,对数据进行加密,在查询数据时,进行口令认证,验证通过返回解密数据。区块链中使用了p2p技术,任意两个节点之间可以自由通信,每个节点都具备一份完整的数据库,通过共识机制实现了可用性与容错性,与传统中心化数据库不同,区块链这种链式结构具备去中心化,不可篡改,可追溯等优点,而智能合约运行在区块链中,可确保合约一旦运行不受外界干扰。根据这一特点,在智能合约上生成密钥并进行数据加密可消除密钥泄露的风险。
24.本研究将hyperledger fabric作为智能合约的区块链运行平台,在fabric中智能合约也称作链码。fabric中,链码运行在一个隔离,安全的容器内,当链码执行后,外部无法访问且链码不可更改,具体如图2所示。
25.实施例一在本发明实施例中,请参阅图3,图3为本发明实施例中的数据加密方法的示意图,如图3所示,方法包括步骤s101至步骤s104:s101、获取数据明文,对数据明文进行序列化处理,得到字节流明文。
26.首先将待加密数据进行序列化,此处的待加密数据即为数据明文,然后使用密钥生成算法生成的aes密钥对序列化后的数据进行aes加密,最后将加密后的数据以k

v键值对的方式保存到区块链世界状态中。
27.s102、获取aes密钥,结合aes密钥对字节流明文进行aes算法加密,得到数据密文。
28.在数据输入阶段,数据拥有者将待加密数据的口令上传至链码中,在链码内,数据进行加密,加密密钥在链码中根据算法生成,将加密后的数据以k

v键值对写入区块链世界状态,同时,将口令添加入布隆过滤器中;在数据查询阶段,首先根据k值获取加密数据,从数据拥有者中获取口令,使用口令通过认证,进行聚合解密,得到真实数据。
29.s103、将数据密文进行编码得到字符串密文。
30.s104、将字符串密文经数据上链写入至区块链数据库中。
31.具体的,将字符串密文经数据上链写入至区块链数据库中的步骤包括:将字符串密文以k

v键值对方式写入至区块链数据库中。
32.本申请中的加密方法采用聚合加密方法,聚合加密是在智能合约上对数据进行总体加密的方法,根据任何类型数据都可以序列化为字节流这一特点,我们将数据转化为字节类型,通过aes进行加密。加密密钥在链码中生成,对任何人都不可见。如图4所示,先将json对象采用marshal函数进行序列化,之后采用aes对序列化后的字节进行加密,加密后的数据表现为乱码的形式,通过base64编码转化为可见字符,最终保存在区块链中。
33.具体的,获取aes密钥的步骤之前包括:通过aes密钥生成算法生成aes密钥。
34.在本申请中,aes密钥可重复对多组数据明文进行使用。
35.在本发明实施例中,请参阅图5,图5为本发明实施例中的数据解密方法的示意图,如图5所示,方法包括步骤s201至步骤s204:s201、获取区块链数据库发送的数据密文。
36.在本实施例中,数据接收端向区块链数据库发送获取数据密文的请求,当区块链数据库接收到获取数据密文的请求时,向数据接收端发送数据密文。在一些可选实施例中,数据接收端可以为操作终端,例如电脑端、手机端等等。
37.根据查询数据的k值获取数据。此时,该数据为加密后的字符类型。根据k值从区块链世界状态中获取加密数据,然后从数据拥有者中获取口令,使用口令通过认证,之后进行aes解密,最后通过逆序列化获取解密后数据。
38.s202、获取用户输入的解密口令,并从区块链数据库的布隆过滤器当中获取预设口令,将解密口令与预设口令进行认证。
39.具体的,预设口令为数据密文上链前预存到布隆过滤器当中的口令。在本发明中,结合布隆过滤器周期性分发口令用于认证,不仅安全性高,也兼顾灵活性,口令存在有效期,通过对布隆过滤器的定时更新生成新的口令。
40.布隆过滤器是一种可以用于检测元素是否存在一个集合中的数据结构,由于所有元素都要经过hash函数转换,而hash碰撞的概率性事件的发生导致某一不存在的元素可能被检测为存在元素,也就是具有假阳性这一特点。为了降低假阳性的概率,如图6所示,在布隆过滤器中设置了一个计时器,当达到预设的时长,布隆过滤器将进行重置操作,清空所有的数据。因为口令作为存储元素,其数量是有限且较少的,本身发生误判的概率就低,加上
计时器的设置,一方面使得认证准确率达到了可接受的范围,另一方面口令的更新保障了数据的安全性。
41.在本申请中,布隆过滤器可同时容纳多个不同的预设口令。
42.口令认证是通过输入相应的口令,认证通过后才具备相应的权限。如图7所示,口令认证在链码中实现,使用了布隆过滤器作为认证的功能,口令可以有多个,可以选择外部输入口令或者内部随机生成口令的方式,将口令输入布隆过滤器中完成绑定。在数据查询阶段,需要输入口令进行认证,如果通过返回解密的数据,否则返回加密的数据。
43.当认证通过,则执行步骤s203;s203、对数据密文进行aes算法解密,对aes算法解密后的数据密文进行逆序列化,得到与数据密文对应的数据明文,输出数据明文。
44.当认证不通过,则执行步骤s204;s204、输出数据密文。
45.在解密查询阶段,主要包括四个部分,第一部分为根据查询数据的k值(即key值)获取数据,此时,该数据为加密后的字符类型。第二部分是口令认证过程,该过程使用了布隆过滤器,布隆过滤器主要有两大功能,一个是元素添加功能,一个是元素检测功能,在检测过程中,只有添加的元素返回值为true,否则返回为false,因此,根据这一特性实现了元素的过滤。通过输入的口令来判断是否通过,不通过直接返回密文数据,通过则进行下一部分。第三部分为base64解码,此时的数据是base64编码后的数据,base64通用提供了一个相对应的解码函数,该函数可以将字符型的数据解码为二进制形式。第四部分为解密,该过程使用aes算法解密,使用加密时的密钥进行解密操作,就能获取数据的明文。至此,将明文数据返回就完成了查询过程。
46.在本实施例中,采用布隆过滤对口令进行认证,认证通过后对数据解密并输出数据明文,认证失败则输出数据密文。口令存在有效期,通过对布隆过滤器的定时更新生成新的口令。密钥可重复使用,因为不涉及密钥的分配,对于不同组的数据可通过设置不同的布隆过滤器进行验证,实现数据的差异化验证,增加数据的安全性。
47.具体的,在基于区块链的农产品溯源系统中,因为数据都保存在区块链中,导致所有隶属联盟链的组织都可以自由查看数据,而对于隐私数据,数据拥有者并不想公开,此时可以采用加密技术。如:对于生产商而言,涉及法人身份证号、联系电话、家庭住址等敏感数据可以采用聚合加密并设置口令,当一些有资格的组织(如监管部门)需要查看该数据时,生产商可以将设置的口令发送给该组织,该组织经过口令认证后就可以查看原始数据,即数据明文,而没有口令的组织只能查看加密后的数据,即数据密文。
48.具体的,从区块链数据库的布隆过滤器当中获取预设口令的步骤之前包括:将布隆过滤器设于区块链数据库中,再将预设口令储存于布隆过滤器中,当预设口令于布隆过滤器内的储存时长超过预设时长时,清空储存于布隆过滤器内的预设口令。
49.开始阶段,对布隆过滤器进行初始化操作得到一个空的布隆过滤器,然后,根据需求将口令添加入布隆过滤器中并设置一个计时器,之后,当计时器到期时,重新对布隆过滤进行初始化操作得到空布隆过滤,最后,不断重复添加元素和清空布隆过滤器的过程。
50.在本申请中,从布隆过滤器初始化开始计时的,具体实施时,可以设置一个期限,如一个月,一个月后布隆过滤器内所有的元素都清空,此时,之前发布的口令也就无效了,
这样做既可以降低布隆过滤器的假阳性,也可以加强数据的安全性。具体的,可在智能合约内设置一循环计时函数,使其在智能合约内自动执行,从而计算预设口令于布隆过滤器内的储存时长是否超过预设时长。
51.如图8,为本发明的数据加解密方法中数据输入与数据查询的流程示意图,在链码中,我们将对数据进行聚合加密,密钥在链码中生成且不对外传输;当需要访问数据时,采用布隆过滤对口令进行认证,确保了加密密钥无需传输,对任何人均不可见,以此进一步加强了数据的安全。布隆过滤对口令认证通过后对数据解密并输出数据明文,认证失败则输出数据密文。口令存在有效期,通过对布隆过滤器的定时更新生成新的口令,避免用户一次知道口令,即可一直使用的情况,从而,进一步提高了数据的安全性。密钥可重复使用,因为不涉及密钥的分配,对于不同组的数据可通过设置不同的布隆过滤器进行验证,实现数据的差异化验证。口令有两种生成方式,一种是可进行手动输入,一种是链码中自动生成,口令的生成方法同时兼顾了安全性和灵活性。
52.综上,本发明上述实施例当中的数据加解密方法,通过将数据明文结合aes密钥对数据明文进行序列化处理得到的字节流明文进行aes算法加密,得到的数据密文经数据上链至区块链数据库中,当需要访问数据时,根据待查数据的k值从区块链数据库中获取数据密文,根据预设口令认证输入的解密口令是否通过,认证通过后对数据解密并输出与数据密文对应的数据明文,认证失败则输出数据密文,通过口令认证的方式,不涉及密钥的分配,避免因密钥丢失而威胁数据安全,对于不同组的数据可通过设置不同的布隆过滤器进行验证,实现数据的差异化验证,保证了数据安全,解决了现有技术中的加密算法需要管理密钥,导致数据安全存在安全隐患的技术问题。
53.实施例二本申请实施例还提供的一种数据上传端,包括:数据明文获取模块,用于获取数据明文,对数据明文进行序列化处理,得到字节流明文;加密模块,用于获取aes密钥,结合aes密钥对字节流明文进行aes算法加密,得到数据密文;编码模块,用于将数据密文进行编码得到字符串密文;写入模块,用于将字符串密文经数据上链写入至区块链数据库中。
54.综上,本发明上述实施例当中的数据上传端,通过将数据明文结合aes密钥对数据明文进行序列化处理得到的字节流明文进行aes算法加密,得到的数据密文经数据上链至区块链数据库中,当需要访问数据时,根据待查数据的k值从区块链数据库中获取数据密文,根据预设口令认证输入的解密口令是否通过,认证通过后对数据解密并输出与数据密文对应的数据明文,认证失败则输出数据密文,通过口令认证的方式,不涉及密钥的分配,避免因密钥丢失而威胁数据安全,对于不同组的数据可通过设置不同的布隆过滤器进行验证,实现数据的差异化验证,保证了数据安全,解决了现有技术中的加密算法需要管理密钥,导致数据安全存在安全隐患的技术问题。
55.实施例三本申请实施例另一方面提供一种数据接收端,包括:数据密文获取模块,用于获取区块链数据库发送的数据密文;
认证模块,用于获取用户输入的解密口令,并从区块链数据库的布隆过滤器当中获取预设口令,将解密口令与预设口令进行认证,预设口令为数据密文上链前预存到布隆过滤器当中的口令;第一执行模块,当认证通过,则对数据密文进行aes算法解密,对aes算法解密后的数据密文进行逆序列化,得到与数据密文对应的数据明文,输出数据明文;第二执行模块,当认证不通过,则输出数据密文。
56.综上,本发明上述实施例当中的数据接收端,通过将数据明文结合aes密钥对数据明文进行序列化处理得到的字节流明文进行aes算法加密,得到的数据密文经数据上链至区块链数据库中,当需要访问数据时,根据待查数据的k值从区块链数据库中获取数据密文,根据预设口令认证输入的解密口令是否通过,认证通过后对数据解密并输出与数据密文对应的数据明文,认证失败则输出数据密文,通过口令认证的方式,不涉及密钥的分配,避免因密钥丢失而威胁数据安全,对于不同组的数据可通过设置不同的布隆过滤器进行验证,实现数据的差异化验证,保证了数据安全,解决了现有技术中的加密算法需要管理密钥,导致数据安全存在安全隐患的技术问题。
57.实施例四请参阅图9,本申请另一方面还一种数据加解密系统,包括数据上传端、数据接收端以及区块链数据库;区块链数据库连接数据上传端与数据接收端,数据上传端用于对数据明文进行加密,数据接收端用于对数据密文进行解密,区块链数据库用于接收经数据上传端加密后的数据密文、并为数据接收端获取数据密文综上,本发明上述实施例当中的数据加解密系统,通过将数据明文结合aes密钥对数据明文进行序列化处理得到的字节流明文进行aes算法加密,得到的数据密文经数据上链至区块链数据库中,当需要访问数据时,根据待查数据的k值从区块链数据库中获取数据密文,根据预设口令认证输入的解密口令是否通过,认证通过后对数据解密并输出与数据密文对应的数据明文,认证失败则输出数据密文,通过口令认证的方式,不涉及密钥的分配,避免因密钥丢失而威胁数据安全,对于不同组的数据可通过设置不同的布隆过滤器进行验证,实现数据的差异化验证,保证了数据安全,解决了现有技术中的加密算法需要管理密钥,导致数据安全存在安全隐患的技术问题。
58.在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
59.计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印程序的纸或其他合适的介
质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得程序,然后将其存储在计算机存储器中。
60.应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
61.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、
ꢀ“
示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
62.尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1