CN107408172B - 从用户信任的设备安全地引导计算机 - Google Patents

从用户信任的设备安全地引导计算机 Download PDF

Info

Publication number
CN107408172B
CN107408172B CN201680014962.XA CN201680014962A CN107408172B CN 107408172 B CN107408172 B CN 107408172B CN 201680014962 A CN201680014962 A CN 201680014962A CN 107408172 B CN107408172 B CN 107408172B
Authority
CN
China
Prior art keywords
loader
computer
boot
trusted device
user
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.)
Active
Application number
CN201680014962.XA
Other languages
English (en)
Other versions
CN107408172A (zh
Inventor
T·格施文德
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN107408172A publication Critical patent/CN107408172A/zh
Application granted granted Critical
Publication of CN107408172B publication Critical patent/CN107408172B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/34User authentication involving the use of external additional devices, e.g. dongles or smart cards
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/4408Boot device selection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/062Network architectures or network communication protocols for network security for supporting key management in a packet data network for key distribution, e.g. centrally by trusted party
    • H04L63/064Hierarchical key distribution, e.g. by multi-tier trusted parties
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/032Protect output to user by software means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

本发明尤其涉及一种用于允许计算机(10)从用户信任设备(20)引导的方法,其中:计算机(10)包括存储操作系统服务(25)或OS服务的长期数据存储设备(11);以及用户信任设备(20)可连接到计算机(10)和存储:引导加载器(16a),在当用户信任设备(20)到计算机(10)的连接时,引导加载器(16a)由计算机的固件(122)可检测并且可执行;OS加载器(24a),OS加载器(24a)用于计算机的操作系统(112)或OS;以及用于OS的一个或多个加密驱动(26a),一个或多个加密驱动(26a)被设计用于允许访问存储在数据存储设备(11)上的OS和数据;其中用户信任设备被设计为防止以下中的每一个的未认证访问:其上存储的引导加载器;一个或多个加密驱动;以及OS加载器,方法包括:当用户信任设备到计算机的连接(S21)时,使得(S22)通过固件(122)检测引导加载器(16a),以用于至少部分地在计算机处的引导加载器(16b)的后续执行(S23),从而使得在不在计算机的长期数据存储设备(11)上存储加载的OS加载器的任何部分的情况下,通过将OS加载器加载(S25)到计算机的主存储器(110)中,来从用户信任设备向计算机传送(S25)OS加载器(24a);以及至少部分地在计算机(10)处执行(S27)传送的OS加载器(24b),以使得执行(S29)用于OS的一个或多个加密驱动(26b)和OS的内核(27),来启动OS服务(25)并完成计算机的引导。本发明进一步涉及相关的设备和系统。

Description

从用户信任的设备安全地引导计算机
技术领域
本发明一般涉及用于安全地引导(boot)计算机的方法的领域,特别地,涉及用于从诸如轻型受保护的用户信任的设备存储器设备引导计算机的方法。
背景技术
今天,越来越多的计算机用户加密他们的硬盘(或更一般地说,他们的长期数据存储设备),以确保在丢失硬盘的情况下,“发现者(finder)”不能访问用户的数据。全磁盘加密工作良好,以防止这种发现者访问数据。但是,通常的磁盘加密方案不能阻止有权访问计算机的人窥探合法用户的密码。
使用加密磁盘的系统需要能够从硬盘引导计算机,这是通过使用未加密的OS加载器来实现的,其中OS加载器通常包括引导加载器。否则BIOS(或初始化固件)将无法解密,因此启动(start)它。引导加载器或OS加载器然后提示用户使用用于解锁加密密钥的密码。使用该密钥,可以对硬盘的加密内容进行解密,随后可以启动操作系统。
出现的一个问题是攻击者可以操纵OS加载器(以明文形式存储),以便下次用户启动她/他的计算机时它存储密码的副本(例如,以明文形式存在于计算机上的某处,或通过计算机的网络接口将其发送到服务器,如果可用的话)。一旦计算机启动了妥协的(compromised)OS加载器,攻击者可以从他的位置读出密码,并访问计算机。
发明内容
根据第一方面,本发明实现为一种用于允许计算机从用户信任设备引导的方法,其中:
-计算机包括存储操作系统服务或OS服务的长期数据存储设备;以及
-用户信任设备可连接到计算机和存储:
-引导加载器,在当用户信任设备到计算机的连接时,引导加载器由计算机的固件可检测并且可执行;
-OS加载器,该OS加载器用于计算机的操作系统或OS;以及
-用于OS的一个或多个加密驱动,该一个或多个加密驱动被设计用于允许访问存储在数据存储设备上的OS和数据;
-其中用户信任设备被设计为防止以下中的每一个的未认证访问:引导加载器;一个或多个加密驱动;以及其上存储的OS加载器,
-该方法包括:
-当用户信任设备到计算机的连接时,使得通过固件检测引导加载器,以用于至少部分地在计算机处的引导加载器的后续执行,从而使得在不在计算机的长期数据存储设备上存储加载的OS加载器的任何部分的情况下,通过将OS加载器加载到计算机的主存储器中,来从用户信任设备向计算机传送OS加载器;以及
-至少部分地在计算机处执行传送的OS加载器,以使得执行用于OS的一个或多个加密驱动和OS的内核,来启动OS服务并完成计算机的引导。
在实施例中,该方法可以包括以下特征中的一个或者多个特征:
引导加载器和/或OS加载器被设计成在后续执行时,至少部分地在计算机处,重新配置传送的OS加载器的引导配置参数诸如引导配置数据存储,以允许OS服务从长期数据存储设备被启动。
该方法还包括:从用户信任设备取回加密和/或解密密钥,以及在它们的执行期间向一个或多个加密驱动提供取回的密钥。
该方法还包括:在用户信任设备到计算机的连接之前:分析长期数据存储设备以检测以下实体中的一个或多个实体:引导加载器;OS加载器;以及一个或多个加密驱动,其中每个在计算机的长期数据存储设备上以未加密方式驻留;以及在对用户信任设备的认证之后,将检测到的实体的版本存储在用户信任设备上来分别作为引导加载器和/或OS加载器和/或一个或多个加密驱动,其中引导加载器和/或OS加载器的存储的版本被重新配置,以在引导加载器和/或OS加载器的后续执行时,重新配置OS加载器的引导配置参数,以允许OS服务从计算机的长期数据存储设备被启动,以及其中优选地,方法还包括去除或禁用在数据存储设备上检测的引导加载器和/或OS加载器。
被分析的长期数据存储设备是未加密的,该方法还包括:在用户信任设备到计算机的连接之前,除了存储检测的OS加载器的重新配置的版本或者作为其一部分,在用户信任设备上存储用于OS的一个或者多个加密驱动,并且优选地通过将一个或多个加密驱动添加到检测的OS加载器,使得存储在用户信任设备上的OS加载器的版本包括一个或多个加密驱动。
该方法还包括:在用户信任设备到计算机的连接之前:生成用于加密和解密长期数据存储设备的至少一个密钥,并且将生成的至少一个密钥存储到用户信任设备上,配置一个或多个加密驱动和OS加载器以用于它们,以使得在由传送的OS加载器的后续执行引起的一个或者多个加密驱动的执行之前或期间,从用户信任设备取回至少一个生成的密钥;以及利用生成的至少一个密钥中的一个密钥来加密数据存储设备。
分析的长期数据存储设备是加密的,其中方法还包括:在用户信任设备到计算机的连接之前:从计算机取回用于加密和解密数据存储设备的至少一个密钥;以及将取回至少一个密钥存储在用户信任设备或由用户信任设备可访问的实体诸如智能卡上,并从计算机移除取回的至少一个密钥,以及其中存储检测到的实体的版本包括:在由传送的OS加载器的后续后执行引起的一个或者多个加密驱动的执行之前或者期间,存储一个或多个加密驱动和OS加载器的版本,其中版本已经被配置以引起从用户信任设备取回密钥。
方法还包括:在用户信任设备到计算机的连接之前、以及在计算机上安装OS的同时,配置一个或多个加密驱动和/或OS加载器,使得配置的一个或多个加密驱动和OS加载器可以被存储在用户信任的设备上,并且优选地能够引起在被传送到计算机的OS加载器的后续执行时从用户信任设备取回密钥。
该方法还包括:在完成计算机的引导之后:对用户信任设备进行认证以允许引导加载器和/或OS加载器的重新配置的版本将被存储在用户信任设备上。
该方法还包括:利用蜜罐引导加载器和/或蜜罐OS加载器替换在长期数据存储设备上的检测的引导加载器和/或检测的OS加载器;以及将蜜罐引导加载器和蜜罐OS加载器中的每一个的拷贝存储到用户信任设备上。
引导加载器进一步被设计成使得在用户信任设备到计算机的连接时,引导加载器由固件检测,并且至少部分地在计算机上后续执行以进一步使得:分别将在计算机上存储的、替换检测到的引导加载器和/或检测到的OS加载器的蜜罐引导加载器和/或蜜罐OS加载器,来分别与在用户信任设备上存储的蜜罐引导加载器和/或蜜罐OS加载器进行比较;以及如果比较的版本没有差异,则至少部分地从计算机执行传送的OS加载器。
该方法还包括:如果比较的版本不同,则通知比较的版本不同。
根据另一方面,本发明体现为一种用户信任设备,用户信任设备被设计用于允许计算机从设备引导,其中用户信任设备可连接到计算机,并且包括:引导加载器,在当用户信任设备连接到计算机时,引导加载器由计算机的固件可检测并且可执行;OS加载器或者OS加载器,OS加载器或者OS加载器用于计算机的操作系统或OS;以及其中:用户信任设备还被设计以防止任何未认证用户来修改其上存储的引导加载器和OS加载器中的任一项;以及引导加载器和OS加载器另外被配置为诸如允许实现根据实施例的方法中的所有步骤。
根据另一方面,本发明体现为一种计算机化系统,包括根据权利要求10的用户信任设备和计算机,用户信任设备可连接到计算机。
根据最后的另一方面,本发明体现为一种用于允许计算机从用户信任设备引导的计算机程序产品,计算机程序产品包括具有其中体现的计算机可读程序代码的计算机可读存储介质,优选地包括多个模块,计算机可读程序代码被配置为实现根据当前多个实施例的方法的所有步骤。
现在将借助于非限定示例并参见附图,描述体现本发明的设备、系统和方法。
附图说明
图1示意性地表示适于实现本发明的实施例中涉及的一个或多个方法步骤的计算机化系统;
图2示意性地示出了本发明的实施例中所涉及的用户信任设备的所选组件、并且被配置为用于实现本发明的实施例中的方法步骤;以及
图3-8描绘了示出根据本发明的实施例的方法的高级步骤的流程图。
具体实施方式
参见图参考图1-3,首先描述本发明的一个方面,该方面涉及允许计算机10从用户信任设备20(以下简称为UTD)安全地引导的方法。
假设的技术背景如下:计算机10特别包括长期数据存储设备11,其通常是硬盘驱动器(或HDD)、固态存储器或任何其他合适的大容量存储设备。为了说明的目的,在不失一般性的情况下,长期数据存储设备在下文中假设为HDD。HDD存储操作系统服务25或OS服务。UTD 20可连接到计算机10,并且特别是存储:引导加载器16a和操作系统加载器(以下称为OS加载器)24a以及一个或多个加密(crypto)驱动26a。引导加载器16a被配置为在将UTD 20连接到计算机10时由计算机的固件122(例如,BIOS)可检测和可执行。OS加载器24a被设计为加载计算机的OS,而加密驱动26a被设计为允许访问该OS以及存储在HDD 11上加密的其他数据(例如,诸如文档、文件或应用程序的用户数据)。
以上UTD是一种“用户信任的”设备,其被设计是为了防止对其中存储的引导加载器、加密驱动和OS加载器(的每个)的未经验证的(unauthenticated)访问。如稍后详细讨论,可以提供其他功能以进一步确保它。
基本上,本方法围绕以下两个重要步骤进行:
首先,在UTD连接S21到计算机时,通过固件122检测到引导加载器16a,这使得引导加载器的后续执行S23。这种执行应至少部分地在计算机上进行。即,引导加载器的执行可以仅在计算机上发生,或者在UTD和计算机上并发进行。为此,引导加载器的内容16b可以被传送到计算机的主存储器。引导加载器的执行通过将OS加载器加载S25到计算机的主存储器110中,来将OS加载器24a从UTD传送到计算机。但是,传送不会将加载的OS加载器的任何部分存储在HDD 11上。
第二,至少部分地在计算机10处执行传送的OS加载器24b,这继而导致执行S29加密驱动26b和OS的内核27,以便启动OS服务25并完成引导。
在实施例中并且在OS服务之外,计算机的HDD还可以存储其他OS组件,例如以下中的一个或多个:OS内核27、OS库、其他加密驱动、OS加载器的初始版本24、或仍然是OS 112的应用程序。这些组件中的一些也可以存储在其他地方;它们不一定需要存储在HDD上。但是,它们在计算机应该及时可获得以用于引导,并且根据需要用于计算机来引导。因此,OS内核、库和加密驱动最初可以存储在任何地方,只要它们被及时传送到计算机用于引导(按照正常引导过程将这些组件加载到主内存中)。
OS服务、OS内核、库和加密驱动的概念是众所周知的。OS服务是由OS提供的服务,可由应用程序使用。这包括系统库,Unix系统上的守护程序或Windows系统上的系统服务。加密驱动可以被视为解密/加密模块,其被涉及以允许存储在HDD上的加密数据由操作系统访问。
关于现在的OS加载器与引导加载器:通常,当计算机被打开或重新引导时,一些固件组件(通常是基本的输入/输出系统或BIOS)执行一些初始测试,然后将控制传送到引导加载器通常所在的主引导记录或MBR。除此之外,MBR还包含可执行代码,用作安装的操作系统的加载器。此MBR代码通常称为引导加载器。对于UEFI固件,BL通常作为由UEFI固件执行的文件存储在EFI系统分区中。一致地,在本发明的上下文中,引导加载器是执行将OS加载到存储器中所需的一些动作的一些可执行代码。
现在,OS加载器通常也被称为将操作系统加载到内存中的一些可执行代码。在这方面应该指出的是,软件文献并不总是清楚地区分这两个概念。例如,在Windows文档中,引导加载器有时被隐含地假定为OS加载器的一部分。然而,在本上下文中,在引导过程的初始阶段期间,引导加载器在OS加载器的上游被涉及,以将OS加载器传送到计算机的主存储器中。即,它是一段代码,它在执行时将导致传送OS加载器以便其后续执行。
OS加载器可以被视为预引导环境(但不要与所谓的PXE预引导环境混淆)。即,OS加载器是一些代码,可以在执行时加载驱动、内核,如有必要的话,有助于初始化硬件,例如Windows操作系统。尽管如此,引导加载器和OS加载器中的每一个都是一些可执行代码,例如二进制形式,每个都涉及引导程序(bootstrap)过程
例如,在Windows操作系统上,OS加载器被设计为在加载器将控制传送到内核之前加载所有类型为SERVICE_BOOT_START的驱动。通过指示存储在UTD上的加密驱动是这种类型的,内核可以使用该驱动来转而访问计算机的加密HDD。此外,在Windows上,系统分区包含OS加载器,该加载器可以如以后在建立(set-up)阶段方面讨论的那样在UTD上存储。
作为另一个例子,在Linux操作系统上,所谓的Grub引导加载器(一组文件)将Linux内核和所谓的initrd文件系统(即临时根文件系统)加载到主内存中,Linux内核从那里可能随后加载加密驱动。这里的initrd文件系统可以被认为是OS加载器的一部分。在本上下文中,在实施例中,initrd文件系统可以首先位于UTD上,然后被传送到计算机。注意,在这种情况下,由于(grub)引导加载器,initrd文件系统还包含一些可执行代码。
注意,存储在计算机上的OS服务优选地不被存储在UTD上。在这方面应该强调的是,本方法都涉及外部的OS加载器,它被执行来启动存储在计算机上而不是在外部设备上的OS服务。因此,本发明的方法与这些方案的不同在于:其包括从诸如USB设备(包括其全部OS或大多数重要组件)的外部设备来引导计算机。类似地,OS库优选地不被存储在UTD上,而是存储在计算机上。然而,尽管本文中考虑了许多变型,引导加载器和OS加载器优选地不应当被存储在计算机上(至少不是在引导过程开始时)。这是为了防止某人可以修改引导加载器或OS加载器,并且防止用户在没有UTD的情况下意外地引导计算机,这其可能导致加密密钥向恶意用户被泄露。
如稍后详细描述的(参考设置阶段),驻留在UTD上的OS加载器24a的版本通常是从OS加载器的版本24导出的,该版本通常最初存储在计算机上。在这方面应该区分:最初存储在计算机上的版本24,存储在UTD上的版本24a以及稍后传送到PC的引导加载器的版本24b(或组件)。对于引导加载器16、16a、16b的版本和加密驱动26、26a、26b的版本,采用相似的参考方案。然而,注意,在本上下文中,存储在UTD上的引导加载器16a通常与初始版本16不同。而是,尽管引导加载器版本16a存储在UTD上(这通常导致自动参数更改,否则这将提示计算机从UTD引导,如下面更详细的讨论),它可能需要被修改以允许计算机从自己的HDD引导。此外,存储在UTD上的引导加载器的版本可能被修改为包括加密和解密驱动。例如,使用Windows时,可以通过更新引导配置数据(BCD)存储来实现。BCD存储与Windows系统分区上的OS加载器的其他组件一起存储。当使用Linux系统时,可以通过设置操作系统使用的根设备,并根据Linux发行版更新grub.conf文件和/或可能的initrd初始文件系统中的引导配置来实现。
上述方法的实施例在图3-8中示出;它们允许安全地引导计算机,即使在攻击者或恶意软件篡改计算机的HDD 11的情况下也是如此,还要注意的是,引导加载器和OS加载器另外通常在HDD上未加密地驻留并且可修改,以便能够启动引导处理。
注意,OS加载器24b(即,传送到主存储器110中的版本)不能与存储在计算机的HDD上的任何初始版本24同时执行。因此,依赖于外部引导加载器和OS加载器的本方案确保将真正的(genuine)OS加载器传送到主存储器(仅)中以便执行,这最大限度地减少了篡改的风险。
然而,加载的OS加载器24b可以被设计为与UTD的附加或补充模块进行交互,该模块可以在UTD处部分地或完全地执行,如果它们具有处理能力(如果有的话)。
在实施例中,引导加载器和OS加载器中的一个或每一个被设计成在计算机的后续执行S23、S27时重新配置所传送的OS加载器的引导配置参数(例如,BCD存储),以允许OS服务将从HDD 11启动。然而,该功能在引导加载器中更好地实现,这是因为OS加载器的引导参数(由引导加载器)的简单重新配置可能足以实现此目的。
操作系统(例如Windows)可能会将BCD和OS服务存储在同一存储设备上。在这种情况下,即使从UTD传送OS加载器,OS服务也需要能够从HDD启动的方案。如可以实现,这可以通过重新配置引导参数来实现,例如存储在BCD存储上。
在变型中,一个变型可以实现对OS加载器的设备驱动的模拟的设备驱动作为单个存储设备的后续OS服务。该设备驱动可以被配置为将对引导加载器和OS加载器的访问重定向到UTD上的块,并将对OS分区的访问重定向到HDD。然而,这样的变型实现起来更加复杂,并且优选地仅当引导加载器和/或OS加载器不支持前一个选项时才使用。
到目前为止,虽然上述实施例调取存储在UTD上的加密驱动,但是没有关于加密/解密密钥的任何事情的说明,这可能涉及进一步保护该过程。通常,一个使用单个加密/解密密钥。然而,可以使用几个密钥,例如一个密钥用于解密,一个密钥用于加密。严格来说,也可能只需要一个解密密钥,如果不追求后续加密(不太可能)。为了简单起见,可以假设单个加密/解密密钥。该密钥优选地存储在UTD上。在这方面,如图3所示,本发明的实施例还可以包括以下步骤:从UTD取回S276加密密钥EK和/或解密密钥DK;以及在执行S29期间将取回的密钥提供给加密驱动。换句话说,OS加载器或加密驱动可以在执行时前进到取回加密/解密密钥。特别地,加密驱动可以在需要时在其执行的后期阶段处理取回所需的密钥并访问所取回的密钥。优选地,取回密钥需要来自用户的密码,以解锁存储在设备上的密钥。在变型中,只要操作系统允许,引导加载器可能被设计为处理这一点。但是,操作系统可能不允许这样做,从而可以通过加密驱动来实现此目的。
如上所述,该密钥优选地存储在UTD上。在变型中,密钥可以位于与本UTD不同的另一外部存储介质上。还可以根据请求通过计算机的键盘由用户提供。现在,由于本发明的实施例需要UTD,因此,由于唯一的UTD,允许用户引导计算机是最实际的。然而,UTD本身可以继续从诸如智能卡的外部或补充介质取回密钥。
优选地,在计算机和UTD都丢失或被盗的情况下,需要额外的密码。该密码优选地通过计算机输入,但是如果后者具有必要的用户界面,则它也可以在UTD本身上输入。当使用相同的UTD来解锁多个不同的计算机时,后一种情况是特别优选的。
为了支持解锁多个不同的计算机,存储在UTD上的引导加载器可以维护简档列表,用于每个计算机的一个列表由计算机的一个或多个唯一标识符索引,例如计算机的CPUID或网络接口卡的硬件MAC地址。
目前,关于安装阶段S10,将参照图4、6-8进一步说明。
首先,参考图4、6和8,本方法的实施例还可以在建立S10期间(即在将UTD连接S21到计算机以引导后者之前)包括步骤S11和S12,其中:
步骤S11包括分析HDD以检测以下实体中的一个或多个:引导加载器16;OS加载器24;以及一个或多个加密驱动,每个加密驱动未加密地驻留在在计算机的HDD 11上;和
步骤S12包括将一个或多个检测到的实体的版本分别存储(在UTD的认证S11a之后)在UTD上作为所述引导加载器16a和/或所述OS加载器24a和/或所述一个或多个加密驱动26a。如前所述,适当地重新配置引导加载器和/或OS加载器的存储的版本,以便在引导加载器和/或OS加载器的后续执行S23、S27时使得重新配置OS加载器的引导配置参数,以允许OS服务从计算机的HDD被启动。
这样做之后,可以优选地去除或禁止S15在HDD 11上检测到的引导加载器和/或OS加载器。
可以认识到,将引导加载器编程以重新配置OS加载器的引导参数比更改OS加载器更为容易。当然,如果在建立阶段已经重新配置了OS加载器,则针对引导加载器不需要重新配置OS加载器,例如通过在随后在计算机处执行时通过重新配置BCD存储器的方式进行S23。尽管如此,引导加载器可以从头开始设计,以便在步骤S23期间重新配置引导参数。现在注意到,虽然在引导过程开始时修改引导参数是更有利的,因为如果长期存储设备布局在建立和引导之间改变,则可以由引导加载器和/或OS加载器检测最近的更改,这将允许更相关地更新引导参数。
在建立或引导过程的开始期间,在大多数可能的实施例中将需要重新配置。没有这种重新配置,引导加载器和/或OS加载器可能“自然地”寻找存储在UTD(对于Windows实现)上的OS服务,因为这些OS服务已被存储在UTD上。更一般来说,执行该重新配置以防止引导加载器和/或OS加载器尝试从UTD(Windows)加载操作系统,或者设备驱动作为OS加载器(Linux)的一部分加载访问UTD所需的设备驱动。
重新配置可以例如导致:(i)分析:OS加载器的根设备;和加密驱动,以及必要(ii)从UTD引导以修改引导加载器和/或OS加载器。如果不想或不能改变系统的建立(即cryptroot),基本思想是对UTD本身执行改变。由于UTD可以包括处理器,所以甚至可以优选地将对OS服务的改变最小化。重新配置的版本可以在被存储到UTD上之前由计算机重新配置或由UTD本身重新配置。
如果需要,可以尽可能早地执行步骤S11和S12(建立阶段)以将OS加载器安装在UTD上,即在任何恶意用户有机会篡改以未加密方式驻留在计算机上的OS加载器之前。
注意,计算机需要对UTD进行认证以便被允许拷贝其上的OS加载器的版本。认证可能会以下列方式之一发生:
(i)一些代码从计算机被发送到UTD,其由用户通过计算机的键盘提供;
(ii)用户直接对UTD认证;
(iii)最初,当运送UTD时,设备接受任何OS加载器。但是一旦第一个OS加载器已经被存储,任何后续修改都需要认证;
(iv)在用户从计算机向UTD进行认证后,将一些令牌存储在计算机上,认证利用该令牌自动执行。优选地,该令牌存储在HDD的加密部分中。
将引导加载器/OS加载器拷贝到UTD后,这些优选地从HDD中去除或禁用,以防止用户意外地从引导加载器和仍然存储在HDD上的OS加载器引导计算机,因为恶意用户另外可能仍然能够利用在HDD上存储的引导加载器/OS加载器来篡改。
在变型中,引导加载器可以被替换为修改版本,促使用户仅与UTD结合来引导计算机。因此,计算机没有表现出被剥夺安装在其上的任何操作系统,以防止意外的操作系统安装和数据删除。
为了配置UTD来引导当前安装的操作系统,需要标识当前引导的系统是如何被配置的。即,还需要修改一些引导参数。在Windows系统上,此信息被存储在BCD存储中,即通过更新Windows引导加载器部分中的“Device(设备)”条目进行。在Linux系统上,这些信息作为内核引导参数的部分而被存储在/boot/grub/grub.conf中的GRUB的配置文件中。此配置文件列出要使用的内核,要使用的initrd文件,其中包含要使用的所有启动配置脚本,设备驱动和内核引导参数。所有这些文件都有助于加载操作系统。潜在地,根据Linux发行版(distribution),也可能需要改变initrd文件。在Linux、GRUB、initrd上,在一定程度上内核组成Linux OS加载器。
注意,可以假设以下选项:
1.计算机的HDD尚未使用任何全盘加密方案进行加密。因此,需要对其进行加密并配置UTD。这种情况在下面在第1节中讨论,并反映在图4中。
2.计算机的HDD已经使用全盘加密驱动加密,如下文第2节所述;
3.UTD设备在安装操作系统期间被配置,并且HDD在同时被加密,第3节。
1.计算机硬盘尚未加密
在这里,假设计算机的HDD还没有用任何全盘加密方案进行加密,使得需要加密它并配置UTD。可以使用任何合适的已知类型的加密来实现数据存储的加密。加密后,除了引导加载器和OS加载器之外,HDD的整个内容都被加密。HDD也可以保持未加密(在不太可能的情况下)。然而,保持HDD未被加密将是有限的使用,这是因为攻击者可以获得整个磁盘内容,并且因此甚至可以不必篡改引导加载器或OS加载器。
如果要被分析S11的HDD未被加密,则在建立阶段期间S10,除了(或作为)存储检测到的OS加载器的重新配置的版本之外,还可以在UTD上存储S12加密驱动,如图4和6所示。这可以通过将加密驱动添加到检测到的OS加载器来实现,使得存储在UTD上的OS加载器的版本包括加密驱动。
这里的想法是:计算机上还没有安装全盘加密方案,因此不存在加密驱动,或者如果它已经存在则不被启用。在这种情况下,可以添加和/或启用加密驱动。如下所述,可以对硬盘加密,例如提供全盘加密方案。但是,OS加载器中通常不存在任何加密驱动。因此,在操作系统被引导时没有加密驱动被加载,并且操作系统不能使用任何驱动。因此,在UTD上存储加密驱动是方便的。最终,当OS被加载时,驱动将被OS使用,必要时完成引导(这样的驱动将允许OS加载器稍后解密并使用HDD)。加密驱动也可以从另一来源(例如另一个UTD或服务器)获得,但这不太实用。
但是,当使用Windows的bitlocker(位锁)时,OS加载器本身已经包含了支持。因此,如果UTD与BitLocker(后者已经是OS加载器的一部分)结合使用,则不需要额外的加密驱动。
参考图如图6所示,加密/解密密钥可以在建立阶段进一步被生成(步骤S11b)。所生成的密钥然后可以被存储在UTD上。一致地,可以针对S11d加密驱动和OS加载器来配置他们,以使得后续从UTD中取回生成的密钥(在加密驱动的执行S29之前或期间,由传送OS加载器24b的执行S27引起)。最后,可以利用生成的密钥来执行HDD的加密S11e。
优选地,在密钥生成之后(即在将所生成的密钥存储在信任设备之前或之后)进行加密。如果HDD尚未被加密,当愿意使用全盘加密和UTD时,这是有意义的。图6的方案使得可以对硬盘进行加密,并且并行地初始化UTD。因此,不必首先执行全盘加密,然后执行UTD建立。然而,这样的方案可能需要知道OS加载器的内在内容(internal)和将要使用的全盘加密技术。
在Windows上,存在多个潜在的实现选择。盘加密和解密设备驱动知道UTD并直接从那里取回密钥(可选地从用户请求密码,见上文)。备选地,根据UTD上密钥如何存储,可以修改Windows引导管理器“bootmgr”(其了解Bitlocker加密),以从UTD取回密钥,或者利用从UTD附加取回的兼容的密钥来替换。
在Linux Ubuntu 14.04上,为了确保可以从UTD获得密码和密钥,需要更新cryptroot子系统。
2.计算机的硬盘已经被加密
返回参考图4所示,现在假设将被分析S11的HDD已被加密,例如,计算机的HDD已经利用全盘加密驱动加密。在这种情况下,本方法的实施例还可以(在建立,即在连接S21之前)包括如下步骤:从计算机取回S16密钥;并将取回到的密钥存储S17在UTD或由UTD可访问的实体例如智能卡上。然后,可以从计算机中去除密钥。在这种情况下,可以重新配置在步骤S12中存储的加密驱动和OS加载器的版本,以便(稍后)使得从UTD取回密钥,即在执行步骤S29之前或期间。
根据全盘加密方案及其配置,例如可以从计算机取回密钥,例如从最初由计算机管理的OS加载器的版本,或从外部存储设备(不同于当前的UTD)取回。
上述方案允许保护取回的密钥。这也意味着可能必须更新OS加载器才能知道这样的密钥在何处以及如何访问重新定位的密钥。在使用PGP桌面的情况下,则需要更新OS加载器。如果使用BitLocker,则引导加载器仅在如果加密/解密密钥必须用密码保护时才被更新。
最后注意到,在建立过程中,UTD通常还不包括任何操作系统内核、用于所述操作系统的加密驱动和应用程序。然而,在变型中,这些组件中的一些可以作为存储在设备上的建立程序的一部分而被包括。因此,如果使用UTD(如记忆棒),则可以使用这样的设置程序来安装/升级计算机上使用的全盘加密方案。
3.在OS安装期间配置UTD并且同时加密DSD
现在假设的是,在操作系统安装期间配置UTD设备,并且同时将HDD加密(假定HDD为“空”)。在这种情况下,如图7所示,本方法的实施例还可以包括以下步骤:在建立阶段S10期间和在计算机上安装OS的同时,配置加密驱动和/或OS加载器,使得可以在UTD上存储S12重新配置的版本。这里,重新配置的组件应优选地允许在OS加载器的执行S27时(一旦被传送到计算机),从UTD取回密钥S276。
这个想法是,可能希望能够在当第一次安装OS时指定利用UTD来使用计算机。总而言之,UTD以与前面部分中讨论的上下文相同的方式进行配置。然而,这里的一个首选选项是,在操作系统安装期间,而不是将引导加载器和OS加载器写入HDD(通常在OS安装期间)期间,引导加载器、OS加载器和加密驱动直接存储在UTD上,适当地配置用于从HDD引导。
最后,对于上述三个选项中的每一个,一旦OS加载器/加密器被存储在UTD上,则可以通过如下来禁止从HDD直接引导:在步骤S15将HDD的MBR等放置到另一引导加载器(不要与引导加载器16、16a、16b混淆)之中来提示用户使用UTD。
目前,参考图5来讨论本发明的另一方面,涉及对OS加载器和/或引导加载器的更新(合法的)。
基本上,可以通过对UTD认证S32来执行更新,以允许将引导加载器16a和/或OS加载器24a的重新配置的版本被存储(S34)在UTD上。为此,可能需要在建立阶段期间修改用于生成和/或重新配置引导加载器和/或OS加载器所需的OS服务的安装文件。这些安装文件存储在HDD上。对加密驱动的更新可以以类似的方式进行。该方案确保:每当OS在目标计算机上被更新并且更新需要被应用于引导加载器、OS加载器和加密驱动中的任一项时,可将这些更新应用于存储在UTD上的引导加载器、OS加载器和加密驱动。
例如对于Windows系统,因为OS加载器知道操作系统是从不同的设备加载的,所以Windows操作系统也是如此,因此每当Windows操作系统需要更新OS加载器的任何组件时,它都可以这样做。
关于对于Linux系统的OS服务的安装文件的修改:为了使OS安装新的OS加载器,需要更新利用其来生成所谓的initrd文件的工具链。这个initrd文件可能已被修改以访问来自UTD的密钥,如前所述(在上面的第1节)。现在,当生成新的OS加载器时,需要确保这些修改被保留。在Linux中,这是通过更新initramfs工具Ubuntu Linux或dracut工具Red HatLinux,通过更新获取用于解密HDD的密码的cryptroot脚本来实现。
修改安装文件并不总是必需的。例如,在Windows中,如果通过盘加密/解密驱动(即位于真实盘驱动和OS的文件系统驱动之间的过滤器驱动)实现的全盘加密/解密,则不需要修改安装文件。该信息是BCD配置的部分,不会被任何其他更改覆盖。
如果在完成引导过程之后,需要在UTD上存储新的更新,则计算机可以向UTD进行认证,创建更新的引导加载器和/或更新的OS加载器,并将其存储在UTD上。引导加载器和OS加载器可以如前所述被重新配置,即可能从UTD取回加密密钥,并且允许OS加载器通过重新配置引导参数来完成从HDD引导。
在变型中,引导加载器和OS加载器可以在更新操作期间在UTD本身上或部分地在计算机上并且部分地在UTD上被修改,从而被重新配置,以便能够取回加密密钥(例如,从UTD),并允许OS加载器通过重新配置引导参数来完成从HDD的引导。
目前,讨论了另一类实施例,其涉及提供蜜罐引导加载器和/或蜜罐OS加载器的可能性,参考图8。本质上,这相当于在HDD上将在步骤S11检测到的引导加载器和/或OS加载器替换S15a为蜜罐的对应物。这些蜜罐对应物的拷贝在UTD上被存储S15b。例如,当向用户要求密码时,蜜罐OS加载器将向用户展现类似于由UTD的真正OS加载器所呈现的登录屏幕。然而,蜜罐版本将是非功能性的,例如,密码验证总是失败而无关于给定的密码。
因此,对于不知道计算机的详细建立的恶意用户,计算机看起来类似需要密码的普通计算机。然后,如果恶意用户尝试修改蜜罐引导加载器,则可以确定后者已被篡改,并向合法用户警告尝试的入侵。
优选地,蜜罐引导加载器/OS加载器几乎与有效的引导加载器和OS加载器相同,除了密码验证总是失败,例如通过在密码验证条目中存储不正确的数据,由此使得恶意用户不能识别这个蜜罐引导加载器。
同时,存储在UTD上的真正引导加载器16a可以被提供附加的功能性,例如使得将UTD上存储的真正蜜罐组件与存储在HDD上的对应物进行比较。也就是说,引导加载器16a还可以被设计成使得当用户信任设备连接到计算机时,引导加载器16a被固件122检测,并随后至少部分地在计算机上执行以附加地引起:比较S24存储在计算机上的蜜罐组件与存储在UTD上的蜜罐对应物。如果S241的比较的版本没有不同,则传送的OS加载器24b可以被正常地执行S27,即如前所述。
现在,如果比较的版本不同,则系统的用户或任何相关组件(或与之连接的)可以相应地被通知给S242。事实上,在通知S242之后,可以考虑许多可能的动作。例如,存储在UTD上的OS加载器可能仍然被加载到主存储器中以供执行。然而,鉴于拷贝修改的蜜罐引导加载器和OS加载器以进一步调查,仍然可以请求用户输入。此外,如果比较的版本不同,则可能希望将蜜罐组件的内容再次存储在HDD上,以便下次有人尝试篡改计算机时,使它们表现为是真正的。
现在回到图2:根据另一方面,本发明也可以被实现为如上所述的UTD。基本上,UTD20被设计为允许计算机10从其引导。UTD可连接到计算机,并且包括如上所述的引导加载器16a和OS加载器24a。UTD还被设计以防止任何未经认证的用户修改引导加载器和OS加载器中的任一项。
现在详细讨论用户信任设备20的可能实施例。
可以考虑各种类型的信任设备来实现本方法。首先,用户信任设备20应当合理地是“移动的”以允许与计算机10的简单且实用的连接,即,这优选是手持设备。通常是公司或个人安全设备,即公司或用户拥有和控制的设备,诸如USB设备,优选地是USB闪存驱动(在集成通用串行总线(USB)接口以外,包括闪存的数据存储设备,),仅由该用户使用或由该用户所使用、或者仅由该用户为之工作的公司所拥有和控制的移动电话或个人数字助理(PDA)。通常,该装置重量小于200g。然而,在设备20的用户界面、存储器和处理能力方面的要求相当有限,所以该装置优选地重量小于60g,更优选小于40g。
用户信任装置20可以被提供有耦合到存储器的处理装置(和/或计算装置,即CPU)211,诸如加密处理器,其通常包括持久存储器214还有可能的非持久性存储器存储器(未明确示出,但非持久性存储器可以被认为是处理装置211的部分)。然而,非持久性存储器和处理器不被强制用于实现前面部分描述的基本步骤。尽管处理器并不是严格必要的,但是通过使用处理器或微控制器更容易实现认证机制和维护状态参数(关于设备是否可修改)。然而,在PC和UTD处并行执行引导加载器和OS加载器的情况下,或者如果寻求附加功能(例如涉及BIOS的附加验证)的情况下,非持久性存储器和处理器可能是需要的。在本上下文中,持久存储器214特别地存储计算机化方法217,与存储在设备20上的其他组件(哪些组件可以是可执行模块或代码16a、24a、数据220或密钥213)或其他外围组件218进行交互。特别地,所述计算机化方法217可以与处理装置211交互以触发引导加载器16的传送和执行,后者意图由计算机10和/或设备20的处理装置105、211执行。引导加载器16和OS加载器24a可以各自被认为是具有不同功能的单个模块,并且能够在设备和/或计算机上执行,或者被认为是具有不同的功能的复杂模块。它们也可以被认为是计算机化方法217的组成部分。
优选地,驻留在用户信任设备上的引导加载器和OS加载器应尽可能少地占用内存。例如,一些实现已成功地被测试,对于引导加载器和OS加载器,对于引导加载器和OS加载器,它们使用少于128mo(对于Windows)或32mo(用于Linux),大小由OS依赖的OS加载器的大小所决定。此外,用户信任设备应当提供足够的存储容量来存储数据220,例如,如果由这些模块来验证BIOS的可靠性,典型地可能需要多达64ko的存储容量。这不包括存储OS 112或UTD的组件(该组件被设计用于从网络中取回这些OS组件)的存储空间。
对PC 10的连接接口212例如可以是以下类型:
-通用串行总线或USB;
-外部小型计算机系统接口或SCSI;
-外部串行高级技术附件或SATA;
-火线;或者
-雷电接口(thunderbolt)。
更通常地说,这可以是允许计算机10从外部设备20引导的任何当前或未来的连接器(有线或无线)。此外,相同的接口212还可以允许用户信任设备20与任何外部设备(诸如视频投影仪、打印机或任何其他输出设备)通信。
如果需要,安全装置20具有读卡器以读取存储在存储卡(例如,非安全存储器)或任何智能卡上的用户凭证。可以安全地从这样的数据中得出适当使用,该数据例如存储在卡上的用户凭证。特别地,可以经由主机10在用户(或严格地说设备20)和第三方(例如,服务器30)之间建立可信的连接,并且使用这样的数据。在一个变型中,用户凭证可以直接存储在安全设备上。可以提供其他可用接口(类似控制按钮和显示器)以允许与用户的交互。最值得注意的是,安全设备20上的这种可信显示可以用于获得关于她/他目前所在的环境的用户断言。这样,例如但不限于,用户可以确认由服务器30的请求以确定她/他不在公共空间(如网吧)启动计算机10。
类似地,如图1所示:本发明也可以体现为计算机化系统100,其包括UTD 20和计算机10,UTD可连接到该计算机系统10和计算机10,如前所述。图1表示适用于实现本发明的实施例中涉及的方法步骤的通用计算机化系统100。
应当理解,本文描述的方法在很大程度上是非交互式的,并且通过诸如服务器或嵌入式系统的计算机化系统自动化。在示例性实施例中,本文描述的方法可以在(部分地)交互式或非交互式系统中实现。这些方法进一步可以至少部分地在软件、固件、硬件或其组合中实现。在示例性实施例中,本文描述的方法至少部分地被实现为可执行程序(例如,作为引导加载器的一部分),并且至少部分地由诸如个人计算机、工作站、小型计算机或大型计算机的特殊或通用数字计算机10执行。因此,最通用的系统100包括通用计算机,例如PC10。
在示例性实施例中,在硬件架构方面,如图1所示,计算机10包括处理器105,耦合到存储器控制器115的存储器110和经由本地输入/输出(I/O)控制器135可通信地耦合的一个或多个输入和/或输出(I/O)输出设备。如本领域已知的,输入/输出控制器135可以是但不限于一个或多个总线或其他有线或无线连接。输入/输出控制器135可以具有附加元件例如控制器、缓冲器(高速缓存器)、驱动器、中继器和接收器以实现通信,为了简化而将其省略。此外,本地接口可以包括地址、控制和/或数据连接,以实现上述组件之间的适当通信。如本文所述,I/O设备20、145通常可以包括本领域已知的任何通用密码卡或智能卡。如上所述,这些设备中的一个或多个可以是用户信任的设备20。
处理器105是用于执行软件,特别是存储在存储器110中的软件的硬件设备。处理器105可以是任何定制或商业可用的处理器、中央处理单元(CPU)、与多个处理器相关联的多个处理器之间的辅助处理器计算机10、基于半导体的微处理器(以微芯片或芯片组的形式)、宏处理器或通常用于执行软件指令的任何设备。
存储器110通常包括易失性存储器元件(例如,随机存取存储器(RAM,诸如DRAM、SRAM、SDRAM等)和可能的非易失性(持久)存储器元件(例如,ROM、可擦除可编程只读存储器(EPROM)、电子可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁带、光盘只读存储器(CD-ROM)、磁盘、软盘、盒式磁带、盒式磁带等)。此外,存储器110可以并入或链接到电子、磁性、光学和/或其他类型的存储介质。注意,存储器110可以具有分布式架构,其中各种组件彼此远离定位但可被处理器105访问。存储器部分可以被分配用于特定目的,例如,作为RAM盘被安装,用以接收引导加载器和/或OS加载器的组件诸如可执行模块(包括处理器指令模块),以便在计算机10上的随后执行。
在操作中,涉及本发明实施例的软件/程序代码,例如将被传送到存储器110的软件/程序代码,可以包括一个或多个单独的程序,每个程序包括用于实现逻辑功能的可执行指令的列表。在图1的示例中,存储器110可以被加载有用于使得计算机10从用户信任设备20启动和和完成引导的指令。
将被加载到存储器110中的组件可以包括各种应用组件和操作系统映像组件,并且还可以包括硬件组件驱动。因此,存储器110可以被设置为能够执行适当的OS 112。这里讨论的新颖方法至少部分地在任何OS组件被完全加载到主机10“之前”操作。在另一个级别,这些步骤中的至少一些更靠近硬件,从而影响计算机10的正常行为。一旦(以及如果)执行,OS 112将基本上控制应用程序的执行,并提供调度,输入输出控制,文件和数据管理,存储器管理以及通信控制和相关服务。
本文描述的方法的至少一部分可以是源程序、可执行程序(目标代码)、脚本或包括要执行的一组指令的任何其他实体的形式。当是源程序时,该程序需要通过编译器、汇编器、解释器等(其可以被包括或不被包括在设备20和/或主机10的存储器内)来翻译程序。此外,该方法可以编写成面向对象的编程语言(其具有数据和方法的类)或过程编程语言(其具有例程、子例程和/或功能)。在所有情况下,本文讨论的新颖方法被设计成在必要时与固件相关联,并且根据需要与设备的CPU 11正确地操作。
在示例性实施例中,常规键盘150和鼠标155可以耦合到输入/输出控制器135。其他I/O设备145可以包括例如打印机、扫描器、麦克风等。最后,I/O设备20、145还可以包括传送输入和输出的设备,例如但不限于网络接口卡(NIC)或调制器/解调器(用于访问其他文件、设备、系统或网络)、射频(RF)或其他收发器、电话接口、桥接器、路由器等。如在前面部分中引用的那样,I/O设备20、145可以包括本领域已知的任何广义加密卡或智能卡。系统100还可以包括耦合到显示器130的显示控制器125。在示例性实施例中,系统100还可以包括用于耦合到网络165的网络接口124。网络165可以是基于IP的网络,用于经由宽带连接在计算机10和任何外部服务器、客户端等之间通信。网络165在计算机10和外部系统(例如服务器30)之间发送和接收数据。在示例性实施例中,网络165可以是由服务提供者管理的被管理的IP网络。网络165可以以无线方式实现,例如使用诸如WiFi、WiMax等的无线协议和技术。网络165还可以是分组交换网络,例如局域网、广域网、城域网络、互联网或其他类似类型的网络环境。网络165可以是固定无线网络、无线局域网(LAN)、无线广域网(WAN)、个人区域网(PAN)、虚拟专用网(VPN)、内联网或其他合适的网络系统,以及包括用于接收和发送信号的设备。
如果计算机10是PC、工作站、智能设备等,则存储器110中的软件还可以包括基本输入输出系统(BIOS)或任何类似的初始化软件。BIOS是一组在启动时初始化和测试硬件的基本软件例程。另外,通常能够引导OS,并支持在硬件设备之间传输数据。BIOS通常存储在ROM中,使得当计算机10被激活时可以执行BIOS。
为了实现如本文所述的方法,可以使用BIOS(与之进行交互)以发起引导过程并完成它,以及可能通过网络发起通信。更一般来说,可以使用任何合适的固件或固件的接口(即,持久存储器和程序代码以及存储在其中数据的组合,其在软件堆栈中在OS 112“之下”操作)来用于该目的。这通常是BIOS。然而,合适的固件或其接口的示例包括所谓的可扩展固件接口(EFI)BIOS,或另外是统一的可扩展固件接口(UEFI)。后者是定义操作系统和平台固件之间的软件接口的规范。UEFI旨在取代当前所有IBM PC兼容计算机中存在的BIOS固件界面。实际上,UEFI提供与传统PC BIOS相同甚至更多的功能,也可以使用该功能。更一般地,为了实现本发明的目的,可能会调用在软件栈中的操作系统之下操作的任何初始化固件。
当计算机10运行时,处理器105被配置为执行存储在存储器110内的软件,以便向存储器110传送数据和从存储器110传送数据,并且一般地根据该软件来控制计算机10的操作。整体上或部分地描述但通常是按照后者描述的方法由处理器105读取,可以在处理器105内被缓冲,然后被执行。
本文描述的可以以软件实现的方法的部分可以存储在任何计算机可读介质上,以用于与计算机相关的任何系统或方法使用或与之相结合。
最后,本发明还可以被实现为用于允许计算机从UTD引导的计算机程序产品,该计算机程序产品包括具有计算机可读程序代码的计算机可读存储介质,其优选地包括多个模块,该计算机可读程序代码被配置为实现本文所述的方法的步骤。
本发明可以是系统,方法和/或计算机程序产品。计算机程序产品可以包括其上具有用于使处理器执行本发明的各个方面的计算机可读程序指令的计算机可读存储介质(或介质)。
计算机可读存储介质可以是可保留和存储由指令执行装置使用的指令的有形装置。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光学存储设备、电磁存储设备、半导体存储设备或上述的任何合适的组合。计算机可读存储介质的更具体示例的非详尽列表包括以下:便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程读取存储器静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘在其中记录有指令的凹槽中的诸如穿孔卡或凸起结构的编码设备、以及上述的任何合适的组合。如本文所使用的,计算机可读存储介质不应被解释为暂时信号本身,例如无线电波或其他自由传播的电磁波,通过波导或其他传输介质传播的电磁波(例如,通过光的脉冲光纤电缆)或通过电线传输的电信号。
本文描述的计算机可读程序指令可以经由网络(例如,因特网,局域网,广域网和网络)来从计算机可读存储介质或外部计算机或外部存储设备下载到相应的计算/处理设备/或无线网络。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并将计算机可读程序指令转发,以存储在相应的计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或用一种或多种编程语言的任何组合编写的源代码或目标代码,包括诸如Smalltalk,C++等的面向对象的编程语言,以及诸如C编程语言或类似的编程语言的常规程序编程语言。计算机可读程序指令可以完全在用户的计算机上执行,部分地在用户的计算机上,作为独立的软件包,部分地在用户的计算机上,部分地在远程计算机上,或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者连接可以被外部计算机连接例如,通过互联网使用互联网服务提供商)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来个性化地执行计算机可读程序指令电子电路,以便执行本发明的方面。
这里参照根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述本发明的方面。应当理解,流程图和/或框图的每个块以及流程图和/或框图中的块的组合可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机的处理器或其他可编程数据处理装置来执行指令,创建用于实现流程图和/或框图块或块中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,计算机可读存储介质可引导计算机、可编程数据处理设备和/或其他设备以特定方式工作,使得具有存储在其中的指令的计算机可读存储介质包括制造品,其包括执行在流程图和/或框图块或块中指定的功能/动作的方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理设备或其他设备上,以使得在计算机、其他可编程设备或其他设备上执行一系列操作步骤以产生计算机实现的过程,例如在计算机、其他可编程装置或其他装置上执行的指令实现流程图和/或框图块或块中规定的功能/动作。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这方面,流程图或框图中的每个块可以表示模块、段或指令的一部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,块中记载的功能可能按照不同于图中所示的顺序发生。例如,依次示出的两个块实际上可以基本上同时执行,或者有时可以以相反的顺序执行块,这取决于所涉及的功能。还将注意到,框图和/或流程图图示的各个块以及框图和/或流程图说明中的块的组合可以由执行指定的功能或动作的特殊目的的、基于硬件的系统或者执行专用硬件和计算机指令的组合来实现。
虽然已经参考有限数量的实施例、变型和附图描述了本发明,但是本领域技术人员将会理解,在不脱离本发明的范围本发明的情况下可以进行各种改变,并且可以利用等同物进行替换。特别地,在不脱离本发明的范围的情况下,在给定实施例、变型或附图中所引用的特征(类似设备或类似方法)可以与在另一实施例变型或附图中的另一特征进行组合或替代另一特征发明。因此可以预期在任何上述实施方案或变型中描述的特征的各种组合,该组合仍然在所附权利要求的范围内。此外,在不脱离本发明的范围的情况下,可以进行许多微小的修改,以使特定情况或材料适应本发明的教导。因此,本发明不限于所公开的特定实施例,而是本发明将包括落入所附权利要求的范围内的所有实施例。最后,可以想到比上面明确地触及的许多其他变型。例如,这里被描述为可执行代码的组件实际上可以包括可执行代码和不可执行数据,例如要显示给用户的字符串。

Claims (15)

1.一种用于允许计算机从用户信任设备引导的方法,其中所述计算机包括存储OS服务的长期数据存储设备;以及
所述用户信任设备连接到所述计算机并且存储:
引导加载器,在当所述用户信任设备到所述计算机的连接时,所述引导加载器由所述计算机的固件可检测并且可执行;
OS加载器,所述OS加载器用于所述计算机的OS;以及
用于所述OS的一个或多个加密驱动,所述一个或多个加密驱动被设计用于允许访问存储在所述长期数据存储设备上的所述OS和数据;
其中所述用户信任设备被设计为防止以下中的每一个的未认证访问:所述用户信任设备上存储的所述引导加载器;所述一个或多个加密驱动;以及所述OS加载器,
所述方法包括:
当所述用户信任设备到所述计算机的连接时,使得通过所述固件检测所述引导加载器,以用于至少部分地在所述计算机处的所述引导加载器的后续执行,从而使得在不在所述计算机的所述长期数据存储设备上存储加载的所述OS加载器的任何部分的情况下,通过将所述OS加载器加载到所述计算机的主存储器中,来从所述用户信任设备向所述计算机传送所述OS加载器;以及
至少部分地在所述计算机处执行传送的所述OS加载器,以使得执行用于所述OS的所述一个或多个加密驱动和所述OS的内核,来启动所述OS服务并完成所述计算机的引导;以及
配置所述一个或多个加密驱动和/或所述OS加载器,使得配置的一个或多个加密驱动和所述OS加载器能够引起在被传送到所述计算机的所述OS加载器的所述后续执行时取回用于加密和/或解密所述长期数据存储设备的密钥。
2.根据权利要求1所述的方法,其中所述引导加载器和/或所述OS加载器被设计成在后续执行时,至少部分地在所述计算机处,重新配置传送的所述OS加载器的引导配置参数引导配置数据存储,以允许所述OS服务从所述长期数据存储设备被启动。
3.根据权利要求1或2所述的方法,还包括:从所述用户信任设备取回所述加密和/或解密密钥,以及向所述一个或多个加密驱动提供取回的所述密钥。
4.根据权利要求1至2中任一项所述的方法,还包括:在所述用户信任设备到所述计算机的所述连接之前:
分析所述长期数据存储设备以检测以下实体中的一个或多个实体:引导加载器;OS加载器;以及一个或多个加密驱动,其中每个在所述计算机的所述长期数据存储设备上以未加密方式驻留;以及
在对所述用户信任设备的认证之后,将检测到的所述实体的版本存储在所述用户信任设备上来分别作为所述引导加载器和/或所述OS加载器和/或所述一个或多个加密驱动,其中所述引导加载器和/或所述OS加载器的存储的所述版本被重新配置,以在所述引导加载器和/或所述OS加载器的后续执行时,重新配置所述OS加载器的引导配置参数,以允许所述OS服务从所述计算机的所述长期数据存储设备被启动,
以及其中,所述方法还包括去除或禁用在所述长期数据存储设备上检测的所述引导加载器和/或OS加载器。
5.根据权利要求4所述的方法,其中被分析的所述长期数据存储设备是未加密的,所述方法还包括:在所述用户信任设备到所述计算机的所述连接之前,除了存储检测的所述OS加载器的重新配置的版本或者作为其一部分,在所述用户信任设备上存储用于所述OS的一个或者多个加密驱动,并且通过将所述一个或多个加密驱动添加到检测的所述OS加载器,使得存储在所述用户信任设备上的所述OS加载器的所述版本包括所述一个或多个加密驱动。
6.根据权利要求5所述的方法,还包括:在所述用户信任设备到所述计算机的所述连接之前:
生成用于加密和解密所述长期数据存储设备的至少一个密钥,并且将生成的所述至少一个密钥存储到所述用户信任设备上,
配置所述一个或多个加密驱动和所述OS加载器,以使得在由传送的所述OS加载器的所述后续执行引起的所述一个或者多个加密驱动的执行之前或期间,从所述用户信任设备取回至少一个生成的密钥;以及
利用生成的所述至少一个密钥中的一个密钥来加密所述长期数据存储设备。
7.根据权利要求4所述的方法,其中分析的所述长期数据存储设备是加密的,其中所述方法还包括:在所述用户信任设备到所述计算机的所述连接之前:从所述计算机取回用于加密和解密所述长期数据存储设备的至少一个密钥;以及将取回的所述至少一个密钥存储在所述用户信任设备或由所述用户信任设备可访问的实体上,并从所述计算机移除取回的所述至少一个密钥,
以及其中存储检测到的所述实体的版本包括:在由传送的所述OS加载器的所述后续执行引起的所述一个或者多个加密驱动的执行之前或者期间,存储所述一个或多个加密驱动和所述OS加载器的版本,其中所述版本已经被配置以引起从所述用户信任设备取回所述密钥。
8.根据权利要求1至2中任一项所述的方法,所述方法还包括:在所述用户信任设备到所述计算机的所述连接之前、以及在所述计算机上安装所述OS的同时,配置所述一个或多个加密驱动和/或所述OS加载器,使得配置的一个或多个加密驱动和所述OS加载器被存储在用户信任的设备上,并且能够引起在被传送到所述计算机的所述OS加载器的所述后续执行时从所述用户信任设备取回所述密钥。
9.根据权利要求1至2中任一项所述的方法,还包括:在完成所述计算机的所述引导之后:对所述用户信任设备进行认证以允许所述引导加载器和/或所述OS加载器的重新配置的版本将被存储在所述用户信任设备上。
10.根据权利要求4所述的方法,还包括:利用蜜罐引导加载器和/或蜜罐OS加载器替换在所述长期数据存储设备上的检测的所述引导加载器和/或检测的所述OS加载器;以及将所述蜜罐引导加载器和所述蜜罐OS加载器中的每一个的拷贝存储到所述用户信任设备上。
11.根据权利要求10所述的方法,其中所述引导加载器进一步被设计成使得在所述用户信任设备到所述计算机的连接时,所述引导加载器由所述固件检测,并且至少部分地在所述计算机上后续执行以进一步使得:
分别将在所述计算机上存储的、替换所述检测到的所述引导加载器和/或检测到的所述OS加载器的所述蜜罐引导加载器和/或所述蜜罐OS加载器,来分别与在所述用户信任设备上存储的蜜罐引导加载器和/或所述蜜罐OS加载器进行比较;以及
如果比较的所述版本没有差异,则至少部分地从所述计算机执行传送的所述OS加载器。
12.根据权利要求11所述的方法,还包括:如果比较的所述版本不同,则通知比较的所述版本不同。
13.一种用户信任设备,所述用户信任设备被设计用于允许计算机从所述设备引导,其中所述用户信任设备连接到所述计算机,并且包括:
引导加载器,在当所述用户信任设备连接到所述计算机时,所述引导加载器由所述计算机的固件可检测并且可执行;
OS加载器,所述OS加载器用于所述计算机的OS;
以及其中:
所述用户信任设备还被设计以防止任何未认证用户来修改所述用户信任设备上存储的所述引导加载器和所述OS加载器中的任一项;以及
所述引导加载器和所述OS加载器另外被配置为允许实现根据权利要求1至3中的任一项所述的方法中的所有步骤。
14.一种计算机化系统,包括根据权利要求10所述的用户信任设备和所述计算机,所述用户信任设备连接到所述计算机。
15.一种用于允许计算机从用户信任设备引导的包括存储有计算机可读程序代码的计算机可读存储介质,所述计算机可读程序代码被配置为被处理器执行用于实现根据权利要求1至12中任一项所述的方法的所有步骤。
CN201680014962.XA 2015-03-12 2016-03-10 从用户信任的设备安全地引导计算机 Active CN107408172B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/645,624 2015-03-12
US14/645,624 US9805199B2 (en) 2015-03-12 2015-03-12 Securely booting a computer from a user trusted device
PCT/EP2016/055096 WO2016142453A1 (en) 2015-03-12 2016-03-10 Securely booting a computer from a user trusted device

Publications (2)

Publication Number Publication Date
CN107408172A CN107408172A (zh) 2017-11-28
CN107408172B true CN107408172B (zh) 2020-08-21

Family

ID=55524329

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680014962.XA Active CN107408172B (zh) 2015-03-12 2016-03-10 从用户信任的设备安全地引导计算机

Country Status (4)

Country Link
US (3) US9805199B2 (zh)
CN (1) CN107408172B (zh)
DE (1) DE112016000576T5 (zh)
WO (1) WO2016142453A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10191823B2 (en) 2014-03-11 2019-01-29 Cloudendure Ltd. System and method for restoring original machines from replicated machines in a secondary computing environment
US9582386B2 (en) 2013-03-15 2017-02-28 Cloudendure, Ltd. System and method for maintaining a copy of a cloud-based computing environment and restoration thereof
US20170093971A1 (en) * 2015-09-30 2017-03-30 Cloudendure Ltd. System and method for orchestrating replicated components in a replicated cloud based computing environment
GB2543952B (en) * 2016-10-07 2019-05-01 F Secure Corp Advanced local-network threat response
US9817675B1 (en) 2017-01-31 2017-11-14 Hytrust, Inc. Methods and systems for attaching an encrypted data partition during the startup of an operating system
US10902126B2 (en) * 2017-03-10 2021-01-26 International Business Machines Corporation Verification of a boot loader program at a control unit to be provided to a host system to load an operating system
US10956575B2 (en) * 2017-11-20 2021-03-23 Hewlett Packard Enterprise Development Lp Determine malware using firmware
US11204986B1 (en) * 2018-11-28 2021-12-21 American Megatrends International, Llc Control of a prompt for a credential to unlock a storage device
CN110147311A (zh) * 2019-04-03 2019-08-20 珠海全志科技股份有限公司 一种系统升级校验方法及装置
CN110597751A (zh) * 2019-08-30 2019-12-20 北京三未信安科技发展有限公司 一种pci密码卡访问方法、系统、存储介质及计算机设备
CN111858182B (zh) * 2020-07-31 2023-12-19 捷开通讯(深圳)有限公司 数据读取方法、装置、存储介质及移动终端
CN112769800B (zh) * 2020-12-31 2022-10-04 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) 交换机的完整性验证方法、装置和计算机存储介质
CN116383091B (zh) * 2023-05-29 2023-08-29 珠海妙存科技有限公司 eMMC验证平台的启动方法、启动装置及存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5349643A (en) 1993-05-10 1994-09-20 International Business Machines Corporation System and method for secure initial program load for diskless workstations
US6915420B2 (en) 2003-01-06 2005-07-05 John Alan Hensley Method for creating and protecting a back-up operating system within existing storage that is not hidden during operation
AU2007243473A1 (en) * 2006-04-24 2007-11-08 Encryptakey, Inc. Portable device and methods for performing secure transactions
US7840795B2 (en) * 2006-10-17 2010-11-23 Zachary Nathaniel Joseph Peterson Method and apparatus for limiting access to sensitive data
US20120011354A1 (en) 2010-07-02 2012-01-12 Encryptakey, Inc. Boot loading of secure operating system from external device
CN102508791B (zh) * 2011-09-28 2015-05-13 辽源环宇佳讯通讯技术有限公司 一种对硬盘分区进行加密的方法及装置
US9275223B2 (en) * 2012-10-19 2016-03-01 Mcafee, Inc. Real-time module protection
GB2508892A (en) * 2012-12-14 2014-06-18 Ibm Updating a trusted device by booting update software and downloading the update over a network
GB2525409B (en) * 2014-04-24 2016-11-02 Ibm Enabling an external operating system to access encrypted data units of a data storage system
GB2527569B (en) 2014-06-26 2016-06-08 Ibm Booting a computer from a user trusted device with an operating system loader stored thereon

Also Published As

Publication number Publication date
US20160267275A1 (en) 2016-09-15
DE112016000576T5 (de) 2017-11-02
US20170323104A1 (en) 2017-11-09
US9805199B2 (en) 2017-10-31
US20160267274A1 (en) 2016-09-15
CN107408172A (zh) 2017-11-28
US10169589B2 (en) 2019-01-01
WO2016142453A1 (en) 2016-09-15
US9858422B2 (en) 2018-01-02

Similar Documents

Publication Publication Date Title
CN107408172B (zh) 从用户信任的设备安全地引导计算机
US20200301764A1 (en) Operating system on a computing system
US11503030B2 (en) Service processor and system with secure booting and monitoring of service processor integrity
US10083045B2 (en) Booting computer from user trusted device with an operating system loader stored thereon
US11176255B2 (en) Securely booting a service processor and monitoring service processor integrity
CN111008379B (zh) 电子设备的固件安全检测方法及相关设备
US8335931B2 (en) Interconnectable personal computer architectures that provide secure, portable, and persistent computing environments
US8522018B2 (en) Method and system for implementing a mobile trusted platform module
JP5565040B2 (ja) 記憶装置、データ処理装置、登録方法、及びコンピュータプログラム
US9602466B2 (en) Method and apparatus for securing a computer
US9154299B2 (en) Remote management of endpoint computing device with full disk encryption
US9639690B2 (en) User trusted device to attest trustworthiness of initialization firmware
US20130305028A1 (en) Method and apparatus for authorizing host to access portable storage device
TW201415280A (zh) 用於確保連網至雲端運算環境的系統免於惡意程式碼攻擊之方法及服務
RU130429U1 (ru) Терминал и защищенная компьютерная система, включающая терминал
US20220393869A1 (en) Recovery keys
KR20190062797A (ko) 클라우드 서비스를 사용하는 사용자 단말기, 단말기의 보안 통합 관리 서버 및 단말기의 보안 통합 관리 방법
CN112613011A (zh) U盘系统认证方法、装置、电子设备及存储介质
US11960737B2 (en) Self-deploying encrypted hard disk, deployment method thereof, self-deploying encrypted hard disk system and boot method thereof
WO2019209893A1 (en) Operating system on a computing system
JP2015007827A (ja) 通信制御システム、通信端末装置、認証コンピュータ及び通信制御方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant