欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 一种基于区块链的数据存证方法和数据存证平台独创技术20900字

一种基于区块链的数据存证方法和数据存证平台

2021-02-16 08:26:20

一种基于区块链的数据存证方法和数据存证平台

  技术领域

  本发明涉及数据处理技术领域,尤其涉及一种基于区块链的数据存证方法和数据存证平台。

  背景技术

  目前,区块链数据存证方法是区块链技术领域的主要应用方案之一,已经被应用到互联网金融、知识产权平台等众多领域中。区块链数据存证方法主要是以技术作为虚拟第三方身份,将待存证目标数据,经过一系列处理后,记录到区块链中,从而来保证目标数据的完整性。

  现有技术中的基于区块链的数据存证方法,主要包括以下两类:

  第一类是把目标数据文件、存证时间等信息存储上链;

  第二类是把目标数据文件通过哈希函数生成数据的哈希摘要;然后把哈希摘要、存证时间等信息存储上链。

  然而,上述两种数据存证方法均存在一定的技术问题,第一类方法的主要技术问题在于,这种数据存证方法只能处理少量数据,由于区块链自身的技术特性,如果要把大量的数据上链,例如将高清视频等传输上链,就需要大量的时间成本和链上存储成本。

  第二类方法的主要技术问题在于没有考虑到哈希函数本身的性质,忽视了产生哈希摘要冲突的可能性。

  发明内容

  本发明的目的就是提出一种基于区块链的数据存证方法和数据存证平台,以解决上述现有技术中存在的至少一个技术问题。

  为了达到上述目的,本发明采用的技术方案为:

  第一方面,本发明实施例提供一种基于区块链的数据存证方法,该数据存证方法包括以下步骤:

  客户端基于第一目标数据利用第一密钥生成第一消息认证码,并将客户端标识、第一密钥和第一消息认证码发送至服务器端;

  服务器端利用第二密钥对第一密钥加密以生成密文,并生成时间戳和存证标识,将所述存证标识发送给客户端,还将客户端标识、服务器端标识、密文、存证标识、第一消息认证码和时间戳写入区块链;

  验证端从客户端或服务器端获取所述存证标识,从服务器端获取所述第一密钥,并根据所述存证标识从区块链上获取所述客户端标识、服务器端标识、密文、第一消息认证码和时间戳,将所述时间戳与基准时间进行比较,以验证该时间戳是否正确;若时间戳验证正确,则从客户端获取第二目标数据,并基于所述第二目标数据利用所述第一密钥生成第二消息认证码,比较所述第二消息认证码和第一消息认证码是否相等,以获得最终验证结果。

  进一步的,该数据存证方法还包括以下步骤:若时间戳验证错误,则直接输出验证失败结果。

  进一步的,所述数据存证方法还包括以下步骤:

  服务器端还设定失效时间,并将该失效时间写入区块链;

  验证端根据所述存证标识获取所述失效时间;

  验证端将所述时间戳与基准时间进行比较之前还包括步骤:

  验证端验证数据存证平台的当前时间是否在所述失效时间之前,以输出验证结果。

  进一步的,所述客户端标识、服务器端标识、密文、第一消息认证码、时间戳或失效时间通过SSL、TLS或HTTPS加密信道进行加密传输。

  进一步的,所述密文是利用AES加密算法生成的。

  进一步的,所述第一和第二消息认证码是利用哈希运算或分组密码算法获得的。

  第二方面,本发明实施例提供一种基于区块链的数据存证平台,该数据存证平台包括客户端、服务器端、区块链和验证端;其中,

  客户端基于第一目标数据利用第一密钥生成第一消息认证码,并将客户端标识、第一密钥和第一消息认证码发送至服务器端;

  服务器端利用第二密钥对第一密钥加密以生成密文,并生成时间戳和存证标识,将客户端标识、服务器端标识、密文、存证标识、第一消息认证码和时间戳写入区块链;

  验证端从服务器端获取所述第一密钥和存证标识,并根据所述存证标识从区块链上获取所述客户端标识、服务器端标识、密文、第一消息认证码和时间戳,将所述时间戳与基准时间进行比较,以验证该时间戳是否正确;若时间戳验证正确,则从客户端获取第二目标数据,并基于所述第二目标数据利用所述第一密钥生成第二消息认证码,比较所述第二消息认证码和第一消息认证码是否相等,以获得最终验证结果。

  进一步的,所述验证端还执行以下操作:若时间戳验证错误,则直接输出验证失败结果。

  进一步的,服务器端还执行以下操作:设定失效时间,并将该失效时间写入区块链;

  验证端根据所述存证标识获取所述失效时间;

  验证端将所述时间戳与基准时间进行比较之前还包括步骤:

  验证端验证数据存证平台的当前时间是否在所述失效时间之前,以输出验证结果。

  进一步的,所述第一和第二消息认证码是利用哈希运算或分组密码算法获得的。

  本发明的有益效果是:

  第一,本发明的服务端只将存证标识、客户端标识、服务器端标识、密文、第一消息认证码、时间戳、失效时间传输至区块链,即使数据存证平台中有大量数据需要存证,也不需要大量的时间来进行上链和链上存储成本;

  第二,本发明在区块链上存储了第一、第二消息认证码及失效时间,除合法的验证端外,第三方由于不知晓第一密钥,因此无法对待认证的第一目标数据进行修改,从而第三方就无法以暴力破解的方式寻找另一组待认证的第二目标数据,因此,本发明可以使得这组待认证的第二目标数据和第一目标数据可以生成同样的哈希摘要;

  第三,由于本发明设定了失效时间,因此可以防止由于第一密钥的泄露使得第三方有充足的时间去生成第二目标数据,从而防止这组待认证的第二目标数据和第一目标数据生成相同内容的哈希摘要。

  附图说明

  下面结合附图和具体实施方式对本发明作进一步详细的说明。

  图1为本发明的一个实施例的一种基于区块链的数据存证方法的流程示意图;

  图2为本发明的一个实施例的一种基于区块链的数据存证平台的结构示意图。

  具体实施方式

  以下描述用于公开本发明以使本领域技术人员能够实现本发明。以下描述中的优选实施例只作为举例,本领域技术人员可以想到其他显而易见的变形。在以下描述中界定的本发明的基本原理可以应用于其他实施方案、变形方案、改进方案、等同方案以及没有背离本发明的精神和范围的其他技术方案。

  可以理解的是,术语“一”应理解为“至少一”或“一个或多个”,即在一个实施例中,一个元件的数量可以为一个,而在另外的实施例中,该元件的数量可以为多个,术语“一”不能理解为对数量的限制。

  在这里使用的术语仅用于描述各种实施例的目的且不意在限制。如在此使用的,单数形式意在也包括复数形式,除非上下文清楚地指示例外。另外将理解术语“包括”和/或“具有”当在该说明书中使用时指定所述的特征、数目、步骤、操作、组件、元件或其组合的存在,而不排除一个或多个其它特征、数目、步骤、操作、组件、元件或其组的存在或者附加。

  本实施例首先对数据存证平台所涉及的各组成进行简要说明,数据存证平台包括客户端、服务器端、区块链和验证端;

  其中,客户端用于供用户进行触发操作,例如进行目标数据存储和获取,生成相应的事务请求,并将事务请求发送至服务器端和区块链进行处理,客户端可以通过部署DAPP的形式参与到区块链,或者通过接入其他中心化的区块链节点,间接参与到区块链,进行事务请求的发送,该客户端例如可以是计算机、移动终端(例如,蜂窝电话等)、非移动终端(例如,电器等)、个人数据助理(PDA)等)。

  服务器端用于接收客户端发送的数据,并将相关数据发送给区块链。

  区块链用于接收服务器端发送的各事务请求,并通过处理事务请求的方式完成相应业务,以将数据管理业务迁移至区块链,便于对数据的统一管理,上述区块链包括服务器以及若干用户节点设备。

  验证端主要是对目标数据进行验证,以保证数据存证平台的安全;具体的,验证端可以是一台或多台服务器。

  实施例一

  参见图1,本实施例的一种基于区块链的数据存证方法,该方法包括以下步骤:

  客户端基于第一目标数据利用第一密钥生成第一消息认证码,并将客户端标识、第一密钥和第一消息认证码发送至服务器端;

  服务器端利用第二密钥对第一密钥加密以生成密文,并生成时间戳和存证标识,将客户端标识、服务器端标识、密文、存证标识、第一消息认证码和时间戳写入区块链;

  验证端从服务器端获取所述第一密钥和存证标识,并根据所述存证标识从区块链上获取所述客户端标识、服务器端标识、密文、第一消息认证码和时间戳,将所述时间戳与基准时间进行比较,以验证该时间戳是否正确;若时间戳验证正确,则从客户端获取第二目标数据,并基于所述第二目标数据利用所述第一密钥生成第二消息认证码,比较所述第二消息认证码和第一消息认证码是否相等,以获得最终验证结果。

  进一步的,该数据存证方法还包括以下步骤:若时间戳验证错误,则直接输出验证失败结果。

  下面将具体介绍本实施例的数据存证方法的详细工作过程。

  本实施例中的客户端的主要工作过程如下:

  预设客户端的标识为客户端标识;

  步骤11:客户端随机生成第一字符串,并将该第一字符串作为第一密钥;本实施例中的第一字符串为一个长随机数;

  步骤12:客户端基于第一目标数据利用所述第一密钥生成第一消息认证码;优选的,客户端采用消息认证码算法生成所述第一消息认证码,其中,所述第一消息认证码用于作为目标数据的区块链存证证据;

  步骤13:客户端利用加密信道将所述客户端标识、第一密钥和第一消息认证码发送至服务器端;优选的,客户端可以利用SSL(Secure Sockets Layer,安全套接层)、TLS(Transport Layer Security,安全传输层协议)或HTTPS(:Hyper Text TransferProtocol over Secure Socket Layer,超文本传输安全协议)等加密信道等进行加密传输。

  本实施例中的服务器端的主要工作过程如下:

  预设服务器端的标识为服务器端标识;

  步骤21:服务器端接收所述客户端标识、第一密钥和第一消息认证码;

  步骤22:服务器端随机生成第二字符串,并将该第二字符串作为第二密钥;本实施例中的第二字符串也为一个长随机数;

  步骤23:服务器端基于加密算法并利用所述第二密钥对所述第一密钥加密以生成密文;优选的,所述加密算法可以为AES(Advanced Encryption Standard,高级加密标准)等。

  步骤24:服务器端获取所述第一消息认证码的时间戳;其中,所述第一消息认证码的时间戳是由授时中心所提供的标准时间戳服务;

  步骤25:服务器端设定失效时间;

  步骤26:服务器端随机生成第三字符串,将该第三字符串作为存证标识;

  步骤27:服务器端将所述存证标识发送给客户端;

  服务器端还将存证标识、客户端标识、服务器端标识、密文、第一消息认证码、时间戳和失效时间传输至所述区块链;所述存证标识、客户端标识、服务器端标识、密文、第一消息认证码、时间戳和失效时间可作为客户端目标数据的区块链存证证据。

  本实施例中的验证端的主要工作过程如下:

  预设验证端的标识为验证端标识;

  步骤31:验证端从客户端或服务器端获取所述存证标识;

  步骤32:验证端从服务器端获取所述第一密钥;

  步骤33:验证端根据所述存证标识在区块链上查找到所述客户端标识、服务器端标识、密文、第一消息认证码、时间戳和失效时间;区块链通过加密信道将查找到的所述存证标识在区块链上查找到所述客户端标识、服务器端标识、密文、第一消息认证码、时间戳和失效时间加密传输至所述验证端;优选的,所述客户端标识、服务器端标识、密文、第一消息认证码、时间戳和失效时间可通过SSL、TLS或HTTPS等加密信道进行加密传输;

  步骤34:验证端验证所述数据存证平台的当前时间是否在所述失效时间之前,以输出验证结果;具体的,若数据存证平台的当前时间在所述失效时间之前,则执行步骤35;若数据存证平台的当前时间不在所述失效时间之前,则输出验证失败结果;

  步骤35:验证端将时间戳与基准时间进行比较,以验证该时间戳是否正确,若是,则执行步骤36;若否,则直接输出验证失败结果;其中,所述基准时间可由国家授时中心的时间戳服务商提供;

  步骤36:验证端从客户端获取第二目标数据;优选的,客户端利用SSL、TLS或HTTPS等加密信道来加密传输所述第二目标数据至验证端;

  步骤37:验证端基于所述第二目标数据利用所述第一密钥生成第二消息认证码,优选的,验证端采用消息认证码算法生成所述第二消息认证码;

  步骤38:验证端比较所述第二消息认证码和第一消息认证码是否相等,以获得最终验证结果;具体的,若所述第二消息认证码和第一消息认证码相等,则输出验证成功结果;若否,则输出验证失败结果。

  优选的,所述消息认证码算法可以是哈希运算或分组密码算法。

  实施例二

  图2为本发明的一个实施例的一种基于区块链的数据存证平台的结构示意图,参见图2,该数据存证平台包括客户端、服务器端、区块链和验证端;其中,

  客户端基于第一目标数据利用第一密钥生成第一消息认证码,并将客户端标识、第一密钥和第一消息认证码发送至服务器端;

  服务器端利用第二密钥对第一密钥加密以生成密文,并生成时间戳和存证标识,将客户端标识、服务器端标识、密文、存证标识、第一消息认证码和时间戳写入区块链;

  验证端从服务器端获取所述第一密钥和存证标识,并根据所述存证标识从区块链上获取所述客户端标识、服务器端标识、密文、第一消息认证码和时间戳,将所述时间戳与基准时间进行比较,以验证该时间戳是否正确;若时间戳验证正确,则从客户端获取第二目标数据,并基于所述第二目标数据利用所述第一密钥生成第二消息认证码,比较所述第二消息认证码和第一消息认证码是否相等,以获得最终验证结果。

  进一步的,所述验证端还执行以下操作:若时间戳验证错误,则直接输出验证失败结果。

  进一步的,服务器端还执行以下操作:设定失效时间,并将该失效时间写入区块链;

  验证端根据所述存证标识获取所述失效时间;

  验证端将所述时间戳与基准时间进行比较之前还包括步骤:

  验证端验证数据存证平台的当前时间是否在所述失效时间之前,以向客户端输出验证结果。

  进一步的,所述第一和第二消息认证码是利用哈希运算或分组密码算法获得的。

  本实施例中的数据存证平台与上述实施例一的数据存证方法的工作过程基本一致,在此不再赘述。

  与现有技术相比,本发明具有以下几个优点:

  第一,本发明的服务端只将存证标识、客户端标识、服务器端标识、密文、第一消息认证码、时间戳、失效时间传输至区块链,即使数据存证平台中有大量数据需要存证,也不需要大量的时间来进行上链和链上存储成本;

  第二,本发明在区块链上存储了第一、第二消息认证码及失效时间,除合法的验证端外,第三方由于不知晓第一密钥,因此无法对待认证的第一目标数据进行修改,从而第三方就无法以暴力破解的方式寻找另一组待认证的第二目标数据,因此,本发明可以使得这组待认证的第二目标数据和第一目标数据可以生成同样的哈希摘要;

  第三,由于本发明设定了失效时间,因此可以防止由于第一密钥的泄露使得第三方有充足的时间去生成第二目标数据,从而防止这组待认证的第二目标数据和第一目标数据生成相同内容的哈希摘要。

  本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

  在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

  所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

  另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

  所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

  以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

《一种基于区块链的数据存证方法和数据存证平台.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)