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

文档序号:6465433阅读:134来源:国知局
专利名称:对数据进行加密、完整性和防重发保护的方法、系统和装置的制作方法
对数据进行加密、完整性和防重发保护的方法、系统和装置
背景技术
在计算机处理中,数据安全性存在问题。可以使用机密性保护、完整 性保护和防重发保护中的一种或多种来对数据进行保护。可以通过数据加 密来提供机密性保护,使得未授权用户不能读取该经过加密的数据。完整 性保护可用来检测该数据是否已经被修改或以其它方式窜改。防重发保护 可用来防止将数据消息多次发送到接收方。


根据以下结合下述附图进行的详细描述,可以获得对本发明的实施例 的更好的理解。在附图中
图l是根据一些实施例的系统的方框图2是根据一些实施例,例示用于对存储在非易失性存储器中的数据 进行机密性、完整性和防重发保护的方法的流程图3是根据一些实施例,例示数据二进制大对象(blob)的创建的方框
图4是根据一些实施例,例示防重发表blob的创建的方框图5是例示以容错和容功率丢失的方式在非易失性存储器中创建数据
blob和防重发表blob的方框图6是根据一些实施例,例示以容错和容功率丢失的方式将数据blob 和防重发表blob存储在非易失性存储器中的流程图。
具体实施例方式
在下述描述中,阐述了许多具体的细节。然而,要理解的是,本发明 的实施例可以在不需要这些具体细节的情况下实践。在其它场合,对公知
的电路、结构和技术不进行详细示出,使得不会对理解该描述产生混淆。
"一个实施例"、"实施例"、"实例实施例"和"各个实施例"等的引 用表明,所描述的本发明的实施例可以包括特定的特征、结构或特性,但 是不是每个实施例都必须包括该特定的特征、结构或特性。此外, 一些实 施例可以包括部分或所有针对其它实施例而描述的特征,或者不包括针对 其它实施例而描述的特征。
在下述描述和权利要求中,可以使用术语"耦合"和"连接"以及其 衍生物。应该理解的是,这些术语并不意在彼此互为同义词。相反,在特 定实施例中,"连接"用来指示两个或多个元件彼此直接物理或电气接触。
"耦合"用来指示两个或多个元件彼此协作或交互,但是它们可能直接物 理或电气接触,或者可能不直接物理或电气接触。
如同权利要求中所使用的,除了另外指定,使用普通形容词"第一"、 "第二"、"第三"等来描述公共元件,这仅仅指示相似的元件在不同的场 合被提及,而不是意在暗示所描述的元件必须按照给定的顺序,时间上的 或者空间上的,按照排序或按照其它方式。
本发明的各个实施例可以以硬件、固件或软件中的一个或任何组合的 方式来实现。 一些实施例还可以被实现为在机器可读介质中或其上包含的 指令,其可被一个或多个处理器读取并执行来实现这里所描述的操作的性 能。机器可读介质可以包括用于存储、发送和/或接收其形式为机器(例如, 计算机)可读的信息。例如,机器可读介质可以包括存储介质,比如是但
不限于,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储媒介、 光存储媒介、快闪存储器等。机器可读介质还可以包括传输信号,其已经 被调制来对指令进行编码,所述传输信号比如是但不限于,电磁、光或声 载波信号。
"二进制大对象"也被公知为"blob",其是作为信号实体存储在易失 性或非易失性媒介中的二进制数据的集合。blob可以是任何数据对象,其 包括但不限于,可执行文件、图像等。可以利用机密性保护、完整性保护 和/或防重发保护来确保blob的安全。
图1是根据一些实施例的系统100的方框图。该系统可以包括一个或 多个处理器102,其可以是单核或多核处理器。处理器102与芯片组110耦
合。芯片组110可以包括例如输入/输出控制器集线器(ICH)和/或存储器 控制器集线器(MCH)。在一些实施例中,芯片组和处理器可以集成在单一 裸片上,或包含在单一封装中的多个裸片上。在其他实施例中,芯片组和 处理器可以处在不同的封装中。
处理器102还与易失性存储器设备108以及非易失性存储器设备120 耦合,所述易失性存储器设备108比如是动态随机存取存储器(DRAM) 或其它易失性存储器,所述非易失性存储器设备120比如是但不限于,闪 存存储器设备或硬盘驱动器(HDD)。非易失性存储器设备120可以用来存 储一个或多个数据blob 122和与该一个或多个数据blob 122相关联的防重 发表124。在一些实施例中,防重发表124自身可以是受保护的blob,其可 以包括每个数据blob 122的单调(monotonic)计数器值和首部。
所述系统还包括输入/输出(I/O)设备130以及有线或无线网络接口 132。无线网络接口可以包括天线134。
Blob服务应用104用来创建被机密性、完整性和/或防重发保护的blob。 Blob服务104可以是基于固件或软件的应用,其可以被处理器102执行。
芯片组110可以包括基于硅的对称密钥114。该密钥可以在硅制造工艺 期间通过随机地烧断裸片中的硬件熔丝来创建。所使用的熔丝的数目决定 了安全的级别。用来生成基于硅的密钥的熔丝越多,则该密钥的安全级别 越强。在一些实施例中,可以使用128根熔丝。取决于如何导出后续的密 钥,可以根据所述熔丝来生成大小可变的密钥。例如,SHA-256 (安全散列 算法)将生成可以在AES-256 (高级加密标准)机密性操作中使用的256-位密钥。
芯片组110还可以包括完整性/HMAC (密钥散列的消息认证码)引擎 和加密引擎106。该完整性和加密引擎106可以基于固件、硬件或软件。该 完整性和加密引擎可以用来为blob提供机密性和完整性保护。
芯片组110还可以包括单调计数器112和随机数发生器116。单调计数 器可以在所有系统功率状态下保持功率,并被用来将数据blob 122与防重 发表124中的一项相关联。随机数发生器116可以生成附加在该单调计数 器值上的随机数。当单调计数器112被复位时,生成随机数,并且随后将 随机数附加到该单调计数器值上。随机数允许blob服务104检测何时单调
计数器112已经被复位。
图2是例示根据一些实施例,用于对数据blob进行机密性、完整性和 防重发保护的方法的流程图。
在系统上电后,安全固件可以读取基于硅的对称密钥,该对称密钥在 一些实施例中可以是硬件熔丝。如块202中所示,可以根据基于硅的对称 密钥来生成根对称密钥。在一些实施例中,安全固件可以通过将通行短语 和基于硅的对称密钥用作算法的输入来导出根对称密钥,其中所述算法比 如是但不限于,SHA-256算法。该算法的输出可以是根对称密钥。
如块204中所示,可以根据根对称密钥导出其他密钥,比如机密性密 钥和/或完整性密钥。在一些实施例中,该机密性密钥可以用于AES-CTR(高 级加密标准-计数器)模式的输入,以对要存储在blob中的数据进行加密。 在一些实施例中,完整性密钥可以用作HMAC的输入来生成完整性检验值 (ICV)。
如块206中所示,可以发出生成数据blob的请求。在一些实施例中, 可以经由公共API (应用编程接口)来发出请求。该请求可以包括在数据 blob中包括的明文以及要求的保护类型(例如,完整性、机密性和/或防重 发保护)。所述请求还可以指定要使用的特定完整性和域机密性算法。
在接收到生成数据blob的请求后,blob服务可以创建明文形式的blob, 如块208中所示。图3是例示创建明文密钥(cleartext secret) 310的数据 blob的方框图。在创建明文数据blob 302时,blob服务创建首部304来描 述该blob。首部304可以包含比如blob的保护类型、bbb大小的信息以及 其他非秘密信息。因为首部304不包含任何秘密,因此它可以保持为明文, 并且不进行加密。
Blob服务还可以把单调计数器值308和相关的随机数306附加到首部 304,并且还把明文密钥310附加到首部。
再参见图2,如块210中所示,完整性检验值被附加到明文blob。如图 3中所示,使用完整性校验算法312来创建完整性校验值(ICV) 314。完 整性校验算法的输入包括明文首部304、单调计数器值308、相关联的随机 数306和明文密钥310。完整性校验值314被附加到明文数据blob 302。
如图2中的块212所示,在完整性校验值已经被附加到明文数据blob
后,使用机密性密钥来对单调计数器值、相关联的随机数、明文密钥和完
整性校验值进行加密。图3例示了在已经使用导出的机密性密钥对单调计 数器值308、相关联的随机数306、明文密钥310和完整性校验值314进行 加密后创建的加密数据blob 320。该加密数据blob包括blob首部304和密 文318。由于blob首部304必须在解密发生之前读出,所以它不被加密, 并且它不包含秘密。加密数据blob 320可以是在非易失性存储器120中存 储的多个blob 322中之一。
再次参见图2,只要数据blob被创建或修改,就将利用blob首部和blob 单调计数器值来更新防重发表,如块214中所示。在一些实施例中,可以 在对明文数据blob的单调计数器值进行加密之前,更新防重发表。
图4是例示防重发表的更新的方框图。防重发表402包含与每个blob 302相关联的单调计数器值308和首部304的表格。防重发表402可以存储 在非易失性存储器中,作为受完整性和防重发保护的blob 412。因此,当 blob被创建或修改时,blob的首部304和单调计数器值308被添加到防重 发表402中。完整性校验值408和来自硬件单调计数器112的单调计数器 值410被附加到根防重发表blob 406。当blob被修改时,blob中的单调计 数器值308和表中的单调计数器值408都递增。因此,防重发表412可以
既受完整性保护又受防重发保护。
数据blob的创建和相关防重发表blob 412的更新是涉及多个向非易失 性存储器的写入的非原子操作。如果该操作是非容错和非容功率丢失的, 则可以出现数据毁坏。例如,如果大部分最近修改的数据blob变得与防重 发表失去同步,则可能在下一blob访问时错误地检测到重发攻击,从而导 致blob无效和数据丢失。
图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
的临时副本。
在已经创建数据blob并将其复制到临时储存区以及已经更新防重发表
blob并将其复制到临时储存区后,单调计数器值112递增且对单调计数器 变化状态指示符518 (例如,状态位CHG)进行置位556。在一些实施例中, 随着原子操作中的单调计数器520的更新,自动发生状态指示符518的更 新。原子操作可以是不会被中断的操作,比如利用单一微处理器指令执行 的操作。在执行时,完全执行或根本不执行原子操作。
在一些实施例中,可以在单一硬件寄存器530中实现状态指示符518 和单调计数器520。在一些实施例中,可以通过执行单一微处理器指令来对 状态指示符518进行置位和将单调计数器520递增。
当状态指示符518被置位时,这指示新近创建的数据blob 512和防重 发表blob 516的有效副本存在于非易失性存储器120的临时区542中。接 着,将防重发表blob 516从非易失性存储器120中的临时储存区542复制 558到主储存区540中。同样,将数据blob 512从非易失性存储器120的临 时储存区542复制560到主储存区540中。在数据blob 522和防重发表blob 526处于非易失性存储器的主储存区540中后,对状态指示符进行清零562, 以指示临时储存区542中的数据blob和防重发表blob不再有效,以及主储 存区540中的数据blob和防重发表blob有效。
图6是例示根据一些实施例,以容错和容功率丢失的方式将数据blob 和防重发表blob存储在非易失性存储器中的流程图。如上所述,首先,创 建或修改数据blob且更新防重发表blob 601 。如果在数据blob和防重发表 blob创建期间发生功率丢失或错误602,则所有数据仅存在于易失性存储器 中且将丢失。没有数据已经写入到非易失性存储器中,且没有对CHG状态 位进行置位612。在重启后,则blob服务将不采取行动,因为CHG状态位 未被置位。
数据blob和防重发表随后被复制到临时储存区603。如果在将数据blob 或防重发表复制到临时储存区期间发生功率丢失或错误以及将数据blob和 防重发表两者复制到临时储存区不成功604,则将会忽略临时储存区中的内 容且将不对CHG状态位进行置位614。在重启后,则blob服务将不采取行 动,因为CHG状态位未被置位。
在数据blob和防重发表被复制到临时储存区后,在原子操作中将单调
计数器递增,并且对CHG状态进行置位605。如果在单调计数器递增和对 CHG状态位进行置位期间,发生功率丢失或错误606,则在下一重启后, 将会对CHG状态位进行置位616,并且blob服务将识别出616临时储存区 包含有效blob和防重发表。因此,在从功率丢失或错误恢复后,blob服务 能够从块607开始继续执行,从而从临时储存区恢复数据blob和防重发表 blob。
当已经将单调计数器递增且已经对CHG状态位进行置位时,数据blob 将会从临时储存区复制到非易失性存储器中的数据blob目的地(主储存区) 607。如果在将数据blob从临时储存区复制到主储存区期间发生功率丢失或 错误608,则在下一重启时,对CHG状态位进行置位618,并且blob服务 将识别出618临时储存区包含有效blob和防重发表。因此,在从功率丢失 或错误恢复后,blob服务能够从块607开始继续执行。
类似地,防重发表blob将从临时储存区复制到非易失性存储器的主储 存区中609。如果在将防重发表blob从临时储存区复制到主储存区期间发 生功率丢失或错误610,则在下一重启时,对CHG状态位进行置位620, 并且blob服务将识别出620临时储存区包含有效blob和防重发表。因此, 在从功率丢失或错误恢复后,blob服务能够从块607开始继续执行,重复 块607-609。
在防重发表和数据blob两者都已经成功地复制到主储存区后,将会对 CHG状态位进行清零611。 Blob创建请求已经以容错方式完成。
因此,在各种实施例中公幵了用于对非易失性存储器中的数据进行加 密、完整性和防重发保护的容错方法。在上述描述中,阐述了许多具体细 节。然而,要理解的是,可以在不需要这些具体细节的情况下实践实施例。 在其它场合中,对公知的电路、结构和技术未进行详细示出,使得不会对 理解该描述产生混淆。已经参照其具体的典型实施例描述了实施例。然而, 对受益于该公开的人员而言显而易见的是,可以在不背离这里描述的实施 例的更广的精神和范围的情况下,对这些实施例进行各种修改和变化。相 应地,说明书和附图被认为是例示性的,而不是限制性的。
权利要求
1、一种方法,包括将数据blob和防重发表blob复制到非易失性存储器的临时储存区;并且在将所述数据blob和所述防重发表blob复制到所述临时储存区后,在原子操作中,对状态指示符进行置位且使单调计数器递增。
2、 如权利要求1所述的方法,还包括将所述数据blob和所述防重发表 blob从所述临时储存区复制到所述非易失性存储器的主储存区。
3、 如权利要求2所述的方法,还包括在将所述数据blob和所述防重发 表blob复制到所述主储存区后,对所述状态指示符进行清零。
4、 如权利要求l所述的方法,还包括在重启后确定所述状态指示符被 置位,并且随后将所述数据blob和所述防重发表blob从所述临时储存区复 制到所述非易失性存储器的主储存区。
5、 如权利要求l所述的方法,还包括在重启后确定所述状态指示符未 被置位,并且随后不采取与所述数据blob和所述防重发表相关的进一步动 作。
6、 如权利要求l所述的方法,还包括生成所述数据blob,其中所述数 据blob包括首部、单调计数器值、随机值、明文密钥和完整性校验值,并 且利用所述数据blob的首部和单调计数器值来更新所述防重发表blob。
7、 如权利要求6所述的方法,其中,使用根据多个硬件熔丝导出的机 密性密钥,对所述数据blob的单调计数器值、随机值、明文密钥和完整性 校验值进行加密。
8、 如权利要求1所述的方法,其中所述状态指示符和所述单调计数器 在单一硬件寄存器中。
9、 如权利要求1所述的方法,其中对所述状态指示符进行置位和使所 述单调计数器递增包括执行单一微处理器指令。
10、 如权利要求1所述的方法,其中所述非易失性存储器是闪存存储 器和硬盘驱动器中之一。
11、 一种系统,包括 处理器,用于运行bl0b服务;耦合到所述处理器的芯片组,所述芯片组包括单调计数器;以及 耦合到所述处理器的非易失性存储器设备,其中所述blob服务以容错 方式生成要写入到所述非易失性存储器设备的数据blob和防重发表blob, 其中所述数据blob包括首部和所述单调计数器的单调计数器值,并且其中 所述防重发表blob包括所述数据blob的首部和单调计数器值。
12、 如权利要求11所述的系统,其中,所述单调计数器是寄存器的一 部分,并且所述寄存器还包括状态指示符。
13、 如权利要求12所述的系统,其中,所述状态指示符用于指示所述 数据blob和所述防重发表blob是否己经被成功地写入到所述非易失性存储 器设备的临时储存区中。
14、 如权利要求12所述的系统,其中,使用机密性、完整性和防重发 保护来对所述数据blob进行保护。
15、 如权利要求14所述的系统,其中使用完整性和防重发保护来对所 述防重发表blob进行保护。
16、 如权利要求ll所述的系统,其中所述芯片组还包括完整性引擎、 加密引擎、基于硅的密钥和随机数发生器。
17、 一种制品,其包括机器可访问介质,所述介质包括当被机器访问时使得所述机器执行下述操作的数据,所述操作包括将数据blob和防重发表blob从易失性存储器复制到非易失性存储器的 临时储存区;并且在将所述数据blob和所述防重发表blob复制到所述临时储存区后,在 原子操作中,对状态指示符进行置位且使单调计数器递增。
18、 如权利要求17所述的制品,其中所述机器可访问介质还包括使所 述机器执行下述操作的数据,所述操作包括将所述数据blob和所述防重发 表blob从所述临时储存区复制到所述非易失性存储器的主储存区。
19、 如权利要求18所述的制品,其中所述机器可访问介质还包括使所 述机器执行下述操作的数据,所述操作包括在将所述数据blob和所述防重 发表blob复制到所述主储存区后,对所述状态指示符进行清零。
20、 如权利要求17所述的制品,其中所述机器可访问介质还包括使所 述机器执行下述操作的数据,所述操作包括在重启后确定所述状态指示符 被置位,并且随后将所述数据blob和所述防重发表blob从所述临时储存区 复制到所述非易失性存储器的主储存区。
21、 如权利要求17所述的制品,其中所述机器可访问介质还包括使所 述机器执行下述操作的数据,所述操作包括在重启后确定所述状态指示符 未被置位,并且随后不采取与所述数据blob和所述防重发表相关的进一步 动作。
22、 如权利要求17所述的制品,其中所述机器可访问介质还包括使所 述机器执行下述操作的数据,所述操作包括生成所述数据blob,其中所述数据blob包括首部、单调计数器值、随机值、明文密钥和完整性校验值,并且利用所述数据blob的首部和单调计数器值来更新所述防重发表blob。
23、 如权利要求22所述的制品,其中使用从多个硬件熔丝导出的机密 性密钥,对所述数据blob的单调计数器值、随机值、明文密钥和完整性校 验值进行加密。
24、 如权利要求17所述的制品,其中所述状态指示符和所述单调计数 器在单一硬件寄存器中。
25、 如权利要求17所述的制品,其中对所述状态指示符进行置位和使 所述单调计数器递增包括执行单一微处理器指令。
26、 一种方法,包括生成数据blob,其中所述数据blob包括首部和来自硬件单调计数器的 单调计数器值;利用所述数据blob的首部和单调计数器值来更新防重发表blob,并且 将所述防重发表blob与所述单调计数器值相关联;并且当所述数据blob和所述防重发表blob被存储在非易失性存储器的临时 储存区中时,使所述硬件单调计数器递增并对状态指示符进行置位。
27、 如权利要求26所述的方法,其中,在单调操作中使所述硬件单调 计数器递增和对所述状态指示符进行置位。
28、 如权利要求26所述的方法,还包括当所述数据blob和所述防重发 表blob被存储在非易失性存储器的主储存区中时,对所述状态指示符进行 清零。
29、 如权利要求26所述的方法,还包括在重启后,确定所述状态指示 符是否被置位,如果所述状态指示符被置位,则将所述数据blob和所述防重发表blob从所述非易失性存储器的临时储存区复制到所述非易失性存储 器的主储存区。
全文摘要
根据一些实施例,公开了用于提供以容错方式对数据进行加密、完整性和防重发保护的方法。数据blob和防重发表blob被复制到非易失性存储器的临时储存区中。在原子操作中,在数据blob和防重发表blob被复制到临时储存区后,对状态指示符进行置位且使单调计数器递增。如果在所述状态指示符被置位时出现错误,则从所述临时储存区中恢复所述数据blob和防重发表blob。
文档编号G06F21/00GK101388053SQ20081012882
公开日2009年3月18日 申请日期2008年6月20日 优先权日2007年6月20日
发明者D·内米罗夫, H·C·赫伯特 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1