CN101199159A - 安全引导 - Google Patents

安全引导 Download PDF

Info

Publication number
CN101199159A
CN101199159A CNA2006800062389A CN200680006238A CN101199159A CN 101199159 A CN101199159 A CN 101199159A CN A2006800062389 A CNA2006800062389 A CN A2006800062389A CN 200680006238 A CN200680006238 A CN 200680006238A CN 101199159 A CN101199159 A CN 101199159A
Authority
CN
China
Prior art keywords
program
expression
computer
described program
deciphering
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
CNA2006800062389A
Other languages
English (en)
Inventor
S·A·费尔德
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 CN101199159A publication Critical patent/CN101199159A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/80Wireless

Abstract

提供了用于对要在计算系统上运行的计算机程序执行完整性验证的系统和方法。在将执行控制传递到操作系统的下一级之前或在允许程序运行之前完成完整性检查。完整性检查涉及使用本地储存的密钥来确定程序在执行之前是否已被修改或篡改。如果检查显示程序未被更改,则程序将执行,且在引导过程期间,允许执行控制被传输到下一级。然而,如果检查确认程序已被修改,则计算系统不允许程序运行。

Description

安全引导
发明领域
本发明涉及操作系统和计算机系统安全性,尤其涉及使用本地储存的密钥在计算系统的各种传输点处的多个完整性检查。
背景
安全性是任何计算设备用户的主要问题,计算设备可以是包括执行储存在存储器中的程序代码以执行某一功能的处理器的任何设备。计算系统的易受攻击方面包括但不限于,引导过程的传输点(例如,其中BIOS将系统控制传输到引导代码的点)以及先前被加载到计算系统上的程序的后续操作。
传输点是其中系统控制从计算设备的一个模块或一组指令传输到该计算设备的另一模块或另一组指令的时间点。引导过程期间的传输在一个模块(例如,BIOS)完成其任务时发生,在这一点上它将控制传递给下一模块,使得可启动计算机启动的下一阶段。另一种传输在所选的程序由系统给予运行许可时发生。
在传输点处,计算设备特别易受来自病毒或其它恶意代码的安全破坏的攻击,这些病毒或恶意代码通过将其自己伪装成规范代码来取得系统控制。例如,将其自己伪装成引导程序的恶意程序在操作系统的内部安全措施具有取得控制的机会之前将被给予对整个系统的控制。恶意代码也可通过隐藏在本应规范的程序内来伪装其自己。通常,病毒是有害的,并且可破坏文件和以其它方式破坏计算设备。可确定程序是否是它所声称的程序的系统和方法为使得计算设备对病毒和其它恶意代码更安全进行了很长时间的研究。
作为一种针对未授权程序修改的安全性,在计算系统中采用了数据签名。检测程序是否被更改、篡改或修改的公知方案包括使用数字签名。在执行程序之前,例如通过诸如安全散列算法(SHA 1)或MD5等散列算法来创建该程序的唯一表示。该唯一表示然后用私钥来签署或加密,私钥从可信授权机构提供给作者并且可通过单独的注册和验证过程来验证作者的真实性。加密的表示作为与该程序相关联的一种形式的数字签名与该程序一起储存。当要执行该程序时,用对应于用于签署该程序的表示的私钥的公钥来解密或验证签名。要执行的程序的唯一表示是使用用于原始程序的同一算法来形成的。该表示可被认为是确认。如果确认匹配解密的签名,则程序未被篡改或更改,且可被执行,因为它已被成功验证。然而,如果确认和解密的签名不匹配,则该程序不应被执行,因为这表示它已被修改。
当然,恶意代码作者也可包括签名。因而,验证过程实际上将验证出该代码是它所声称的代码。然而,恶意代码作者不情愿采取这些步骤,因为大多数签名过程依赖于可信密钥发布授权机构并引入一种可通往该作者的身份的个人档案。另外,这也需要向密钥发布授权机构支付费用。因此,要求签署其上运行的所有代码的系统为根除恶意代码以及提供对谁创作了其机器上存在的代码的用户可见性尚有很长一段路要走。不幸的是,当前可用的许多程序出于诸如增加的复杂性和成本等各种原因未被签署。因此,当计算设备的用户接收到某种程序时,用户例如无法验证该代码且无法验证一个未验证程序可能是恶意的并且会损坏整个计算设备。
此外,除了用户选择运行的程序之外,引导程序也可能被恶意地修改,从而仅仅通过打开或启动计算设备就会导致问题。
无法加载并运行未签署的程序并不是一种可行的选项,因为有太多的现有程序将落入这一分类中。因此,要求签署所有的程序将显著降低程序的可用性并且将破坏许多传统应用程序。
由此,期望具有一种围绕上述限制来工作并对计算设备的模块执行完整性检查的模型。
发明概述
考虑到本领域的上述和其它缺点,本发明提供一种用于通过在传输执行控制之前执行检查来验证模块的完整性的系统和方法。
本发明还提供了一种用于向未签署程序应用本地储存的签署密钥以在后续操作中确保代码未被更改的系统和方法。本发明允许将本地签名应用于程序。签名用于稍后确定该程序是否在加载操作之间被更改。为此,该系统和方法对程序执行一函数以生成该程序的第一表示。该第一表示然后用本地储存的密钥来加密。较佳地,该第一表示使用散列函数来生成。较佳地,本地储存的密钥是来自公钥/私钥对的私钥。在执行程序之前,对该程序执行该函数以生成第二表示。加密的第一表示也被解密以生成解密的第一表示。将两个表示进行比较以验证该程序未改变。
以下描述本发明的其它优点和特征。
附图简述
参考附图进一步描述根据本发明的用于在计算设备的整个操作期间,包括引导过程和已加载的可执行码的执行期间使用本地储存的签署密钥来执行完整性检查的系统和方法,附图中:
图1是其中可实施本发明的示例性计算环境的框图;
图2是示出在操作系统的引导循环期间的传输控制链的框图;
图3a-3b是示出根据本发明的完整性检查的实现的流程图;
图4是用于确定程序是否已被修改的程序及其组件的框图表示;以及
图5是描绘使用本地储存的签署密钥来验证程序的流程图。
发明详述
图1和以下讨论提供了可结合其来实现本发明的合适的计算环境的简要概括描述。本发明可以使用众多其它通用或专用计算系统环境或配置来操作。适用于本发明的众所周知的计算系统、环境和/或配置的示例包括但不限于,个人计算机、服务器计算机、手持式或膝上设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子设备、网络PC、小型机、大型机、包括任一上述系统或设备的分布式计算环境等等。
参考图1,用于实现本发明的示例性系统包括计算机110形式的通用计算设备。计算机110的组件可包括但不限于,处理单元120、系统存储器130以及将包括系统存储器130的各类系统组件耦合至处理单元120的系统总线121。系统总线121可以是若干种总线结构的任一种,包括存储器总线或存储器控制器、外围总线以及使用各类总线体系结构的任一种的局部总线。作为示例而非局限,这类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线、外围部件互连(PCI)总线(也称为Mezzanine总线)以及PCI Express(PCIe)。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计算机110访问的任一可用介质,包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非局限,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以用于储存诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任一方法或技术实现的易失性和非易失性,可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可由计算机110访问的任一其它介质。通信介质通常具体化为诸如载波或其它传输机制的已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,并包括任一信息传送介质。术语“已调制数据信号”指以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非局限,通信介质包括有线介质,如有线网络或直接连线连接,以及无线介质,如声学、RF、红外和其它无线介质。上述任一的组合也应当包括在计算机可读介质的范围之内。
系统存储器130包括以易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)包括如在启动时帮助在计算机110内的元件之间传输信息的基本例程,通常储存在ROM 131中。RAM 132通常包含处理单元120立即可访问和/或当前正在操作的数据和/或程序模块。作为示例而非局限,图1示出了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110还可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作示例,图1示出了对不可移动、非易失性磁介质进行读写的硬盘驱动器141;对可移动、非易失性磁盘152进行读写的磁盘驱动器151;以及对可移动、非易失性光盘156,如CD ROM或其它光介质进行读写的光盘驱动器155。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器141通常通过不可移动存储器接口,如接口140连接到系统总线121,磁盘驱动器151和光盘驱动器155通常通过可移动存储器接口,如接口150连接到系统总线121。
上文讨论并在图1示出的驱动器及其关联的计算机存储介质为计算机110提供了计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图1中,示出硬盘驱动器141储存操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同,也可以与它们不同。这里对操作系统144、应用程序145、其它程序模块146和程序数据147给予不同的标号来说明至少它们是不同的副本。
用户可以通过输入设备,如键盘162和定位设备161(通常指鼠标、跟踪球或触摸垫)向计算机110输入命令和信息。其它输入设备(未示出)可包括话筒、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常通过耦合至系统总线121的用户输入接口160连接至处理单元120,但是也可以通过其它接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。监视器191或其它类型的显示设备也通过接口,如视频接口190连接至系统总线121,视频接口进而与视频存储器186通信。除监视器之外,计算机也可包括其它外围输出设备,如扬声器197和打印机196,它们通过输出外围接口195连接。
计算机110可以使用到一个或多个远程计算机,如远程计算机180的逻辑连接在网络化或分布式环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,并通常包括许多或所有以上相对于计算机110所描述的元件,尽管在图1中仅示出了存储器存储设备181。图1描述的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可包括其它网络/总线。这类网络环境常见于家庭、办公室、企业范围计算机网络、内联网以及因特网。
当在LAN网络环境中使用时,计算机110通过网络接口或适配器170连接至LAN 171。当在WAN网络环境中使用时,计算机110通常包括调制解调器172或用于通过WAN 173,如因特网建立通信的其它装置。调制解调器172可以是内置或外置的,它通过用户输入接口160或其它适当的机制连接至系统总线121。在网络化环境中,相对于计算机110所描述的程序模块或其部分可储存在远程存储器存储设备中。作为示例而非局限,图1示出远程应用程序185驻留在存储器设备181上。可以理解,示出的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其它手段。
此处所描述的各种技术可结合硬件或软件来实现,或在适当时以两者的组合来实现。由此,本发明的方法和装置或其某些方面或部分,可采用包含在诸如软盘、CD-ROM、硬盘驱动器或任何其它机器可读存储介质等有形介质中的程序代码(即,指令)的形式,其中,当程序代码被加载到诸如计算机等机器中并由其执行时,该机器变为用于实施本发明的装置。在可编程计算机上的程序代码执行的情况下,计算装置一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。可例如通过使用API、可重复使用控件等来实现或利用结合本发明描述的过程的一个或多个程序较佳地用高级过程语言或面向对象的编程语言来实现,以与计算机系统通信。然而,如有需要,程序可以用汇编语言或机器语言来实现。在任何情况下,语言可以是已编译或已解释语言,并与硬件实现相组合。
尽管示例性实施例涉及在一个或多个独立计算机系统的上下文中利用本发明,但本发明不限于此,而是相反,可以结合诸如网络或分布式计算环境等任何计算环境来实现。此外,本发明可以在多个处理芯片或设备中或跨多个处理芯片或设备来实现,并且存储可类似地跨多个设备来实现。这些设备可包括个人计算机、网络服务器、手持式设备、超型计算机或被集成到诸如汽车和飞机等其它系统中的计算机。
图2是根据本发明的一方面的在计算系统的引导过程期间的传输控制的框图说明。在将控制传输到每一级别之前验证该特定级别的完整性。
BIOS 133包含有助于在启动期间在计算机110内的元件之间传输信息的基本例程。如上所述,BIOS 133通常包含在计算机系统的只读存储器(ROM)131中,从而确保它总是可用的。当计算机110被打开时,对启动过程的控制被传递到BIOS133,后者控制操作系统134和诸如鼠标161、键盘162和监视器191等各种设备之间的交互。当BIOS 133启动计算机110时,它在定位实际将操作系统134加载到计算机110的随机存取存储器(RAM)132中的引导程序之前确认所有附件都是可操作的。
引导块210是磁盘驱动器141中实际引导程序所处的扇区。BIOS 133将引导块210加载到计算机110的RAM 132中。然后,在执行引导块210的完整性检查(以下详细描述)之后,BIOS 133将系统控制传递到引导块210。引导块210中的引导程序具有非常有限的功能。其任务仅仅是将足够的操作系统134加载到RAM132中,使得操作系统134可在某一初步级别处启动运作并开始将其自身加载到计算设备中。
为此,引导程序加载加载器220,它是操作系统134的一部分并加载操作系统134的剩余部分。在操作系统134完全可运作之后,它也可定位并加载诸如可位于硬盘141、CD ROM 156或甚至在网络171或173上的应用程序135等各种程序。在定位程序之后,操作系统随后将所选的程序加载到RAM 132中,使得程序指令可执行。加载的程序可具有同样需要加载的其自己的组件,并且加载器220也负责这一操作。
如上所述,计算设备验证将在系统上运行的各种模块的完整性。它通过使用密钥来完成这一工作。密钥被储存在一安全位置中,该位置可以是磁盘驱动器141的加密部分或可被嵌入在安全存储器位置等中。在本发明的一个实施例中,密钥在企业内由域控制器集中分配和管理。
在本发明的一个实施例中,由加载器220检索本地储存的密钥225。本地储存的密钥225可以对计算系统是唯一的,并且可以随着时间改变以通过使得更难确定密钥值来进一步保护系统。本地储存的密钥225可以由计算设备合成或者可以例如在计算设备的制造期间被放置在计算设备的内部。因此,在加载器加载操作系统的任何部分并向其传递控制之前,它必须首先验证操作系统码。根据本发明的一方面,用本地储存的密钥225签署引导序列的每一部分。然后,在加载操作系统的每一部分之前,执行验证以确保该代码已至少由本地储存的密钥225签署且该代码部分未被修改。
内核230是操作系统134的中心部分,并且可被认为是计算机110的管理模块。因此,内核230不被任何恶意代码感染是非常重要的。允许恶意代码在内核中运行可能是灾难性的。内核一般是操作系统中要加载的第一部分,且必须在获得对系统的控制之前经受本地密钥的验证。操作系统的基本但必需的服务由内核230提供和管理。它负责存储器管理、进程和任务管理以及磁盘管理。应用程序135请求内核230的各种服务。通常,内核230包括用于处理竞争其服务的所有请求的中断处理程序、用于确定处理的顺序的调度程序、以及用于允许使用计算机110来完成每一调度的进程的管理程序。内核230经常被使用,且保留在计算机110的主存储器中,因此通常被加载到受保护计算机存储区域中。内核230在允许可执行文件240运行之前执行对任何可执行文件240的完整性检查。
可执行文件240是包含程序且能够作为计算机110中的程序来执行或运行的文件。当选择可执行文件240来运行时,操作系统134执行该程序。可执行文件240也可被称为二进制码,因为这些文件是二进制值的序列。然而,某些其它程序即使不是严格说来的二进制文件也可被认为是可执行文件。例如,字节代码程序可被认为是可执行的,因为它们旨在计算系统上运行。本应是规范程序的可执行文件240可被更改以包含恶意代码,由此示出了仅运行从可信源接收的那些文件并确认文件在操作之间未被修改的重要性。
图2还示出了在系统启动期间对各种组件的完整性检查的过程。最初,BIOS133在将执行控制传输到引导块210之前检查引导块210的完整性。当然,BIOS 133被储存在非易失性存储器中且因此不能被修改。因此,完整性检查并不是必需的。在将控制传递到引导块210之后,它执行引导过程中的其部分,即加载加载器220,后者加载操作系统134的剩余部分。在传递控制之前,引导块210验证加载器220的完整性。类似地,加载器加载操作系统内核230。但是在加载内核230之前,加载器220验证内核230的完整性。之后,在计算设备110的正常操作过程中,用户将在计算设备110上执行各种程序和应用。这些程序和应用也需要被验证。因此,在内核230确认了可执行文件240的完整性之后,执行控制然后从内核230传递到可执行文件240。
本发明的一方面允许加载器220是计算机可读介质上可用的代码的只读副本,这些计算机可读介质诸如可移动、非易失性光盘156,如CDROM或DVD;或可移动、非易失性磁盘152,如磁带盒。在本实施例中,加载器220在将执行控制传输到作为可写介质的内核230之前确认来自计算机可读介质的内核230的完整性。本实施例引入了附加的安全措施,因为只读介质不能被外部病毒作者更改。
本发明不限于仅对引导程序和可执行文件的完整性检查。相反,完整性检查可对包括但不限于字节代码文件、可执行文件和启动程序的任何程序执行。
此外,本发明不限于在执行计算机系统上的所有程序之前的完整性检查的实现。根据本发明,检查可对一个程序或多个所选程序执行。
图3a和3b详细叙述了图2所示的步骤。此处,各种步骤被示为在完整性检查中在传输执行控制之前进行。再一次,完整性检查不限于每一级别,且不仅限于引导程序,而是可对任何类型的程序执行。根据本发明,程序的示例包括但不限于,可执行文件、引导和启动文件、批处理程序以及脚本。一些示例是引导块、加载器代码、内核以及可执行文件或已记载图像。
BIOS 133最初具有对启动过程的控制,并在图3a的步骤300中在确认各种附件的可操作性之后开始将操作系统134加载到RAM 132的过程。BIOS 133通常被储存在非易失性存储器中,并在计算设备的引导期间被移至易失性存储器(即,RAM 132)中。为此,BIOS 133本身可以不被验证,因为它不易于被更改。然而,可执行预BIOS验证步骤,该步骤使BIOS经历与在计算设备110上操作的其它程序模块相同的验证过程。这在BIOS被储存在闪存或者期望确保BIOS本身未被替换的情况下尤为真实。在步骤310中,BIOS 133检查引导块210的完整性。如果在步骤320中令人满意地验证了完整性,则BIOS 133在步骤330中将引导块210加载到RAM 132中并将系统的执行控制传递到引导块210。如果未确认完整性,则在步骤340中停止引导循环。
如果引导块210接收到执行控制,则引导块210在步骤350处将操作系统134的剩余部分加载到RAM 132中。引导块210还在将执行控制传递到加载器220之前检查加载器220的完整性。加载器220完整性检查在步骤360处执行。如果加载器220的完整性未被确认,则该循环在步骤340处停止。如果引导块210发现加载器220的完整性是令人满意的,则引导块210在步骤370处将执行控制传输到加载器220。加载器220然后负责定位用户选择要执行的程序并将其加载到RAM 132中。这一定位和加载操作在步骤380处发生。
在图3b的步骤390处,加载器220验证内核230的完整性。类似于先前的完整性检查,如果该检查在400中确认完整性,则在步骤410处将传输控制从加载器220发送到内核230。如果未确认完整性,则该过程继续到步骤420,在那里停止该循环。
在步骤430处,现在拥有执行控制的内核230确定所选程序的完整性。如果在步骤440处确认诸如已加载图像或可执行文件等程序的完整性,则在步骤450处将计算系统的执行控制传输到该程序,使得所选程序可被执行。如果未确认该程序的完整性,则该循环在步骤420处停止,并且该程序不接收执行控制。
先前的流程图示出了如何在各种传输控制点处执行完整性检查。图4详细叙述了这一过程并且提供了完整性验证过程本身的框图表示。例如但不限于引导过程中涉及的模块的一部分、操作系统或应用程序的程序由程序500来表示。本发明的目的之一是确定在后续操作中程序500是否被更改。如果发生了某种修改,则系统确定重新执行程序500是不安全的。尽管所描述的过程指示执行检查来确定程序未改变,但是情况可以是仅如此验证程序的一部分且系统可允许程序的其它部分随时间改变。这特别是程序中被允许改变的部分包含由程序使用的数据而非代码的情况。在这一情况下,可确定程序500的一部分可合法地改变而不会引入恶意代码。
最初,创建程序500的唯一表示A 510。该唯一表示可通过各种函数中的任一种来创建,其中函数生成程序500的压缩表示。形成该表示以使得它拥有合理的唯一性。
用于创建表示510的函数的一个示例是散列算法。公知的散列算法包括安全散列算法(SHA 1)和MD5。然而,可采用用于生成该表示的其它算法或函数,且本发明决不受到任何特定算法或函数的限制。
然后加密表示A 510以形成数字签名520。数字签名520表示程序500的唯一且安全的表示。有许多公知的加密过程。本发明可采用,但决不限于,公钥/私钥加密、对称加密、以及非对称加密。
当解密数字签名520时,结果是唯一表示A 510。所使用的解密函数对应于所采用的特定加密函数。例如,如果表示A 510是使用私钥来加密的,则解密将用对应于该私钥的公钥来生成。
之后,对于程序500的后续加载操作,需要验证来确定程序500是否被更改。用于后续操作的程序被表示为图4中的确认530。形成确认530的唯一表示,得到唯一表示B 540。唯一表示B 540的创建必须类似于唯一表示A 510的创建。
如果唯一表示B 540匹配作为数字签名520的解密的唯一表示A 510,则确认530与程序500相同。由此,程序500未被更改,且计算系统加载并运行程序500是安全的。然而,如果唯一表示B 540不匹配唯一表示A 510,则程序500已按某种方式更改且不应发生加载。
图5是示出使用本地储存的签署密钥225来确认程序500未被更改且由此允许对后续操作重新执行的方法的流程图。图5所示的方法使用了公钥/私钥加密,但是可采用其它加密方法。
当接收到诸如内核230等程序500时,在该方法的步骤600中创建程序500的唯一表示A 510。可使用创建程序500的压缩表示的散列算法或任何其它函数来创建唯一表示A 510。形成该表示,使得它拥有合理的唯一性。在步骤610处,然后用本地储存的密钥225来加密唯一表示A 510。如上文更详细描述的,该密钥对于机器是唯一的,使得程序500不能被确定。加密表示数字签名520并且在步骤620处与程序500相关联。为此,数字签名可被直接追加到程序500或与程序500分开储存,且然后由其它进程跟踪该程序和数字签名之间的关联。
然后储存经签署的程序500,直到系统试图重新加载或重新执行程序500。当系统试图随后加载程序500时,在步骤630处用公钥解密加密的数字签名520。公钥是公钥/私钥对的一部分,且在本发明的一个实施例中,本地储存的密钥是私钥。如上所述,可构想诸如对称加密技术等其它加密方案。
在步骤640处创建确认530的唯一表示B 540。该唯一表示B 540必须以与在步骤600处形成程序500的表示相同的方式形成。例如,需要对两个操作使用相同的散列算法。在步骤650处,将确认530的表示与数字签名520的解密进行比较。在步骤660处,检查该比较来查看是否得到匹配。如果得到匹配,则在步骤670处,可加载程序500以供后续的操作,因为匹配指示程序500未被修改且确认文件530实际上是程序500。如果加密,即唯一表示A 510不匹配新表示,即唯一表示B 540,则在步骤680处停止该操作。失配表示程序500已被修改且可能被破坏。
由此,该方法确保仅在执行之前未被修改的程序将在系统上加载并执行。
在本发明的一个实施例中,当用户首先下载和/或安装应用、程序或代码模块时,系统试图确保整个系统的完整性。为此,程序可使用第三方签名系统和可信授权机构来独立验证。然而,如果对特定程序没有这样的可信签名可用,则用户可能仍希望使用该特定的程序代码。此外,用户可能具有足够的原因来相信该程序代码的来源是合法实体(或倾向于决定做出这一判断调用)。由于程序代码没有第三方签名,因此系统将使得该代码用本地签署密钥225来签署,使得该程序代码在其被加载到计算设备110上之后不能改变。为此,较佳地对于诸如可执行文件240等程序500是否来自可信来源来提示计算系统的用户。如果用户相信该来源是可信的,则该过程因用户做出相应的指示而继续。然而,如果用户不相信该来源是可信的,则该过程将结束而不在系统上加载或安装程序500。
如可从以上描述中清楚的,本发明的系统和方法的全部或部分可用硬件、软件或两者的组合来实施。当用软件实施时,本发明的方法和装置或其某些方面或部分可用程序代码(即,指令)的形式来实施。该程序代码可被储存在计算机可读介质上,其中当该程序代码被加载到诸如计算机110等机器中并由其执行时,该机器变为用于实施本发明的装置。计算机可读介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CDROM、数字多功能盘(DVD)或其它光学存储、存储卡、记忆棒、磁盒、磁带、磁盘存储或其它磁存储设备、或可用于储存信息并可由计算机110访问的任何其它介质。程序代码可用高级过程语言或面向对象的编程语言来实现。或者,程序代码可用汇编语言或机器语言来实现。在任何情况下,程序代码可用已编译形式或经由解释来执行。
如上所述,本发明涉及用于确保仅验证的程序在系统上执行且程序代码在执行之前未被修改或更改的系统和方法。可以理解,可对上述实施例做出改变而不脱离其宽泛的发明性概念。例如,尽管上文将本发明描述为在计算机110中实施,但是可以理解本发明可以在许多其它类型的计算设备中实施,作为示例而非局限,包括卫星接收器、机顶盒、游乐中心游戏、个人计算机(PC)、便携式电话、个人数字助理(PDA)、以及其它手持式设备。由此,本发明可应用于各种形式的数字数据和程序代码,诸如模拟、图像、视频、音频、文本、游戏、操作系统、应用程序或任何其它形式的软件。此外,本发明的方法和系统可被容易地应用于或被修改以用于控制对几乎任何类型的网络上的、分布在几乎任何类型的媒体上的或经由几乎任何类型的传播介质(例如,但非局限,包括射频传输和光学信号)的数字数据和程序代码的访问。因此,可以理解,本发明不限于所公开的特定实施例,而是旨在覆盖落入由所附权利要求书定义的本发明的精神和范围之内的所有修改。

Claims (20)

1.一种用于验证程序的方法,包括:
对所述程序执行一函数以生成所述程序的第一表示;
用本地储存的密钥加密所述第一表示;
在执行所述程序之前,对所述程序执行所述函数以生成第二表示;
解密所述加密的第一表示以生成解密的第一表示;以及
将所述第二表示与所述解密的第一表示进行比较;
其中所述程序可以是所述程序的一部分。
2.如权利要求1所述的方法,其特征在于,所述本地储存的密钥是私钥。
3.如权利要求2所述的方法,其特征在于,所述解密步骤采用对与所述私钥相关联的公钥的使用。
4.如权利要求1所述的方法,其特征在于,所述程序是BIOS。
5.如权利要求1所述的方法,其特征在于,所述程序是加载器程序。
6.如权利要求1所述的方法,其特征在于,所述程序是内核。
7.如权利要求1所述的方法,其特征在于,所述程序是可执行文件。
8.如权利要求1所述的方法,其特征在于,所述函数是散列算法。
9.如权利要求1所述的方法,其特征在于,还包括:
如果对所述第二表示与所述解密的第一表示的比较得到匹配,则允许所述程序执行。
10.一种其上储存程序代码的计算机可读介质,所述程序代码在包括处理器和存储器的系统中使用,所述程序代码使得所述处理器执行以下步骤:
对一程序执行一函数以生成所述程序的第一表示;
用本地储存的密钥加密所述第一表示;
在执行所述程序之前,对所述程序执行所述函数以生成第二表示;
解密所述加密的第一表示以生成解密的第一表示;以及
将所述第二表示与所述解密的第一表示进行比较;
其中所述程序可以是所述程序的一部分。
11.如权利要求10所述的计算机可读介质,其特征在于,所述解密步骤采用了对与所述本地储存的密钥相关联的公钥的使用。
12.如权利要求10所述的计算机可读介质,其特征在于,所述程序是BIOS。
13.如权利要求10所述的计算机可读介质,其特征在于,所述程序是加载器程序。
14.如权利要求10所述的计算机可读介质,其特征在于,所述程序是内核。
15.如权利要求10所述的计算机可读介质,其特征在于,所述程序代码使得所述处理器还执行以下步骤:
如果对所述第二表示与所述解密的第一表示的比较得到匹配,则允许所述程序执行。
16.一种计算机系统,包括:
存储器;
处理器;
储存在所述存储器的第一部分中的控制代码,所述控制代码包括能够执行以下步骤的计算机可读指令:
对一程序执行一函数以生成所述程序的第一表示;
用本地储存的密钥加密所述第一表示;
在执行所述程序之前,对所述程序执行所述函数以生成第二表示;
解密所述加密的第一表示以生成解密的第一表示;以及
将所述第二表示与所述解密的第一表示进行比较;
其中所述程序可以是所述程序的一部分。
17.如权利要求16所述的计算机系统,其特征在于,所述解密步骤采用了对与所述本地储存的密钥相关联的公钥的使用。
18.如权利要求16所述的计算机系统,其特征在于,所述程序是BIOS。
19.如权利要求16所述的计算机系统,其特征在于,所述程序是加载器程序。
20.如权利要求16所述的计算机系统,其特征在于,所述程序是内核。
CNA2006800062389A 2005-04-15 2006-04-06 安全引导 Pending CN101199159A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/106,756 US20060236122A1 (en) 2005-04-15 2005-04-15 Secure boot
US11/106,756 2005-04-15

Publications (1)

Publication Number Publication Date
CN101199159A true CN101199159A (zh) 2008-06-11

Family

ID=37109951

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2006800062389A Pending CN101199159A (zh) 2005-04-15 2006-04-06 安全引导

Country Status (13)

Country Link
US (1) US20060236122A1 (zh)
EP (1) EP1872231A4 (zh)
JP (1) JP2008537224A (zh)
KR (1) KR20080005482A (zh)
CN (1) CN101199159A (zh)
AU (1) AU2006236956A1 (zh)
BR (1) BRPI0608821A2 (zh)
CA (1) CA2598616A1 (zh)
MX (1) MX2007011377A (zh)
NO (1) NO20074060L (zh)
RU (1) RU2007138019A (zh)
WO (1) WO2006113167A2 (zh)
ZA (1) ZA200707404B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102262717A (zh) * 2011-07-18 2011-11-30 百度在线网络技术(北京)有限公司 用于更改原始安装信息及检测安装信息的方法、装置及设备
CN104636662A (zh) * 2013-11-15 2015-05-20 华为技术有限公司 一种数据处理方法和终端设备
CN106845212A (zh) * 2017-01-17 2017-06-13 北京北信源软件股份有限公司 一种视窗操作系统下的软件验证方法
CN110955442A (zh) * 2019-11-11 2020-04-03 郑州信大先进技术研究院 一种适用于PCI-E密码卡的Bootloader
CN113498516A (zh) * 2019-02-26 2021-10-12 微软技术许可有限责任公司 可现场更换的触摸显示模块

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7779482B1 (en) 2003-02-07 2010-08-17 iGware Inc Delivery of license information using a short messaging system protocol in a closed content distribution system
US8131649B2 (en) 2003-02-07 2012-03-06 Igware, Inc. Static-or-dynamic and limited-or-unlimited content rights
US20100017627A1 (en) 2003-02-07 2010-01-21 Broadon Communications Corp. Ensuring authenticity in a closed content distribution system
US20070055859A1 (en) * 2005-09-02 2007-03-08 Mediatek Inc. Boot systems and methods
EP1826697A1 (en) * 2006-02-24 2007-08-29 Giga Games System, SL Method for booting and using software for AWP and B type amusing gaming machines, and for C type casino machines
US7904278B2 (en) * 2006-05-02 2011-03-08 The Johns Hopkins University Methods and system for program execution integrity measurement
EP2033350A2 (en) 2006-05-02 2009-03-11 Broadon Communications Corp. Content management system and method
US7624276B2 (en) 2006-10-16 2009-11-24 Broadon Communications Corp. Secure device authentication system and method
US7613915B2 (en) 2006-11-09 2009-11-03 BroadOn Communications Corp Method for programming on-chip non-volatile memory in a secure processor, and a device so programmed
US8904552B2 (en) * 2007-04-17 2014-12-02 Samsung Electronics Co., Ltd. System and method for protecting data information stored in storage
US20080271145A1 (en) * 2007-04-30 2008-10-30 Schiller Mark R Tamper indication system and method for a computing system
FR2926149B1 (fr) 2008-01-07 2010-01-29 Bull Sas Dispositif, systemes et procede de demarrage securise d'une installation informatique
US8793477B2 (en) * 2008-02-12 2014-07-29 Mcafee, Inc. Bootstrap OS protection and recovery
US9286080B2 (en) * 2008-07-02 2016-03-15 Hewlett-Packard Development Company, L.P. Memory management for hypervisor loading
US8843742B2 (en) 2008-08-26 2014-09-23 Hewlett-Packard Company Hypervisor security using SMM
WO2011042892A1 (en) * 2009-10-09 2011-04-14 Nokia Corporation Platform security
US20130036103A1 (en) * 2011-08-04 2013-02-07 The Boeing Company Software Part Validation Using Hash Values
US9262631B2 (en) * 2011-11-15 2016-02-16 Mstar Semiconductor, Inc. Embedded device and control method thereof
JP5519712B2 (ja) * 2012-01-20 2014-06-11 レノボ・シンガポール・プライベート・リミテッド コンピュータをブートする方法およびコンピュータ
US8627097B2 (en) 2012-03-27 2014-01-07 Igt System and method enabling parallel processing of hash functions using authentication checkpoint hashes
US9942257B1 (en) * 2012-07-11 2018-04-10 Amazon Technologies, Inc. Trustworthy indication of software integrity
US9465943B2 (en) * 2013-01-31 2016-10-11 Red Hat, Inc. Extension of a platform configuration register with a known value
US20150019852A1 (en) * 2013-07-12 2015-01-15 International Games System Co., Ltd. Verification method for system execution environment
CN104796771B (zh) * 2014-01-22 2018-04-06 中国电信股份有限公司 控件下载方法和系统以及下载引导模块
US9672361B2 (en) * 2014-04-30 2017-06-06 Ncr Corporation Self-service terminal (SST) secure boot
CN104019783B (zh) * 2014-06-13 2017-01-18 冠亿精密工业(昆山)有限公司 一种外径检测装置
CN105704514B (zh) * 2014-11-27 2018-06-29 中国电信股份有限公司 用于实现安全支付的方法、机顶盒和系统
US9727737B1 (en) 2015-07-27 2017-08-08 Amazon Technologies, Inc. Trustworthy indication of software integrity
JP2017102566A (ja) * 2015-11-30 2017-06-08 日本電信電話株式会社 不正ファイル検知装置、不正ファイル検知方法、および、不正ファイル検知プログラム
SG10201602449PA (en) * 2016-03-29 2017-10-30 Huawei Int Pte Ltd System and method for verifying integrity of an electronic device
US10664599B2 (en) 2017-05-01 2020-05-26 International Business Machines Corporation Portable executable and non-portable executable boot file security
US11138315B2 (en) * 2018-01-17 2021-10-05 Hewlett Packard Enterprise Development Lp Data structure measurement comparison
JP6706278B2 (ja) * 2018-03-27 2020-06-03 キヤノン株式会社 情報処理装置、及び情報処理方法
US11714910B2 (en) * 2018-06-13 2023-08-01 Hewlett Packard Enterprise Development Lp Measuring integrity of computing system
CN111095213A (zh) * 2018-08-23 2020-05-01 深圳市汇顶科技股份有限公司 嵌入式程序的安全引导方法、装置、设备及存储介质
JP7171339B2 (ja) * 2018-09-26 2022-11-15 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、及び、プログラム
KR102126931B1 (ko) * 2018-11-07 2020-06-25 시큐리티플랫폼 주식회사 시큐어 부팅 장치 및 방법
EP3696698A1 (en) * 2019-02-18 2020-08-19 Verimatrix Method of protecting a software program against tampering
JP7092071B2 (ja) * 2019-03-05 2022-06-28 トヨタ自動車株式会社 車両用制御装置、車両用制御装置の起動方法及び車両用制御プログラム
EP3772842A1 (de) * 2019-08-07 2021-02-10 Siemens Aktiengesellschaft Erkennung von manipulierten clients eines leitsystems
CN112231694A (zh) * 2020-10-27 2021-01-15 北京人大金仓信息技术股份有限公司 一种数据库的检测方法、装置、设备及介质

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3744034A (en) * 1972-01-27 1973-07-03 Perkin Elmer Corp Method and apparatus for providing a security system for a computer
US5121345A (en) * 1988-11-03 1992-06-09 Lentz Stephen A System and method for protecting integrity of computer data and software
US4975950A (en) * 1988-11-03 1990-12-04 Lentz Stephen A System and method of protecting integrity of computer data and software
EP0449242A3 (en) * 1990-03-28 1992-10-28 National Semiconductor Corporation Method and structure for providing computer security and virus prevention
US5421006A (en) * 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5864698A (en) * 1994-08-24 1999-01-26 Packard Bell Nec Disk based bios
US5537540A (en) * 1994-09-30 1996-07-16 Compaq Computer Corporation Transparent, secure computer virus detection method and apparatus
US5643086A (en) * 1995-06-29 1997-07-01 Silicon Gaming, Inc. Electronic casino gaming apparatus with improved play capacity, authentication and security
US5757915A (en) * 1995-08-25 1998-05-26 Intel Corporation Parameterized hash functions for access control
US5953502A (en) * 1997-02-13 1999-09-14 Helbig, Sr.; Walter A Method and apparatus for enhancing computer system security
US6185678B1 (en) * 1997-10-02 2001-02-06 Trustees Of The University Of Pennsylvania Secure and reliable bootstrap architecture
US6735696B1 (en) * 1998-08-14 2004-05-11 Intel Corporation Digital content protection using a secure booting method and apparatus
US6263431B1 (en) * 1998-12-31 2001-07-17 Intle Corporation Operating system bootstrap security mechanism
US6715074B1 (en) * 1999-07-27 2004-03-30 Hewlett-Packard Development Company, L.P. Virus resistant and hardware independent method of flashing system bios
US6625729B1 (en) * 2000-03-31 2003-09-23 Hewlett-Packard Company, L.P. Computer system having security features for authenticating different components
US6928548B1 (en) * 2000-09-29 2005-08-09 Intel Corporation System and method for verifying the integrity of stored information within an electronic device
FI114416B (fi) * 2001-06-15 2004-10-15 Nokia Corp Menetelmä elektroniikkalaitteen varmistamiseksi, varmistusjärjestelmä ja elektroniikkalaite
US7398389B2 (en) * 2001-12-20 2008-07-08 Coretrace Corporation Kernel-based network security infrastructure
US6907522B2 (en) * 2002-06-07 2005-06-14 Microsoft Corporation Use of hashing in a secure boot loader
US7174465B2 (en) * 2002-06-26 2007-02-06 Lenovo Singapore Pte, Ltd Secure method for system attribute modification
US7305710B2 (en) * 2003-04-29 2007-12-04 Pitney Bowes Inc. Method for securely loading and executing software in a secure device that cannot retain software after a loss of power
US20040250086A1 (en) * 2003-05-23 2004-12-09 Harris Corporation Method and system for protecting against software misuse and malicious code
US7380136B2 (en) * 2003-06-25 2008-05-27 Intel Corp. Methods and apparatus for secure collection and display of user interface information in a pre-boot environment
US8332652B2 (en) * 2003-10-01 2012-12-11 International Business Machines Corporation Computing device that securely runs authorized software

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102262717A (zh) * 2011-07-18 2011-11-30 百度在线网络技术(北京)有限公司 用于更改原始安装信息及检测安装信息的方法、装置及设备
CN102262717B (zh) * 2011-07-18 2014-05-07 百度在线网络技术(北京)有限公司 用于更改原始安装信息及检测安装信息的方法、装置及设备
CN104636662A (zh) * 2013-11-15 2015-05-20 华为技术有限公司 一种数据处理方法和终端设备
CN104636662B (zh) * 2013-11-15 2018-07-03 华为技术有限公司 一种数据处理方法和终端设备
CN106845212A (zh) * 2017-01-17 2017-06-13 北京北信源软件股份有限公司 一种视窗操作系统下的软件验证方法
CN113498516A (zh) * 2019-02-26 2021-10-12 微软技术许可有限责任公司 可现场更换的触摸显示模块
CN110955442A (zh) * 2019-11-11 2020-04-03 郑州信大先进技术研究院 一种适用于PCI-E密码卡的Bootloader
CN110955442B (zh) * 2019-11-11 2023-03-07 郑州信大先进技术研究院 一种适用于PCI-E密码卡的Bootloader

Also Published As

Publication number Publication date
US20060236122A1 (en) 2006-10-19
MX2007011377A (es) 2007-10-03
EP1872231A4 (en) 2009-07-29
ZA200707404B (en) 2009-06-24
EP1872231A2 (en) 2008-01-02
WO2006113167A2 (en) 2006-10-26
CA2598616A1 (en) 2006-10-26
KR20080005482A (ko) 2008-01-14
RU2007138019A (ru) 2009-04-20
AU2006236956A1 (en) 2006-10-26
JP2008537224A (ja) 2008-09-11
BRPI0608821A2 (pt) 2010-01-26
WO2006113167A3 (en) 2008-01-03
NO20074060L (no) 2007-11-14

Similar Documents

Publication Publication Date Title
CN101199159A (zh) 安全引导
US11664994B2 (en) Secure unlock systems for locked devices
CN109313690B (zh) 自包含的加密引导策略验证
CN101300583B (zh) 用于可信赖移动电话的简单可伸缩和可配置安全启动
CN102279760B (zh) 利用初始保护组件来进行设备引导
US10284372B2 (en) Method and system for secure management of computer applications
KR101067399B1 (ko) 대칭 키 암호화에 기초한 데이터의 저장 및 검색을 위한, 컴퓨팅 장치에서 구현되는 방법, 시스템 및 복수의 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 매체
US8874922B2 (en) Systems and methods for multi-layered authentication/verification of trusted platform updates
TWI557589B (zh) 用於產品驗證和啟動的安全軟體產品識別器
KR100996784B1 (ko) 공개 키 암호화에 기초한 데이터의 저장 및 검색을 위한, 컴퓨팅 장치에서 구현되는 방법, 시스템 및 복수의 명령어를 저장하는 하나 이상의 컴퓨터 판독가능 매체
CN112784278B (zh) 一种计算机系统的可信启动方法、装置及设备
KR20140099126A (ko) 소프트웨어를 보안하기 위하여 해시 함수를 이용한 소프트웨어 처리 방법, 그 장치 및 그 방법을 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체
CN112257086B (zh) 一种用户隐私数据保护方法及电子设备
JP2023512428A (ja) ハードウェアエンクレーブを使用して商用オフザシェルフプログラムバイナリを盗用から保護すること
WO2017000648A1 (zh) 一种被加固软件的认证方法及装置
US20080184028A1 (en) Methods, Apparatus and Products for Establishing a Trusted Information Handling System
Nyman et al. Citizen electronic identities using TPM 2.0
KR20200020627A (ko) 통합 보안 SoC를 이용한 IoT 디바이스의 안전한 부트 방법
US8756433B2 (en) Associating policy with unencrypted digital content
TWI428786B (zh) 建立一受保護之計算環境的方法
Msgna et al. Secure application execution in mobile devices
WO2023145240A1 (ja) 情報処理装置および情報処理システム
Κασαγιάννης Security evaluation of Android Keystore
Zhang et al. Security Considerations

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20080611