CN104903854A - 用于检测虚拟化环境的用户可信设备 - Google Patents

用于检测虚拟化环境的用户可信设备 Download PDF

Info

Publication number
CN104903854A
CN104903854A CN201380065399.5A CN201380065399A CN104903854A CN 104903854 A CN104903854 A CN 104903854A CN 201380065399 A CN201380065399 A CN 201380065399A CN 104903854 A CN104903854 A CN 104903854A
Authority
CN
China
Prior art keywords
processor
computing machine
user
execution
instruction
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.)
Granted
Application number
CN201380065399.5A
Other languages
English (en)
Other versions
CN104903854B (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 CN104903854A publication Critical patent/CN104903854A/zh
Application granted granted Critical
Publication of CN104903854B publication Critical patent/CN104903854B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/44Program or device authentication
    • 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
    • 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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
    • 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/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • 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
    • 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
    • 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
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明针对一种用于使计算机(101)能从用户可信设备(10)引导的方法,用户可信设备(10)包含使得能与所述计算机(101)连接(S2)的连接接口(12),该方法包括:在可信设备与计算机(101)通过所述连接接口12连接(S2)后,使计算机(101)能从可信设备10开始引导(S3);指示计算机(101)的处理器(105)执行虚拟化敏感代码(S7);在执行完成后发布完成数据(S8),其中完成数据取决于虚拟化敏感代码及其被处理器(105)的执行;根据所述完成数据,判定该执行是否没有在虚拟化环境中进行(S9-S14);以及在确定该执行没有在虚拟化环境下进行后,使所述计算机(101)能从用户可信设备(10)完成引导(S15)。本发明进一步针对能实现这个方法的用户可信设备和相关系统。

Description

用于检测虚拟化环境的用户可信设备
技术领域
本发明总体涉及使计算机能从中引导的用户可信设备的领域以及相关的设备、系统和方法。
背景技术
需要这样一种技术,其可以让软件在任何非事先准备或审查的计算机(例如,员工的私人电脑)上执行,同时确保软件的执行是安全的,例如,同在企业/公司的电脑上一样安全。这种技术将能实现一个可信的(trusted)“自带”(BYO)计算工作环境。BYO一般涉及“自带设备”(BYOD)、“自带技术”(BYOT)或密切相关的“自带行为”(BYOB)。BYOD或BYOT关系到这样的企业/业务政策——即员工如何如何才能把个人移动设备带到工作中,用个人移动设备访问雇主的电子邮件、数据库和文件,除此之外还在家中使用这种设备,由此通过相同的设备访问个人的应用程序/数据。除了硬件,BYOB则将其扩展到到设备上使用的软件。
人们现在知道,在计算机上执行的任何软件,都可能受到PC(个人电脑)的操作系统中存在的许多病毒和恶意的软件(恶意软件)的攻击。这个问题的一个解决方案是,例如从用户可信设备——通常是安全设备——上存储的外部引导介质重新启动PC,从该外部介质启动一个新的、从安全的角度来说是干净的操作系统(OS)。
然而,发明人意识到,这种方法明显产生一个显著的技术缺陷,这就是本发明要解决的问题。
此外,可信设备(包括安全、防篡改设备)上往往提供外部引导介质,这类设备广为人知。例如,为在线交易开发的一种解决方案,是所谓的区域可信信息通道(Zone Trusted Information Channel或ZTIC)。ZTIC是用于交易数据认证的安全的非可编程设备。由于ZTIC保持与服务器的安全的端到端网络连接,ZTIC本身就是防篡改的,不受恶意软件的攻击,并且,由于ZTIC自己有独立于其所连接的主机的输入和输出部件,ZTIC显示器上显示的数据是真的(genuine)。更多的细节例如可参看“The Zurich Trusted Information Channel-An Efficient Defence againstMan-in-the-Middle and Malicious Software Attacks”,by Thomas Weigold,Thorsten Kramp,Reto Hermann,Frank Peter Buhler,Michael Baentsch.In P.Lipp,A.-R.Sadeghi,and K.-M.Koch(Eds.):TRUST 2008,LNCS 4968,pp.75-91,2008.Springer-Verlag Berlin Heidelberg 2008。
发明内容
一方面,本发明体现为一种用户可信设备,包含:
使得能够与计算机连接的连接接口;和
存储模块的持久性存储器,其被配置得用于在用户可信设备与所述计算机通过所述连接接口连接后:
使所述计算机从用户可信设备开始引导;
指示计算机的处理器在开始引导期间执行虚拟化敏感代码并在执行完成后发布完成数据;
根据所述完成数据,确定该执行是否没有在虚拟化环境中进行;和
在确定该执行是否没有在虚拟化环境中进行后,使计算机能从用户可信设备完成引导。
优选地,所述模块包含:
使所述计算机能从设备开始并完成引导的引导加载器;
处理器的指令模块,可在计算机处执行,以指示处理器执行虚拟化敏感代码和发布完成数据;
验证模块,被配置得用于指示根据所述完成数据确定该执行是否没有在虚拟化环境中进行,该验证模块可在设备和/或计算机处执行,
其中,引导加载器在用户可信设备与所述计算机连接后可被初始化固件检测到,并包含让固件发起向计算机上传送所述处理器指令模块、用于在计算机处的后续执行的指令。
按照第一类实施例,处理器指令模块进一步被配置得用于在计算机处的执行后,指示处理器执行为处理器设计的虚拟化敏感代码,以生成由计算机支持的、优选地由该处理器自身支持的一个或多个功能的列表,作为完成数据的一部分。
按照第二类实施例,处理器指令模块进一步被配置得用于在计算机处的执行后,指示处理器生成取决于处理器执行所述虚拟化敏感代码所需的计算量的最终状态值,作为完成数据的一部分,并且,优选地,处理器指令模块进一步被配置得用于在计算机处的执行后,指示处理器生成反映处理器在执行所述虚拟化敏感代码之前的状态的初始状态值。
在实施例中,验证模块是在设备10处可执行的,用于根据初始状态值和最终状态值,生成量化处理器执行虚拟化敏感代码所需的计算量的处理器用量值,如计算持续时间、处理器周期数、或计数器,并且,验证模块进一步被配置得用于指示根据所述处理器用量值,确定该执行是否没有在虚拟化环境中进行。
在其它实施例中,处理器指令模块进一步被配置得用于在计算机处的执行后,指示处理器生成量化处理器执行虚拟化敏感代码所需的计算量的处理器用量值,如计算持续时间、处理器周期数、或计数器,作为完成数据的一部分,并且,验证模块进一步被配置得用于根据所述处理器用量值,确定该执行是否没有在虚拟化环境中进行。
有益地,验证模块可以进一步被配置得用于指示优选地通过所述计算机连接到服务器,以至少部分地在服务器处确定该执行是否没有在虚拟化环境中进行。
例如,验证模块可以被配置得用于执行以下的一项或多项:
-与所述固件互相作用,以便随后与计算机的网卡互相作用,以便在所述网卡所启用的网络上发起通信,以连接到服务器;
-访问在用户可信设备上存储的网卡驱动程序以直接与计算机的网卡互相作用,以便在所述网卡所启用的网络上发起通信,以连接到服务器;和/或
-优选地通过引导加载器与固件互相作用,以部分地运行计算机的操作系统,以按需通过所述计算机连接到服务器。
优选地,虚拟化敏感代码包含以下的一种或多种指令:
-将处理器从保护模式切换到实模式的指令和/或将处理器从实模式切换到保护模式的指令;
-让处理器读取机器特定的寄存器的指令;
-让处理器写入机器特定的寄存器的指令。
另一方面,本发明体现为用于使计算机能从用户可信设备引导的方法,用户可信设备包含使得能与所述计算机连接的连接接口,该方法包括:
在可信设备与计算机通过所述连接接口连接后,使计算机能从可信设备开始引导;
指示计算机的处理器
执行虚拟化敏感代码;
在执行完成后发布完成数据,其中完成数据取决于虚拟化敏感代码及其被处理器的执行;
根据所述完成数据,判定该执行是否没有在虚拟化环境中进行;及
在确定该执行没有在虚拟化环境下进行后,使所述计算机能从用户可信设备完成引导。
优选地,该方法进一步包含:在用户可信设备与所述计算机连接后,与计算机的初始化固件互动,以
使所述计算机能从用户可信设备引导;和
发起将处理器指令模块向计算机上的传送,用于后续在计算机处的执行,以使处理器执行虚拟化敏感代码并在执行完成时发布完成数据。
在优选实施例中,确定该执行是否没有在虚拟化环境中进行包含:在设备和/或计算机处执行验证模块,并且,执行验证模块优选地包含:更优选地通过计算机连接到服务器,以至少部分地在服务器处确定该执行是否没有在虚拟化环境中进行。
按照所述第一类实施例,处理器进一步被指示生成由计算机、优选地由处理器自身支持的一个或多个功能的列表,作为完成数据的一部分。
按照所述第二类实施例,处理器进一步被指示生成取决于处理器执行虚拟化敏感代码所需的计算量的最终状态值,如计算持续时间、处理器周期数、或计数器,作为完成数据的一部分,
其中,优选地,处理器进一步被指示生成在执行虚拟化敏感代码之前的初始状态值。
最后一个方面,本发明体现为一种用于使计算机能从用户可信设备引导的计算机程序产品,该计算机程序产品包含体现有模块的计算机可读存储介质,这些模块可执行按照上述实施例的方法的任何之一的所有步骤
现在将通过非限定性例子并参照各附图,说明体现本发明的设备、系统和方法。
附图说明
-图1示意性地表示一个适于实现本发明实施例中涉及的一个或多个方法步骤的通用计算系统;
-图2示意性地示出实施例中涉及的用户可信设备的选择的组件;和
-图3是如实施例中所述、使计算机能从诸如图1所示的用户可信设备引导的方法的高层级流程图。
具体实施方式
以下的说明的结构如下。首先,描述一般实施方案和高级变通方案(第1节)。下一节讨论更具体的实施方案和技术实现细节(第2节)。
1.一般实施方案和高层级变通方案
图1示意性地表示一个适于实现本发明实施例中涉及的一个或多个方法步骤的通用计算系统。
可以理解,这里描述的方法很大程度上是非交互式的,并且是通过诸如服务器或嵌入式系统的计算系统自动化了的。在示例性实施例中,本文描述的方法可以在(部分)交互的或非交互的系统中实现。这些方法进一步可以在软件(例如固件)、硬件、或它们的组合中实现。在示例性实施例中,本文所述的方法在软件中实现,作为可执行程序,并由诸如个人电脑、工作站、小型机、或主机计算机的专用或通用数字计算机执行。最通用的系统100因此包括通用计算机101。
在示例性实施例中,在硬件结构方面,如图1所示,计算机101包括处理器105、耦合到存储器控制器115的存储器110以及通过本地输入/输出控制器135通信地耦合的一个或多个输入/输出(I/O)设备(或外围设备)10、145。输入/输出控制器135可以是——但不限于——如在本领域中已知的一个或多个总线或其它有线或无线连接。输入/输出控制器135可以有额外的元件以便能够通信,如控制器、缓冲器(高速缓存)、驱动器、中继器和接收器,为了简明,图中作了省略。此外,本地接口可以包括地址、控制、和/或数据连接,以便使上述部件之间能进行适当的通信。本文所述的I/O设备10、145一般可以包括现有技术已知的任何广义的加密卡或智能卡。其中一种设备是下面详细讨论的用户可信设备10。
处理器105是用于执行软件、特别是存储在存储器110中的软件的硬件设备。处理器105可以是任何定制的或商业上可获得的处理器,中央处理单元(CPU),与计算机101相关的几个处理器中的辅助处理器,基于半导体的微处理器(微晶片或芯片组的形式),宏处理器(macroprocessor),或者用于执行软件指令的任何一般设备。
存储器110可以包括以下的任何一个或组合:易失性存储器元件(例如随机存取存储器(RAM,诸如DRAM、SRAM、SDRAM,等等))和非易失性(持久性)存储元件(例如ROM、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁带、光盘只读存储器(CD-ROM)、硬盘、软盘、卡带,等等)。此外,存储器110可包括电子的、磁性的、光学的、和/或其他类型的存储介质。注意,存储器110可以有分布式的体系结构,其中各个组成部分彼此远离,但可以被处理器105访问。特别地,存储器110包括一个给定的存储部分121,可以向其传送处理器指令模块(PIM)15和验证模块17的全部或部分,用于后续的执行。
存储器110中的软件可以包括一个或多个独立的程序,每个程序包含用于实现逻辑功能(特别是本发明实施例中涉及的逻辑功能)的可执行指令的列表。在图1的例子中,存储器110可以装载指令,如果某些条件得到验证,这些指令使计算机101能从用户可信设备10启动引导(booting)并完成引导。
存储器110中的软件可以包括合适的操作系统(OS)111,即使这里所讨论的新方法至少部分地是在主机101上完全加载了任何OS“之前”就操作的(至少有一些步骤操作是在另一个层面操作的、更接近硬件,计算机101的正常行为由此受到影响)。OS 111一旦(如果)被加载,就将基本上控制其他计算机程序的执行,并提供调度、输入输出控制、文件和数据管理、内存管理、以及通信控制和相关的服务。
注意,要加载的操作系统最好一开始没有存储在计算机的硬盘驱动器120上。在以下这种情况下可能就是这样:要启动一个私人电脑,而又不使用电脑主人在电脑上存储的任何私人数据。然而,在某些情况下,把由可信设备启动的OS缓存电脑硬盘上的一个单独区域可能是有用的。在下面描述的优选实施例中,要被加载的OS最初是被包含在用户设备10中的,通过网络加载的,或者是被缓存在计算机的硬盘驱动器上的。在后一种情况下,通常验证该操作系统的签名。
本文所述的方法的至少一部分的形式可以是源程序、可执行程序(目标代码)、脚本、或包含一组要被执行的指令的任何其他实体。如果是源程序,则该程序需要通过设备10和/或主机101的存储器内可能包括、可能不包括的编译器、汇编器、解释器等进行翻译。此外,本文所述的方法,可以用具有数据类和方法类的面向对象的编程语言编写,或者用具有例程、子例程和/或函数的过程编程语言编写。在所有的情况下,本文所讨论的新方法被设计得能结合固件122——如果需要的话——并在需要时结合设备的CPU 11而适当操作。
在示例性实施例中,可将传统的键盘150和鼠标155耦合到输入/输出控制器135。其他的输出设备,如I/O设备145,可以包括输入设备,例如但不限于打印机、扫描仪、麦克风,等等。最后,I/O设备10、145可以进一步包括传送输入和输出的设备,例如但不限于网络接口卡(NIC)或调制器/解调器(用于访问其他文件、设备、系统或网络)、射频(RF)或其他收发机、电话接口、桥、路由器,等等。如本文所述的I/O设备140、145可以是现有技术已知的任何一般的密码卡或智能卡。系统100可以进一步包括耦合到显示器130的显示控制器125。在示例性实施例中,系统100可以进一步包括网络接口160,用于耦合到网络165。网络165可以是基于IP网络,用于通过宽带连接在计算机101与任何外部服务器、客户端等之间进行通信。网络165在计算机101与外部系统——例如服务器30——之间发送和接收数据。在示例性实施例中,网络165可以是由服务供应商管理的被管理IP网络。网络165可以以无线方式实现,例如采用无线协议和技术,诸如WiFi、WiMAX网络,等等。网络165也可以是分组交换网络,诸如局域网、广域网、城域网、因特网、或其他类似类型的网络环境。网络165可以是固定的无线网络、无线局域网(LAN)、无线广域网(WAN)、个人区域网(PAN)、虚拟专用网(VPN),内联网或其他合适的网络系统,并包括用于接收和发送信号的装置。
如果计算机101是PC、工作站、智能装置之类,则存储器110中的软件可以进一步包括一个基本输入输出系统(BIOS)或任何类似的初始化软件122。BIOS是在启动时初始化硬件并测试硬件的一套基本软件例程。BIOS一般来说能启动一个操作系统,支持硬件设备之间的数据传输。BIOS通常存储在ROM中,当计算机101被激活时,BIOS就能被以执行。
为了实现如本文所述的方法,可以使用BIOS 122(与BIOS互动)来启动引导过程和完成引导过程,也可能在网络上发起一个通信。不过,更一般来说,为此可以使用任何合适的固件122或固件的接口(即,持久性存储器与其中存储的程序代码和数据的组合,该组合在软件栈中任何OS 111的“下面”运行)。这通常就是BIOS。然而,合适的固件122或固件接口的例子,包括Preboot eXecution Environment(PXE)BIOS(预启动执行环境BIOS)、所谓的Extensible Firmware Interface(EFI)BIOS(可扩展固件接口BIOS)、或Unified Extensible Firmware Interface(UEFI)(统一可扩展固件接口)。后者是定义操作系统与平台固件之间的软件接口的规范。UEFI被用来取代BIOS固件接口,存在于目前所有的IBM PC兼容的计算机。在实践中,大多数的UEFI映像都有对BIOS服务的传统支持。更一般地,任何具有对BIOS服务或类似服务的传统支持的固件,都可以考虑用于实现本文所描述的方法。更一般地,在软件栈中操作系统下层运行的任何初始化固件都可以用于实现本发明。
当计算机101运行时,处理器105被配置得能执行存储器110中存储的软件,以便在存储器110读、写数据,以及根据软件控制计算机101的操作。本文所述的方法的全部或部分,但一般是部分方法,由处理器105读取,可能要在处理器105内缓存,然后被执行。
本文所述的方法中可以在软件中实现的部分,可以存储在任何计算机可读介质中,供任何计算机相关的系统或方法所用,或者与任何计算机相关的系统或方法结合使用。
所述技术领域的熟练人员应明白,本发明的各方面可以体现为系统、方法和计算机程序产品。因此,本发明的各方面所采取的形式,可以是完全硬件体现,完全固件和/或软件体现(固件、常驻软件、微代码,等等)或组合了固件/软件和硬件的体现,在本文中总体被称为“模块”、“计算机化的方法”、“过程”或“方案,等等。此外,本发明的各方面所采取的形式,也可以是在一个或多个其中体现有计算机可读程序的计算机可读介质中体现的计算机程序产品。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行(作为一个独立的软件包)、还可以在以下的两个或多个设备上执行:用户计算机101、用户可信设备10、远程计算机30。主机计算机可以通过任意种类的网络——包括局域网(LAN)、广域网(WAN)、至外部计算机的连接(例如利用因特网服务提供商来通过因特网连接)—连接到服务器。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其他设备上,使得在计算机、其它可编程数据处理装置、或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机或其它可编程数据处理装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
如前文所述,从外部引导介质重启计算机以及从外部介质启动一个“干净”OS(从安全的角度来说是“干净的”),或启动其它可信的OS,是解决PC上执行的任何软件都可能遭到PC的操作系统中存在的病毒或恶意的软件(恶意软件)的攻击这一问题的一种方式。
然而,发明人已经意识到,这种方法明显产生以下的问题:重新启动电脑的用户是可信的用户吗?还是某恶意的虚拟化环境被启动,目的是篡改新启动的干净OS?此外,也有可能,缺乏安全意识和/或贪图省事的用户试图利用这种想法来避开对计算机的重启。
参看图1至3,首先描述本发明的一个方面,其涉及到一个安全设备10(或更一般地,用户可信设备,也称“外部信任锚”)。这个设备是公司或个人的设备,即公司或用户拥有并控制的设备,诸如USB设备——最好是USB闪存驱动器(一种数据存储设备,除了集成的通用串行总线(USB)接口,还包括闪存)、移动电话或个人数字助理(PDA),只有这个用户使用该设备或者这个用户为其工作的公司拥有和控制该设备。通常,这种设备重不足200克,优选地轻于60克、甚至40克。有助于使其“安全”的设备10的其它特点,将在稍后讨论。
这个设备至少包括:实现与计算机101的连接的连接接口12;以及持久性存储器14,其明显地存储有多个模块15、16、17。这些模块被设计得使得在设备10与计算机101通过所述接口12连接时,能在设备10和/或计算机101上执行许多操作。
假设提供这样的设备10和计算机101(图3中的步骤S1)。则在该设备连接后(步骤S2),上述操作在高层次上主要包括:
1.使所述计算机101能从用户可信设备10开始引导(步骤S3);
2.指示处理器105执行(步骤S7)某种参考代码(some reference code);
注意,该代码最好由设备10自身提供,例如由处理器指令模块15提供。在变通方案中,可以将该代码的标识符、甚至地址,传送给处理器105。这个代码通常包括几个指令,具体视所测试的机器而定;
该代码的选择要使其对虚拟化环境敏感,因此该代码被称为“虚拟化敏感代码”。即,视在虚拟化环境中执行还是在本地执行而定,该代码执行方式不同并产生不同的执行特性。执行特性可能在以下方面显著地不同:
■从执行产生的结果(这涉及如下所述的第一类实施例);和/或
■通过计时(timing)特性、处理器周期等可测量的计算量(第二类实施例)。
●例如,对基于x86的PC来说特别感兴趣的计算是在实模式(与保护模式(之间切换。
●虚拟化敏感代码的其它例子将在稍后给出;
按照对处理器的指令,虚拟化敏感代码的执行在计算机101开始引导期间进行,即在启动过程已经开始但尚未完成之前进行,即在操作系统的主要/关键组件被加载之前进行。
在执行完成时,处理器105进一步被指令发布一些完成数据(例如结果、时间戳、或者可以打上时间戳的事件,等等),图3的步骤S8;
3.下一个操作集合(S9-S13)要根据完成数据来确定执行是否没有在虚拟化环境中进行(或者,等效地,确定执行是否是在安全的环境中进行的,例如在原生环境中进行的);和
4.最后,如果确定执行没有在虚拟化环境中进行,则可以使计算机101能从设备10完成引导(步骤S15)。在实施例中,这个条件是间接地确定的,例如可能需要用户交互,如以下第2.1节中特别讨论的那样。在虚拟化环境中运行的条件并不一定是充分条件:它在本发明的上下文中是一个必要条件;也可能涉及其它条件,如以下第2.2节中特别讨论的那样(例如,也可能测试BIOS)。
如果确定执行没有在虚拟化环境中进行,则引导过程继续(步骤S15),例如为此可以向计算机101提供更多的数据、密钥、软件、引导映像等。
如果相反地,如果确定执行是在虚拟化环境中执行的,则引导过程中止(步骤S14)。例如可以关闭设备10,即不向计算机101提供数据、密钥、软件等。
可以预期,中间的情形可能会导致加载约束版本的操作系统(不是所有的组件都被允许),或加载修改版本的操作系统,其中加载补丁/程序以清理计算机101。
计算机101一般是个人计算机(PC),最好是供移动使用的PC,笔记本或上网本、或者PDA或智能手机。为了简要,将其称为(主机)计算机或PC。
综上所述,本发明所基于的原则是:
-将模块15-17最初存储在可信设备(trusted device)10中,以便用户能信任它们;
-这些模块至少部分地在PC上是可执行的,使其处理器执行虚拟化敏感代码。
-所述模块导致分析执行的输出,以确定环境不是虚拟的,并且,如果确实如此,则引导过程继续。
识别虚拟化环境具有明显的优点,理由如下:
●被修改的BIOS可能对可信设备10伪装成是正常地从主机计算机引导的,而实际上计算机是虚拟化的。虚拟化的计算机在可信设备看来就像真的计算机,但是可以修改某些计算机指令,以便可以修改在虚拟化层认为合适时要用可信设备启动的系统。
●在虚拟化环境中用户可能主动地试图引导可信设备上的/通过可信设备提供的系统。这么做的原因可能是为了不要重启私人PC和保持已经开始的私人程序。即,不要停止他的私人程序来做公司工作,并在公司工作完成后重新启动私人程序。然而,通过这样做,用户将把系统从可信设备暴露到如上述相同的风险。即,系统将被暴露给实现作为虚拟机执行的部分而执行的敏感计算的计算机上的任何恶意软件。
由于上述两方面的原因,可信设备10需要能识别被提供给该设备的计算机101是真实的还是虚拟化的,因此需要本发明的解决方案。
现在更具体地参看图2:在实施例中,所述模块15-17分解为:
-引导加载器()16,使PC 101开始(并最终完成)从设备10的引导;
-处理器指令模块(或PIM)15,它必需可在PC上执行,以指示其处理器105执行虚拟化敏感代码并发布完成数据;和
-验证模块17,该模块可在设备10和/或计算机101上执行,用于分析(直接地或非直接地)完成数据。
引导加载器16是在可信设备10与PC 101连接后能被例如BIOS 122的初始化固件检测到的。引导加载器还包括这样的指令-其让固件122发起PIM 15向PC 101上的传送,用于在PC上的后续执行。
顺便指出,模块15和17可以被视为单一的实体(称之为虚拟化分析模块或VAM),其功能不但是指示处理器,而且还分析完成数据。
如上所述,在第一类实施例中,PIM 15可以指示处理器105执行代码,使它产生作为完成数据的一部份的、被计算机101-最好是处理器自身-支持的功能(feature)的列表。其中一个这样的功能是,CPU是否提供硬件虚拟化支持(即,以在CPU的特征寄存器(feature register)中设置的vtx位和在对应的模型特定的寄存器中的vtx使能位的形式)。如果不是,但是由cpuid指令报告的CPU具有硬件虚拟化的能力,这是在不以软件模拟这些指令的虚拟化环境内运行的指示。其它的这种功能可以是检查系统中的硬件是否存在虚拟化图形(在典型的准虚拟化环境的情况下)卡或真实的图形卡。
其次,验证模块或VAM可以比较所支持的功能的列表与一些参考数据,判定执行是否是在虚拟化环境中进行的。这样的操作可以直接由CPU 105执行,或在用户设备10上执行,或者在设备和CPU上共同执行。
然而,更为强大的是,使处理器105产生或使用——执行完成时的、并且作为完成数据一部分的——最终状态值。该值依赖于-即受影响于——处理器为执行虚拟化敏感的编码所需的计算量。这样的一个值例如可以是时间戳,或者是设备10或其任何模块(无论是在设备10还是在PC上执行的)的指令,其被接收时能被打上时间戳,等等。该值可进一步是或者引用(refer to)截至执行后的处理器周期数、在给定的数个周期或给定时间期间的最大CPU使用量、时间,等等。通过比较该值与合适的参考值,就有可能判定执行是否是在虚拟化环境中进行的。
第二类实施例比第一类更可靠,因为处理器105或计算机101所支持的某些功能可能已被(例如,厂商)禁用,以致要确定非虚拟化环境很不容易。
优选地,处理器105可以进一步产生或使用初始状态值,即反映处理器在执行虚拟化敏感代码之前的状态的值。同样,初始状态值可以是时间戳,设备10或其模块的指令,处理器周期数,时间,等等。
有了初始值和最终值,就容易导出处理器的用量值(usage value)即,直接和明确地量化执行虚拟化敏感代码所需要的计算量的值。这样的处理器用量值,例如可以是计算持续时间、处理器周期数、或任何适当的计数器。还有,处理器用量值可以独立于初始值而生成。例如(在给定数量的在前周期或给定的在前时间期间的)最大CPU用量可以表示执行一个给定的指令集所需的计算量。
虽然最终状态值可能已经足够,使用如上定义的处理器用量值使得可以进行更直接相关的比较(因为它直接和明确地量化执行所需的计算量)。
验证模块17接着参与分析最终状态值/处理器用量值,然后确定执行是否没有在虚拟化环境中进行。为此,验证模块17可以简单地对比最终状态值/处理器用量值与设备10上可得的或通过第三方30可得的参考值,。在变通方案中,验证模块17可以在判定之前,先触发与处理器105所执行的相同的虚拟化敏感代码(在设备10或第三方30的)并发执行,然后进行比较。
同时,需要注意的是,处理器用量值的计算,可由处理器105或由(无论在设备或PC上执行的)验证模块17用为此目的记录或发布的初始和最终状态值直接执行。不过,最好在设备(其运行要用到CPU 11)上执行此计算,因为这样的解决方案可以更不容易被篡改,原因是在设备10中计算的用量值不能很容易被操纵。然而,(PC101和设备10之间)额外的通信开销是必需的,这可能会增加一些不准确。
验证模块17对最终状态值或处理器用量值的分析,可以在PC或在设备10执行。在设备或PC上执行用量值的计算和分析,可以在设计阶段确定,或者,甚至可以在执行时,根据已知的或检测到的PC的通信开销的特点,动态地确定。
若是由处理器来计算处理器用量值(例如,递增PC上的计数器),那么最好是依靠CPU的时间戳计数器。此计数器对CPU周期进行计数,因此高度精确。篡改CPU的时间戳计数器需要大量的工作。
以下是操作序列的例子:
1.提供可信设备10和PC 101;
2.把设备10插入PC 101;
3.初始化固件122检测到引导加载器16,PC从设备10开始引导;
4.引导加载器16命令PC把PIM 15(甚至VAM 15+17)传送到给定的存储器位置121;
5.PIM 15开始执行,即被处理器105执行;
6.PIM的指令被处理器执行期间,导致处理器:
a.记录(或发布)初始状态值;
b.开始执行由PIM 15所指出的虚拟化敏感代码;
记录最终状态值;
计算处理器用量值,例如,持续时间;
7.下一步,验证模块17或VAM 15+17通过CPU 105和/或设备的处理器11的指令进行干预,触发以下操作:
比较(或指令例如外部实体30的另一个实体来比较)处理器用量值与参考值;
判定执行是否是在虚拟化环境中进行的。
最后两个操作,可以直接由CPU 105执行或在用户设备10上执行,或者在该设备和CPU上共同执行,或者运用另一个实体30,如后文将要讨论的那样。
虚拟化敏感代码可以包括一个或多个指令,例如如前文所述的、把处理器从保护模式切换到实模式的指令和/或把处理器从实模式切换到保护模式的指令。这些指令对基于x86的PC特别有利。计算可以在硬件中进行,非常快。相反,当在虚拟机中执行时,虚拟机必须抓取这些指令(这只能通过一个CPU例外来完成),然后用软件或其它机制来执行这些指令,花费更长的时间。即使具有硬件虚拟化支持的CPU并非就能在硬件中做到这一点,因为实模式是传统的,而硬件虚拟化不提供这些功能。
还有可以有利地用于本发明上下文的虚拟化敏感指令的其它例子,比如:
-用于处理器读取机器特定的寄存器的指令,即“rdmsr”;
-用于处理器写到机器特定的寄存器的指令(“WRMSR”);和/或
-用于使能所谓的A20门的指令(但是,由于所需实现的复杂性,这不是优选的)。
更一般地,在本地执行与在虚化环境中执行具有不同的资源特点的任何其它指令,都可以考虑。
为了说明起见,假设所有的指令都是由处理器105执行(包括处理器用量值的计算)。在这种情况下,一般区分PIM/VAM 15、17的两种类型的指令(设置指令与虚拟化敏感代码),现在参考图3加以说明:
初始设置(initial setup):
使处理器105进入保护模式(以下简称PM),以确定处理器处于保护模式(protected mode);
为后续的计算(步骤S7)和完成数据发布(步骤S8)分配内存;
记录开始时间(步骤S6);
虚拟化敏感指令能使用例如以下的任何指令:
模式切换指令,包括:
从PM到实模式(以下简称RM)的切换,其中,相比较而言,虚拟化环境需要更长的时间来模拟;
从RM到PM的切换;
用于读取机器特定的寄存器的读指令(rdmsr);
写入机器特定的寄存器的写指令(WRMSR);
需要注意的是,虚拟化敏感指令可以通过(由处理器执行的)子程序执行,由处理器在来自PIM/VAM的指令上调用。在虚拟化敏感指令包括需要虚拟化的诸如图形卡的其它硬件组件时,这个选项尤其值得推荐。在这种情况下,虚拟化敏感代码将与图形处理单元(GPU)互动并执行指令,若在虚拟化环境中运行就要用软件模拟,因此需要更长的时间。还有其它可能的变体。
最终设置(final setup):
记录最终状态值(例如,结束时间);
计算处理器用量值(例如,持续时间)
参考值对比;
虚拟化环境的结论
再次,虽然在上面的例子中假设最终设置是针对处理器105的,最终的操作(final operations)可以在处理器和/或设备10执行。如果最终的指令(finalinstructions)至少部分是针对设备10的,需要将这些指令设置得有所不同,以便让处理器通知设备10执行最终的指令。
上文提到的一种可能性是要利用第三方,例如服务器30(见图1),来完成对所获得的处理器用量值的分析的一部分或全部(甚至仅仅是最终状态值)。在这种情况下,验证模块17被进一步配置得指示设备或者——优选地——计算机101连接到服务器30。“中央”服务器可以各种可能的、不断变化的机器状态而更容易被更新。
为此,可以将验证模块17配置得与以下的一个或多个相互作用:
-与初始化固件122互相作用,以便随后与计算机101的网卡124互相作用,以便在(由网卡124所启用的)网络165上发起通信并连接到服务器30;
-直接与计算机101的网卡124交互:这需要访问在这种情况下可信设备10中存储的网卡驱动程序;和/或
-与固件122互相作用,例如,通过引导加载器与固件122互相作用,以部分地运行计算机101的OS,即,加载通过PC 101连接到服务器30所需的OS的这些组件。
设备10和外部实体30之间的通信,最好应用:
-通过计算机101从服务器30到设备10的HTTP连接;
-端到端认证;及
-签名和其它加密数据13——如果需要的话,它们可被存储在设备10的安全存储器141上。
作为激进的替选方案,可以让设备10配备网络接入手段,例如配备网络设备(有线的或无线的),以便直接连接到服务器。这样的解决方案有点昂贵。然而,由于无需与计算机101进行额外的交互就能联系服务器,可以减少延迟。此处,与服务器30的通信也可以使用端到端的认证和加密。
接下来更特别地参照图2,持久性存储器14应包括:
安全存储器141,其上可以存储PIM 15或VAM 15-17的第一部分151(或给定部分);和
非安全存储器142,例如SD卡,其上可以存储模块15、17的第二部分152(或其它部分)。
安全存储器的存在,使用户可信设备成为安全装置。例如,模块15的一部分可以加密地驻留在非安全存储器142上,同时将对应的加密密钥13存储在安全存储141上。由于成本原因,安全存储器通常被限制到128ko或256ko。因此可以优先将其用来仅仅存储加密数据,例如哈希表/签名13。模块的一部分151因此可以驻留在安全存储器141,同时,模块的其它部分152可以加密地驻留在非安全存储器142。同样,引导加载器16也可以驻留在SD卡上,而用驻留在安全存储器141上的签名加密。当计算机101请求引导加载器的给定块或数据块时,设备的CPU 11将被存储器14中驻留的软件提示对所请求的块进行解密,例如用存储在安全存储器141上的加密数据进行解密。
优选地,由于存储器限制,驻留在安全存储器上的模块15-17占用不到一半大小的安全存储器。不过,理想的情况是这些模块的所有部分应尽量少地占用存储器。例如,已经成功测试了模块15的一些实现,其中模块15-1的各部分占用不到4ko(不含用于联系网络服务器的代码,其消耗约32ko,一般不到64ko)。所属技术领域的熟练人员明白,实现与远程服务器联系的功能的代码,是可以在用户可信设备10上存储的多个模块之间共享的。
设备10的连接接口12例如可以是下列类型:
通用串行总线或USB;
外部小型计算机系统接口或SCSI;
外部串行高级技术附件或SATA;
-火线(Firewire);或
雷电(。
不过,更一般地说,连接接口可以是使计算机能从外部设备10引导的任何当前或未来的(有线或无线)连接器。此外,相同的接口12更能让用户可信设备10与诸如投影仪、打印机、或其它输出设备等任何外部设备进行通信。
用户可信设备10可以正常配备耦接到存储器的处理装置(或计算装置,即CPU)11,诸如密码处理器(crypto Processor),它一般包含持久性存储器14,优选地,也包含非持久性存储器(非持久性存储器未予明确显示,但是可以被认为是处理装置方式11的一部分)。
在本发明的上下文中,持久性存储器明显地存储着要由处理装置11、105执行的计算机化的方法,例如,上文所述的模块15-17。当然,这里所述的模块15-17可以被视为具有不同功能的单一模块,并能在设备或计算机上执行。
如果有必要,安全设备10有一个读卡器用于读取在诸如非安全存储器142或任何智能卡的储卡上存储的用户凭据,适当的使用可以安全地适当利用这种数据,例如卡上存储的用户凭据。特别地,通过主机101并使用这种数据,可以在用户(或严格来说,设备10)与第三方——例如服务器30——之间建立值得信赖的连接。在变通方案中,用户凭据可以直接存储在安全装置上。可以提供进一步的接口(如控制按钮和显示器)以允许与用户的互相作用。
接下来,本发明同样可以被视为一种用于使计算机101从用户可信设备10引导的方法。该方法至少包括已经参照设备10描述过的以下基本步骤:
--在可信设备与计算机101通过设备10的连接接口12连接(S2)后,使计算机101能从可信设备10开始引导(S3);
--指示处理器105:
○执行虚拟化敏感代码(S7);
○在执行完成后发布完成数据(S8);
--根据所述完成数据,判定该执行是否没有在虚拟化环境中进行(S9-S13);及
--假定已经确定执行没有在虚拟化环境中进行,使计算机101从用户可信设备10完成引导(S15)。
如上所述,最好运用引导加载器来与初始化固件122互动,以:
-使计算机101能从用户可信设备10开始引导(S3);和
-发起PIM 15(或VAM 15+17)向计算机101上的传送(S4),用于后续的执行(S5-S6)。如上所述,这使处理器105执行虚拟化敏感代码(S7)并在完成后发布完成数据(S8)。
此外,确定步骤S9-S13可能涉及在设备10和/或计算机101处执行的验证模块17,以及优选地通过计算机101连接的服务器30。
因此,验证模块17可以:
-在设备10或计算机10或101处本地评估完成数据;或者
-连接到例如通过比较完成数据与参考数据而评估完成数据的服务器。
在后一种情况下,服务器可以继续进行比较,判定执行是不是在虚拟化环境中进行的(在这种情况下,模块17只从服务器接收一个指示是要完成引导还是要执行某个其它动作的指令);或者,服务器可以将评估的结果发送给验证模块17,模块17完成该确定并判定执行是否在虚拟化环境中进行的。必要的话,可能涉及额外的步骤和与服务器的通信步骤,具体取决于方案的复杂性。
如果有必要,验证模块17可能例如为了澄清第一次测试的不可信的结果而触发由处理器105执行的额外的指令,步骤S16。
上述实施方案已参照附图简要地作了描述,并可以包含许多变通方案。可以考虑上述几个功能的组合。下一节给出一些例子。
2.特定实施例/技术实现细节
现在讨论组合了上一节中讨论的一些可选功能的特定实施方案。此外,作为对虚拟化敏感代码是否在虚拟化环境中执行(第2.1节)的补充,在第2.2节给出了允许识别PC的固件122是否已被篡改的新颖方法。在2.3节给出了能被用于实施例的指令的典型例子。
2.1检测虚拟机内的执行:特定实施例和变通方案
在一个具体实施例中,执行下面的步骤序列。假设可信设备10与PC 101连接,PC被重新启动,引导加载器被检测到,PIM 15已经被传送到PC用于后续的执行:
向可信设备10通知在PC 101上开始一个已知的计算。外部设备10记录初始状态时间,即,就在计算开始之前的最后已知时间值。
计算开始。计算本身具有这样的特性,即,在本机执行时与在虚拟化环境中执行时——例如执行在实模式与保护模式之间切换的指令——计时特征有所不同。更一般地,如果能使用硬件,任何指令处理器都能迅速执行。这种指令的例子有rdmsr、WRMSR(读/写模型特定的寄存器指令,如上文所述)、或RDTSC(读取时间戳计数器)——如果对应的模型特定的寄存器中也被设置。其它的例子可见于例如x86汇编指令手册。
在计算结束时,联系外部设备10。
4.可信设备然后检查该计算花费了多长时间,并根据与参考值的比较(参考值例如可以通过例如在设备10处内部并行执行的相同的计算而获得,或者或可能是已预先计算的),确定该计算在虚拟化环境中执行的可能性。
发明人目前为止检查到的最快的虚拟化支持,大约比本机(natively)执行代码长8倍;
虚拟化环境是在快速的桌面PC上执行的,而本机(native)环境是平均笔记电脑,因此,在相同的硬件上的时间差,预计超过8倍。这为对所提出的测试代码是不是在虚拟化环境中执行的判定,给予了充足的空间。
例如,可以选择较小的因子(factor)作为阈值因子,例如,4的倍数(这已经是谨慎的);
如果外部设备10确定存在一个虚拟机,它可能会中止操作,或者优选地通知用户-和/或安全地连接的服务器30-要中止操作并停止工作。
如果没有检测到虚拟化环境,该设备继续操作,如让PC检索可能在设备10上存储的更多软件组件,或向要被执行的软件或如前所述的干净OS发放加密密钥或其它验证令牌。
可以考虑上述步骤的多种变通方案。
可以将以上的步骤1和3,与虚拟化环境不能或难以操控的计时源——如PC的时间戳计数器(TSC)——组合。
可以将所获得的计时值与PC中的CPU关联,以得到对其是否是在虚拟机下执行的更好的估计。
●在以上的步骤4中,该设备可以不采用完全自动化的过程,而是提供信息给用户,问用户是否要继续引导OS。这在用户被认为可信(并被认为能够做出这样的判断)的情况下是有益的。例如,可以通知用户以下事实,即PC执行某给定指令花了30毫秒的时间,在干净的环境中这通常需要10-15毫秒,而而恶意的执行通常需要100毫秒。在这种情况下,用户可能会认为该计算时间是合理的,原因例如是他的机器比较旧。在另一个例子中,如果所指示的时间为65毫秒,用户就可能认为处于恶意环境中,原因例如是机器近来是快的;时间应在7-10毫秒的范围。
●这个信息可以客观地呈现,也可以加以编码化(绿色、红色或橙色的标志,123,等)。
●这些设计变通,有助于适应计算机速度日益变快的实际。然而,这需要用户方面的知识。
●在步骤4中,外部设备可以另以背景技术部分引证的“”一文中描述的方式与服务器互相作用,请求服务器允许继续进行。
2.2检测已被篡改的BIOS
发明人也已意识到,从外部引导介质重新启动计算机和从外部介质启动“干净”操作系统或其它可信操作系统,引发了另一个问题:能信任BIOS吗?更一般来说,能信任PC启动时涉及的任何初始化固件122吗?事实上,在启动可能也被感染了的计算机期间,能够并且可能促使其它的初始化固件执行。
为了解决这个额外的问题,在实施例中,设备10能触发或执行额外操作,额外操作在高层面上包含:
1.在计算机101开始从设备10引导时(或在已经检查过虚拟化之后),将固件数据映射到代码(即映射代码),其中,固件数据包含初始化固件122的程序码和/或例如BIOS 122的初始化固件在开始引导期间可访问的数据;
2.证明该映射代码的可信性;和
3.如果映射代码得到证明,则使计算机101能完成从设备10的引导(这是除是否能判定没有涉及虚拟化环境以外的进一步的条件)。
这个额外的方法通过获取包含初始化固件的程序码和/或开始引导期间初始化固件可访问的数据的数据以及随后检查固件数据,可以证明这种固件的可信性。因此,在实施例中,除是否能判定没有涉及虚拟化环境以外,仅当固件数据得到证明时,计算机才可以完成从外部引导介质10的引导过程。
这个额外的方法的一个关键要素,还是需要一个PC外部的信任锚(trustanchor)10,根据定义,与一般的PC、PDA相比,它被恶意软件或攻击者访问的可能性更小。这些额外的步骤的另一个关键要素,是在正确的时刻,即,在操作系统启动(或至少全面启动)之前,收集关于PC的关键信息,并例如通过安全通道报告给值得信赖的分析,最后作出是否开始执行干净OS的决策。
至于要使用什么关键信息,即什么固件数据,可以有若干可能的变通。使用固件本身的程序码已经令人满意,因为这可以防止攻击者改变程序码。独立于固件的程序码本身,使用初始化固件可访问的数据——如初始化固件的配置数据,也是有利的,这是因为,事实上,(仅)配置数据可能被篡改。所以,理想的情况是,初始化固件的固件的程序码和初始化固件可访问的数据,二者都被使用。关于配置数据:我们可以使用例如在固件122专用的或在启动期间可访问的(因此包括固件的程序码和配置数据二者的)ROM或CMOS ROM以及其它主要标识串(key identification strings)上计算的哈希值。这样的数据既表征固件也表征固件的状态,因此为判断初始化固件是否被危害奠定了良好的基础。
将这样的数据映射到到单一的代码也使得能够进行快速检查,从而进行快速认证。人们可以采用例如在BIOS的ROM、BIOS的CMOS ROM和/或其它主要BIOS识别串上计算的哈希值。更一般地,任何能够将固件数据集映射到代码——代码最好是固定长度的,比如是一个整数——的算法/子程序,都可用于方便随后的检查。尽管使用哈希函数从许多方面来看更合适,一个简单的校验和就是可以依赖的。现在,根据所需的安全级别,有人可能仍然喜欢使用指纹,即,唯一地标识实体数据集的高效的哈希函数、加密哈希函数或者依旧是随机函数。
代码映射可以在测试虚拟化环境之前或之后进行。不需要重新启动(reboot)。例如,执行虚拟化检查和CMOS校验和的执行顺序并不要紧。然而,计算和在数据库中检查数据项(虚拟化数据和硬件指纹)是有利的。这样,虚拟化和硬件指纹都需要与一个白列表(whitelist)匹配。此外,可以对虚拟化和硬件指纹进行相关的测试,而非独立的测试。例如,有人可能获得本身是可以接受的、与一个本身是可以接受的硬件指纹搭配的虚拟化数据,然而却形成一个不被确定为正确的组合,即,虚拟化数据不匹配正确的硬件简档(profile)。例如,如果硬件指纹标识某PC为快速计算机,但虚拟化数据生成慢速计算机的时间戳,则可以通过组合这两种数据并在例如同一个数据库中检查结果组合而加以标识。
例如,结合在第2.1和2.2节中描述的两种方法,本发明可以体现为用户可信设备或相应的用于使计算机101从用户可信设备10引导的方法。从本质上讲,用户可信设备10也包括使得能与所述计算机101连接S2的连接接口12,该方法包括:
1.在设备10与所述计算机101通过所述连接接口12连接后,使计算机101能从设备10开始引导;
2.将固件数据映射到一个映射代码,该固件数据包含初始化固件的代码和/或在开始引导期间计算机的初始化固件122可访问的数据,以及最好是初始化固件的硬件数据集;
3.证明该映射代码的可信性;
4.指示计算机101的处理器105执行以下步骤:
执行虚拟化敏感代码
在执行完成后发布完成数据,其中,完成数据依赖于虚拟化敏感代码及其被处理器105的执行;
根据所述完成数据,确定该执行是否没有在虚拟化环境中进行;和
6.如果确定以下情况,则使所述计算机101完成从用户可信设备10的引导:
a.该执行没有在虚拟化环境中进行;及
映射代码被证明;或
虚拟化指标、映射代码正确,以及虚拟化指标与(相对于)映射代码相关。
注意,在变通方案中,步骤2-3可以在步骤4-5之前进行,与步骤4-5并行地进行或与步骤4-5交错地进行。
如前所述,在步骤2与4之间没有重新启动的必要。不过作为最后的评论,要指出是,计算机在连接到设备10后,或者以其它方式进入使其能从外部设备10启动(执行上述步骤1,即启动引导)的状态后,大多需要启动(重新启动),例如,下面的选项皆有可能:
计算机101关闭;插上设备10;启动计算机;或
计算机101已经在运行;插上设备,重启计算机。
2.3实施例中所用的指令的例子
前文已经讨论过虚拟化敏感指令的例子。现在接着说明可以有利地用于实现本发明实施例的其它指令(序列)的例子。所属技术领域的熟练技术人员应明白,存在具有相同/相似功能的其它指令,可用来实现基本上相同的功能。
首先,下面是一例允许读取BIOS信息(“固件配置数据”)的API:
其中,cmos_data_address在区间0……max_cmos_data_address上迭代。读取固件的程序码本身和/或其配置数据的其它类似指令。
在EFI BIOS中,可以用相同的指令来获得BIOS信息,特别是如果使用例如IntelFirmware Hub(英特尔固件集线器)。
接下来,给出允许从PC与用户可信设备互相作用的指令的例子:
从用户可信设备(海量存储设备)读一个块
mov ah,42h
mov dl,the_drive_to_read_from
mov ds:si,disk_address_packet_describing_what_to_read
int 13h
向用户可信设备(海量存储设备)写一个块
mov ah,43h
mov dl,the_drive_to_write_to
mov ds:si,disk_address_packet_describing_what_to_write
int 13h
在EFI BIOS中,可以使用所谓的EFI_DISK_IO_PROTOCOL或EFI_BLOCK_IO_PROTOCOL,二者都提供读(Read)和写(Write)功能。
合适的磁盘I/O命令,对于所述技术领域的熟练人员来说是容易获得的。
最后,可被模块用来初始化PXE BIOS的指令序列的例子,包括但不限于:
Load UNDI ROM
PXENV_START_UNDI
PXENV_UNDI_STARTUP
PXENV_UNDI_INITIALIZE
PXENV_UNDI_OPEN
可以附加一个额外的指令(例如,pxenv_undi_transmit),用于通过网络卡124向服务器30发送数据包。通过这样的指令,在主机处执行后,模块与PXE BIOS 122互相作用,以初始化网卡124,由此可以启动网络上的通信。
EFI_SIMPLE_NETWORK API中的EFI和UEFI BIOS提供类似的指令(初始化,启动,停止,接收,发送)。BIOS也可能提供TCP/IP栈的高级协议实现以及其它也能使用的网络协议。
已经参照有限数量的实施例、变通方案和附图描述了本发明,所属技术领域的熟练人员应当明白,在不脱离本发明的范围的情况下可以作出各种变更和可替换的等同方案。特别地,在给定实施例、变通方案中描述的、或在某个附图中表示的一个特征(装置特征或方法特征),可以与另一个实施例、变通方案或附图中的另一个特征结合,或者取代另一个特征,而不脱离本发明的范围。可以相应地设想就任何上述实施例或变通方案变异所描述的特征的各种组合,它们都落在后附权利要求的范围内。此外,在不脱离本发明的范围的情况下,可以作出许多微小的修改,使特定的情况或材料适应本发明的教导。因此,本发明并不局限于所公开的具体实施方式,而是要包括落在后附的权利要求的范围内的所有实施方式。此外,还可以设想上文未予明确触及的许多其它变通方案。例如,为了描述清楚起见,已经描述的主要功能被分配到各个模块15、16、17。然而,可以等价地描述本发明的实施例,其具有分布在一个或多个模块的相同功能,每个模块各有这些功能的不同功能。例如,可以将引导加载器16和PIM 15看作单一的模块,其可能被称为“引导加载器”,而仍然执行在本文其它部分描述的相同功能。
附图标记
10    用户可信设备
11    安全设备的CPU
12    连接接口
14    持久性存储器
141   安全存储器
142   非安全存储期
15    处理器指令模块(PIM)
151   处理器指令模块(PIM)的第一部分
152   处理器指令模块(PIM)的第二部分
16    引导加载器
17    验证模块
30    服务器
15,17    虚拟化分析模块
100   通用计算系统
101   主机计算机
105   计算机处理器
110   存储器
111   操作系统(OS)
115   存储器控制器
120   物理存储介质(物理磁盘)
122   主机计算机的固件(BIOS)
124   网卡
125   显示控制器
130   显示器
145   输入/输出设备(外围设备)
150   键盘
155   鼠标
165   网络

Claims (15)

1.一种用户可信设备(10),包含:
使得能够与计算机(101)连接的连接接口(12);和
存储模块(15,16,17)的持久性存储器(14),其被配置得用于在用户可信设备(10)与所述计算机(101)通过所述连接接口(12)连接后:
使所述计算机(101)从用户可信设备(10)开始引导;
指示计算机(101)的处理器(105)在开始引导期间执行虚拟化敏感代码并在执行完成后发布完成数据;
根据所述完成数据,确定该执行是否没有在虚拟化环境中进行;和
在确定该执行是否没有在虚拟化环境中进行后,使计算机(101)能从用户可信设备(10)完成引导。
2.按照用户可信设备(10),其中,所述模块包含:
使所述计算机(101)能从设备(10)开始并完成引导的引导加载器(16);
处理器的指令模块(15),可在计算机(101)处执行,以指示处理器(105)执行虚拟化敏感代码和发布完成数据;
验证模块(17),被配置得用于指示根据所述完成数据确定该执行是否没有在虚拟化环境中进行,该验证模块(17)可在设备(10)和/或计算机(101)处执行,
并且其中,
引导加载器(16)在用户可信设备(10)与所述计算机(101)连接后可被初始化固件(122)检测到,并包含让固件(122)发起向计算机(101)上传送所述处理器指令模块(15)、用于在计算机(101)处的后续执行的指令。
3.按照权利要求2的用户可信设备(10),其中,处理器指令模块(15)进一步被配置得用于在计算机(101)处的执行后,指示处理器(105)执行为处理器设计的虚拟化敏感代码,以生成由计算机(101)支持的、优选地由该处理器自身支持的的一个或多个功能的列表,作为完成数据的一部分。
4.按照权利要求2或3的用户可信设备(10),其中处理器指令模块(15)进一步被配置得用于在计算机(101)处的执行后,指示处理器(105)生成取决于处理器执行所述虚拟化敏感代码所需的计算量的最终状态值,作为完成数据的一部分。
并且其中,优选地,处理器指令模块(15)进一步被配置得用于在计算机(101)处的执行后,指示处理器(105)生成反映处理器在执行所述虚拟化敏感代码之前的状态的初始状态值。
5.按照权利要求4的用户可信设备(10),其中,验证模块(17)进一步被配置得用于
根据初始状态值和最终状态值,生成量化处理器执行虚拟化敏感代码所需的计算量的处理器用量值,如计算持续时间、处理器周期数、或计数器;和
根据所述处理器用量值,确定该执行是否没有在虚拟化环境中进行。
6.按照权利要求4的用户可信设备(10),其中,处理器指令模块(15)进一步被配置得用于在计算机(101)处的执行后,指示处理器(105)生成量化处理器执行虚拟化敏感代码所需的计算量的处理器用量值,如计算持续时间、处理器周期数、或计数器,作为完成数据的一部分,
并且其中,验证模块(17)进一步被配置得用于根据所述处理器用量值,确定该执行是否没有在虚拟化环境中进行。
7.按照权利要求2到6的任何一个的用户可信设备(10),其中验证模块(17)进一步被配置得用于指示优选地通过所述计算机(101)连接到服务器(30),以至少部分地在服务器处确定该执行是否没有在虚拟化环境中进行。
8.按照权利要求7的用户可信设备(10),其中,验证模块(17)进一步被配置得用于执行以下的一项或多项:
与所述固件(122)互相作用,以便随后与计算机(101)的网卡(124)互相作用,以便在所述网卡(124)所启用的网络(165)上发起通信,以连接到服务器(30):
访问在用户可信设备(10)上存储的网卡驱动程序以直接与计算机(101)的网卡(124)互相作用,以便在所述网卡所启用的网络(165)上发起通信,以连接到服务器;和/或
优选地通过引导加载器与固件(122)互相作用,以部分地运行计算机的操作系统,以按需通过所述计算机(101)连接到服务器。
9.按照权利要求1到8的任何一个的用户可信设备(10),其中,虚拟化敏感代码包含以下的一个或多个:
-将处理器从保护模式切换到实模式的指令和/或将处理器从实模式切换到保护模式的指令;
-让处理器读取机器特定的寄存器的指令;
-让处理器写入机器特定的寄存器的指令。
10.一种用于使计算机(101)能从用户可信设备(10)引导的方法,用户可信设备(10)包含使得能与所述计算机(101)连接(S2)的连接接口(12),该方法包括:
在可信设备与计算机(101)通过所述连接接口12连接(S2)后,使计算机(101)能从可信设备10开始引导(S3);
指示计算机(101)的处理器(105)
执行虚拟化敏感代码(S7);
在执行完成后发布完成数据(S8),其中完成数据取决于虚拟化敏感代码及其被处理器(105)的执行;
根据所述完成数据,判定该执行是否没有在虚拟化环境中进行(S9-S13);及
在确定该执行没有在虚拟化环境下进行后,使所述计算机(101)能从用户可信设备(10)完成引导(S15)。
11.按照权利要求10的方法,进一步包含:在用户可信设备(10)与所述计算机(101)连接后,与计算机(101)的初始化固件(122)互动,以
使所述计算机(101)能从用户可信设备(10)引导(S3);和
发起将处理器指令模块(15)向计算机(101)上的传送,用于后续的执行(S5-S6),以使处理器(105)执行虚拟化敏感代码(S7)并在执行完成时发布完成数据(S8)。
12.按照权利要求10或11的方法,其中确定(S9-S14)该执行是否没有在虚拟化环境中进行包含:在设备(10)和/或计算机(101)处执行(S9)验证模块(17),其中执行(S9)验证模块(17)优选地包含更优选地通过计算机(101)连接(S10)到服务器(30),以至少部分地在服务器确定(S11)该执行是否没有在虚拟化环境中进行。
13.按照权利要求10到12的任何之一的方法,其中,处理器(105)进一步被指示生成由计算机(101)、优选地由处理器自身支持的一个或多个功能的列表,作为完成数据的一部分。
14.按照权利要求10到13的任何之一的方法,其中,处理器(105)进一步被指示生成(S8)取决于处理器执行虚拟化敏感代码所需的计算量的最终状态值,如计算持续时间、处理器周期数、或计数器,作为完成数据的一部分,
并且其中,优选地,处理器(105)进一步被指示生成(S6)在执行(S7)虚拟化敏感代码之前的初始状态值。
15.一种用于使计算机(101)能从用户可信设备(10)引导的计算机程序产品,该计算机程序产品包含体现有模块(15、16、17)的计算机可读存储介质,这些模块可执行按照权利要求10至14的方法的任何之一的所有步骤。
CN201380065399.5A 2012-12-14 2013-11-26 用户可信设备及其引导计算机的方法 Active CN104903854B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1222583.5A GB2508894A (en) 2012-12-14 2012-12-14 Preventing a trusted boot device from being booted in a virtual machine
GB1222583.5 2012-12-14
PCT/IB2013/060408 WO2014091343A1 (en) 2012-12-14 2013-11-26 User trusted device for detecting a virtualized environment

Publications (2)

Publication Number Publication Date
CN104903854A true CN104903854A (zh) 2015-09-09
CN104903854B CN104903854B (zh) 2018-04-24

Family

ID=47630746

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380065399.5A Active CN104903854B (zh) 2012-12-14 2013-11-26 用户可信设备及其引导计算机的方法

Country Status (6)

Country Link
US (3) US9589128B2 (zh)
JP (1) JP2015537322A (zh)
CN (1) CN104903854B (zh)
DE (1) DE112013005184T5 (zh)
GB (2) GB2508894A (zh)
WO (1) WO2014091343A1 (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109564525A (zh) * 2016-06-28 2019-04-02 亚马逊技术有限公司 按需网络代码执行环境中的异步任务管理
CN111627489A (zh) * 2020-04-20 2020-09-04 珠海妙存科技有限公司 闪存特性分析方法及系统
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11714675B2 (en) 2019-06-20 2023-08-01 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11836516B2 (en) 2018-07-25 2023-12-05 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11875173B2 (en) 2018-06-25 2024-01-16 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US11968280B1 (en) 2021-11-24 2024-04-23 Amazon Technologies, Inc. Controlling ingestion of streaming data to serverless function executions

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2508894A (en) 2012-12-14 2014-06-18 Ibm Preventing a trusted boot device from being booted in a virtual machine
US10110566B2 (en) * 2015-07-21 2018-10-23 Baffle, Inc. Systems and processes for executing private programs on untrusted computers
US10185828B2 (en) * 2016-03-15 2019-01-22 Dell Products L.P. Systems and methods using virtual UEFI path for secure firmware handling in multi-tenant or server information handling system environments
US10740409B2 (en) 2016-05-20 2020-08-11 Magnet Forensics Inc. Systems and methods for graphical exploration of forensic data
US10467416B2 (en) 2017-06-16 2019-11-05 International Business Machines Corporation Securing operating system configuration using hardware
CA3093986A1 (en) 2018-03-28 2019-10-03 Dexcom, Inc. Sensor cable support device including mechanical connectors
CN111310162B (zh) * 2020-01-20 2023-12-26 深圳力维智联技术有限公司 基于可信计算的设备接入控制方法、装置、产品及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101154256A (zh) * 2006-09-26 2008-04-02 英特尔公司 启动可信共存环境的方法和装置
US7743422B2 (en) * 2006-08-21 2010-06-22 International Business Machines Corporation System and method for validating a computer platform when booting from an external device
US20120260345A1 (en) * 2011-04-05 2012-10-11 Assured Information Security, Inc. Trust verification of a computing platform using a peripheral device

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7664836B2 (en) * 2004-02-17 2010-02-16 Zhe Khi Pak Device and method for booting an operation system for a computer from a passive directly attached network device
US20070011444A1 (en) * 2005-06-09 2007-01-11 Grobman Steven L Method, apparatus and system for bundling virtualized and non-virtualized components in a single binary
US7434003B2 (en) * 2005-11-15 2008-10-07 Microsoft Corporation Efficient operating system operation on a hypervisor
CN101038551A (zh) * 2006-03-16 2007-09-19 南京大学 在移动硬盘上实现启动Linux操作系统的方法
US7689817B2 (en) * 2006-11-16 2010-03-30 Intel Corporation Methods and apparatus for defeating malware
GB0706810D0 (en) * 2007-04-05 2007-05-16 Becrypt Ltd System for providing a secure computing environment
US8024790B2 (en) * 2007-04-11 2011-09-20 Trend Micro Incorporated Portable secured computing environment for performing online confidential transactions in untrusted computers
US8104088B2 (en) 2007-05-11 2012-01-24 Microsoft Corporation Trusted operating environment for malware detection
US20090132816A1 (en) 2007-11-15 2009-05-21 Lockheed Martin Corporation PC on USB drive or cell phone
US8505103B2 (en) 2009-09-09 2013-08-06 Fujitsu Limited Hardware trust anchor
CN102906698A (zh) 2010-05-20 2013-01-30 杉中顺子 外部启动设备、外部启动方法、信息处理装置及网络通信系统
US20120011354A1 (en) * 2010-07-02 2012-01-12 Encryptakey, Inc. Boot loading of secure operating system from external device
CN102681859A (zh) 2011-03-10 2012-09-19 北京路模思科技有限公司 一种从USB大容量存储设备中启动Windows操作系统的方法
GB2508894A (en) 2012-12-14 2014-06-18 Ibm Preventing a trusted boot device from being booted in a virtual machine

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7743422B2 (en) * 2006-08-21 2010-06-22 International Business Machines Corporation System and method for validating a computer platform when booting from an external device
CN101154256A (zh) * 2006-09-26 2008-04-02 英特尔公司 启动可信共存环境的方法和装置
US20120260345A1 (en) * 2011-04-05 2012-10-11 Assured Information Security, Inc. Trust verification of a computing platform using a peripheral device

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109564525A (zh) * 2016-06-28 2019-04-02 亚马逊技术有限公司 按需网络代码执行环境中的异步任务管理
CN109564525B (zh) * 2016-06-28 2023-05-02 亚马逊技术有限公司 按需网络代码执行环境中的异步任务管理
US11875173B2 (en) 2018-06-25 2024-01-16 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US11836516B2 (en) 2018-07-25 2023-12-05 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11714675B2 (en) 2019-06-20 2023-08-01 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
CN111627489A (zh) * 2020-04-20 2020-09-04 珠海妙存科技有限公司 闪存特性分析方法及系统
CN111627489B (zh) * 2020-04-20 2023-09-29 珠海妙存科技有限公司 闪存特性分析方法及系统
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11968280B1 (en) 2021-11-24 2024-04-23 Amazon Technologies, Inc. Controlling ingestion of streaming data to serverless function executions

Also Published As

Publication number Publication date
GB2523057B (en) 2015-10-07
GB2523057A (en) 2015-08-12
GB201510657D0 (en) 2015-07-29
US10229261B2 (en) 2019-03-12
US20180089414A1 (en) 2018-03-29
US20180181744A1 (en) 2018-06-28
US9589128B2 (en) 2017-03-07
US10318724B2 (en) 2019-06-11
US20150317472A1 (en) 2015-11-05
CN104903854B (zh) 2018-04-24
GB201222583D0 (en) 2013-01-30
WO2014091343A1 (en) 2014-06-19
DE112013005184T5 (de) 2015-07-16
JP2015537322A (ja) 2015-12-24
GB2508894A (en) 2014-06-18

Similar Documents

Publication Publication Date Title
CN104903854B (zh) 用户可信设备及其引导计算机的方法
KR102137773B1 (ko) 보안 애플리케이션을 통해 안전한 데이터를 전송하기 위한 시스템 및 그에 관한 방법
US10685119B2 (en) Trusted malware scanning
CN103270518B (zh) 虚拟机验证系统及其方法
US8522018B2 (en) Method and system for implementing a mobile trusted platform module
KR101662618B1 (ko) 단일 신뢰 플랫폼 모듈을 가진 플랫폼 컴포넌트의 측정
Parno et al. Bootstrapping trust in modern computers
US9639690B2 (en) User trusted device to attest trustworthiness of initialization firmware
CN104871174B (zh) 用户便携设备及用于“自带”计算工作环境的系统和方法
JP5970141B2 (ja) コンピュータでソフトウェア・モジュールを実行するための方法、ブートローダ、ユーザ信頼デバイス、およびシステム
KR20200052957A (ko) 보안 제어 방법 및 컴퓨터 시스템
CN102509046A (zh) 带有休眠支持的全局有效的测量的操作系统发动
Jayaram et al. Trustworthy geographically fenced hybrid clouds
Butler et al. Kells: a protection framework for portable data
US9785492B1 (en) Technique for hypervisor-based firmware acquisition and analysis
US20180089415A1 (en) User trusted device for detecting a virtualized environment
Stewin Detecting peripheral-based attacks on the host memory
CN103870302B (zh) 可网络更新的用户信任装置
Yadav SECURE BOOTLOADER IN EMBEDDED SYSTEM USING MISRA-C
Stolfo et al. Research in Attacks, Intrusions, and Defenses
Wan Hardware-Assisted Security Mechanisms on Arm-Based Multi-Core Processors
Feng et al. Using mobile phones to enhance computing platform trust
LeMay Compact integrity-aware architectures
Butler et al. Protecting Portable Data with Host Validation

Legal Events

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