CN108885572A - 安全驱动程序平台 - Google Patents

安全驱动程序平台 Download PDF

Info

Publication number
CN108885572A
CN108885572A CN201780020883.4A CN201780020883A CN108885572A CN 108885572 A CN108885572 A CN 108885572A CN 201780020883 A CN201780020883 A CN 201780020883A CN 108885572 A CN108885572 A CN 108885572A
Authority
CN
China
Prior art keywords
driver
security
mode
kernel mode
safe
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
CN201780020883.4A
Other languages
English (en)
Other versions
CN108885572B (zh
Inventor
M·金
K·拉杰夫
J·S·沃勒格姆斯
A·H·达肯
P·威尔兰
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 CN108885572A publication Critical patent/CN108885572A/zh
Application granted granted Critical
Publication of CN108885572B publication Critical patent/CN108885572B/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/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control 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/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/74Protecting 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing 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/2113Multi-level security, e.g. mandatory access control

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 (15)

1.一种用于提供安全驱动程序框架的系统,包括:
处理器,所述处理器用于:
管理包括第一用户模式和第一内核模式的非安全操作系统执行环境;
管理包括第二用户模式和第二内核模式的安全执行环境;
响应于来自所述第一内核模式或所述第一用户模式中的非安全驱动程序的系统调用,在所述安全执行环境的第二用户模式内执行安全驱动程序;以及
将所述第二内核模式的一个或多个系统服务提供给所述安全驱动程序。
2.如权利要求1所述的系统,其特征在于,所述非安全驱动程序经由远程过程调用将所述系统调用传送给所述安全驱动程序。
3.如权利要求1所述的系统,其特征在于,所述处理器用于通过创建安全设备节点并且在所述安全执行环境的第二用户模式中加载所述安全驱动程序来枚举安全设备。
4.如权利要求1所述的系统,其特征在于,所述处理器用于:
在所述安全执行环境的第二内核模式中加载高级配置和电源接口表;
在所述安全执行环境的第二内核模式中解析存储器映射表;
映射所述安全执行环境的配置空间;
在所述非安全操作系统执行环境的第一内核模式中启动所述非安全驱动程序;以及
在所述第一内核模式中枚举安全设备。
5.如权利要求4所述的系统,其特征在于,所述高级配置和电源接口表包括存储器映射配置空间基地址描述表(MCFG)和安全设备表。
6.如权利要求5所述的系统,其特征在于,所述处理器用于:
从所述非安全操作系统执行环境的第一内核模式向所述安全执行环境的第二内核模式传送配置空间访问请求;
修改所述安全执行环境的安全配置空间;以及
将所述安全配置空间的修改的结果传送给所述非安全操作系统执行环境的第一内核模式。
7.如权利要求1所述的系统,其特征在于,所述处理器用于:
经由所述非安全操作系统执行环境的第一内核模式检测中断;以及
将远程过程调用传送给所述安全执行环境的第二用户模式中的安全驱动程序,其中所述远程过程调用指示检测到的中断。
8.如权利要求1所述的系统,其特征在于,所述处理器用于经由所述安全执行环境的第二内核模式向所述第二用户模式提供直接存储器存取库,所述直接存储器存取库启用与安全设备相对应的缓冲区分配和直接读或写操作。
9.如权利要求1所述的系统,其特征在于,所述处理器用于使所述非安全驱动程序能够修改设备存储器的子集。
10.如权利要求1所述的系统,其特征在于,所述安全驱动程序使所述非安全驱动程序能够与安全设备通信。
11.一种用于提供安全驱动程序框架的方法,包括:
管理包括第一用户模式和第一内核模式的非安全操作系统执行环境;
管理包括第二用户模式和第二内核模式的安全执行环境;
响应于来自所述第一内核模式或所述第一用户模式中非安全驱动程序的系统调用,在所述安全执行环境的第二用户模式内执行安全驱动程序,其中所述安全驱动程序使所述非安全驱动程序能够与安全设备通信;以及
将所述第二内核模式的一个或多个系统服务提供给所述安全驱动程序。
12.如权利要求11所述的方法,其特征在于,所述非安全驱动程序经由远程过程调用将所述系统调用传送给所述安全驱动程序。
13.如权利要求11所述的方法,其特征在于,包括通过创建安全设备节点并且在所述安全执行环境的第二用户模式中加载所述安全驱动程序来枚举所述安全设备。
14.如权利要求11所述的方法,其特征在于,包括:
在所述安全执行环境的第二内核模式中加载高级配置和电源接口表;
在所述安全执行环境的第二内核模式中解析存储器映射表;
映射所述安全执行环境的配置空间;
在所述非安全操作系统执行环境的第一内核模式中启动所述非安全驱动程序;以及
在所述第一内核模式中枚举安全设备。
15.一种或多种包括多个指令的用于实现安全驱动程序框架的计算机可读存储器,所述多个指令至少基于由处理器执行来使得所述处理器:
管理包括第一用户模式和第一内核模式的非安全操作系统执行环境;
管理包括第二用户模式和第二内核模式的安全执行环境;
响应于来自所述第一内核模式或所述第一用户模式中非安全驱动程序的系统调用,在所述安全执行环境的第二用户模式内执行安全驱动程序,其中所述安全驱动程序使所述非安全驱动程序能够与安全设备通信;以及
将所述第二内核模式的一个或多个系统服务提供给所述安全驱动程序。
CN201780020883.4A 2016-03-31 2017-03-28 安全驱动程序平台 Active CN108885572B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/087,515 2016-03-31
US15/087,515 US10289853B2 (en) 2016-03-31 2016-03-31 Secure driver platform
PCT/US2017/024397 WO2017172665A1 (en) 2016-03-31 2017-03-28 Secure driver platform

Publications (2)

Publication Number Publication Date
CN108885572A true CN108885572A (zh) 2018-11-23
CN108885572B 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 (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016013693A1 (ko) * 2014-07-22 2016-01-28 엘지전자 주식회사 단말 장치 및 단말 장치의 제어 방법
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 삼성전자주식회사 보안 데이터 처리 방법 및 이를 지원하는 전자 장치
US11914686B2 (en) 2021-10-15 2024-02-27 Pure Storage, Inc. Storage node security statement management in a distributed storage cluster

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1704922A (zh) * 2004-06-03 2005-12-07 英特尔公司 在多处理器系统中启动安全内核
CN101297280A (zh) * 2005-10-26 2008-10-29 微软公司 隔离扩展和设备驱动程序的配置
CN102194078A (zh) * 2010-03-16 2011-09-21 软件营地株式会社 用于应用程式档案输入及输出的安全性的方法及系统
US20110277013A1 (en) * 2010-05-09 2011-11-10 Chinta Madhav Methods and Systems for Forcing an Application to Store Data in a Secure Storage Location
US8099596B1 (en) * 2011-06-30 2012-01-17 Kaspersky Lab Zao System and method for malware protection using virtualization
US20120331550A1 (en) * 2011-06-24 2012-12-27 Microsoft Corporation Trusted language runtime on a mobile platform
CN103778389A (zh) * 2012-10-18 2014-05-07 美国博通公司 不可信的框架组件与安全操作系统环境的整合
CN104318182A (zh) * 2014-10-29 2015-01-28 中国科学院信息工程研究所 一种基于处理器安全扩展的智能终端隔离系统及方法
CN105447406A (zh) * 2015-11-10 2016-03-30 华为技术有限公司 一种用于访问存储空间的方法与装置

Family Cites Families (33)

* Cited by examiner, † Cited by third party
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
WO2009013825A1 (ja) * 2007-07-25 2009-01-29 Panasonic Corporation 情報処理装置、及び改竄検証方法
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
US8769305B2 (en) 2011-03-21 2014-07-01 Moncana Corporation Secure execution of unsecured apps on a device
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
WO2014142817A1 (en) * 2013-03-13 2014-09-18 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
US10437523B2 (en) * 2016-02-25 2019-10-08 Red Hat Israel, Ltd. Secure receive packet processing for network function virtualization applications

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1704922A (zh) * 2004-06-03 2005-12-07 英特尔公司 在多处理器系统中启动安全内核
CN101297280A (zh) * 2005-10-26 2008-10-29 微软公司 隔离扩展和设备驱动程序的配置
CN102194078A (zh) * 2010-03-16 2011-09-21 软件营地株式会社 用于应用程式档案输入及输出的安全性的方法及系统
US20110277013A1 (en) * 2010-05-09 2011-11-10 Chinta Madhav Methods and Systems for Forcing an Application to Store Data in a Secure Storage Location
US20120331550A1 (en) * 2011-06-24 2012-12-27 Microsoft Corporation 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
CN103778389A (zh) * 2012-10-18 2014-05-07 美国博通公司 不可信的框架组件与安全操作系统环境的整合
CN104318182A (zh) * 2014-10-29 2015-01-28 中国科学院信息工程研究所 一种基于处理器安全扩展的智能终端隔离系统及方法
CN105447406A (zh) * 2015-11-10 2016-03-30 华为技术有限公司 一种用于访问存储空间的方法与装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
LESZEK LILIEN: "The pervasive trust foundation for security in next generation networks", 《NSPW "10: PROCEEDINGS OF THE 2010 NEW SECURITY PARADIGMS WORKSHOP》 *
段翼真: "USB存储设备安全监控系统的设计与实现", 《计算机应用》 *

Also Published As

Publication number Publication date
EP3436947B1 (en) 2021-07-28
EP3436947A1 (en) 2019-02-06
CN108885572B (zh) 2022-02-25
WO2017172665A1 (en) 2017-10-05
US10289853B2 (en) 2019-05-14
US20170286701A1 (en) 2017-10-05

Similar Documents

Publication Publication Date Title
CN108885572A (zh) 安全驱动程序平台
US11321452B2 (en) Execution environment virtualization method and apparatus and virtual execution environment access method and apparatus
TWI526931B (zh) 用於虛擬機器之繼承產品啟動
CN104704448B (zh) 本地和远程计算环境之间的反向无缝集成
US11303719B2 (en) System, method and computer program product for capturing touch events for a virtual mobile device platform
US7725305B2 (en) Partial virtualization on computing device
CN102971706B (zh) 将信息从安全虚拟机重定向到不安全虚拟机
US9380456B1 (en) System, method and computer program product for dynamically switching operating systems in a virtual mobile device platform
US10459772B2 (en) System, method and computer program product for capturing touch events for a virtual mobile device platform
US10042661B1 (en) Method for creation of application containers inside OS containers
CN104662512B (zh) 操作系统
CN110032413B (zh) 一种桌面虚拟化方法、相关设备及计算机存储介质
US20210240489A1 (en) Firmware update patch
CN108475217A (zh) 用于审计虚拟机的系统及方法
CN108628658A (zh) 一种容器的许可证管理方法及装置
CN103870749B (zh) 一种实现虚拟机系统的安全监控系统及方法
US20180060588A1 (en) Operating system
JP2013534001A (ja) 仮想化を用いた動画コンテンツの保護
Dall et al. The design, implementation, and evaluation of cells: A virtual smartphone architecture
CN102096782B (zh) 一种基于虚拟机的移动介质网银安全认证方法
WO2021033868A1 (ko) 가변 컴퓨터 파일시스템이 적용된 데이터 저장장치
WO2023016151A1 (zh) Linux系统安全应用的软件框架及创建方法
CN108241801A (zh) 处理系统调用的方法和装置
CN104008327B (zh) 一种安全输入方法和系统
CN100464276C (zh) 配置和保护用户软硬件配置信息的方法和系统

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