本公开涉及固定性数据,并且更具体地,涉及使用固定性数据验证接收的文件是同一摄取文件的原始副本。
背景技术:
1、固定性旨在证明存储的文件尚未被非故意或故意地更改。故意更改对应于攻击者改变文件的至少一位。因此,固定性的适当的解决方案应该:提供文件尚未被更改的可信证明;必须检测所有非恶意更改;必须检测外部人员的恶意更改;并且必须检测不可信的内部人员的恶意更改。可信的内部人员是被授权更改文件的实体。
2、当前的解决方案计算完整文件的散列或加密散列,并在数据库中存储对应的散列。然而,当存储的文件较大时,使用针对大型整体文件的散列是低效的。此外,对大型文件进行散列与支持多部分上传和下载的现代云基础设施(其中文件的不同部分被同时上传并在存储器层次重新组合)不兼容。因此,使用当前的解决方案,攻击者可以上传其伪造的文件并将它登记在可信数据库(或分布式分类帐)中。
技术实现思路
1、本公开提供了验证接收的文件是摄取器准备的同一文件的原始副本。
2、在一个实现方案中,公开了一种用于通过摄取器的文件的固定性数据处理的方法。所述方法包括:通过将所述文件分割成多个部分来接收和处理所述文件;计算每个部分的摘要,直到已经计算出所述多个部分中的所有部分的摘要;计算作为所述多个部分中的所有部分的摘要的组合的主散列;使用所述主散列和所述摄取器的私钥来计算主散列签名;形成包括一组摘要、所述主散列、所述主散列签名和所述摄取器的公钥的固定性数据,所述一组摘要包括所述多个部分中的所有部分的摘要;向验证器发送所述固定性数据;和在可信数据库中存储包括所述主散列、所述主散列签名、所述摄取器的公钥和所述文件的标识符的固定性元数据。
3、在一个实现方案中,所述方法还包括第一比较所述固定性数据中的所述主散列与每个部分的散列的组合;第二比较所述固定性数据中的所述主散列签名与使用所述公钥计算的所述主散列的数字签名;第三比较每个部分的散列与所述一组摘要中的每个摘要;并且当所有三个比较都产生真的结果时,声明所述文件为原始的且没有受损。在一个实现方案中,所述方法还包括请求验证在所述可信数据库中存储的固定性元数据的主散列签名与所述固定性数据中的主散列签名相匹配。在一个实现方案中,所述第一比较包括确定mh==hash(hr1|…|hrn)是否为真,其中mh是所述主散列并且hri是所述可信数据库中存储的第i部分的摘要。在一个实现方案中,所述第二比较包括确定是否为真,其中kpub是固定性数据所提供的公钥,versign是数字签名的验证。在一个实现方案中,所述第三比较包括确定hi==hri是否为真,其中hi是每个部分的摘要并且hri是所述可信数据库中存储的第i部分的摘要。在一个实现方案中,所述每个部分的摘要被计算为其中hash()是散列函数。在一个实现方案中,所述主散列被计算为mh=hash1(h1|…|hn),其中hash1()是散列函数并且符号|表示连接两个部分。在一个实现方案中,所述主散列签名被计算为其中kpri是所述摄取器的所述私钥,并且sign是数字签名。在一个实现方案中,所述方法还包括向所述可信数据库发送查询以确定所述固定性数据中的主散列签名是否与所述固定性元数据中的主散列签名相匹配。在一个实现方案中,所述可信数据库是区块链。
4、在另一个实现方案中,公开了一种固定性数据系统。所述系统包括:摄取器,所述摄取器包括公钥和私钥,所述摄取器通过将文件分割成多个部分来接收和处理所述文件;所述摄取器生成固定性数据,所述固定性数据包括:所述多个部分的一组摘要,每个部分的摘要被计算为每个部分的散列;主散列,所述主散列被计算为所述一组摘要的组合;主散列签名,使用所述主散列和所述私钥来计算所述主散列签名;和所述摄取器的公钥;可信数据库,所述可信数据库存储包括所述主散列、所述主散列签名、所述公钥和所述文件的标识符的固定性元数据。
5、在一个实现方案中,所述系统还包括验证器,所述验证器通过包括以下项目来接收和验证所述文件尚未受损:所述固定性数据中的所述主散列与每个部分的散列的组合;所述固定性数据中的所述主散列签名与使用所述公钥计算的所述主散列的数字签名;以及每个部分的散列与所述每个部分的摘要;其中当所有三个比较都产生真的结果时,声明所述文件为原始的且没有受损。在一个实现方案中,所述验证器验证所述固定性数据中的主散列签名与在所述可信数据库中存储的所述固定性元数据的主散列签名相匹配,其中所述可信数据库是区块链。
6、在另一个实现方案中,公开了一种用于验证文件是摄取器准备的同一文件的原始副本的方法。所述方法包括:接收所述文件的多个部分;接收包括多个部分的一组摘要、主散列、主散列签名和所述摄取器的公钥的固定性数据;第一比较所述固定性数据中的所述主散列与每个部分的散列的组合;第二比较所述固定性数据中的所述主散列签名与使用所述摄取器的公钥计算的所述主散列的数字签名;第三比较每个部分的散列与每个摘要;并且当所有三个比较都产生真的结果时,声明所述文件为原始的且没有受损。
7、在一个实现方案中,通过将所述文件分割成部分来生成所述文件的所述多个部分。在一个实现方案中,所述一组摘要中的每个摘要被计算为每个部分的散列。在一个实现方案中,所述主散列被计算为所述一组摘要的组合。在一个实现方案中,所述主散列被计算为mh=hash1(h1|…|hn),其中hash1()是散列函数并且符号|表示连接两个部分。在一个实现方案中,使用所述主散列和所述摄取器的私钥来计算所述主散列签名。在一个实现方案中,所述主散列签名被计算为其中kpri是所述摄取器的所述私钥,并且sign是数字签名。
8、从通过举例的方式来说明本公开的方面的本说明书中,其他特征和优点会变得明显。
1.一种用于通过摄取器的文件的固定性数据处理的方法,所述方法包括:
2.根据权利要求1所述的方法,还包括:
3.根据权利要求2所述的方法,还包括
4.根据权利要求2所述的方法,其中所述第一比较包括
5.根据权利要求2所述的方法,其中所述第二比较包括
6.根据权利要求2所述的方法,其中所述第三比较包括
7.根据权利要求1所述的方法,其中所述每个部分的摘要被计算为hi=hash(pi),其中hash()是散列函数。
8.根据权利要求1所述的方法,其中所述主散列被计算为mh=hash1(h1|…|hn),其中hash1()是散列函数并且符号|表示连接两个部分。
9.根据权利要求1所述的方法,其中所述主散列签名被计算为其中kpri是所述摄取器的所述私钥,并且sign是数字签名。
10.根据权利要求1所述的方法,还包括
11.根据权利要求1所述的方法,其中所述可信数据库是区块链。
12.一种固定性数据系统,所述系统包括:
13.根据权利要求12所述的系统,还包括:
14.根据权利要求13所述的系统,其中所述验证器验证所述固定性数据中的主散列签名与在所述可信数据库中存储的所述固定性元数据的主散列签名相匹配,
15.一种用于验证文件是摄取器准备的同一文件的原始副本的方法,所述方法包括:
16.根据权利要求15所述的方法,其中通过将所述文件分割成部分来生成所述文件的所述多个部分。
17.根据权利要求15所述的方法,其中所述一组摘要中的每个摘要被计算为每个部分的散列。
18.根据权利要求15所述的方法,其中所述主散列被计算为所述一组摘要的组合。
19.根据权利要求15所述的方法,其中使用所述主散列和所述摄取器的私钥来计算所述主散列签名。
20.根据权利要求19所述的方法,其中所述主散列签名被计算为其中kpri是所述摄取器的所述私钥,并且sign是数字签名。