数据验证方法及其装置制造方法

文档序号:6627587阅读:211来源:国知局
数据验证方法及其装置制造方法
【专利摘要】本发明提供一种数据验证方法及其装置。所述方法包括产生多个数据字的第一序列以经由接口发送,计算多个签名字的第二序列,并将第二序列交错至第一序列中以产生交错序列。所述交错序列中的每一给定签名字累积地对交错序列中由先前签名字所签名的数据字以及位于先前签名字与给定签名字之间的数据字进行签名。并且,经由接口传输交错序列。
【专利说明】数据验证方法及其装置

【技术领域】
[0001 ] 本发明是有关于数据安全,且特别是有关于一种用于数据验证方法及其装置。

【背景技术】
[0002]数据验证方案例如可用于避免遭受密码攻击等多种应用。举例而言,在此引用美国专利第8,429,513号所公开的内容作为参考,其描述检验可程式化存储器中的代码的完整性的方法。所述方法包含从不安全的存储器接收代码,且在从不安全的存储器接收到代码时,对此代码产生错误检测比特,并将代码和错误检测比特存储在可程式化存储器中,以及通过对存储在可程式化存储器中的代码和错误检测比特执行验证检查,以检验存储在可程式化存储器中的代码的完整性。
[0003]在此引用美国专利申请公开案第2012/0102307号所公开的内容作为参考,其描述包含安全资产管理单元(secure asset management unit,简称SAMU)且用于执行敏感代码和数据的安全执行环境。安全资产管理单元提供安全的执行环境来运行敏感代码,例如,与针对内容消费而建立的复制保护方案相关联的代码。安全资产管理单元架构允许基于硬体的安全启动和存储器保护,并为主机处理器所提供的代码提供随选代码(on-demandcode)的执行。安全资产管理单元可以通过已加密和已签名的核心代码来启动,并且执行已加密、已签名的代码。基于硬体的安全配置,可便于防止纵向或横向的特权扰乱(privilegev1lat1ns)。
[0004]参照此处引用的美国专利申请公开案第2006/0253708号所公开的内容,其描述用于将可变数据的至少一个数据区块记录在微处理器外部的第一易失性存储器中的方法。此方法包含计算和存储数字签名,其中此数字签名将所述数据区块在存储器中的至少部分地址和内容以及微处理器内部的至少第一随机数字值考虑在内。
[0005]参照此处引用的澳大利亚专利申请公开案第AU 2001/027074号所公开的内容,其描述有效确定数据正确的技术。部分数据的检验过程是用于内容的部分数据的组合,并通过将完整性部分数据整理为多个校验值来执行,且部分数据其组合整体的检验过程是通过整理部分完整性校验值检验(integrity-check-value-verifying)的完整性校验值来执行,所述完整性校验值对部分完整性校验值的组合进行检验。


【发明内容】

[0006]本发明提供一种数据验证方法及其装置,用于逐步验证经由总线接口通信的经加密数据以及识别攻击者是否篡改或危害到所通信的经加密数据。
[0007]本发明实施例提供一种数据验证方法,所述方法包括产生多个数据字的第一序列以经由接口发送,计算多个签名字的第二序列,并将第二序列交错至第一序列中以产生交错序列,所述交错序列中的每一给定签名字累积地对交错序列中由先前签名字所签名的数据字以及位于先前签名字与给定签名字之间的数据字进行签名。以及,经由接口传输交错序列。
[0008]在一些实施例中,计算签名字包括根据交错序列中在各签名字之前的数据字,以产生交错序列中的各签名字。在其它实施例中,计算签名字包括根据随着交错序列增加的数据字的相应数目,以产生交错序列中的各签名字。
[0009]在一些实施例中,所述方法包括从接口接收交错序列,以及使用签名字的第二序列,以逐步地验证数据字的第一序列。验证数据字通常包括使用各给定签名字以验证交错序列中由先前签名字所验证的数据字以及位于先前签名字与给定签名字之间的数据字。
[0010]在一些实施例中,计算签名字的第二序列包括应用线性反馈移位寄存器(linearfeedback shift register,简称LFSR)于数据字,以及应用非线性函数于线性反馈移位寄存器的输出。在其它实施例中,计算签名字的第二序列包括设定给定签名字的多个比特的第一子集,以对交错序列中在给定签名字之前的数据字进行签名,以及从错误检测码导出给定签名字的所述比特的第二子集,其中,错误检测码是经由数据字中的至少其中之一所计算,并存储在存储器中。
[0011]在一些实施例中,所述方法包括使用密码函数以将给定签名字中的多个比特位置加密指派至第一和第二子集。在其它实施例中,所述方法包括从接口接收交错序列,从签名字提取所述比特的第一和第二子集,使用第一子集以评估经由接口传送数据字的完整性,以及使用第二子集以评估将数据字存储于存储器中的完整性。
[0012]本发明的实施例另提供一种装置,所述装置包括存储器和存储器验证单元。所述存储器验证单元经配置以产生多个数据字的第一序列以经由接口发送,计算多个签名字的第二序列,并将第二序列交错到第一序列中以产生交错序列,其中,所述交错序列中的每一给定签名字累积地对交错序列中由先前签名字所签名的数据字以及位于先前签名字与给定签名字之间的数据字进行签名,以及经由接口传输交错序列。
[0013]本发明的实施例另提供一种方法,所述方法包括经由接口接收由多个数据字的第一序列和多个签名字的第二序列所形成的交错序列,使得每一给定签名字累积地对交错序列中由先前签名字所签名的数据字以及位于先前签名字与给定签名字之间的数据字进行签名,以及使用签名字的第二序列来逐步地验证数据字的第一序列。
[0014]本发明的实施例另提供一种装置,所述装置包括验证单元和处理器。所述验证单元经配置以经由接口接收由多个数据字的第一序列和多个签名字的第二序列所形成的交错序列,使得每一签名字累积地对交错序列中由先前签名字所签名的数据字以及位于先前签名字与给定签名字之间的数据字进行签名,以及使用签名字的第二序列来逐步地验证所述数据字的所述第一序列。处理器经配置以处理经验证的数据字。
[0015]为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。

【专利附图】

【附图说明】
[0016]图1A为本发明一实施例所示的计算系统的方块图;
[0017]图1B为本发明一实施例所示的经由总线接口传输的交错序列的示意图;
[0018]图2为本发明的一实施例所示的用于对交错序列进行签名以经由总线接口进行传输的方法流程图;
[0019]图3为本发明的一实施例所示的用于验证经由总线接口所接收的经签名数据的方法流程图;
[0020]图4A为本发明的一实施例所示的完整性检查引擎的第一实施方案的方块图;
[0021]图4B为本发明的一替代实施例所示的完整性检查引擎的第二实施方案的方块图;
[0022]图5为本发明的一实施例所示的用于同时验证经由总线接口所接收的数据并查验存储在存储器中的数据的方法流程图。
[0023]附图标记说明:
[0024]10:系统;
[0025]15:主机;
[0026]20:存储器装置;
[0027]25:总线接口;
[0028]30:存储器;
[0029]35:存储器验证单元;
[0030]40:加密器;
[0031]45:存储器完整性检查引擎;
[0032]50:交错器;
[0033]60:处理器;
[0034]65:主机存储器;
[0035]70:主机验证单元;
[0036]75:解交错器;
[0037]80:解密器;
[0038]85:主机完整性检查引擎;
[0039]90:比较器;
[0040]100:交错序列;
[0041]IKKD1 ?D12、Dj:数据字;
[0042]UCKSpSySpSlSiR:签名字;
[0043]300、400:完整性检查引擎;
[0044]305,405:线性反馈移位寄存器;
[0045]310、410:F 区块;
[0046]415:F,区块;
[0047]425:多工器;
[0048]CRC1:循环冗余校验字;
[0049]F、F,:函数;
[0050]F1、F,1:信号;
[0051]HS1:混合签名字;
[0052]K:密钥;
[0053]P/F:通过或失败;
[0054]200 ?250、255 ?290、430 ?465:步骤。

【具体实施方式】
[0055][概述]
[0056]在许多安全存储系统中,主机经由存储器总线接口与存储器装置通信,使得在传输过程中,数据可能会受到各种密码攻击。本发明实施例在此提供用于逐步验证经由总线接口通信的经加密数据以及识别攻击者是否篡改或危害到所通信的经加密数据的改进方法和系统。
[0057]在本文中描述的一些实施例中,一种存储器装置包括存储器和存储器验证单元(memory authenticat1n unit,简称MAU)。当存储器装置准备经由总线接口以将数据发送至主机时,存储器验证单元从存储器提取数据且产生经加密数据字的第一序列。同时,存储器验证单元基于所提取的数据来计算签名字的第二序列。
[0058]存储器验证单元经配置以将数据字的序列与签名字的序列交错以便经由总线接口来传输,使得每一签名字不断地对交错序列中在所述签名字之前的数据字进行签名。换句话说,交错序列中的每一给定签名字(第一签名字除外)对由先前签名字所签名的数据字以及位于先前签名字与给定签名字之间的数据字进行签名。因此,验证强度随着每一数据字序列被验证而不断变强。
[0059]主机使用主机验证单元(host authenticat1n unit,简称HAU)来接收交错序列、将数据字与签名字分离以及对数据字解密。同时,主机验证单元从所接收的解密数据计算签名字,并将计算出的签名字与对应所接收的签名字相比较,以便验证数据字。换句话说,主机验证单元使用交错序列中的每一个签名字来验证由先前签名字所验证的数据字以及位于先前签名字与给定签名字之间的数据字。
[0060]换句话说,在所公开的技术中,存储器装置周期地发送签名字,且这些签名字对数目逐渐增加的数据字进行签名。序列中的第一签名字可能仅提供中等的验证性能,但是在后续的签名字中,验证性能大幅提高。同时,验证过程导致的等待时间是非常低的,因为并不需要等到已累积了大区块的数据字才来查验签名。对于实时代码验证而言(即,当经由接口所传送的数据字传达由主机实时运行的软体代码时),可靠验证与低等待时间的此组合特别有用。
[0061]在一些实施例中,主机还可以用来远端查验存储在存储器装置自身上的数据的完整性。在这些实施例中,存储器验证单元将数据字的群组与对应的错误检测码一起存储在存储器中,所述错误检测码检测存储在存储器中的数据字的改变。如果攻击者试图篡改存储器装置中的数据和/或专用逻辑电路(所述数据和/或专用逻辑电路用以检验所存储的数据完整性),则无法再信任此存储器装置对存储在其自身存储器中的数据完整性的评估。在下文提出的一些实施例中,主机可用以远端查验存储在存储器装置上的数据的完整性。
[0062]在这些实施例中,存储器验证单元形成混合签名字,其包括存储器完整性比特与接口验证比特二者的组合。接口验证比特是从上述签名字导出,而存储器完整性比特是从与数据一起存储在存储器中的错误检测码导出。
[0063]在一实施例中,用接口验证比特和存储器完整性比特二者来加密计算混合签名字中的比特。存储器完整性比特自身通常不具有加密强度,并且可能易遭篡改。然而,所公开的技术通过使存储器完整性比特无法与接口验证比特区别,而可有效地隐藏存储器完整性比特。因而,识别和修改存储器完整性比特明显更复杂。接着以如先前描述的相同方式(例如,在交错序列中)经由总线接口将混合签名字发送给主机。接着,主机可提取接口验证比特以验证接口,以及提取存储器完整性比特以验证存储在存储器中的数据。
[0064][系统描述]
[0065]图1A为本发明一实施例所示的计算系统的方块图。系统10包括主机15和存储器装置20。主机15和存储器装置20经由总线接口 25相互通信。系统10例如可以包括电脑。主机15可以包括电脑的中央处理单元(Central Processing Unit,简称CPU)。存储器装置20可以包括外部存储器装置,所述外部存储器装置使用任何合适类型的存储器,例如快闪存储器或随机存取存储器。
[0066]在典型的流程中,主机15经由总线接口 25将对于数据的请求发送至存储器装置
20。存储器装置20从存储器30提取数据字。数据字以Dj表示,其中j用以表示交错序列中第j个数据字的整数,并将如稍后论述。数据字被中继到与存储器30连接的存储器验证单元35。存储器验证单元35中的加密器40对数据字Dj进行加密。类似地,存储器完整性检查引擎(memory integrity check engine,简称ICE)45以数据字Dj作为输入并计算签名字Si,其中i用以表示第i个签名字的整数。最后,交错器50产生包括数据字Dj和签名字Si的交错序列,如图1B所示。
[0067]主机15包括处理器60和主机存储器65。主机存储器65连接到主机验证单元70。主机验证单元70包括解交错器75,所述解交错器75可将所接收的交错数据中经加密的数据字与所接收的签名字SiK分离,其中i表示交错序列中第i个签名字的整数。之后,解密器80从解交错器75提取数据字Dj。
[0068]主机完整性检查引擎85接收所提取的数据字Dj,以经由数据字Dj来计算签名字Sie0为了验证数据字Dj与存储器30中被签名的数据字是相符的,比较器90通过向处理器60指示通过或失败(如图1A中所示的P/F)来评估签名字Si是否与所接收的签名字SiK相同。当指示为通过时,对于给定的索引i而言,当前接收到的签名字SiK对在签名字SiK之前的所有经签名的数据字进行验证。
[0069]图1A中示出的系统10仅是举例,而并非对本发明的实施例作出限制。举例而言,存储器完整性检查引擎45和主机完整性检查引擎85可经配置以经由经加密的数据字(图1A中未示出)来计算签名字。主机15和存储器装置20的不同元件可以各自使用任何合适硬体来实现,例如特殊应用集成电路或可程式化逻辑闸阵列(FPGA)。在一些实施例中,所述功能可以使用印刷电路板上的离散元件或其组合,而以任何合适方式来实现。在其它实施例中,存储器30和存储器验证单元35通常封装在同一装置封装中,以便提供自含式安全存储器装置。
[0070]在一些实施例中,总线接口 25可以是经由独立的信号线以提供地址、数据和命令的平行接口。在其它实施例中,总线接口 25可以是串列接口,例如串列周边接口(SPI)、内置集成电路(I2C)、通用串列总线(USB)、多媒体卡(MMC)或安全数字(SD)接口。总线接口25可以是实施在晶元和/或印刷电路板上的任何合适接口。存储器30和主机存储器65可以是随机存取存储器、非易失性存储器或其二者。
[0071]在其它实施例中,主机15和/或存储器装置20的某些元件,例如存储器验证单元35、主机验证单元70和处理器60,可以用通用型电脑来实施,并以软件对所述通用型电脑进行程式化来实现本文中描述的功能。软件可以例如按电子形式而经由网络下载到电脑,或也可替代或附加地被提供和/或被存储在非暂时性有形媒体(例如磁、光或电子存储器)上。
[0072][通过将数据与签名字进行交错以经由安全存储器接口进行累积数据验证]
[0073]在本文描述的实施例中,所公开的用于累积数据验证的方法通常是针对主机15与存储器装置20为分离的情形。主机15所请求的数据经由总线接口 25来发送。即使数据被加密了,攻击者仍可能试图经由总线接口 25来更改数据流中的某些比特以获取数据,或以其它方式影响系统。
[0074]在一些实施例中,数字签名用以对数据进行验证。数字签名是可使用主机15和存储器装置20 二者都知道的专用秘密值(通常是秘密数字密钥字)所计算出的数据的函数。在接收数据过程中,主机15必须知道用以产生存储器装置20中的签名的专用秘密值以便用接收到的数据字来计算出相同签名,由此检验所接收的签名和计算出的签名的匹配。这样就验证了经签名的数据字,并表示数据未曾经由总线接口而遭到篡改。对于长的数据块,首先对数据进行散列运算,接着再将函数应用于散列序列。
[0075]本文中描述的实施例特别是关于主机15运行从存储器装置20所实时提取出的代码的情形。在这种情况中,因为与主机15验证数据相关联的等待时间非常长,故常规的区块验证方法通常是不合适的。此外,常规的加密签名通常是至少8字节(byte)长,而经由总线接口 25实时地传送此类签名将严重地降低通过总线接口 25的信道吞吐量。
[0076]在本文描述的实施例中,由于是使用从存储器30传递到存储器验证单元35的数据而在存储器验证单元35中不断地对签名字进行计算,故签名过程是累积的。在示范性实施例中对此进行说明,其中,每4个I字节数据字便添加并传输相应的I字节签名字,使得每一签名字对序列中所有先前的数据字进行签名。
[0077]如果攻击者修改了前4个数据字,那么第一签名字可按P = 255/256的可能性而检测到攻击。此可能性对于常规的加密算法来说可能不够高,但当第二签名字对前8个数据字进行签名时,此时的误检测攻击的可能性将是(1-P)2,且用第i个签名字Si检测到攻击的可能性是Ι-α-ρ)、因此,可以非常精确地检测攻击者经由总线接口 25对传送中的数据字作出的任何改变。
[0078]图1B为本发明一实施例所示的经由总线接口传输的交错序列的示意图。如先前所述,将表示为Dj的多个数据字110与表示为Si的签名字120进行交错。在图1B所示的示范性实例中,签名字S1对数据字D1-D4进行签名,签名字S2对数据字D1-D8进行签名,签名字S3对数据字D1-D12进行签名,等等。需注意的是,在图1B中,表示为(DpDfDj)的数据字110是图1A所示的数据字Dj的经加密版本。术语“签名字”与“签名”在此可以互换使用。
[0079]图2为本发明一实施例所示的用于对交错序列进行签名以经由总线接口进行传输的方法流程图。在发送步骤200中,主机15经由总线接口 25以将对数据的请求发送至存储器装置20。存储器装置20从存储器30读取所请求的数据。在加密步骤210中,存储器验证单元35对数据字(例如,图1B中所示的数据字110)的第一序列进行加密。
[0080]在计算和交错步骤220中,存储器验证单元35计算签名字Si的第二序列(在图1B中标示为签名字120),并将第一(Dj)与第二(Si)序列交错,使每一签名字Si对如图1B所示的交错序列100中在所述签名字Si之前的数据字Dj进行签名。
[0081]在传输步骤230中,存储器装置20经由总线接口 25将交错序列100传输至主机15。在判定步骤240中,主机15评估存储器装置20是否已传输所有的经签名数据。如果不是,那么存储器装置20继续从存储器30读取数据,且存储器验证单元35继续在加密步骤210中对所读取的数据进行加密。如果是,那么在终止步骤250中终止经由总线接口 25的数据传输。
[0082]图3为本发明一实施例所示的用于验证经由总线接口 25所接收的经签名数据的方法流程图。在接收步骤255中,主机15接收签名字30和经加密数据字110的交错序列100。解交错器75将所接收的签名字SiK与经加密的数据字分离。在解密器80中经加密的数据字被解密。
[0083]在使用步骤260中,主机完整性检查引擎85使用解密的数据字Dj以计算签名字
Si。在判定步骤270中,比较器90评估计算出的签名字Si与所接收的签名字SiK是否相等。如果不是,那么在失败报告步骤280中,比较器90(通常是向处理器60)报告数据在总线接口 25上被篡改。否则,在成功报告步骤290中,比较器90 (通常是向处理器60)报告验证成功。
[0084]图2和图3的流程图中所公开的技术不限于验证从存储器装置发送到主机的数据。所公开的累积验证方案可用于验证相反方向(即,验证从主机发送到存储器装置)的数据,和/或一般经由任何其它合适接口所发送的数据。
[0085][计算用于累积验证的签名字]
[0086]在本发明的实施例中,其使用完整性检查引擎(如分别在主机15和存储器装置20中的主机完整性检查引擎85和存储器完整性检查引擎45)以在存储器验证单元35和主机验证单元70 二者中计算签名字120。完整性检查引擎通常对输入数据字Dj进行散列运算以计算签名字Si。散列寄存器用以计算并存储经由总线接口的数据字的散列序列。散列寄存器可例如以线性反馈移位寄存器(LFSR)来实现。
[0087]图4A为本发明一实施例所示的完整性检查引擎的第一实施方案的方块图。图4A中的完整性检查引擎300可以适用于图1A所示的主机完整性检查引擎85和存储器完整性检查引擎45。8比特数据字Dj [7:0]被输入到线性反馈移位寄存器(LFSR)305。此示出的实例用密钥K以对线性反馈移位寄存器305进行初始化。线性反馈移位寄存器305被假定为足够大(例如,至少64比特宽),使得攻击者将无法通过密集的计算分析(例如,通过暴力)而估猜或评估线性反馈移位寄存器305的内容。
[0088]将线性反馈移位寄存器305的输出输入到F区块310,所述F区块经配置以应用合适的非线性函数F,且所述非线性函数F用以经由散列寄存器比特(例如,线性反馈移位寄存器305的比特)的子集来计算签名字Si [7:0]的签名比特。现在假定线性反馈移位寄存器305在此示范性实施例中是以64比特来操作,且线性反馈移位寄存器305的输出比特表示为LFSR[64:0]。在一些实施例中,可以用线性反馈移位寄存器305(其输入数据为Dj[7:0])的输出,并例如通过方程式(I)来计算出第i个签名字Si [7:0]的签名比特。所述方程式(I)如下:
[0089]F[7:0] = (LFSR[7:0]&LFSR[15:8])|(LFSR[15:8]&LFSR[23:16])|(LFSR[23:16]&LFSR[7:0])(I)
[0090]其中符号“&”表示按比特及运算(bitwise-and),且符号“I”表示按比特或运算(bitwise-or)。
[0091]图4A和方程式⑴中所示的实施例仅用以使概念清楚,而非限制本发明的实施例。完整性检查引擎可以通过使用任何合适算法的任何合适电路来实现,以形成在图1B所示出的交错序列100中用以累积地对数据字进行签名的签名字120。在其它实施例中,可以在主机15中使用完整性检查引擎300来对读取命令的请求命令和地址进行散列运算,所述读取命令可以在步骤200 (图中未示出)中以安全的加密方式而发送到存储器装置20。随后,可以使用与本文所述实施例相同的方法,以在系统10中对读取命令和地址进行签名和验证。
[0092]数据集包括来自经由总线接口发送的所有数据字的数据。在一些实施例中,交错序列100中的一些签名字120可以由存储器装置20发送,以便在主机15已接收完所有数据字且进行验证之后对数据集进行签名。在其它实施例中,除了本文中描述的方法之外,在主机15已接收完数据集中的所有数据字之后,还可以使用其它验证方法来验证整个数据集。在其它实施例中,F区块310可经配置以选择可使用签名字120中的哪些比特来不断地对数据字进行签名以及选择哪些比特来对整个数据集进行签名。
[0093][用于经由安全存储器接口以进行累积数据验证以及评估存储器完整性的签名字]
[0094]在本文提供的其它实施例中,将签名与数据字进行交错的方法不仅限于先前所描述的不断地对经由总线接口 25发送的数据字进行签名和验证的方法。主机15还可以使用这些方法来在远端检验存储在存储器30中的数据的完整性。
[0095]在这些实施例中,存储器验证单元35将数据以阵列存储在存储器30中,且在所述阵列中,数据字的每一群组与经由所述群组所计算出的相应错误检测码(error detect1ncode,简称EDC)字一起存储。错误检测码可例如包括32比特累积冗余校验(CRC-32)码或任何其它合适的错误检测码。存储器装置20中(可能在存储器验证单元35中)的专用逻辑电路通常通过用所存储的数据重新计算错误检测码,并将计算出的错误检测码与存储器30中的所存储的错误检测码进行比较,由此来检验数据完整性。
[0096]然而,在一些情况中,攻击者可能会篡改存储器装置内部电路,故此内部验证机制不完全可信。在本发明的实施例中,存储器验证单元35将使用错误检测码验证所存储的数据的任务委派给主机15。
[0097]在一些实施例中,存储器验证单元35形成混合签名字,其包括用于不断地对数据进行签名的签名比特(例如,接口验证比特)以及从存储在存储器30中的错误检测码字所导出的存储器完整性比特二者,所述存储器完整性比特用以检验存储在存储器30中的数据的完整性。本文中教示的实施例描述了存储器装置20形成混合签名字的方法,并相对应地描述了主机15以先前描述的类似方式来验证经签名的数据字且对存储在存储器30中的数据的完整性进行远端查验的方法。
[0098]为了使用图1A和图1B以清楚解释下述实施例的概念,混合签名字可以用符号HSi表示并与符号Si互换。混合签名字也可由签名字120表示,且以类似于图1B中的方式而在交错序列100中与数据字110交错,并经由总线接口 25发送至主机15。术语“混合签名字”与“混合签名”在此可以互换使用。
[0099]图4B为本发明一替代实施例所示的完整性检查引擎的第二实施方案的方块图。完整性检查引擎400用以在存储器装置20中产生表示为HSi的混合签名字。
[0100]完整性检查引擎400将数据字Dj [7:0]输入至线性反馈移位寄存器(LFSR) 405的操作与完整性检查引擎300类似。图4B所示的实例通过密钥(此处未示)来初始化线性反馈移位寄存器405,且假定线性反馈移位寄存器405是以64比特来操作。将线性反馈移位寄存器405的输出LFSR[64:0]输入到F区块410,所述F区块经配置以应用任何非线性函数F(例如方程式⑴所述),且所述非线性函数F用以经由散列寄存器比特(例如,线性反馈移位寄存器405)的子集来计算签名字Si [7:0]的签名比特。
[0101]然而,第i个混合签名字HSi [7:0]的混合签名比特不仅是用线性反馈移位寄存器的输出来计算,且还使用与数据字Dj [7:0] —起存储在存储器30中且与数据字Dj [7:0] —起提取出的错误检测码字(例如,CRC-32字)以进行计算。在本文描述的实施例中,混合签名字HSi的比特由接口验证比特和用于检验存储器完整性的存储器完整性比特二者形成,并将于稍后描述。接口验证比特是从方程式(I)导出,且用以如前所述般不断地对数据字110进行签名。
[0102]除了数据字Dj[7:0]以外,完整性检查引擎400还接收作为输入且与数据字Dj [7:0] 一起存储的错误检测码字,其中错误检测码字表示为CRCi [7:0]。数据字Dj [7:0]也被输入至F’区块415,且F’区块415根据方程式(2)将函数F’ [7:0]应用于散列寄存器比特(例如,LFSR[64:0])的子集。所述方程式(2)如下:
[0103]F,[7:0] = LFSR[39:32]&LFSR[31:24](2)
[0104]其中符号“&”表示按比特及运算(bitwise-and)。
[0105]基本上,F’[7:0]是应用于多工器425的控制(比特选择)终端的函数,且Fi [7:0]和CRCi[7:0]被作为多工器425的信号输入。整数k表示接口验证比特F[k]、多工器控制比特F’ [k]和存储器完整性比特CRC[k]中的第1^个比特,其中1^ = 0,1,2,...,?。形成8比特混合签名字120的混合签名比特HS[k]可由以下给出的方程式(3)来计算:
[0106]HS [k] = F[k](3)
[0107]其中,当多工器控制比特F’ [k]为O时,混合签名比特HS[k]等于接口验证比特F[k],而当多工器控制比特F’ [k]不为O时,混合签名比特HS[k]则为存储器完整性比特CRC[k]。
[0108]以此方式,形成混合签名字的混合签名比特HS[k]以几乎随机的方式共享由LFSR[64:0]计算出的接口验证比特F[k]和存储器完整性比特CRC[k],以使得在形成混合签名字过程中,对此加密方法进行解码的攻击几乎不可能发生。
[0109]在一些实施例中,完整性检查引擎400的修改配置可用以实现图1A所示的主机完整性检查引擎85。然而,在主机中,循环冗余校验字CRCi则经由所接收的数据字来计算。
[0110]图5为本发明的一实施例所示的用于同时验证经由总线接口所接收的数据并查验存储在存储器中的数据的方法流程图。在接收步骤430中,主机15经由总线接口 25从存储器装置20接收混合签名字HSiK和经加密数据字的交错序列100。
[0111]在使用步骤435中,主机完整性检查引擎85 (以完整性检查引擎400来实现)使用来自解密器80的数据字Dj,以由数据字Dj和循环冗余校验字CRCi来计算混合签名字HSi。对每一(混合)签名字120 (所接收的混合签名字HSiK和计算出的混合签名字HSi)中的混合签名比特HS[k]进行分析,以便验证经由总线接口 25篡改的数据以及远端查验存储在存储器30中的数据的完整性。
[0112]在判定步骤440中,比较器90通过评估以下方程式(4)中的逻辑相等性是否成立,由此评估所接收的签名字和计算出的签名字中的接口验证比特(例如,F[k])是否相同。所述方程式(4)如下:
[0113](HS[k])&(?F,[k]) == F[k]&(?F,[k])(4)
[0114]其中,符号“&”表示按比特及运算(bitwise-and),符号“?”表示反运算(not),且符号“==“表示判断逻辑相等性条件是否成立。
[0115]如果比较器90评估方程式(4)中的逻辑相等性成立,那么在报告步骤450中,t匕较器90报告所接收的数据在总线接口 25上被验证。如果不是,那么在报告步骤445中,比较器90报告数据在总线接口 25上被篡改。换句话说,步骤450逐步地验证交错序列100中的数据字Dj 110。
[0116]在第二判定步骤455中,比较器90通过评估方程式(5)中的逻辑相等性是否成立,由此比较所接收的混合签名字HSiR与计算出的混合签名字HSi以评估存储器完整性比特CRC[k]是否相同。所述方程式(5)如下:
[0117](HS[k])&(F,[k]) == F[k]&(F’ [k])(5)
[0118]其中,符号“&”表示按比特及运算(bitwise-and),且符号“ = = “表示判断逻辑相等性条件是否成立。
[0119]如果比较器90评估方程式(5)中的逻辑相等性成立,那么在报告步骤465中,t匕较器90报告存储在存储器装置20中的存储器30中的数据未被篡改,即检验了存储数据的完整性。如果不是,那么在报告步骤460中,比较器90报告存储在存储器装置20中的数据被篡改。换句话说,步骤465逐步地检验存储在存储器30中的交错序列100中的数据字Dj110的完整性。
[0120]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种数据验证方法,其特征在于,包括: 产生多个数据字的第一序列; 计算多个签名字的第二序列,并将所述第二序列交错至所述第一序列中以产生交错序列,其中,所述交错序列中的每一给定签名字累积地对所述交错序列中由先前签名字所签名的所述数据字以及位于所述先前签名字与所述给定签名字之间的所述数据字进行签名;以及 经由接口传输所述交错序列。
2.根据权利要求1所述的数据验证方法,其特征在于,还包括: 从所述接口接收所述交错序列;以及 使用各所述签名字逐步地验证所述交错序列中由所述先前签名字所验证的所述数据字以及位于所述先前签名字与所述给定签名字之间的所述数据字。
3.根据权利要求1所述的数据验证方法,其特征在于,计算所述签名字的所述第二序列包括: 应用线性反馈移位寄存器于所述数据字;以及 应用非线性函数于所述线性反馈移位寄存器的输出。
4.根据权利要求1所述的数据验证方法,其特征在于,计算所述签名字的所述第二序列包括: 设定所述给定签名字的多个比特的第一子集,以对所述交错序列中在所述给定签名字之前的所述数据字进行签名;以及 从错误检测码导出所述给定签名字的所述比特的第二子集, 其中,所述错误检测码是经由所述数据字中的至少其中之一所计算,并存储在存储器中。
5.根据权利要求4所述的数据验证方法,其特征在于,还包括: 从所述接口接收所述交错序列; 从所述签名字提取所述比特的所述第一和第二子集; 使用所述第一子集以评估经由所述接口传送所述数据字的完整性;以及 使用所述第二子集以评估存储所述数据字于所述存储器中的所述完整性。
6.一种用于数据验证的装置,其特征在于,包括: 存储器;以及 存储器验证单元,经配置以产生多个数据字的第一序列以经由接口发送,计算多个签名字的第二序列,并将所述第二序列交错至所述第一序列中以产生交错序列,其中,所述交错序列中的每一给定签名字累积地对所述交错序列中由先前签名字所签名的所述数据字以及位于所述先前签名字与所述给定签名字之间的所述数据字进行签名,以及经由所述接口传输所述交错序列。
7.根据权利要求6所述的装置,其特征在于,还包括: 主机,经配置以从所述接口接收所述交错序列,且使用各所述给定签名字以验证所述交错序列中由所述先前签名字所验证的所述数据字以及位于所述先前签名字与所述给定签名字之间的所述数据字。
8.根据权利要求6所述的装置,其特征在于,所述存储器验证单元经配置以通过应用线性反馈移位寄存器于所述数据字,以及应用非线性函数于所述线性反馈移位寄存器的输出,以计算所述签名字的所述第二序列。
9.根据权利要求6所述的装置,其特征在于,所述存储器验证单元经配置以设定所述给定签名字中的多个比特的第一子集,以对所述交错序列中在所述给定签名字之前的所述数据字进行签名,以及从错误检测码导出所述给定签名字的所述比特的第二子集,其中,所述错误检测码是经由所述数据字中的至少其中之一所计算,并存储在所述存储器中。
10.根据权利要求9所述的装置,其特征在于,还包括: 主机,所述主机经配置以从所述接口接收所述交错序列,且从所述签名字提取所述比特的所述第一子集和所述第二子集,并使用所述第一子集以评估经由所述接口传送所述数据字的完整性,以及使用所述第二子集以评估存储所述数据字于所述存储器中的所述完整性。
11.一种数据验证方法,其特征在于,包括: 经由接口接收由多个数据字的第一序列和多个签名字的第二序列所形成的交错序列,使得每一给定签名字累积地对所述交错序列中由先前签名字所签名的所述数据字以及位于所述先前签名字与所述给定签名字之间的所述数据字进行签名;以及 使用所述签名字的所述第二序列来逐步地验证所述数据字的所述第一序列。
12.一种用于数据验证的装置,其特征在于,包括: 验证单元,经配置以经由接口接收由多个数据字的第一序列和多个签名字的第二序列所形成的交错序列,使得每一签名字累积地对所述交错序列中由先前签名字所签名的所述数据字以及位于所述先前签名字与所述给定签名字之间的所述数据字进行签名;以及使用所述签名字的所述第二序列来逐步地验证所述数据字的所述第一序列;以及 处理器,所述处理器经配置以处理所述经验证的数据字。
【文档编号】G06F21/62GK104463007SQ201410482525
【公开日】2015年3月25日 申请日期:2014年9月19日 优先权日:2013年9月22日
【发明者】厄瑞·卡路兹尼, 尼尔·塔莎 申请人:华邦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1