对数据进行加密、完整性和防重发保护的方法、系统和装置转让专利

申请号 : CN200810128827.5

文献号 : CN101388053B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : D·内米罗夫H·C·赫伯特

申请人 : 英特尔公司

摘要 :

根据一些实施例,公开了用于提供以容错方式对数据进行加密、完整性和防重发保护的方法。数据blob和防重发表blob被复制到非易失性存储器的临时储存区中。在原子操作中,在数据blob和防重发表blob被复制到临时储存区后,对状态指示符进行置位且使单调计数器递增。如果在所述状态指示符被置位时出现错误,则从所述临时储存区中恢复所述数据blob和防重发表blob。

权利要求 :

1.一种用于保护数据的方法,包括:

生成数据blob,其中所述数据blob包括首部和来自硬件单调计数器的单调计数器值;

利用所述数据blob的首部和单调计数器值来更新防重发表blob;

将所述防重发表blob与所述单调计数器值相关联;

将所述数据blob和所述防重发表blob复制到非易失性存储器的临时储存区;并且在将所述数据blob和所述防重发表blob复制到所述临时储存区后,在原子操作中,对状态指示符进行置位且使所述单调计数器递增。

2.如权利要求1所述的方法,还包括将所述数据blob和所述防重发表blob从所述临时储存区复制到所述非易失性存储器的主储存区。

3.如权利要求2所述的方法,还包括在将所述数据blob和所述防重发表blob复制到所述主储存区后,对所述状态指示符进行清零。

4.如权利要求1所述的方法,还包括在重启后确定所述状态指示符被置位,并且随后将所述数据blob和所述防重发表blob从所述临时储存区复制到所述非易失性存储器的主储存区。

5.如权利要求1所述的方法,还包括在重启后确定所述状态指示符未被置位,并且随后不采取与所述数据blob和所述防重发表相关的进一步动作。

6.如权利要求1所述的方法,还包括生成所述数据blob,其中所述数据blob包括首部、单调计数器值、随机值、明文密钥和完整性校验值,并且利用所述数据blob的首部和单调计数器值来更新所述防重发表blob。

7.如权利要求6所述的方法,其中,使用根据多个硬件熔丝导出的机密性密钥,对所述数据blob的单调计数器值、随机值、明文密钥和完整性校验值进行加密。

8.如权利要求1所述的方法,其中所述状态指示符和所述单调计数器在单一硬件寄存器中。

9.如权利要求1所述的方法,其中对所述状态指示符进行置位和使所述单调计数器递增包括执行单一微处理器指令。

10.如权利要求1所述的方法,其中所述非易失性存储器是闪存存储器和硬盘驱动器中之一。

11.一种用于保护数据的系统,包括:

处理器,用于运行blob服务;

耦合到所述处理器的芯片组,所述芯片组包括单调计数器;以及

耦合到所述处理器的非易失性存储器设备,其中所述blob服务以容错方式生成要写入到所述非易失性存储器设备的数据blob和防重发表blob,其中所述数据blob包括首部和所述单调计数器的单调计数器值,并且其中所述防重发表blob包括所述数据blob的首部和单调计数器值,其中所述单调计数器是寄存器的一部分,并且所述寄存器还包括状态指示符,并且其中在原子操作中,对所述状态指示符进行置位且使所述单调计数器递增,并且所述状态指示符用于指示所述数据blob和所述防重发表blob是否已经被成功地写入到所述非易失性存储器设备的临时储存区中。

12.如权利要求11所述的系统,其中,使用机密性、完整性和防重发保护来对所述数据blob进行保护。

13.如权利要求12所述的系统,其中使用完整性和防重发保护来对所述防重发表blob进行保护。

14.如权利要求11所述的系统,其中所述芯片组还包括完整性引擎、加密引擎、基于硅的密钥和随机数发生器。

15.一种用于保护数据的装置,包括:

生成模块,其生成数据blob,其中所述数据blob包括首部和来自硬件单调计数器的单调计数器值;

更新模块,其利用所述数据blob的首部和单调计数器值来更新防重发表blob;

关联模块,其将所述防重发表blob与所述单调计数器值相关联;

复制模块,其将所述数据blob和所述防重发表blob复制到非易失性存储器的临时储存区;并且置位和递增模块,其在将所述数据blob和所述防重发表blob复制到所述临时储存区后,在原子操作中,对状态指示符进行置位且使单调计数器递增。

16.如权利要求15所述的装置,还包括将所述数据blob和所述防重发表blob从所述临时储存区复制到所述非易失性存储器的主储存区的模块。

17.如权利要求16所述的装置,还包括在将所述数据blob和所述防重发表blob复制到所述主储存区后,对所述状态指示符进行清零的模块。

18.如权利要求17所述的装置,还包括在重启后确定所述状态指示符被置位,并且随后将所述数据blob和所述防重发表blob从所述临时储存区复制到所述非易失性存储器的主储存区的模块。

19.如权利要求15所述的装置,还包括在重启后确定所述状态指示符未被置位,并且随后不采取与所述数据blob和所述防重发表相关的进一步动作的模块。

20.如权利要求15所述的装置,还包括生成和更新模块,所述生成和更新模块生成所述数据blob,其中所述数据blob包括首部、单调计数器值、随机值、明文密钥和完整性校验值,并且利用所述数据blob的首部和单调计数器值来更新所述防重发表blob。

21.如权利要求20所述的装置,其中使用从多个硬件熔丝导出的机密性密钥,对所述数据blob的单调计数器值、随机值、明文密钥和完整性校验值进行加密。

22.如权利要求15所述的装置,其中所述状态指示符和所述单调计数器在单一硬件寄存器中。

23.如权利要求15所述的装置,其中对所述状态指示符进行置位和使所述单调计数器递增包括执行单一微处理器指令。

24.一种用于保护数据的方法,包括:

生成数据blob,其中所述数据blob包括首部和来自硬件单调计数器的单调计数器值;

利用所述数据blob的首部和单调计数器值来更新防重发表blob,并且将所述防重发表blob与所述单调计数器值相关联;并且当所述数据blob和所述防重发表blob被存储在非易失性存储器的临时储存区中时,使所述硬件单调计数器递增并对状态指示符进行置位,其中,在原子操作中使所述硬件单调计数器递增和对所述状态指示符进行置位。

25.如权利要求24所述的方法,还包括当所述数据blob和所述防重发表blob被存储在非易失性存储器的主储存区中时,对所述状态指示符进行清零。

26.如权利要求24所述的方法,还包括在重启后,确定所述状态指示符是否被置位,如果所述状态指示符被置位,则将所述数据blob和所述防重发表blob从所述非易失性存储器的临时储存区复制到所述非易失性存储器的主储存区。

说明书 :

对数据进行加密、完整性和防重发保护的方法、系统和装置

技术领域

[0001] 本发明涉及对数据进行加密、完整性和防重发保护的方法、系统和装置。

背景技术

[0002] 在计算机处理中,数据安全性存在问题。可以使用机密性保护、完整性保护和防重发保护中的一种或多种来对数据进行保护。可以通过数据加密来提供机密性保护,使得未授权用户不能读取该经过加密的数据。完整性保护可用来检测该数据是否已经被修改或以其它方式窜改。防重发保护可用来防止将数据消息多次发送到接收方。

发明内容

[0003] 数据blob的创建和相关防重发表blob的更新是涉及多个向非易失性存储器的写入的非原子操作,如果该操作是非容错和非容功率丢失的,则可以出现数据毁坏的技术问题。
[0004] 本发明的一个目的在于能够解决上述技术问题的方法、系统和装置。
[0005] 根据本发明的一个方面,公开了一种用于保护数据的方法,包括:生成数据blob,其中所述数据blob包括首部和来自硬件单调计数器的单调计数器值;利用所述数据blob的首部和单调计数器值来更新防重发表blob;将所述防重发表blob与所述单调计数器值相关联;将所述数据blob和所述防重发表blob复制到非易失性存储器的临时储存区;并且在将所述数据blob和所述防重发表blob复制到所述临时储存区后,在原子操作中,对状态指示符进行置位且使所述单调计数器递增。
[0006] 根据本发明的另一个方面,公开了一种用于保护数据的系统,包括:处理器,用于运行blob服务;耦合到所述处理器的芯片组,所述芯片组包括单调计数器;以及耦合到所述处理器的非易失性存储器设备,其中所述blob服务以容错方式生成要写入到所述非易失性存储器设备的数据blob和防重发表blob,其中所述数据blob包括首部和所述单调计数器的单调计数器值,并且其中所述防重发表blob包括所述数据blob的首部和单调计数器值,其中所述单调计数器是寄存器的一部分,并且所述寄存器还包括状态指示符,并且其中在原子操作中,对所述状态指示符进行置位且使所述单调计数器递增,并且所述状态指示符用于指示所述数据blob和所述防重发表blob是否已经被成功地写入到所述非易失性存储器设备的临时储存区中。
[0007] 根据本发明的又一个方面,公开了一种用于保护数据的装置,包括:生成模块,其生成数据blob,其中所述数据blob包括首部和来自硬件单调计数器的单调计数器值;更新模块,其利用所述数据blob的首部和单调计数器值来更新防重发表blob;关联模块,其将所述防重发表blob与所述单调计数器值相关联;复制模块,其将所述数据blob和所述防重发表blob复制到非易失性存储器的临时储存区;并且置位和递增模块,其在将所述数据blob和所述防重发表blob复制到所述临时储存区后,在原子操作中,对状态指示符进行置位且使单调计数器递增。
[0008] 根据本发明的再一个方面,公开了一种用于保护数据的方法,包括:生成数据blob,其中所述数据blob包括首部和来自硬件单调计数器的单调计数器值;利用所述数据blob的首部和单调计数器值来更新防重发表blob,并且将所述防重发表blob与所述单调计数器值相关联;并且当所述数据blob和所述防重发表blob被存储在非易失性存储器的临时储存区中时,使所述硬件单调计数器递增并对状态指示符进行置位,其中,在原子操作中使所述硬件单调计数器递增和对所述状态指示符进行置位。
[0009] 上述的方法、系统和装置能够对非易失性存储器中的数据进行加密、完整性和防重发保护。

附图说明

[0010] 根据以下结合下述附图进行的详细描述,可以获得对本发明的实施例的更好的理解。在附图中:
[0011] 图1是根据一些实施例的系统的方框图;
[0012] 图2是根据一些实施例,例示用于对存储在非易失性存储器中的数据进行机密性、完整性和防重发保护的方法的流程图;
[0013] 图3是根据一些实施例,例示数据二进制大对象(blob)的创建的方框图;
[0014] 图4是根据一些实施例,例示防重发表blob的创建的方框图;
[0015] 图5是例示以容错和容功率丢失的方式在非易失性存储器中创建数据blob和防重发表blob的方框图;
[0016] 图6是根据一些实施例,例示以容错和容功率丢失的方式将数据blob和防重发表blob存储在非易失性存储器中的流程图。

具体实施方式

[0017] 在下述描述中,阐述了许多具体的细节。然而,要理解的是,本发明的实施例可以在不需要这些具体细节的情况下实践。在其它场合,对公知的电路、结构和技术不进行详细示出,使得不会对理解该描述产生混淆。
[0018] “一个实施例”、“实施例”、“实例实施例”和“各个实施例”等的引用表明,所描述的本发明的实施例可以包括特定的特征、结构或特性,但是不是每个实施例都必须包括该特定的特征、结构或特性。此外,一些实施例可以包括部分或所有针对其它实施例而描述的特征,或者不包括针对其它实施例而描述的特征。
[0019] 在下述描述和权利要求中,可以使用术语“耦合”和“连接”以及其衍生物。应该理解的是,这些术语并不意在彼此互为同义词。相反,在特定实施例中,“连接”用来指示两个或多个元件彼此直接物理或电气接触。“耦合”用来指示两个或多个元件彼此协作或交互,但是它们可能直接物理或电气接触,或者可能不直接物理或电气接触。
[0020] 如同权利要求中所使用的,除了另外指定,使用普通形容词“第一”、“第二”、“第三”等来描述公共元件,这仅仅指示相似的元件在不同的场合被提及,而不是意在暗示所描述的元件必须按照给定的顺序,时间上的或者空间上的,按照排序或按照其它方式。
[0021] 本发明的各个实施例可以以硬件、固件或软件中的一个或任何组合的方式来实现。一些实施例还可以被实现为在机器可读介质中或其上包含的指令,其可被一个或多个处理器读取并执行来实现这里所描述的操作的性能。机器可读介质可以包括用于存储、发送和/或接收其形式为机器(例如,计算机)可读的信息。例如,机器可读介质可以包括存储介质,比如是但不限于,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储媒介、光存储媒介、快闪存储器等。机器可读介质还可以包括传输信号,其已经被调制来对指令进行编码,所述传输信号比如是但不限于,电磁、光或声载波信号。
[0022] “二进制大对象”也被公知为“blob”,其是作为信号实体存储在易失性或非易失性媒介中的二进制数据的集合。blob可以是任何数据对象,其包括但不限于,可执行文件、图像等。可以利用机密性保护、完整性保护和/或防重发保护来确保blob的安全。
[0023] 图1是根据一些实施例的系统100的方框图。该系统可以包括一个或多个处理器102,其可以是单核或多核处理器。处理器102与芯片组110耦合。芯片组110可以包括例如输入/输出控制器集线器(ICH)和/或存储器控制器集线器(MCH)。在一些实施例中,芯片组和处理器可以集成在单一裸片上,或包含在单一封装中的多个裸片上。在其他实施例中,芯片组和处理器可以处在不同的封装中。
[0024] 处理器102还与易失性存储器设备108以及非易失性存储器设备120耦合,所述易失性存储器设备108比如是动态随机存取存储器(DRAM)或其它易失性存储器,所述非易失性存储器设备120比如是但不限于,闪存存储器设备或硬盘驱动器(HDD)。非易失性存储器设备120可以用来存储一个或多个数据blob 122和与该一个或多个数据blob 122相关联的防重发表124。在一些实施例中,防重发表124自身可以是受保护的blob,其可以包括每个数据blob 122的单调(monotonic)计数器值和首部。
[0025] 所述系统还包括输入/输出(I/O)设备130以及有线或无线网络接口132。无线网络接口可以包括天线134。
[0026] Blob服务应用104用来创建被机密性、完整性和/或防重发保护的blob。Blob服务104可以是基于固件或软件的应用,其可以被处理器102执行。
[0027] 芯片组110可以包括基于硅的对称密钥114。该密钥可以在硅制造工艺期间通过随机地烧断裸片中的硬件熔丝来创建。所使用的熔丝的数目决定了安全的级别。用来生成基于硅的密钥的熔丝越多,则该密钥的安全级别越强。在一些实施例中,可以使用128根熔丝。取决于如何导出后续的密钥,可以根据所述熔丝来生成大小可变的密钥。例如,SHA-256(安全散列算法)将生成可以在AES-256(高级加密标准)机密性操作中使用的256-位密钥。
[0028] 芯片组110还可以包括完整性/HMAC(密钥散列的消息认证码)引擎和加密引擎106。该完整性和加密引擎106可以基于固件、硬件或软件。该完整性和加密引擎可以用来为blob提供机密性和完整性保护。
[0029] 芯片组110还可以包括单调计数器112和随机数发生器116。单调计数器可以在所有系统功率状态下保持功率,并被用来将数据blob 122与防重发表124中的一项相关联。随机数发生器116可以生成附加在该单调计数器值上的随机数。当单调计数器112被复位时,生成随机数,并且随后将随机数附加到该单调计数器值上。随机数允许blob服务104检测何时单调计数器112已经被复位。
[0030] 图2是例示根据一些实施例,用于对数据blob进行机密性、完整性和防重发保护的方法的流程图。
[0031] 在系统上电后,安全固件可以读取基于硅的对称密钥,该对称密钥在一些实施例中可以是硬件熔丝。如块202中所示,可以根据基于硅的对称密钥来生成根对称密钥。在一些实施例中,安全固件可以通过将通行短语和基于硅的对称密钥用作算法的输入来导出根对称密钥,其中所述算法比如是但不限于,SHA-256算法。该算法的输出可以是根对称密钥。
[0032] 如块204中所示,可以根据根对称密钥导出其他密钥,比如机密性密钥和/或完整性密钥。在一些实施例中,该机密性密钥可以用于AES-CTR(高级加密标准-计数器)模式的输入,以对要存储在blob中的数据进行加密。在一些实施例中,完整性密钥可以用作HMAC的输入来生成完整性检验值(ICV)。
[0033] 如块206中所示,可以发出生成数据blob的请求。在一些实施例中,可以经由公共API(应用编程接口)来发出请求。该请求可以包括在数据blob中包括的明文以及要求的保护类型(例如,完整性、机密性和/或防重发保护)。所述请求还可以指定要使用的特定完整性和/或机密性算法。
[0034] 在接收到生成数据blob的请求后,blob服务可以创建明文形式的blob,如块208中所示。图3是例示创建明文密钥(cleartext secret)310的数据blob的方框图。在创建明文数据blob 302时,blob服务创建首部304来描述该blob。首部304可以包含比如blob的保护类型、blob大小的信息以及其他非秘密信息。因为首部304不包含任何秘密,因此它可以保持为明文,并且不进行加密。
[0035] Blob服务还可以把单调计数器值308和相关的随机数306附加到首部304,并且还把明文密钥310附加到首部。
[0036] 再参见图2,如块210中所示,完整性检验值被附加到明文blob。如图3中所示,使用完整性校验算法312来创建完整性校验值(ICV)314。完整性校验算法的输入包括明文首部304、单调计数器值308、相关联的随机数306和明文密钥310。完整性校验值314被附加到明文数据blob 302。
[0037] 如图2中的块212所示,在完整性校验值已经被附加到明文数据blob后,使用机密性密钥来对单调计数器值、相关联的随机数、明文密钥和完整性校验值进行加密。图3例示了在已经使用导出的机密性密钥对单调计数器值308、相关联的随机数306、明文密钥310和完整性校验值314进行加密后创建的加密数据blob 320。该加密数据blob包括blob首部304和密文318。由于blob首部304必须在解密发生之前读出,所以它不被加密,并且它不包含秘密。加密数据blob 320可以是在非易失性存储器120中存储的多个blob 322中之一。
[0038] 再次参见图2,只要数据blob被创建或修改,就将利用blob首部和blob单调计数器值来更新防重发表,如块214中所示。在一些实施例中,可以在对明文数据blob的单调计数器值进行加密之前,更新防重发表。
[0039] 图4是例示防重发表的更新的方框图。防重发表402包含与每个blob302相关联的单调计数器值308和首部304的表格。防重发表402可以存储在非易失性存储器中,作为受完整性和防重发保护的blob 412。因此,当blob被创建或修改时,blob的首部304和单调计数器值308被添加到防重发表402中。完整性校验值408和来自硬件单调计数器112的单调计数器值410被附加到根防重发表blob 406。当blob被修改时,blob中的单调计数器值308和表中的单调计数器值408都递增。因此,防重发表412可以既受完整性保护又受防重发保护。
[0040] 数据blob的创建和相关防重发表blob 412的更新是涉及多个向非易失性存储器的写入的非原子操作。如果该操作是非容错和非容功率丢失的,则可以出现数据毁坏。例如,如果大部分最近修改的数据blob变得与防重发表失去同步,则可能在下一blob访问时错误地检测到重发攻击,从而导致blob无效和数据丢失。
[0041] 图5是例示以容错和容功率丢失的方式创建非易失性存储器中的数据blob和防重发表blob的方框图。当blob服务创建新的数据blob 502时,首先在易失性存储器108,比如DRAM,中创建该数据blob 502。随后,将该数据blob复制550到非易失性存储器120的临时储存区542中,以创建数据blob 512的临时副本。同样,在更新防重发表504时,在易失性存储器108中创建552防重发表数据blob 506。随后,将该防重发表blob 506复制554到非易失性存储器120中的临时储存区542中,以创建防重发表blob 516的临时副本。
[0042] 在已经创建数据blob并将其复制到临时储存区以及已经更新防重发表blob并将其复制到临时储存区后,单调计数器值112递增且对单调计数器变化状态指示符518(例如,状态位CHG)进行置位556。在一些实施例中,随着原子操作中的单调计数器520的更新,自动发生状态指示符518的更新。原子操作可以是不会被中断的操作,比如利用单一微处理器指令执行的操作。在执行时,完全执行或根本不执行原子操作。
[0043] 在一些实施例中,可以在单一硬件寄存器530中实现状态指示符518和单调计数器520。在一些实施例中,可以通过执行单一微处理器指令来对状态指示符518进行置位和将单调计数器520递增。
[0044] 当状态指示符518被置位时,这指示新近创建的数据blob 512和防重发表blob516的有效副本存在于非易失性存储器120的临时区542中。接着,将防重发表blob 516从非易失性存储器120中的临时储存区542复制558到主储存区540中。同样,将数据blob
512从非易失性存储器120的临时储存区542复制560到主储存区540中。在数据blob
522和防重发表blob526处于非易失性存储器的主储存区540中后,对状态指示符进行清零
562,以指示临时储存区542中的数据blob和防重发表blob不再有效,以及主储存区540中的数据blob和防重发表blob有效。
[0045] 图6是例示根据一些实施例,以容错和容功率丢失的方式将数据blob和防重发表blob存储在非易失性存储器中的流程图。如上所述,首先,创建或修改数据blob且更新防重发表blob 601。如果在数据blob和防重发表blob创建期间发生功率丢失或错误602,则所有数据仅存在于易失性存储器中且将丢失。没有数据已经写入到非易失性存储器中,且没有对CHG状态位进行置位612。在重启后,则blob服务将不采取行动,因为CHG状态位未被置位。
[0046] 数据blob和防重发表随后被复制到临时储存区603。如果在将数据blob或防重发表复制到临时储存区期间发生功率丢失或错误以及将数据blob和防重发表两者复制到临时储存区不成功604,则将会忽略临时储存区中的内容且将不对CHG状态位进行置位614。在重启后,则blob服务将不采取行动,因为CHG状态位未被置位。
[0047] 在数据blob和防重发表被复制到临时储存区后,在原子操作中将单调计数器递增,并且对CHG状态进行置位605。如果在单调计数器递增和对CHG状态位进行置位期间,发生功率丢失或错误606,则在下一重启后,将会对CHG状态位进行置位616,并且blob服务将识别出616临时储存区包含有效blob和防重发表。因此,在从功率丢失或错误恢复后,blob服务能够从块607开始继续执行,从而从临时储存区恢复数据blob和防重发表blob。
[0048] 当已经将单调计数器递增且已经对CHG状态位进行置位时,数据blob将会从临时储存区复制到非易失性存储器中的数据blob目的地(主储存区)607。如果在将数据blob从临时储存区复制到主储存区期间发生功率丢失或错误608,则在下一重启时,对CHG状态位进行置位618,并且blob服务将识别出618临时储存区包含有效blob和防重发表。因此,在从功率丢失或错误恢复后,blob服务能够从块607开始继续执行。
[0049] 类似地,防重发表blob将从临时储存区复制到非易失性存储器的主储存区中609。如果在将防重发表blob从临时储存区复制到主储存区期间发生功率丢失或错误610,则在下一重启时,对CHG状态位进行置位620,并且blob服务将识别出620临时储存区包含有效blob和防重发表。因此,在从功率丢失或错误恢复后,blob服务能够从块607开始继续执行,重复块607-609。
[0050] 在防重发表和数据blob两者都已经成功地复制到主储存区后,将会对CHG状态位进行清零611。Blob创建请求已经以容错方式完成。
[0051] 因此,在各种实施例中公开了用于对非易失性存储器中的数据进行加密、完整性和防重发保护的容错方法。在上述描述中,阐述了许多具体细节。然而,要理解的是,可以在不需要这些具体细节的情况下实践实施例。在其它场合中,对公知的电路、结构和技术未进行详细示出,使得不会对理解该描述产生混淆。已经参照其具体的典型实施例描述了实施例。然而,对受益于该公开的人员而言显而易见的是,可以在不背离这里描述的实施例的更广的精神和范围的情况下,对这些实施例进行各种修改和变化。相应地,说明书和附图被认为是例示性的,而不是限制性的。