一种数据轻量化篡改验证方法、系统、设备及存储介质与流程
本发明涉及数据安全存储,具体而言,涉及一种数据轻量化篡改验证方法、系统、设备及存储介质。
背景技术:
1、在嵌入式终端、工业控制器、智能硬件、物联网终端等设备中,设备配置参数、运行状态数据、业务控制参数等核心数据普遍采用kv(键-值)键值对格式存储于flash等非易失性存储介质中。该类数据的完整性、真实性直接决定设备运行的安全性、稳定性,若数据被恶意篡改、回滚替换或伪造,将导致设备功能异常、业务失效甚至安全事故,因此需要进行可靠的防篡改校验。
2、现有kv数据防篡改方案主要分为两类,第一类为链式哈希校验方案,包括线性hmac哈希链、merkle哈希树等架构。该类方案通过累积全部历史数据的哈希值迭代计算生成全局根哈希,依托链式绑定关系实现全局数据完整性校验。第二类为单条目独立hmac校验方案,仅根据单条kv数据的键值内容计算hmac校验值,单条数据独立完成校验。
3、但是,传统哈希链、merkle树链式校验方案需持续存储全部历史哈希数据,长期运行存在flash存储无限膨胀、数据更新及全局校验算力开销随数据量线性递增、嵌入式设备无法适配的问题;而传统单条目独立hmac校验方案无时序约束,存在旧数据回滚替换、哈希值复用伪造、非法数据插入等安全漏洞。
技术实现思路
1、有鉴于此,本发明的目的在于提供一种数据轻量化篡改验证方法、系统、设备及存储介质,以解决传统哈希链、merkle树链式校验方案长期运行存在flash存储无限膨胀、数据更新及全局校验算力开销随数据量线性递增、嵌入式设备无法适配;单条目独立hmac校验方案无时序约束,存在旧数据回滚替换、哈希值复用伪造、非法数据插入等安全漏洞的技术问题。
2、为了实现上述目的,第一方面,本发明实施例提供一种数据轻量化篡改验证方法,方法包括:获取预设安全存储区中已存储的键值对数据,所述键值对数据包括键、值、时序编号以及原始校验值;所述时序编号在所述键值对数据写入前单调递增得到,所述原始校验值在所述键值对数据写入前基于待写入的键、值、时序编号和设备预设密钥生成;基于获取的所述键、所述值、所述时序编号和所述设备预设密钥计算得到当前校验值;在所述当前校验值与所述原始校验值不一致的情况下,确定所述键值对数据被篡改。
3、在本实施例中,通过设备上电后获取预设安全存储区中已经存储的键值对数据以及初始校验值,而已存储的键值对数据包括键、值、时序编号,时序编号在键值对数据写入前单调递增得到,以确保各条键值对数据的时序编号在时间维度上严格有序、互不重复,进而便于根据已存储的键值对数据的键、值、时序编号以及设备预设密钥计算出当前校验值,以便于将当前校验值和原始校验值进行比对,在不一致的情况下确定预设安全存储区中已存储的键值对数据已被篡改。如此通过键值对数据的键、值、时序编号和设备预设密钥重算比对完成篡改验证,整个验证过程无需依赖任何历史哈希数据,无需迭代遍历或逐层回溯此前写入的全部键值对数据,仅凭当前单条键值对数据即可独立完成防篡改判定,使得存储开销和算力开销全程固定,并且校验值在生成时将时序编号与键、值强绑定,以避免旧数据回滚替换和校验值复用伪造的安全漏洞。
4、在一些实施例中,所述基于获取的所述键、所述值、所述时序编号和所述设备预设密钥计算得到当前校验值,包括:将所述键、所述值及所述时序编号进行拼接后得到连续的字节数据;根据所述设备预设密钥对所述连续的字节数据进行哈希计算,得到所述当前校验值。
5、如此设置,使得攻击者在不具有设备预设密钥的情况下,即便获取了已存储的键、值和时序编号,也无法独立计算出与原始校验值相匹配的当前校验值,从而加强键值对数据的防篡改强度。
6、在一些实施例中,所述方法包括:遍历预设安全存储区内所有键值对数据,所述所有键值对数据的时序编号依次递增;在所述所有键值对数据中,存在键值对数据的时序编号大于最大有效时序编号,或多个键值对数据具有相同时序编号的情况下,则确定时序编号大于最大有效时序编号的键值对数据或者具有相同时序编号的多个键值对数据非法;所述最大有效时序编号为所有所述键值对数据中最大的时序编号。
7、如此设置,在正常写入过程中每次写入均以当时最大的时序编号为基础递增,写入后的最大有效时序编号始终同步更新,以避免出现已存储的时序编号超过最大有效时序编号的情况,从而精准识别出非法新增的攻击。
8、在一些实施例中,所述键值对数据写入的步骤包括:根据获取的键值对数据写入指令确定出待写入的键和值;根据所述预设安全存储区中已存储的所有键值对数据中最大的时序编号,确定待写入的时序编号;基于所述待写入的键和值、所述待写入的时序编号以及设备预设密钥计算出原始校验值;将所述待写入的键和值、所述待写入的时序编号以及所述原始校验值作为所述键值对数据存入预设安全存储区。
9、如此设置,整个写入过程仅涉及当前待写入的单条键值对数据,不触发对历史键值对数据的遍历或重算,与预设安全存储区中此前已存储的键值对数据总量无关,有助于使得单次写入的算力开销与存储开销始终保持固定。
10、在一些实施例中,所述根据所述预设安全存储区中已存储的所有键值对数据中最大的时序编号,确定待写入的时序编号,包括:将所述预设安全存储区中已存储的所有键值对数据中最大的时序编号加1,得到待写入的时序编号。
11、如此设置,以最大时序编号加1作为待写入时序编号的确定规则,排除时序编号被递减、被重置回较小的时序编号、或被回收复用此前已经分配过的时序编号的可能,以提高基于时序编号判定键值对数据来源合法与否的可靠性。
12、在一些实施例中,所述方法包括:根据获取的键值对数据删除指令确定出待删除的目标键值对数据;将所述目标键值对数据对应的键、值以及原始校验值进行删除;将所述目标键值对数据的时序编号保留并打上失效标记。
13、如此设置,若攻击者试图在已被删除的键、值以及原始校验值位置上重新写入伪造的键值对数据,无论填入何种时序编号,均会因保留的失效标记而在时序编号校验环节被验证出异常,从而提高时序编号合法性验证的准确性。
14、在一些实施例中,所述方法包括:在所述当前校验值与所述原始校验值一致的情况下,确定所述键值对数据未被篡改。
15、如此设置,当前校验值与原始校验值一致意味着预设安全存储区中已存储的键值对数据的键、值和时序编号自写入以来均未被修改,数据内容与写入时序保持原始写入时的状态,可正常调用该键值对数据。
16、第二方面,本发明实施例提供一种数据轻量化篡改验证系统,所述系统包括:获取模块,用于获取预设安全存储区中已存储的键值对数据,所述键值对数据包括键、值、时序编号以及原始校验值;所述时序编号在所述键值对数据写入前单调递增得到,所述原始校验值在所述键值对数据写入前基于待写入的键、值、时序编号和设备预设密钥生成;处理模块,用于基于获取的所述键、所述值和所述时序编号和所述设备预设密钥计算得到当前校验值;验证模块,在所述当前校验值与所述原始校验值不一致的情况下,确定所述键值对数据被篡改。
17、第三方面,本发明实施例提供一种电子设备,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机程序,所述处理器可执行所述计算机程序以实现如第一方面所述的数据轻量化篡改验证方法。
18、第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的数据轻量化篡改验证方法。
19、为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com