CN108256353B - 一种数据完整性校验方法、装置及客户端 - Google Patents
一种数据完整性校验方法、装置及客户端 Download PDFInfo
- Publication number
- CN108256353B CN108256353B CN201810028032.0A CN201810028032A CN108256353B CN 108256353 B CN108256353 B CN 108256353B CN 201810028032 A CN201810028032 A CN 201810028032A CN 108256353 B CN108256353 B CN 108256353B
- Authority
- CN
- China
- Prior art keywords
- block
- client
- component
- target
- server
- 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.)
- Active
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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Bioethics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
- Storage Device Security (AREA)
Abstract
本发明实施例公开了一种数据完整性校验方法、装置及客户端。本发明实施例方法包括:在需要进行数据完整性校验时,接收服务器下发的第一区块;根据该名称列表信息对需要校验的组件进行校验,得到校验结果,并根据第一区块生成第二区块,第二区块更新到客户端本地保存的校验结果区块链中;将第二区块发送到服务器,以使得服务器将第二区块同步到安装有目标应用程序的所有客户端的校验结果区块链中;接收服务器下发的多个第三区块,并将多个第三区块更新到该校验结果区块链中;根据该校验结果区块链,确定目标应用程序的完整性。本发明实施例中可以通过整个区块链中统计校验结果,确定目标应用程序的完整性,安全性高,校验效率高且节约服务器资源。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种数据完整性校验方法、装置及客户端。
背景技术
目前,对于客户端软件来说,是发布到用户电脑上,进行安装使用。那么用户具有客户端软件的所有组件及资源文件,当客户端软件运行时则会将需要的可执行文件及组件加载到内存中以执行,那么在内存中执行的是该可以执行文件及组件的代码。
然而黑客可以通过一些手段来修改客户端执行的内存代码,从而完成一些非法的功能。例如客户端软件中有一些限制功能,那么客户端会有一些代码来判断当期的功能是否可以使用,然而黑客可以将客户端的判断代码进行修改,从而客户端可以使用限制的功能。尤其对于游戏客户端来说,黑客可以修改游戏的金币数量,来实现无限金币的“外挂”功能,可以修改客户端软件的物理碰撞检测内存代码来实现“无敌”等功能。
因此,对于客户端执行时,其内存中运行的代码是否被修改则是相当重要,尤其对于网络游戏来说,如何客户端软件开发保证开发内存代码的完整性非常重要。
发明内容
本发明实施例提供了一种数据完整性校验方法、装置及客户端,以解决目前客户端软件易被篡改,安全性低,过于依赖服务器的问题。
第一方面,本申请提供了一种数据完整性校验方法,该方法包括:
在需要进行数据完整性校验时,客户端接收服务器下发的第一区块,所述第一区块中包含客户端需要校验的组件的名称列表信息,所述客户端为所述安装有目标应用程序的客户端,所述目标应用程序的安装组件中包括所述需要校验的组件;
所述客户端根据所述名称列表信息对需要校验的组件进行校验,得到校验结果,并根据所述第一区块生成第二区块,将所述第二区块更新到所述客户端本地保存的校验结果区块链中,所述第二区块中包括所述校验结果和所述客户端的标识信息;
所述客户端将所述第二区块发送到所述服务器,以使得所述服务器将所述第二区块同步到安装有所述目标应用程序的所有客户端的校验结果区块链中;
所述客户端接收所述服务器下发的多个第三区块,并将所述多个第三区块更新到所述客户端本地保存的校验结果区块链中,所述多个第三区块为安装所述目标应用程序的所有客户端分别根据所述第一区块生成的;
所述客户端根据所述本地保存的校验结果区块链,确定所述目标应用程序的完整性。
进一步的,所述客户端根据所述名称列表信息对需要校验的组件进行校验,得到校验结果,包括:
对于每个需要校验的目标组件:
拷贝所述目标组件整个文件到所述客户端另一处内存,
计算内存修复重定位的偏移差,
对所述目标组件进行重定位,
获取所述目标组件的代码段的大小,
计算所述目标组件的代码段的哈希值;
在计算每个需要校验的组件的代码段的哈希值后,根据每个需要校验的组件的代码段的哈希值,得到每个组件校验结果。
进一步的,所述拷贝所述目标组件整个文件到所述客户端另一处内存,包括:
获取所述目标组件的内存起始地址;
解析所述目标组件的DOS头信息;
根据所述DOS头信息解析所述目标组件的NT头信息;
根据所述NT头信息获取所述目标组件的整个文件大小信息;
根据所述目标组件的内存起始地址和所述目标组件的整个文件大小信息,拷贝所述目标组件整个文件到所述客户端另一处内存。
进一步的,所述客户端根据所述本地保存的校验结果区块链,确定所述目标应用程序的完整性,包括:
所述客户端获取所述本地保存的校验结果区块链中每个区块中的所述目标程序的校验结果;确定相同的校验结果数量最多的为合法的校验结果,确定所述合法的校验结果对应的客户端中的所述目标应用程序的代码为完整的。
进一步的,所述第一区块、所述第二区块和第三区块具有相同的数据结构;
所述数据结构包括区块的块号、前一个区块的哈希值、当前时间的时间戳、计算新区块需要的key值、计算新区块的HASH值中前面0的个数据、随机数据、当前区块的哈希值以及区块链功能数据,所述区块功能数据包括当前客户端的用户标识以及对需要校验的组件的校验结果,所述随机数据用于加入到新区块中,以使得计算的当前区块的哈希值满足所述服务器下发的0的个数。
第二方面,本申请提供一种数据完整性校验装置,应用于客户端,该装置包括:
第一接收模块,用于在需要进行数据完整性校验时,接收服务器下发的第一区块,所述第一区块中包含客户端需要校验的组件的名称列表信息,所述客户端为所述安装有目标应用程序的客户端,所述目标应用程序的安装组件中包括所述需要校验的组件;
生成模块,用于根据所述名称列表信息对需要校验的组件进行校验,得到校验结果,并根据所述第一区块生成第二区块,将所述第二区块更新到所述客户端本地保存的校验结果区块链中,所述第二区块中包括所述校验结果和所述客户端的标识信息;
发送模块,用于将所述第二区块发送到所述服务器,以使得所述服务器将所述第二区块同步到安装有所述目标应用程序的所有客户端的校验结果区块链中;
第二接收模块,用于接收所述服务器下发的多个第三区块,并将所述多个第三区块更新到所述客户端本地保存的校验结果区块链中,所述多个第三区块为安装所述目标应用程序的所有客户端分别根据所述第一区块生成的;
校验模块,用于根据所述本地保存的校验结果区块链,确定所述目标应用程序的完整性。
进一步的,所述生成模块具体用于:
对于每个需要校验的目标组件:
拷贝所述目标组件整个文件到所述客户端另一处内存,
计算内存修复重定位的偏移差,
对所述目标组件进行重定位,
获取所述目标组件的代码段的大小,
计算所述目标组件的代码段的哈希值;
在计算每个需要校验的组件的代码段的哈希值后,根据每个需要校验的组件的代码段的哈希值,得到每个组件校验结果。
进一步的,所述生成模块具体用于:
获取所述目标组件的内存起始地址;
解析所述目标组件的DOS头信息;
根据所述DOS头信息解析所述目标组件的NT头信息;
根据所述NT头信息获取所述目标组件的整个文件大小信息;
根据所述目标组件的内存起始地址和所述目标组件的整个文件大小信息,拷贝所述目标组件整个文件到所述客户端另一处内存。
进一步的,所述校验模块具体用于:
获取所述本地保存的校验结果区块链中每个区块中的所述目标程序的校验结果;确定相同的校验结果数量最多的为合法的校验结果,确定所述合法的校验结果对应的客户端中的所述目标应用程序的代码为完整的。
进一步的,所述第一区块、所述第二区块和第三区块具有相同的数据结构;
所述数据结构包括区块的块号、前一个区块的哈希值、当前时间的时间戳、计算新区块需要的key值、计算新区块的HASH值中前面0的个数据、随机数据、当前区块的哈希值以及区块链功能数据,所述区块功能数据包括当前客户端的用户标识以及对需要校验的组件的校验结果,所述随机数据用于加入到新区块中,以使得计算的当前区块的哈希值满足所述服务器下发的0的个数。
第三方面,本发明还提供一种客户端,包括:存储器,处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时可以实现第一方面中任一所述的方法。
第四方面,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面中任一所述的方法。
本发明实施例在需要进行数据完整性校验时,客户端接收服务器下发的第一区块;客户端根据该名称列表信息对需要校验的组件进行校验,得到校验结果,并根据第一区块生成第二区块,第二区块更新到客户端本地保存的校验结果区块链中;客户端将第二区块发送到服务器,以使得服务器将第二区块同步到安装有目标应用程序的所有客户端的校验结果区块链中;客户端接收服务器下发的多个第三区块,并将多个第三区块更新到该校验结果区块链中;客户端根据该校验结果区块链,确定目标应用程序的完整性。本发明实施例中所有客户端会将自己生成的目标应用程序组件的校验结果生成到一个区块链中。然后所有的客户端包括服务器都有一份完整的校验结果区块链信息,其中存储了每个客户端的校验结果,可以通过整个区块链中统计校验结果,确定目标应用程序的完整性,本发明不需要服务器进行判断客户端代码是否被修改过,不需要使用到服务器资源,任意一个客户端都可以对指定客户端目标应用程序的完整性进行校验,安全性高,校验效率高且节约服务器资源。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例中数据完整性校验方法的一个实施例示意图;
图2是本发明实施例步骤S102的一个实施例示意图;
图3是本发明实施例步骤S10211的一个实施例示意图;
图4是本发明实施例中S102111的一个实施例示意图;
图5是本发明实施例中步骤S105的一个实施例示意图;
图6是本发明实施例中数据完整性校验装置的一个实施例示意图;
图7是本发明实施例中客户端的一个实施例示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
目前,传统的客户端内存代码完整性校验的方法是:客户端接收服务器下发的校验指令,来读取内存中的代码进行HASH计算,从而将HASH结果上报到服务器,服务器判断客户端上报的HASH结果是否一致,不一致则说明是非法的客户端。此种做法是客户端和服务器的只有一种校验机构,即服务器承担所有客户端的校验功能,在客户端较多时,服务器承载压力较大。同时由于每个客户端加载组件到内存时其组件的起始地址不一样,从而会对于有重定位数据的地方,最终计算得到HASH结果不一致。因此,本发明提供一种数据完整性校验方法、装置及客户端。
本发明实施例中数据完整性校验方法应用于数据完整性校验装置,该装置位于客户端中,该客户端可以是手机、平板电脑或者个人电脑等客户端,也可以是未来出现有显示屏的客户端等。本发明实施例中所描述的执行主体客户端除特别说明外,一般指指安装有客户端应用的客户端设备。
请参阅图1,本发明实施例中数据完整性校验方法的一个实施例包括:
S101、在需要进行数据完整性校验时,客户端接收服务器下发的第一区块;
本实施例中,服务器可以是目标应用程序对应的服务器,例如微信对应的微信服务器,对于游戏应用,可以是游戏服务器,对于直播平台,可以是直播平台对应的服务器。而客户端为安装有目标应用程序的客户端,目标应用程序的安装组件中包括需要校验的组件,对于应用程序开发,会拆分成多个模块来完成,例如,一个模块则是一个DLL文件,这样既有利于代码共享和分工,又可以将功能尽可能的拆分,减少代码耦合度。因此,一个应用程序的组成可以由一个可执行文件和多个DLL文件组成。本发明实施例中,组件可以是该目标应用程序对应的DLL文件。
对于直播平台的应用场景,该目标应用程序为直播应用,进一步的,该客户端可以是进入直播平台目标房间的客户端,目标房间为直播平台上主播建立的直播间,此时下面步骤中描述的安装该目标应用程序的所有客户端也对应可以指的是目标房间中安装该目标应用程序的所有客户端。
区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。本发明实施例中所涉及的区块均为根据区块链技术生成的区块,多个区块可以组成区块链。
本实施例中,第一区块中包含客户端需要校验的组件的名称列表信息,具体则可以是“A.dll”,“B.dll”等等,以及标准的按照每个组件(如DLL文件)的加载基址,例如可以是0x10000000。
S102、客户端根据该名称列表信息对需要校验的组件进行校验,得到校验结果,并根据第一区块生成第二区块,将第二区块更新到客户端本地保存的校验结果区块链中;
其中,该第二区块中包括该校验结果和该客户端的标识信息,客户端的标识信息也可以是客户端的UID,例如客户端的物理地址(Media Access Control,MAC)、产品序列号(Serial Number,SN)、国际移动设备身份码(International Mobile EquipmentIdentity,IMEI)或者客户端的注册账户的UID(如用户在直播平台的注册用户信息)等。
本实施例中,在生成包括校验结果的第二区块后,即更新到本地保存的校验结果区块链中。
S103、客户端将第二区块发送到服务器,以使得服务器将第二区块同步到安装有目标应用程序的所有客户端的校验结果区块链中;
具体的,在生成包括校验结果的第二区块后,本实施例除了在步骤S102中更新到本地保存的校验结果区块链中,还发送到服务器,使得服务器将该第二区块同步到安装有目标应用程序的其他客户端的校验结果区块链中去,这样所有安装目标应用程序的客户端以及服务器都有一份包括该第二区块的区块链,存储了该客户端的校验结果。
S104、客户端接收服务器下发的多个第三区块,并将该多个第三区块更新到客户端本地保存的校验结果区块链中;
同样的,上述步骤S101~S103描述的是该客户端生成包括校验结果的第二区块的过程,其他安装目标应用程序的客户端同样会根据服务器下发的第一区块生成对应的第三区块,即多个第三区块为安装所述目标应用程序的所有客户端分别根据所述第一区块生成的,并保存到各自本地保存的校验结果区块链中,同时发送到服务器,使得服务器同步到其他安装目标应用程序的客户端(包括本实施例中客户端)中去,同样根据区块链实现了另外的客户端校验结果的在所有客户端和服务器的同步。
S105、客户端根据本地保存的校验结果区块链,确定目标应用程序的完整性。
本发明实施例在需要进行数据完整性校验时,客户端接收服务器下发的第一区块;客户端根据该名称列表信息对需要校验的组件进行校验,得到校验结果,并根据第一区块生成第二区块,第二区块更新到客户端本地保存的校验结果区块链中;客户端将第二区块发送到服务器,以使得服务器将第二区块同步到安装有目标应用程序的所有客户端的校验结果区块链中;客户端接收服务器下发的多个第三区块,并将多个第三区块更新到该校验结果区块链中;客户端根据该校验结果区块链,确定目标应用程序的完整性。本发明实施例中所有客户端会将自己生成的目标应用程序组件的校验结果生成到一个区块链中。然后所有的客户端包括服务器都有一份完整的校验结果区块链信息,其中存储了每个客户端的校验结果,可以通过整个区块链中统计校验结果,确定目标应用程序的完整性,本发明不需要服务器进行判断客户端代码是否被修改过,不需要使用到服务器资源,任意一个客户端都可以对指定客户端目标应用程序的完整性进行校验,安全性高,校验效率高且节约服务器资源。
如图2所示,在本发明一些实施例中,上述步骤S102中客户端根据所述名称列表信息对需要校验的组件进行校验,得到校验结果,具体可以包括:
S1021、对于每个需要校验的目标组件,分别计算该目标组件的代码段的哈希值;
具体的,如图3所示,所述步骤S1021还可以进一步包括:
S10211、拷贝目标组件整个文件到所述客户端另一处内存;
如图4所示,该步骤S10211具体可以进一步包括:
S102111、获取目标组件的内存起始地址;
具体的,通过调用系统函数GetModuleHandle来获取内存中加载的组件的起始地址,具体如下:
HMODULE hStartAddress=GetModuleHandle(“xx.dll”);
其中,参数填入目标组件的名称,返回值则是目标组件的内存起始地址。
S102112、解析目标组件的DOS头信息;
具体实现方式如下:
PIMAGE_DOS_HEADER pDosHeader=(PIMAGE_DOS_HEADER)pbyFileBuff;
其中,pDosHeader即为目标组件的DOS头信息。
S102113、根据DOS头信息解析目标组件的NT头信息;
具体实现方式如下:
PIMAGE_NT_HEADERS pNtHeaders=(PIMAGE_NT_HEADERS)((DWORD)pbyFileBuff+pDosHeader->e_lfanew);
其中,pDosHeader为上述步骤中得到目标组件的DOS头信息,pNtHeaders即为目标组件的NT头信息。
S102114、根据NT头信息获取目标组件的整个文件大小信息;
具体实现方式如下:
SIZE=pNtHeaders->sizeofImage;
其中,pNtHeaders为目标组件的NT头信息,izeofImage表示文件装入内存后映像的总大小,SIZE即为目标组件的整个文件大小信息。
S102115、根据目标组件的内存起始地址和目标组件的整个文件大小信息,拷贝目标组件整个文件到客户端另一处内存。
本实施例中之所以拷贝一份目标组件的代码到另一处,是由于本实施例中会修复重定位地址,会修改现有的内存,从而会影响正常程序的执行,所以需要重新拷贝一份,可以修复重定位信息。有了整个目标组件在内存中的起始地址和大小,则可以再分配同样大小的内存空间并将整个目标组件内存的代码拷贝到另一处分配的空间中。首先分配一段同样大小的内存空间,再拷贝目标组件整个文件到客户端另一处内存,具体实现方式如下:
Char*pmem2=malloc(SIZE);
Memcpy(pmem2,hStartAddress,SIZE);
S10212、计算内存修复重定位的偏移差;
具体实现方式如下:
dwOffset=hStartAddress-0x10000000;
其中,第一份加载的内存起始地址hStartAddress(即步骤S102111中获取的内存起始地址)减去第二份则是服务器下发的标准的内存起始地址,从而得到需要内存修复重定位的偏移差dwOffset。
S10213、对目标组件进行重定位;
此步骤则需要遍历加载的目标组件,以DLL文件为例,对其重定位的每个数据补上偏移值,并且每个重定位都是一个块一个块组成,具体实现方式如下:
PIMAGE_BASE_RELOCATION pBaseReloc=(PIMAGE_BASE_RELOCATION)(pbyMem+pStModule->dwBaseReloc);
获取第一个重定位的块。
for(i=0;pBaseReloc->SizeOfBlock!=0&&i<pStModule->dwBaseRelocSize;i+=pBaseReloc->SizeOfBlock){
编写for循环来便利每个重定位区块。
unsigned short*pui=(unsigned short*)(pBaseReloc+1);
PIMAGE_BASE_RELOCATION pstNext=(PIMAGE_BASE_RELOCATION)((unsignedchar*)pBaseReloc+pBaseReloc->SizeOfBlock);
每个区块中有多个重定位数据,需要对每个数据进行修复
while((unsigned char*)pui<(unsigned char*)pstNext){
if((pui[0]>>12)==3){
unsigned int*puReloc=(unsigned int*)(pbyMem+pBaseReloc->VirtualAddress+(pui[0]&0x0fff));
puReloc[0]+=dwOffset;
在此则对每个重定位数据加上之前计算得到的一个偏移值。
}
pui++;
}
遍历下一个区块。
pBaseReloc=pstNext;
}
通过上述过程实现对目标组件进行重定位。
S10214、获取目标组件的代码段的大小;
具体实现方式如下:
dwBaseCode=pNtHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_CO DE].VirtualAddress;
dwBaseCodeSize=pNtHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_CO DE].Size;
其中,dwBaseCode则是目标组件内存的代码段起始地址,dwBaseCodeSize则是目标组件的代码段的大小。
S10215、计算目标组件的代码段的哈希值;
本步骤中得到了目标组件的代码段的大小,则可以使用HASH算法来计算代码的HASH值。具体HASH算法本实施例则使用MD5来计算,当然本发明实施例中也可以是其他HASH算法,例如SHA-1。以MD5为例,本步骤的具体实现方式如下:
HashresultMd5=MD5.Create(dwBaseCode,dwBaseCodeSize);
其中,HashresultMd5即为目标组件的代码段的哈希值。
S1022、在计算每个需要校验的组件的代码段的哈希值后,根据每个需要校验的组件的代码段的哈希值,得到每个组件校验结果。
具体的,每个组件校验结果即为每个组件的哈希值,需要说明的是,步骤S102中计算的到的校验结果中包括所有需要校验的组件的哈希值。
通过上述步骤就实现了可以得到每个需要校验的组件的代码段的哈希值,并得到每个组件校验结果。
进一步的,在本发明一些实施例中,如图5所示,步骤S105具体可以包括:
S1051、客户端获取本地保存的校验结果区块链中每个区块中的目标程序的校验结果;确定相同的校验结果数量最多的为合法的校验结果;
由于区块链的本身特性,使得每个客户端都可以获取到所有的客户端计算的校验结果,从而可以从账本中查询所有的区块来获取每一个组件校验结果最多的结果,那么相同结果次数最多的则是正确的校验结果,否则则是失败的校验结果,并且可以得到所有客户端那些失败的客户端的客户端标识(如客户端UID),并且得到校验失败的组件。具体实现如下:
Map<hashResult,int>map;
使用一个MAP存储器来存储hash结果的统计次数。
遍历所有的区块,得到每一种hash的统计次数。
For(int i=0;i<block.num;i++)
{
If(map.find(block.hashresult)!=map.end())
map[block.hashresult]++;
首先从MAP中查找,如果找到则将次数加1。
Else
map[block.hashresult]=1;
否则没有找到,则将新的hashresult结果值赋值为1.
}
从而最终得到组件的校验结果。那么统计结果最多则是正确的结果,按照同样的统计方法,则可以统计其他组件的计算结果,从而得到其他组件正确的计算结果。
通过区块链的统计从而得到了正确的HASH结果(校验结果),那么在此步骤中则可以通过正确的结果来得到非正确的所有客户端UID信息,从而知道那些客户端是非法的。具体实现如下:
Map<UID,int>map;
使用一个MAP存储器来存储UID的统计结果。
遍历所有的区块,得到HASH不一致的UID信息。
For(int i=0;i<block.num;i++)
{
If(block.hash!=resulthash)
Map[block.uid]=1;
如果不相等则说明该用户计算的HASH结果是错误的。
Else
{
说明该UID的计算结果是正确的,是合法的。
}
}
同样的对于其他组件也可以使用同样的方法进行统计,从而最终可以统计得到所有组件不正确的客户端UID信息,所有组件均为合法的对应的客户端才为合法的校验结果对应的客户端。
S1052、确定合法的校验结果对应的客户端中的目标应用程序的代码为完整的。
具体的,合法的校验结果对应的客户端指的是所有需要校验的组件均为合法的,此时,才确定该合法的校验结果对应的客户端目标应用程序的代码为完整的,其中一个或多个组件的校验结果不合法,则均可以确定该目标应用程序代码不完整,被篡改。
本发明实施例中,服务器在生成该第一区块之前,会预先定义好区块数据结构,该第一区块、第二区块和第三区块具有相同的数据结构;该数据结构包括区块的块号、前一个区块的哈希值、当前时间的时间戳、计算新区块需要的key值、计算新区块的HASH值中前面0的个数据、随机数据、当前区块的哈希值以及区块链功能数据,区块功能数据包括当前客户端的用户标识以及对需要校验的组件的校验结果,随机数据用于加入到新区块中,以使得计算的当前区块的哈希值满足服务器下发的0的个数。
通常的一个区块必须包含一些必要的数据,从而一个是可以校验区块本身的合法性,另一个也使得其不易于伪造。本发明实施例中区块数据结构具体可以如下:
Struct BlockData{
Int64index;
String previousHash;
Int64timestamp;
String key;
String data;
String zero;
String randdata;
String hash;
}
其中,index用来表示区块的块号,通常从0开始递增,即第一区块的区块的块号为0;previousHash表示前一个区块的HASH值;timestamp表示时间戳;key表示计算新区块需要的key值;data字段则是一些数据的拼接,这个data字段的内容则是依据区块所需要完成的功能所涉及的数据,即上述区块功能数据,包括服务器下发的需要校验组件的名称、对需要校验的组件的校验结果,客户端的用户uid,本实施例中,考虑到组件的重要性和整个计算性能的考虑,服务器可以优选的先校验重要组件,然后再校验其他组件;zero表示计算新区块的HASH值中前面0的个数据;randdata表示随机数据,用于加入到新的区块中,以使得其计算的哈希值结果满足服务器下发的0的个数;hash则表示当前这个区块内容的哈希值。
通过这个步骤就完成了区块链中区块的数据结构的设计,通过这个区数据结构的设计后,任何一个观众收到一个区块则可以对区块数据进行校验。
本发明实施例中同时设计了区块链中新区块生成的算法,首先初始的区块(如第一区块)是服务器生成的,服务器可以下发到每个客户端,那么该客户端收到初始区块后,需要算法来生成下一个区块。具体实现如下:首先已经获取到了上一个区块的数据结构,下一个区块则是依据上一个区块的数据进行生成。
(1)计算新的区块的区块号。
Newblock.index=prevblock.index+1;
则新的区块的块号是当前块号加1。
(2)计算新的区块的时间戳。
Newblock.timestamp=time();
新区块的时间戳则是获取当前的时间。
(3)计算新的区块的上一个区块的hash值(哈希值)。
Newblock.previousHash=prevblock.hash;
新区块的上一个区块的hash值则是获取的上一个区块的hash。
(4)计算新的区块的上一个区块的key值。
Newblock.key=prevblock.key;
新区块的上一个区块的key值则是获取的上一个区块的key。
(5)计算新的区块的数据。
Newblock.data=uid+“A.dll”+hashresultA+“B.dll”+hashresultB;
其中,hashresultA为组件A.dll哈希值,hashresultB为组件B.dll的哈希值,hashresultA和hashresultB的计算稍后在本文后面会提到如何计算。
(6)计算新的区块的第一随机数据randdata。
此randdata值则是客户端随机生成,以凑足正好整个新的区块计算的hash值前面满足服务器下发的0的个数。
(7)计算新的区块的hash值。
Newblock.hash=HASH(index+previousHash+timestamp+data+zero+randdata);
新区块的hash值则是有新区块的index字段和previousHash字段和timestamp字段和data字段。
其中使用的HASH算法则通常是SHA-256算法,当然也可以使用其他HASH算法。
具体的,上述步骤S102中根据第一区块生成第二区块具体可以包括:
根据所述第一区块的块号加1,得到所述第二区块的块号;
获取当前时间;
计算所述第一区块的哈希值,作为所述第二区块中前一个区块的哈希值;
计算所述第一区块的key值;
获取所述客户端的用户标识以及所述校验结果,得到所述第二区块功能数据;
随机生成第一随机数据,所述第一随机数据用于加入到所述第二区块中,以使得计算的所述第二区块的哈希值满足所述服务器下发的0的个数;
对所述第二区块的块号、当前时间、所述第一区块的哈希值、预置的计算新区块哈希值中前面0的个数、所述第一随机数据及所述第二区块功能数据进行哈希计算,得到所述第二区块的哈希值;
根据所述第二区块的块号、当前时间、所述第一区块的哈希值、计算新区块需要的key值、所述第一随机数据、计算新区块哈希值中前面0的个数、所述第二区块的哈希值及所述第二区块功能数据,按照所述数据结构生成所述第二区块。
本发明实施例中,不管是客户端还是服务器,当其收到一个区块时,首先都会对区块进行合法性校验,以判断当前的区块是否是合法的,以防止黑客伪造区块,或者区块在网络中传输被修改等因素。所以每个区块都需要进行完整性校验。
因此,在本发明一些实施例中,所述方法还可以包括:客户端在接收到服务器发送的的第一区块时,校验第一区块的合法性。具体的,可以包括:
(1)判断第一区块的块号是否等于0,若否,则确定第一区块不合法;
(2)判断第一区块中包括的第一区块的哈希值与计算的第一区块的整体数据的哈希值是否匹配,若否,则确定第一区块不合法。
具体的实现方式如下:
HASH(Newblock.index+Newblock.previousHash+Newblock.timestamp+Newblock.data+Newblock.randdata+Newblock.zero)!=Newblock.hash;
其中,第一区块为初始区块时,Newblock.previousHash不存在。
下面介绍本发明实施例中数据完整性校验装置的实施例。
请参阅图6,为本发明实施例中数据完整性校验装置的一个实施例示意图,该装置应用于客户端,该装置包括:
第一接收模块601,用于在需要进行数据完整性校验时,接收服务器下发的第一区块,所述第一区块中包含客户端需要校验的组件的名称列表信息,所述客户端为所述安装有目标应用程序的客户端,所述目标应用程序的安装组件中包括所述需要校验的组件;
生成模块602,用于根据所述名称列表信息对需要校验的组件进行校验,得到校验结果,并根据所述第一区块生成第二区块,将所述第二区块更新到所述客户端本地保存的校验结果区块链中,所述第二区块中包括所述校验结果和所述客户端的标识信息;
发送模块603,用于将所述第二区块发送到所述服务器,以使得所述服务器将所述第二区块同步到安装有所述目标应用程序的所有客户端的校验结果区块链中;
第二接收模块604,用于接收所述服务器下发的多个第三区块,并将所述多个第三区块更新到所述客户端本地保存的校验结果区块链中,所述多个第三区块为安装所述目标应用程序的所有客户端分别根据所述第一区块生成的;
校验模块605,用于根据所述本地保存的校验结果区块链,确定所述目标应用程序的完整性。
进一步的,所述生成模块602具体用于:
对于每个需要校验的目标组件:
拷贝所述目标组件整个文件到所述客户端另一处内存,
计算内存修复重定位的偏移差,
对所述目标组件进行重定位,
获取所述目标组件的代码段的大小,
计算所述目标组件的代码段的哈希值;
在计算每个需要校验的组件的代码段的哈希值后,根据每个需要校验的组件的代码段的哈希值,得到每个组件校验结果。
进一步的,所述生成模块602具体用于:
获取所述目标组件的内存起始地址;
解析所述目标组件的DOS头信息;
根据所述DOS头信息解析所述目标组件的NT头信息;
根据所述NT头信息获取所述目标组件的整个文件大小信息;
根据所述目标组件的内存起始地址和所述目标组件的整个文件大小信息,拷贝所述目标组件整个文件到所述客户端另一处内存。
进一步的,所述校验模块605具体用于:
获取所述本地保存的校验结果区块链中每个区块中的所述目标程序的校验结果;确定相同的校验结果数量最多的为合法的校验结果,确定所述合法的校验结果对应的客户端中的所述目标应用程序的代码为完整的。
进一步的,所述第一区块、所述第二区块和第三区块具有相同的数据结构;
所述数据结构包括区块的块号、前一个区块的哈希值、当前时间的时间戳、计算新区块需要的key值、计算新区块的HASH值中前面0的个数据、随机数据、当前区块的哈希值以及区块链功能数据,所述区块功能数据包括当前客户端的用户标识以及对需要校验的组件的校验结果,所述随机数据用于加入到新区块中,以使得计算的当前区块的哈希值满足所述服务器下发的0的个数。
本发明实施例中还提供一种客户端,请参见图7,所述客户端包括:
存储器701,处理器702及存储在所述存储器上并可在所述处理器上运行的计算机程序703,其中,所述处理器702执行所述计算机程序703时可以实现上述数据完整性校验方法。
为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。存储器701可用于存储计算机程序703,上述计算机程序包括软件程序、模块和数据,处理器702通过运行执行存储在存储器701的计算机程序703,从而执行客户端的各种功能应用以及数据处理。
在具体的实施过程中,存储器701可用于存储软件程序以及模块,处理器702通过运行存储在存储器701的软件程序以及模块,从而执行客户端的各种功能应用以及数据处理。存储器701可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(例如游戏类应用程序、聊天类应用程序)等;存储数据区可存储根据客户端的使用所创建的数据(游戏配置数据、音频数据)等。此外,存储器701可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。处理器702是客户端的控制中心,利用各种接口和线路连接整个客户端的各个部分,通过运行或执行存储在存储器701内的软件程序和/或模块,以及调用存储在存储器701内的数据,执行客户端的各种功能和处理数据,从而对客户端进行整体监控。可选的,处理器702可包括一个或多个处理单元;优选的,处理器702可集成应用处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等。
本发明实施例还提供一种计算机可读存储介质,其中,该计算机可读存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的数据完整性校验方法的部分或全部步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种数据完整性校验方法,其特征在于,所述方法包括:
在需要进行数据完整性校验时,客户端接收服务器下发的第一区块,所述第一区块中包含客户端需要校验的组件的名称列表信息,所述客户端为所述安装有目标应用程序的客户端,所述目标应用程序的安装组件中包括所述需要校验的组件;
所述客户端根据所述名称列表信息对需要校验的组件进行校验,得到校验结果,并根据所述第一区块生成第二区块,将所述第二区块更新到所述客户端本地保存的校验结果区块链中,所述第二区块中包括所述校验结果和所述客户端的标识信息;
所述客户端将所述第二区块发送到所述服务器,以使得所述服务器将所述第二区块同步到安装有所述目标应用程序的所有客户端的校验结果区块链中;
所述客户端接收所述服务器下发的多个第三区块,并将所述多个第三区块更新到所述客户端本地保存的校验结果区块链中,所述多个第三区块为安装所述目标应用程序的所有客户端分别根据所述第一区块生成的;
所述客户端根据所述本地保存的校验结果区块链,确定所述目标应用程序的完整性;
所述客户端根据所述本地保存的校验结果区块链,确定所述目标应用程序的完整性,包括:
所述客户端获取所述本地保存的校验结果区块链中每个区块中的所述目标程序的校验结果;确定相同的校验结果数量最多的为合法的校验结果,确定所述合法的校验结果对应的客户端中的所述目标应用程序的代码为完整的。
2.根据权利要求1所述的方法,其特征在于,
所述客户端根据所述名称列表信息对需要校验的组件进行校验,得到校验结果,包括:
对于每个需要校验的目标组件:
拷贝所述目标组件整个文件到所述客户端另一处内存,
计算内存修复重定位的偏移差,
对所述目标组件进行重定位,
获取所述目标组件的代码段的大小,
计算所述目标组件的代码段的哈希值;
在计算每个需要校验的组件的代码段的哈希值后,根据每个需要校验的组件的代码段的哈希值,得到每个组件校验结果。
3.根据权利要求2所述的方法,其特征在于,所述拷贝所述目标组件整个文件到所述客户端另一处内存,包括:
获取所述目标组件的内存起始地址;
解析所述目标组件的DOS头信息;
根据所述DOS头信息解析所述目标组件的NT头信息;
根据所述NT头信息获取所述目标组件的整个文件大小信息;
根据所述目标组件的内存起始地址和所述目标组件的整个文件大小信息,拷贝所述目标组件整个文件到所述客户端另一处内存。
4.根据权利要求1所述的方法,其特征在于,所述第一区块、所述第二区块和第三区块具有相同的数据结构;
所述数据结构包括区块的块号、前一个区块的哈希值、当前时间的时间戳、计算新区块需要的key值、计算新区块的HASH值中前面0的个数据、随机数据、当前区块的哈希值以及区块链功能数据,所述区块功能数据包括当前客户端的用户标识以及对需要校验的组件的校验结果,所述随机数据用于加入到新区块中,以使得计算的当前区块的哈希值满足所述服务器下发的0的个数。
5.一种数据完整性校验装置,其特征在于,应用于客户端,所述装置包括:
第一接收模块,用于在需要进行数据完整性校验时,接收服务器下发的第一区块,所述第一区块中包含客户端需要校验的组件的名称列表信息,所述客户端为所述安装有目标应用程序的客户端,所述目标应用程序的安装组件中包括所述需要校验的组件;
生成模块,用于根据所述名称列表信息对需要校验的组件进行校验,得到校验结果,并根据所述第一区块生成第二区块,将所述第二区块更新到所述客户端本地保存的校验结果区块链中,所述第二区块中包括所述校验结果和所述客户端的标识信息;
发送模块,用于将所述第二区块发送到所述服务器,以使得所述服务器将所述第二区块同步到安装有所述目标应用程序的所有客户端的校验结果区块链中;
第二接收模块,用于接收所述服务器下发的多个第三区块,并将所述多个第三区块更新到所述客户端本地保存的校验结果区块链中,所述多个第三区块为安装所述目标应用程序的所有客户端分别根据所述第一区块生成的;
校验模块,用于根据所述本地保存的校验结果区块链,确定所述目标应用程序的完整性;
所述校验模块具体用于:
获取所述本地保存的校验结果区块链中每个区块中的所述目标程序的校验结果;确定相同的校验结果数量最多的为合法的校验结果,确定所述合法的校验结果对应的客户端中的所述目标应用程序的代码为完整的。
6.根据权利要求5所述的装置,其特征在于,所述生成模块具体用于:
对于每个需要校验的目标组件:
拷贝所述目标组件整个文件到所述客户端另一处内存,
计算内存修复重定位的偏移差,
对所述目标组件进行重定位,
获取所述目标组件的代码段的大小,
计算所述目标组件的代码段的哈希值;
在计算每个需要校验的组件的代码段的哈希值后,根据每个需要校验的组件的代码段的哈希值,得到每个组件校验结果。
7.根据权利要求6所述的装置,其特征在于,所述生成模块具体用于:
获取所述目标组件的内存起始地址;
解析所述目标组件的DOS头信息;
根据所述DOS头信息解析所述目标组件的NT头信息;
根据所述NT头信息获取所述目标组件的整个文件大小信息;
根据所述目标组件的内存起始地址和所述目标组件的整个文件大小信息,拷贝所述目标组件整个文件到所述客户端另一处内存。
8.一种客户端,其特征在于,包括:存储器,处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时可以实现权利要求1至4任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810028032.0A CN108256353B (zh) | 2018-01-11 | 2018-01-11 | 一种数据完整性校验方法、装置及客户端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810028032.0A CN108256353B (zh) | 2018-01-11 | 2018-01-11 | 一种数据完整性校验方法、装置及客户端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108256353A CN108256353A (zh) | 2018-07-06 |
CN108256353B true CN108256353B (zh) | 2021-01-01 |
Family
ID=62726320
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810028032.0A Active CN108256353B (zh) | 2018-01-11 | 2018-01-11 | 一种数据完整性校验方法、装置及客户端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108256353B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109145651B (zh) * | 2018-08-22 | 2021-12-28 | 何晓行 | 一种数据处理方法及装置 |
CN109157840B (zh) * | 2018-09-11 | 2022-07-12 | 北京云派网络科技有限公司 | 游戏中的数据处理方法、系统以及存储介质 |
CN109472598A (zh) * | 2018-11-07 | 2019-03-15 | 平安医疗健康管理股份有限公司 | 一种基于区块链的健康数据校验方法、设备及服务器 |
CN111200479B (zh) * | 2018-11-19 | 2022-04-12 | 福建天泉教育科技有限公司 | 传输数据的校验方法、存储介质 |
CN109582907B (zh) * | 2018-12-06 | 2023-03-07 | 深圳前海微众银行股份有限公司 | 网页资源完整性的校验方法、装置、设备及可读存储介质 |
CN109995764A (zh) * | 2019-03-07 | 2019-07-09 | 北京华安普特网络科技有限公司 | 一种基于区块链的ddos攻击防御方法 |
CN110147410B (zh) * | 2019-04-18 | 2020-08-04 | 阿里巴巴集团控股有限公司 | 一种块链式账本中的数据验证方法、系统、装置及设备 |
CN110209739A (zh) * | 2019-06-02 | 2019-09-06 | 四川虹微技术有限公司 | 一种协作系统、方法、装置、电子设备及存储介质 |
CN110457956B (zh) * | 2019-08-16 | 2021-05-28 | 重庆华医康道科技有限公司 | 面向数据监管的区块链网络的共识监管方法及其监管系统 |
CN110750444B (zh) * | 2019-09-10 | 2024-05-10 | 中国平安财产保险股份有限公司 | 应用程序移交方法、装置、计算机设备及存储介质 |
CN110598448B (zh) * | 2019-09-19 | 2024-03-12 | 腾讯科技(深圳)有限公司 | 基于区块链的操作数据处理方法、装置、设备及存储介质 |
CN113360134B (zh) * | 2020-03-06 | 2022-06-17 | 武汉斗鱼网络科技有限公司 | 安全验证程序的生成方法、装置、设备和存储介质 |
CN111460436B (zh) * | 2020-04-02 | 2023-07-28 | 广州市品高软件股份有限公司 | 一种基于区块链的非结构化数据操作方法和系统 |
CN112182120A (zh) * | 2020-10-14 | 2021-01-05 | 瀚高基础软件股份有限公司 | 一种数据表处理方法、装置及存储介质 |
CN114793220B (zh) * | 2022-06-23 | 2022-10-14 | 中航金网(北京)电子商务有限公司 | 即时消息通信方法、装置、程序、介质及设备 |
CN115473717B (zh) * | 2022-09-05 | 2023-09-01 | 杭州思拓瑞吉科技有限公司 | 基于互质幂余的储能系统时序数据校验方法 |
CN117034368B (zh) * | 2023-10-09 | 2024-02-09 | 苏州元脑智能科技有限公司 | 一种数据完整性的保护方法、装置、设备及存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106055933A (zh) * | 2016-06-24 | 2016-10-26 | 武汉斗鱼网络科技有限公司 | 一种客户端软件代码校验的方法及系统 |
CN106230851A (zh) * | 2016-08-29 | 2016-12-14 | 中金云金融(北京)大数据科技股份有限公司 | 基于区块链的数据保全方法及系统 |
CN106936818A (zh) * | 2017-02-24 | 2017-07-07 | 中国科学院软件研究所 | 基于区块链技术的数据审计方法、客户端及区块链云端设备 |
CN107038353A (zh) * | 2017-03-28 | 2017-08-11 | 武汉斗鱼网络科技有限公司 | 软件程序的校验保护方法及系统 |
CN107077557A (zh) * | 2016-12-29 | 2017-08-18 | 深圳前海达闼云端智能科技有限公司 | 软件应用程序发布和验证的方法及装置 |
CN107395343A (zh) * | 2017-07-10 | 2017-11-24 | 腾讯科技(深圳)有限公司 | 证书管理方法及系统 |
CN107426253A (zh) * | 2017-09-26 | 2017-12-01 | 武汉斗鱼网络科技有限公司 | 一种数据校验方法及客户端 |
CN107454110A (zh) * | 2017-09-26 | 2017-12-08 | 武汉斗鱼网络科技有限公司 | 一种数据校验方法及服务器 |
CN107465698A (zh) * | 2017-09-26 | 2017-12-12 | 武汉斗鱼网络科技有限公司 | 一种数据校验方法及服务器 |
CN107508806A (zh) * | 2017-08-11 | 2017-12-22 | 北京理工大学 | 基于区块链的互联网金融电子数据保全系统及方法 |
CN107528855A (zh) * | 2017-09-26 | 2017-12-29 | 武汉斗鱼网络科技有限公司 | 一种数据校验方法及服务器 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104639506B (zh) * | 2013-11-13 | 2018-07-24 | 中国电信股份有限公司 | 对应用程序安装进行管控的方法、系统与终端 |
CN104735164B (zh) * | 2015-04-10 | 2018-05-18 | 网易(杭州)网络有限公司 | 一种保存文件信息的方法和装置 |
US10796000B2 (en) * | 2016-06-11 | 2020-10-06 | Intel Corporation | Blockchain system with nucleobase sequencing as proof of work |
-
2018
- 2018-01-11 CN CN201810028032.0A patent/CN108256353B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106055933A (zh) * | 2016-06-24 | 2016-10-26 | 武汉斗鱼网络科技有限公司 | 一种客户端软件代码校验的方法及系统 |
CN106230851A (zh) * | 2016-08-29 | 2016-12-14 | 中金云金融(北京)大数据科技股份有限公司 | 基于区块链的数据保全方法及系统 |
CN107077557A (zh) * | 2016-12-29 | 2017-08-18 | 深圳前海达闼云端智能科技有限公司 | 软件应用程序发布和验证的方法及装置 |
CN106936818A (zh) * | 2017-02-24 | 2017-07-07 | 中国科学院软件研究所 | 基于区块链技术的数据审计方法、客户端及区块链云端设备 |
CN107038353A (zh) * | 2017-03-28 | 2017-08-11 | 武汉斗鱼网络科技有限公司 | 软件程序的校验保护方法及系统 |
CN107395343A (zh) * | 2017-07-10 | 2017-11-24 | 腾讯科技(深圳)有限公司 | 证书管理方法及系统 |
CN107508806A (zh) * | 2017-08-11 | 2017-12-22 | 北京理工大学 | 基于区块链的互联网金融电子数据保全系统及方法 |
CN107426253A (zh) * | 2017-09-26 | 2017-12-01 | 武汉斗鱼网络科技有限公司 | 一种数据校验方法及客户端 |
CN107454110A (zh) * | 2017-09-26 | 2017-12-08 | 武汉斗鱼网络科技有限公司 | 一种数据校验方法及服务器 |
CN107465698A (zh) * | 2017-09-26 | 2017-12-12 | 武汉斗鱼网络科技有限公司 | 一种数据校验方法及服务器 |
CN107528855A (zh) * | 2017-09-26 | 2017-12-29 | 武汉斗鱼网络科技有限公司 | 一种数据校验方法及服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN108256353A (zh) | 2018-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108256353B (zh) | 一种数据完整性校验方法、装置及客户端 | |
CN107396360B (zh) | 区块验证方法及装置 | |
CN106230851B (zh) | 基于区块链的数据保全方法及系统 | |
CN109542888B (zh) | 区块链的数据修改和同步方法、装置、设备及存储介质 | |
CN108334753B (zh) | 盗版应用验证方法和分布式服务器节点 | |
CN109829294B (zh) | 一种固件验证方法、系统、服务器及电子设备 | |
CN112287034B (zh) | 一种数据同步方法、设备以及计算机可读存储介质 | |
CN110690974B (zh) | 基于区块链的数据验证方法、装置、设备及可读存储介质 | |
CN104715183A (zh) | 一种虚拟机运行时的可信验证方法和设备 | |
CN111010284B (zh) | 一种待共识区块的处理方法、相关装置及区块链系统 | |
CN109408319B (zh) | 一种基于区块链的软件运行技术状态监控方法 | |
CN107861833B (zh) | 识别码的生成方法和装置、计算机设备、可读存储介质 | |
CN112883117B (zh) | 一种数据同步方法、设备以及计算机可读存储介质 | |
CN111641694A (zh) | 基于区块链的应用程序发布方法、设备及存储介质 | |
CN111679978B (zh) | 一种程序测试方法、程序测试装置、电子设备及存储介质 | |
CN110851535A (zh) | 基于区块链的数据处理方法、装置、存储介质及终端 | |
CN108924089B (zh) | 一种客户端设备识别方法、装置及客户端设备 | |
CN111177265A (zh) | 一种区块链分域方法 | |
CN108256351B (zh) | 文件处理方法和装置、存储介质及终端 | |
CN101924794B (zh) | 一种基于互联网实时监视软件运行总量的方法 | |
CN112131041A (zh) | 用于管理数据放置的方法、设备和计算机程序产品 | |
Hwang et al. | A mutual nonrepudiation protocol for cloud storage with interchangeable accesses of a single account from multiple devices | |
CN106372523B (zh) | 一种modem文件安全保护方法及系统 | |
CN116089912A (zh) | 软件识别信息获取方法及装置、电子设备和存储介质 | |
CN111404888B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |