CN112948898A - 一种区块链中防止应用数据被篡改的方法和安全模块 - Google Patents
一种区块链中防止应用数据被篡改的方法和安全模块 Download PDFInfo
- Publication number
- CN112948898A CN112948898A CN202110346475.6A CN202110346475A CN112948898A CN 112948898 A CN112948898 A CN 112948898A CN 202110346475 A CN202110346475 A CN 202110346475A CN 112948898 A CN112948898 A CN 112948898A
- Authority
- CN
- China
- Prior art keywords
- salt
- data
- value
- field
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出一种区块链中防止应用数据在数据库中被篡改的方法,包括:S1,对于每张数据库表在链上计算数据库表的唯一盐值并存储到链上;S2,在数据库表中设置盐值字段并将上链数据与所述盐值字段一起写入到数据库表中,其中将上链数据与唯一盐值一起做运算得到所述盐值字段;S3,针对查询到的据库中的记录,从链上取到这张表的唯一盐值,将查询到的数据去除盐值字段后与该表的唯一盐值做运算;将得到的运算值与查询到数据表中的盐值字段做比对,其中步骤S2和S3中的运算是同一种运算方法。本发明还提出一种区块链中防止应用数据被篡改的安全模块。本发明能快速得到查询结果,又能判断查询到的数据是否被篡改过。
Description
技术领域
本发明涉及区块链技术领域,更具体的,涉及一种区块链中防止应用数据被篡改的方法和安全模块。
背景技术
将数据上传到区块链中,可以防止用户对链上数据进行篡改,目前很多存证类项目都是利用了区块链数据不可篡改的特性。但是由于存储结构的原因,链上数据的查询效率较低,无法像关系型数据库一样用sql语句去检索已上链数据。所以一般会采用数据先上链,然后将链上数据同步到关系型数据库(如mysql)。做查询时,客户端向区块链节点提供查询条件,区块链节点去关系型数据库中查询上链数据这种方式。但是使用关系型数据库后,存储的数据不具备链上数据防篡改的特性,无法防止数据库管理员直接更改数据库的行为,最终导致客户端查询到的数据与链上不一致的问题。
发明内容
本发明针对本发明旨在解决背景技术中数据库管理员直接修改关系型数据库,使得客户端查询数据时得到错误的查询结果,而无法在链上进行验证数据真伪的问题。
本发明提出了一种区块链中防止应用数据被篡改的方法,包括:S1,对于每张数据库表,在链上计算数据库表的唯一盐值并存储;S2,在数据库表中设置盐值字段,并将上链数据与所述盐值字段一起写入到数据库表中,其中将上链数据与所述唯一盐值一起做运算得到所述盐值字段;S3,针对查询到的据库中的记录,从链上取到这张表的唯一盐值,将查询到的数据去除盐值字段后与该表的唯一盐值一起做运算;将得到的运算值与查询到数据表中的盐值字段做比对,一致则代表数据未被篡改,不一致则代表数据被改过,其中步骤S2和S3中的运算是同一种运算方法。
本发明的有益效果包括:1.用户做数据查询时,既能快速得到查询结果,又能判断查询到的数据是否被篡改过。2.盐值只在需要时进行计算,不对外暴露。
附图说明
为了更容易理解本发明,将通过参照附图中示出的具体实施方式更详细地描述本发明。这些附图只描绘了本发明的典型实施方式,不应认为对本发明保护范围的限制。
图1本发明的方法的一个实施例的流程图。
图2为本发明的方法的一个实施例的流程图。
图3为本发明的方法的另一个实施例的流程图。
图4为本发明的方法的又一个实施例的流程图。
具体实施方式
下面参照附图描述本发明的实施方式,以便于本领域的技术人员可以更好的理解本发明并能予以实施,但所列举的实施例不作为本发明的限定,在不冲突的情况下,下述的实施例及实施例中的技术特征可以相互组合,其中相同的部件用相同的附图标记表示。
如图1-2所示,本发明的方法包括:
S1,对于每张数据库表,在链上计算数据库表的唯一盐值salt_value并存储在链上。
S2,在数据库表中设置盐值字段salt_hash,并将上链数据与盐值字段salt_hash一起写入到数据库表中。其中将上链数据与所述唯一盐值salt_value一起hash得到所述盐值字段salt_hash。
S3,区块链节点接收到查询请求时,根据查询条件获取数据库中的记录;从链上取到该表的唯一盐值salt_value,将查询到的数据去除盐值字段salt_hash后与唯一盐值salt_value一起做哈希运算,得到待验证哈希值;将所述待验证哈希值与查询到数据中的盐值字段salt_hash做比对,一致则代表数据未被篡改,并返回查询结果,不一致则代表数据被改过,返回错误。
本发明的方法还包括:通过表交易完成数据表的创建。根据背景技术所述,数据需要先上链然后同步到数据库,数据在数据库中以数据表的形式展现。所述表交易要素如下:
表1表交易要素
字段名 | 类型 | 说明 |
Address | 字符串 | 建表账户地址 |
TransactionType | 整数 | 交易类型 |
TableName | 字符串 | 表名 |
Structure | JSON字符串 | 表结构 |
其中表结构字段定义表中各字段名称及类型、长度等。特别的是,表结构中除了上链数据,需要设置一个salt_hash字段,一个简单的表结构示例如下:
表2表结构
字段名 | 类型 | 说明 |
id | 字符串 | 主键 |
name | 字符串 | 姓名 |
age | 整数 | 年龄 |
salt_hash | 字符串 | 加盐hash |
在一个实例中,区块链基于账户-余额模型,数据表创建完成后,在链上全局世界状态中增加一项新的状态,新的世界状态可以通过建表用户地址与表名构成的联合索引找到,数据表的全局世界状态要素如下:
表3数据表的全局世界状态要素
进一步,在步骤S1中,计算数据表的唯一盐值时,盐值需要与数据表有唯一对应关系,可选地,采用如下的计算方法:
salt_value=hash_func(OwnerAddress+TableName+CreateLedgerHash);
其中hash_func代表哈希函数,可以是sha256,sha512,或者自义的哈希散列函数。
进一步,如图3所示,在步骤S2中,数据需要上链及入库。数据上链时,先由共识模块对交易进行共识,共识通过后,根据步骤S1计算的数据表的唯一盐值,将上链数据与该唯一盐值一起做哈希运算,得出salt_hash值,与上链数据一起写入数据库表中。区块链节点在交易共识通过与入库完成后,分别返回交易共识结果与入库结果。
进一步,在步骤S3中,进行数据查询校验时。区块链节点收到查询请求后根据查询条件去数据库中查询得到查询结果。根据步骤S1中计算的数据表的唯一盐值,将计算得到的salt_hash与从数据库中查询出来的salt_hash字段值做比较。如果salt_hash都是一致的,那么说明数据未被篡改,可返回给客户端,如果不一致,则说明数据已被篡改,返回对应错误信息给客户端。
在一个实施方式中,如图4所示,查询结果可能为多行,则查询和校验方法如下:
1)计算查询到的表的唯一盐值,可以采用如前所述相同的方法。
2)对每一行结果数据按步骤3-5)进行操作:
3),将当前记录拆分为上链数据与salt_hash两部分。
4),上链数据与1)中得到的唯一盐值一起做哈希运算,得到salt_hash。
5),将4)中计算得到的salt_hash与从数据库中查询出来的salt_hash字段值做比较。如果每一行经过步骤3-5)的操作后salt_hash都是一致的,那么说明数据未被篡改,可返回给客户端,如果其中某一行salt_hash不一致,则说明数据已被篡改,返回对应错误信息给客户端。
另外,多个区块链节点都做数据库同步,在做数据查询时,向多个点进行查询,然后对查询结果做比对。将链上数据同步到关系型数据库时,可在数据库表中增加存储交易hash的字段,查询数据时,先通查询到数据库表中的数据,然后通过交易hash查询链上数据,最终通过上链交易中的数据与数据库表的中数据进行比对,来判断数据是否被篡改过。
根据本发明的另一方面,提出一种区块链中防止应用数据被篡改的安全模块,所述安全模块装载到区块链节点中。
所述安全模块能够创建数据库表。所述安全模块通过表交易完成数据表的创建。数据表的创建与前述表1-3相同。
所述安全模块对每张数据库表,在链上计算数据库表的唯一盐值salt_value并存储在链上。
所述安全模块在数据库表中设置salt_hash字段,并将上链数据与salt_hash一起写入到数据库表中。其中将上链数据与所述唯一盐值salt_value一起hash得到salt_hash字段。
在收到接收到查询请求时,所述安全模块根据查询条件获取数据库中的记录;从链上取到该表的唯一盐值salt_value,将查询到的数据去除salt_hash字段后与salt_value一起做哈希运算,得到待验证hash值;将所述待验证hash值与查询到数据中的salt_hash做比对,一致则代表数据未被篡改,并返回查询结果,不一致则代表数据被改过,返回错误。
当查询到多行结果时,安全模块对每一行结果数据按如下操作进行验证:
1)计算该表的唯一盐值;
2)对每一行结果数据按步骤3-5)进行操作;
3)将当前记录拆分为上链数据与盐值字段两部分;
4)将上链数据与1)中得到的唯一盐值一起做哈希运算,得到待验证盐值字段;
5)将4)中计算得到的待验证盐值字段与从数据库中查询出来的盐值字段值做比较,如果每一行都是一致的,则数据未被篡改。
以上所述的实施例,只是本发明较优选的具体实施方式,本说明书使用词组“在一种实施例中”、“在另一个实施例中”、“在又一实施例中”或“在其他实施例中”,其均可指代根据本公开的相同或不同实施例中的一个或多个。本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
Claims (8)
1.一种区块链中防止应用数据被篡改的方法,其特征在于,包括:
S1,对于每张数据库表,在链上计算数据库表的唯一盐值并存储;
S2,在数据库表中设置盐值字段,并将上链数据与所述盐值字段一起写入到数据库表中,其中将上链数据与所述唯一盐值一起做运算得到所述盐值字段;
S3,针对查询到的据库中的记录,从链上取到这张表的唯一盐值,将查询到的数据去除盐值字段后与该表的唯一盐值一起做运算;将得到的运算值与查询到数据表中的盐值字段做比对,一致则代表数据未被篡改,不一致则代表数据被改过,其中步骤S2和S3中的运算是同一种运算方法。
2.根据权利要求1所述的方法,其特征在于,
所述步骤S2和步骤S3中的运算指的是哈希运算。
3.根据权利要求1所述的方法,其特征在于,还包括:
通过自定义链上表交易完成数据表的创建。
4.根据权利要求2所述的方法,其特征在于,当步骤S3中查询到多行结果时,通过如下方法进行验证:
1)计算该表的唯一盐值;
2)对每一行结果数据按步骤3-5)进行操作;
3)将当前记录拆分为上链数据与盐值字段两部分;
4)将上链数据与1)中得到的唯一盐值一起做哈希运算,得到待验证盐值字段;
5)将4)中计算得到的待验证盐值字段与从数据库中查询出来的盐值字段值做比较,如果每一行都是一致的,则数据未被篡改。
5.一种区块链中防止应用数据被篡改的安全模块,其特征在于,所述安全模块能够完成如下操作:
对每张数据库表,在链上计算数据库表的唯一盐值并存储在链上;
在数据库表中设置盐值字段,并将上链数据与所述盐值字段一起写入到数据库表中,其中将上链数据与所述唯一盐值一起做运算得到所述盐值字段;
针对查询到的据库中的记录,从链上取到这张表的唯一盐值,将查询到的数据去除盐值字段后与该表的唯一盐值一起做运算;将得到的运算值与查询到数据表中的盐值字段做比对,一致则代表数据未被篡改,不一致则代表数据被改过,其中写数据库表和查询数据库表后的运算是同一种运算方法。
6.根据权利要求5所述的安全模块,其特征在于,
所述运算指的是哈希运算。
7.根据权利要求5所述的安全模块,其特征在于,还包括:
通过表交易完成数据表的创建。
8.根据权利要求6所述的安全模块,其特征在于,当查询到多行结果时,对每一行结果数据按如下操作进行验证:
1)计算该表的唯一盐值;
2)对每一行结果数据按步骤3-5)进行操作;
3)将当前记录拆分为上链数据与盐值字段两部分;
4)将上链数据与1)中得到的唯一盐值一起做哈希运算,得到待验证盐值字段;
5)将4)中计算得到的待验证盐值字段与从数据库中查询出来的盐值字段值做比较,如果每一行都是一致的,则数据未被篡改。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110346475.6A CN112948898A (zh) | 2021-03-31 | 2021-03-31 | 一种区块链中防止应用数据被篡改的方法和安全模块 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110346475.6A CN112948898A (zh) | 2021-03-31 | 2021-03-31 | 一种区块链中防止应用数据被篡改的方法和安全模块 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112948898A true CN112948898A (zh) | 2021-06-11 |
Family
ID=76231312
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110346475.6A Pending CN112948898A (zh) | 2021-03-31 | 2021-03-31 | 一种区块链中防止应用数据被篡改的方法和安全模块 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112948898A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434909A (zh) * | 2021-06-25 | 2021-09-24 | 湖北央中巨石信息技术有限公司 | 一种基于区块链的数据按需存证方法 |
CN113609478A (zh) * | 2021-07-16 | 2021-11-05 | 浙江吉利控股集团有限公司 | 一种ios平台应用程序篡改检测方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108647361A (zh) * | 2018-05-21 | 2018-10-12 | 中国工商银行股份有限公司 | 一种基于区块链的数据存储方法、装置及*** |
KR20190079324A (ko) * | 2017-12-27 | 2019-07-05 | 에이치닥테크놀로지 주식회사 한국영업소 | 블록체인 시스템을 이용한 데이터베이스의 무결성 강화 방법 및 시스템 |
CN110704428A (zh) * | 2019-09-06 | 2020-01-17 | 深圳壹账通智能科技有限公司 | 区块链的数据索引方法、装置、计算机设备和存储介质 |
WO2020062211A1 (zh) * | 2018-09-30 | 2020-04-02 | 北京大学深圳研究生院 | 一种融合区块链技术拟态存储防篡改日志的方法及*** |
CN111177272A (zh) * | 2019-12-31 | 2020-05-19 | 杭州趣链科技有限公司 | 一种基于区块链的大数据可信审计方法 |
US20200169389A1 (en) * | 2019-05-31 | 2020-05-28 | Alibaba Group Holding Limited | Creating a blockchain account and verifying blockchain transactions |
US20200320490A1 (en) * | 2019-04-05 | 2020-10-08 | Tet Hin Yeap | Method and system for conducting a transaction using private blockchain |
WO2020259629A1 (zh) * | 2019-06-24 | 2020-12-30 | 深圳前海微众银行股份有限公司 | 一种基于区块链的数据检验方法及装置 |
-
2021
- 2021-03-31 CN CN202110346475.6A patent/CN112948898A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190079324A (ko) * | 2017-12-27 | 2019-07-05 | 에이치닥테크놀로지 주식회사 한국영업소 | 블록체인 시스템을 이용한 데이터베이스의 무결성 강화 방법 및 시스템 |
CN108647361A (zh) * | 2018-05-21 | 2018-10-12 | 中国工商银行股份有限公司 | 一种基于区块链的数据存储方法、装置及*** |
WO2020062211A1 (zh) * | 2018-09-30 | 2020-04-02 | 北京大学深圳研究生院 | 一种融合区块链技术拟态存储防篡改日志的方法及*** |
US20200320490A1 (en) * | 2019-04-05 | 2020-10-08 | Tet Hin Yeap | Method and system for conducting a transaction using private blockchain |
US20200169389A1 (en) * | 2019-05-31 | 2020-05-28 | Alibaba Group Holding Limited | Creating a blockchain account and verifying blockchain transactions |
WO2020259629A1 (zh) * | 2019-06-24 | 2020-12-30 | 深圳前海微众银行股份有限公司 | 一种基于区块链的数据检验方法及装置 |
CN110704428A (zh) * | 2019-09-06 | 2020-01-17 | 深圳壹账通智能科技有限公司 | 区块链的数据索引方法、装置、计算机设备和存储介质 |
CN111177272A (zh) * | 2019-12-31 | 2020-05-19 | 杭州趣链科技有限公司 | 一种基于区块链的大数据可信审计方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434909A (zh) * | 2021-06-25 | 2021-09-24 | 湖北央中巨石信息技术有限公司 | 一种基于区块链的数据按需存证方法 |
CN113434909B (zh) * | 2021-06-25 | 2023-12-29 | 湖北央中巨石信息技术有限公司 | 一种基于区块链的数据按需存证方法 |
CN113609478A (zh) * | 2021-07-16 | 2021-11-05 | 浙江吉利控股集团有限公司 | 一种ios平台应用程序篡改检测方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230267153A1 (en) | Integrated index blocks and searching in blockchain systems | |
CN110321344B (zh) | 关联数据的信息查询方法、装置、计算机设备及存储介质 | |
US9507875B2 (en) | Symbolic hyper-graph database | |
US7571299B2 (en) | Methods and arrangements for inserting values in hash tables | |
CN103678583B (zh) | 结构化数据比较的方法及*** | |
CN112948898A (zh) | 一种区块链中防止应用数据被篡改的方法和安全模块 | |
CN106815326A (zh) | 一种检测无主键数据表一致性的***及方法 | |
CN105447166A (zh) | 一种基于关键字查找信息的方法及*** | |
CN112256698B (zh) | 一种基于多哈希函数的表关系自动关联方法 | |
US20170228468A1 (en) | Data searching method of database, apparatus and computer program for the same | |
CN107391557B (zh) | 针对设置链外勘误表的区块链串行查询方法及*** | |
CN114461673A (zh) | 一种基于链上-链下协同的区块链查询优化方法 | |
US8271500B2 (en) | Minimal perfect hash functions using double hashing | |
CN104598652B (zh) | 一种数据库查询方法及装置 | |
CN107169003B (zh) | 一种数据关联方法及装置 | |
US11042516B2 (en) | Flexible schema table | |
CN112579709B (zh) | 一种数据表识别方法、装置、存储介质及电子设备 | |
CN112579591B (zh) | 数据校验方法、装置、电子设备及计算机可读存储介质 | |
CN112131235A (zh) | 一种区块链***内交易可信校验实现方法 | |
CN112488708B (zh) | 区块链账户关联性查询方法及虚假交易筛选方法 | |
CN115795563A (zh) | 一种状态数据校验方法及装置 | |
CN114218277A (zh) | 一种关系数据库的高效查询方法和装置 | |
WO2021207831A1 (en) | Method and systems for indexing databases on a contextual basis | |
CN114860806A (zh) | 区块链的数据查询方法、装置、计算机设备和存储介质 | |
CN114579617A (zh) | 数据查询方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |