CN108885572B - 安全驱动程序平台 - Google Patents
安全驱动程序平台 Download PDFInfo
- Publication number
- CN108885572B CN108885572B CN201780020883.4A CN201780020883A CN108885572B CN 108885572 B CN108885572 B CN 108885572B CN 201780020883 A CN201780020883 A CN 201780020883A CN 108885572 B CN108885572 B CN 108885572B
- Authority
- CN
- China
- Prior art keywords
- secure
- driver
- execution environment
- kernel mode
- security
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/606—Protecting data by securing the transmission between two devices or processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/53—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/74—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2113—Multi-level security, e.g. mandatory access control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Automation & Control Theory (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本文描述的技术使得能够实现安全驱动程序框架。在一个示例中,一种方法包括管理包含第一用户模式和第一内核模式的非安全操作***执行环境。该方法还可包括:管理包括第二用户模式和第二内核模式的安全执行环境;以及响应于来自第一内核模式或第一用户模式中非安全驱动程序的***调用,在安全执行环境的第二用户模式内执行安全驱动程序,其中安全驱动程序使非安全驱动程序能够与安全设备通信。此外,该方法可以包括向安全驱动程序提供第二内核模式的一个或多个***服务。
Description
背景
许多应用和硬件设备收集安全数据,期望安全数据将被保护免于未经授权的访问。此外,许多计算体系结构需要在假定驱动程序可被信任的情况下将安全数据暴露给大型驱动程序栈。例如,安全数据可被传送给可具有对***存储器的完全访问从而具有对存储在***存储器内的安全数据的访问的任何数目的驱动程序。然而,驱动程序可能易于受到受损和/或恶意***软件的攻击。
概述
以下提供了简化概述,以提供对本文中描述的某些方面的基本理解。该概述不是权利要求主题的广泛概览。该概述不旨在标识所要求保护的主题的关键或决定性元素,也不旨在描述所要求保护的主题的范围。该概述的唯一目的是以简化的形式将所要求保护的主题的一些概念表达为下文表达的更详细说明的序言。
本文描述的实施例包括用于提供安全驱动程序框架的***,该安全驱动程序框架包括处理器,该处理器能够管理包括第一用户模式和第一内核模式的非安全操作***执行环境以及管理包括第二用户模式和第二内核模式的安全执行环境。该处理器还可响应于来自第一内核模式或第一用户模式中的非安全驱动程序的***调用,在安全执行环境的第二用户模式内执行安全驱动程序。另外,该处理器可以向安全驱动程序提供第二内核模式的一个或多个***服务。
在一个实施例中,一种用于提供安全驱动程序框架的方法可包括管理包含第一用户模式和第一内核模式的非安全操作***执行环境。该方法还可包括:管理包括第二用户模式和第二内核模式的安全执行环境;以及响应于来自第一内核模式或第一用户模式中非安全驱动程序的***调用,在安全执行环境的第二用户模式内执行安全驱动程序,其中安全驱动程序使非安全驱动程序能够与安全设备通信。此外,该方法可以包括向安全驱动程序提供第二内核模式的一个或多个***服务。
在又一实施例中,一种或多种用于实现安全驱动程序框架的计算机可读存储器可包括多个指令,该多个指令至少基于由处理器执行来使得该处理器:管理包括第一用户模式和第一内核模式的非安全操作***执行环境。该多个指令还可使处理器管理包括第二用户模式和第二内核模式的安全执行环境,以及响应于来自第一内核模式或第一用户模式中非安全驱动程序的***调用,在安全执行环境的第二用户模式内执行安全驱动程序,其中安全驱动程序使非安全驱动程序能够与安全设备通信。此外,该多个指令可以使得处理器向安全驱动程序提供第二内核模式的一个或多个***服务。
下面的描述和附图详细地阐述了所要求保护的主题的某些说明性方面。然而,这些方面只是表示可以使用本发明的原理的各种方式中的一些方式,并且所要求保护的主题旨在包括所有这些方面和等效内容。当结合附图考虑下面的本创新的详细描述时,所要求保护的主题的其他优点和新颖特征将变得显而易见。
附图简述
通过参考附图可以更好地理解下列详细描述,附图包含所公开的主题的众多特征的具体示例。
图1是可实现安全驱动程序框架的计算***的示例的框图;
图2是解说可实现安全驱动程序框架的操作***的框图;
图3是对安全驱动程序框架的输入/输出***调用的框图;
图4是用于用安全驱动程序实现PCI配置空间保护的示例方法的过程流程图;
图5是用于使用安全驱动程序框架枚举安全设备的示例方法框架的过程流程图;
图6是可实现安全驱动程序框架的示例计算机可读存储介质的框图;以及
图7是解说用于实现安全驱动程序框架的方法的过程流程图。
详细描述
在本文描述的各实施例中,一种***可包括向设备驱动程序提供隔离执行环境的安全驱动程序框架(本文中也称为“SDF”)。在一些示例中,驱动程序可以在非安全或安全执行环境中执行。对于在非安全或安全执行环境中执行的驱动程序,处理器可具有两种不同模式:用户模式和内核模式。处理器的模式可以确定对可被执行的操作的类型和范围的约束。如此,取决于正在执行的驱动程序,处理器可以在这两种模式之间切换。
在本文描述的实施例中,安全驱动程序框架可包括设备驱动程序,这些设备驱动程序可与***中的安全设备安全地交互而没有恶意第三方代码窥探存储器映射输入/输出和直接存储器存取数据话务的风险。安全驱动程序框架中的安全驱动程序的完整度也被保护免遭对第三方代码破坏。如上文引用的,安全驱动程序框架包括安全用户模式和安全内核模式安全内核模式可为安全设备驱动程序提供阻止第三方代码篡改驱动程序逻辑的安全的隔离执行环境。安全内核模式还可保护***组件互连(本文也被称为“PCI”)配置空间免于任何恶意操纵。相应地,安全内核模式保护PCI配置空间和存储器映射的输入/输出免于归因于恶意代码的修改。安全内核模式还可为安全驱动程序启用直接存储器存取,而不将数据释放给恶意第三方代码。安全驱动程序框架可进一步使非安全驱动程序能够耦合到位于安全使用模式中的安全驱动程序。这使非安全驱动程序的访问敏感代码和数据的部分能够拆分到安全驱动程序。
本文描述的技术使***能够管理包括第一用户模式和第一内核模式的非安全操作***执行环境。该***还可管理包括第二用户模式和第二内核模式的安全执行环境。此外,该***可响应于来自第一内核模式中的非安全驱动程序的***调用,在安全执行环境的第二用户模式内执行安全驱动程序。例如,非安全驱动程序可请求诸如输入/输出操作以及来自安全驱动程序的其他操作等***调用。在一些实施例中,安全驱动程序使非安全驱动程序能够执行该***调用。此外,在一些示例中,该***可以向安全驱动程序提供第二内核模式的一个或多个***服务。例如,该***可以响应于安全驱动程序在第二内核模式中向安全内核传送请求来提供***服务。***服务(如在本文中引用的)可包括直接存储器存取操作、存储器映射输入/输出操作、中断操作,等等。本文描述的安全驱动程序框架因而提供使独立的硬件厂商能够编写尤其是与较高安全等级相对应的安全设备(诸如,生物测定设备)的驱动程序的基于虚拟化的安全性。
在一些示例中,管理程序可管理非安全执行环境和安全执行环境。此外,管理程序可以提供包括非安全执行环境和安全执行环境的虚拟分区。另外,非安全执行环境和安全执行环境可以利用虚拟分区的客物理地址空间。在一些示例中,管理程序可包括:Microsoft Hyper-CitrixVMWare等等。此外,一个或多个客操作***可在由管理程序提供的虚拟分区内执行。客操作***可包括微软OS、Linux/BSD/UNIX OS、OS等等。
作为预备事项,一些附图在被称为功能性、模块、特征、元素等的一个或多个结构化组件的上下文中描述了诸概念。附图中示出的各种组件可以用任何方式来实现,例如,通过软件、硬件(例如,分立的逻辑组件等)、固件等等,或这些实现的任意组合。在一个实施例中,各种组件可以反映对应的组件在实际实现中的使用。在其他实施例中,附图中所解说的任何单个组件可由许多实际组件来实现。对附图中的任何两个或更多个单独组件的描绘可以反映由单个实际组件所执行的不同功能。以下讨论的图1提供了关于可用于实现附图中所示的各功能的不同***的细节。
其他附图以流程图形式描述了诸概念。以此形式,某些操作被描述为构成按某一顺序执行的有区别的框。这些实现是示例性而非限制性的。本文中所描述的某些框可被分组在一起并在单个操作中执行,某些框可被分解成多个组件框,并且某些框可以按与本文中所解说的不同的次序来执行(包括以并行方式执行这些框)。流程图中示出的框可以通过软件、硬件、固件等等或这些实现的任何组合来实现。如本文中所使用的,硬件可包括计算机***、诸如专用集成电路(ASIC)之类的分立逻辑组件等,以及它们的任意组合。
关于术语,短语“被配置成”涵盖可构造任何种类的结构化组件以执行所标识的操作的任何方式。结构化组件可以被配置成使用软件、硬件、固件等或其任意组合来执行操作。例如,短语“被配置成”可以指用于实现相关联的功能性的硬件元件的逻辑电路结构。短语“被配置成”还可以指用于实现固件或软件的相关联的功能性的代码设计的硬件元件的逻辑电路结构术语“模块”指的是能够使用任何合适的硬件(例如,处理器等)、软件(例如,应用等)、固件或硬件软件和固件的任何组合来实现的结构元件。
术语“逻辑”涵盖用于执行任务的任何功能性。例如,流程图中所解说的每个操作对应于用于执行该操作的逻辑。操作可以使用软件、硬件、固件等或其任意组合来执行。
如本文中所使用的,术语“组件”、“***”、“客户机”等旨在指代计算机相关的实体,它们可以是硬件、(例如,执行中的)软件和/或固件、或其组合。例如,组件可以是在处理器上运行的进程、对象、可执行件、程序、功能、库、子例程、和/或计算机,或软件和硬件的组合。作为解说,在服务器上运行的应用和该服务器两者都可以是组件。一个或多个组件可留驻在进程内,并且组件可位于一个计算机上和/或分布在两个或更多个计算机之间。
此外,所要求保护的主题可使用标准编程和/或工程设计技术来被实现为方法、装置或制品以产生软件、固件、硬件或其任意组合来控制计算机,从而实现所公开的主题。如此处所使用的术语“制品”旨在涵盖可以从任何有形的计算机可读设备或介质访问的计算机程序。
计算机可读存储介质可以包括但不限于磁存储设备(例如,硬盘、软盘、以及磁带等等)、光盘(例如,压缩盘(CD)以及数字多功能盘(DVD)等等)、智能卡、以及闪存设备(例如,卡、棒以及键驱动器等等)。相反,计算机可读介质(即,非存储介质)一般可附加地包括通信介质,诸如用于无线信号之类的传输介质。
图1是可实现安全驱动程序框架的计算***的示例的框图。该示例***100包括计算设备102。计算设备102包括处理单元104、***存储器106以及***总线108。在一些示例中,计算设备102可以是游戏控制台、个人计算机(PC)、附件控制台、游戏控制器、以及其他计算设备。在一些示例中,计算设备102可以是云网络中的节点。
***总线108将包括但不仅限于***存储器106的***组件耦合到处理单元104。处理单元104可以是各种可用处理器中的任何一种。也可以使用双微处理器及其他多处理器体系结构作为处理单元104。
***总线108可以是若干类型的总线结构中的任意类型,包括存储器总线或存储器控制器、***设备总线或外部总线、和使用本领域的普通技术人员已知的任何各种各样的可用总线架构的本地总线。***存储器106包括计算机可读存储介质,计算机可读存储介质包括易失性存储器110和非易失性存储器112。
基本输入/输出***(BIOS)被存储在非易失性存储器112中,包含例如在启动期间在计算机102内的元件之间传输信息的基本例程。作为说明,而不是限制,非易失性存储器112可包括只读存储器(ROM)、可编程序只读存储器(PROM)、电可编程序只读存储器(EPROM)、电可擦可编程序只读存储器(EEPROM)或闪存。
易失性存储器110包括充当外部高速缓冲存储器的随机存取存储器(RAM)。作为说明而不是限制,RAM可以有许多形式,如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍数据速率SDRAM(DDR SDRAM)、增强的SDRAM(ESDRAM)、同步链路TMDRAM(SLDRAM)、直接型RAM(RDRAM),直接型动态RAM(DRDRAM)以及动态RAM(RDRAM)。
计算机102也包括其他计算机可读介质,诸如可移动/不可移动、易失性/非易失性计算机存储介质。图1示出例如盘存储114。盘存储114包括但不仅限于,诸如磁盘驱动器、软盘驱动器、磁带驱动器、Jaz驱动器、Zip驱动器、LS-210驱动器、闪存卡或记忆棒之类的设备。
另外,盘存储器114还可包括存储介质,分开地或与其他存储介质相结合,包括,但不仅限于,诸如紧致盘ROM设备(CD-ROM)之类的光盘驱动器、CD可记录驱动器(CD-R驱动器)、CD可重写驱动器(CD-RW驱动器)或数字多功能盘ROM驱动器(DVD-ROM)。为便于盘存储设备114连接到***总线108,通常使用诸如接口116之类的可移动或不可移动接口。
将理解,图1描述了在合适的操作环境100中在用户和所描述的基本计算机资源之间的中介的软件。这样的软件包括操作***118。可以存储在盘存储114上的操作***118用于控制和分配计算机102的资源。
***应用120利用由操作***118通过存储在***存储器106中或者存储在磁盘存储114上的程序模块122和程序数据124对资源的管理。可以理解,所公开的主题可以利用各种操作***或操作***的组合来实现。
用户通过输入设备126将命令或信息输入到计算机102中。输入设备126包括但不限于定点设备(诸如鼠标、跟踪球、触控笔等)、键盘、话筒、操纵杆、圆盘式卫星天线、扫描仪、TV调谐卡、数码相机、数码摄像机、网络摄像头等等。在一些示例中,输入设备可包括自然用户接口(NUI)设备。NUI指的是使得用户能够以“自然”方式与设备交互而无需由诸如鼠标、键盘、遥控等强加的人为约束的任何接口技术。在一些示例中,NUI设备包括依赖于语音识别、触摸和触笔识别、屏上及邻近屏的姿势识别、空中姿势、头部和眼部跟踪、说话和语音、视觉、触摸、姿势以及机器智能的设备。例如,NUI设备可包括触敏显示器、声音和语音识别、意图和目标理解、以及使用深度相机(诸如立体声相机***、红外相机***、RGB相机***以及这些的组合)的运动姿势检测。NUI设备还可包括使用加速度计或陀螺仪的运动姿势检测、面部识别、三维(3D)显示器、头部眼睛和凝视跟踪、沉浸式增强现实和虚拟现实***,所有的这些提供更自然的接口。NUI设备还可包括用于使用电场感测电极来感测脑部活动的技术。例如,NUI设备可以使用脑电图仪(EEG)和相关方法来检测脑部的电活动。输入设备126通过***总线108经由接口端口128连至处理单元104。接口端口128包括,例如,串行端口、并行端口、游戏端口以及通用串行总线(USB)。
输出设备130与输入设备126使用一些相同类型的端口。如此,例如,可以使用USB端口来向计算机102提供输入,以及从计算机102向输出设备130输出信息。
提供了输出适配器132,以示出有诸如监视器、扬声器以及打印机之类的一些输出设备130,还有可经由适配器访问的其他输出设备130。输出适配器132包括,作为说明而不是限制,在输出设备130和***总线108之间提供连接装置的视频卡和声卡。能够注意,其他设备和设备的***提供诸如远程计算设备134之类的输入和输出两种能力。
计算机102可以是使用到诸如(诸)远程计算设备134之类的一个或多个远程计算机的逻辑连接在联网环境中主存各种软件应用的服务器。(诸)远程计算设备134可以是配备有web浏览器、PC应用、移动电话应用等等的客户端***。远程计算设备134可以是个人计算机、服务器、路由器、网络PC、工作站、基于微处理器的电器、移动电话、对等设备或其他公共网络节点等等,并通常包括上文参考计算机102所描述的许多或全部元件。
远程计算设备134可通过网络接口136在逻辑上连接到计算机102,然后经由通信连接138(其可以是无线的)连接。网络接口136涵盖诸如局域网(LAN)和广域网(WAN)这样的无线通信网络。LAN技术包括光纤分布式数据接口(FDDI)、铜线分布式数据接口(CDDI)、以太网、令牌环网等等。WAN技术包括,但不限于,点对点链路、电路交换网,如综合业务数字网(ISDN)以及其变体,分组交换网络以及数字用户线(DSL)。
通信连接138指代被用来将网络接口136连接到总线108的硬件/软件。尽管为清楚起见通信连接138被示为在计算机102内部,但是,它也可以位于计算机102外部。连接到网络接口136的硬件/软件可包括,只作示例性目的,内部和外部技术,诸如,移动电话交换,调制解调器,包括常规电话分级调制解调器、电缆调制解调器和DSL调制解调器、ISDN适配器以及以太网网卡。
计算机102还可以包括无线电140。例如,无线电140可以是可以操作一个或多个无线频带的无线局域网无线电。例如,无线电140可在工业、科学以及媒体(ISM)无线电频带上在2.4GHz或5GHz上操作。在一些示例中,无线电140可以在任何合适的无线电频带上在任何无线电频率处操作。
计算机102包括一个或多个模块122,诸如非安全驱动程序142、安全过滤驱动程序144、总线驱动程序146、安全驱动程序148以及配置成使得能够实现安全驱动程序框架150的安全驱动程序框架150。在一些实施例中,非安全驱动程序142(本文也称为高级非安全驱动程序)可以是尝试经由***调用访问安全设备的独立的硬件厂商驱动程序。例如,非安全驱动程序142可尝试访问与安全设备相关联的存储器、寄存器等。非安全驱动程序142可以将***调用发送给安全过滤驱动程序144,它可检测定向到安全设备的***调用并经由远程过程调用将该***调用传送给安全驱动程序框架150。安全驱动程序框架150可以将该***调用传送给安全驱动程序148,它可将该***调用传递给安全设备。在一些实施例中,安全驱动程序框架150可以将来自在安全设备上执行该***调用的值经由安全过滤驱动程序144返回给非安全驱动程序142。在一些示例中,非安全驱动程序142可以将任何合适的信息传送给总线驱动程序146。在一些实施例中,计算***102可以动态地加载并链接非安全驱动程序142、安全过滤驱动程序144、总线驱动程序146、安全驱动程序148以及安全驱动程序框架150。
应当理解,图1的框图并不旨在指示计算***102要包括图1中所示的全部组件。相反,计算***102可包括更少的或图1中未示出的附加组件(例如,附加应用、附加模块、附加存储器设备、附加网络接口等)。此外,非安全驱动程序142、安全过滤驱动程序144、总线驱动程序146、安全驱动程序148以及安全驱动程序框架150的功能性中的任一者可以部分或完全实现在硬件和/或处理器104中。例如,该功能性可用专用集成电路来实现、以在处理器104中实现的逻辑来实现、或者以任何其他设备来实现。在一些实施例中,安全过滤驱动程序144的功能性可被包括在操作***118的输入/输出子***或即插即用子***中。此外,将数据或消息发送给安全驱动程序148的功能性可被实现在操作***或内核API中而非安全过滤驱动程序144中。另外,安全驱动程序框架150可以不是单独模块。相反,安全驱动程序框架150可被包括在操作***118或任何合适内核中。
图2是解说可实现安全驱动程序框架的操作***的框图。操作***200可由任何合适的计算设备(诸如图1的计算***102)来实现。
在一些实施例中,高级非安全驱动程序202(诸如任何合适的非安全功能驱动程序)可被加载以将输入/输出请求包(IRP)传送给安全过滤驱动程序204。在一些示例中,安全过滤驱动程序204可以是用于高级非安全驱动程序202的任何合适过滤驱动程序。在一些实施例中,高级非安全驱动程序202和安全过滤驱动程序204可驻留在非安全执行环境(VLT0)206的内核模式中。安全过滤驱动程序204可以生成对安全执行环境(VLT1)的用户模式中的安全驱动程序框架208的远程过程调用。安全驱动程序框架208可以将来自该远程过程调用的***调用传送给安全驱动程序212,它可访问安全设备。在一些实施例中,安全驱动程序框架208可以根据在安全设备上执行该***调用来返回响应或返回值。例如,安全驱动程序框架208可以将来自任何合适输入/输出***调用、存储器映射输入/输出请求、直接存储器存取请求等的结果返回给物理设备,诸如由总线驱动程序214枚举的一个设备。
在一些实施例中,与安全设备相关联的存储器映射输入/输出(MIMO)地址范围将密钥存储器块存储在页对准的区域中。对于提供对多个端点的访问的控制器(即,USB3控制器,以及其他),由驱动程序栈的非***分(即,高级非安全驱动程序202和安全过滤驱动程序204)安全地访问安全设备的MIMO地址范围中的一些是可能的。例如,指示先前已排队命令的完成的循环事件日志可由驱动程序栈的非***分访问。因此,在这一拆分式驱动程序模型中,非安全设备以可忽略的性能降级来操作是可能的,甚至在驱动程序栈的安全用户模式部分正在主动地对目的地为安全端点的请求进行完好性检查(sanity checking)时。
将理解,图2的框图并不旨在指示操作***200要包括图2中所示的全部组件。相反,操作***200可包括更少组件或图2中未解说的附加组件。例如,安全驱动程序212可作为驱动程序栈中的主服务或功能驱动程序来执行。
图3是解说对安全驱动程序框架的输入/输出***调用的框图的框图。图3的输入/输出***可以用任何合适的计算设备(诸如图1的计算***102)来实现。
在图3中,***包括非安全执行环境(VLT0)302和安全执行环境(VLT1)304。非安全执行环境302和安全执行环境304各自包括用户模式和内核模式。例如,非安全执行环境302可包括非安全用户模式306和非安全内核模式308,而安全执行环境304可包括安全用户模式310和安全内核模式312。
在一些实施例中,非安全驱动程序或功能驱动程序314可驻留在非安全内核模式308中。非安全驱动程序314可以将任何合适的输入/输出***调用传送给非安全内核模式308中的安全过滤驱动程序316。在一些示例中,非安全驱动程序314可以使用输入/输出控制(IOCTL)将任何合适的输入/输出***调用传送给非安全内核模式308中的安全过滤驱动程序316。安全过滤驱动程序316可以检测该输入/输出***调用对应于安全设备,且安全过滤驱动程序316可以将该输入/输出***调用传送给驻留在安全用户模式310中的安全驱动程序框架318。在一些示例中,安全过滤驱动程序316可以使用包括来自非安全驱动程序314的缓冲区内容的远程过程调用来将该输入/输出***调用传送给驻留在安全用户模式310中的安全驱动程序框架318。在一些实施例中,安全过滤驱动程序316可以使用远程过程调用来将任何合适的输入/输出请求包(本文也称为IRP)传送给安全驱动程序框架318。远程过程调用还可传送与即插即用驱动程序树、电源相关IRP等相对应的非输入/输出通信。安全驱动程序框架318可以将输入/输出调用传送给驻留在安全执行环境304的安全用户模式310中的安全驱动程序320。安全驱动程序可以将输入/输出***调用传送给驻留在安全内核模式312中的安全内核322。在一些实施例中,安全驱动程序框架318可经由安全执行环境304的第二内核模式312向第二用户模式310提供直接存储器存取库,该直接存储器存取库启用与安全设备相对应的缓冲区分配和直接读或写操作。
在一些实施例中,非安全驱动程序314可以管理传送给非安全执行环境302的中断。非安全驱动程序314可以使用远程过程调用经由安全过滤驱动程序316和安全驱动程序框架318来将与安全设备相对应的中断传送给安全驱动程序320。在一些实施例中,因为安全驱动程序320在用户模式中执行,所以安全驱动程序320可连接到被动级中断处理程序。例如,当在非安全内核模式308中接收到中断时,非安全内核可以调用由安全过滤驱动程序316提供的被动级中断处理程序。安全过滤驱动程序316可以在与安全驱动程序相对应的中断服务例程的上下文内执行远程过程。在一些实施例中,非安全驱动程序314还可连接同一行的任何中断请求级处的中断(本文也称为IRQL)。在一些实施例中,任何合适的例程(诸如IoReportInterruptInactive例程,以及其他)可被用来对中断服务例程进行掩膜。在一些示例中,可经由非安全操作***执行环境的非安全内核模式检测中断,且远程过程调用可被传送到安全执行环境的安全用户模式中的安全驱动程序,其中远程过程调用指示检测到的中断。
在一些实施例中,安全过滤驱动程序316是可寄存一些即插即用的窗口驱动程序框架回调以及功率过渡的内核模式驱动程序框架。在回调被调用时,安全过滤驱动程序316可以执行对安全驱动程序320的远程过程调用以指示该回调已发生。在一些示例中,安全驱动程序320可检测包括设备操作状态的启动序列、在设备处于低功率状态的情况下从此重启、在再平衡资源状态的情况下从此重启、设备到达状态、以及驱动程序加载状态。在一些实施例中,安全驱动程序320可以检测包括输入/输出停止例程、中断禁用例程、设备退出例程、以及设备释放硬件例程以及其他的移除序列。
图4是用于用安全驱动程序实现***组件接口(PCI)配置空间保护的示例方法的过程流程图。方法400可以用任何合适的计算设备(诸如图1的计算***102)来实现。在图4中,VTL0对应于非安全内核模式(诸如图3的302),而VTL1对应于安全内核模式(诸如图3的VTL1)。
在框402,安全内核322可被加载。在一些实施例中,加载安全内核322包括加载固定高级配置和电源接口(ACPI)表。在一些实施例中,安全内核322可以代替总线驱动程序(诸如PCI.sys)或者总线驱动程序结合非安全内核来管理PCI配置空间。在一些示例中,如果总线驱动程序尝试修改配置空间,则总线驱动程序可以将请求传送给硬件抽象层,它可将该请求转发给安全内核322。这阻止非安全驱动程序访问配置空间。在一些示例中,安全内核322可以拒绝恶意请求(诸如改变枚举安全设备的桥的总线号)。
在框404,安全内核322可以读取存储器映射配置空间基地址描述表(MCFG)和安全设备表。MCFG表可以提供启用存储器映射配置空间访问的信息。
在框406,安全内核可以映射安全执行环境的配置空间。在框408,安全内核322可以启动非安全内核中的非安全驱动程序。在框410,非安全驱动程序可以启动总线驱动程序,诸如PCI.sys。在框412,非安全驱动程序可以枚举任何合适数目的硬件设备。
在框414,安全内核322可以用读操作或写操作来访问与安全设备相对应的配置空间。在一些实施例中,访问配置空间是响应于来自非安全执行环境302的非安全内核的配置空间访问请求的。在一些示例中,安全内核322从访问PCI配置空间寄存器的任何尝试中检测配置空间访问请求。
在框416,非安全驱动程序可以将安全设备报告给即插即用设备(PNP)树。在一些实施例中,报告安全设备是响应于接收到来自安全内核322的指示对与安全设备相对应的配置空间的访问的结果的。
在一个实施例中,图4的过程流程图旨在指示方法400的各步骤将以特定的顺序被执行。替换地,在其他实施例中,方法400的各步骤可以以任何合适的顺序被执行,并且方法400的任何合适数量的步骤可被包括。此外,取决于具体的应用,任意数量的附加步骤可被包括在方法400内。在一些实施例中,非安全驱动程序可继续枚举附加安全设备。
图5是用于使用安全驱动程序框架枚举安全设备的示例方法框架的过程流程图。方法500可以用任何合适的计算设备(诸如图1的计算***102)来实现。在图5中,VTL0对应于非安全内核模式(诸如图3的302),而VTL1对应于安全内核模式(诸如图3的VTL1)。
在框502,非安全驱动程序可以将新硬件设备报告给即插即用设备(PNP)树。在框504,非安全驱动程序可以查询视频接口设备(VID)和人类接口设备(HID)。
在框506,非安全驱动程序可以定位与所报告的新硬件设备相对应的设置信息文件(INF)。INF文件可以启用针对该新硬件设备的驱动程序的安装。例如,INF文件可包括驱动程序名称和位置、驱动程序版本信息、以及注册表信息,以及其他。在一些实施例中,INF文件可包括非安全驱动程序的服务名称、用于加载安全过滤驱动程序或安全驱动程序的较低过滤驱动程序、指定安全驱动程序文件名的文件名的指令,等等。
在框508,非安全驱动程序可以加载过滤驱动程序,诸如安全过滤驱动程序。在一些实施例中,非安全驱动程序检测过滤驱动程序要基于存储在INF文件中的信息来加载。在框510,安全内核响应于来自过滤驱动程序的请求来创建安全设备节点。在一些实施例中,来自过滤驱动程序的创建安全设备节点的请求被使用远程过程调用传送给安全内核。
在框512,安全内核加载与在框510处创建的安全设备节点相对应的安全驱动程序。安全驱动程序启用对新硬件设备的直接存储器存取、与新硬件设备相关的输入/输出请求、以及对设备存储器的子集的修改,等等。
在框514,安全内核向非安全内核返回指示非安全驱动程序要被加载的值。在一些实施例中,在安全过滤驱动程序被附连到即插即用树时,安全过滤驱动程序可以搜索因设备而异的与来自INF文件的安全驱动程序文件名相对应的注册表键。安全过滤驱动程序随后可基于安全驱动程序的文件名来启动安全驱动程序主机。安全驱动程序主机可加载安全驱动程序并启动远程过程调用服务器。该过程在框516结束。
在一个实施例中,图5的过程流程图旨在指示方法500的各步骤将以特定的顺序被执行。替换地,在其他实施例中,方法500的各步骤可以以任何合适的顺序被执行,并且方法500的任何合适数量的步骤可被包括。此外,取决于具体的应用,任意数量的附加步骤可被包括在方法500内。
图6是可实现安全驱动程序框架的示例计算机可读存储介质的框图。有形的计算机可读存储介质600可由处理器602通过计算机总线604来访问。此外,有形的计算机可读存储介质600可包括引导处理器602执行当前方法的各步骤的代码。
此处讨论的各种软件组件可被存储在有形的计算机可读存储介质600上,如图6中所指示的。例如,有形的计算机可读存储器600可以是非安全驱动程序606、安全过滤驱动程序608、总线驱动程序610、安全驱动程序612、以及安全驱动程序框架614。在一些实施例中,非安全驱动程序606可以是尝试经由***调用访问安全设备的独立硬件厂商驱动程序。例如,非安全驱动程序606可尝试访问与安全设备相关联的存储器、寄存器等。非安全驱动程序606可以将***调用发送给安全过滤驱动程序608,它可检测定向到安全设备的***调用并经由远程过程调用将该***调用传送给安全驱动程序框架614。安全驱动程序框架614可以将该***调用传送给安全驱动程序612,它可将该***调用传递给安全设备。在一些实施例中,安全驱动程序框架614可以将来自在安全设备上执行该***调用的值经由安全过滤驱动程序608返回给非安全驱动程序606。在一些示例中,非安全驱动程序606可以将任何合适的信息传送给总线驱动程序610。
应当理解,取决于具体应用,图6中未示出的任意数量的附加的软件组件可以被包括在有形的计算机可读存储介质600内。
图7是解说用于实现安全驱动程序框架的方法的过程流程图。方法700可以用任何合适的计算设备(诸如图1的计算***102)来实现。
在框702,***可管理包括第一用户模式和第一内核模式的非安全操作***执行环境。例如,该***可包括任何数目的功能驱动程序、过滤驱动程序(诸如安全过滤驱动程序)以及总线驱动程序(诸如PCI.sys)。在一些实施例中,非安全操作***执行环境可包括操作***服务,诸如线程管理、虚拟存储器管理、以及文件访问。非安全操作***执行环境的操作***服务还可包括API(应用程序接口),诸如应用配置管理、GUI(图形用户界面)服务、以及用户界面组件,以及其他。
在框704,***可管理包括第二用户模式和第二内核模式的安全执行环境。例如,该***可包括安全执行环境的第二用户模式中的安全驱动程序框架和安全驱动程序。该***还可包括安全执行环境的第二内核模式中的安全内核。安全驱动程序框架可以使安全驱动程序能够与安全内核通信以执行与安全设备相对应的***调用。例如,安全设备可包括生物测定设备,以及其他。安全驱动程序可以启用安全驱动程序的枚举、PCI配置空间保护、以及要传送给安全设备的输入/输出操作,以及其他。
在框706,***可响应于来自第一内核模式或第一用户模式中的非安全驱动程序的***调用,在安全执行环境的第二用户模式内执行安全驱动程序。在一些实施例中,非安全驱动程序可以经由远程过程调用将***调用传送给安全驱动程序。在一些实施例中,安全驱动程序由非安全驱动程序启动,其充当过滤驱动程序。非安全驱动程序可通过向安全驱动程序框架提供到安全驱动程序的文件路径和远程过程调用服务器端点名以及其他来启动安全驱动程序。作为响应,安全驱动程序框架可以将安全驱动程序加载到存储器中并调用任何合适的驱动程序入口例程。安全驱动程序框架还可绑定安全驱动程序以使安全驱动程序能够执行进入安全驱动程序框架的功能调用。安全驱动程序框架还可启动远程过程调用服务器并接受来自非安全执行环境的第一内核模式的连接。
在框708,***可以向安全驱动程序提供第二内核模式的一个或多个***服务。在一些实施例中,***服务可包括对安全驱动程序的输入/输出请求、对安全驱动程序的直接存储器存取请求、对安全驱动程序的存储器映射输入/输出请求、与安全驱动程序相对应的中断,等等。在一些示例中,***服务包括使非安全驱动程序能够修改安全设备存储器的子集。在一个实施例中,***服务可以使非安全驱动程序能够与安全驱动程序通信。安全驱动程序可以经由可加载任何合适数目的库以使得能够向安全驱动程序提供***服务的安全驱动程序框架来访问安全内核模式。例如,安全驱动程序框架可以加载将安全驱动程序加载到存储器中的加载器库。安全驱动程序框架还可加载管理与安全驱动程序相对应的远程过程调用服务器的服务器库。例如,服务器库可以检测来自非安全执行环境的非安全内核模式中的过滤驱动程序的命令。该命令可指示如何控制与驱动程序栈相对应的驱动程序状态机。服务器库可以将与远程过程调用服务器管理和远程过程调用缓冲区的编排/解除编排相关的命令转换成功能回调。在一些示例中,服务器库可包括允许发起远程过程调用服务器并接受来自非安全内核模式的传入连接的功能。服务器库还可包括通过阻止任何新远程过程调用连接并结束传入连接来停止执行远程过程调用服务器的功能。
在一些实施例中,安全驱动程序框架还可包括包含用于将安全驱动程序框架绑定到安全驱动程序的逻辑的核库。例如,核库可向安全驱动程序框架提供与安全驱动程序相对应的分派表。在安全驱动程序被绑定到安全驱动程序框架时,安全驱动程序可以使用分派表来实现来自安全驱动程序框架的例程。例如,分派表可以使安全驱动程序能够实现创建安全驱动程序、删除与安全驱动程序相对应的对象等的例程。
在一个实施例中,图7的过程流程图旨在指示方法700的各步骤将以特定的顺序被执行。替换地,在其他实施例中,方法700的各步骤可以以任何合适的顺序被执行,并且方法700的任何合适数量的步骤可被包括。此外,取决于具体的应用,任意数量的附加步骤可被包括在方法700内。例如,该***可通过创建安全设备节点并且在安全执行环境的第二用户模式中加载安全驱动程序来枚举安全设备。另外,该***还可在安全执行环境的第二内核模式中加载高级配置和电源接口表,在安全执行环境的第二内核模式中解析存储器映射表;以及映射安全执行环境的配置空间。该***还可在非安全操作***执行环境的第一内核模式中启动所述非安全驱动程序,以及在第一内核模式中枚举安全设备。在一些实施例中,高级配置和电源接口表可包括存储器映射配置空间基地址描述表(MCFG)和安全设备表。
在一些实施例中,该***可从非安全操作***执行环境的第一内核模式向安全执行环境的第二内核模式传送配置空间访问请求,以及修改安全执行环境的安全配置空间。此外,该***可将安全配置空间的修改的结果传送给非安全操作***执行环境的第一内核模式。
在一些实施例中,该***可检测安全等级并基于安全等级加载非安全模块中的安全模块。例如,该***可检测使得能够在非安全内核模式或非安全用户模式中加载安全驱动程序和安全驱动程序框架的安全等级。
示例1
在一个示例实施例中,一种用于提供安全驱动程序框架的***可包括处理器,该处理器可管理包括第一用户模式和第一内核模式的非安全操作***执行环境以及管理包括第二用户模式和第二内核模式的安全执行环境。该处理器还可响应于来自第一内核模式或第一用户模式中的非安全驱动程序的***调用,在安全执行环境的第二用户模式内执行安全驱动程序。另外,该处理器可以向安全驱动程序提供第二内核模式的一个或多个***服务。
作为替换或补充,非安全驱动程序可以经由远程过程调用将***调用传送给安全驱动程序。作为替换或补充,该处理器可通过创建安全设备节点并且在安全执行环境的第二用户模式中加载安全驱动程序来枚举安全设备。作为替换或补充,该处理器可在安全执行环境的第二内核模式中加载高级配置和电源接口表;在安全执行环境的第二内核模式中解析存储器映射表;映射安全执行环境的配置空间;在非安全操作***执行环境的第一内核模式中启动所述非安全驱动程序;以及在第一内核模式中枚举安全设备。作为替换或补充,高级配置和电源接口表可包括存储器映射配置空间基地址描述表(MCFG)和安全设备表。作为替换或补充,该处理器可从非安全操作***执行环境的第一内核模式向安全执行环境的第二内核模式传送配置空间访问请求;修改安全执行环境的安全配置空间;以及将安全配置空间的修改的结果传送给非安全操作***执行环境的第一内核模式。作为替换或补充,该处理器可经由非安全操作***执行环境的第一内核模式检测中断;以及将远程过程调用传送给安全执行环境的第二用户模式中的安全驱动程序,其中远程过程调用指示检测到的中断。作为替换或补充,该处理器可经由安全执行环境的第二内核模式向第二用户模式提供直接存储器存取库,该直接存储器存取库启用与安全设备相对应的缓冲区分配和直接读或写操作。作为替换或补充,该处理器可使非安全驱动程序能够修改设备存储器的子集。作为替换或补充,安全驱动程序可使非安全驱动程序能够与安全设备通信。
示例2
在一个实施例中,一种用于提供安全驱动程序框架的方法可包括管理包含第一用户模式和第一内核模式的非安全操作***执行环境。该方法还可包括:管理包括第二用户模式和第二内核模式的安全执行环境;以及响应于来自第一内核模式或第一用户模式中非安全驱动程序的***调用,在安全执行环境的第二用户模式内执行安全驱动程序,其中安全驱动程序使非安全驱动程序能够与安全设备通信。此外,该方法可以向安全驱动程序提供第二内核模式的一个或多个***服务。
作为替换或补充,非安全驱动程序可以经由远程过程调用将***调用传送给安全驱动程序。作为替换或补充,该方法可包括通过创建安全设备节点并且在安全执行环境的第二用户模式中加载安全驱动程序来枚举安全设备。作为替换或补充,该方法可包括:在安全执行环境的第二内核模式中加载高级配置和电源接口表;在安全执行环境的第二内核模式中解析存储器映射表;映射安全执行环境的配置空间;在非安全操作***执行环境的第一内核模式中启动非安全驱动程序;以及在第一内核模式中枚举安全设备。作为替换或补充,高级配置和电源接口表可包括存储器映射配置空间基地址描述表(MCFG)和安全设备表。作为替换或补充,该方法可包括:从非安全操作***执行环境的第一内核模式向安全执行环境的第二内核模式传送配置空间访问请求;修改安全执行环境的安全配置空间;以及将安全配置空间的修改的结果传送给非安全操作***执行环境的第一内核模式。作为替换或补充,该方法可包括:经由非安全操作***执行环境的第一内核模式检测中断;以及将远程过程调用传送给安全执行环境的第二用户模式中的安全驱动程序,其中远程过程调用指示检测到的中断。作为替换或补充,该方法可包括经由安全执行环境的第二内核模式向第二用户模式提供直接存储器存取库,该直接存储器存取库启用与安全设备相对应的缓冲区分配和直接读或写操作。作为替换或补充,该方法可包括使非安全驱动程序能够修改设备存储器的子集。作为替换或补充,安全驱动程序可使非安全驱动程序能够与安全设备通信。
示例3
在另一实施例中,一种或多种用于实现安全驱动程序框架的计算机可读存储器可包括多个指令,该多个指令至少基于由处理器执行来使得该处理器:管理包括第一用户模式和第一内核模式的非安全操作***执行环境。该多个指令还可使处理器管理包括第二用户模式和第二内核模式的安全执行环境,以及响应于来自第一内核模式或第一用户模式中非安全驱动程序的***调用,在安全执行环境的第二用户模式内执行安全驱动程序,其中安全驱动程序使非安全驱动程序能够与安全设备通信。此外,该多个指令可以使得处理器向安全驱动程序提供第二内核模式的一个或多个***服务。
作为替换或补充,非安全驱动程序可以经由远程过程调用将***调用传送给安全驱动程序。作为替换或补充,该多个指令可以使处理器通过创建安全设备节点并且在安全执行环境的第二用户模式中加载安全驱动程序来枚举安全设备。作为替换或补充,该多个指令可以使处理器:在安全执行环境的第二内核模式中加载高级配置和电源接口表;在安全执行环境的第二内核模式中解析存储器映射表;映射安全执行环境的配置空间;在非安全操作***执行环境的第一内核模式中启动非安全驱动程序;以及在第一内核模式中枚举安全设备。作为替换或补充,高级配置和电源接口表可包括存储器映射配置空间基地址描述表(MCFG)和安全设备表。作为替换或补充,该多个指令可以使处理器:从非安全操作***执行环境的第一内核模式向安全执行环境的第二内核模式传送配置空间访问请求;修改安全执行环境的安全配置空间;以及将安全配置空间的修改的结果传送给非安全操作***执行环境的第一内核模式。作为替换或补充,该多个指令可以使处理器:经由非安全操作***执行环境的第一内核模式检测中断;以及将远程过程调用传送给安全执行环境的第二用户模式中的安全驱动程序,其中远程过程调用指示检测到的中断。作为替换或补充,该多个指令可使处理器经由安全执行环境的第二内核模式向第二用户模式提供直接存储器存取库,该直接存储器存取库启用与安全设备相对应的缓冲区分配和直接读或写操作。作为替换或补充,该多个指令可以使处理器使非安全驱动程序能够修改设备存储器的子集。作为替换或补充,安全驱动程序可使非安全驱动程序能够与安全设备通信。
特别地,对于由上述组件、设备、电路、***等执行的各种功能,除非另外指明,否则用于描述这些组件的术语(包括对“装置”的引用)旨在对应于执行所描述的执行本文中所要求保护的主题的示例性方面中所解说的功能的组件的指定功能(例如,功能上等效)的任何组件,即使这些组件在结构上不等效于所公开的结构。关于这一点,还应认识到,本创新包括具有用于执行所要求保护的主题的各种方法的动作和事件的计算机可执行指令的***以及计算机可读存储介质。
有多种实现所要求保护的主题的方式,例如,使应用和服务能使用在此描述的技术的适当的API、工具包、驱动程序代码、操作***、控件、独立或可下载的软件对象等等。所要求保护的主题还构想从API(或其他软件对象)的观点来看,以及从根据本文中所述技术操作的软件或硬件对象的用途。如此,本文中所描述的所要求保护的主题的各种实现可以具有完全以硬件、部分以硬件而部分以软件、以及以软件来实现的各种方面。
上述***已经参考若干组件之间的交互被描述。可领会到,这些***和组件可包括组件或指定的子组件、某些指定的组件或子组件、以及附加的组件,并且根据上述内容的各种置换和组合。子组件还可作为通信地耦合到其他组件的组件来实现,而不是被包括在父组件内(分层的)。
附加地,应当注意,一个或多个组件也可被组合到提供聚合功能性的单一组件中,或者也可被划分成若干单独的子组件,并且,可以提供诸如管理层之类的任何一个或多个中间层,以可通信地耦合到此类子组件,以便提供集成的功能性。本文中所描述的任何组件也可与本文中未专门描述但本领域技术人员一般已知的一个或多个其他组件进行交互。
另外,尽管可能已经相对于若干实现中的一个实现公开了所要求保护的主题的某一特征,但是如可被期望的及对任何给定或特定应用而言有利的那样,此种特征可与其他实现的一个或多个其他特征相组合。而且,就术语“包括”、“含有”、“具有”、“包含”、其变型以及其他类似单词在详细描述或权利要求书中的使用而言,这些术语旨在以类似于术语“包括”作为开放的过渡词的方式为包含性的而不排除任何附加或其他元素。
Claims (20)
1.一种用于提供安全驱动程序框架的***,包括:
处理器,所述处理器用于:
管理包括第一用户模式和第一内核模式的非安全操作***执行环境;
管理包括第二用户模式和第二内核模式的安全执行环境;
响应于来自所述第一内核模式或所述第一用户模式中的非安全驱动程序的***调用,所述安全执行环境:
创建与所报告的新硬件设备相对应的安全设备节点;
加载与所述安全设备节点相对应的安全驱动程序,所述安全驱动程序使得能够访问所述新硬件设备的配置空间以及在所述第二内核模式中加载高级配置和电源接口表;
在所述非安全操作***执行环境的所述第一内核模式中启动所述非安全驱动程序,以及在所述第一内核模式中枚举安全设备;以及
将所述第二内核模式的一个或多个***服务提供给所述安全驱动程序。
2.如权利要求1所述的***,其特征在于,所述非安全驱动程序经由远程过程调用将所述***调用传送给所述安全驱动程序。
3.如权利要求1所述的***,其特征在于,所述处理器用于:
在所述安全执行环境的第二内核模式中解析存储器映射表;
映射所述安全执行环境的所述配置空间。
4.如权利要求3所述的***,其特征在于,所述高级配置和电源接口表包括存储器映射配置空间基地址描述表(MCFG)和安全设备表。
5.如权利要求4所述的***,其特征在于,所述处理器用于:
从所述非安全操作***执行环境的第一内核模式向所述安全执行环境的第二内核模式传送配置空间访问请求;
修改所述安全执行环境的安全配置空间;以及
将所述安全配置空间的修改的结果传送给所述非安全操作***执行环境的第一内核模式。
6.如权利要求1所述的***,其特征在于,所述处理器用于:
经由所述非安全操作***执行环境的第一内核模式检测中断;以及
将远程过程调用传送给所述安全执行环境的第二用户模式中的安全驱动程序,其中所述远程过程调用指示检测到的中断。
7.如权利要求1所述的***,其特征在于,所述处理器用于经由所述安全执行环境的第二内核模式向所述第二用户模式提供直接存储器存取库,所述直接存储器存取库启用与安全设备相对应的缓冲区分配和直接读或写操作。
8.如权利要求1所述的***,其特征在于,所述处理器用于使所述非安全驱动程序能够修改设备存储器的子集。
9.如权利要求1所述的***,其特征在于,所述安全驱动程序使所述非安全驱动程序能够与安全设备通信。
10.一种用于提供安全驱动程序框架的方法,包括:
管理包括第一用户模式和第一内核模式的非安全操作***执行环境;
管理包括第二用户模式和第二内核模式的安全执行环境;
响应于来自所述第一内核模式或所述第一用户模式中非安全驱动程序的***调用,所述安全执行环境包括:
创建与所报告的新硬件设备相对应的安全设备节点;
加载与所述安全设备节点相对应的安全驱动程序,所述安全驱动程序使得能够访问所述新硬件设备的配置空间以及在所述第二内核模式中加载高级配置和电源接口表;
在所述非安全操作***执行环境的所述第一内核模式中启动所述非安全驱动程序,以及在所述第一内核模式中枚举安全设备;以及
将所述第二内核模式的一个或多个***服务提供给所述安全驱动程序。
11.如权利要求10所述的方法,其特征在于,所述非安全驱动程序经由远程过程调用将所述***调用传送给所述安全驱动程序。
12.如权利要求10所述的方法,其特征在于,包括:
在所述安全执行环境的第二内核模式中解析存储器映射表;
映射所述安全执行环境的所述配置空间。
13.如权利要求12所述的方法,其特征在于,所述高级配置和电源接口表包括存储器映射配置空间基地址描述表(MCFG)和安全设备表。
14.如权利要求13所述的方法,其特征在于,包括:
从非安全操作***执行环境的第一内核模式向安全执行环境的第二内核模式传送配置空间访问请求;
修改安全执行环境的安全配置空间;以及
将安全配置空间的修改的结果传送给非安全操作***执行环境的第一内核模式。
15.如权利要求10所述的方法,其特征在于,包括:
经由非安全操作***执行环境的第一内核模式检测中断;以及
将远程过程调用传送给安全执行环境的第二用户模式中的安全驱动程序,其中远程过程调用指示检测到的中断。
16.如权利要求10所述的方法,其特征在于,包括经由所述安全执行环境的第二内核模式向所述第二用户模式提供直接存储器存取库,所述直接存储器存取库启用与所述安全设备相对应的缓冲区分配和直接读或写操作。
17.如权利要求10所述的方法,其特征在于,包括检测安全等级以及基于所述安全等级在所述非安全操作***执行环境的所述第一用户模式或所述第一内核模式中加载所述安全驱动程序。
18.如权利要求10所述的方法,其特征在于,包括动态地加载并链接所述非安全驱动程序和所述安全驱动程序。
19.一种或多种包括多个指令的用于实现安全驱动程序框架的计算机可读存储设备,所述多个指令至少基于由处理器执行来使得所述处理器:
管理包括第一用户模式和第一内核模式的非安全操作***执行环境;
管理包括第二用户模式和第二内核模式的安全执行环境;
响应于来自所述第一内核模式或所述第一用户模式中非安全驱动程序的***调用,所述安全执行环境包括:
创建与所报告的新硬件设备相对应的安全设备节点;
加载与所述安全设备节点相对应的安全驱动程序,所述安全驱动程序使得能够访问所述新硬件设备的配置空间以及在所述第二内核模式中加载高级配置和电源接口表;
在所述非安全操作***执行环境的所述第一内核模式中启动所述非安全驱动程序,以及在所述第一内核模式中枚举安全设备;以及
将所述第二内核模式的一个或多个***服务提供给所述安全驱动程序。
20.如权利要求19所述的一个或多个计算机可读存储设备,其特征在于,所述多个指令使所述处理器:
从所述非安全操作***执行环境的第一内核模式向所述安全执行环境的第二内核模式传送配置空间访问请求;
修改所述安全执行环境的安全配置空间;以及
将所述安全配置空间的修改的结果传送给所述非安全操作***执行环境的第一内核模式。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/087,515 US10289853B2 (en) | 2016-03-31 | 2016-03-31 | Secure driver platform |
US15/087,515 | 2016-03-31 | ||
PCT/US2017/024397 WO2017172665A1 (en) | 2016-03-31 | 2017-03-28 | Secure driver platform |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108885572A CN108885572A (zh) | 2018-11-23 |
CN108885572B true CN108885572B (zh) | 2022-02-25 |
Family
ID=58549199
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780020883.4A Active CN108885572B (zh) | 2016-03-31 | 2017-03-28 | 安全驱动程序平台 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10289853B2 (zh) |
EP (1) | EP3436947B1 (zh) |
CN (1) | CN108885572B (zh) |
WO (1) | WO2017172665A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10339296B2 (en) * | 2014-07-22 | 2019-07-02 | Lg Electronics Inc. | Terminal apparatus and control method for terminal apparatus |
US10387681B2 (en) * | 2017-03-20 | 2019-08-20 | Huawei Technologies Co., Ltd. | Methods and apparatus for controlling access to secure computing resources |
US11520913B2 (en) * | 2018-05-11 | 2022-12-06 | International Business Machines Corporation | Secure execution support for A.I. systems (and other heterogeneous systems) |
LU101360B1 (en) * | 2019-08-26 | 2021-03-11 | Microsoft Technology Licensing Llc | Pinned physical memory supporting direct memory access for virtual memory backed containers |
KR20210125330A (ko) * | 2020-04-08 | 2021-10-18 | 삼성전자주식회사 | 보안 데이터 처리 방법 및 이를 지원하는 전자 장치 |
US20220374512A1 (en) * | 2021-05-21 | 2022-11-24 | Vmware, Inc. | Software-based hardware security module (hsm) for a virtualized computing environment |
US11914686B2 (en) | 2021-10-15 | 2024-02-27 | Pure Storage, Inc. | Storage node security statement management in a distributed storage cluster |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1704922A (zh) * | 2004-06-03 | 2005-12-07 | 英特尔公司 | 在多处理器***中启动安全内核 |
CN101297280A (zh) * | 2005-10-26 | 2008-10-29 | 微软公司 | 隔离扩展和设备驱动程序的配置 |
CN103778389A (zh) * | 2012-10-18 | 2014-05-07 | 美国博通公司 | 不可信的框架组件与安全操作***环境的整合 |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7181603B2 (en) * | 2002-03-12 | 2007-02-20 | Intel Corporation | Method of secure function loading |
US7007160B1 (en) * | 2002-12-03 | 2006-02-28 | Hewlett-Packard Development Company, L.P. | System and method for loading an advanced configuration and power interface (ACPI) original equipment manufacturer (OEM) description table |
US8607299B2 (en) * | 2004-04-27 | 2013-12-10 | Microsoft Corporation | Method and system for enforcing a security policy via a security virtual machine |
US7380119B2 (en) | 2004-04-29 | 2008-05-27 | International Business Machines Corporation | Method and system for virtualization of trusted platform modules |
US7603484B2 (en) | 2005-04-21 | 2009-10-13 | Microsoft Corporation | Protocol for communication with a user-mode device driver |
US8090919B2 (en) | 2007-12-31 | 2012-01-03 | Intel Corporation | System and method for high performance secure access to a trusted platform module on a hardware virtualization platform |
US7945789B2 (en) * | 2006-09-12 | 2011-05-17 | International Business Machines Corporation | System and method for securely restoring a program context from a shared memory |
WO2008077628A2 (en) | 2006-12-22 | 2008-07-03 | Virtuallogix Sa | System for enabling multiple execution environments to share a device |
US8578477B1 (en) * | 2007-03-28 | 2013-11-05 | Trend Micro Incorporated | Secure computer system integrity check |
US20110044451A1 (en) * | 2007-07-25 | 2011-02-24 | Panasonic Corporation | Information processing apparatus and falsification verification method |
US8185783B2 (en) | 2007-11-22 | 2012-05-22 | Microsoft Corporation | Split user-mode/kernel-mode device driver architecture |
US7730248B2 (en) * | 2007-12-13 | 2010-06-01 | Texas Instruments Incorporated | Interrupt morphing and configuration, circuits, systems and processes |
US8434098B2 (en) | 2008-02-07 | 2013-04-30 | Microsoft Corporation | Synchronizing split user-mode/kernel-mode device driver architecture |
US8286219B2 (en) * | 2008-02-16 | 2012-10-09 | Xencare Software Inc. | Safe and secure program execution framework |
US8127131B2 (en) * | 2008-04-10 | 2012-02-28 | Telefonaktiebolaget Lm Ericsson (Publ) | System and method for efficient security domain translation and data transfer |
US8819839B2 (en) * | 2008-05-24 | 2014-08-26 | Via Technologies, Inc. | Microprocessor having a secure execution mode with provisions for monitoring, indicating, and managing security levels |
US8347070B1 (en) * | 2008-10-30 | 2013-01-01 | Hewlett-Packard Development Company, L.P. | System and methods for sharing platform data with an ACPI module of a computer system |
KR101113820B1 (ko) * | 2010-03-16 | 2012-02-29 | 소프트캠프(주) | 응용프로그램의 파일 입출력 보안방법과 보안시스템 |
WO2011142996A2 (en) * | 2010-05-09 | 2011-11-17 | Madhav Chinta | Methods and systems for forcing an application to store data in a secure storage location |
US8769305B2 (en) | 2011-03-21 | 2014-07-01 | Moncana Corporation | Secure execution of unsecured apps on a device |
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 |
US8925055B2 (en) * | 2011-12-07 | 2014-12-30 | Telefonaktiebolaget Lm Ericsson (Publ) | Device using secure processing zone to establish trust for digital rights management |
US9208319B2 (en) | 2011-12-15 | 2015-12-08 | Microsoft Technology Licensing, Llc | Code base partitioning system |
US9916439B2 (en) | 2012-03-22 | 2018-03-13 | Microsoft Technology Licensing, Llc | Securing a computing environment against malicious entities |
US9256734B2 (en) * | 2012-04-27 | 2016-02-09 | Broadcom Corporation | Security controlled multi-processor system |
US9769123B2 (en) * | 2012-09-06 | 2017-09-19 | Intel Corporation | Mitigating unauthorized access to data traffic |
US8893222B2 (en) * | 2012-11-13 | 2014-11-18 | Auckland Uniservices Ltd. | Security system and method for the android operating system |
EP2973175B1 (en) * | 2013-03-13 | 2019-07-31 | Intel Corporation | Managing device driver cross ring accesses |
JP6067449B2 (ja) * | 2013-03-26 | 2017-01-25 | 株式会社東芝 | 情報処理装置、情報処理プログラム |
US8935746B2 (en) * | 2013-04-22 | 2015-01-13 | Oracle International Corporation | System with a trusted execution environment component executed on a secure element |
US9075985B2 (en) | 2013-05-31 | 2015-07-07 | Microsoft Technology Licensing, Llc | Restricted transmogrifying driver platform |
JP5911835B2 (ja) * | 2013-09-17 | 2016-04-27 | 株式会社東芝 | 情報処理装置 |
JP6129702B2 (ja) * | 2013-09-24 | 2017-05-17 | 株式会社東芝 | 情報処理装置、情報処理システム、プログラム |
KR102204247B1 (ko) * | 2014-02-19 | 2021-01-18 | 삼성전자 주식회사 | 전자 장치의 생체 정보 처리 방법 및 장치 |
US9628279B2 (en) | 2014-09-30 | 2017-04-18 | Microsoft Technology Licensing, Llc | Protecting application secrets from operating system attacks |
CN104318182B (zh) * | 2014-10-29 | 2017-09-12 | 中国科学院信息工程研究所 | 一种基于处理器安全扩展的智能终端隔离***及方法 |
CN105447406B (zh) * | 2015-11-10 | 2018-10-19 | 华为技术有限公司 | 一种用于访问存储空间的方法与装置 |
US10437523B2 (en) * | 2016-02-25 | 2019-10-08 | Red Hat Israel, Ltd. | Secure receive packet processing for network function virtualization applications |
-
2016
- 2016-03-31 US US15/087,515 patent/US10289853B2/en active Active
-
2017
- 2017-03-28 WO PCT/US2017/024397 patent/WO2017172665A1/en active Application Filing
- 2017-03-28 EP EP17718171.6A patent/EP3436947B1/en active Active
- 2017-03-28 CN CN201780020883.4A patent/CN108885572B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1704922A (zh) * | 2004-06-03 | 2005-12-07 | 英特尔公司 | 在多处理器***中启动安全内核 |
CN101297280A (zh) * | 2005-10-26 | 2008-10-29 | 微软公司 | 隔离扩展和设备驱动程序的配置 |
CN103778389A (zh) * | 2012-10-18 | 2014-05-07 | 美国博通公司 | 不可信的框架组件与安全操作***环境的整合 |
Non-Patent Citations (2)
Title |
---|
The pervasive trust foundation for security in next generation networks;Leszek Lilien;《NSPW "10: Proceedings of the 2010 New Security Paradigms Workshop》;20100930;全文 * |
USB存储设备安全监控***的设计与实现;段翼真;《计算机应用》;20100630;全文 * |
Also Published As
Publication number | Publication date |
---|---|
EP3436947B1 (en) | 2021-07-28 |
WO2017172665A1 (en) | 2017-10-05 |
US20170286701A1 (en) | 2017-10-05 |
EP3436947A1 (en) | 2019-02-06 |
CN108885572A (zh) | 2018-11-23 |
US10289853B2 (en) | 2019-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108885572B (zh) | 安全驱动程序平台 | |
US11321452B2 (en) | Execution environment virtualization method and apparatus and virtual execution environment access method and apparatus | |
US10235515B2 (en) | Method and apparatus for on-demand isolated I/O channels for secure applications | |
CN109918919B (zh) | 认证变量的管理 | |
CN108475217B (zh) | 用于审计虚拟机的***及方法 | |
US9141571B2 (en) | PCI express switch with logical device capability | |
KR101289581B1 (ko) | 데이터 저장 장치에 대한 원격 서버로부터의 안전한 스캔을 위한 방법 및 장치 | |
US8464260B2 (en) | Configuration and association of a supervisory virtual device function to a privileged entity | |
EP2867811B1 (en) | Method, system, and device for securely handling virtual function driver communications with a physical function driver | |
US8312534B2 (en) | System and method for securely clearing secret data that remain in a computer system memory | |
EP2711845B1 (en) | PCI express switch with logical device capability | |
US9830457B2 (en) | Unified extensible firmware interface (UEFI) credential-based access of hardware resources | |
US9417886B2 (en) | System and method for dynamically changing system behavior by modifying boot configuration data and registry entries | |
US20080222407A1 (en) | Monitoring Bootable Busses | |
CN107787495B (zh) | 安全输入/输出设备管理 | |
CN113302613A (zh) | 旁路保护 | |
KR101498965B1 (ko) | 가상화 기술을 이용한 내외부망 격리 시스템 및 방법 | |
US10409734B1 (en) | Systems and methods for controlling auxiliary device access to computing devices based on device functionality descriptors | |
EP4006758A1 (en) | Data storage apparatus with variable computer file system | |
US9411980B2 (en) | Preventing modifications to code or data based on the states of a master latch and one or more hardware latches in a hosting architecture | |
US10339082B2 (en) | Technologies for stable secure channel identifier mapping for static and dynamic devices | |
CN111666579B (zh) | 计算机设备及其访问控制方法和计算机可读介质 | |
US20190042797A1 (en) | Security Hardware Access Management | |
US20090222635A1 (en) | System and Method to Use Chipset Resources to Clear Sensitive Data from Computer System Memory |
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 |