CN1553315A - 在安全引导装载程序中使用散列技术 - Google Patents

在安全引导装载程序中使用散列技术 Download PDF

Info

Publication number
CN1553315A
CN1553315A CNA031423922A CN03142392A CN1553315A CN 1553315 A CN1553315 A CN 1553315A CN A031423922 A CNA031423922 A CN A031423922A CN 03142392 A CN03142392 A CN 03142392A CN 1553315 A CN1553315 A CN 1553315A
Authority
CN
China
Prior art keywords
code
electronic equipment
hashed value
machine instruction
nonvolatile memory
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.)
Pending
Application number
CNA031423922A
Other languages
English (en)
Inventor
D・莫兰斯
D·莫兰斯
贝纳勒
J·兰格
D·西蒙
陈陵
J·D·贝纳勒
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Priority to CNA031423922A priority Critical patent/CN1553315A/zh
Publication of CN1553315A publication Critical patent/CN1553315A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

包括引导程序代码的机器指令被埋在电子游戏控制台的一个关键部件内,在那里,这些机器指令不容易被使用或修改。引导程序代码对只读存储器(ROM)中的预装载程序部分实施散列技术,将结果与引导程序代码中所保存的预期的散列值进行比较。预装载程序进一步验证引导过程,这对ROM中的代码实施散列技术,以便为代码获得一个散列值。按照为这个散列码定义预期值的数字签名值来验证结果。若无法获得任何预期的结果,则终止引导过程。由于引导程序代码确认预装载程序,并且预装载程序确认ROM中的代码的剩余部分,因此,该技术可用来确保:用于引导设备的代码还没有被修改或取代。

Description

在安全引导装载程序中使用散列技术
技术领域
本发明通常涉及安全地引导包括一个处理器的电子设备,尤其关于确保:当引导这种电子设备时,该处理器只执行所需的机器指令,以防止在引导过程中执行代替的或替换的机器指令。
背景技术
当最初被激活或重置时,有许多种类型的电子设备都必须经历引导过程。在引导过程中,通常使用控制电子设备的基本操作特征的机器指令,这些机器指令被存储在只读存储器(ROM)中并被加以执行,以便对设备进行初始化并进一步将机器指令载入将被执行的随机存取存储器(RAM),从而使电子设备能够执行更多的功能。例如,当个人计算机被引导时,执行包括基本输入-输出系统(BIOS)的指令,这些指令能够将操作系统从硬盘驱动器载入RAM并使计算机的中央处理器(CPU)执行操作系统。术语“引导”是较早的、也许更具描述性的术语“引导程序”的简略形式。
必须被引导的其他类型的电子设备包括游戏控制台、数字记录设备、个人数据系统,以及包括必须执行一套初始机器指令以进一步启用功能特性(同时,额外的机器指令被载入存储器并被执行)的某种形式的处理器的几乎任何其他的电子产品。由于引导过程确定电子设备的初始状态,因此,它影响设备的重要的操作参数,并会对完成引导过程之后如何使用电子设备产生重要的影响。对于出售电子设备的公司而言,防止引导过程的修改很重要,可以避免因使用设备而产生的收入损失。
例如,在电子游戏工业中,用于运行电子游戏而被出售的游戏控制台的许多商业价值来自于运行在游戏控制台上的游戏软件所产生的许可收入。相应地,在引导过程中被装载的机器指令执行功能特性,以防止未经许可的软件副本在游戏控制台上运行,并强制执行制造商有关使用用于运行电子游戏的游戏控制台的策略。某些用户往往将关于运行未经许可的软件副本的限制和强制执行有关游戏控制台的这类策略的限制视作一种挑战和一种对于使用游戏控制台的讨厌的局限。这些用户通过“胡乱删改”游戏控制台电路和软件,来努力克服这些限制。例如,避开这些限制的一种方法是:使运行于游戏控制台上的引导过程装载一个被改变的软件内核(其中,已进行某些更改)。这些更改除去游戏控制台的制造商所规定的限制,这样会导致制造商失去对游戏控制台的使用方法的控制,并且,如果未经许可的软件游戏副本由此而能够运行于游戏控制台上,则会引起收入损失。相应地,游戏控制台制造商通常不遗余力地防止电脑黑客在引导过程中使用被改变的软件内核。
在使用必须进行引导的电子设备的其他技术领域中,存在类似的问题。例如,根据用户每月支付的费用来限制所接收的频道的卫星电视接收器的制造商必须确保其安全策略和其产品的使用策略得到遵循,以便消费者只能够按照电子设备的许可证的条款来使用它。电脑黑客也许能够修改使卫星接收器中的处理器确定用户已付费观看的电视频道的代码,从而无须正确支付许可证费用,就可以接收和观看所有的频道。
相应地,将会需要确保:在电子设备的引导期间,只执行经授权的软件代码。所使用的任何技术都应该防止计划在设备的引导期间被执行的经授权的软件被一套修改的或替换的机器指令取代,从而确保电子设备执行功能特性以及制造并/或将电子设备销售给最终用户的一方的策略。用于防止电脑黑客使有关使用电子设备的限制和策略(被包括在电子设备的引导期间所装载的代码中)失效的各种已知方法显然没有获得完全的成功。通过使用包含替换软件代码的内插式电路卡,电脑黑客(将电路卡耦合到电子设备的电路中)可以至少局部地击败已知的安全方法。显而易见,需要一种更安全、更严格的方法,以防止在电子设备的引导过程中插入和执行替换代码。
发明内容
本发明通常应该可以应用于包括一个处理器并在最初被激活或重置时必须进行引导(以便可以执行电子设备的其他功能)的几乎任何的电子设备。在这种设备中,保护在设备操作期间被使用的专利信息并防止在引导过程中执行未经授权的代码(以破坏有关电子设备的操作和应用的策略),这常常将会很重要。
最可能被取代以破坏电子设备的所需策略和功能特性的部件之一是非易失存储器,其中存储有定义如何使用电子设备的机器指令。相应地,本发明尝试确认:包括这种存储器中的机器指令的代码得到授权(即,还没有用改变电子设备的所需功能特性和策略的机器指令来修改或取代)。在本发明中,经授权的代码包括一个预定义部分(也被称作“预装载程序代码”)。即使对经授权的代码的剩余部分进行更改或电子设备将不进行引导,这个预定义部分也必须保持不变。
最初执行一个程序,以确保代码的预定义部分被授权。在这个程序中,对预定义部分实施散列技术,产生第一个散列值。然后,将这第一个散列值与被保存在电子设备的电路部件(与存储代码的存储器分开)中的存储的散列值进行比较,以验证代码的预定义部分被授权。如果第一个散列值等于所存储的散列值,则执行代码的预定义部分;如果第一个散列值不等于所存储的散列值,则终止电子设备的引导。如果启用代码的预定义部分,则基本上所有的代码都被实施散列技术,以确定第二个散列值。数字签名被包括在代码的一个不同的部分中,而不是代码的预定义部分中。然后,按照该数字签名来验证第二个散列值,以确保签名的真实性。如果数字签名被验证是真实的,则执行代码;如果不是真实的,则终止电子设备的引导。
为了将第一个值与所存储的散列值进行比较,可以执行电路部件的非易失存储部分中所保存的初始代码。这个初始代码包括所存储的散列值并被保存在图形处理器中,尽管也预期所存储的散列值可能被保存在其他类型的辅助处理器(例如,音频处理器、输入处理器、输出处理器、通信处理器或数字信号处理器)中。当然,若将初始代码和预期的散列值保存在执行初始代码的处理器中,则会更好。执行初始代码,以便对预定义部分实施散列技术,并将第一个散列值和所存储的散列值进行比较。在本发明的一个较佳形式中,初始代码在固件中被永久地定义为预定数量的字节。此外,代码的预定义部分较佳地包括被安排在代码内的预定位置处的预定数量的字节。显而易见,除非所存储的散列值发生对应的变化,否则,代码的预定义部分的尺寸和内容不会被修改,因为那时所存储的散列值将不等于第一个散列值。
预定义代码也包括被用于验证数字签名的一个公共密钥,并具有使代码的加密内核部分能够被解密的机器指令。于是,执行被解密的内核,以完成电子设备的引导。预定义代码使用流动密码程序来执行代码的内核部分的解密。
本发明的另一个方面针对其上存储有包括机器指令的代码的一种存储介质,这些机器指令在电子设备的引导期间被使用,以确定代码是否被授权。通常,如上所述,该存储介质包括内核部分、引导装载程序部分、预装载程序部分和数字签名。
本发明的另一个方面针对必须被引导来进行操作的一种电子设备。该电子设备包括其中存储有多个机器指令的一个非易失存储器。该非易失存储器包括一个主要部分,以及具有预定义的内容、尺寸和位置的一个预装载程序。将处理器耦合到非易失存储器,以便在引导过程中执行机器指令。引导程序代码固件元件规定了机器指令,这些机器指令定义散列算法和预期的散列值。在电子设备的引导期间,最初由处理器来执行引导程序代码固件的机器指令,从而使处理器执行预装载程序部分的散列技术并将结果与预期的散列值进行比较。电子设备及其功能特性的其他细节通常与以上所讨论的方法的各个步骤相一致。
通过在电子设备(例如,游戏控制台)中使用本发明,将会显而易见,若尝试改变在引导过程中被执行的机器指令或尝试用不同的机器指令来代替另一个存储器,则会阻止设备成功引导。相应地,通过确保在电子设备的引导期间只执行经授权的代码,本发明通常应该防止某人修改基本的功能特性或避开将由电子设备执行的所需策略。
附图说明
通过参考以下详细的描述并结合附图,将会更容易、更好地理解本发明的前述各个方面和许多附带优点。在这些附图中:
图1是使用本发明的一种游戏控制台的等比例示意图;
图2A是图1的游戏控制台中所包括的几个功能部件的方框图;
图2B是进行引导并包括一个处理器和存储器的一般电子设备的功能方框图;
图3是示意图,将存储器的各个部分展示为在本发明中被加以配置;以及,
图4是流程图,展示了本发明中所执行的逻辑。
具体实施方式
示范系统
必须强调的是,本发明并不意在局限于只用于游戏控制台,尽管游戏控制台上确实使用了本发明的一个初始较佳实施例。本发明被用于确保不向尝试颠倒工程师代码的用户揭露专利信息,并被用于防止用户避开许可限制和有关使用运行电子游戏的游戏控制台的策略。
如图1所示,示范的电子游戏系统100包括一个游戏控制台102和对可达四个用户输入设备(例如,控制器104a和104b)的支持。游戏控制台102装备有一个内部硬盘驱动器(在该图中未示出)和支持各种形式的便携式光学存储介质(由存储光盘108代表)的一个便携式媒体驱动器。合适的便携式存储介质的例子包括DVD磁盘和CD-ROM磁盘。在这个游戏系统中,游戏程序被较佳地分配,以用于DVD磁盘上的游戏控制台,但是,也预期可能在使用本发明的这种或其他类型的系统上使用其他的存储介质,以强制执行数据安全策略并确保被输入到系统的数字数据的真实性。
游戏控制台102的正面上有四个用于连接到控制器和支撑控制器的狭槽110,但可以修改狭槽的数量和布置。动力按钮112和弹出按钮114也被放置在游戏控制台102的正面上。动力按钮112控制对游戏控制台的通电,弹出按钮114交替地打开和关闭便携式媒体驱动器106的浅盘(未示出),来插入和取出存储磁盘108,以便可以读取其上的数字数据,供游戏控制台使用。
游戏控制台102经由音频/视觉(A/V)接口电缆120连接到电视机或其他显示监视器或屏幕(未示出)。当被连接到传统的交流电线源(未示出)时,电力电缆插头122将电力传达给游戏控制台。可以进一步为游戏控制台102提供数据连接器124,以便(例如)经由传统的电话调制解调器或(更好的是)通过宽带连接而在网络(例如,互联网)上传递数据。
每个控制器104a和104b经由导线(或者通过无线接口)被耦合到游戏控制台102。在所展示的实施中,控制器是兼容的“通用串行总线”(USB),并经由USB电缆130被连接到游戏控制台102。游戏控制台102装备有用于跟游戏软件相互作用并控制游戏软件的众多不同的用户设备中的任何用户设备。虽然图1中没有示出控制器104a的所有细节,但是,控制器104a和104b都装备有两个拇指棒(thumbsticks)132a和132b、一个D垫134、按钮136和两个触发器138。这些控制器只是起代表的作用,可以用其他已知的游戏输入和控制机制来代替图1中所示的机制,或者可以将其他已知的游戏输入和控制机制加入图1中所示的机制,用于游戏控制台102。
可移动或便携式存储设备(MU)140可以随意地被插入控制器104,以提供额外的可移动存储。通过将便携式Mus插入其他控制器,便携式Mus使用户能够存储游戏参数并将它们用于其他控制台上的游戏。在所描述的实施中,虽然可以使用多于或少于两个Mus,但每个控制器都被配置成容纳两个Mus。
游戏系统100能够播放游戏、音乐和录像。预期可以使用被存储在硬盘驱动器上的或从存储光盘108、在线来源或MU 140读取的数字数据来执行其他功能。将游戏控制台设计成防止在游戏控制台上运行未经授权的电子游戏磁盘副本。某些策略也由游戏控制台来强制执行。例如,可以阻止一个地理区域中所出售的软件在不同地理区域中所出售的游戏控制台上执行。游戏控制台软件也执行用于防止视频DVDs复制的一项工业标准方案(MACROVISIONTM)。
某些用户会喜欢击败游戏控制台所执行的这些功能限制和策略。尝试避开这些限制和策略的一种方法是:在游戏控制台中安装一个集成电路(IC)或模块,它用修改版本来取代在引导游戏控制台中使用的、被存储在那里的原来的ROM和代码。对这类替换模块中的机器指令的修改预定在引导过程中进行操作,并取消或改变游戏控制台的制造商或设计者所规定的限制(可防止使用未经授权的副本、视频DVDs复制),以及游戏控制台的其他功能方面和/或策略。但是,利用本发明,要插入未经授权的替换ROM模块以改变引导过程,会非常困难;如果本发明检测到有人尝试在游戏控制台的引导期间使用替换的和未经授权的代码,则会终止引导过程。
为了防止有关引导过程的专利信息被发现,并且为了防止在引导过程中使用被修改的或替换的代码,在引导期间被执行的机器指令的至少某个部分必须与游戏控制台或其他电子设备的ROM内所包括的大多数机器指令保持分开。通常,如果电子设备的外壳被打开,则容易接近电子设备的印刷电路板上的Ics、迹线、连接点和通道,从而能够在物理上进行新的连接和修改,以胡乱删改设备。虽然防止某人接近印刷电路板很困难,但是,利用本发明,要使用作为被安装在印刷电路板上的Ics之一内的固件而被嵌入的机器指令,非常困难。较佳的是,应该为此目的而使用公众不容易从其供应者那里获得的IC,因为它是为电子设备的制造商定做的。此外,用于此目的的IC对于电子设备的操作应该是至关重要的,这样,如果尝试接近被嵌入IC内的固件,则IC的操作和(因而)电子设备的操作将很可能会受到不利的影响。
图2A展示了游戏控制台100内所包括的IC部件中的几个IC部件。CPU 202是主处理器,被用于执行游戏控制台的大多数处理功能。对于多数处理器而言,CPU 202通常必须首先被引导,以便使其能够执行游戏控制台被设计实施的各种功能。CPU 202被双向连接到一个被定制的图形处理器,该图形处理器也是NVIDIA公司所生产的总线和存储控制器芯片204并被指定为NV2A芯片。NV2A芯片被连接到RAM 206,并被连接到作为媒体通信处理器(MCP)208的另一个NVIDIA定做芯片,这样,提供了音频信号处理器性能,耦合到系统存储器,并且也耦合到数据通信的USB端口和以太网端口。MCP 208内包括512个字节的固件,该固件包含引导程序代码212。引导程序代码212基本上被埋在MCP 208内的其他层的下面,并且无法仅仅通过撤去(decapping)这个模块而被获得。为了在物理上获得引导程序代码212,将必须除去其他的叠加层,这将会有效地破坏MCP模块,从而使它和游戏控制台不能使用。另外,由于MCP 208为游戏控制台的制造商而定做,因此,其他人无法在开放的市场上得到它。即使用某种方式来获得引导程序代码,从而使包括这个固件的机器指令“可见”,本发明也会使引导序列不可改变。MCP 208耦合到ROM 210,它包括在游戏控制台100的引导期间被使用的大多数机器指令。
表现了本发明的有关图2B中的部件的更普通的应用。预期自定义CPU 220会包括“被埋”在其内(在CPU的其他层的下面)的固件引导程序代码222。如图2B所示,CPU 220被耦合到RAM 206和ROM 210。由于引导程序代码222包括CPU 220内的固件,因此,通常将无法获得CPU的处理部分与引导程序代码222之间的信号。相应地,对于图2B中所示的实施例而言,获得引导程序代码222并确定它的内容将会更加困难,这样,图2B中的实施例提供了比图2A中的实施例更高的安全性。
图3展示了本发明中所用的ROM 210的各个不同的部分。在被用于游戏控制台100中的较佳实施例中,ROM 210包括一个256千字节存储器模块。ROM210内包括没有被加密的预装载程序230。预装载程序230在较佳实施例中具有近似11个千字节的固定尺寸,它的内容、尺寸和在ROM 210内的位置都被预定义。重要的是,要注意,预装载程序230包括一个被加密的公共密钥231。还有一点很重要:除非对固件引导程序代码212进行对应的更改,否则,预装载程序230的内容需要维持不变,从以下的说明中将清楚地看到这一点。ROM 210也包括被加密的引导装载程序232。此外,ROM 210包括数字签名234和对称密钥236。到目前为止,ROM 210的较大部分专用于存储包括内核238的机器指令。内核238既被压缩,又被加密。内核238内所包括的机器指令定义许多功能特性,并制定有关游戏控制台100的操作的策略。最后,芯片组初始化码240被包括在内,并且,当最初启动游戏控制台时,执行该芯片组初始化码。
图4展示了当游戏控制台102最初被激活或被重置时所执行的一些逻辑步骤。步骤250规定运行ROM 210中的芯片组初始化码。芯片组初始化码240内所包括的机器指令没有被加密;它们定义特殊的配置信息,以及适合完整的游戏控制台的构造的特殊的配置序列。执行芯片组配置所必要的机器代码被包括在引导程序代码中;特殊的值和序列是芯片组初始化码的一部分。此外,CPU的初始化序列被包含在引导程序代码中,并在芯片组初始化码的剩余部分之前被加以执行。接下来,在方框252中,固件引导程序代码212(被埋在MCP 208内)内所包括的机器指令运行单向散列算法,以确定ROM 210中的预装载程序230的散列值。如上所述,在原来的ROM 210(在制造时,它被安装在游戏控制台100内)中,预装载程序230将具有特殊的内容、尺寸和在ROM 210内的位置。相应地,只要预装载程序230还没有被改变或用未经授权的代码取代,通过对预装载程序230内所包括的机器指令实施散列技术而获得的散列值就应该始终保持不变。在较佳实施例中,应用SHA-1单向散列算法来对预装载程序实施散列技术。或者,可以使用MD5散列算法;掌握该技术领域普通技能的人将会理解,还可以使用其他的散列算法。所使用的散列算法被包括在引导程序代码212的机器指令内。
引导程序代码212内也包括作为预装载程序230的预期散列值的一个存储的散列值,以及一个对称密钥。步骤254装载来自引导程序代码的所存储的散列值。引导程序代码212中的机器指令将来自引导程序代码的所存储的散列值与刚刚在步骤252中为预装载程序230而被确定的散列值进行比较。在决定步骤256中这样比较,以确定所存储的散列值是否等于曾被确定的实际的散列值。如果否,则引导程序代码212中的机器指令执行步骤258,该步骤停止游戏控制台102的引导过程。相应地,将会显而易见,如果用不同的ROM代替原来的ROM,并且,新的被替换的或未经授权的ROM不包括一个相同的预装载程序部分(当用单向散列码算法来处理时,它将产生预期的散列值),则决定步骤256将检测对预装载程序230的修改并终止引导过程。
假设所存储的预期的散列值等于曾被确定的实际的散列值,则步骤260执行包括ROM 210的预装载程序代码部分的机器指令。可以执行这个步骤,因为将会显而易见,预装载程序机器指令等同于被其制造商安装在游戏控制台内的ROM中原先所包括的预装载程序代码。
接下来,步骤262规定为整个ROM 210确定一个散列值(除数字签名234以外)。预装载程序也包括用于确定单向散列值的机器指令,并再次较佳地使用SHA-1或MD5散列算法(或其他众所周知的单向散列算法之一)来为ROM 210的大部分内容确定散列值(数字签名不被包括在被实施散列技术的ROM 210的内容中)。只要应用同一个散列码算法,除非机器指令已被更改或已用未经授权的机器指令取代,否则,结构就应该始终保持不变。即使改变在ROM 210中被实施散列技术的机器指令的一个单一的位,也会实质上改变所得到的散列值。
在步骤264中,将ROM 210中的公共密钥231应用于数字签名234,以便为该数字签名产生一个对应的值。(在可以应用公共密钥之前,用被存储在MCP的引导程序代码中的对称密钥来对它进行解密,但是,如果没有用这个对称密钥对公共密钥进行加密,则不要求执行这个步骤。)接下来,预装载程序230中的机器指令确定公共密钥是否能够在图4中的决定步骤266中验证签名;这个步骤确定来自步骤264的值是否等于在步骤262中被确定的ROM的散列值。如果否,则步骤268停止引导操作,因为将显而易见,自从创建ROM的原来的内容以后,ROM中的签名已发生变化。众所周知,如果原先使用只有游戏控制台的制造商知道的私人密钥来为签名值签名,则可以使用公共密钥来确认签名的有效性。如果某人胡乱删改游戏控制台100并尝试修改ROM210的任何部分,则将在决定步骤266中检测到散列值的变化,从而导致在步骤268中终止引导过程。相反,如果数字签名与ROM的散列码相匹配,则将会显而易见,ROM内容等同于被授权的原来的内容。
假设在步骤264中根据数字签名而被确定的值在决定步骤266中验证ROM的散列码,则步骤270使引导能够进行到结束,从而使内核238能够被复制到RAM 206中,然后被解压并被解密到RAM中。预装载程序230包括用于为引导装载程序解密的机器指令。MCP中所保存的固件引导程序代码中的对称密钥与ROM 210中的对称密钥236结合,以产生一个新的对称代码,该对称代码被用于根据预装载程序中的机器指令来为引导装载程序解密。
引导装载程序包括机器指令,这些机器指令用于根据RC4连续密码算法来执行被压缩并被加密的内核的连续密码解密,掌握该技术领域普通技能的人很了解这一点。然后,包括内核的机器指令(已被解压和解密到RAM 206中)可以由CPU 202来执行,以实施游戏控制台的全部功能特性,从而确保:例如,它只装载经授权的游戏软件,执行阻止视频DVDs的复制的算法,并确保它按经授权的引导代码所定义的内容来执行游戏控制台的制造商所需要的所有其他的策略和功能。
虽然已结合本发明的较佳实践形式描述了本发明,但是,掌握该技术领域普通技能的人将会理解,可以在以下的权利要求书的范围内对其进行许多修改。相应地,本发明的范围并不意在受到上文的限制,而是通过参考以下的权利要求书来加以完全的确定。

Claims (29)

  1. 本发明的专有权被声明,其定义如下:
    1.用于确定规定在电子设备的引导期间执行的代码是否被授权的一种方法,所述方法的特征在于包括以下各个步骤:
    (a)对代码的预定义部分实施散列技术,以产生第一个散列值;
    (b)将第一个散列值与电子设备的电路部件中所保存的存储的散列值进
       行比较,以验证代码的预定义部分被授权,该电路部件与存储代码
       的存储器分开;
    (c)如果第一个散列值等于所存储的散列值,则执行代码的预定义部分,
       如果第一个散列值不等于所存储的散列值,则终止电子设备的引导;
    (d)其中,执行被授权的代码的所述预定义部分实施以下各个步骤:
    (i)基本上对所有的代码实施散列技术,以确定第二个散列值;
       以及,
    (ii)验证代码中所包括的数字签名是否与第二个散列值相匹配,
        如果匹配,则执行代码,如果不匹配,则终止电子设备的引
        导。
  2. 2.如权利要求1所述的方法,其特征在于,将第一个值与所存储的散列值进行比较的步骤包括:执行电路部件的非易失存储部分中所保存的初始代码,所述初始代码包括所存储的散列值。
  3. 3.如权利要求2所述的方法,其特征在于,初始代码被保存在辅助处理器中。
  4. 4.如权利要求2所述的方法,其特征在于,初始代码被保存在以下的一种设备中:
    (a)图形处理器;
    (b)音频处理器;
    (c)输入处理器;
    (d)输出处理器;
    (e)通信处理器;以及,
    (f)数字信号处理器。
  5. 5.如权利要求2所述的方法,其特征在于,初始代码被保存在执行初始代码的处理器中。
  6. 6.如权利要求2所述的方法,其特征在于,执行初始代码,以实施如权利要求1中的步骤(a)至步骤(c)。
  7. 7.如权利要求2所述的方法,其特征在于,初始代码在固件中被永久地定义为预定数量的字节。
  8. 8.如权利要求1所述的方法,其特征在于,代码的预定义部分包括预装载程序代码,该预装载程序代码具有被安排在代码内的预定位置处的预定数量的字节。
  9. 9.如权利要求8所述的方法,其特征在于,用预装载程序代码中所包括的公共密钥来执行验证数字签名的步骤。
  10. 10. 上存储有代码的一种存储介质,该代码包括在电子设备的引导期间被使用的机器指令,所述机器指令对于确定代码是否被授权起部分作用,所述存储介质的特征在于包括:
    (a)内核部分,其中存储有包括代码的大部分机器指令;
    (b)引导装载程序部分,适用于装载内核部分中所包括的机器指令,供
       电子设备执行;
    (c)预装载程序部分,它具有预定数量的字节和预定义的内容,所述预
       装载程序部分被安排在存储介质上的预定位置处;以及,
    (d)数字签名部分,所述数字签名部分提供一个确认散列值,用于跟通
       过对代码实施散列技术而获得的散列值进行比较,可用来确定代码
       是否被授权。
  11. 11.如权利要求10所述的存储介质,其特征在于,预装载程序部分中所包括的公共密钥可用于为签名部分解密。
  12. 12.如权利要求10所述的存储介质,其特征在于,存储介质包括一个只读存储器。
  13. 13.如权利要求10所述的存储介质,其特征在于,预装载程序部分包括定义单向散列算法的机器指令。
  14. 14.如权利要求10所述的存储介质,其特征在于,预装载程序部分包括机器指令,这些机器指令可以通过使用被存储在预装载程序部分内的公共密钥来验证数字签名。
  15. 15.如权利要求10所述的存储介质,其特征在于,内核部分被编码。
  16. 16.如权利要求10所述的存储介质,其特征在于,预装载程序部分包括用于执行内核部分的连续密码解码的机器指令。
  17. 17.如权利要求10所述的存储介质,其特征在于,预装载程序部分包括用于验证标有对应的私人密钥符号的签名的至少一个公共密钥。
  18. 18.一种必须被引导以进行操作所述的电子设备,其特征在于包括:
    (a)其中存储有多个机器指令的非易失存储器,所述非易失存储器包括
       一个主要部分,以及在内容、尺寸和位置方面被预定义的一个预装
       载程序部分;
    (b)被耦合到非易失存储器以执行机器指令的处理器;以及
    (c)规定定义散列算法和预期的散列值的机器指令的引导程序代码固件
       元件,所述引导程序代码固件的机器指令最初在电子设备的引导期
       间由处理器来执行,从而使处理器:
    (i)对非易失存储器的预装载程序部分实施散列技术,以确定预
       装载程序散列值;
    (ii)将预期的散列值与预装载程序散列值进行比较;以及,
    (iii)如果预装载程序散列值不等于预期的散列值,则终止电子设
         备的引导。
  19. 19.如权利要求18所述的电子设备,其特征在于,非易失存储器的预装载程序部分包括机器指令,这些机器指令使处理器:
    (a)对非易失存储器实施散列技术,从而产生存储器散列值;
    (b)将存储器散列值与预装载程序部分中所包括的预期的存储器散列值
       进行比较;以及,
    (c)如果存储器散列值不等于预期的存储器散列值,则终止电子设备的
       引导。
  20. 20.如权利要求19所述的电子设备,其特征在于,预期的存储器散列值作为数字签名被包括在非易失存储器内,但在对非易失存储器实施散列技术时被排除在外。
  21. 21.如权利要求20所述的电子设备,其特征在于,非易失存储器的预装载程序部分中的机器指令进一步使处理器验证数字签名,以确定预期的存储器散列值。
  22. 22.如权利要求20所述的电子设备,其特征在于,非易失存储器的预装载程序部分中的机器指令进一步使处理器应用预装载程序部分中所包括的公共密钥,以验证数字签名。
  23. 23.如权利要求18所述的电子设备,其特征在于,非易失存储器的主要部分的至少一部分被进行加密;其中,非易失存储器的预装载程序部分包括机器指令,这些机器指令使处理器对被加密的非易失存储器的主要部分的至少一部分进行解密,从而利用非易失存储器的主要部分中所包括的机器指令使电子设备的引导继续。
  24. 24.如权利要求18所述的电子设备,其特征在于,引导程序代码固件元件被安排在电子设备的另一个部件内,并且,若不充分破坏其他部件而致使电子设备无法操作,就基本上无法在物理上接近该引导程序代码固件元件。
  25. 25.如权利要求18所述的电子设备,其特征在于,另一个部件包括一个辅助处理器。
  26. 26.如权利要求18所述的电子设备,其特征在于,另一个部件包括以下的一种设备:
    (a)图形处理器;
    (b)音频处理器;
    (c)输入处理器;
    (d)输出处理器;
    (e)通信处理器;以及,
    (f)数字信号处理器。
  27. 27.如权利要求18所述的电子设备,其特征在于,引导程序代码固件元件被安排在处理器内。
  28. 28.如权利要求18所述的电子设备,其特征在于,非易失存储器的主要部分的至少一部分被进行加密;且非易失存储器的预装载程序部分包括:
    (a)定义单向散列算法的机器指令;
    (b)用于对非易失存储器的主要部分的所述至少一部分进行解码的机器
       指令;
    (c)包括一个引导装载程序的机器指令;以及,
    (d)至少一个公共密钥。
  29. 29.如权利要求18所述的电子设备,其特征在于,电子设备包括一个游戏控制台。
CNA031423922A 2003-06-06 2003-06-06 在安全引导装载程序中使用散列技术 Pending CN1553315A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNA031423922A CN1553315A (zh) 2003-06-06 2003-06-06 在安全引导装载程序中使用散列技术

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA031423922A CN1553315A (zh) 2003-06-06 2003-06-06 在安全引导装载程序中使用散列技术

Publications (1)

Publication Number Publication Date
CN1553315A true CN1553315A (zh) 2004-12-08

Family

ID=34324003

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA031423922A Pending CN1553315A (zh) 2003-06-06 2003-06-06 在安全引导装载程序中使用散列技术

Country Status (1)

Country Link
CN (1) CN1553315A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101004775B (zh) * 2006-01-19 2011-01-19 冲电气工业株式会社 微控制器及其认证方法
US8239688B2 (en) 2007-01-07 2012-08-07 Apple Inc. Securely recovering a computing device
US8254568B2 (en) 2007-01-07 2012-08-28 Apple Inc. Secure booting a computing device
US8291480B2 (en) 2007-01-07 2012-10-16 Apple Inc. Trusting an unverified code image in a computing device
CN109918919A (zh) * 2014-06-27 2019-06-21 英特尔公司 认证变量的管理

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101004775B (zh) * 2006-01-19 2011-01-19 冲电气工业株式会社 微控制器及其认证方法
US8239688B2 (en) 2007-01-07 2012-08-07 Apple Inc. Securely recovering a computing device
US8254568B2 (en) 2007-01-07 2012-08-28 Apple Inc. Secure booting a computing device
US8291480B2 (en) 2007-01-07 2012-10-16 Apple Inc. Trusting an unverified code image in a computing device
CN101578609B (zh) * 2007-01-07 2013-08-21 苹果公司 安全启动计算设备
US8688967B2 (en) 2007-01-07 2014-04-01 Apple Inc. Secure booting a computing device
US8806221B2 (en) 2007-01-07 2014-08-12 Apple Inc. Securely recovering a computing device
US8826405B2 (en) 2007-01-07 2014-09-02 Apple Inc. Trusting an unverified code image in a computing device
US9680648B2 (en) 2007-01-07 2017-06-13 Apple Inc. Securely recovering a computing device
US10142104B2 (en) 2007-01-07 2018-11-27 Apple Inc. Securely recovering a computing device
US10931451B2 (en) 2007-01-07 2021-02-23 Apple Inc. Securely recovering a computing device
CN109918919A (zh) * 2014-06-27 2019-06-21 英特尔公司 认证变量的管理

Similar Documents

Publication Publication Date Title
KR100965717B1 (ko) 전자 장치, 이 전자 장치의 부트­업 동안 실행하기 위해 제공되는 코드가 허가된 것인지를 결정하기 위한 방법 및 이 코드가 저장되는 메모리 매체
JP4702957B2 (ja) 耐タンパ・トラステッド仮想マシン
Naumovich et al. Preventing piracy, reverse engineering, and tampering
US7779478B2 (en) System and method for distributed module authentication
US5903650A (en) Method and apparatus for electronic license distribution
US20030120938A1 (en) Method of securing software against reverse engineering
US20060085645A1 (en) Software application integrity verification method and device
EP2362314A1 (en) Method and apparatus for verifying the integrity of software code during execution and apparatus for generating such software code
US20120331303A1 (en) Method and system for preventing execution of malware
US8761400B2 (en) Hardware linked product key
US7249105B1 (en) BORE-resistant digital goods configuration and distribution methods and arrangements
US20060015860A1 (en) System and method for storing attributes in a file for processing an operating system
KR101638257B1 (ko) 애플리케이션의 소스 코드 보호 방법 및 이를 수행하는 장치
CN1553315A (zh) 在安全引导装载程序中使用散列技术
US7552342B1 (en) Method and system for increasing the tamper resistance of a software application
US7392523B1 (en) Systems and methods for distributing objects
US20030028780A1 (en) Software controlled device
US20060136746A1 (en) Security system for preventing unauthorized copying of digital data
KR101069355B1 (ko) 착탈형 메모리를 이용한 컨텐츠 보안 장치 및 이를 이용한 보안 방법
CN114741670A (zh) 一种文档保护方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication