CN100492277C - 在安全的引导载入程序中使用散列法的方法和装置 - Google Patents

在安全的引导载入程序中使用散列法的方法和装置 Download PDF

Info

Publication number
CN100492277C
CN100492277C CNB031412203A CN03141220A CN100492277C CN 100492277 C CN100492277 C CN 100492277C CN B031412203 A CNB031412203 A CN B031412203A CN 03141220 A CN03141220 A CN 03141220A CN 100492277 C CN100492277 C CN 100492277C
Authority
CN
China
Prior art keywords
code
hashed value
processor
electronic equipment
initial
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.)
Expired - Fee Related
Application number
CNB031412203A
Other languages
English (en)
Other versions
CN1469238A (zh
Inventor
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
Publication of CN1469238A publication Critical patent/CN1469238A/zh
Application granted granted Critical
Publication of CN100492277C publication Critical patent/CN100492277C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot

Abstract

由自举代码组成的机器指令隐藏在电子游戏控制台的一个重要组成部分里面,在那里它们不能容易的被存取或修正。在只读存储器(ROM)的预装载程序部分由引导代码散列和结果与一个期望的保持在引导代码散列值比较。起动过程的进一步确认由预装载程序执行,散列在ROM的代码为代码获得一个散列值。结果对照数字签名核实为这散列定义一期望的值。获得任何的预期结果的失败终止起动过程。当引导代码确认预装载程序,并且预装载程序证实在ROM里剩余的代码,这为保证用于引导设备的代码未被修改或未被替换的技术是有用的。

Description

在安全的引导载入程序中使用散列法的方法和装置
技术领域
本发明通常涉及安全地启动(引导)包括一个处理器的电子装置,尤其涉及确定当启动这样的电子装置时只需要由处理器运行机器指令,以便防止在起动过程期间被执行的机器指令替代或取舍。
背景技术
有许多类型的电子装置在初始通电或者重新设定时必须接受引导处理。在起动过程时,控制电子装置基本操作特性的机器指令典型地从存储在只读存储器(ROM)中获取并且执行初始化设备和使能装载进一步的机器指令到随机存取存储器(RAM)它将被执行使电子设备实现更多的功能。举例来说,当一台个人计算机被启动时,由基本的输入-输出系统(BIOS)组成的指令被运行使能操作系统被计算机的中央处理单元(CPU)从一个硬盘驱动器载入到RAM并且运行.术语″启动″是比较早的简易格式和也许更多的描述术语为″自举″.
必须被启动的其它类型电子设备包括游戏控制台、数字记录设备、个人数据系统,和包括某种形式的处理器的几乎任何其他电子产品必须执行一套最初的机器指令使能进一步的功能,如另外的机器指令装入到内存和被执行。由于起动过程确定一个电子设备的初始状态,它影响设备的重要操作参数,可能实际上影响在起动过程被完成后电子设备怎样被使用。对于出售电子设备的公司防止起动过程的修改可能是重要,避免由于装置的使用发生收入的损失。
例如,在电子游戏工业中,许多游戏控制台的市场价值由运行在游戏控制台的游戏软件产生许可证收入卖玩电子游戏获得。从而,在起动过程期间装载的机器指令实现功能防止运行在游戏控制台的软件无许可的拷贝和强制关于用游戏控制台玩电子游戏的制造商的政策。某些用户倾向于认为运行无许可的软件的拷贝的制约和强制执行在游戏控制台的这样政策的制约对游戏控制台的用途作为一个挑战和一个不受欢迎的限制。这些用户研究用程序“挖口”(hacking)游戏控制台电路和软件克服这些制约。例如,单向的避免这些制约是根据运行在游戏控制台起动过程装载某些做了修改的改变软件内核。这些变动去除由游戏控制台的制造者强加的制约,如果软件游戏的无许可的副本因此被能够运行在游戏控制台,能造成关于游戏控制台如何被使用的制造商的控制损失的结果,和能引起收入的损失。因此,通常游戏控制台制造者用大量的努力保证防止黑客使能一个修改过的软件内核在起动过程期间被使用。
一个相似的问题存在在使用电子设备必须起动处理的其它技术领域。例如,卫星电视接收器制造商根据由用户支付的月费限制频道接收必须保证他们的安全政策和关于他们的产品的使用政策被遵循以便消费者只能与它的许可一致的期限使用电子设备。黑客也许能修改根据在卫星接收器的处理器确定用户支付观看电视频道的代码,因此没有做适当的许可费付款使能所有频道被接受和被观看。
因此,保证唯一授权软件代码在电子设备的起动期间被执行是所希望的。用于防止修改的或取舍机器指令集替代在起动设备期间打算执行的授权软件的任何技术,因而保证电子设备实施制作并且/或者分发它给终端用户的功能和当事人的政策。已知的方法通常防止黑客击败关于对电子设备的用途制约和政策,它包括在起动电子设备代码的装载,是明显地不完全成功。通过使用包括供选择的软件代码的扩展程序电路卡,已知的安全方法能至少部份地由连接电路卡到电子设备的线路的黑客击败。明显地,一种更加安全和更加严谨的方法必需防止在电子设备的起动过程期间一个供选择的代码被插入和被执行。
发明内容
本发明通常可以应用在包括一个处理器和当初始加电或重新设置时必须起动的几乎任何的电子装置,使电子的装置其他的功能能够被运行。在这样设备,经常保护在设备操作期间被使用的私有的信息和防止在起动过程期间未授权的代码被执行、破坏与电子设备的操作和应用有关的政策将是重要的。
破坏一个电子设备的预期的政策和功能很可能被替换部件之一是存储定义电子设备怎么使用的非易失性存储器的机器指令。因此,本发明试图证实,由在这样的存储器的机器指令组成的代码是被授权的(也就是,没有由于机器指令被修正或替换以改变电子的装置期望的功能和政策)。本发明,授权代码包括一个被预定义的部份(也称为预引导程序代码)。既使当对授权代码的剩余物产生变动,这个被预定义的部份必须保持同样,或电子设备将不会起动。
程序初始执行确保被预先定义的代码部分是授权的。在这个过程中,被预先定义的部分被散列,产生第一散列值。接着,第一散列值从存储代码的存储器分离,与保持在电子设备的电路部件的一个被存储的散列值比较,核实被预定义的部份的代码是被授权。如果第一散列值等于被存储的散列值,使能执行被预定义的代码部份,并且如果不是,电子设备的起动被终止。如果被预定义的代码部份是允许的,则充分地散列所有代码,确定第二散列值。与被预定的代码部分相比,数字签名包括在代码的不同部份。然后对照数字签名第二散列值被核实,确保署名的真实性。如果数字签名被核实是可信的,代码的执行是允许的,并且如果不是,电子设备的起动被终止。
为了要比较第一值和被储存的散列值,在电路部件的非挥发性存储器部分中被保持的初始代码被运行。这个初始的代码包括被存储的散列值和被保持在一个图形处理器,虽然,它也考虑被存储的散列值可能保持在其它辅助处理器,例如一个音频处理器,一个输入处理器,一个输出处理器,一个通讯处理器或一个数字信号处理器。的确,它甚至是更好的保持初始的代码和期望的散列值在执行初始代码的处理器。初始代码被执行散列被预定义的部份,和执行比较第一散列值与被存储的散列值。以发明的较佳的形式,初始代码以预定的字节数永久地被定义在固件中。另外,被预定义的代码部份更好地包括被预定的字节数配置在一个预定的代码区域内。明显地,除非被存储的代码相应地被改变,被预定义的部份的散列值大小和内容无法被修改,因为被存储的散列值不会等于第一散列值。
被预定义的代码也包括被用于核实数字签名的一个公开密钥并且有使代码的一个被编码的内核部份被解码的机器指令。被解码的内核然后被执行完成电子设备的起动。被预定义的代码使用一个流密码实施代码的内核部份的解密。
本发明的另外一个方面指向在其中储存代码的存储媒介包含在一个电子设备起动期间确定代码是否被授权的存取的机器指令。记忆媒介包含内核部份、起动装载程序部份、预装载程序部份,和数字签名,通常如上所述。
本发明的另外方面指向必须被引导的电子设备操作。电子设备包括在非挥发性存储器中存储的多个机器指令。非挥发性存储器包括主要的部分和有被预定义内容,大小和位置的预装载程序部分。一个处理器被连接到非挥发性存储器在起动过程期间运行机器指令。引导代码固件元件指定机器指令定义散列算法和一个期望的散列值。在电子设备的起动期间引导代码固件的机器指令由处理器初始执行,导致处理器执行预装载程序部份的散列和对照期望的散列值的结果。电子设备和它的功能的其它细节通常与上面被讨论的方法步骤一致。
在一个电子设备使用本发明,譬如游戏控制台,企图在起动过程期间改变被执行的机器指令或用其它存储器不同的机器指令替代将防止设备成功地引导,它将是明显的。因此,本发明通常防止某人修改基本的功能或避免由电子装置实现需要的政策,确保在电子设备的起动期间唯一授权代码被执行。
附图说明
前述方面和许多本发明的伴随好处将变更容易评价当叁考如下详细描述将同样更好的理解,当理解伴随的附图时,其中:
图1是使用本发明游戏控制台的一个立体示意图;
图2A是包括在游戏控制台图1的几个功能部件的结构图;
图2B是一般电子设备起动和包括处理器和存储器的的功能结构图;
图3是被配置在本发明的举例说明存储器部份的概要图;和
图4是在本发明举例说明逻辑实施的流程图。
具体实施方式
典型系统
必须强调,本发明不打算被限制只用在游戏控制台,虽然本发明的最初的较佳的实施的确被使用在游戏控制台上。本发明被开发确保私有的信息不被透露给试图逆向工程代码的用户,并且防止用户消除许可制约和与关于用游戏控制台玩电子游戏的政策。
如图1所示,一个典型电子游戏系统100包括游戏控制台102和支持到四种用户输入装置,譬如控制器104.a和104b。游戏控制台102装备内部硬盘磁碟机(不在图中示出)和便携式媒体驱动器106以光盘存储器108为代表的支持各种各样便携式的光存储器媒介.适当的便携式的存储介质的例子,包括DVD盘和CD-ROM盘。在这个游戏系统,游戏程序在游戏控制台使用DVD盘更好地被分配,但它也考虑其它存储介质替代使用或使用本发明其它类型系统执行数据保密政策和确保数字数据真实的被输入到系统。
在游戏控制台的前面板102是四个槽孔110为连接和支持控制器,虽然槽孔的数量和安排可能被修改。电源按钮112和弹出按钮114也被安置在游戏控制台102的前面板。电源按钮112控制游戏控制台的电能应用,和弹出按钮114交替打开和关闭便携式的媒介驱动106的盘子(没被显示)使能插入和取出存贮盘108以便其上的数字数据能由游戏控制台读出供使用。
游戏控制台102通过音频/视频(A/V)接口电缆120连接到一台电视或其它监视器或屏幕(没被显示)。电缆插座122当连接到一条常规交流电线源(没被显示)传达电能到游戏控制台。游戏控制台102进一步带有数据连接器124在网络上传输数据譬如互联网,例如,通过一个常规电话调制解调器,或更好,由宽频连接。
每个控制器104和104b通过导线(或选择通过一个无线接口)被连接到游戏控制台102。在被说明的实施中,控制器是通用串形总线(USB)兼容和通过USB缆绳130被连接到游戏控制台102。游戏控制台102被装备以任何各种各样的交互用户设备和控制游戏软件。虽然控制器104.a的所有细节不显示在图1,各个控制器104.a和104b被装备以二个拇指操纵钮132.a和132b,D—垫(pad)134,按扭136,和二个切换开关138。这些控制器仅仅是代表性的,并且其它已知的游戏输入和控制机构可以被替代为或增加到那些显示在图1用于游戏控制台102。
一个可移动或便携式的存储器单元(MU)140可能任意地被插入到控制器104提供附加的可移动的存贮。便携式的MUs通过插入便携式的MUs到其它控制器使用户存放游戏参量和带它们在其它控制台玩。在被描述的实施中,各个控制器被配置容纳2个MUs,虽然比2个MUs更多或较少可以代替被使用。
游戏系统100是能玩游戏、听音乐,和看录影。考虑其它功能使用存放在硬盘驱动器数字资料或从驱动106的光存储器盘108读,从在线源,或从MU140能被实施。游戏控制台被设计防止未许可的拷贝的电子游戏盘在游戏控制台上玩。并且,某个政策由游戏控制台强制执行。例如,软件被销售到一个地区可以阻止被销售一个另外地区的游戏控制台上执行。同样,防止视频DVDs复制的业界标准计划(MACROVISIONTM)由游戏控制台软件实施。
某些用户会喜欢击败由游戏控制台实施的这些功能限制和政策。试图避免这些局限和政策的一个方法是由安装集成电路(IC)或模块在游戏控制台,以一个修改过的版本,替换原始的ROM和被存放在其中用于引导的游戏控制台代码。在这样的替换模块里修改机器指令打算在起动过程期间操作和消除或改变由游戏控制台制造者或设计师强加对未授权的拷贝的用途,复制录影DVD,和游戏控制台的其它功能方面和/或者政策的制约的限制。但是,本发明使插入一个未授权的替换ROM模块改变起动过程和终止起动过程非常困难如果它查出在游戏控制台的起动期间企图使用供选择和未授权的代码。
为了防止关于起动过程的私有的信息被发现和在起动过程期间防止修改或供选择的代码被使用,至少在起动期间被执行的某一机器指令的部份必须与包括在游戏控制台或其它电子设备的ROM之内多数的机器指令分开保留。通常,如果电子设备被打开,IC、跟踪、连接点,和通过电子设备的印制电路板是容易接近的,使能新连接和具体的修改破解设备。虽然防止某人访问印制电路板是困难的,本发明使访问被嵌入装配在印制电路板上的一个IC内作为固件的机器指令非常难。更好地,对供应商用作这用途的IC应该不容易能够公开,因为它是为电子设备的制造商定制的。并且,用作此用途的IC应该基本是对电子设备的操作,以便如果企图访问被嵌入在IC的固件,它是非常象IC的操作,和因而,电子设备的操作将相反地影响。
图2A举例说明被包含在游戏控制台100一些IC部件.CPU 202是主要处理器和用于执行游戏控制台的大多数处理功能的。CPU 202必须初始引导,与多数处理器相同,使能执行游戏控制台被设计实施的各种各样的功能。CPU202是双向连接到一个定制的图形处理器,它也是由NVIDIA Corporation生产的总线和记忆控制器芯片204和被称为NV2A芯片。NV2A芯片连接到RAM206和到另外的NVIDIA定制的媒体通讯处理器(MCP)208芯片,提供声频信号处理器能力,连接到系统存储器,和为数据通讯也连接到USB口和以太网口。在MCP 208内包括512个字节的固件组成的引导代码212。引导代码212实质上隐藏在MCP 208内的其它层之下和不打开该模块简单容易地接近。为了完全访问引导代码212,是必要去除其它叠加的层,那将有效地毁坏MCP模块,使它和游戏控制台无法使用。此外,因为MCP 208是为游戏控制台的制造商定制的,在开放的市场上其他人不是可利用的。既使引导代码在某些方式下被获取使包括这个固件的机器指令"可见,"本发明使起动序列不能改变。MCP 208连接到ROM 210,在起动游戏控制台100期间包括大多机器指令被使用。
本发明的一种更加一般的应用其构成被显示在图2B。它设想定制CPU 220能包括固件引导代码222"隐藏"在其中,在CPU的其它层之下。如图2B所示,CPU 220被连接到RAM206和ROM210。因为引导代码222由CPU 220内的固件组成,在CPU处理部份和引导代码222之间的信号一般不能进入。因此,对于显示在图2B的实施例,它更加难访问引导代码222和确定它的内容,并且因而,相对图2.A的实施例,图2B的实施例在安全上提供进一步增加。
图3举例说明使用在本发明的ROM 210的不同的部份。在使用在游戏控制台100中的更佳的实施例,ROM 210包括一个256个千字节存储器模块。包括在ROM 210中的预装载程序230,不被编码。预装载程序230固定了大约11个千字节的大小在较佳的实施例中,并且它的内容、大小,和地点在ROM210之内是全部被预定义的。注意预装载程序230包括编码的公众钥匙231是重要的.需要保持预装载程序230的内容无变化也是重要的,除非对应的变化产生到固件引导代码212,同样下列各项解释是显然的。ROM210也包括起动装载程序232,它被编码。另外,ROM 210包括一个数字签名234和一个对称密钥236。到目前为止ROM 210的较大部分致力于存储机器指令组成内核238。内核238被压缩和编码。包括在内核238之内机器指令定义许多功能和建立相关游戏控制台100操作的政策。最后,芯片组初始化代码240被包括和当初始供电给游戏控制台时被执行。
图4举例说明当游戏控制台102被初始加电或被重新设置时被实施的逻辑步骤。步骤250提供运行在ROM 210里的芯片组初始化代码。机器指令包括在芯片组初始化代码240之内不被编码;他们定义具体配置信息和具体配置序列完全合乎游戏控制台体系结构。机器代码必需执行芯片组配置包括在引导代码;具体值和序列是芯片组初始化代码的一部分。并且,CPU的初始化序列包含在引导代码和在芯片组初始化代码的剩余物之前被执行。其次,在块252,机器指令包括在固件引导代码212之内,它隐藏在MCP 208之内,为在ROM210的预装载程序230运行单程散列算法确定一个散列值。如上所述,当出品时,原始的ROM 210被安装在游戏控制台100之内,在ROM 210之内预装载程序230将有一个具体内容、大小,和地点。因此,由散列获得散列值的机器指令包括在预装载程序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散列算法(或其它已知的单程散列算法的当中一个)确定大多数ROM210内容的散列值(数字签名不是包括在散列的ROM210的内容之中)。只要使用同样散列算法,结果应该总是相同除非机器指令被改变或用未授权的机器指令替换。改变甚至散列在ROM 210里机器指令的个别位将极大地将改变散列值的结果。
在ROM 210里的公开密钥231被运用到数字签名234,在步骤264产生对应的值为数字签名。(在公开密钥能应用之前,它用存放在MCP的引导代码的对称密钥解码,但这步骤不是必需的如果公开密钥不用对称密钥编码。)其次,在预装载程序230的机器指令确定是否公开密钥能核实在图4选择步骤266的署名;这步骤确定是否步骤264的值等于在步骤262ROM被确定的值。如果不,步骤268停止起动操作因为当ROM的原始的内容被产生,在ROM的签名被改变将是明显的。如众所周知的,如果签名值最初使用只有游戏控制台的制造商知道的私用密钥签字,署名的有效性能使用一个公开密钥被证实。如果某人破解游戏控制台100和试图修改任一个ROM 210的部份,在散列值上的变化将被查出在选择步骤266,导致在步骤268起动过程被终止。相反地,如果数字签名匹配ROM的散列,ROM内容与被授权的原始的内容是相同的将是明显的。
假设在步骤264从数字签名被确定值核实在选择步骤266 ROM的散列,步骤270使能起动去完成,使能内核238被复制入RAM 206和然后被解压和未加密到RAM。预装载程序230包括为解码起动装载程序的机器指令。在固件引导代码的对称密钥被保持在MCP与在ROM 210里的对称密钥236结合产生用于为解码起动装载程序与在预装载程序机器指令一致的一个新对称代码。
起动装载程序包括为实施压缩和被编成密码的内核的流密码解密的机器指令,与RC4流密码算法符合,如同已知的众所周知的平常技术。机器指令组成内核被解压并且解码到RAM 206然后能由CPU 202执行实现游戏控制台的全功能,确保,举例来说,它唯一装载授权游戏软件,执行阻碍复制录影DVDs的算法,并且确保,执行由游戏控制台的制造商渴望的所有其它政策和功能,如由授权起动代码定义。
虽然本发明被描述了与实践它的更佳的形式的关系,那些已知的普通的技巧可以明白在随后的要求的范围之内许多改动能做。因此,一般不打算以任何方式被上述的描述限制发明的范围,但是完全参考下述的权利要求替换决定。

Claims (18)

1.一种确定在电子设备的起动期间被提供用于执行的代码是否被授权的方法,其特征在于,所述方法包括步骤:
(a)散列代码的预定义部分以产生第一散列值;
(b)比较第一散列值与保持在电子设备的电路部件的一个被存储的散列值,所述电路部件从存储代码的存储器分离,以核实所述代码的预定义部分是被授权的;
(c)如果第一散列值等于被存储的散列值,则执行被预定义的代码部分,并且如果不是,终止电子设备的起动;
(d)其中执行被授权的所述被预定义的代码部分包括执行以下步骤:
(i)充分散列包括所述预定义部分的所有代码,以确定第二个散列值;并且
(ii)核实包括在代码中的一个数字签名是否匹配于第二个散列值,如果那样,则执行所述代码,和如果不是,终止电子设备的起动。
2.如权利要求1所述的方法,其特征在于,其中比较第一值与被存储的散列值的步骤包括执行被保持在电路组分的一个无挥发性的存贮器部分的一个初始代码,所述的初始代码包括被存储的散列值。
3.如权利要求2所述的方法,其特征在于,其中初始代码被保持在一个附加的处理器。
4.如权利要求2所述的方法,其特征在于,其中初始代码被保持在:
(a)一个图形处理器;
(b)一个声音处理器;
(c)一个输入处理器;
(d)一个输出处理器;
(e)一个通信处理器;和
(f)一个数字信号处理器。
5.如权利要求2所述的方法,其特征在于,其中初始代码被保持在执行初始代码的处理器。
6.如权利要求2所述的方法,其特征在于,其中初始代码被运行以执行权利要求1的步骤(a)至(c)。
7.如权利要求2所述的方法,其特征在于,其中初始代码以一个预定的字节数永久地被定义在固件中。
8.如权利要求1所述的方法,其特征在于,其中代码的预定义部分包括预装载程序代码,所述预装载程序代码具有被配置在所述代码的一个预定区域中的预定字节数。
9.如权利要求8所述的方法,其特征在于,其中核实数字签名的步骤是执行包括在预装载程序代码的一个公开密钥。
10.一种确定在电子设备的起动期间被提供用于执行的代码是否被授权的装置,其特征在于,所述装置包括:
(a)散列代码的预定义部分以产生第一散列值的装置;
(b)比较第一散列值与保持在电子设备的电路部件的一个被存储的散列值的装置,所述电路部件从存储代码的存储器分离,以核实所述代码的预定义部分是被授权的;
(c)如果第一散列值等于被存储的散列值,则执行被预定义的代码部分,并且如果不是,终止电子设备的起动的装置;
(d)其中执行被授权的所述被预定义的代码部分的装置包括:
(i)充分散列包括所述预定义部分的所有代码,以确定第二个散列值的装置;并且
(ii)核实包括在代码中的一个数字签名是否匹配于第二个散列值,如果那样,则执行所述代码,和如果不是,终止电子设备的起动的装置。
11.如权利要求10所述的装置,其特征在于,其中比较第一值与被存储的散列值的装置包括执行被保持在电路组分的一个无挥发性的存贮器部分的一个初始代码的装置,所述的初始代码包括被存储的散列值。
12.如权利要求11所述的装置,其特征在于,其中初始代码被保持在一个附加的处理器。
13.如权利要求11所述的装置,其特征在于,其中初始代码被保持在:
(a)一个图形处理器;
(b)一个声音处理器;
(c)一个输入处理器;
(d)一个输出处理器;
(e)一个通信处理器;和
(f)一个数字信号处理器。
14.如权利要求11所述的装置,其特征在于,其中初始代码被保持在执行初始代码的处理器。
15.如权利要求11所述的装置,其特征在于,其中初始代码被运行以实现如权利要求10的装置(a)至(c)。
16.如权利要求11所述的装置,其特征在于,其中初始代码以一个预定的字节数永久地被定义在固件中。
17.如权利要求10所述的装置,其特征在于,其中代码的预定义部分包括预装载程序代码,所述预装载程序代码具有被配置在所述代码的一个预定区域中的预定字节数。
18.如权利要求17所述的装置,其特征在于,其中核实数字签名的装置是执行包括在预装载程序代码的一个公开密钥。
CNB031412203A 2002-06-07 2003-06-05 在安全的引导载入程序中使用散列法的方法和装置 Expired - Fee Related CN100492277C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/165,519 2002-06-07
US10/165,519 US6907522B2 (en) 2002-06-07 2002-06-07 Use of hashing in a secure boot loader

Publications (2)

Publication Number Publication Date
CN1469238A CN1469238A (zh) 2004-01-21
CN100492277C true CN100492277C (zh) 2009-05-27

Family

ID=29549377

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB031412203A Expired - Fee Related CN100492277C (zh) 2002-06-07 2003-06-05 在安全的引导载入程序中使用散列法的方法和装置

Country Status (10)

Country Link
US (2) US6907522B2 (zh)
EP (1) EP1369764B1 (zh)
JP (1) JP4052978B2 (zh)
KR (1) KR100965717B1 (zh)
CN (1) CN100492277C (zh)
AT (1) ATE453162T1 (zh)
AU (1) AU2003204376B2 (zh)
DE (1) DE60330627D1 (zh)
HK (1) HK1058561A1 (zh)
TW (1) TWI292556B (zh)

Families Citing this family (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6675152B1 (en) * 2000-09-13 2004-01-06 Igt Transaction signature
US20020147918A1 (en) * 2001-04-05 2002-10-10 Osthoff Harro R. System and method for securing information in memory
US8708828B2 (en) 2001-09-28 2014-04-29 Igt Pluggable modular gaming modifiers and configuration templates for gaming environments
US6902481B2 (en) 2001-09-28 2005-06-07 Igt Decoupling of the graphical presentation of a game from the presentation logic
US7931533B2 (en) 2001-09-28 2011-04-26 Igt Game development architecture that decouples the game logic from the graphics logics
EP1338939A1 (en) * 2002-02-22 2003-08-27 Hewlett-Packard Company State validation device for a computer
US7194626B2 (en) * 2002-11-21 2007-03-20 International Business Machines Corporation Hardware-based secure code authentication
US8140824B2 (en) * 2002-11-21 2012-03-20 International Business Machines Corporation Secure code authentication
FR2849226B1 (fr) * 2002-12-20 2005-12-02 Oberthur Card Syst Sa Procede et dispositif de securisation de l'execution d'un programme informatique.
US8784195B1 (en) 2003-03-05 2014-07-22 Bally Gaming, Inc. Authentication system for gaming machines
EP1465038B1 (en) * 2003-04-03 2013-03-27 STMicroelectronics (Research & Development) Limited Memory security device for flexible software environment
US7171563B2 (en) * 2003-05-15 2007-01-30 International Business Machines Corporation Method and system for ensuring security of code in a system on a chip
US7725740B2 (en) * 2003-05-23 2010-05-25 Nagravision S.A. Generating a root key for decryption of a transmission key allowing secure communications
US7475254B2 (en) 2003-06-19 2009-01-06 International Business Machines Corporation Method for authenticating software using protected master key
US7434231B2 (en) * 2003-06-27 2008-10-07 Intel Corporation Methods and apparatus to protect a protocol interface
FR2867929B1 (fr) * 2004-03-19 2007-03-02 Gemplus Card Int Procede d'authentification dynamique de programmes par un objet portable electronique
JP4544901B2 (ja) * 2004-04-19 2010-09-15 株式会社日立製作所 記憶制御システム及びブート制御システム
US20050262337A1 (en) * 2004-05-24 2005-11-24 Siemens Vdo Automotive Corporation Method and device for determining flash software compatibility with hardware
US7694121B2 (en) * 2004-06-30 2010-04-06 Microsoft Corporation System and method for protected operating system boot using state validation
JP4447977B2 (ja) 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
US7937593B2 (en) * 2004-08-06 2011-05-03 Broadcom Corporation Storage device content authentication
DE102004047191A1 (de) * 2004-09-29 2006-04-06 Robert Bosch Gmbh Manipulationsgeschütztes Mikroprozessorsystem und Betriebsverfahren dafür
WO2006054128A1 (en) 2004-11-22 2006-05-26 Nokia Corporation Method and device for verifying the integrity of platform software of an electronic device
KR100654446B1 (ko) * 2004-12-09 2006-12-06 삼성전자주식회사 보안 부팅 장치 및 방법
US7725703B2 (en) * 2005-01-07 2010-05-25 Microsoft Corporation Systems and methods for securely booting a computer with a trusted processing module
US8181020B2 (en) * 2005-02-02 2012-05-15 Insyde Software Corp. System and method for securely storing firmware
US7736234B2 (en) * 2005-03-09 2010-06-15 Igt MRAM as critical event storage for powered down gaming machines
US7722468B2 (en) * 2005-03-09 2010-05-25 Igt Magnetoresistive memory units as read only memory devices in gaming machines
US20060205513A1 (en) * 2005-03-09 2006-09-14 Igt MRAM as nonvolatile safe storage for power hit and ESD tolerance in gaming machines
US20060236122A1 (en) * 2005-04-15 2006-10-19 Microsoft Corporation Secure boot
US7536540B2 (en) 2005-09-14 2009-05-19 Sandisk Corporation Method of hardware driver integrity check of memory card controller firmware
JP5089593B2 (ja) * 2005-09-14 2012-12-05 サンディスク テクノロジィース インコーポレイテッド メモリカードコントローラファームウェアのハードウェアドライバ完全性チェック
KR100675186B1 (ko) 2005-09-29 2007-01-30 엘지전자 주식회사 사용자식별모듈의 사용자식별정보 해시 기능을 가지는이동통신 단말기 및 그 부팅 방법
WO2007041501A2 (en) * 2005-09-30 2007-04-12 Phoenix Technologies Ltd. Secure execution environment by preventing execution of unauthorized boot loaders
US20070101156A1 (en) * 2005-10-31 2007-05-03 Manuel Novoa Methods and systems for associating an embedded security chip with a computer
CN101313570A (zh) 2005-11-29 2008-11-26 汤姆森特许公司 用于使得数字内容安全的方法和装置
WO2007135672A2 (en) * 2006-05-24 2007-11-29 Safend Ltd. Method and system for defending security application in a user's computer
EP1868127A1 (en) * 2006-06-15 2007-12-19 Thomson Telecom Belgium Device comprising a public and a private area and a method for securely initializing the device
US8117429B2 (en) * 2006-11-01 2012-02-14 Nokia Corporation System and method for a distributed and flexible configuration of a TCG TPM-based local verifier
US8291480B2 (en) 2007-01-07 2012-10-16 Apple Inc. Trusting an unverified code image in a computing device
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
US20080178257A1 (en) * 2007-01-20 2008-07-24 Takuya Mishina Method for integrity metrics management
US7617493B2 (en) * 2007-01-23 2009-11-10 International Business Machines Corporation Defining memory indifferent trace handles
KR101209252B1 (ko) * 2007-02-02 2012-12-06 삼성전자주식회사 전자기기의 부팅 방법 및 부팅 인증 방법
WO2008096891A1 (ja) * 2007-02-09 2008-08-14 Ntt Docomo, Inc. 端末装置及びソフトウエア検査方法
US20080222428A1 (en) * 2007-03-07 2008-09-11 Andrew Dellow Method for Securing Authenticity of Data in a Digital Processing System
KR101427646B1 (ko) * 2007-05-14 2014-09-23 삼성전자주식회사 펌웨어의 무결성 검사 방법 및 장치
US8422674B2 (en) * 2007-05-29 2013-04-16 International Business Machines Corporation Application-specific secret generation
US8332635B2 (en) * 2007-05-29 2012-12-11 International Business Machines Corporation Updateable secure kernel extensions
US8433927B2 (en) * 2007-05-29 2013-04-30 International Business Machines Corporation Cryptographically-enabled privileged mode execution
JPWO2009013825A1 (ja) * 2007-07-25 2010-09-30 パナソニック株式会社 情報処理装置、及び改竄検証方法
US8068614B2 (en) * 2007-09-28 2011-11-29 Intel Corporation Methods and apparatus for batch bound authentication
US8166304B2 (en) * 2007-10-02 2012-04-24 International Business Machines Corporation Support for multiple security policies on a unified authentication architecture
US8332636B2 (en) * 2007-10-02 2012-12-11 International Business Machines Corporation Secure policy differentiation by secure kernel design
US20090172420A1 (en) * 2007-12-31 2009-07-02 Kabushiki Kaisha Toshiba Tamper resistant method and apparatus for a storage device
KR101502032B1 (ko) * 2008-03-06 2015-03-12 삼성전자주식회사 보안 기능을 갖는 프로세서 장치
AU2009201191A1 (en) * 2008-03-26 2009-10-15 Aristocrat Technologies Australia Pty Limited A gaming machine
US8150039B2 (en) 2008-04-15 2012-04-03 Apple Inc. Single security model in booting a computing device
CN101299849B (zh) * 2008-04-25 2010-05-12 中兴通讯股份有限公司 一种WiMAX终端及其启动方法
DE102008021567B4 (de) * 2008-04-30 2018-03-22 Globalfoundries Inc. Computersystem mit sicherem Hochlaufmechanismus auf der Grundlage einer Verschlüsselung mit symmetrischem Schlüssel
US9122864B2 (en) * 2008-08-05 2015-09-01 International Business Machines Corporation Method and apparatus for transitive program verification
US20100064125A1 (en) * 2008-09-11 2010-03-11 Mediatek Inc. Programmable device and booting method
US9653004B2 (en) * 2008-10-16 2017-05-16 Cypress Semiconductor Corporation Systems and methods for downloading code and data into a secure non-volatile memory
US8832454B2 (en) * 2008-12-30 2014-09-09 Intel Corporation Apparatus and method for runtime integrity verification
US8806220B2 (en) 2009-01-07 2014-08-12 Microsoft Corporation Device side host integrity validation
DE102010005726A1 (de) * 2010-01-26 2011-07-28 Giesecke & Devrient GmbH, 81677 Verfahren zum Zuordnen eines tragbaren Datenträgers, insbesondere einer Chipkarte, zu einem Terminal
KR20120092222A (ko) 2011-02-11 2012-08-21 삼성전자주식회사 보안 부팅 방법 및 보안 부트 이미지 생성 방법
JP2014170255A (ja) * 2011-06-29 2014-09-18 Panasonic Corp セキュアブート方法
US9286468B2 (en) 2011-09-30 2016-03-15 Hewlett-Packard Development Company, L.P. Option read-only memory use
TW201346764A (zh) * 2012-05-11 2013-11-16 Ibase Technology Inc 開機保全軟體方法
GB2512376A (en) * 2013-03-28 2014-10-01 Ibm Secure execution of software modules on a computer
US9671945B2 (en) * 2013-12-17 2017-06-06 American Megatrends, Inc. Techniques of launching virtual machine from thin client
US20150286823A1 (en) * 2014-04-07 2015-10-08 Qualcomm Incorporated System and method for boot sequence modification using chip-restricted instructions residing on an external memory device
GB2525409B (en) * 2014-04-24 2016-11-02 Ibm Enabling an external operating system to access encrypted data units of a data storage system
US9195831B1 (en) 2014-05-02 2015-11-24 Google Inc. Verified boot
US10387652B2 (en) * 2015-04-17 2019-08-20 Hewlett Packard Enterprise Development Lp Firmware map data
US20160314288A1 (en) * 2015-04-22 2016-10-27 Qualcomm Incorporated Method and apparatus for write restricted storage
US10176094B2 (en) * 2015-06-30 2019-01-08 Renesas Electronics America Inc. Common MCU self-identification information
WO2017023273A1 (en) * 2015-07-31 2017-02-09 Hewlett-Packard Development Company, L.P. Imaging supplies
WO2017066194A1 (en) 2015-10-11 2017-04-20 Renesas Electronics America Inc. Data driven embedded application building and configuration
US9916452B2 (en) 2016-05-18 2018-03-13 Microsoft Technology Licensing, Llc Self-contained cryptographic boot policy validation
US10365961B2 (en) * 2016-09-09 2019-07-30 Dell Products L.P. Information handling system pre-boot fault management
KR102538096B1 (ko) * 2016-09-13 2023-05-31 삼성전자주식회사 어플리케이션을 검증하는 디바이스 및 방법
CN106778283B (zh) * 2016-11-21 2020-04-07 惠州Tcl移动通信有限公司 一种系统分区关键数据的保护方法及系统
US11263326B2 (en) 2017-06-02 2022-03-01 Apple Inc. Method and apparatus for secure system boot
US10417429B2 (en) 2017-06-02 2019-09-17 Apple Inc. Method and apparatus for boot variable protection
WO2020027815A1 (en) * 2018-07-31 2020-02-06 Hewlett-Packard Development Company, L.P. Executing instructions
CN112805703A (zh) 2018-10-12 2021-05-14 三菱电机株式会社 软件验证装置、软件验证方法以及软件验证程序
CN110262840B (zh) * 2019-06-17 2023-01-10 Oppo广东移动通信有限公司 设备启动监控方法及相关产品

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4654480A (en) * 1985-11-26 1987-03-31 Weiss Jeffrey A Method and apparatus for synchronizing encrypting and decrypting systems
AU3777593A (en) * 1992-02-26 1993-09-13 Paul C. Clark System for protecting computers via intelligent tokens or smart cards
US5643086A (en) * 1995-06-29 1997-07-01 Silicon Gaming, Inc. Electronic casino gaming apparatus with improved play capacity, authentication and security
ES2357472T3 (es) * 1995-06-29 2011-04-26 Igt Sistema de juego electrónico de casino con mayor capacidad de juego, de autenticación y de seguridad.
JP3293760B2 (ja) 1997-05-27 2002-06-17 株式会社エヌイーシー情報システムズ 改ざん検知機能付きコンピュータシステム
US5919257A (en) * 1997-08-08 1999-07-06 Novell, Inc. Networked workstation intrusion detection system
US6704871B1 (en) * 1997-09-16 2004-03-09 Safenet, Inc. Cryptographic co-processor
US6185678B1 (en) * 1997-10-02 2001-02-06 Trustees Of The University Of Pennsylvania Secure and reliable bootstrap architecture
US6378072B1 (en) * 1998-02-03 2002-04-23 Compaq Computer Corporation Cryptographic system
US6401208B2 (en) * 1998-07-17 2002-06-04 Intel Corporation Method for BIOS authentication prior to BIOS execution
US6081890A (en) * 1998-11-30 2000-06-27 Intel Corporation Method of communication between firmware written for different instruction set architectures
US6263431B1 (en) * 1998-12-31 2001-07-17 Intle Corporation Operating system bootstrap security mechanism
EP1161716B1 (en) * 1999-02-15 2013-11-27 Hewlett-Packard Development Company, L.P. Trusted computing platform
US6625730B1 (en) * 2000-03-31 2003-09-23 Hewlett-Packard Development Company, L.P. System for validating a bios program and memory coupled therewith by using a boot block program having a validation routine
US20040064457A1 (en) * 2002-09-27 2004-04-01 Zimmer Vincent J. Mechanism for providing both a secure and attested boot

Also Published As

Publication number Publication date
EP1369764B1 (en) 2009-12-23
CN1469238A (zh) 2004-01-21
EP1369764A2 (en) 2003-12-10
JP4052978B2 (ja) 2008-02-27
US6907522B2 (en) 2005-06-14
EP1369764A3 (en) 2005-05-18
AU2003204376B2 (en) 2009-11-26
TW200401228A (en) 2004-01-16
US20030229777A1 (en) 2003-12-11
KR100965717B1 (ko) 2010-06-24
US7676840B2 (en) 2010-03-09
US20050138270A1 (en) 2005-06-23
DE60330627D1 (de) 2010-02-04
KR20030095301A (ko) 2003-12-18
ATE453162T1 (de) 2010-01-15
HK1058561A1 (en) 2004-05-21
TWI292556B (en) 2008-01-11
AU2003204376A1 (en) 2004-01-08
JP2004013905A (ja) 2004-01-15

Similar Documents

Publication Publication Date Title
CN100492277C (zh) 在安全的引导载入程序中使用散列法的方法和装置
US7062652B2 (en) Semiconductor memory card, data reading apparatus and data reading/reproducing apparatus
US8751786B1 (en) Method and integrated circuit for loading and executing firmware based on programing of one-time programmable memory
CN100346320C (zh) 在存储器区域具有分割区域的信息存储装置
US8761400B2 (en) Hardware linked product key
JP3234328B2 (ja) 内部プログラムを実行することが可能なマイクロコンピュータ用pcカード
US8880900B2 (en) Memory system
CN1553315A (zh) 在安全引导装载程序中使用散列技术
KR101464960B1 (ko) 라이센스와 콘텐트를 연결하기 위한 방법과 장치
KR101450131B1 (ko) 세션 티켓을 바탕으로 콘텐트에 액세스하기 위한 방법과 장치

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090527

Termination date: 20130605