保护静态和动态数据免遭未授权操作的系统的制作方法

文档序号:6472675阅读:297来源:国知局
专利名称:保护静态和动态数据免遭未授权操作的系统的制作方法
技术领域
本发明涉及防止电子存储器操作的系统,更具体地说,涉及防止对电子设备中需要保密的存储器内容的未授权操作的方法和装置。
本文中公开的本发明涉及所有需要维护存储器内容的安全或不允许改变其状态的电子设备。这种需求可能是出于安全考虑提出的,例如,防止蜂窝式电话存储器的欺诈性操作,或者在一些重要应用中,例如航空控制或医药设备的操作,维护电子设备运行的整体性目的。正如本文中公开的和说明的,本发明的示范性方面是从用于加密蜂窝式电话中的一个或多个电子存储器的系统和方法方面着手的。本文中还说明一种系统,所述系统允许在访问电子存储器之前,利用经过鉴别的数据传送设备访问和操作电子设备中的一个或多个电子存储器。后一种系统也在蜂窝式电话的应用中说明。即使本文说明的本发明的示范性实施例,在保密蜂窝式电话存储器以及用于安全访问和修改蜂窝式电话存储器内容的装置方面作了说明,本专业的技术人员容易理解,本发明的系统也可以用于具有一个或多个存储器的任何电子系统,这些存储器内容要保持不变,或者其存储器只有通过授权装置才能被访问和修改。所以,本发明的范围不局限于本文中给出的示范性实施例,而是由后附的权利要求书和等价内容规定。
在许多固定的和移动的计算和通信系统中,例如个人数字助理(PDA)和蜂窝式电话,需要保护某些存储在系统存储器中的数据。这些数据可能是与文档、数据库或程序对应的数据。在蜂窝式电话的内容中,这些数据可能表示有关信息,例如,国际移动式设备身份码(IMEI)编号(由ETSI GSM规范确定),无线电校正数据以及加密访问代码。一旦存入存储器中,这类数据就不想改变,因此,本文中将它称作为静态数据。其它类型数据也可以存储在存储器中,例如,表示GSM电话是否被锁定在规定的操作员网络的状态标记的数据。这类数据(本文中将它称作为动态数据)具有被用户修改的可能,但是只有用户被授权才可能修改。在所有其它情况下,动态数据是不允许修改的。
已经对确保静态数据完整性的技术(即,防止静态数据被窜改)作了说明,例如在美国专利No.5442645和No.6026693中给出的说明,所述专利通过引用被全部包括在本文中。这些方法广泛应用密码技术,用于从静态数据产生所谓“特征”。密码技术已众所周知,并在象《应用密码学手册》(A.Menezes,P.C.an Orrshot和S.A.Vanstone,CRC出版社,1996)一类的出版物中作了说明,所述内容通过引用被全部包括在本文中。当已知所述静态数据为可信的时,则产生特征同时保存。然后,在允许用户使用静态数据之前,再次计算特征,并与前一次保存的版本进行比较。如果发现任何不匹配,则证明静态数据发生了变化就不使用所述静态数据。
在美国专利5442645中,需要保存秘密密钥以便实现整体性保护。在美国专利6026293中说明了一种更完善的技术。现在,参照图1的方框图简要说明。在所述系统中,包括处理电路100的ASIC与快速程序存储器101、随机访问存储器(RAM)103和电可擦可编程只读存储器(EEPROM)105通过系统总线107相互连接在一起。处理电路100包括微处理器109、定时器和控制器逻辑电路111以及两种形式的存储器保护静态RAM(PSRAM)113和内部只读存储器(IROM)115。除了传统的引导代码117外,IROM 115存储公开密钥119、散列算法的程序代码(用散列码121表示)和设备验证代码123的程序代码。静态数据125存储在EEPROM 105中。静态数据125由存储在EEPROM 105中的审查散列值127保护。审查散列值127由存储在处理电路的IROM115中的散列码121实现的散列算法计算得到。外部数据传送设备对EEPROM的内容的访问是利用存储在IROM 115中的公开密钥119和验证代码123、通过使用验证程序来控制的。验证程序要求数据传送设备占有对应的公用/专用加密方案的秘密密钥,所述秘密密钥用于实现验证程序。由定时器和控制逻辑电路111实现的定时机制用于触发处理电路的性能,以便在一组计数器确定的某一瞬间实现整体性检查。
现有方法的缺点在于,由于任何修改整体性检查软件的方法可以用来饶过加密机制,因此,实现整体性检查的软件本身必须加密。在美国专利6026293说明的技术中,通过固定处理电路ASIC的IROM中的软件代码可以满足这种要求。然而,为了能够应用所述技术,系统开发者必须能够定义一部分ASIC。这种能力会增加所述部件的成本。
这些现有技术的另一个缺点在于,不适合用来确保动态数据的完整性。
在美国专利5606315中描述了一种机制,对动态数据对象的访问是通过存储在EEPROM中的口令控制的。然而,用户很容易从EEPROM中读取口令并获得对动态数据的修改权力。而且,在该文件描述的系统中,不对动态数据进行完整性检查。慨要应该强调,当在本说明书中使用术语“包括”和“包含”时,意指存在确定的特征、整体、步骤或部件;但是使用这些术语并不排除存在或附加一个或多个特征、整体、步骤、部件或它们的组合。
根据本发明的一个方面,在确保包括一个或多个数据项的动态数据对象完整性的方法和装置中实现前述的和其它目的。完成这一点包括将动态数据对象和动态授权数据存储在存储器中。分别产生动态数据对象和动态授权数据的不同散列特征,并将其存储在存储器中。当用户希望修改动态数据对象时,必须确定所述用户是否被授权修改动态数据对象。如果所述用户被授权,那么,动态授权数据被修改(例如,失败尝试计数器加”,并产生新的动态授权数据的散列特征。然后,存回到存储器中。
如果所述用户被授权修改动态数据对象,那么,就允许进行修改。然后重新计算对应的散列特征并将其存回到存储器中。只有新产生的两个散列特征值与预先存入存储器中的值相匹配时,才认为所述动态数据对象是可信的。
详细说明现在将参照


本发明的各种特征,其中,用相同的参考符号来标识相同的部件。
现在将结合几个示范性实施例更详细说明本发明的各个方面。为了便于理解本发明,我们借助于用计算机系统单元执行一系列操作来说明本发明的许多方面。在每一个实施例中将可以看出,各种操作可以通过专用电路(例如,实现专用功能的互连的分立逻辑门)、通过由一个或多个处理器执行的程序指令、或者通过两者组合来完成。而且,本发明还可以考虑在任何形式的计算机可读载体、例如固体存储器、磁盘、光盘或载波(例如,无线电频率,音频或光频载波)中完整地实施,这些载体包含可以使处理器实现所述技术的相应的计算机指令集。因此,本发明的各个方面可以用许多不同形式实现,并且所有这些形式都属于本发明的范围。对于本发明的每一方面,任何这种形式的实施例都可以称为“配置”成完成所述操作的“逻辑”,或者称为完成所述操作的“逻辑”。
在本发明的一个方面,提供使系统免遭对存储在系统内部存储器中的数据的未授权修改的方法和装置。具体地说,本发明的技术针对为两类数据(静态数据和动态数据)提供保护的问题。如前所述,静态数据是装入系统后不应该修改的数据。(在某些例子中,可能期望允许修改静态数据,例如,所讨论的设备的授权的服务中心。这种可能性不改变设备的用户决不允许修改所述数据这一事实。)相反,动态数据则是设备用户可能允许修改的数据,但是只有他或她被赋予修改数据的权利(例如,系统操作员)时才能这样做。两类数据都应该防止未授权的修改。然而,当授权后,数据完整性机制不应该防止用户修改动态数据。此外,可能还希望防止两类数据被复制(即,克隆)到其它设备上。
为了便于说明本发明的各种基本原理,我们用Ms表示一个或多个需要保护的静态数据项,用Md表示一个或多个需要保护的动态数据项。一种授权机制应该是允许对动态数据Md进行授权修改。在这样一种授权机制的示范性实施例中,要求用户正确提供访问代码,以便允许修改动态数据。在所述示范性实施例中,访问代码以不可读形式作为静态数据存储在系统的存储器中。访问代码本身是一个随机选取的字符串。可以通过借助于加密算法E、利用秘密秘密密钥Ke对其数据加密来使访问代码成为不可读的。E的合适选择可以是例如上面引用的书(A.Menezes等著)所描述的三模式数据加密标准(DES)算法。但是,也可以选择应用任何其它加密算法。秘密密钥Ke的大小应足够长,以便防止穷举密钥搜索。使用当前技术至少要应用64位。对于三重DES,密钥的大小为112位。由于访问代码可以通过系统用户手工输入,所以其大小(用输入的符号数目表示)可以比较小。例如,在由GSM确定的动态数据的情况下,这种代码可以由最多8个十进制数字组成。
由于访问代码比较小,所以,所述授权方法可能容易受到穷举猜试的攻击。为了防止这种野蛮的攻击,最好还要提供一种限制用户连续输入不正确访问代码次数的机制。这可以通过提供一种保持跟踪输入错误访问代码次数的伪尝试计数器(false-attempt counter)实现。设TryCnt表示输入正确访问代码的失败次数。系统可以设计成当计数器达到预定的限制时则锁定。系统能否从所述锁定状态退出取决于设计的系统所需的安全等级。例如,用户可以使系统接入专门的服务中心,在那里,系统可以在安全控制条件下执行解锁。
在上述讨论中,确保静态数据Ms完整性的某些机制不仅需要保护确定系统参数属性(例如,在GSM中的IMEI)的静态数据部分,而且还要保护构成动态数据授权方法的不变数据单元,例如,表示将允许输入访问代码不成功的最大次数(“预定的限制”),以及授权方法本身的程序代码的执行。
也可以看到,保护动态数据完整性的某些机制不仅需要保护确定系统参数属性的动态数据部分(例如,GSM电话是否锁定到操作员网络上的状态标记),而且还要保护过时变化的授权机制方面的数据,例如,必须随每一次输入访问代码尝试失败而调整的失败尝试计数器TryCnt(例如,加1)。如果变量TryCnt没有被保护,不守纪律的用户可能相当容易对计数器复位,由此达到能够无限次输入尝试代码。存储在扩展存储器中的失败尝试计数器(TryCnt)和所有其它变量是随访问次数变化的,统称为动态授权数据,并用Md_auth表示。
可以按如下方法实现数据对象Ms,Md和Md_auth的完整性。首先讨论数据对象Ms,我们把静态审查散列值或特征Ss与数据对象Ms联系在一起。审查散列值Ss是对Ms(或者至少对其一部分)利用表示为Hs的散列算法计算出来的。Ss值存储在非易失性存储器中。在某些实施例中,Ss值可以与数据对象Ms一起在生产过程期间存储在快速程序存储器中。在另一些实施例中,正如在后面的说明中将假设,数据对象Ms和Ss存储在EEPROM中。这样做的优点是使得有可能在生产过程结束后安装保护的数据对象Ms。
为了使用户免于执行相同操作,系统的处理电路最好包括验证机制,例如,上面认定的美国专利No.6026293中公开的一种验证机制与美国专利No.4748668中公开的算法相结合,所述专利通过引用被全部包括在本文中。因此,根据本发明的一个方面,验证机制不仅用于控制对存储器内容的访问(正如美国专利No.6026293中指出的),而且也用于控制执行散列算法Hs的能力。
如前所述,还需要防止数据从一台设备复制(即,克隆)到另一台设备。为了实现这方面的保护,进一步使通过算法Hs从数据对象Ms计算出来的Ss值是静态参数的函数,所述静态参数最好是存储在处理电路或快速存储器中的设备序列号(用SerNo表示)。在最佳实施例中,系统的每一种实现方案被给予唯一的SerNo值。在另一些实施例中,可以给系统的有限数目的实现方案分配相同的SerNo值,同时,将唯一的SerNo值分配给许多不同系统。把SerNo值作为散列算法Hs的输入参数之一实际上不可能防止数据被系统重使用或者被克隆到另一个相似的系统中。应当指出,实现数据完整性保护的这种方法不需要存储秘密密钥。这是一个重要的优点,因为以保密方式存储秘密密钥要求用昂贵的技术实现反窜改。
现在,转到动态数据的保护,这里使用了两种动态审查散列值。第一动态审查散列值(用Sd表示)保护动态数据对象Md,并用第一动态散列算法(用Hd表示)计算。第二审查动态散列值(用S’d表示)保护动态授权数据(用Md_auth表示)并用第二动态散列算法(用Hd_auth表示)计算。对于Hd和Hd_auth可以使用不同的散列算法。因此,在其它实施例中,只要它们产生不同的特征值,它就可以更有效地应用相同算法(Hd=Hd_auth)。所述最新结果可以利用不同的输入参数产生第二动态审查散列值(S’d)而不是产生第一动态审查散列值(Sd)来实现。例如,第一动态审查散列值可以由确定的Sd=Hd(Md)产生,而第二动态审查散列值可以由确定的S’d=Hd(Md_auth)产生。本发明的这一方面还将在下面结合一些示范性实施例加以说明。
具有两个完全不同的审查散列值的目的如下。每一次,一个用户试图获得对非组合动态数据Md的修改权利时,他或她需要输入所要求的访问代码。但是,在可以使用授权机制前,Md和Md-auth值的完整性(例如,TryCnt)必须首先确认。如果Md和Md_auth通过了这一检查但是用户输入的访问代码错误,则数据对象Md_auth将调整(例如,变量TryCnt可以加1)。由于第二动态审查散列值S’d是Md_auth的函数,那么,就必须重新计算并将计算结果存储回到非易失性存储器中。如果它不是动态数据对象Md_auth的函数,那么,第一动态审查散列值Sd就不必重新计算。
另外,如果Md和Md_auth通过了完整性检查,用户输入了正确的访问代码,那么,用户就可以修改Md构成的动态数据。由于第一动态审查散列值Sd是Md的函数,因此必须重新计算Sd。正如下面将看到的,在某些实施例中,第二动态审查散列值S’d也是Md的函数,因而在这些情况下,也必须重新计算这时的S’d。
不知道访问代码就想修改Md值的恶意用户可能试图通过反复访问尝试并记录在动态数据Md、动态授权数据Md_auth以及它们相关的动态审查散列值(Sd和S’d)中出现的任何变化来绕过完整性机制。用这些知识,这类用户可能能了解保护机制的特征。然而,极大多数这类用户将看到与第二动态审查散列值S’d的产生相关联的特征,但是,不能看到第一动态审查散列值Sd中的任何变化,因为这种情况直到输入正确的访问代码才会出现。(假设用户被授权输入正确的访问代码,因此不会知到第一动态审查散列值Sd是如何变化的任何事情。)本发明的这一方面添加到保护机制的安全性中并且是既设置动态数据对象Md的审查散列值又设置动态授权数据Md_auth的审查散列值的原因。
图2是说明根据本发明的实施例、确保只有授权才能对动态数据对象Md进行修改的技术的流程图。在所述示范性实施例中,不允许做任何修改,如果未授权就对动态数据对象进行修改,那么要做的第一件事情就是产生第一和第二动态审查散列值的期望值,将这些值分别与存储值Sd和S’d进行比较(步骤201)。如果期望值中的任何一个与对应的存储值不匹配(判定模块203中的“NO”路径),则表明是未授权的修改并采取相应的步骤,例如锁定系统(步骤205)。
或者,如果两个期望动态审查散列值都与对应的存储值匹配(判定模块203中的“YES”路径),那么,动态数据对象Md和动态授权数据Md_auth(例如,TryCnt)都通过了完整性检查,并允许修改例程继续进行。
下面,例程确定用户是否被授权进行修改。在所述实施例中,它包括确定前面进行的失败尝试的次数,获得修改动态数据对象的授权是否超过预先确定的限制(决策模块207)。因此,动态授权数据Md_auth在本发明中包括计数器的值TryCnt。如果TryCnt的当前值比预先确定的限制大(决策模块207中的“YES”路径),那么不允许再进行尝试,并使系统进入锁定状态(步骤205)。
如果访问失败尝试的次数没有超过预定的限制(决策模块207中的“NO”路径),则通过确定用户是否被授权修改使授权例程继续(决策模块209)。这可以以任何方式进行。例如,如上所述,用户可以提供一个与预先存入值进行比较的访问代码。然而,使用的具体授权技术不是本发明的实质方面,可以选择应用其它技术。例如,可以要求用户插入一张有效的密钥卡或其它硬件保密卡。在其它选择中,可以检查用户的一些物理属性,例如指纹,以便确认所述用户已被授权。
如果用户没有通过授权检查(判定模块209中的“NO”路径),就调整动态授权数据Md_auth,这时,失败尝试计数器(TryCnt)加1(步骤211),因此它表示已经进行了另一次失败的尝试。由于第二个动态审查散列值S’d是失败尝试计数器的函数,所以它也将重新计算并存回到存储器中(步骤213)。
如果用户通过了授权检查(判定模块209中的“YES”路径),那么,就允许修改动态数据对象Md(步骤215)。在所述修改之后,由于它是动态数据对象Md的函数,所以重新计算第一动态审查散列值Sd并存回到存储器中(步骤217)。在某些实施例中,最好第二动态审查散列值S’d不仅是动态授权数据的函数、而且也是动态数据对象Md的函数。这可能是有用的,例如,它将使恶意的用户确定动态授权数据和第二动态审查散列值之间的映射更加困难。在这种情况下,或者如果TryCnt被调整(例如,复位到初始值),那么,每当对动态数据对象Md进行授权的修改,第二动态审查散列值S’d就需要重新计算并且将结果存回到存储器中(选择步骤219)。
上述技术仅仅是参照本发明所有实施例的许多可能的实施例中的一个。例如,在确定用户是否授权进行修改之前对动态数据对象Md和动态授权数据Md_auth的完整性进行检查不是必不可少的。可以产生另一个实施例,在所述实施例中,完整性的检查可以在进行确定用户所需的修改前的那一刻执行,例如,在用户已经证明自已被授权之后、或者在发现TryCnt还没有达到其预定限制之后而用户已经证明自已被授权之前。
上述技术可以用一些不同方法实现。下面将结合图3的方框图说明第一个实施例。在所述系统中,包括处理电路300的ASIC通过系统总线307与快速程序存储器301、RAM 303和EEPROM 305互连。处理电路300包括微处理器309、定时器和控制器的逻辑电路311以及两种形式的存储器PSRAM 313和IROM 315。IROM 315存储引导代码317以及在下面将更详细说明的其它数据。
现在将集中讨论本实施例与确保静态数据Ms完整性相关的那些方面,其中Ms与其它相关的静态审查散列值Ss一起存储在EEPROM305中。如前所述,静态审查散列值Ss由静态散列算法Hs产生,其程序代码319存储在IROM 315中。存储在EEPROM 305中的静态审查散列值Ss的值可以在系统外、在将静态数据Ms转移到EEPROM 305中之前产生,或者,在静态数据对象Ms首先转移到EEPROM 305时通过处理电路300产生。在后一种情况下,最好通过授权程序对访问执行散列算法Hs的程序代码319并且将其计算值存储到处理电路300外面的非易失性存储器(例如,EEPROM 305)中的能力进行控制。公用/专用密钥加密方案可用于此目的。程序代码323和用于授权程序的公开密钥321存储在处理电路300的IROM 315中。
如前所述,通过静态散列算法Hs计算的静态审查散列代码Ss的值不仅仅随使用哪一种静态散列算法而变而且与输入参数的值有关。可以以静态数据Ms的函数的形式严格计算Ss。但是,在本实施例中,最好还有防止复制的保护。为了实现这种保护,向静态散列算法Hs输入的参数为静态数据Ms和唯一的(或几乎是唯一的)静态参数,例如,上述参数SerNo。这可以表示为以下形式Ss=Hs(Ms,SerNo)SerNo的值可以在生产快速程序存储器301时存储到快速程序存储器301中,并要用不能改变其值的方法完成。
在静态审查散列值Ss被存储到EEPROM 305中后,执行静态散列算法Hs的程序代码319,无论何时都需要确保存储在EEPROM 305中的静态数据Ms不被修改。例如,这可以在定时器和控制器逻辑电路311的指导下定期地进行。将静态数据Ms和SerNo作为输入信号提供给静态散列算法Hs。新产生的绝不会出现在处理电路300外的静态审查散列值与存储在EEPROM 305中的静态审查散列值进行比较。任何不匹配都表示静态数据Ms被修改了。
现在,集中讨论包含在确保动态数据Md完整性的那些方面。动态数据对象Md与动态授权数据(此时为失败尝试计数器(TryCnt))、以及第一和第二动态审查散列值Sd和S’d一起存储在EEPROM 305中。其程序代码325存储在IROM 315中的单个动态散列算法Hd根据接收的输入参数计算预期的第一或第二动态审查散列值Sd或S’d。
在将动态数据Md转移到系统存储器(例如,EEPROM 305)中之前,可以在系统外面计算第一第二动态审查散列值Sd和S’d的初始值,或者当动态数据对象Md被转移到系统的存储器中、但是在静态数据对象Ms和Ss也已经保存之后,可以在处理电路300内计算。
通过动态散列算法Hd计算的第一动态审查散列值Sd的值是动态数据对象Md的函数,但最好不是失败尝试计数器值TryCnt的函数。在最佳实施例中,第一动态审查散列值Sd取决于Hd本身和Md以及Ss的值。这可以表示为以下形式Sd=Hd(Md,Ss)将可以看到,由于Ss是SerNo本身的函数,所以Sd也是SerNo的函数。
类似地,通过动态散列算法Hd来计算第二动态审查散列值S’d,后者至少是动态授权数据Md_auth的函数,在此情况下所述动态授权数据Md_auth是失败尝试计数器值TryCnt。然而,为了使保护方案更难反演,第二动态审查散列值S’d最好依赖于Hd本身和Md、SerNo以及TryCnt的值。这可以表示为以下形式S’d=Hd(Md,SerNo,TryCnt)为了表明其有效性,动态数据Md必须通过两种测试。一种测试是,保存的数据由处理电路300通过计算给定控制瞬间的期望的第一审查散列值来检查。把决不会出现在处理电路300外的所述计算值与预先存储在EEPROM 305中的第一动态审查散列值Sd进行比较。如果两个值相互不同,那么,表明动态数据Md已被修改。
在第二种测试中,存储的数据由处理电路300通过计算给定瞬间的期望的第二动态审查散列值来检查。把也决不会出现在处理电路300外的所述计算值与预先存储在EEPROM 305中的第二动态审查散列值S’d进行比较。同样,如果两个值相互不同,那么,表明动态数据Md已被修改。应当指出,即使第二动态审查散列值S’d不是动态数据对象Md的函数,所述不匹配也表示动态授权数据(例如,失败尝试计数器值TryCnt)被窜改。因此,也可以设想,动态数据对象Md已经在未授权的情况下被修改。
只有两种测试都成功地通过时动态数据对象Md才看作为可信的(即没有出现未授权的修改)。如果动态数据对象Md已被证实为可信的,那么,用户可以通过成功地完成访问过程来获得通向修改动态数据对象Md的权力的入口。在这里说明的示范性实施例中,访问过程包括用户通过输入设备,例如键盘(未示出),输入访问代码。期望的访问代码327以加密形式被存储在EEPROM 305中并且随后在处理电路300内利用秘密密钥Ke 329和解密算法进行加密,,所述解密算法的程序代码331存储在IROM 315中。
如果用户成功地完成了访问过程并修改了动态数据对象Md,那么,就执行动态散列算法325,计算第一和第二动态审查散列值Sd和S’d的新值。(在第二动态审查散列值不是动态数据对象Md的函数的实施例中,如果动态授权数据一例如,失败尝试计数器的值TryCnt-还没有被修改,那么,仅仅需要计算第一动态审查散列值的新值。)然后,将这些新值存储到EEPROM 305中,供以后的动态数据完整性检查使用。如前所述,由于用户已经确认,他或她被授权,因而没有恶意,因此总线307上的这些值的表示被看作是安全的。
如果用户的访问尝试失败了,就需要修改存储在EEPROM 305中的动态授权数据(在本实施例中为失败尝试计数器TryCnt)。在进行这种修改时,由于S’d是TryCnt的函数,所以,保存的第二动态审查散列值S’d将不再有效。因此,必须执行动态散列算法Hd以便重新计算第二动态审查散列值S’d的新值。然后,将所述新值存入EEPROM305中。在进行这些操作时,把第二动态审查散列值S’d送入总线307,因此有可能把第二动态审查散列值暴露给恶意用户,由于他或她仍将没有足够的信息指明如何可以计算第一动态审查散列值Sd,这时,用户将没有足够的信息去确定如何绕过动态数据完整性检查机制。由于第一和第二动态审查散列值都需要成功地完成动态数据完整性检查机制,因此系统是安全的。
在图4的方框图中说明了本发明的可供选择的实施例。在所述实施例中,与使用秘密密钥Ke相关联的有价值的加密配置方案避免使用公用/专用密码系统保护访问代码。所述实施例不同于图3所示的实施例之处在于第二公开密钥401存储在IROM 215中。允许将第二公开密钥401存储在IROM 215中是第二公开密钥401的公开特征。相反,保持图3的秘密密钥Ke 329的秘密需要将所述密钥存储在安全的不希望读出的地方。
可以在不泄漏由生产厂家使用的匹配的秘密密钥的的情况下使第二公开密钥401成为公开的。因此,在所述实施例中,有可能避免为安全地存储秘密密钥需要的昂贵技术。
一种系统和方法(例如,在美国专利No.4405829的中公开的)可以用来有效地对图4所示实施例的访问系统进行加密。美国专利No.4405829通过引用而被全部包括在本文中。
由于要求使用非标准的处理电路(例如,所述电路不仅包括标准的微处理器,而且还包括特殊的程序代码和存储在ASIC的IROM中的参数),上述实施例可能要承担一些附加的费用才能实现。在图5的方框图中说明的另一个可选择的实施例中可避免所述成本。在所述实施例中,所有的程序代码和与静态和动态数据完整性机制相关联的参数都存储在快速程序存储器501中,而不是IROM 315中。为了消除恶意用户在快速程序存储器中对所述数据进行简单编程的可能性,在编程后,应对快速程序存储器的内容使用部分冻结或琐定(即设置为非重编程的)功能。在图5中,示出了存储在快速程序存储器501的可锁定部分503中的所述程序代码和相关参数。
已经参考具体的实施例对本发明进行了说明。但是,本专业的技术人员将容易明白,用特殊形式而不是上述最佳实施例能够实现本发明。可以在不脱离本发明精神的情况下这样做。最佳实施例仅仅是说明,并没有考虑任何限制。本发明的范围由所附权利要求书限定,而不是前面的描述,所有属于所述权利要求书范围内的修改和等价内容都包括在内。
权利要求
1.一种确保动态数据对象完整性的方法,所述动态数据对象包括一个或多个数据项,所述方法包括将所述动态数据对象存入存储器中;将动态授权数据存入所述存储器中;应用第一动态散列算法、从包括所述动态数据对象的一个或多个参数产生初始的第一动态审查散列值;应用第二动态散列算法、从包括所述动态授权数据的一个或多个参数产生初始的第二动态审查散列值;将所述初始的第一动态审查散列值存入所述存储器中;将所述初始的第二动态审查散列值存入所述存储器中;确定用户是否被授权修改所述动态数据对象;如果用户未被授权修改所述动态数据对象,那么调整所述动态授权数据;将所述调整后的动态授权数据存入所述存储器中;应用第二动态散列算法、从包括所述调整后的动态授权数据的一个或多个参数产生调整后的第二动态审查散列值;以及将所述调整后的第二动态审查散列值存入所述存储器中;以及如果用户被授权修改动态数据对象,那么允许用户修改所述动态数据对象;将所述修改后的动态数据对象存入所述存储器中;应用第一动态散列算法、从包括所述修改后的动态数据对象的一个或多个参数产生调整后的第一动态审查散列值;以及将所述调整后的第一动态审查散列值存入所述存储器中。
2.如权利要求1所述的方法,其特征在于所述从其中产生所述第二动态审查散列值的一个或多个参数还包括与所述动态数据对象有关的参数;以及所述方法还包括如果用户被授权修改所述动态数据对象,那么利用所述第二动态散列算法,从包括所述修改后的动态数据对象、预先确定的值以及静态参数的一个或多个参数产生调整后的第二动态审查散列值;以及将所述调整后的第二动态审查散列值存入所述存储器中。
3.如权利要求1所述的方法,其特征在于还包括在允许所述用户修改所述动态数据对象之前,确定所述动态数据对象是否为未授权的修改结果,其中,进行所述确定的方法是利用所述第一动态散列算法、从包括所述动态数据对象的所述一个或多个参数产生期望的第一动态审查散列值;应用第二动态散列算法、从包括所述动态授权数据的所述一个或多个参数产生期望的第二动态审查散列值;将所述期望的第一动态审查散列值与存储在所述存储器中的所述初始的第一动态审查散列值进行比较,如果所述期望的第一动态审查散列值与存储在所述存储器中的所述初始的第一动态审查散列值不匹配,则表明所述动态数据对象是未授权的修改结果;以及将所述期望的第二动态审查散列值与存储在所述存储器中的所述初始的第二动态审查散列值进行比较,如果所述期望的第二动态审查散列值与存储在所述存储器中的所述初始的第二动态审查散列值不匹配,则表明所述动态数据对象是未授权的修改结果。
4.如权利要求3所述的方法,其特征在于所述动态数据对象是否为未授权的修改结果的所述确定是在确定所述用户是否被授权修改所述动态数据对象之前进行的。
5.如权利要求1所述的方法,其特征在于所述第一动态散列算法与第二动态散列算法相同。
6.如权利要求1所述的方法,其特征在于所述动态授权数据包括失败尝试计数器值,后者表示为获得修改所述动态数据对象的授权已经进行了多少次失败尝试。
7.如权利要求1所述的方法,其特征在于所述方法在第一设备中实现;以及从其中产生所述第一动态审查散列值的所述一个或多个参数还包括静态参数。
8.如权利要求7所述的方法,其特征在于所述静态参数是把所述第一设备与第二设备区别开的序列号。
9.如权利要求8所述的方法,其特征在于从其产生中所述第二动态审查散列值的所述一个或多个参数还包括静态参数。
10.如权利要求1所述的方法,其特征在于所述方法在第一设备中实现;以及从其中产生所述第二动态审查散列值的所述一个或多个参数还包括静态参数。
11.如权利要求10所述的方法,其特征在于所述静态参数是把所述第一设备与第二设备区别开的序列号。
12.如权利要求1所述的方法,其特征在于从其中产生所述第一动态审查散列值的所述一个或多个参数还包括通过静态散列算法产生作为静态数据对象的函数的静态审查散列值。
13.如权利要求12所述的方法,其特征在于所述静态散列算法与所述第一动态散列算法相同。
14.如权利要求13所述的方法,其特征在于所述第一动态散列算法与所述第二动态散列算法相同。
15.如权利要求1所述的方法,其特征在于确定所述用户是否被授权修改所述动态数据对象的操作包括接收所述用户的访问代码;以及确定所述访问代码是否为授权的访问代码。
16.如权利要求15所述的方法,其特征在于所述确定访问代码是否为授权的访问代码的操作包括从存储器检索加密的授权访问代码;将所述加密的授权访问代码解密;以及将所述解密的授权访问代码与从所述用户接收到的所述访问代码比较。
17.如权利要求15所述的方法,其特征在于所述确定访问代码是否为授权的访问代码的操作包括从存储器检索被加密的授权访问代码;对从所述用户接收到的所述访问代码加密;以及将所述检索的加密的授权访问代码与从所述用户接收到的加密的访问代码进行比较。
18.一种确定存储在存储器中的动态数据对象是否为未授权修改结果的方法,所述方法包括从所述存储器检索初始的第一动态审查散列值;从所述存储器检索初始的第二动态审查散列值;应用第一动态散列算法、从包括所述动态数据对象的一个或多个参数产生期望的第一动态审查散列值;应用第二动态散列算法、从包括所述动态授权数据的一个或多个参数产生期望的第二动态审查散列值;将所述期望的第一动态审查散列值与从所述存储器中检索的所述初始的第一动态审查散列值进行比较,如果所述期望的第一动态审查散列值与从所述存储器中检索的所述初始的第一动态审查散列值不匹配,那么,表明所述动态数据对象是未授权的修改结果;以及将所述期望的第二动态审查散列值与从所述存储器中检索的所述初始的第二动态审查散列值进行比较,如果所述期望的第二动态审查散列值与从所述存储器中检索的所述初始的第二动态审查散列值不匹配,那么,表明所述动态数据对象是未授权的修改结果。
19.一种用于确保包括一个或多个动态数据项的动态数据对象完整性的装置,所述装置包括将所述动态数据对象存入存储器的逻辑部件;将动态授权数据存入所述存储器的逻辑部件;应用第一动态散列算法、从包括所述动态数据对象的一个或多个参数产生初始的第一动态审查散列值的逻辑部件;应用第二动态散列算法、从包括所述动态授权数据的一个或多个参数产生初始的第二动态审查散列值的逻辑部件;将所述初始的第一动态审查散列值存入所述存储器的逻辑部件;将所述初始的第二动态审查散列值存入所述存储器的逻辑部件;确定用户是否被授权修改所述动态数据对象的逻辑部件;如果所述用户未被授权修改所述动态数据对象、则执行以下操作的逻辑部件调整所述动态授权数据;将所述调整后的动态授权数据存入所述存储器中;应用第二动态散列算法、从包括所述调整后的动态授权数据的一个或多个参数产生调整后的第二动态审查散列值;以及将所述调整后的第二动态审查散列值存入所述存储器中;以及如果所述用户被授权修改所述动态数据对象,则执行以下操作的逻辑部件允许所述用户修改所述动态数据对象;将所述修改后的动态数据对象存入所述存储器中;应用所述第一动态散列算法、从包括所述修改后的动态数据对象的一个或多个参数产生调整后的第一动态审查散列值;以及将所述调整后的第一动态审查散列值存入所述存储器中。
20.如权利要求19所述的装置,其特征在于从其中产生所述第二动态审查散列值的所述一个或多个参数还包括与所述动态数据对象有关的参数;以及所述装置还包括如果所述用户被授权修改所述动态数据对象,则执行以下操作的逻辑部件应用所述第二动态散列算法、从包括所述修改后的动态数据对象的所述一个或多个参数、所述预确定值以及所述静态参数产生调整后的第二动态审查散列值;以及将所述调整后的第二动态审查散列值存入所述存储器中。
21.如权利要求19所述的装置,其特征在于还包括逻辑部件,它在允许所述用户修改所述动态数据对象之前运行、以便确定所述动态数据对象是否为未授权的修改结果,其中,执行所述确定操作的步骤如下应用所述第一动态散列算法、从包括所述动态数据对象的所述一个或多个参数产生期望的第一动态审查散列值;应用所述第二动态散列算法,从包括所述动态授权数据的所述一个或多个参数产生期望的第二动态审查散列值;将所述期望的第一动态审查散列值与存储在所述存储器中的所述初始的第一动态审查散列值进行比较,如果所述期望的第一动态审查散列值与存储在所述存储器中的所述初始的第一动态审查散列值不匹配,那么,表明所述动态数据对象是未授权的修改结果;以及将所述期望的第二动态审查散列值与存储在所述存储器中的所述初始的第二动态审查散列值进行比较,如果所述期望的第二动态审查散列值与存储在所述存储器中的所述初始的第二动态审查散列值不匹配,那么,表明所述动态数据对象是未授权的修改结果。
22.如权利要求21所述的装置,其特征在于所述动态数据对象是否为未授权的修改结果的确定是在确定所述用户是否被授权修改所述动态数据对象之前进行的。
23.如权利要求19所述的装置,其特征在于所述第一动态散列算法与所述第二动态散列算法相同。
24.如权利要求19所述的装置,其特征在于所述动态授权数据包括失败尝试计数器值,后者表示为获得修改所述动态数据对象的授权已经进行了多少次失败尝试。
25.如权利要求19所述的装置,其特征在于所述装置在第一设备中实现;以及从其中产生所述第一动态审查散列值的所述一个或多个参数还包括静态参数。
26.如权利要求25所述的装置,其特征在于所述静态参数是将所述第一设备与第二设备区别开的序列号。
27.如权利要求26所述的装置,其特征在于从其中产生所述第二动态审查散列值的所述一个或多个参数还包括所述静态参数。
28.如权利要求19所述的装置,其特征在于所述装置在第一设备中实现;以及从其中产生所述第二动态审查散列值的所述一个或多个参数还包括静态参数。
29.如权利要求28所述的装置,其特征在于所述静态参数是将所述第一设备与第二设备区别开的序列号。
30.如权利要求19所述的装置,其特征在于从其中产生所述第一动态审查散列值的所述一个或多个参数还包括静态审查散列值,所述静态审查散列值是通过静态散列算法、作为静态数据对象的函数产生的。
31.如权利要求30所述的装置,其特征在于所述静态散列算法与所述第一动态散列算法相同。
32.如权利要求31所述的装置,其特征在于所述第一动态散列算法与所述第二动态散列算法相同。
33.如权利要求19所述的装置,其特征在于确定所述用户是否被授权修改所述动态数据对象的所述逻辑部件包括从所述用户接收访问代码的逻辑部件;以及确定所述访问代码是否为授权的访问代码的逻辑部件。
34.如权利要求33所述的装置,其特征在于确定所述访问代码是否为所述授权的访问代码的所述逻辑部件包括从存储器检索加密的授权访问代码的逻辑部件;对所述加密的授权访问代码进行解密的逻辑部件;以及将所述解密的授权访问代码与从所述用户接收到的所述访问代码进行比较的逻辑部件。
35.如权利要求33所述的装置,其特征在于确定所述访问代码是否为所述授权的访问代码的所述逻辑部件包括从存储器检索加密的授权访问代码的逻辑部件;对从所述用户接收到的所述访问代码加密的逻辑部件;以及将所述检索的加密的授权访问代码与从所述用户接收到的所述加密的访问代码进行比较的逻辑部件。
36.一种用于确定存储在存储器中的动态数据对象是否为未授权的修改结果的装置,所述装置包括从存储器中检索初始的第一动态审查散列值的逻辑部件;从存储器中检索初始的第二动态审查散列值的逻辑部件;应用第一动态散列算法从包括所述动态数据对象的一个或多个参数产生期望的第一动态审查散列值的逻辑部件;应用第二动态散列算法从包括所述动态授权数据的一个或多个参数产生期望的第二动态审查散列值的逻辑部件;将所述期望的第一动态审查散列值与从所述存储器中检索的所述初始的第一动态审查散列值进行比较、如果所述期望的第一动态审查散列值与从所述存储器中检索的所述初始的第一动态审查散列值不匹配、则指示所述动态数据对象是未授权的修改结果的逻辑部件;以及将所述期望的第二动态审查散列值与从所述存储器中检索的初始的第二动态审查散列值进行比较、如果所述期望的第二动态审查散列值与从所述存储器中检索的所述初始的第二动态审查散列值不匹配、则指示所述动态数据对象是未授权的修改结果的逻辑部件。
全文摘要
通过把动态数据对象和动态授权数据存储在存储器中来确保包括一个或多个动态数据项的动态数据对象的完整性。例如,动态授权数据可以是为获得授权进行了多少次失败尝试的记数,并且在任何时候进行了另一次失败尝试至少要修改所述记数。无论何时都可以修改动态数据对象和动态授权数据,其对应的散列值就要重新计算并存回到存储器中。只有新产生的两个散列特征值与预先存储在存储器中的值匹配时,动态数据对象才被看作为可信的。对动态数据对象的修改只能在用户已经执行并通过授权程序后才能进行。
文档编号G06F21/00GK1466710SQ01816218
公开日2004年1月7日 申请日期2001年9月25日 优先权日2000年9月26日
发明者B·斯梅茨, B 斯梅茨 申请人:艾利森电话股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1