基于区块链的日志存储和读取方法、装置、设备及介质转让专利

申请号 : CN201910970065.1

文献号 : CN110839015A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 夏子钦羊志敏

申请人 : 深圳壹账通智能科技有限公司

摘要 :

本发明提供一种基于区块链的日志存储方法,包括:接收客户端上传的日志存储请求,该日志存储请求中携带待存储日志;获取所述待存储日志的日志摘要以及日志哈希值;根据待存储日志、日志摘要和日志哈希值生成安全校验信息;将安全校验信息返回给客户端,以便客户端根据安全校验信息验证待存储日志是否被篡改,并在验证待存储日志未被篡改时返回确认存储通知;接收到客户端返回的确认存储通知后,将待存储日志存储于客户端或云存储端;对日志摘要、日志哈希值和所述待存储日志的存储地址所拼接而成的数据进行数字签名,得到第二签名结果;将所述日志摘要、日志哈希值和第二签名结果存储于区块链服务端本地。本发明能够提高存储日志的安全性。

权利要求 :

1.一种基于区块链的日志存储方法,适于区块链服务端,其特征在于,包括以下步骤:接收客户端上传的日志存储请求,该日志存储请求中携带待存储日志;

获取所述待存储日志的日志摘要以及日志哈希值;

根据所述待存储日志、日志摘要和日志哈希值生成安全校验信息;

将所述安全校验信息返回给所述客户端,以便所述客户端根据所述安全校验信息验证所述待存储日志是否被篡改,并在验证所述待存储日志未被篡改时返回确认存储通知;

接收到所述客户端返回的确认存储通知后,将所述待存储日志存储于所述客户端或云存储端;

对所述日志摘要、日志哈希值和所述待存储日志的存储地址所拼接而成的数据进行数字签名,得到第二签名结果;

将所述日志摘要、日志哈希值和第二签名结果存储于区块链服务端本地。

2.根据权利要求1所述基于区块链的日志存储方法,其特征在于,所述根据所述待存储日志、日志摘要和日志哈希值生成安全校验信息的步骤包括:根据预先生成的服务端私钥对所述待存储日志、日志摘要和日志哈希值拼接而成的数据进行数字签名,得到第一签名结果;

采用预设的对称密钥对所述待存储日志、日志摘要、日志哈希值和第一签名结果拼接而成的数据进行加密,得到第一加密结果;

采用所述客户端预先广发的客户端公钥对所述对称密钥进行加密,得到第二加密结果;

确定所述第一加密结果和第二加密结果作为所述安全校验信息。

3.根据权利要求2所述基于区块链的日志存储方法,其特征在于,所述客户端根据所述安全校验信息验证所述待存储日志是否被篡改并返回验证结果的步骤包括:采用预设的与所述客户端公钥对应客户端私钥对所述第二加密结果进行解密,得到所述对称密钥;

采用所述对称密钥对所述第一加密结果进行解密,得到所述待存储日志、日志摘要、日志哈希值和第一签名结果;

采用预先接收到的与所述服务端私钥对应的服务端公钥对所述第一签名结果进行验证,再次得到所述待存储日志、日志摘要和日志哈希值;

判断对所述第一加密结果进行解密得到的所述待存储日志、日志摘要和日志哈希值与对所述第一签名结果进行验证得到的所述待存储日志、日志摘要和日志哈希值是否一致,若是,对所述待存储日志进行哈希运算,并判断所述哈希运算的结果与所述日志哈希值是否一致,若是,则判定所述待存储日志未被篡改,否则,判定所述待存储日志已被篡改。

4.根据权利要求1所述基于区块链的日志存储方法,其特征在于,该方法还包括:在获取所述待存储日志的日志摘要以及日志哈希值之前,对所述待存储日志中的敏感数据进行脱敏处理。

5.一种基于区块链的日志存储方法,适于客户端,其特征在于,包括以下步骤:向区块链服务端发送日志存储请求,该日志存储请求中携带待存储日志,以便所述区块链服务端根据所述日志存储请求获取所述待存储日志的日志摘要以及日志哈希值,而后根据所述待存储日志、日志摘要和日志哈希值生成安全校验信息并返回;

根据所述区块链服务端返回的所述安全校验信息验证所述待存储日志是否被篡改,并在验证所述待存储日志未被篡改时向所述区块链服务端返回确认存储通知,以便所述区块链服务端在接收到所述确认存储通知后,将所述待存储日志存储于客户端本地或云存储端,并对所述日志摘要、日志哈希值和所述待存储日志的存储地址所拼接而成的数据进行数字签名,得到第二签名结果,而后将所述日志摘要、日志哈希值和第二签名结果存储于所述区块链服务端。

6.一种基于区块链的日志读取方法,适于区块链服务端,用于读取基于前述权利要求

1-4所述方法存储的日志,其特征在于,所述读取方法包括以下步骤:接收所述客户端发送的日志查询请求,该日志查询请求携带待查询日志中的预设标识字段;

从区块链服务端本地获取与所述预设标识字段对应的日志摘要、日志哈希值和第二签名结果并返回给所述客户端,以便所述客户端对所述第二签名结果进行验证,得到所述第二签名结果中的日志摘要、日志哈希值和存储地址,而后判断从区块链服务端本地获取的所述日志摘要和日志哈希值与所述第二签名结果中的日志摘要和日志哈希值是否一致,若是,则根据获得的所述存储地址,从所述客户端或云存储端获取所述待查询日志。

7.一种基于区块链的日志读取方法,适于客户端,用于读取基于前述权利要求5所述方法存储的日志,其特征在于,所述读取方法包括以下步骤:向所述区块链服务端发送日志查询请求,该日志查询请求携带待查询日志中的预设标识字段,以便所述区块链服务端从区块链服务端本地获取与所述预设标识字段对应的日志摘要、日志哈希值和第二签名结果并返回;

采用所述服务端公钥对返回的所述第二签名结果进行验证,得到所述第二签名结果中的日志摘要、日志哈希值和存储地址;

判断从所述区块链服务端本地获取的所述日志摘要和日志哈希值与所述第二签名结果中的日志摘要和日志哈希值是否一致,若是,则根据获得的所述存储地址,从客户端本地或云存储端获取所述待查询日志。

8.一种基于区块链的日志存储装置,其特征在于,包括:

存储请求接收模块,用于接收客户端上传的日志存储请求,该日志存储请求中携带待存储日志;

日志摘要获取模块,用于获取所述待存储日志的日志摘要;

日志哈希值获取模块,用于获取所述待存储日志的日志哈希值;

校验信息生成模块,用于根据所述待存储日志、日志摘要和日志哈希值生成安全校验信息;

校验信息返回模块,用于将所述安全校验信息返回给所述客户端,以便所述客户端根据所述安全校验信息验证所述待存储日志是否被篡改,并在验证所述待存储日志未被篡改时返回确认存储通知;

日志存储模块,用于接收到所述客户端返回的确认存储通知后,将所述待存储日志存储于所述客户端或云存储端;

日志索引签名模块,用于对所述日志摘要、日志哈希值和所述待存储日志的存储地址所拼接而成的数据进行数字签名,得到第二签名结果;

日志索引存储模块,用于将所述日志摘要、日志哈希值和第二签名结果存储于区块链服务端本地。

9.一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4任一项所述方法、权利要求5所述方法、权利要求6所述方法、或权利要求7所述方法的步骤。

10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4任一项所述方法、权利要求5所述方法、权利要求6所述方法、或权利要求7所述方法的步骤。

说明书 :

基于区块链的日志存储和读取方法、装置、设备及介质

技术领域

[0001] 本发明涉及区块链技术,尤其涉及一种基于区块链的日志存储和读取方法、装置、设备及介质。

技术领域

[0002]
[0003] 随着计算机互联网技术的快速发展,互联网上的业务以及业务中的应用数量也迎来了爆发性的增长,用户每天在使用运营商提供的这些业务及应用产品时,会产生大量的业务使用记录数据,而如何可靠地存储并收集用户使用这些应用产生的业务使用记录数据,以利于后续能够对存储的业务使用记录数据进行提取,进而运用数据分析、数据挖掘等技术,统计并分析业务使用记录数据中包含的用户习惯以及用户特征行为,从中找出对运营商有价值的信息,从而指导应用产品改进、拓展以及推出新的应用产品,帮助应用产品推广,显得极为重要。
[0004] 现有技术中,业务及应用产品运营过程中产生的各种用户业务使用记录数据,通常以日志的形式进行存储,通常,日志存储于本地或存储于云存储端,再采用各种安全机制进行保护。然而,现有的安全机制无法有效地识别日志篡改问题,无论存储于何种环境,都可能存在漏洞,容易受到意外破坏和伪造原始数据的威胁。

发明内容

[0005] 针对上述现有技术的不足,本发明提供一种基于区块链的日志存储和读取方法、装置、设备及介质,以提高存储日志的安全性。
[0006] 为了实现上述目的,本发明提供一种基于区块链的日志存储方法,适于区块链服务端,包括以下步骤:
[0007] 接收客户端上传的日志存储请求,该日志存储请求中携带待存储日志;
[0008] 获取所述待存储日志的日志摘要以及日志哈希值;
[0009] 根据所述待存储日志、日志摘要和日志哈希值生成安全校验信息;
[0010] 将所述安全校验信息返回给所述客户端,以便所述客户端根据所述安全校验信息验证所述待存储日志是否被篡改,并在验证所述待存储日志未被篡改时返回确认存储通知;
[0011] 接收到所述客户端返回的确认存储通知后,将所述待存储日志存储于所述客户端或云存储端;
[0012] 对所述日志摘要、日志哈希值和所述待存储日志的存储地址所拼接而成的数据进行数字签名,得到第二签名结果;
[0013] 将所述日志摘要、日志哈希值和第二签名结果存储于区块链服务端本地。
[0014] 在本发明一个实施例中,所述根据所述待存储日志、日志摘要和日志哈希值生成安全校验信息的步骤包括:
[0015] 根据预先生成的服务端私钥对所述待存储日志、日志摘要和日志哈希值拼接而成的数据进行数字签名,得到第一签名结果;
[0016] 采用预设的对称密钥对所述待存储日志、日志摘要、日志哈希值和第一签名结果拼接而成的数据进行加密,得到第一加密结果;
[0017] 采用所述客户端预先广发的客户端公钥对所述对称密钥进行加密,得到第二加密结果;
[0018] 确定所述第一加密结果和第二加密结果作为所述安全校验信息。
[0019] 在本发明一个实施例中,所述客户端根据所述安全校验信息验证所述待存储日志是否被篡改并返回验证结果的步骤包括:
[0020] 采用预设的与所述客户端公钥对应客户端私钥对所述第二加密结果进行解密,得到所述对称密钥;
[0021] 采用所述对称密钥对所述第一加密结果进行解密,得到所述待存储日志、日志摘要、日志哈希值和第一签名结果;
[0022] 采用预先接收到的与所述服务端私钥对应的服务端公钥对所述第一签名结果进行验证,再次得到所述待存储日志、日志摘要和日志哈希值;
[0023] 判断对所述第一加密结果进行解密得到的所述待存储日志、日志摘要和日志哈希值与对所述第一签名结果进行验证得到的所述待存储日志、日志摘要和日志哈希值是否一致,若是,对所述待存储日志进行哈希运算,并判断所述哈希运算的结果与所述日志哈希值是否一致,若是,则判定所述待存储日志未被篡改,否则,判定所述待存储日志已被篡改。
[0024] 在本发明一个实施例中,该方法还包括:在获取所述待存储日志的日志摘要以及日志哈希值之前,对所述待存储日志中的敏感数据进行脱敏处理。
[0025] 在本发明一个实施例中,所述对所述待存储日志中的敏感数据进行脱敏处理的步骤包括:
[0026] 根据预设的正则表达式匹配规则,匹配所述待存储日志中的敏感数据;
[0027] 根据预设的脱敏规则,对匹配到的所述敏感数据进行脱敏。
[0028] 在本发明一个实施例中,所述获取所述待存储日志的日志摘要以及日志哈希值的步骤包括:
[0029] 提取所述待存储日志中预设字段的字段名称组成所述日志摘要;
[0030] 对所述待存储日志进行哈希运算得到所述日志哈希值。
[0031] 为了实现上述目的,本发明还提供一种基于区块链的日志存储方法,适于客户端,包括以下步骤:
[0032] 向区块链服务端发送日志存储请求,该日志存储请求中携带待存储日志,以便所述区块链服务端根据所述日志存储请求获取所述待存储日志的日志摘要以及日志哈希值,而后根据所述待存储日志、日志摘要和日志哈希值生成安全校验信息并返回;
[0033] 根据所述区块链服务端返回的所述安全校验信息验证所述待存储日志是否被篡改,并在验证所述待存储日志未被篡改时向所述区块链服务端返回确认存储通知,以便所述区块链服务端在接收到所述确认存储通知后,将所述待存储日志存储于客户端本地或云存储端,并对所述日志摘要、日志哈希值和所述待存储日志的存储地址所拼接而成的数据进行数字签名,得到第二签名结果,而后将所述日志摘要、日志哈希值和第二签名结果存储于所述区块链服务端。
[0034] 在本发明一个实施例中,所述区块链服务端根据所述待存储日志、日志摘要和日志哈希值生成所述安全校验信息的步骤包括:
[0035] 根据预先生成的服务端私钥对所述待存储日志、日志摘要和日志哈希值拼接而成的数据进行数字签名,得到第一签名结果;
[0036] 采用预设的对称密钥对所述待存储日志、日志摘要、日志哈希值和第一签名结果拼接而成的数据进行加密,得到第一加密结果;
[0037] 采用预先接收到的客户端公钥对所述对称密钥进行加密,得到第二加密结果,而后返回所述第一加密结果和第二加密结果;
[0038] 采用预设的与所述客户端公钥对应客户端私钥对所述第二加密结果进行解密,得到所述对称密钥;
[0039] 确定所述第一加密结果和第二加密结果作为所述安全校验信息。
[0040] 在本发明一个实施例中,所述根据所述区块链服务端返回的所述安全校验信息验证所述待存储日志是否被篡改的步骤包括:
[0041] 采用预设的与所述客户端公钥对应客户端私钥对所述第二加密结果进行解密,得到所述对称密钥;
[0042] 采用所述对称密钥对所述第一加密结果进行解密,得到所述待存储日志、日志摘要、日志哈希值和第一签名结果;
[0043] 采用预先接收到的与所述服务端私钥对应的服务端公钥对所述第一签名结果进行验证,再次得到所述待存储日志、日志摘要和日志哈希值;
[0044] 判断对所述第一加密结果进行解密得到的所述待存储日志、日志摘要和日志哈希值与对所述第一签名结果进行验证得到的所述待存储日志、日志摘要和日志哈希值是否一致,若是,对所述待存储日志进行哈希运算,并判断所述哈希运算的结果与所述日志哈希值是否一致,若是,则判定所述待存储日志未被篡改,否则,判定所述待存储日志已被篡改。
[0045] 在本发明一个实施例中,该方法还包括:所述区块链服务端在获取所述待存储日志的日志摘要以及日志哈希值之前,对所述待存储日志中的敏感数据进行脱敏处理。
[0046] 在本发明一个实施例中,所述区块链服务端对所述待存储日志中的敏感数据进行脱敏处理的步骤包括:
[0047] 根据预设的正则表达式匹配规则,匹配所述待存储日志中的敏感数据;
[0048] 根据预设的脱敏规则,对匹配到的所述敏感数据进行脱敏。
[0049] 在本发明一个实施例中,所述区块链服务端获取所述待存储日志的日志摘要以及日志哈希值的步骤包括:
[0050] 提取所述待存储日志中预设字段的字段名称组成所述日志摘要;
[0051] 对所述待存储日志进行哈希运算得到所述日志哈希值。
[0052] 为了实现上述目的,本发明还提供一种基于区块链的日志读取方法,适于区块链服务端,用于读取基于前述方法存储的日志,所述读取方法包括以下步骤:
[0053] 接收所述客户端发送的日志查询请求,该日志查询请求携带待查询日志中的预设标识字段;
[0054] 从区块链服务端本地获取与所述预设标识字段对应的日志摘要、日志哈希值和第二签名结果并返回给所述客户端,以便所述客户端对所述第二签名结果进行验证,得到所述第二签名结果中的日志摘要、日志哈希值和存储地址,而后判断从区块链服务端本地获取的所述日志摘要和日志哈希值与所述第二签名结果中的日志摘要和日志哈希值是否一致,若是,则根据获得的所述存储地址,从所述客户端或云存储端获取所述待查询日志。
[0055] 为了实现上述目的,本发明还提供一种基于区块链的日志读取方法,适于客户端,用于读取基于前述方法存储的日志,所述读取方法包括以下步骤:
[0056] 向所述区块链服务端发送日志查询请求,该日志查询请求携带待查询日志中的预设标识字段,以便所述区块链服务端从区块链服务端本地获取与所述预设标识字段对应的日志摘要、日志哈希值和第二签名结果并返回;
[0057] 采用所述服务端公钥对返回的所述第二签名结果进行验证,得到所述第二签名结果中的日志摘要、日志哈希值和存储地址;
[0058] 判断从所述区块链服务端本地获取的所述日志摘要和日志哈希值与所述第二签名结果中的日志摘要和日志哈希值是否一致,若是,则根据获得的所述存储地址,从客户端本地或云存储端获取所述待查询日志。
[0059] 为了实现上述目的,本发明还提供一种基于区块链的日志存储装置,包括:
[0060] 存储请求接收模块,用于接收客户端上传的日志存储请求,该日志存储请求中携带待存储日志;
[0061] 日志摘要获取模块,用于获取所述待存储日志的日志摘要;
[0062] 日志哈希值获取模块,用于获取所述待存储日志的日志哈希值;
[0063] 校验信息生成模块,用于根据所述待存储日志、日志摘要和日志哈希值生成安全校验信息;
[0064] 校验信息返回模块,用于将所述安全校验信息返回给所述客户端,以便所述客户端根据所述安全校验信息验证所述待存储日志是否被篡改,并在验证所述待存储日志未被篡改时返回确认存储通知;
[0065] 日志存储模块,用于接收到所述客户端返回的确认存储通知后,将所述待存储日志存储于所述客户端或云存储端;
[0066] 日志索引签名模块,用于对所述日志摘要、日志哈希值和所述待存储日志的存储地址所拼接而成的数据进行数字签名,得到第二签名结果;
[0067] 日志索引存储模块,用于将所述日志摘要、日志哈希值和第二签名结果存储于区块链服务端本地。
[0068] 在本发明一个实施例中,所述校验信息生成模块根据所述待存储日志、日志摘要和日志哈希值生成安全校验信息的步骤包括:
[0069] 根据预先生成的服务端私钥对所述待存储日志、日志摘要和日志哈希值拼接而成的数据进行数字签名,得到第一签名结果;
[0070] 采用预设的对称密钥对所述待存储日志、日志摘要、日志哈希值和第一签名结果拼接而成的数据进行加密,得到第一加密结果;
[0071] 采用所述客户端预先广发的客户端公钥对所述对称密钥进行加密,得到第二加密结果;
[0072] 确定所述第一加密结果和第二加密结果作为所述安全校验信息。
[0073] 在本发明一个实施例中,所述客户端根据所述安全校验信息验证所述待存储日志是否被篡改并返回验证结果的步骤包括:
[0074] 采用预设的与所述客户端公钥对应客户端私钥对所述第二加密结果进行解密,得到所述对称密钥;
[0075] 采用所述对称密钥对所述第一加密结果进行解密,得到所述待存储日志、日志摘要、日志哈希值和第一签名结果;
[0076] 采用预先接收到的与所述服务端私钥对应的服务端公钥对所述第一签名结果进行验证,再次得到所述待存储日志、日志摘要和日志哈希值;
[0077] 判断对所述第一加密结果进行解密得到的所述待存储日志、日志摘要和日志哈希值与对所述第一签名结果进行验证得到的所述待存储日志、日志摘要和日志哈希值是否一致,若是,对所述待存储日志进行哈希运算,并判断所述哈希运算的结果与所述日志哈希值是否一致,若是,则判定所述待存储日志未被篡改,否则,判定所述待存储日志已被篡改。
[0078] 在本发明一个实施例中,该装置还包括:脱敏模块,用于在获取所述待存储日志的日志摘要以及日志哈希值之前,对所述待存储日志中的敏感数据进行脱敏处理。
[0079] 在本发明一个实施例中,所述脱敏模块对所述待存储日志中的敏感数据进行脱敏处理的步骤包括:
[0080] 根据预设的正则表达式匹配规则,匹配所述待存储日志中的敏感数据;
[0081] 根据预设的脱敏规则,对匹配到的所述敏感数据进行脱敏。
[0082] 在本发明一个实施例中,所述获取所述待存储日志的日志摘要以及日志哈希值的步骤包括:
[0083] 所述日志摘要获取模块具体用于提取所述待存储日志中预设字段的字段名称组成所述日志摘要;
[0084] 所述日志哈希值获取模块具体用于对所述待存储日志进行哈希运算得到所述日志哈希值。
[0085] 为了实现上述目的,本发明还提供一种基于区块链的日志存储装置,该装置包括:
[0086] 存储请求发送模块,用于向区块链服务端发送日志存储请求,该日志存储请求中携带待存储日志,以便所述区块链服务端根据所述日志存储请求获取所述待存储日志的日志摘要以及日志哈希值,而后根据所述待存储日志、日志摘要和日志哈希值生成安全校验信息并返回;
[0087] 校验模块,用于根据所述区块链服务端返回的所述安全校验信息验证所述待存储日志是否被篡改,并在验证所述待存储日志未被篡改时向所述区块链服务端返回确认存储通知,以便所述区块链服务端在接收到所述确认存储通知后,将所述待存储日志存储于客户端本地或云存储端,并对所述日志摘要、日志哈希值和所述待存储日志的存储地址所拼接而成的数据进行数字签名,得到第二签名结果,而后将所述日志摘要、日志哈希值和第二签名结果存储于所述区块链服务端。
[0088] 在本发明一个实施例中,所述区块链服务端根据所述待存储日志、日志摘要和日志哈希值生成所述安全校验信息的步骤包括:
[0089] 根据预先生成的服务端私钥对所述待存储日志、日志摘要和日志哈希值拼接而成的数据进行数字签名,得到第一签名结果;
[0090] 采用预设的对称密钥对所述待存储日志、日志摘要、日志哈希值和第一签名结果拼接而成的数据进行加密,得到第一加密结果;
[0091] 采用预先接收到的客户端公钥对所述对称密钥进行加密,得到第二加密结果,而后返回所述第一加密结果和第二加密结果;
[0092] 采用预设的与所述客户端公钥对应客户端私钥对所述第二加密结果进行解密,得到所述对称密钥;
[0093] 确定所述第一加密结果和第二加密结果作为所述安全校验信息。
[0094] 在本发明一个实施例中,所述校验模块根据所述区块链服务端返回的所述安全校验信息验证所述待存储日志是否被篡改的步骤包括:
[0095] 采用预设的与所述客户端公钥对应客户端私钥对所述第二加密结果进行解密,得到所述对称密钥;
[0096] 采用所述对称密钥对所述第一加密结果进行解密,得到所述待存储日志、日志摘要、日志哈希值和第一签名结果;
[0097] 采用预先接收到的与所述服务端私钥对应的服务端公钥对所述第一签名结果进行验证,再次得到所述待存储日志、日志摘要和日志哈希值;
[0098] 判断对所述第一加密结果进行解密得到的所述待存储日志、日志摘要和日志哈希值与对所述第一签名结果进行验证得到的所述待存储日志、日志摘要和日志哈希值是否一致,若是,对所述待存储日志进行哈希运算,并判断所述哈希运算的结果与所述日志哈希值是否一致,若是,则判定所述待存储日志未被篡改,否则,判定所述待存储日志已被篡改。
[0099] 在本发明一个实施例中,所述区块链服务端在获取所述待存储日志的日志摘要以及日志哈希值之前,对所述待存储日志中的敏感数据进行脱敏处理。
[0100] 在本发明一个实施例中,所述区块链服务端对所述待存储日志中的敏感数据进行脱敏处理的步骤包括:
[0101] 根据预设的正则表达式匹配规则,匹配所述待存储日志中的敏感数据;
[0102] 根据预设的脱敏规则,对匹配到的所述敏感数据进行脱敏。
[0103] 在本发明一个实施例中,所述区块链服务端获取所述待存储日志的日志摘要以及日志哈希值的步骤包括:
[0104] 提取所述待存储日志中预设字段的字段名称组成所述日志摘要;
[0105] 对所述待存储日志进行哈希运算得到所述日志哈希值。
[0106] 为了实现上述目的,本发明还提供一种基于区块链的日志读取装置,用于读取基于前述存储装置存储的日志,所述装置包括:
[0107] 查询请求接收模块,用于接收所述客户端发送的日志查询请求,该日志查询请求携带待查询日志中的预设标识字段;
[0108] 日志索引查询模块,用于从区块链服务端本地获取与所述预设标识字段对应的日志摘要、日志哈希值和第二签名结果并返回给所述客户端,以便所述客户端对所述第二签名结果进行验证,得到所述第二签名结果中的日志摘要、日志哈希值和存储地址,而后判断从区块链服务端本地获取的所述日志摘要和日志哈希值与所述第二签名结果中的日志摘要和日志哈希值是否一致,若是,则根据获得的所述存储地址,从所述客户端或云存储端获取所述待查询日志。
[0109] 为了实现上述目的,本发明还提供一种基于区块链的日志读取装置,用于读取基于前述存储装置存储的日志,所述装置包括:
[0110] 查询请求发送模块,用于向所述区块链服务端发送日志查询请求,该日志查询请求携带待查询日志中的预设标识字段,以便所述区块链服务端从区块链服务端本地获取与所述预设标识字段对应的日志摘要、日志哈希值和第二签名结果并返回;
[0111] 验证模块,用于采用所述服务端公钥对返回的所述第二签名结果进行验证,得到所述第二签名结果中的日志摘要、日志哈希值和存储地址;
[0112] 日志查询模块,用于判断从所述区块链服务端本地获取的所述日志摘要和日志哈希值与所述第二签名结果中的日志摘要和日志哈希值是否一致,若是,则根据获得的所述存储地址,从客户端本地或云存储端获取所述待查询日志。
[0113] 为了实现上述目的,本发明还提供一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现前述任一方法的步骤。
[0114] 为了实现上述目的,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述任一方法的步骤。
[0115] 通过采用上述技术方案,本发明具有如下有益效果:
[0116] 本发明通过引入区块链技术,将日志摘要、日志哈希值和日志存储地址存储于区块链服务端,由于区块链自身的难篡改优点,可以提高日志摘要、日志哈希值和日志存储地址的安全性,还可根据区块链的可追溯进行溯源,得到日志使用记录。由于区块链不能存储过大数据,所以将待存储日志本身存储于客户端本地或云存储端,后续根据日志存储地址查询到待查询日志后,可以通过比对从客户端本地或云存储端查询到的日志的哈希运算结果与从区块链查询到的日志哈希值是否匹配来判断日志是否被篡改,保障数据安全。此外,本发明通过独特的加密解密机制,极大地提高了日志的保密性、完整性和可用性。

附图说明

[0117] 图1为本发明实施例一提供的基于区块链的日志存储方法的流程图;
[0118] 图2为本发明实施例二提供的基于区块链的日志存储方法的流程图;
[0119] 图3为本发明实施例一提供的基于区块链的日志存储方法的流程图;
[0120] 图4为本发明实施例二提供的基于区块链的日志存储方法的流程图;
[0121] 图5为本发明实施例三提供的基于区块链的日志读取方法的流程图;
[0122] 图6为本发明实施例四提供的基于区块链的日志读取方法的流程图;
[0123] 图7为本发明实施例五提供的基于区块链的日志存储装置的流程图;
[0124] 图8为本发明实施例六提供的基于区块链的日志存储装置的流程图;
[0125] 图9为本发明实施例七提供的基于区块链的日志读取装置的流程图;
[0126] 图10为本发明实施例八提供的基于区块链的日志读取装置的流程图;
[0127] 图11为本发明计算机设备的硬件架构图。

具体实施方式

[0128] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0129] 在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0130] 应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
[0131] 在本发明中,区块链服务端是指加入区块链的服务端,客户端是指需要存储日志的业务系统,区块链服务端可以通过网络、近场通信技术等适合的技术与客户端进行数据交互。
[0132] 实施例一
[0133] 本实施例一种基于区块链的日志存储方法,适于区块链服务端,如图1所示,该方法包括以下步骤:
[0134] S11,接收客户端上传的日志存储请求,该日志存储请求中携带待存储日志;
[0135] S12,获取所述待存储日志的日志摘要以及日志哈希值;
[0136] S13,根据所述待存储日志、日志摘要和日志哈希值生成安全校验信息;
[0137] S14,将所述安全校验信息返回给所述客户端,以便所述客户端根据所述安全校验信息验证所述待存储日志是否被篡改,并在验证所述待存储日志未被篡改时返回确认存储通知;
[0138] S15,接收到所述客户端返回的确认存储通知后,将所述待存储日志存储于所述客户端或云存储端;
[0139] S16,对所述日志摘要、日志哈希值和所述待存储日志的存储地址所拼接而成的数据进行数字签名,得到第二签名结果;
[0140] S17,将所述日志摘要、日志哈希值和第二签名结果存储于区块链服务端本地。
[0141] 如前所述,区块链服务端是指加入区块链的服务端,而区块链技术是公知的一种基于去中心化的对等(peer-to-peer)网络,其将密码学原理与共识机制相结合,来保障分布式各节点的数据连贯和持续,实现信息的即时验证、可追溯、难篡改和无法屏蔽,从而创造了一套隐私、高效、安全的共享价值体系。本发明通过引入区块链技术,将日志本身存储于客户端本地或云存储端,将日志存储地址、日志摘要、日志哈希值存储于区块链,由于区块链自身的难篡改优点,可以提高从区块链中获取信息的正确性。后续根据日志存储地址查询到日志后,可以通过比对从客户端本地或云存储端查询到的日志的哈希运算结果与从区块链查询到的日志哈希值是否匹配来判断日志是否被篡改,从而保障日志的安全性。
[0142] 实施例二
[0143] 本实施例是实施例一提供的基于区块链的日志存储方法的一个优选方案,如图2所示,该方法包括如下步骤:
[0144] S11,区块链服务端接收客户端上传的日志存储请求,该日志存储请求中携带待存储日志。
[0145] S12,区块链服务端对待存储日志中的敏感数据进行脱敏处理,而后获取脱敏后的待存储日志(可以记为D-data)的日志摘要(可以记为Digest(D-data))以及日志哈希值(可以记为Hash(D-data))。
[0146] 由于待存储日志中可能存在个人手机号、银行卡号、身份证号、邮箱等敏感数据,对数据安全而言有很大风险,因而需要对这些敏感数据进行脱敏。脱敏时,首先根据预设的正则表达式匹配规则,匹配待存储日志中的敏感数据。正则表达式是对字符串操作的一种逻辑公式,即用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。例如,用户名正则表达式“/^[a-zA-Z0-9_]{3,16}$/”、手机机号正则表达式“(\\+)?(0|00|86|0086)?1[345789]\\d{9}”。通过正则式匹配得到敏感数据后,根据预设的脱敏规则,对匹配到的敏感数据进行脱敏,例如将敏感数据中的部分或全部字符通过“*”或其它形式进行替换或隐藏,如敏感数据为手机号“13845671234”,则可将其脱敏为“138****1234”。
[0147] 在本实施例中,通过提取待存储日志D-data中预设字段的字段名称组成日志摘要Digest(D-data);通过对待存储日志D-data进行哈希运算得到日志哈希值Hash(D-data)。其中,哈希运算优选采用sha512算法,即Hash(D-data)=sha512(D-data)。
[0148] S13,区块链服务端根据脱敏后的所述待存储日志、日志摘要和日志哈希值生成安全校验信息,具体步骤如下:
[0149] S131,区块链服务端根据其自身预先生成的服务端私钥对脱敏后的待存储日志D-data、日志摘要Digest(D-data)和日志哈希值Hash(D-data)拼接而成的数据进行数字签名,得到第一签名结果(可以记为Sign1)。其中,此处的私钥为区块链服务端根据非对称加密算法(如RSA)生成的一对公私钥对中的私钥,对应的公钥被区块链服务端预先广发。向该区块链服务端发送数据的设备可以使用区块链服务端预先广发的公钥对要发送的数据进行加密,而区块链服务端可以利用自身生成的私钥进行解密。此外,区块链服务端也可以利用其自身生成的私钥对发送的数据进行加密(私钥加密的过程称为数字签名),由接收到该数据的设备使用区块链服务端预先广发的公钥对接收的数据进行解密(公钥解密的过程称为验证)。
[0150] S132,区块链服务端采用对称密钥K对脱敏后的待存储日志D-data、日志摘要Digest(D-data)、日志哈希值Hash(D-data)和第一签名结果Sign1拼接而成的数据进行加密,得到第一加密结果(可以记为SecretData)。
[0151] S133,区块链服务端采用客户端预先广发的客户端公钥对对称密钥K拼接而成的数据进行加密,得到第二加密结果SecretK。其中,此处的公钥为客户端根据非对称加密算法(如RSA)生成的一对公私钥对中的公钥,被客户端预先广发。向该客户端发送数据的设备可以使用客户端广发的公钥对要发送的数据拼接而成的数据进行加密,而客户端可以利用自身生成的私钥进行解密。
[0152] S133,确定所述第一加密结果SecretData和第二加密结果果SecretK作为所述安全校验信息。
[0153] S14,将所述安全校验信息,即第一加密结果SecretData和第二加密结果SecretK,返回给所客户端,以便所述客户端根据所述安全校验信息验证所述待存储日志是否被篡改,并在验证所述待存储日志未被篡改时返回确认存储通知。其中,客户端根据所述安全校验信息验证所述待存储日志是否被篡改的过程如下:采用预设的与客户端公钥对应客户端私钥对第二加密结果SecretK进行解密,得到对称密钥K,而后采用对称密钥K对第一加密结果SecretData进行解密,得到待存储日志D-data、日志摘要Digest(D-data)、日志哈希值Hash(D-data)和第一签名结果Sign1,并采用预先接收到的与服务端私钥对应的服务端公钥对第一签名结果Sign1进行验证,再次得到待存储日志D-data、日志摘要Digest(D-data)和日志哈希值Hash(D-data),而后判断解密和验证得到的待存储日志D-data、日志摘要Digest(D-data)和日志哈希值Hash(D-data)是否一致,若是,对待存储日志进行哈希运算(采用与步骤S12一致的哈希算法),并判断哈希运算的结果与解密和验证得到的日志哈希值Hash(D-data)是否一致,若是,则判定待存储日志未被篡改,返回确认存储通知,否则,判定待存储日志已被篡改,输出报警信息,流程结束。
[0154] S15,区块链服务端接收到客户端返回的确认存储通知后,对待存储日志D-data进行存储(可存储于客户端或上传到云存储端)并获得待存储日志D-data的存储地址(可以记为URL)。
[0155] S16,区块链服务端采用服务端私钥对日志摘要Digest(D-data)、日志哈希值Hash(D-data)和待存储日志的存储地址URL拼接而成的数据进行数字签名,得到第二签名结果(可以记为Sign2)。
[0156] S17,区块链服务端将日志摘要Digest(D-data)、日志哈希值Hash(D-data)和第二签名结果Sign2存储于区块链服务端本地。
[0157] 实施例三
[0158] 本实施例提供一种基于区块链的日志存储方法,适于客户端,如图3所示,该方法包括以下步骤:
[0159] S21,向区块链服务端发送日志存储请求,该日志存储请求中携带待存储日志,以便所述区块链服务端根据所述日志存储请求获取所述待存储日志的日志摘要以及日志哈希值,而后根据所述待存储日志、日志摘要和日志哈希值生成安全校验信息并返回;
[0160] S22,根据所述区块链服务端返回的所述安全校验信息验证所述待存储日志是否被篡改,并在验证所述待存储日志未被篡改时向所述区块链服务端返回确认存储通知,以便所述区块链服务端在接收到所述确认存储通知后,将所述待存储日志存储于客户端本地或云存储端,并对所述日志摘要、日志哈希值和所述待存储日志的存储地址所拼接而成的数据进行数字签名,得到第二签名结果,而后将所述日志摘要、日志哈希值和第二签名结果存储于所述区块链服务端。
[0161] 实施例四
[0162] 本实施例是实施例三提供的基于区块链的日志存储方法的一个优选方案,如图4所示,该方法包括如下步骤:
[0163] S21,客户端向区块链服务端发送日志存储请求,该日志存储请求中携带待存储日志,以便区块链服务端在接收到日志存储请求后,对待存储日志进行胶敏处理,而后获取脱敏后的待存储日志D-data的日志摘要Digest(D-data)以及日志哈希值Hash(D-data),并根据脱敏后的待存储日志、日志摘要和日志哈希值生成安全校验信息并返回。可见,本实施例与实施例相比,增加了脱敏处理,保障了敏感数据的安全性。
[0164] 在本实施例中,区块链服务端据脱敏后的所述待存储日志、日志摘要和日志哈希值生成安全校验信息的步骤包括:首先,根据预先生成的服务端私钥对脱敏后的待存储日志D-data、日志摘要Digest(D-data)和日志哈希值Hash(D-data)拼接而成的数据进行数字签名,得到第一签名结果Sign1,而后采用预设的对称密钥对脱敏后的待存储日志D-data、日志摘要Digest(D-data)、日志哈希值Hash(D-data)和第一签名结果Sign1拼接而成的数据进行加密,得到第一加密结果SecretData,并采用预先接收到的客户端公钥对对称密钥进行加密,得到第二加密结果SecretK,而后返回第一加密结果SecretData和第二加密结果SecretK。
[0165] S22,客户端根据所述区块链服务端返回的所述安全校验信息验证所述待存储日志是否被篡改,并在验证所述待存储日志未被篡改时向所述区块链服务端返回确认存储通知,以便所述区块链服务端在接收到所述确认存储通知后,将所述待存储日志存储于客户端本地或云存储端,并对所述日志摘要、日志哈希值和所述待存储日志的存储地址所拼接而成的数据进行数字签名,得到第二签名结果,而后将所述日志摘要、日志哈希值和第二签名结果存储于所述区块链服务端。
[0166] 在实施例中,客户端根据所述区块链服务端返回的所述安全校验信息验证所述待存储日志是否被篡改的步骤如下:
[0167] S221,客户端采用预设的与客户端公钥对应客户端私钥对第二加密结果SecretK进行解密,得到对称密钥。
[0168] S222,客户端采用对称密钥对第一加密结果SecretData进行解密,得到待存储日志D-data、日志摘要Digest(D-data)、日志哈希值Hash(D-data)和第一签名结果Sign1。
[0169] S223,客户端采用预先接收到的与服务端私钥对应的服务端公钥对第一签名结果Sign1进行验证,再次得到待存储日志D-data、日志摘要Digest(D-data)和日志哈希值Hash(D-data)。
[0170] S224,客户端判断解密和验证得到的待存储日志D-data、日志摘要Digest(D-data)和日志哈希值Hash(D-data)是否一致,若是,对待存储日志D-data进行哈希运算。
[0171] S2225,客户端判断哈希运算的结果与日志哈希值Hash(D-data)是否一致,若是,判定待存储日志未被篡改,向区块链服务端发送确认存储通知,否则,判定待存储日志已被篡改,发送报警信息。
[0172] 实施例五
[0173] 本实施例提供一种基于区块链的日志读取方法,适于区块链服务端,用于读取基于实施例一和二的日志存储方法存储的日志,如图5所示,包括以下步骤:
[0174] S31,区块链服务端接收客户端发送的日志查询请求,该日志查询请求携带待查询日志中的预设标识字段。该查询请求携带待查询日志中的预设标识字段,如操作时间、系统名和操作类别等。
[0175] S32,区块链服务端从区块链服务端本地获取与预设标识字段对应的日志摘要Digest(D-data)、日志哈希值Hash(D-data)和第二签名结果Sign2并返回给客户端,以便客户端采用服务端公钥对第二签名结果Sign2进行验证,得到第二签名结果Sign2中的日志摘要Digest(D-data)、日志哈希值Hash(D-data)和存储地址URL,而后判断从区块链服务端本地获取的日志摘要Digest(D-data)和日志哈希值Hash(D-data)与第二签名结果Sign2中的日志摘要Digest(D-data)和日志哈希值Hash(D-data)是否一致,若是,说明数据无误,则根据获得的存储地址URL,从客户端或云存储端获取待查询日志,否则,说明数据有误,流程结束,查询失败。
[0176] 优选地,当客户端获取到待查询日志后,还可以对待查询日志进行哈希运算,并判断此处得到的哈希运算结果与第二签名结果Sign2中的日志哈希值Hash(D-data)是否一致,并输出判断结果,若判断结果一致,则可确定待查询日志未被篡改,否则,可确定待查询日志已被篡改。
[0177] 实施例六
[0178] 本实施例提供一种基于区块链的日志读取方法,适于客户端,用于读取基于实施例三和四的日志存储方法存储的日志,如图6所示,读取方法包括以下步骤:
[0179] S41,客户端向区块链服务端发送日志查询请求,该日志查询请求携带待查询日志中的预设标识字段,以便区块链服务端从区块链服务端本地获取与预设标识字段对应的日志摘要Digest(D-data)、日志哈希值Hash(D-data)和第二签名结果Sign2并返回。
[0180] S42,客户端采用服务端公钥对第二签名结果进行验证,得到第二签名结果Sign2中的日志摘要Digest(D-data)、日志哈希值Hash(D-data)和存储地址。
[0181] S43,客户端判断从区块链服务端本地获取的日志摘要Digest(D-data)和日志哈希值Hash(D-data)与第二签名结果Sign2中的日志摘要Digest(D-data)和日志哈希值Hash(D-data)是否一致,若是,根据获得的存储地址,从所述客户端或云存储端获取待查询日志。
[0182] 优选地,当客户端获取到待查询日志后,可以对待查询日志进行哈希运算,并判断此处得到的哈希运算结果与第二签名结果Sign2中的日志哈希值Hash(D-data)是否一致,并输出判断结果,若判断结果一致,则可以确定待查询日志未被篡改,否则,可以确定待查询日志已被篡改。
[0183] 需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明所必须的。
[0184] 实施例七
[0185] 本实施例提供一种基于区块链的日志存储装置10,如图7所示,该装置10包括:
[0186] 存储请求接收模块11,用于接收客户端上传的日志存储请求,该日志存储请求中携带待存储日志;
[0187] 日志摘要获取模块12,用于获取所述待存储日志的日志摘要;
[0188] 日志哈希值获取模块13,用于获取所述待存储日志的日志哈希值;
[0189] 校验信息生成模块14,用于根据所述待存储日志、日志摘要和日志哈希值生成安全校验信息;
[0190] 校验信息返回模块15,用于将所述安全校验信息返回给所述客户端,以便所述客户端根据所述安全校验信息验证所述待存储日志是否被篡改,并在验证所述待存储日志未被篡改时返回确认存储通知;
[0191] 日志存储模块16,用于接收到所述客户端返回的确认存储通知后,将所述待存储日志存储于所述客户端或云存储端;
[0192] 日志索引签名模块17,用于对所述日志摘要、日志哈希值和所述待存储日志的存储地址所拼接而成的数据进行数字签名,得到第二签名结果;
[0193] 日志索引存储模块18,用于将所述日志摘要、日志哈希值和第二签名结果存储于区块链服务端本地。
[0194] 进一步地,所述校验信息生成模块根据所述待存储日志、日志摘要和日志哈希值生成安全校验信息的步骤包括:
[0195] 根据预先生成的服务端私钥对所述待存储日志、日志摘要和日志哈希值拼接而成的数据进行数字签名,得到第一签名结果;
[0196] 采用预设的对称密钥对所述待存储日志、日志摘要、日志哈希值和第一签名结果拼接而成的数据进行加密,得到第一加密结果;
[0197] 采用所述客户端预先广发的客户端公钥对所述对称密钥进行加密,得到第二加密结果;
[0198] 确定所述第一加密结果和第二加密结果作为所述安全校验信息。
[0199] 进一步地,所述客户端根据所述安全校验信息验证所述待存储日志是否被篡改并返回验证结果的步骤包括:
[0200] 采用预设的与所述客户端公钥对应客户端私钥对所述第二加密结果进行解密,得到所述对称密钥;
[0201] 采用所述对称密钥对所述第一加密结果进行解密,得到所述待存储日志、日志摘要、日志哈希值和第一签名结果;
[0202] 采用预先接收到的与所述服务端私钥对应的服务端公钥对所述第一签名结果进行验证,再次得到所述待存储日志、日志摘要和日志哈希值;
[0203] 判断对所述第一加密结果进行解密得到的所述待存储日志、日志摘要和日志哈希值与对所述第一签名结果进行验证得到的所述待存储日志、日志摘要和日志哈希值是否一致,若是,对所述待存储日志进行哈希运算,并判断所述哈希运算的结果与所述日志哈希值是否一致,若是,则判定所述待存储日志未被篡改,否则,判定所述待存储日志已被篡改。
[0204] 进一步地,该装置10还可以包括:脱敏模块,用于在获取所述待存储日志的日志摘要以及日志哈希值之前,对所述待存储日志中的敏感数据进行脱敏处理。
[0205] 进一步地,所述脱敏模块对所述待存储日志中的敏感数据进行脱敏处理的步骤包括:
[0206] 根据预设的正则表达式匹配规则,匹配所述待存储日志中的敏感数据;
[0207] 根据预设的脱敏规则,对匹配到的所述敏感数据进行脱敏。
[0208] 进一步地,所述获取所述待存储日志的日志摘要以及日志哈希值的步骤包括:
[0209] 所述日志摘要获取模块具体用于提取所述待存储日志中预设字段的字段名称组成所述日志摘要;
[0210] 所述日志哈希值获取模块具体用于对所述待存储日志进行哈希运算得到所述日志哈希值。
[0211] 实施例八
[0212] 本实施例提供一种基于区块链的日志存储装置20,如图8所示,该装置20包括:
[0213] 存储请求发送模块21,用于向区块链服务端发送日志存储请求,该日志存储请求中携带待存储日志,以便所述区块链服务端根据所述日志存储请求获取所述待存储日志的日志摘要以及日志哈希值,而后根据所述待存储日志、日志摘要和日志哈希值生成安全校验信息并返回;
[0214] 校验模块22,用于根据所述区块链服务端返回的所述安全校验信息验证所述待存储日志是否被篡改,并在验证所述待存储日志未被篡改时向所述区块链服务端返回确认存储通知,以便所述区块链服务端在接收到所述确认存储通知后,将所述待存储日志存储于客户端本地或云存储端,并对所述日志摘要、日志哈希值和所述待存储日志的存储地址所拼接而成的数据进行数字签名,得到第二签名结果,而后将所述日志摘要、日志哈希值和第二签名结果存储于所述区块链服务端。
[0215] 进一步地,所述区块链服务端根据所述待存储日志、日志摘要和日志哈希值生成所述安全校验信息的步骤包括:
[0216] 根据预先生成的服务端私钥对所述待存储日志、日志摘要和日志哈希值拼接而成的数据进行数字签名,得到第一签名结果;
[0217] 采用预设的对称密钥对所述待存储日志、日志摘要、日志哈希值和第一签名结果拼接而成的数据进行加密,得到第一加密结果;
[0218] 采用预先接收到的客户端公钥对所述对称密钥进行加密,得到第二加密结果,而后返回所述第一加密结果和第二加密结果;
[0219] 采用预设的与所述客户端公钥对应客户端私钥对所述第二加密结果进行解密,得到所述对称密钥;
[0220] 确定所述第一加密结果和第二加密结果作为所述安全校验信息。
[0221] 进一步地,所述校验模块根据所述区块链服务端返回的所述安全校验信息验证所述待存储日志是否被篡改的步骤包括:
[0222] 采用预设的与所述客户端公钥对应客户端私钥对所述第二加密结果进行解密,得到所述对称密钥;
[0223] 采用所述对称密钥对所述第一加密结果进行解密,得到所述待存储日志、日志摘要、日志哈希值和第一签名结果;
[0224] 采用预先接收到的与所述服务端私钥对应的服务端公钥对所述第一签名结果进行验证,再次得到所述待存储日志、日志摘要和日志哈希值;
[0225] 判断对所述第一加密结果进行解密得到的所述待存储日志、日志摘要和日志哈希值与对所述第一签名结果进行验证得到的所述待存储日志、日志摘要和日志哈希值是否一致,若是,对所述待存储日志进行哈希运算,并判断所述哈希运算的结果与所述日志哈希值是否一致,若是,则判定所述待存储日志未被篡改,否则,判定所述待存储日志已被篡改。
[0226] 进一步地,所述区块链服务端在获取所述待存储日志的日志摘要以及日志哈希值之前,对所述待存储日志中的敏感数据进行脱敏处理。
[0227] 进一步地,所述区块链服务端对所述待存储日志中的敏感数据进行脱敏处理的步骤包括:
[0228] 根据预设的正则表达式匹配规则,匹配所述待存储日志中的敏感数据;
[0229] 根据预设的脱敏规则,对匹配到的所述敏感数据进行脱敏。
[0230] 进一步地,所述区块链服务端获取所述待存储日志的日志摘要以及日志哈希值的步骤包括:
[0231] 提取所述待存储日志中预设字段的字段名称组成所述日志摘要;
[0232] 对所述待存储日志进行哈希运算得到所述日志哈希值。
[0233] 实施例九
[0234] 本实施例提供一种基于区块链的日志读取装置30,用于读取基于前述实施例七的存储装置10存储的日志,所述装置30包括:
[0235] 查询请求接收模块31,用于接收所述客户端发送的日志查询请求,该日志查询请求携带待查询日志中的预设标识字段;
[0236] 日志索引查询模块32,用于从区块链服务端本地获取与所述预设标识字段对应的日志摘要、日志哈希值和第二签名结果并返回给所述客户端,以便所述客户端对所述第二签名结果进行验证,得到所述第二签名结果中的日志摘要、日志哈希值和存储地址,而后判断从区块链服务端本地获取的所述日志摘要和日志哈希值与所述第二签名结果中的日志摘要和日志哈希值是否一致,若是,则根据获得的所述存储地址,从所述客户端或云存储端获取所述待查询日志。
[0237] 实施例十
[0238] 本实施列提供一种基于区块链的日志读取装置40,用于读取基于前述实施例八的存储装置存储的日志,所述装置40包括:
[0239] 查询请求发送模块41,用于向所述区块链服务端发送日志查询请求,该日志查询请求携带待查询日志中的预设标识字段,以便所述区块链服务端从区块链服务端本地获取与所述预设标识字段对应的日志摘要、日志哈希值和第二签名结果并返回;
[0240] 验证模块42,用于采用所述服务端公钥对返回的所述第二签名结果进行验证,得到所述第二签名结果中的日志摘要、日志哈希值和存储地址;
[0241] 日志查询模块43,用于判断从所述区块链服务端本地获取的所述日志摘要和日志哈希值与所述第二签名结果中的日志摘要和日志哈希值是否一致,若是,则根据获得的所述存储地址,从客户端本地或云存储端获取所述待查询日志。
[0242] 实施例十一
[0243] 本发明还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。本实施例的计算机设备50至少包括但不限于:可通过系统总线相互通信连接的存储器51、处理器52,如图11所示。需要指出的是,图11仅示出了具有组件51-52的计算机设备50,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
[0244] 本实施例中,存储器51(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器51可以是计算机设备50的内部存储单元,例如该计算机设备50的硬盘或内存。在另一些实施例中,存储器51也可以是计算机设备50的外部存储设备,例如该计算机设备50上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器51还可以既包括计算机设备50的内部存储单元也包括其外部存储设备。本实施例中,存储器51通常用于存储安装于计算机设备50的操作系统和各类应用软件,例如实施例七~十所述的装置10~40中任一装置的程序代码等。此外,存储器51还可以用于暂时地存储已经输出或者将要输出的各类数据。
[0245] 处理器52在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器52通常用于控制计算机设备50的总体操作。本实施例中,处理器52用于运行存储器51中存储的程序代码或者处理数据,例如运行装置10~40中任一个,以实现实施例一~六的任一方法。
[0246] 实施例十二
[0247] 本发明还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储装置10~40中的任一装置,被处理器执行时实现实施例一~六的任一方法。
[0248] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
[0249] 以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。