CN110622164B - 用于驱动程序执行的***、方法和计算机存储介质 - Google Patents

用于驱动程序执行的***、方法和计算机存储介质 Download PDF

Info

Publication number
CN110622164B
CN110622164B CN201880028448.0A CN201880028448A CN110622164B CN 110622164 B CN110622164 B CN 110622164B CN 201880028448 A CN201880028448 A CN 201880028448A CN 110622164 B CN110622164 B CN 110622164B
Authority
CN
China
Prior art keywords
driver
suite
domain
executed
code
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
CN201880028448.0A
Other languages
English (en)
Other versions
CN110622164A (zh
Inventor
S·瓦尔马
K·拉杰夫
P·W·维兰德
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 Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN110622164A publication Critical patent/CN110622164A/zh
Application granted granted Critical
Publication of CN110622164B publication Critical patent/CN110622164B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • 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/40Network security protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

本公开的各实施例涉及用于驱动程序执行的***、方法和计算机存储介质。本文描述了用于驱动程序执行的***。驱动程序被加在在第一域中,驱动程序控制相关联的设备。响应于来自驱动程序的请求,驱动程序配套被加在在不同于第一域的第二域中,第二域包括安全环境。驱动程序配套与相关联的设备通信。驱动程序和驱动程序配套之间的通信被管理(例如,通过操作***框架)。响应于来自驱动程序的请求,驱动程序配套被卸载。

Description

用于驱动程序执行的***、方法和计算机存储介质
背景技术
计算***可以使用设备驱动程序(“驱动程序”)来控制(多个)设备。设备驱动程序可以用作(多个)设备***资源(例如,CPU寄存器、***存储器寄存器等)的接口。设备驱动程序可以在特权模式(例如,内核模式)中执行。在内核模式下,与在非特权模式(例如,使用模式)中执行的代码相比,驱动程序对***资源的访问权限更大。有缺陷或恶意的驱动程序可能会损害计算***的完整性,从而导致崩溃或数据损坏。
发明内容
本文描述了用于驱动程序执行的***,***包括:包括处理器和存储器的计算机,存储器具有存储在其上的计算机可执行指令,计算机可执行指令在由处理器执行时使得计算设备:在第一域中加载驱动程序,其中驱动程序控制相关联的设备;响应于来自驱动程序的请求,在不同于第一域的第二域中加载驱动程序配套(companion),第二域包括安全环境,驱动程序配套与相关联的设备通信;管理驱动程序与驱动程序配套之间的通信;以及响应于来自驱动程序的请求,卸载驱动程序配套。
提供本发明内容以简化形式介绍一些概念,这些概念将在下面的具体实施方式中进一步描述。本发明内容既不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
附图说明
图1是图示用于驱动程序执行的***的功能框图。
图2图示了执行驱动程序和相关联的驱动程序配套的一个示例性方法。
图3图示了执行驱动程序的一个示例性方法。
图4是图示示例性计算***的功能框图。
具体实施方式
现在参考附图来描述与在两个不同的保护域中执行驱动程序代码有关的各种技术,其中贯穿全文,相同的附图标记用于指代相同的元素。在下面的描述中,出于解释的目的,阐述了许多具体细节来提供对一个或多个方面的透彻理解。然而,显而易见的是,可以在没有这些具体细节的情况下实践这些方面。在其他实例中,以框图形式示出了公知的结构和设备,以便于描述一个或多个方面。此外,应当理解,被描述为由某些***组件执行的功能可以由多个组件执行。类似地,例如,组件可以被配置为执行被描述为由多个组件执行的功能。
本公开内容支持执行或被配置为执行与在两个不同保护域中执行驱动程序代码有关的各种动作的各种产品和过程。以下是一个或多个示例性***和方法。
本公开的各方面涉及驱动程序执行的可靠性、性能和/或安全性的技术问题。与解决该问题相关联的技术特征涉及:提供具有在第一域中执行的第一部分和在第二不同域中执行的第二部分的驱动程序;提供促进在驱动程序的第一部分和第二部分之间通信的操作***框架以及管理驱动程序的(多个)部分的生存期的框架。因此,这些技术特征的各方面表现出更可靠和/或更安全地执行驱动程序的技术效果。
此外,术语“或”旨在表示包括性的“或”而不是排他性的“或”。即,除非另有说明或从上下文中清楚得知,否则短语“X使用A或B”旨在表示任何自然的包括性排列。即,以下任一个情况都满足短语“X使用A或B”:X使用A;X使用B;或X同时使用A和B。此外,除非另有说明或从上下文中清楚得知指向单数形式,否则在本申请和所附权利要求书中使用的冠词“一(a)”和“一个(an)”通常应解释为表示“一个或多个”。
如本文所使用的,术语“组件”和“***”及其各种形式(例如,组件、***、子***等)旨在指代与计算机有关的实体或者硬件、硬件和软件的组合、软件或正在执行的软件。例如,组件可以是但不限于在处理器上运行的进程、处理器、对象、实例、可执行文件、执行线程、程序和/或计算机。作为图示,在计算机上运行的应用和计算机都可以是组件。一个或多个组件可以驻留在执行的进程和/或线程中,并且组件可以位于一个计算机上和/或分布在两个或多个计算机之间。此外,如本文中所使用的,术语“示例性”旨在表示用作某物的图示或示例,而并非旨在表示偏好。
参考图1,图示了用于驱动程序执行的***100。***100在两个不同的保护域(例如,用户模式、内核模式、不同的虚拟信任级别、不同的地址空间等)中提供驱动程序代码的执行。
(多个)驱动程序可以控制相关联的设备。(多个)驱动程序可以与操作***内核紧密合作,并且在许多情况下,驱动程序由(多个)第三方编写。这样,(多个)驱动程序可以在计算***的可靠性、性能和/或安全性方面发挥巨大作用。设备驱动程序的某些部分(例如,I/O事务、CPU密集型算法、安全的生物特征事务、(多个)加密和/或解密密钥和/或(多个)算法和/或不同域中已存在可重用的代码)对可靠性、性能和安全性更加灵敏。通过在单独的保护域中执行驱动程序代码的这样的部分,在不会使驱动程序复杂化的情况下,***100促进提高可靠性、性能和/或安全性。
通过将驱动程序的各部分拆分为单独的独立驱动程序,和/或通过以可靠性、性能和/或安全性为代价编写单片驱动程序,***100相对于其他尝试(例如,使得多个独立组件彼此通信)提高了可靠性、性能和/或安全性。
使得多个独立组件彼此通信的缺点是增加了复杂性,从而导致更长的开发时间和更高的维护成本。复杂性的形式有例如两个不同且独立组件的状态管理、生存期管理、制定通信协议的需求、由于涉及多个组件而导致的故障调试能力差等。
类似地,将驱动程序拆分为两个独立驱动程序与上述类似,不同之处在于,两个组件均是驱动程序。单个硬件由两个驱动程序本身管理的事实导致更复杂的设计、两个驱动程序之间的同步操作困难以及为同一设备维护单独状态的两个驱动程序之间的同步困难。
在两个驱动程序之间存在责任划分,并且每个驱动程序必须管理与其在设备堆栈中的位置相对应的设备状态。这是麻烦的并且很难使之可靠,因为尽管驱动程序之间存在责任划分,但是每个驱动程序都必须像完整的驱动程序那样编写,并考虑对方的即插即用(PnP)和/或电源状态,然后再与之交互。两个驱动程序彼此通信也不直接,因为它们必须各自发送栈内I/O请求,这也需要与设备的PnP/电源状态同步。
***100包括框架110,框架110包括在第一域内执行的第一框架组件120和在第二域(例如,与第一域不同的域)内执行的第二框架组件130。框架110还包括促进第一框架组件120和第二框架组件130之间的通信的驱动程序管理服务140。框架110还包括配套托管进程150,配套托管进程150将与驱动程序170相关联的驱动程序配套160托管。
***100不创建两个完整的驱动程序。相反,在设计时,开发人员可以获取开发人员期望在不同域中运行的驱动程序代码的子集(例如,不同的进程、更高的信任级别等),并使得代码子集作为驱动程序配套160(例如,扩展)运行。在运行时,驱动程序170继续管理设备的即插即用(PnP)和/或电源状态,但是为驱动程序170提供方便地调出相关联的驱动程序配套160来执行由开发人员确定的、将在不同的域中(例如,安全地)执行的(多个)任务的能力。因为存在由单个驱动程序170管理的单个设备状态,所以这是简单得多的解决方案。操作***的驱动程序框架110(例如,Windows®Driver Framework)管理驱动程序配套160的加载及其生存期。
在一个实施例中,***100还可以为驱动程序170提供“配套目标”,以用于将“任务”排队供驱动程序配套160处理。该“配套目标”的状态可以与设备状态自动同步。例如,在驱动程序配套160卸载之前,所有请求都可以被排空(drained)。
在一个实施例中,内核模式驱动程序170与操作***(OS)提供的驱动程序框架110交互。该框架110向驱动程序170提供允许驱动程序170方便地管理设备状态的API和/或事件回调。驱动程序170具有驱动程序配套160,框架110基于驱动程序包中指定的设置,以用户模式在配套托管进程150中自动加载驱动程序配套160。驱动程序170然后使用框架110提供的对象和/或API来与驱动程序配套160交互。在一个实施例中,在设备被移除和/或配套托管进程150崩溃的情况下,框架110自动排空该任务队列。
驱动程序管理服务140是可以根据设备的即插即用(PnP)状态,协助框架110管理驱动程序配套托管(多个)进程150的生存期的另一操作***提供的组件。驱动程序管理服务140还可以用于在发生崩溃的情况下自动重新启动发生故障的托管进程,而不会使得整个***崩溃(通常是内核模式崩溃)。
在一个实施例中,驱动程序170及其相关联的驱动程序配套160两者都使用由同一驱动程序框架110提供的API表面。与内核驱动程序170相比,驱动程序配套160具有其可用的、框架110的子集提供的API,但驱动程序配套160可以像在内核模式下一样使用它们。
在一个实施例中,***100允许将驱动程序代码的子集(例如,驱动程序配套160)与用户模式进程隔离,例如作为增强***可靠性的方式。在一个实施例中,***100还允许将驱动程序代码的子集(例如,驱动程序配套160)隔离到不同的安全域(例如,较高的信任级别),例如以保护敏感的用户数据。在一个实施例中,***100允许驱动程序170经由其用户模式驱动程序配套160访问在内核模式下不可用的服务/应用编程接口(API)。在一个实施例中,驱动程序配套160可以在安全环境中执行并与相关联的设备通信。
在一个实施例中,***100不需要将整个驱动程序移植(ported)为以用户模式运行,而是驱动程序170可以按照内核模式运行,而驱动程序配套160可以按照用户模式运行。驱动程序170与操作***的一个或多个交互(例如,围绕电源和/或设备状态管理)可以继续驻留在驱动程序170中。
在一个实施例中,特定的驱动程序170可以使用操作***提供的抽象与相关联的驱动程序配套160通信,并且驱动程序170不需要为此而发明驱动程序自己的协议。在一个实施例中,用于与驱动程序配套160交互的抽象和API与驱动程序170的电源状态和即插即用(PnP)状态自动同步。
在一个实施例中,由于驱动程序170管理单个设备并且操作***可以提供(多个)调试扩展来诊断与驱动程序170和相关联的驱动程序配套160(例如,与单个设备通信)之间的通信相关联的(多个)任务队列,因此调试更加容易。在一个实施例中,驱动程序170和相关联的驱动程序配套160针对相同的框架110链接,因此驱动程序170和相关联的驱动程序配套160可以针对相同的API表面编程。
***100例如在与驱动程序170不同的保护域中执行驱动程序配套160,以提高可靠性、性能和/或安全性。在一个实施例中,驱动程序配套160的不同保护域是单独的地址空间。在一个实施例中,驱动程序配套160的不同保护域是单独的安全域(例如,用户模式、虚拟信任级别等)。
在一个实施例中,驱动程序170可以通过发送被称为“任务”的定制命令控制消息来与相关联的驱动程序配套160交互。驱动程序配套160可以处理被称为“任务队列”的队列中的这些任务。通过从驱动程序170隔离驱动程序配套160(例如,如果存在,代码和相关联的数据)的执行,从而允许驱动程序配套160处理驱动程序配套160的域中的任务,***100可以防止对驱动程序配套160的代码的攻击和/或驱动程序配套160的域中的数据泄漏。
例如,对于在内核模式中执行的驱动程序170,驱动程序170可以在用户模式中执行相关联的驱动程序配套160(例如,代码的子集),以避免内核模式异常(例如,可以使整个***崩溃)。在内核模式中执行的驱动程序170无需整体移动即可在用户模式下运行。
在一个实施例中,驱动程序170可以与生物特征测定设备(例如,指纹、虹膜扫描等)相关联。为了保护诸如与用户相关联的生物特征数据的敏感数据,***100可以促进驱动程序配套以不同的虚拟信任级别(VTL)执行。例如,与驱动程序170相比,驱动程序配套160可以在更高级别的VTL(例如,“经隔离的用户模式”)中执行,例如以防止在驱动程序170的内核被破坏的情况下,(多个)机密被窃取。
图2和图3图示了与在两个不同的保护域中执行驱动程序代码有关的示例性方法。虽然将方法示出并描述为按顺序执行的一系列动作,但是应当理解,方法不受序列顺序的限制。例如,某些动作可以按照与本文所描述的顺序不同的顺序发生。附加地,一个动作可以与另一动作同时发生。此外,在某些情况下,实现本文所描述的方法可能不需要所有动作。
此外,本文所描述的动作可以是可以由一个或多个处理器实现和/或存储在一个或多个计算机可读介质上的计算机可执行指令。计算机可执行指令可以包括例程、子例程、程序、执行线程等。更进一步,方法的动作的结果可以被存储在计算机可读介质中、显示在显示设备上等。
参考图2,图示了执行驱动程序以及相关联的驱动程序配套的方法200。例如,方法200可以由操作***的框架110执行。
在210处,在第一域(例如,内核模式)中加载驱动程序(例如,驱动程序170)。在一个实施例中,驱动程序控制相关联的设备。在220处,响应于来自驱动程序的请求,在与第一域不同的第二域(例如,用户模式)中加载驱动程序配套(例如,驱动程序配套160)。在一个实施例中,第二域包括安全环境。驱动程序配套与相关联的设备通信。
在230处,管理驱动程序与驱动程序配套之间的(多个)通信。在240处,响应于来自驱动程序的请求,驱动程序配套被卸载。
转到图3,图示了执行驱动程序300的方法。例如,方法300可以由在第一域中执行的驱动程序170执行。
在310处,请求将驱动程序配套加载到不同的域中。在320处,将任务发送到驱动程序配套。在330处,接收任务完成通知。在340处,请求卸载驱动程序配套。
本文描述的是用于驱动程序执行的***。***包括计算机,计算机包括处理器和具有存储在其上的计算机可执行指令的存储器,当计算机可执行指令由处理器执行时,使得计算设备:在第一域中加载驱动程序,其中驱动程序控制相关联的设备;响应于来自驱动程序的请求,在不同于第一域的第二域中加载驱动程序配套,第二域包括安全环境,驱动程序配套与相关联的设备通信;管理驱动程序与驱动程序配套之间的通信;以及响应于来自驱动程序的请求,卸载驱动程序配套。***可以包括其中驱动程序在内核模式中执行并且驱动程序配套在用户模式中执行。
***可以进一步包括其中驱动程序以第一虚拟信任级别执行,并且驱动程序配套以第二较高的虚拟信任级别执行。***可以包括其中驱动程序在第一地址空间中执行并且驱动程序配套在第二不同的地址空间中执行。***可以进一步包括其中驱动程序配套安全地存储关于计算机用户的生物特征信息。
***可以包括其中驱动程序配套安全地存储加密密钥或解密密钥中的至少一项。***可以进一步包括其中驱动程序配套安全地执行敏感输入事务或敏感输出事务中的至少一项。***可以包括其中任务队列促进驱动程序与驱动程序配套之间的通信。
***可以进一步包括其中框架管理与驱动程序配套相关联的生存期。***可以包括其中驱动程序管理与驱动程序相关联的设备的即插即用(PnP)状态和电源状态。
本文描述的是执行驱动程序和相关联的驱动程序配套的方法。方法包括在第一域中加载驱动程序,其中驱动程序控制相关联的设备;响应于来自驱动程序的请求,在不同于第一域的第二域中加载驱动程序配套,第二域包括安全环境,驱动程序配套与相关联的设备通信;管理驱动程序与驱动程序配套之间的通信;以及响应于来自驱动程序的请求,卸载驱动程序配套。
方法可以包括其中第一域是内核模式,且第二域是用户模式。方法可以进一步包括其中驱动程序使用驱动程序配套来管理相关联的设备。方法可以进一步包括其中驱动程序在第一地址空间中执行,并且驱动程序配套在第二不同的地址空间中执行。方法可以包括其中驱动程序配套安全地存储关于计算机用户的信息。
本文描述了计算机存储介质,计算机存储介质存储计算机可读指令,计算机可读指令在被执行时使得计算设备:在第一域中加载驱动程序,驱动程序控制相关联的设备;响应于来自驱动程序的请求,在不同于第一域的第二域中加载驱动程序配套,第二域包括安全环境,驱动程序配套与相关联的设备通信;管理驱动程序与驱动程序配套之间的通信;以及响应于来自驱动程序的请求,卸载驱动程序配套。计算机存储介质可以进一步包括其中第一域是内核模式且第二域是用户模式。
计算机存储介质可以包括其中第一域是第一虚拟信任级别,且第二域是第二较高的虚拟信任级别。计算机存储介质可以进一步包括其中驱动程序在第一地址空间中执行,并且驱动程序配套在第二不同的地址空间中执行。计算机存储介质可以包括其中驱动程序配套安全地存储关于计算机用户的信息。
参考图4,图示了示例通用计算机或计算设备402(例如,移动电话、台式机、膝上型计算机、平板电脑、手表、服务器、手持式设备、可编程消费或工业电子设备、机顶盒、游戏***、计算节点等)。例如,计算设备402可以在用于驱动程序执行的***100中使用。
计算机402包括一个或多个处理器420、存储器430、***总线440、(多个)大容量存储设备450以及一个或多个接口组件470。***总线440将至少上述***组成通信地耦合。然而,应理解,计算机402以其最简单的形式可包括耦合到存储器430的一个或多个处理器420,一个或多个处理器420执行存储在存储器430中的各种计算机可执行动作、指令和/或组件。指令可以是例如用于实现被描述为由上述一个或多个组件执行的功能的指令或用于实现上述方法中的一个或多个的指令。
可以利用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑设备、离散门或晶体管逻辑、分立硬件组件或旨在执行本文所述的功能的其任何组合来实现(多个)处理器420。通用处理器可以是微处理器,但是备选地,处理器可以是任何处理器、控制器、微控制器或状态机。(多个)处理器420还可以被实现为计算设备的组合(例如,DSP和微处理器的组合)、多个微处理器、多核处理器、与DSP核结合的一个或多个微处理器、或者任何其他这样的配置。在一个实施例中,(多个)处理器420可以是图形处理器。
计算机402可以包括各种计算机可读介质或与各种计算机可读介质交互,以促进控制计算机402来实现所要求保护的主题的一个或多个方面。计算机可读介质可以是计算机402可以访问的任何可用介质,并且包括易失性和非易失性介质以及可移动和不可移动介质。计算机可读介质可以包括两个不同且互斥的类型(即,计算机存储介质和通信介质)。
计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括诸如存储器设备(例如,随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)等)的存储设备、磁存储设备(例如,硬盘、软盘、盒式磁带、磁带等)、光盘(例如,光盘(CD)、数字多功能磁盘(DVD)等)和固态设备(例如,固态驱动(SSD)、闪存驱动(例如,卡、棒、秘钥驱动等))或存储(而不是传输或通信)计算机402可访问的期望信息的任何其他类似的介质。因此,计算机存储介质不包括调制数据信号以及关于通信介质所描述的介质。
通信介质在诸如载波或其他传输机制的调制数据信号中体现计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息传递介质。术语“调制数据信号”是指以将信号中的信息编码的方式来设置或改变其一个或多个特性的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、RF、红外和其他无线介质的无线介质。
存储器430和(多个)大容量存储设备450是计算机可读存储介质的示例。根据计算设备的确切配置和类型,存储器430可以是易失性的(例如,RAM)、非易失性的(例如,ROM、闪存等)或两者的某个组合。例如,包括诸如在启动期间在计算机402内的元件之间传递信息的基本例程的基本输入/输出***(BIOS)可以存储在非易失性存储器中,而易失性存储器可以充当外部高速缓存存储器,以促进(多个)处理器420的处理等。
一个或多个大容量存储设备450包括可移动/不可移动、易失性/非易失性计算机存储介质,用于相对于存储器430来存储大量数据。例如,一个或多个大容量存储设备450包括但不限于诸如磁盘或光盘驱动的一个或多个设备、软盘驱动、闪存、固态驱动或记忆棒。
存储器430和(多个)大容量存储设备450可以包括或已存储有操作***460、一个或多个应用462、一个或多个程序模块464以及数据466。操作***460用于控制和分配计算机402的资源。应用462包括***和应用软件中的一个或两者,并且可以借助程序模块464,通过操作***460来管理资源以及存储在存储器430和/或(多个)大容量存储设备450中的数据,以执行一个或多个动作。因此,应用462可以根据由此提供的逻辑将通用计算机402变成专用机器。
可以使用标准编程和/或工程技术来实现所要求保护的主题的全部或部分,以产生软件、固件、硬件或其任何组合来控制计算机实现所公开的功能。作为示例而非限制,***100或其部分可以是应用462或形成应用462的一部分,并且包括存储在存储器和/或(多个)大容量存储设备450中、当由一个或多个处理器420执行时,可以实现功能的一个或多个程序模块464和数据466。
根据一个特定实施例,一个或多个处理器420可以对应于片上***(SOC)或类似架构(包括或换言之,将硬件和软件两者集成在单个集成电路基板上)。在此,(多个)处理器420可包括一个或多个处理器以及至少类似于(多个)处理器420和存储器430的存储器等。常规处理器包括最少数量的硬件和软件,并且广泛依赖于外部硬件和软件。相比之下,处理器的SOC实现更为强大,因为它在其中嵌入了硬件和软件,在对外部硬件和软件的依赖程度降到最低或没有的情况下,这些硬件和软件实现了特定功能。例如,***100和/或相关联的功能可以被嵌入SOC架构中的硬件内。
计算机402还包括可通信地耦合到***总线440并促进与计算机402的交互的一个或多个接口组件470。作为示例,接口组件470可以是端口(例如,串行、并行、PCMCIA、USB、FireWire等)或接口卡(例如,声音、视频等)等。在一个示例实现中,接口组件470可以体现为用户输入/输出接口,以使得用户能够例如通过一个或多个手势或语音输入、通过一个或多个输入设备(例如,鼠标、轨迹球、手写笔、触摸板、键盘、麦克风、操纵杆、游戏板、碟形卫星天线、扫描仪、相机、其他计算机等),将命令和信息输入到计算机402中。在另一示例实现中,接口组件470可以体现为输出***接口,以将输出提供给显示器(例如,LCD、LED、等离子等)、扬声器、打印机和/或其他计算机等。更进一步,接口组件470可以体现为网络接口,以使得能够例如通过有线或无线通信链路,与其他计算设备(未示出)通信。
上面已描述的内容包括所要求保护的主题的各方面的示例。当然,为了描述所要求保护的主题的目的,不可能描述组件或方法的每个可能的组合,但是本领域的普通技术人员可以认识到,所公开的主题的许多进一步的组合和置换是可能的。因此,所公开的主题旨在涵盖落入所附权利要求的精神和范围内的所有这样的改变、修改和变化。此外,因为当在权利要求中使用时,“包括(comprising)”被解释为过渡词语,就在详细描述或权利要求中使用术语“包含(includes)”的程度而言,这样的术语旨在以与术语“包括(comprising)”相似的方式包括。

Claims (20)

1.一种用于驱动程序执行的***,包括:
计算机,包括处理器和具有存储在其上的计算机可执行指令的存储器,所述计算机可执行指令当由所述处理器执行时,使得计算设备:
在第一域中加载所述驱动程序,其中所述驱动程序控制相关联的设备并且单独地管理所述相关联的设备的状态,所述驱动程序包括驱动程序代码的一部分;
响应于来自所述驱动程序的请求,在不同于所述第一域的第二域中加载驱动程序配套,所述驱动程序配套包括所述驱动程序代码的子集,所述第二域包括安全环境,所述驱动程序配套与所述相关联的设备通信;
管理所述驱动程序与所述驱动程序配套之间的通信,包括从所述驱动程序去往所述驱动程序配套的用以执行特定任务的请求;
由所述驱动程序执行驱动程序代码;
由所述驱动程序配套响应于用以执行所述特定任务的所述请求而执行驱动程序代码;以及
响应于来自所述驱动程序的请求,卸载所述驱动程序配套。
2.根据权利要求1所述的***,其中所述驱动程序在内核模式中执行,并且所述驱动程序配套在用户模式中执行。
3.根据权利要求1所述的***,其中所述驱动程序在第一虚拟信任级别中执行,并且所述驱动程序配套在较高的第二虚拟信任级别中执行。
4.根据权利要求1所述的***,其中所述驱动程序在第一地址空间中执行,并且所述驱动程序配套在不同的第二地址空间中执行。
5.根据权利要求1所述的***,其中所述驱动程序配套安全地存储关于所述计算机的用户的生物特征信息。
6.根据权利要求1所述的***,其中所述驱动程序配套安全地存储加密密钥或解密密钥中的至少一项。
7.根据权利要求1所述的***,其中所述驱动程序配套安全地执行敏感输入事务或敏感输出事务中的至少一项。
8.根据权利要求1所述的***,其中任务队列促进所述驱动程序与所述驱动程序配套之间的通信。
9.根据权利要求1所述的***,其中框架管理与所述驱动程序配套相关联的生存期。
10.根据权利要求1所述的***,其中所述驱动程序管理与所述驱动程序相关联的设备的即插即用(PnP)状态和电源状态。
11.一种执行驱动程序和驱动程序配套的方法,包括:
在第一域中加载所述驱动程序,其中所述驱动程序控制相关联的设备并且单独地管理所述相关联的设备的状态,所述驱动程序包括驱动程序代码的一部分;
响应于来自所述驱动程序的请求,在不同于所述第一域的第二域中加载所述驱动程序配套,所述驱动程序配套包括所述驱动程序代码的子集,所述第二域包括安全环境,所述驱动程序配套与所述相关联的设备通信;
管理所述驱动程序与所述驱动程序配套之间的通信,包括从所述驱动程序去往所述驱动程序配套的用以执行特定任务的请求;
由所述驱动程序执行驱动程序代码;
由所述驱动程序配套响应于用以执行所述特定任务的所述请求而执行驱动程序代码;以及
响应于来自所述驱动程序的请求,卸载所述驱动程序配套。
12.根据权利要求11所述的方法,其中所述第一域是内核模式,并且所述第二域是用户模式。
13.根据权利要求11所述的方法,其中所述驱动程序使用所述驱动程序配套来管理所述相关联的设备。
14.根据权利要求11所述的方法,其中所述驱动程序在第一地址空间中执行,并且所述驱动程序配套在不同的第二地址空间中执行。
15.根据权利要求11所述的方法,其中所述驱动程序配套安全地存储关于计算机的用户的信息。
16.一种存储计算机可读指令的计算机存储介质,所述计算机可读指令在被执行时使得计算设备:
在第一域中加载驱动程序,所述驱动程序控制相关联的设备并且单独地管理所述相关联的设备的状态,所述驱动程序包括驱动程序代码的一部分;
响应于来自所述驱动程序的请求,在不同于所述第一域的第二域中加载驱动程序配套,所述驱动程序配套包括所述驱动程序代码的子集,所述第二域包括安全环境,所述驱动程序配套与所述相关联的设备通信;
管理所述驱动程序与所述驱动程序配套之间的通信,包括从所述驱动程序去往所述驱动程序配套的用以执行特定任务的请求;
由所述驱动程序执行驱动程序代码;
由所述驱动程序配套响应于用以执行所述特定任务的所述请求而执行驱动程序代码;以及
响应于来自所述驱动程序的请求,卸载所述驱动程序配套。
17.根据权利要求16所述的计算机存储介质,其中所述第一域是内核模式,并且所述第二域是用户模式。
18.根据权利要求16所述的计算机存储介质,其中所述第一域是第一虚拟信任级别,并且所述第二域是较高的第二虚拟信任级别。
19.根据权利要求16所述的计算机存储介质,其中所述驱动程序在第一地址空间中执行,并且所述驱动程序配套在不同的第二地址空间中执行。
20.根据权利要求16所述的计算机存储介质,其中所述驱动程序配套安全地存储关于所述计算机的用户的信息。
CN201880028448.0A 2017-04-30 2018-04-08 用于驱动程序执行的***、方法和计算机存储介质 Active CN110622164B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762492202P 2017-04-30 2017-04-30
US62/492,202 2017-04-30
US15/865,356 2018-01-09
US15/865,356 US10445257B2 (en) 2017-04-30 2018-01-09 Execution of subset of driver code in separate protection domain
PCT/US2018/026644 WO2018204022A1 (en) 2017-04-30 2018-04-08 Execution of subset of driver code in separate protection domain

Publications (2)

Publication Number Publication Date
CN110622164A CN110622164A (zh) 2019-12-27
CN110622164B true CN110622164B (zh) 2023-07-07

Family

ID=63917277

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880028448.0A Active CN110622164B (zh) 2017-04-30 2018-04-08 用于驱动程序执行的***、方法和计算机存储介质

Country Status (4)

Country Link
US (1) US10445257B2 (zh)
EP (1) EP3619635B1 (zh)
CN (1) CN110622164B (zh)
WO (1) WO2018204022A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114253738B (zh) * 2021-11-02 2024-05-24 上海交通大学 可信执行环境的内存锁定方法
CN116738503B (zh) * 2023-08-14 2023-10-20 北京国电通网络技术有限公司 用于硬件***与操作***的协同加密方法、电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101297280A (zh) * 2005-10-26 2008-10-29 微软公司 隔离扩展和设备驱动程序的配置
US8104083B1 (en) * 2008-03-31 2012-01-24 Symantec Corporation Virtual machine file system content protection system and method
CN102763075A (zh) * 2010-09-30 2012-10-31 英特尔公司 存储驱动器管理

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0610677A3 (en) 1993-02-12 1995-08-02 Ibm Communication device management module operating in two modes.
US6871350B2 (en) 1998-12-15 2005-03-22 Microsoft Corporation User mode device driver interface for translating source code from the user mode device driver to be executed in the kernel mode or user mode
US7698744B2 (en) 2004-12-03 2010-04-13 Whitecell Software Inc. Secure system for allowing the execution of authorized computer program code
US20060242270A1 (en) * 2005-04-21 2006-10-26 Microsoft Corporation Isolation of user-mode device drivers
US7730545B2 (en) * 2005-05-23 2010-06-01 Arm Limited Test access control for secure integrated circuits
CN101071387B (zh) * 2006-09-08 2010-05-12 华南理工大学 一种基于虚拟机的驱动程序加固方法
US8595487B2 (en) 2006-11-01 2013-11-26 Vmware, Inc. Virtualization hardware for device driver isolation
US7950022B1 (en) * 2007-06-29 2011-05-24 Emc Corporation Techniques for use with device drivers in a common software environment
US8434098B2 (en) 2008-02-07 2013-04-30 Microsoft Corporation Synchronizing split user-mode/kernel-mode device driver architecture
US8806511B2 (en) 2010-11-18 2014-08-12 International Business Machines Corporation Executing a kernel device driver as a user space process
US10496824B2 (en) * 2011-06-24 2019-12-03 Microsoft Licensing Technology, LLC Trusted language runtime on a mobile platform
US8099596B1 (en) * 2011-06-30 2012-01-17 Kaspersky Lab Zao System and method for malware protection using virtualization
US9075985B2 (en) 2013-05-31 2015-07-07 Microsoft Technology Licensing, Llc Restricted transmogrifying driver platform
CN103593189A (zh) * 2013-11-14 2014-02-19 昆明理工大学 一种嵌入式Linux下用户态驱动程序的实现方法
US10097513B2 (en) * 2014-09-14 2018-10-09 Microsoft Technology Licensing, Llc Trusted execution environment extensible computing device interface
US9628279B2 (en) * 2014-09-30 2017-04-18 Microsoft Technology Licensing, Llc Protecting application secrets from operating system attacks
US9904782B2 (en) * 2015-10-27 2018-02-27 Mcafee, Llc Synchronous execution of designated computing events using hardware-assisted virtualization

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101297280A (zh) * 2005-10-26 2008-10-29 微软公司 隔离扩展和设备驱动程序的配置
US8104083B1 (en) * 2008-03-31 2012-01-24 Symantec Corporation Virtual machine file system content protection system and method
CN102763075A (zh) * 2010-09-30 2012-10-31 英特尔公司 存储驱动器管理

Also Published As

Publication number Publication date
WO2018204022A1 (en) 2018-11-08
US20180314651A1 (en) 2018-11-01
CN110622164A (zh) 2019-12-27
US10445257B2 (en) 2019-10-15
EP3619635A1 (en) 2020-03-11
EP3619635B1 (en) 2021-03-10

Similar Documents

Publication Publication Date Title
CN109564514B (zh) 用于部分卸载的虚拟化管理器处的存储器分配的方法和***
CN109918919B (zh) 认证变量的管理
US9870324B2 (en) Isolating guest code and data using multiple nested page tables
CN108475217B (zh) 用于审计虚拟机的***及方法
KR102102090B1 (ko) Arm® trustzone™ 구현을 위한 펌웨어 기반 신뢰 플랫폼 모듈
JP5861228B2 (ja) 仮想パーティションを監視するためのシステム、装置、プログラムおよび方法
EP3047419B1 (en) Virtual secure mode for virtual machines
US10990690B2 (en) Disk encryption
EP3408778B1 (en) Disk encryption
US11379385B2 (en) Techniques for protecting memory pages of a virtual computing instance
US8843742B2 (en) Hypervisor security using SMM
US9058494B2 (en) Method, apparatus, system, and computer readable medium to provide secure operation
US10120738B2 (en) Hypervisor techniques for performing non-faulting reads in virtual machines
WO2017112273A1 (en) Detecting data corruption by control flow interceptions
CN110622164B (zh) 用于驱动程序执行的***、方法和计算机存储介质
WO2016164424A1 (en) Isolating guest code and data using multiple nested page tables
CN103996004B (zh) 一种基于虚拟化的高可用***设计方法
WO2021118730A1 (en) Overlap customer planned activity to migrate a virtual machine
US10430223B2 (en) Selective monitoring of writes to protected memory pages through page table switching
US10127064B2 (en) Read-only VM function chaining for secure hypervisor access
CN116069584A (zh) 将监控服务扩展到可信云运营商域中
EP3408780B1 (en) Disk encryption
EP3408779B1 (en) Disk encryption

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