CN116089967B - 数据防回滚方法和电子设备 - Google Patents

数据防回滚方法和电子设备 Download PDF

Info

Publication number
CN116089967B
CN116089967B CN202210513658.7A CN202210513658A CN116089967B CN 116089967 B CN116089967 B CN 116089967B CN 202210513658 A CN202210513658 A CN 202210513658A CN 116089967 B CN116089967 B CN 116089967B
Authority
CN
China
Prior art keywords
data
value
counter value
ciphertext
key
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
Application number
CN202210513658.7A
Other languages
English (en)
Other versions
CN116089967A (zh
Inventor
单志华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202210513658.7A priority Critical patent/CN116089967B/zh
Publication of CN116089967A publication Critical patent/CN116089967A/zh
Application granted granted Critical
Publication of CN116089967B publication Critical patent/CN116089967B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/32User authentication using biometric data, e.g. fingerprints, iris scans or voiceprints
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

本申请实施例提供了一种数据防回滚方法和电子设备,该方法中,获取待验证的第二数据;根据第一计数器值,解密密文,得到第一数据,第一计数器值为第一数据的计数器值,密文是基于第一计数器值加密第一数据得到的;根据第一数据,验证第二数据,得到验证结果,当验证结果为第二数据验证成功时,第二数据与第一数据相同,当验证结果为第二数据验证失败时,第一数据为第二数据更新后的数据,第一计数器值表征数据的更新次数;根据验证结果,执行相应的操作。本申请实施例可以根据第一数据的计数器值进行解密,因为更新前的数据的计数器值与第一数据的计数器值不同,因此使用更新前的数据进行验证时,无法验证通过,进而防止数据回滚。

Description

数据防回滚方法和电子设备
技术领域
本申请实施例涉及数据处理技术,尤其涉及一种数据防回滚方法和电子设备。
背景技术
数据回滚(rollback)指的是数据错误,将数据恢复到上一次的行为,而防回滚(rollback protection)指的是防止数据恢复到上一次的保护技术。目前一些设备,如个人计算机(personal computer,PC)缺乏防回滚机制,PC中的数据在删除后,PC可以通过备份或其他方式恢复该数据,进而造成数据安全的问题。
目前亟需一种防止数据回滚的方法。
发明内容
本申请实施例提供一种数据防回滚方法和电子设备,可以防止数据回滚。
第一方面,本申请实施例提供一种数据防回滚方法,该方法应用于终端中。其中,该方法中,终端获取待验证的第二数据,在验证第二数据时,可以根据第二数据对应的计数器记录的最大的计数器值,即第一数据的计数器值(第一计数器值),来解密密文,得到第一数据。其中,所述密文是基于所述第一计数器值加密所述第一数据得到的。也就是说,本申请实施例中在解密时,可以使用第二数据对应的最大的计数器值解密对应的密文,进而得到明文(第一数据)。其中,所述第一计数器值表征数据的更新次数,也可以说,第一计数器值表征第一数据所属数据类型的更新次数,即第一数据对应的计数器的记录的计数器值的更新次数。应理解,第一数据和第二数据对应的计数器相同。
终端根据所述第一数据,验证所述第二数据,得到验证结果。其中,当所述验证结果为所述第二数据验证成功时,表征所述第二数据与所述第一数据相同,当所述验证结果为所述第二数据验证失败时,表征所述第一数据为所述第二数据更新后的数据,即第二数据为更新前的数据。
终端可以根据所述验证结果,执行相应的操作。其中,当所述验证结果为所述第二数据验证失败时,终端可以不响应于第二数据,即不执行响应于第一操作的动作。本申请实施例中,更新前的数据(第二数据,即发生回滚的数据)无法触发终端执行相应的操作,即终端不响应发生回滚的数据,进而可以避免数据回滚带来的数据安全问题。
在一种可能的实现方式中,所述获取待验证的第二数据之前,还包括:响应于存在待存储的所述第一数据,获取所述第一计数器值;根据所述第一计数器值,加密所述第一数据,得到所述密文;存储所述密文。
在该实现方式,在加密第一数据时,可以使用第一计数器值加密第一数据,一方面可以保证第一数据的数据安全,另外可以为防止数据回滚提供基础。
在一种可能的实现方式中,所述获取所述第一计数器值,包括:检测所述第一数据对应的计数器记录的最大的计数器值;根据所述最大的计数器值,得到所述第一计数器值。在一种实施例中,终端可以将最大的计数器值加上预设值,得到第一计数器值。在一种实施例中,该预设值可以为1。
在该实现方式中,数据更新后,可以对计数器值进行增加,即一个计数器记录的计数器值时递增的,因此在对数据进行加解密的过程中,可以避免存在数据的计数器值相同以验证通过的情况,可以保证更新前后的数据的计数器值不同,因此在进行数据解密时,只能采用最新的数据解密成功,可以防止数据回滚。
在一种可能的实现方式中,所述根据所述第一计数器值,加密所述第一数据,得到所述密文,包括:生成第一盐值;根据所述第一盐值、根密钥,以及所述第一计数器值,生成第一密钥;采用所述第一密钥,加密所述第一数据,得到所述密文。
在该实现方式中,基于第一盐值(即一随机值),以及根密钥,对第一数据进行加密,可以提高数据的安全性。其中,还基于第一计数器值对第一数据进行加密,可以为解密时防止数据回滚提供基础。
在一种可能的实现方式中,所述方法还包括:存储所述第一盐值、所述第一计数器值,以及所述密文。其中,所述根据第一计数器值,解密密文,得到第一数据,包括:根据所述根密钥、所述第一盐值、以及所述第一计数器值,生成所述第一密钥;采用所述第一密钥,解密所述密文,得到所述第一数据。
在一种可能的实现方式中,所述得到所述密文之后,还包括:生成第二盐值;
根据所述第二盐值和所述第一密钥,生成第二密钥;采用所述第二密钥,加密所述密文,得到第一消息认证码MAC值。
在该实现方式中,在得到密文后,还可以对密文进行加密,可以保证密文的安全性以及完整性。
在一种可能的实现方式中,所述采用所述第二密钥,加密所述密文,得到消息认证码MAC值,包括:采用所述第二密钥,以及所述第一数据的描述信息,加密所述密文,得到第一MAC值,所述描述信息包括如下至少一项:所述第一计数器值、所述第一盐值,以及所述第二盐值。
在一种可能的实现方式中,所述得到第一MAC值之后,还包括:存储所述第二盐值以及所述第一MAC值。所述采用所述第一密钥,解密所述密文,得到所述第一数据之前,还包括:根据所述第二盐值和所述第一密钥,生成所述第二密钥;采用所述第二密钥,以及所述第一数据的描述信息,加密所述密文,得到第二MAC值。
所述采用所述第一密钥,解密所述密文,得到所述第一数据,包括:响应于所述第二MAC值和所述第一MAC值相同,根据第一数据的描述信息,确定待解密的所述第一数据;采用所述第一密钥,解密所述密文,得到所述第一数据。
应理解的是,每个数据的描述信息不同,用于指示该数据。因此在终端确定所述第二MAC值和所述第一MAC值相同,需要解密密文时,可以根据第一数据的描述信息,确定待解密的所述第一数据。
在该实现方式中,对密文进行解密的过程中,可以先验证MAC值,在MAC值验证通过的情况下,可以解密密文,即相当于密文进行了二次保护,可以提高密文的安全性。
在一种可能的实现方式中,所述第一数据为如下任一项:终端的解锁密码、支付密码、所述终端中应用的密码、所述终端中应用的安装包、所述终端的数据设置,或者所述终端的参数设置。
在一种可能的实现方式中,当所述第一数据为所述终端的解锁密码时,所述根据所述验证结果,执行相应的操作,包括:当所述验证结果为所述第二数据验证成功时,解锁所述终端;当所述验证结果为所述第二数据验证失败时,输出提示信息,所述提示信息指示解锁所述终端失败。
应注意的是,数据不同,则终端基于验证结果,执行的操作可以不同。对于相同的数据,终端基于不同的验证结果,执行的操作可以不同。
第二方面,本申请实施例提供一种数据防回滚装置,该装置可以为如上第一方面的终端,或者终端中的芯片。该数据防回滚装置可以包括:密钥管理服务模块、可信平台模块TPM以及应用。
所述密钥管理服务模块,用于获取待验证的第二数据。
所述TPM,用于:
根据第一计数器值,解密密文,得到第一数据,以及,根据所述第一数据,验证所述第二数据,得到验证结果。其中,所述第一计数器值为所述第一数据的计数器值,所述密文是基于所述第一计数器值加密所述第一数据得到的;当所述验证结果为所述第二数据验证成功时,所述第二数据与所述第一数据相同,当所述验证结果为所述第二数据验证失败时,所述第一数据为所述第二数据更新后的数据,所述第一计数器值表征数据的更新次数。
所述应用,用于根据所述验证结果,执行相应的操作。
在一种可能的实现方式中,所述密钥管理服务模块,用于响应于存在待存储的所述第一数据,获取所述第一计数器值。
所述TPM,用于根据所述第一计数器值,加密所述第一数据,得到所述密文。
所述密钥管理服务模块,还用于存储所述密文。在一种实施例中,所述密钥管理服务模块可以将密文存储至BIOS NV中。
在一种可能的实现方式中,所述密钥管理服务模块,具体用于检测所述第一数据对应的计数器记录的最大的计数器值;根据所述最大的计数器值,得到所述第一计数器值。其中,密钥管理服务模块可以在BIOS NV中读取第一数据对应的计数器记录的最大的计数器值。
在一种可能的实现方式中,所述密钥管理服务模块,具体用于生成第一盐值。
所述TPM,用于根据所述第一盐值、根密钥,以及所述第一计数器值,生成第一密钥,以及采用所述第一密钥,加密所述第一数据,得到所述密文。
在一种可能的实现方式中,所述密钥管理服务模块,还用于存储所述第一盐值、所述第一计数器值,以及所述密文。示例性的,所述密钥管理服务模块可以将所述第一盐值、所述第一计数器值,以及所述密文存储至BIOS NV中。
相应的,解密过程中,所述TPM,用于根据所述根密钥、所述第一盐值、以及所述第一计数器值,生成所述第一密钥;采用所述第一密钥,解密所述密文,得到所述第一数据。
在一种可能的实现方式中,所述密钥管理服务模块,还用于生成第二盐值。
所述TPM,用于根据所述第二盐值和所述第一密钥,生成第二密钥,以及采用所述第二密钥,加密所述密文,得到第一消息认证码MAC值。
在一种可能的实现方式中,所述TPM,具体用于采用所述第二密钥,以及所述第一数据的描述信息,加密所述密文,得到第一MAC值,所述描述信息包括如下至少一项:所述第一计数器值、所述第一盐值,以及所述第二盐值。
在一种可能的实现方式中,所述密钥管理服务模块,还用于存储所述第二盐值以及所述第一MAC值。示例性的,所述密钥管理服务模块可以将第一MAC值存储至BIOS NV中。
相应的,解密过程中,所述TPM,用于根据所述第二盐值和所述第一密钥,生成所述第二密钥,以及采用所述第二密钥,且所述第一数据的描述信息,加密所述密文,得到第二MAC值,以及响应于所述第二MAC值和所述第一MAC值相同,根据第一数据的描述信息,确定待解密的所述第一数据,进而采用所述第一密钥,解密所述密文,得到所述第一数据。
在一种可能的实现方式中,所述第一数据为如下任一项:终端的解锁密码、支付密码、所述终端中应用的密码、所述终端中应用的安装包、所述终端的数据设置,或者所述终端的参数设置。
在一种可能的实现方式中,当所述第一数据为所述终端的解锁密码,且所述验证结果为所述第二数据验证成功时,应用用于解锁所述终端。当所述第一数据为所述终端的解锁密码,且当所述验证结果为所述第二数据验证失败时,应用用于输出提示信息,所述提示信息指示解锁所述终端失败。
第三方面,本申请实施例提供一种电子设备,该电子设备可以包括:处理器、存储器。存储器用于存储计算机可执行程序代码,程序代码包括指令;当处理器执行指令时,指令使所述电子设备执行如第一方面中的方法。
第四方面,本申请实施例提供一种电子设备,该电子设备可以为第二方面的应用程序后台保活的装置或第一方面所述的终端设备。该电子设备可以包括用于执行以上第一方面所提供的方法的单元、模块或电路。
第五方面,本申请实施例提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面中的方法。
第六方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面中的方法。
上述第二方面至第六方面的各可能的实现方式,其有益效果可以参见上述第一方面所带来的有益效果,在此不加赘述。
附图说明
图1为现有技术中数据回滚的一种示例;
图2为现有技术中UEFI BIOS的运行过程示意图;
图3为本申请实施例提供的UEFI BIOS的一种运行过程示意图;
图4为本申请实施例提供的终端的一种结构示意图;
图5A为本申请实施例提供的终端的另一种结构示意图;
图5B为本申请实施例提供的终端的另一种结构示意图;
图6为本申请实施例提供的数据防回滚方法的一种实施例的流程示意图;
图7A为本申请实施例提供的BIOS NV中存储的数据的一种示意图;
图7B为本申请实施例提供的BIOS NV中存储的数据的另一种示意图;
图8为本申请实施例提供的对数据加密的一种示意图;
图9为本申请实施例提供的TPM保护数据的一种示意图;
图10为本申请实施例提供的数据防回滚方法的另一种实施例的流程示意图;
图11为本申请实施例提供的BIOS NV中存储的数据的另一种示意图;
图12为本申请实施例提供的数据防回滚方法的另一种实施例的流程示意图;
图13为本申请实施例提供的电子设备的一种结构示意图。
具体实施方式
目前的个人计算机(personal computer,PC)缺乏防回滚机制,PC中的数据在删除后,PC可以通过备份或其他方式恢复该数据,或者恶意用户恢复该数据,会造成数据安全的问题。示例性的,以数据为PC的解锁密码为例,解锁密码可以为用户的生物特征,生物特征如用户的指纹、人脸、虹膜等,本申请实施例对生物特征不做限制,下述以PC的解锁密码为人脸为例进行说明。如图1所示,用户1将PC的解锁密码设置为自己的人脸,PC可以存储PC的解锁密码“用户1的人脸”。相应的,用户1可以使用自己的人脸解锁PC。后来,如用户1将PC售卖给用户2,用户2可以将PC的解锁密码设置为自己的人脸,PC可以删除已存储的PC的解锁密码“用户1的人脸”,且存储PC的新的解锁密码“用户2的人脸”。相应的,用户2可以使用自己的人脸解锁PC。
因为目前的PC缺乏防回滚机制,PC删除解锁密码“用户1的人脸”后,PC或者其他恶意用户(恶意用户使用恶意软件)可以恢复解锁密码“用户1的人脸”,这样,用户1也可以使用自己的人脸解锁PC,会造成用户2的数据的泄露,导致数据安全问题。
应理解的是,本申请实施例提供的数据防回滚方法不仅可以适用于PC的解锁密码,还可以应用于其他场景中。示例性的,其他场景如攻击场景、降级场景等。换句话说,攻击场景包括但不限于:PC的数据设置和/或参数设置、PC的解锁密码、支付密码、PC中应用(application,APP)的密码(如登录密码、解锁密码等)。降级场景包括但不限于:PC中APP的安装包。应理解,APP的解锁密码为进入APP的界面或一特定界面的密码,如进入图库的私密相册需要解锁密码。
其中,如上场景中的数据可以看作单调递增的数据,如设置了新的数据,则PC会删除旧的数据,存储新的数据。PC需要对新的数据进行防回滚保护,以避免新的数据回滚至上一次的数据,以引发数据安全问题或者导致PC出现故障。示例性的,如PC的解锁密码回滚至上一次的解锁密码,会引发数据安全问题,如PC中APP的安装包回滚至上一版本的安装包,则会导致该APP出现程序故障(bug)。
应注意,本申请实施例提供的数据防回滚方法不仅可以适用于如上示例的场景中,还可以应用于其他需要数据防回滚的场景中,本申请实施例对场景不作穷举说明,下述实施例中以PC的解锁密码为人脸为例进行说明。
现有技术中,为了防止PC中的数据回滚,可以在PC中增加硬件,如一次性可编程存储器(one time programmable,OTP)或熔丝eFUSE。以OTP为例,OTP是一种非易失性存储器(non-volatile memory,NVM),仅允许数据被写入一次。由于数据仅能被写入一次,则OTP中写入的数据无法被恶意软件侵入,因此OTP中写入的数据也无法回滚,起到防止数据回滚的作用。以eFUSE为例,数据防回滚的原理是:通过对芯片的特定的引脚上通过足够的电流,从而烧断里边的熔丝。熔丝烧断以后,芯片中的数据就不可以被读出来也不能改写了,因此也可以防止数据回滚。
在PC中设置OTP或eFUSE硬件的方式,虽然可以起到防止数据回滚的目的,但是一方面需要额外设置硬件,成本高,另一方面OTP和eFUSE防止数据回滚的次数有限,且不可重复使用,如OTP中的数据仅能被写入一次,仅能实现对一个“人脸”的防回滚,如eFUSE,引脚的个数有限,也能实现有限次的数据防回滚。
因为防回滚的数据需要存储在NVM中,即使PC断电NVM中的数据也不会消失,本申请实施例中可以通过在PC中基本输入输出***(basic input output system,BIOS)的非易失性存储器,并基于BIOS的非易失性存储器,通过软件便捷地实现数据存储,以达到数据防回滚的目的。本申请实施例中,可以将需要防回滚的数据加密存储在NVM中,且在数据读写时需要解密验证,在验证失败时禁止读写该数据,因此可以达到数据防回滚的目的。另外,本申请实施例中,为了避免采用常规的加解密算法容易破解的问题,还可以结合数据的计数器值,对需要防回滚的数据进行加密,进而在采用回滚后的数据验证无法通过,进而避免使用回滚的数据执行操作的问题,可以提高数据安全性,具体可以参照下述实施例中的相关描述。
应理解的是,可以将数据更新前的计数器值value看作n-1,则数据更新后的计数器值value看作n,n为大于1的整数。
示例性的,如PC的解锁密码“用户1的人脸”为PC的第一个解锁密码,则可以将“用户1的人脸”作为PC的解锁密码1(即PC的解锁密码的计数器值为1),相应的,PC的解锁密码“用户2的人脸”可以看作PC的解锁密码2(即PC的解锁密码的计数器值为2)。在一种实施例中,PC的解锁密码的计数器值可以表征:PC的解锁密码“人脸”的更新次数,示例性的,如“用户1的人脸”的计数器值为1,可以理解为PC中PC的解锁密码“人脸”第一次更新,如“用户2的人脸”的计数器值为2,可以理解为PC中PC的解锁密码“人脸”第二次更新。
示例性的,如PC第一次安装的APP1的安装包可以看作安装包的版本1(即APP1的安装包的计数器值为1),则更新后的APP1的安装包可以看作安装包的版本2(即APP1的安装包的计数器值为2)。同理的,在一种实施例中,APP1的安装包的计数器值可以表征:APP1的安装包的更新次数,示例性的,如安装包的版本1的计数器值为1,可以理解为PC中APP1的安装包第一次更新,如安装包的版本2的计数器值为2,可以理解为PC中安装包第二次更新。
示例性的,如PC的APP1的解锁密码为指纹1,则指纹1的计数器值可以看作1,如用户将PC的APP1的解锁密码修改为指纹2,则指纹2的计数器值可以看作2。同理的,在一种实施例中,APP1的解锁密码“指纹”的计数器值可以表征:APP1的解锁密码“指纹”的更新次数,示例性的,如指纹1的计数器值为1,可以理解为PC中APP1的解锁密码“指纹”第一次更新,如指纹2的计数器值为2,可以理解为PC中APP1的解锁密码“指纹”第二次更新。
综上,在一种实施例中,计数器值可以表征数据(如PC的解锁密码“人脸”、APP1的安装包,以及APP1的解锁密码等)的更新次数。
本申请实施例提供的数据防回滚方法可以适用于PC等不具备防回滚机制的终端,也可以适用于现有技术中的OTP等硬件防回滚需求升级“防回滚机制”的终端,本申请实施例中对终端的形态不做具体限定。终端如可以为平板电脑(portable android device,PAD)、个人数字处理(personal digital assistant,PDA)、具有无线通信功能的手持设备、计算设备、车载设备或可穿戴设备,虚拟现实(virtual reality,VR)终端设备、增强现实(augmented reality,AR)终端设备、工业控制(industrial control)中的无线终端、智慧家庭(smart home)中的无线终端等。
在介绍本申请实施例提供的数据防回滚方法之前,首先结合图2-图5A介绍BIOS的运行机制以及终端的结构:
BIOS是一组固化到终端主板上的程序。BIOS中保存着终端最重要的基本输入输出的程序、***设置信息、开机后自检程序以及***自启动程序,另外,BIOS还可以读写主板上的参数以进行设置。也就是说,BIOS可以为终端提供最底层的、最直接的硬件设置和控制。简单来说,BIOS是终端开机过程中加载的第一个程序,BIOS的设置直接关系到终端是否可以正常启动,并影响之后终端的使用效率。终端中的Windows操作***,也是在BIOS的引导下进行工作的。
应理解,本申请实施例中的数据防回滚方法不仅可以适用于传统的BIOS,还可以适用于统一可扩展固件接口(unified extensible firmware interface,UEFI)BIOS,以及其他类型的BIOS,下述实施例中以UEFI BIOS为例进行说明。
图2为现有技术中UEFI BIOS的运行过程示意图。在一种实施例中,UEFI建立在被称为平台初始化(platform initialization,PI)标准的框架之上。参照图2,在安全验证阶段(security phase,SEC),初始化中央处理器(central processing unit,CPU)和CPU内部资源,使缓存(cache)作为随机存取存储器(random access memory,RAM)提供堆栈运行C代码,即(CAR,cache as ram)。在EFI前期初始化阶段(pre-EFI initialization,PEI),初始化内存,并将需要传递的信息传递给驱动执行环境(drive execution environment,DXE)。内存已经可以完全被使用后,DXE初始化核心芯片,并将控制权转交给UEFI接口。
启动设备选择(boot device select,BDS),负责初始化所有启动操作***(operating system,OS)所需的设备,负责执行所有符合UEFI驱动模型的驱动。BDS选择完设备,就加载操作***加载器(OS loader)运行OS。OS启动后,***的控制权从UEFI转交给OS loader,UEFI占用的资源被回收到OS loader,只保留UEFI运行是服务。如上简介了BIOS的运行机制,具体相似的步骤可以参照现有技术中的相关说明。
参照图3,本申请实施例中,可以在运行时刻(run time,RT)的BIOS中设置非易失性存储区BIOS NV,BIOS NV用于存储各类型数据的计数器值,以及各类型数据加密后的密文,可以参照下述实施例中的相关描述。在一种实施例中,BIOS NV可以为BIOS中原本的存储空间中的部分存储空间。或者,在一种实施例中,BIOS NV是新部署的存储器。应理解,为了表征BIOS中设置的BIOS NV,图3中采用阴影进行标识。
图4为本申请实施例提供的终端的一种结构示意图。参照图4,终端40中可以包括:BIOS41和存储器42。其中,BIOS 41中包括BIOS NV。
存储器42可以用于存储一个或多个计算机程序,该一个或多个计算机程序包括指令。存储器42可以包括存储程序区和存储数据区。其中,存储程序区可存储操作***;该存储程序区还可以存储一个或多个应用程序(比如图库、联系人等)等。存储数据区可存储终端使用过程中所创建的数据等。此外,存储器42可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universalflash storage,UFS)等。在一种实施例中,存储器42可以为固态硬盘(Solid State Disk,SSD)。应理解,存储器42可以用于存储解密后的密文(即明文)。
在一种实施例中,终端40中还可以包括:可信平台模块(trusted platformmodule,TPM)43。其中,TPM 43可以看作保护BIOS和操作***不被修改的辅助处理器,TPM的作用和原理可以参照现有技术中的相关描述。
图5A为本申请实施例提供的终端的另一种结构示意图。参照图5A,终端的软件***可以采用分层架构,本申请实施例以终端(如PC)的PC***架构为例说明终端的软件结构。分层架构可以将终端的软件***分成若干个层,每一层都有清晰的角色和分工,层与层之间通过软件接口通信。
在一种实施例中,可以将PC***分为四层,分别为应用程序层(applications)、***服务层、内核和驱动层。应理解,本申请实施例在图5A所示的PC***架构中增加了PC的硬件层。本申请实施例对终端的软件结构的分层不做限制。如下实施例中各分层中包括的模块为本申请实施例中涉及到的模块,如下各分层中包括的模块并不构成对终端的结构的限定,以及模块部署的层级(示例说明)也并不构成对终端的结构的限定。示例性的,如WMI模块可以部署在***服务层,也可以部署在内核和驱动层。在一种实施例中,图5A中所示的模块可以单独部署,或者几个模块可以部署在一起,图5A中对模块的划分为一种示例。在一种实施例中,图5A中所示的模块的名称为示例说明。
其中,应用程序层可以包括应用程序包。示例性的,应用程序层内可以包括:相机,图库,日历,通话,地图,导航,蓝牙,音乐,视频,短信息等应用程序包。
参照图5A,应用程序层包括PC管家应用(application,APP)和需求数据防回滚保护的应用。其中,需求数据防回滚保护的应用如“生物认证”应用(如PC解锁应用,以及APP解锁应用等)。应理解,图5A中以需求数据防回滚保护的应用包括“人脸解锁应用”和“其他应用”为例进行说明。其他应用,如PC的数据设置和/或参数设置应用、支付应用等。
其中,PC管家APP,用于为“人脸解锁应用”提供人脸数据的防回滚服务。
在一种实施例中,PC管家APP中包括:密钥管理服务模块、BIOS NV存储(storage)模块,以及TPM加密(crypto)模块。其中,BIOS NV storage模块,用于辅助密钥管理服务模块将数据存储至BIOS NV中,数据如下述实施例中的“密文、meta数据等”。TPM crypto模块,用于辅助密钥管理服务模块保护BIOS NV中存储的数据,防止BIOS NV中存储的数据被篡改。
在一种实施例中,密钥管理服务模块可以为鸿蒙通用密钥库***(Harmonyuniversal key store,HUKS)。应理解,HUKS向应用提供密钥库能力,包括密钥管理及密钥的密码学操作等功能。HUKS所管理的密钥可以由应用导入或者由应用调用HUKS接口生成。HUKS的具体功能本申请实施例不做赘述。
在一种实施例中,参照图5A,***服务层可以包括:Windows管理接口(windowsmanagement interface,WMI)模块和TPM基础服务(base service)模块。WMI模块,用于实现BIOS NV storage模块和BIOS NV驱动(driver)之间的通信。TPM base service模块,用于实现TPM crypto模块和TPM驱动(driver)之间的通信。
内核和驱动层中至少包括硬件的驱动,用于驱动硬件工作。如驱动层中包括:传感器驱动、显示驱动(display driver)、图形处理器驱动(graphics processing unitdriver,GPU driver)等,本申请实施例对此不做限制。应理解,图5A中示出了本申请实施例中涉及到的BIOS NV驱动(driver),以及TPM驱动(driver)。示例性的,BIOS NV driver,用于驱动BIOS NV工作。TPM driver,用于驱动TPM工作。
硬件层包括PC中的硬件设备,如显示屏、中央处理器(central processing unit,CPU)、温度传感器、电池等,在此不做赘述。应理解,图5A中的硬件层中示出了本申请实施例中涉及到的BIOS NV以及TPM。BIOS NV,用于存储数据,数据如meta数据、密文,BIOS NV中存储的数据可以参照下述实施例中的相关描述。TPM,用于对数据进行加密以存储至BIOS NV中,且能够实现数据解密,可以保护BIOS和操作***的数据安全。
应理解,图5A中终端的各模块的功能可以参照下述实施例中的相关描述。
在一种实施例中,结合图3所示,图5A所示的终端的结构可以简化为图5B。参照图5B,PC管家APP中可以包括:数据保护服务(模块)。其中,数据保护服务可以包括:密钥管理服务模块、BIOS NV storage模块,以及TPM crypto模块。数据保护服务可以通过WMI模块与BIOS NV driver进行通信,进而可以使得数据保护服务使用运行时刻中的BIOS NV服务,以实现数据保护服务和BIOS NV的交互,进而实现数据保护服务将数据存储至BIOS NV中。应理解,5B中所示的UEFI BIOS NV可以看作BIOS NV。
可以理解的是,图4、图5A,以及图5B所示的结构并不构成对终端的具体限定。在本申请另一些实施例中,终端可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件,或软件和硬件的组合实现。
在图4-图5B所示的终端的结构的基础上,下面结合具体的实施例对本申请实施例提供的数据防回滚方法进行说明。下面这几个实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图6为本申请实施例提供的数据防回滚方法的一种实施例的流程示意图。应理解,图6中从存储数据到防止数据回滚的过程说明本申请实施例提供的数据防回滚方法。参照图6,本申请实施例提供的数据防回滚方法可以包括:
S601,应用响应于存在待存储的第一数据,向密钥管理服务模块发送第一数据。
待存储的第一数据为需要防回滚保护的数据。密钥管理服务模块可以为应用提供数据防回滚保护。
示例性的,应用可以为“人脸解锁应用”,当用户设置解锁密码“人脸2”时,应用确定存在待存储的第一数据为:PC的解锁密码“人脸2”,则应用可以向密钥管理服务模块发送第一数据“人脸2”。应理解,“人脸2”可以理解为人脸2的数据。
应理解,本申请实施例中以PC的解锁密码为例进行说明,以第一数据为应用的安装包为例,应用下载新版本的安装包后,确定存在待存储的第一数据,则应用可以向密钥管理服务模块发送新版本的安装包。
S602,密钥管理服务模块更新BIOS NV中的第一数据的计数器值。
BIOS NV中存储有至少一个类型的数据的计数器值value。
示例性的,参照图7A中的a,以BIOS NV中存储有PC的解锁密码“人脸”以及APP1的解锁密码“指纹”为例,BIOS NV中可以存储如:APP1的解锁密码“指纹”(value=3),以及PC的解锁密码“人脸”(value=1)。APP1的解锁密码“指纹”(value=3)可以理解为:用户已经在PC中设置了3个指纹作为APP1的解锁密码,目前使用的APP1的解锁密码为第三个指纹。同理的,PC的解锁密码“人脸”(value=1)可以理解为:用户已经在PC中设置了1个人脸作为PC的解锁密码,目前使用的PC的解锁密码为第一个指纹。
其中,当密钥管理服务模块接收到待存储的第一数据“人脸2”时,可以确定用户设置了PC的新的解锁密码,则可以更新PC的解锁密码“人脸”的计数器值value。参照图7A中的b,可以将PC的解锁密码“人脸”的value从1更新为2。
在一种实施例中,PC中还可以保存value为1的PC的解锁密码“人脸”的相关数据,如“人脸1”的相关数据,可以参照图7B中的相关描述。
在一种实施例中,BIOS NV中还可以包括数据的类型,即计数器标识,如counter_1表征APP1的解锁密码“指纹”数据,counter_2表征PC的解锁密码“人脸”数据。在该实施例中,计数器值可以称为counter值,即counter value。可以理解的是,counter用于记录数据的递增值,即数据更新后的value。
在一种实施例中,密钥管理服务模块更新BIOS NV中的第一数据的计数器值的方式可以为:密钥管理服务模块向BIOS NV发送更新指示,如更新指示中包括计数器标识counter_2,以及更新后的计数器值value=2,相应的,BIOS NV可以将counter_2对应的value从1更新为2。在一种实施例中,第一数据的计数器值可以称为第一计数器值,示例性的,如第一计数器值为value=2。
S603,密钥管理服务模块生成数据盐值。
数据盐值FILE_KEY_SALT,由密钥管理服务模块生成,该数据盐值FILE_KEY_SALT可以为一随机值。
在一种实施例中,数据盐值可以称为第一盐值。
S604,密钥管理服务模块向TPM发送第一数据的加密请求。
加密请求用于对第一数据进行加密。
在一种实施例中,加密请求中包括第一数据、第一数据的计数器值,以及数据盐值。应理解,第一数据的计数器值为更新后的计数器值。示例性的,当第一数据“人脸2”时,counter_2的计数器值从1更新为2,加密请求中的第一数据的计数器值为2。
S605,TPM响应于加密请求,根据数据盐值、根密钥,以及第一数据的计数器值,采用第一加密算法,生成数据密钥。
在一种实施例中,TPM中存储有根密钥rootkey。在一种实施例中,TPM在初始化时可以生成根密钥。第一加密算法可以包括但不限于:基于HMAC的密钥推导函数(HMAC-basedKDF,HKDF),以及SP800-108标准中涉及到的秘钥派生算法。
示例性的,TPM响应于接收到密钥管理服务模块的加密请求,可以采用HKDF算法,根据数据盐值、根密钥,以及第一数据的计数器值,生成数据密钥File_key。在一种实施例中,数据密钥可以称为第一密钥。
S606,TPM采用第二加密算法,使用数据密钥加密第一数据,得到密文。
第二加密算法可以包括但不限于:带有调整和密文窃取的高级加密标准(xexencryption mode with tweak and cipher text stealing advanced encryptionstandard),XTS-AES)算法。
示例性的,TPM可以采用XTS-AES算法,使用数据密钥File_key加密第一数据,得到密文。示例性的,TPM可以采用XTS-AES算法,使用数据密钥File_key加密第一数据“人脸2”,得到“人脸2”的密文。
S607,TPM向密钥管理服务模块发送密文。
S608,密钥管理服务模块将密文存储在BIOS NV中。
在一种实施例中,密钥管理服务模块在接收到来自TPM密文后,可以依次通过BIOSNV storage模块,WMI模块,以及BIOS NV driver将密文存储在BIOS NV中。在一种实施例中,密钥管理服务模块可以将密文以及第一数据的元数据(Meta数据)存储至BIOS NV中。
在一种实施例中,第一数据的Meta数据可以称为第一数据的描述信息,用于指示第一数据。在一种实施例中,若将第一数据看做一篇文章,第一数据的Meta数据可以看做文章的摘要。
在一种实施例中,对于PC的解锁密码“人脸”来说,密钥管理服务模块可以将PC的解锁密码“人脸”的Meta数据,以及密文存储至BIOS NV中。在一种实施例中,Meta数据中可以包括:PC的解锁密码“人脸”计数器的计数器标识(counter_2)、计数器值(value=2),以及数据盐值(即密钥管理服务模块生成的“人脸2”的数据盐值)。应理解,本申请实施例中未在BIOS NV直接存储数据密钥,可以保证数据密钥的安全性,进而保证密文和第一数据的安全性。
在一种实施例中,虽然密钥管理服务模块更新了PC的解锁密码“人脸”的计数器值,但BIOS NV中仍可以存储计数器值为1的人脸的数据。示例性的,对于PC的解锁密码“人脸”来说,BIOS NV中可以存储计数器值为1的数据,以及计数器值为2的数据,也就是说,BIOS NV中可以存储更新前的PC的解锁密码“人脸”,以及更新后的PC的解锁密码“人脸”。
示例性的,参照图7B,BIOS NV中可以存储计数器值为1的PC的解锁密码“人脸”的Meta数据和密文,以及,计数器值为2的PC的解锁密码“人脸”的Meta数据和密文。在一种实施例中,可以将BIOS NV中存储的计数器值为1的PC的解锁密码“人脸”的Meta数据和密文称为第一文件,将计数器值为2的PC的解锁密码“人脸”的Meta数据和密文称为第二文件。
可以想到的是,对于其他类型的数据,如APP1的解锁密码“指纹”,BIOS NV中也可以存储计数器值value分别为1、2以及3的“指纹”的数据。
在一种实施例中,图7B中在存储更新前的PC的解锁密码“人脸”,如人脸1的Meta数据和密文时,因为PC的解锁密码“人脸”的计数器值已经更新为2,因此可以在人脸1的Meta数据中不存储“人脸1”的计数器值。
如上S601-S608说明了存储数据(如“人脸2”)的过程,下述介绍防止数据防回滚的过程,在一种实施例中,在S608之后还可以执行S609-S616:
S609,应用响应于用户输入的第二数据,向密钥管理服务模块发送第二数据。
第二数据可以理解为待验证的数据。其中,应用响应于用户输入的第二数据,可以向密钥管理服务模块发送第二数据,以便密钥管理服务模块对第二数据进行验证。
示例性的,如PC的解锁密码为“人脸2”,则用户可以向PC输入第二数据“人脸2”,以解锁PC,或者,其他用户可以向PC输入第二数据“人脸1”,以试图解锁PC。第二数据为用户输入的待与第一数据进行对比验证的数据(如人脸1或人脸2等)。
S610,密钥管理服务模块向TPM发送解密请求。
在一种实施例中,解密请求中包括第二数据。
S611,TPM响应于解密请求,根据BIOS NV中存储的第一数据的计数器值、数据盐值,以及根密钥,获取数据密钥。
TPM响应于来自密钥管理服务模块的解密请求,可以根据BIOS NV中存储的第一数据的计数器值、数据盐值,以及TPM中存储的根密钥,获取数据密钥。应理解,本申请实施例中,为了防止数据回滚,即为了避免用户使用人脸1也可以解锁PC,TPM采用的第一数据的计数器值为最新的计数器值,如value=2。
在一种实施例中,TPM可以访问BIOS NV,以获取BIOS NV中存储的第一数据的计数器值、数据盐值。在一种实施例中,TPM响应于解密请求,可以向BIOS NV发送第二数据的计数器标识,如counter_2,如此BIOS NV可以向TPM反馈counter_2对应的最新的计数器值(即第一数据的计数器值value=2,以及计数器值2对应的数据盐值。
在一种实施例中,TPM可以使用第一加密算法,根据计数器值(value=2)、数据盐值(即“人脸2”的数据盐值),以及根密钥,获取数据密钥,可以参照S605中的相关描述。
S612,TPM根据数据密钥对BIOS NV中存储的密文进行解密,得到明文。
应注意的是,TPM在得到数据密钥后,可以根据数据密钥,解密计数器值(value=2)所属的第二文件中的密文,得到明文。
示例性的,TPM可以采用XTS-AES算法,根据数据密钥File_key解密第一数据“人脸2”的密文,得到“人脸2”。
S613,TPM检测第二数据是否与明文相同。若是,执行S614,若否,执行S616。
其中,若用户使用“人脸2”解锁PC,第二数据为人脸2,TPM检测第二数据与解密得到的明文(第一数据)相同。若用户使用人脸1试图解锁PC,第二数据为人脸1,TPM检测第二数据与解密得到的明文(第一数据)不同。
S614,TPM通过密钥管理服务模块向应用反馈第一消息,第一消息用于指示第二数据与明文相同。
S615,应用执行相应的操作。
示例性的,以明文为“人脸2”为例,如密钥管理服务模块解密得到的明文“人脸2”后,可以向应用反馈“人脸2”,以使应用可以使用“人脸2”解锁PC。
S616,TPM不响应。
若TPM解密得到的明文与第二数据不同,表征用户使用的人脸并非用户设置的PC的解锁密码“人脸2”,而是之前使用的PC的解锁密码“人脸1”,为了防止数据回滚,TPM可以不响应。
示例性的,如用户2的PC的解锁密码为用户2的人脸“人脸2”,则用户1使用自己的人脸“人脸1”解锁PC时,TPM不响应,即用户1无法使用自己的人脸“人脸1”解锁PC,可以避免PC的解锁密码回滚。
另外,值得注意的是,TPM可以保护BIOS NV中存储的数据(Meta数据和密文等)不受侵入,且在S611-S614的过程中,TPM可以为各步骤的执行提供安全可靠的执行环境。示例性的,TPM对第一数据加密和解密过程的保护作用可以如图9所示。
在一种实施例中,TPM中设置了扩展访问控制策略,可以实现对第一数据加密和解密过程的保护作用。在一种实施例中,可以将扩展访问控制策略理解为:防止别的恶意软件或应用仿冒密钥管理服务模块执行上述实施例中的步骤。
其中,TPM中可以设置平台配置寄存器(platform configuration register,PCR),PCR可以防止windows***被替换为非法版本,以避免恶意软件或应用替换windows***中的文件,进而避免对BIOS NV中的数据的篡改。另外,TPM与密钥管理服务模块交互的过程中,可以增加对密钥管理服务模块的身份验证,如对密钥管理服务模块的身份特征值进行验证,且在验证成功后才与密钥管理服务模块进行交互,以进一步保护数据安全。在一种实施例中,密钥管理服务模块的身份特征值可以包括但不限于:密钥管理服务模块的签名信息以及密钥管理服务模块运行时的秘密参数。应理解秘密参数混淆在代码中,且在密钥管理服务模块运行时生成。
在一种实施例中,图6中所示的步骤为可选步骤,且步骤可以相互组合。在一种实施例中,图6中所示的模块也可以组合,组合后的模块用于执行图6中的至少一个步骤。
本申请实施例中,可以基于待存储的第一数据的计数器值,将第一数据加密存储在BIOS NV中,进而对第二数据进行验证时,可以基于第一数据的计数器值对第一数据密文进行解密,若第二数据与解密后的明文相同,则可以执行下一步操作,若第二数据与解密后的明文不同,则应用可以不响应,进而避免当第一数据回滚至第二数据时应用还依然响应第二数据的问题,本申请实施例中应用不响应回滚后的第二数据,保证了数据安全。另外,当第二数据与解密后的明文相同,可以执行下一步操作,保证了应用的顺利进行。
应理解的是,本申请实施例中使用的加解密算法虽然为常用的加解密算法,但是本申请实施例中在进行加解密计算时,依据第一数据的计数器值进行加解密计算,因为数据更新后,计数器值为递增的,因此本申请实施例中基于第一数据的计数器值进行加解密计算,仅允许最新的计数器值对应的数据可以解密,而若回滚后的数据无法通过验证,即可以实现防止数据回滚,能够有效达到数据防回滚,且因为本申请实施例中数据防回滚方法并不限制数据防回滚的次数,可以无限次使用。
图6所示的实施例中可以实现数据的防回滚保护,在一种实施例中,为了保证第一数据的完整性,TPM还可以对第一数据加密后的密文进行再次加密,以保证密文的完整性和安全性。
在一种实施例中,参照图10,在如上S606之后还可以执行S606A-S608A:
S606A,TPM生成消息认证码MAC盐值。
在一种实施例中,消息认证码(message authentication code,MAC)盐值MAC_KEY_SALT,由TPM生成,该数据盐值FILE_KEY_SALT可以为一随机值。
在一种实施例中,MAC盐值可以称为第二盐值。
应理解,S606A与S605没有先后顺序的区分,二者可以同时执行。
S607A,TPM根据MAC盐值和数据密钥,采用第一加密算法,生成MAC密钥。
其中,MAC密钥(MAC_key)用于保护数据密钥。在一种实施例中,MAC密钥可以称为第二密钥。
S608A,TPM根据MAC密钥,采用第三加密算法加密密文,得到MAC值。
第三加密算法可以包括但不限于:HMAC算法。HMAC是一种使用单向散列函数来构造MAC的方法,其中H代表哈希hash。在一种实施例中,第三加密算法还可以为其他类型的消息摘要算法。
在一种实施例中,TPM可以根据MAC密钥,以及第一数据的Meta数据,加密密文,得到MAC值。其中,使用第一数据的Meta数据对密文进行加密的目的在于:因为BIOS NV中存储有多个数据的Meta数据,每个Meta数据对应的密文不同,本申请实施例中为在解密时快速定位密文,提高解密速度,可以使用Meta数据快速查找得到BIOS NV中的密文。
在一种实施例中,S608A中使用的第一数据的Meta数据中可以包括如下至少一项:数据盐值、第一数据的计数器值,以及MAC盐值。
在一种实施例中,S608A中的MAC值可以称为第一MAC值。在该实施例中,TPM可以对密文进行加密,以保证密文的安全和完整性。
因为本申请实施例中,TPM还对密文进行加密,因此上述S607可以替换为S609A,S608可以替换为S610A:
S609A,TPM向密钥管理服务模块反馈MAC盐值、MAC值以及密文。
S610A,密钥管理服务模块将MAC盐值、MAC值,以及密文存储至BIOS NV中。
示例性的,上述图6中BIOS NV中存储的数据可以参照图11中的a所示,图10所示的实施例中,TPM可以对密文进行加密,因此密钥管理服务模块可以将MAC盐值、MAC值,以及密文存储至BIOS NV中。在一种实施例中,MAC盐值、MAC值属于第一数据的Meta数据,BIOS NV中存储的数据可以参照图11中的b所示。
在该实施例中,因为TPM对密文进行了加密操作,因此在明文解密过程也相应发生改变,如图10所示,S611之后还可以执行S611A-S611A:
S611A,TPM根据数据密钥和BIOS NV中存储的MAC盐值,获取MAC密钥。
S611A可以参照S607A中的相关描述。S611A中TPM获取BIOS NV中存储的MAC盐值的方式可以参照S611中TPM获取BIOS NV中存储的第一数据的计数器值、数据盐值的相关描述。
S612A,TPM根据MAC密钥,采用第三加密算法加密密文,得到MAC值。
S612A可以参照S608A中的相关描述。
在一种实施例中,S612A中的MAC值可以称为第一MAC值。
S613A,TPM检测MAC值与BIOS NV中存储的MAC是否相同。若是,执行S612,若否,执行S616。
在一种实施例中,可以理解为:TPM检测计算得到的第二MAC值和BIOS NV中已存储的第二MAC值是否相同。
在一种实施例中,TPM进行加解密的过程可以简化为如图8所示的步骤。图8所示的为TPM加密存储“人脸2”的过程。
本申请实施例中,TPM可以对密文进行加密,以保护密文的完整性。其中,在解密过程中,TPM可以根据数据密钥和BIOS NV中存储的MAC盐值,获取MAC密钥,进而根据MAC密钥,采用第三加密算法加密密文,获取MAC值(第二MAC值),且采用计算得到的MAC值与BIOS NV中存储的MAC值(第一MAC值)进行比较,在计算得到的MAC值与BIOS NV中存储的MAC值相同时,对密文进行解密,在计算得到的MAC值与BIOS NV中存储的MAC值不同时,不对密文进行解密。本申请实施例中,相当于对密文的解密过程增加了一次验证步骤,提高了密文的安全性。
在一种实施例中,图10中所示的步骤为可选步骤,且步骤可以相互组合。在一种实施例中,图10中所示的模块也可以组合,组合后的模块用于执行图10中的至少一个步骤。
本申请实施例中,TPM还可以对第一数据加密后的密文进行再次加密,可以保证密文的完整性,进而保证第一数据(明文)的完整性和安全性。
如上实施例中以终端中包括的模块为执行主体,讲述本申请实施例提供的数据防回滚方法,下述以终端为执行主体,讲述本申请实施例提供的数据防回滚方法。示例性的,如终端可以为PC。参照图12,本申请实施例提供的数据防回滚方法可以包括:
S1201,获取待验证的第二数据。
在一种实施例中,S1201可以参照S609中的相关描述。示例性的,如待验证的第二数据可以为人脸1或人脸2。在一种实施例中,第二数据还可以为未设置为PC的解锁密码的人脸3。
在一种实施例中,当待验证的第二数据为PC的解锁密码时,用户在解锁PC时可以输入待验证的第二数据,相应的,PC可以获取待验证的第二数据。
在一种实施例中,当待验证的第二数据为支付密码(如银行卡的支付密码或者应用的支付密码等)时,在用户支付时用户可以输入待验证的第二数据,相应的,PC可以获取待验证的第二数据。
在一种实施例中,当待验证的第二数据为PC中的应用的安装包时,终端可以在应用运行时获取应用的安装包(即待验证的第二数据)。
在一种实施例中,当待验证的第二数据为终端的数据设置,或者终端的参数设置时,终端可以在开机时获取终端的数据设置,或者终端的参数设置(即待验证的第二数据)。示例性的,终端的数据设置可以理解为终端设置的数据,如终端设置的时间、日期、定时关机时间、自动休眠时间等。终端的参数设置可以理解为终端设置的参数,如终端设置的CPU运行的频率、终端显示画面的刷新率等。
在一种实施例中,待验证的第二数据还可以为终端中存储的文档、图片、音频等数据,本申请实施例对待验证的第二数据的种类不做限制。应理解的是,待验证的第二数据为可以更新的数据,如文档修改后可以更新为新版本的文档,应用的安装包更新后为新版本的安装包,PC的解锁密码更新后为新设置的解锁密码。
在一种实施例中,终端还可以在其他需求验证第二数据时,获取第二数据。其中,需求验证第二数据可以包括但不限于如下场景:定期(如周期性的)对第二数据进行验证,或者在用户的指示下对第二数据进行验证。如此,终端可以定期(如周期性的)获取待验证的第二数据,或者基于用户的指示获取待验证的第二数据。
应理解,待验证的第二数据的类型不同,终端获取第二数据的方式不同。如上第二数据为示例说明,本申请实施例中并未对第二数据的类型进行穷举。
S1202,根据第一计数器值,解密密文,得到第一数据,第一计数器值为第一数据的计数器值,密文是基于第一计数器值加密第一数据得到的。
其中,第一计数器值为第一数据的计数器值,第一计数器值表征数据的更新次数。其中,以PC的解锁密码“人脸”为例,示例性的,如用户为PC的解锁密码“人脸”设置过两次人脸,第一次设置的人脸为人脸1,第二次设置的人脸为第一数据“人脸2”,则第一数据的计数器值(即第一计数器值)为2,第一计数器值2表征PC的解锁密码“人脸”的更新次数为2次,如人脸1的计数器值为1。其中,本申请实施例中为了便于记录PC的解锁密码“人脸”的更新次数,可以为PC的解锁密码“人脸”设置计数器,如计数器可以记录人脸1的计数器值为1,人脸2的计数器值为2。
在一种实施例中,PC的解锁密码还可以为“指纹”,可以为PC的解锁密码“指纹”设置计数器,该计数器用于记录PC的解锁密码“指纹”的更新次数,如用户为PC的解锁密码“指纹”设置过3个指纹,第一次设置的为指纹1、第二次设置的为指纹2以及第三次设置的为指纹3,则计数器可以记录指纹1的计数器值为1,指纹2的计数器值为2,以及指纹3的计数器值为3。指纹3的计数器值为3表征PC的解锁密码“指纹”的更新次数。
示例性的,以应用1的安装包为例,可以为应用1的安装包设置计数器,该计数器用于记录应用1的安装包的更新次数,如计数器可以记录版本为1的安装包的计数器值为1,版本为2的安装包的计数器值为2,版本为3的安装包的计数器值为3。版本为3的安装包的计数器值为3表征应用1的安装包的更新次数。应理解,不同应用的安装包对应的计数器不同。应理解,版本为1的安装包更新后版本2的安装包,版本2的安装包更新后为版本3的安装包。
第一计数器值为第一数据对应的计数器记录的最大的计数器值。可以理解为:第一数据为最新的数据。示例性的,以第一数据为PC的解锁密码“人脸”为例,第一计数器值2为PC的解锁密码“人脸”的最大的计数器值,表明人脸2为PC中最新的PC的解锁密码“人脸”。其中,第一数据和第二数据对应的计数器相同。
示例性的,当第二数据为人脸1时,第二数据的计数器值(如1)小于第一计数器值。当第二数据可以为人脸2时,第二数据的计数器值为第一计数器值。当第二数据可以为人脸3时,终端中不存在第二数据的计数器值。在一种实施例中,本申请实施例提供的为数据防回滚的方法,可以不限制应用于“第二数据可以为人脸1,即第二数据的计数器值小于第一计数器值”的场景中。
密文是基于第一计数器值加密第一数据得到的,在一种实施例中,加密过程可以参照上述实施例中的相关描述。在一种实施例中,PC可以采用加密算法,根据第一计数器值,加密第一数据,得到密文。示例性的,PC可以采用第一加密算法,根据第一计数器值,加密第一数据,得到密文。
S1203,根据第一数据,验证第二数据,得到验证结果。
PC解密密文,得到第一数据后,可以根据第一数据,验证第二数据。
在一种实施例中,验证第二数据可以理解为:检测第一数据是否与第二数据相同。其中,若第一数据和第二数据相同,则表征第二数据验证成功,若第一数据和第二数据不同,则表征第二数据验证失败。在一种实施例中,第一数据和第二数据不同可以理解为:第一数据为第二数据更新后的数据。
换句话说,若待验证的第二数据不为最新的数据时,第二数据验证失败。示例性的,如使用人脸1解锁PC时,因为PC已经设置新的解锁密码人脸为“人脸2”,因此使用人脸1验证失败,即无法使用人脸1解锁PC。
在一种实施例中,第一数据为如下任一项:终端的解锁密码、支付密码、终端中应用的密码、终端中应用的安装包、终端的数据设置,或者终端的参数设置。应理解,第一数据和第二数据属于相同种类的数据,如第二数据为终端的解锁密码“人脸”,则第一数据也为终端的解锁密码“人脸”,如第二数据为终端的解锁密码“指纹”,则第一数据也为终端的解锁密码“指纹”,如第二数据为应用1的安装包,则第一数据也为应用1的安装包。应理解,第一数据和第二数据对应的计数器相同,也就是说,第一数据和第二数据可以相同,或者第一数据为第二数据更新后的数据。
S1204,根据验证结果,执行相应的操作。
在一种实施例中,验证结果可以包括:第二数据验证成功或验证失败。
在一种实施例中,根据数据不同,根据所述验证结果,执行相应的操作的方式可以不同。示例性的,当第一数据为终端的解锁密码时,终端响应于第二数据验证成功,解锁终端,响应于第二数据验证失败,终端可以输出提示信息。其中,提示信息指示解锁终端失败。
示例性的,当第一数据为支付密码(如银行卡的支付密码或者应用的支付密码等)时,终端响应于第二数据验证成功,可以进行支付,响应于第二数据验证失败,终端可以输出提示信息。其中,提示信息指示支付失败。
应理解的是,当第一数据为终端中应用的安装包时,终端可以在应用运行时验证应用的安装包(如应用的安装包是否发生回滚)。其中,终端响应于第二数据验证成功,可以运行应用,响应于第二数据验证失败,终端可以输出提示信息。其中,该提示信息指示应用的安装包发生数据回滚,存在数据安全风险,或者,响应于第二数据验证失败,终端可以不运行该应用。
应理解的是,当第一数据为终端的数据设置,或者终端的参数设置时,终端可以在开机时验证终端的数据设置,或者终端的参数设置。其中,终端响应于第二数据验证成功,可以执行开机操作,以正常开机。响应于第二数据验证失败,终端可以输出提示信息。其中,该提示信息指示应用的终端的数据设置,或者终端的参数设置发生数据回滚,存在数据安全风险。或者,响应于第二数据验证失败,终端可以不开机。
应理解,如上第一数据,以及终端输出验证结果为示例说明,本申请实施例提供的数据防回滚方法不限于应用于如上示例的第一数据中。
本申请实施例提供的数据防回滚方法,可以根据第一数据的计数器值对数据进行加密和解密,因此在数据发生回滚(即使用更新前的数据)时,因为回滚后的数据的计数器值与第一数据的计数器值不同,因此使用第一数据的计数器值解密密文后,回滚的数据无法验证通过,因此无法使用回滚的数据执行相应的操作,即可以避免数据回滚后仍可以执行相应的操作(如解锁终端),可以保证数据安全。
图12所示的实施例说明了终端的解密过程,在一种实施例中,这里说明终端加密第一数据以进行存储的过程。其中,终端响应于存在待存储的所述第一数据,可以获取所述第一计数器值,进而根据所述第一计数器值,加密所述第一数据,以得到所述密文,终端可以存储密文。
在一种实施例中,终端获取第一计数器值的方式可以为:终端获取第一数据对应的计数器已记录的最大的计数器值,进而根据该最大的计数器值,获取第一计数器值。示例性的,如第一数据为PC的解锁密码“人脸2”,则终端可以获取解锁密码“人脸”对应的计数器已经记录的最大的计数器值为1,则终端可以根据该最大的计数器值1,获取第一计数器值。
在一种实施例中,终端可以将该最大的计数器值加1,得到第一计数器值,如将最大的计数器值1加1,得到第一计数器值为2。在一种实施例中,终端还可以将该最大的计数器值加上一预设值,得到第一计数器值。该预设值可以不限于为1,在该实施例中,所述第一计数器值表征数据的更新次数可以理解为:根据该预设值,以及第一计数器值可以表征数据的更新次数。
在一种实施例中,终端可以采用第一加密算法,根据所述第一计数器值,加密所述第一数据,以得到所述密文。在该实施例中,终端可以采用第一加密算法,基于第一计数器值,解密密文,得到第一数据。
在一种实施例中,终端可以生成第一盐值,进而根据所述第一盐值、根密钥,以及所述第一计数器值,生成第一密钥,以采用第一密钥,加密所述第一数据,得到所述密文,该种实施例可以参照上述实施例中的相关描述。相对于该种实施例的解密过程也可以参照上述实施例中的相关描述。
在一种实施例中,本申请实施例还提供一种电子设备,该电子设备可以为上述实施例中所述的终端,参照图13,该电子设备1300中可以包括:处理器1301(例如CPU)、存储器1302。存储器1302可能包含高速随机存取存储器(random-access memory,RAM),也可能还包括非易失性存储器(non-volatile memory,NVM),例如至少一个磁盘存储器,存储器1302中可以存储各种指令,以用于完成各种处理功能以及实现本申请的方法步骤。
可选的,本申请涉及的电子设备还可以包括:电源1303、通信总线1304以及通信端口1305。上述通信端口1305用于实现电子设备与其他外设之间进行连接通信。在本申请实施例中,存储器1302用于存储计算机可执行程序代码,程序代码包括指令;当处理器1301执行指令时,指令使电子设备的处理器1301执行上述方法实施例中的动作,其实现原理和技术效果类似,在此不再赘述。
需要说明的是,上述实施例中所述的模块或部件可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个专用集成电路(application specificintegrated circuit,ASIC),或,一个或多个微处理器(digital signal processor,DSP),或,一个或者多个现场可编程门阵列(field programmable gate array,FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(central processing unit,CPU)或其它可以调用程序代码的处理器如控制器。再如,这些模块可以集成在一起,以片上***(system-on-a-chip,SOC)的形式实现。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
本文中的术语“多个”是指两个或两个以上。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系;在公式中,字符“/”,表示前后关联对象是一种“相除”的关系。另外,需要理解的是,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。
可以理解的是,在本申请的实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请的实施例的实施过程构成任何限定。

Claims (6)

1.一种数据防回滚方法,其特征在于,包括:
获取待验证的第二数据;
根据第一计数器值,解密密文,得到第一数据,所述第一计数器值为所述第一数据的计数器值,所述密文是基于所述第一计数器值加密所述第一数据得到的;
根据所述第一数据,验证所述第二数据,得到验证结果,当所述验证结果为所述第二数据验证成功时,所述第二数据与所述第一数据相同,当所述验证结果为所述第二数据验证失败时,所述第一数据为所述第二数据更新后的数据,所述第一计数器值表征数据的更新次数;
根据所述验证结果,执行相应的操作;
所述获取待验证的第二数据之前,还包括:
响应于存在待存储的所述第一数据,获取所述第一计数器值;
根据所述第一计数器值,加密所述第一数据,得到所述密文;
存储所述密文;
所述获取所述第一计数器值,包括:
检测所述第一数据对应的计数器记录的最大的计数器值;
根据所述最大的计数器值,得到所述第一计数器值;
所述根据所述第一计数器值,加密所述第一数据,得到所述密文,包括:
生成第一盐值;
根据所述第一盐值、根密钥,以及所述第一计数器值,生成第一密钥;
采用所述第一密钥,加密所述第一数据,得到所述密文;
存储所述第一盐值、所述第一计数器值,以及所述密文;
所述根据第一计数器值,解密密文,得到第一数据,包括:
根据所述根密钥、所述第一盐值、以及所述第一计数器值,生成所述第一密钥;
采用所述第一密钥,解密所述密文,得到所述第一数据;
所述得到所述密文之后,还包括:
生成第二盐值;
根据所述第二盐值和所述第一密钥,生成第二密钥;
采用所述第二密钥,加密所述密文,得到第一消息认证码MAC值;
所述采用所述第二密钥,加密所述密文,得到消息认证码MAC值,包括:
采用所述第二密钥,以及所述第一数据的描述信息,加密所述密文,得到第一MAC值,所述描述信息包括如下至少一项:所述第一计数器值、所述第一盐值,以及所述第二盐值;
其中,所述第一盐值、所述第二盐值、所述根密钥、所述第一计数器值、所述第一MAC值和所述密文存储于基本输入输出***BIOS中的非易失性存储区BIOS NV。
2.根据权利要求1所述的方法,其特征在于,所述得到第一MAC值之后,还包括:
存储所述第二盐值以及所述第一MAC值;
所述采用所述第一密钥,解密所述密文,得到所述第一数据之前,还包括:
根据所述第二盐值和所述第一密钥,生成所述第二密钥;
采用所述第二密钥,以及所述第一数据的描述信息,加密所述密文,得到第二MAC值;
所述采用所述第一密钥,解密所述密文,得到所述第一数据,包括:
响应于所述第二MAC值和所述第一MAC值相同,根据第一数据的描述信息,确定待解密的所述第一数据;
采用所述第一密钥,解密所述密文,得到所述第一数据。
3.根据权利要求1或2所述的方法,其特征在于,所述第一数据为如下任一项:终端的解锁密码、支付密码、所述终端中应用的密码、所述终端中应用的安装包、所述终端的数据设置,或者所述终端的参数设置。
4.根据权利要求3所述的方法,其特征在于,当所述第一数据为所述终端的解锁密码时,所述根据所述验证结果,执行相应的操作,包括:
当所述验证结果为所述第二数据验证成功时,解锁所述终端;
当所述验证结果为所述第二数据验证失败时,输出提示信息,所述提示信息指示解锁所述终端失败。
5.一种电子设备,其特征在于,包括:处理器和存储器;
所述存储器存储计算机指令;
所述处理器执行所述存储器存储的计算机指令,使得所述处理器执行如权利要求1-4中任一项所述的方法。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序或指令,当所述计算机程序或指令被运行时,实现如权利要求1-4中任一项所述的方法。
CN202210513658.7A 2022-05-12 2022-05-12 数据防回滚方法和电子设备 Active CN116089967B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210513658.7A CN116089967B (zh) 2022-05-12 2022-05-12 数据防回滚方法和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210513658.7A CN116089967B (zh) 2022-05-12 2022-05-12 数据防回滚方法和电子设备

Publications (2)

Publication Number Publication Date
CN116089967A CN116089967A (zh) 2023-05-09
CN116089967B true CN116089967B (zh) 2024-03-26

Family

ID=86197926

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210513658.7A Active CN116089967B (zh) 2022-05-12 2022-05-12 数据防回滚方法和电子设备

Country Status (1)

Country Link
CN (1) CN116089967B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105786588A (zh) * 2016-02-22 2016-07-20 中南大学 一种净室可信虚拟机监控器的远程认证方法
CN106713327A (zh) * 2016-12-29 2017-05-24 上海众人网络安全技术有限公司 一种验证码安全加固的认证方法及***
EP3333747A1 (en) * 2016-12-06 2018-06-13 ETH Zurich Methods and systems for detecting rollback attacks
CN109474423A (zh) * 2018-12-10 2019-03-15 平安科技(深圳)有限公司 数据加解密方法、服务器及存储介质
CN111723383A (zh) * 2019-03-22 2020-09-29 阿里巴巴集团控股有限公司 数据存储、验证方法及装置
CN112088376A (zh) * 2018-06-30 2020-12-15 华为技术有限公司 一种文件存储方法、装置及存储介质
CN112348997A (zh) * 2019-08-08 2021-02-09 云丁网络技术(北京)有限公司 智能门锁控制方法、装置及***
WO2021087956A1 (zh) * 2019-11-08 2021-05-14 华为技术有限公司 数据处理的方法、装置和***芯片
CN111386513B (zh) * 2018-05-03 2021-09-07 华为技术有限公司 数据处理的方法、装置和***芯片

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105786588A (zh) * 2016-02-22 2016-07-20 中南大学 一种净室可信虚拟机监控器的远程认证方法
EP3333747A1 (en) * 2016-12-06 2018-06-13 ETH Zurich Methods and systems for detecting rollback attacks
CN106713327A (zh) * 2016-12-29 2017-05-24 上海众人网络安全技术有限公司 一种验证码安全加固的认证方法及***
CN111386513B (zh) * 2018-05-03 2021-09-07 华为技术有限公司 数据处理的方法、装置和***芯片
CN112088376A (zh) * 2018-06-30 2020-12-15 华为技术有限公司 一种文件存储方法、装置及存储介质
CN109474423A (zh) * 2018-12-10 2019-03-15 平安科技(深圳)有限公司 数据加解密方法、服务器及存储介质
CN111723383A (zh) * 2019-03-22 2020-09-29 阿里巴巴集团控股有限公司 数据存储、验证方法及装置
CN112348997A (zh) * 2019-08-08 2021-02-09 云丁网络技术(北京)有限公司 智能门锁控制方法、装置及***
WO2021087956A1 (zh) * 2019-11-08 2021-05-14 华为技术有限公司 数据处理的方法、装置和***芯片
CN113168477A (zh) * 2019-11-08 2021-07-23 华为技术有限公司 数据处理的方法、装置和***芯片

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
云计算执行环境可信构建关键技术研究;代炜琦;《中国博士学位论文全文数据库 信息科技辑》(第07期);I139-24 *
云计算环境下数据保护关键技术研究;顾瑜;《中国博士学位论文全文数据库 信息科技辑》(第09期);I137-7 *

Also Published As

Publication number Publication date
CN116089967A (zh) 2023-05-09

Similar Documents

Publication Publication Date Title
EP3458999B1 (en) Self-contained cryptographic boot policy validation
US11921860B2 (en) Rollback resistant security
US6539480B1 (en) Secure transfer of trust in a computing system
JP5703391B2 (ja) 耐タンパー性ブート処理のためのシステム及び方法
EP2583410B1 (en) Single-use authentication methods for accessing encrypted data
EP2681689B1 (en) Protecting operating system configuration values
US7639819B2 (en) Method and apparatus for using an external security device to secure data in a database
US8099789B2 (en) Apparatus and method for enabling applications on a security processor
US8190916B1 (en) Methods and systems for modifying an integrity measurement based on user authentication
EP2727040B1 (en) A secure hosted execution architecture
WO2019104988A1 (zh) Plc的安全处理单元及其总线仲裁方法
KR102030858B1 (ko) 디지털 서명 권한자 의존형 플랫폼 기밀 생성 기법
TW201500960A (zh) 在配有適用統一可延伸韌體介面(uefi)之韌體之計算裝置中的安全性變數變化檢測技術
JP7406013B2 (ja) 構成設定の安全な署名
US8656190B2 (en) One time settable tamper resistant software repository
CN116070217A (zh) 一种用于芯片模块的安全启动***及其启动方法
CN116089967B (zh) 数据防回滚方法和电子设备
WO2016024967A1 (en) Secure non-volatile random access memory
JP2024507531A (ja) デジタルデバイスのためのトラステッドコンピューティング
CN111357003A (zh) 预操作***环境中的数据保护
US12019752B2 (en) Security dominion of computing device
US20240152620A1 (en) Owner revocation emulation container
JP2023136601A (ja) ソフトウェア管理装置、ソフトウェア管理方法、及びプログラム
WO2009127905A1 (en) Apparatus and method for enabling applications on a security processor

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