从远程服务器对数据存储设备进行安全扫描的方法和装置与流程

文档序号:11865198阅读:371来源:国知局
从远程服务器对数据存储设备进行安全扫描的方法和装置与流程



背景技术:

位于诸如硬盘驱动器和固态驱动器的数据存储设备上的数据,例如,会遭受恶意的软件(恶意软件)的损坏和攻击。独立软件开发商(ISV)已经开发了防病毒和可管理性软件包来扫描数据存储设备以检测损坏的数据或恶意软件和/或提供数据的备份拷贝。一些存储、安全和可管理性ISV例如通过互联网实现诸如防病毒扫描、恶意软件清除、系统修复和系统重映像等的服务。这些基于互联网的服务通常仍然依赖于在本地计算设备上运行的本地软件代理。

然而,这些软件解决方案自身会遭受根工具包(rootkits)、间谍软件和以隐藏自身不被检测到为前提进行操作的其它类型的恶意软件的攻击。例如,当请求数据存储设备的扫描时,在存储堆栈中将其自身伪装成过滤器驱动程序的恶意软件能够将不可信的数据提供到防病毒或可管理性软件(由此对软件隐藏真实的损坏的数据)。换言之,由防病毒或可管理性软件扫描的数据可能不是真正位于数据存储设备上的数据。此外,一旦根工具包能够在平台上(例如,在主引导记录中)隐藏自己,那么根工具包可以观察所有用户活动、捕获用户数据、执行对用户动作的绕过和其它恶意活动。已经发现了根工具包、间谍软件和其它恶意软件对用户隐藏自身并且在计算机系统的后台中进行执行、收集敏感信息并显著地降低系统速度等日益增多的事件。

附图说明

在附图中以示例而非限制的方式说明了本文描述的系统、设备和方法。为了说明的简单和清楚,附图中说明的元件未必按照比例绘制。例如,为了清楚,可以相对于其他元件放大一些元件的尺寸。在以下附图中:

图1是被配置为从远程服务器提供对计算设备的数据存储设备的安全扫描的系统的一个实施例的简化框图;

图2是图1的计算设备和远程服务器的软件/固件环境的一个实施例的简化框图;

图3是用于使用图1的系统和图2的软件环境从远程服务器提供对数据存储设备的安全扫描的方法的一个实施例的简化流程图;

图4是图1的计算设备和远程服务器的软件/固件环境的另一实施例的简化框图;以及

图5是用于使用图1的系统和图4的软件环境从远程服务器提供对数据存储设备的安全扫描的方法的另一实施例的简化流程图。

具体实施方式

尽管本公开的概念容易具有各种修改和替代形式,但是在附图中以示例的方式示出了其具体的例示性实施例并且在本文中将会对其进行详细地描述。然而,应当理解,不意图将本公开的概念限制到所公开的特定形式,而是相反,意图覆盖落在由所附权利要求定义的本发明的精神和范围内的所有修改、等效形式和替代。

在以下的描述中,可以阐述诸如逻辑实现、操作码、用于指定操作数的方法、资源划分/共享/复制实现、系统部件的类型和相互关系以及逻辑划分/集成选择的许多具体细节,以便提供对本公开的更加透彻的理解。然而,本领域的技术人员将意识到,可以在没有这些具体细节的情况下实现本公开的实施例。在其他的实例中,没有详细地示出控制结构、门级电路和全部软件指令序列,以免模糊本公开。本领域的普通技术人员结合所包含的描述将能够在无需过度实验的情况下实现合适的功能。

说明书中提及的“一个实施例”、“实施例”、“说明性实施例”等指示所描述的实施例可以包括特定特征、结构或特性,但是每个实施例可以不必都包括该特定的特征、结构或特性。此外,这些短语未必都指代同一实施例。此外,当结合实施例描述了特定特征、结构或特性时,认为结合其他实施例实现这些特征、结构或特性是在本领域技术人员的知识范围内的,无论是否进行了明确描述。

可以将本公开的一些实施例实现为硬件、固件、软件或它们的任意组合。计算设备中实现的本公开的实施例可以包括部件之间的一个或多个基于总线的互连和/或部件之间的一个或多个点到点互连。还可以将本发明的实施例实现为可以由一个或多个处理器读取和执行的、存储在一个或多个有形的机器可读介质上的指令。有形的机器可读介质可以包括用于以机器(例如,计算设备)可读的形式存储或传输信息的任何有形机构。例如,有形的机器可读介质可以包括只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪速存储设备和其他有形介质。

本公开总体上涉及从远程服务器提供对数据存储设备的安全扫描的方法和装置。这些方法和装置确保所扫描的数据实际上是从数据存储设备检索的数据,而不是由一些恶意软件(例如,隐藏在计算设备上的根工具包)虚假地提供的数据。根据本公开,带外(out-of-band,OOB)代理用来实现远程服务器和数据存储设备之间的块读取/写入接口。OOB代理结合计算系统的主驱动程序(host driver),以信任的方式从数据存储设备检索数据并且将该数据提供给远程服务器。由于OOB代理是防篡改的,所以可以向远程服务器确保数据未被一些恶意软件伪造。在一些实施例中,OOB代理还可以检索由数据存储设备的加密引擎生成的认证元数据。可以由OOB代理或远程服务器使用该认证元数据来验证数据实际上是从数据存储设备检索的。首先,下文参考图1描述了系统100的各个硬件部件。其次,下文参考图2和图3描述了系统100的可能的软件/固件环境的一个实施例和用于提供安全扫描的相关联的方法300。最后,下文参考图4和图5描述了系统100的可能的软件/固件环境的另一实施例和用于提供安全扫描的相关联的方法500。

现在参考图1,被配置为从远程服务器104提供对数据存储设备120的安全扫描的说明性的系统100包括计算设备102、远程服务器104和将计算设备102通信地耦合到远程服务器104的网络106。尽管在图1中仅说明性地示出了一个计算设备102、一个远程服务器104和一个网络106,但是系统100可以包括类似架构或不类似架构的任意数量的计算设备102、远程服务器104和网络106。例如,计算设备102可以通过一个或多个网络106与多个远程服务器104进行通信,并且每一个远程服务器104可以通过一个或多个网络106与多个计算设备102进行通信。

计算设备102可以体现为能够执行本文描述的功能的任何类型的电子设备。以示例的方式,计算设备102可以体现为个人计算机、工作站、膝上型计算机、手持计算机、移动互联网设备、蜂窝电话、个人数据助理、电话设备、网络装置、虚拟化设备、存储控制器或其他基于计算机的设备。在图1中示出的说明性的实施例中,计算设备102包括带内处理器110、芯片组112、系统存储器114、通信电路116、一个或多个输入/输出设备118和数据存储设备120。在一些实施例中,上述部件的若干可以包含在计算设备102的母板上,而其他部件可以经由例如外围端口通信地耦合到母板上。此外,应当意识到,计算设备102可以包括在计算机和/或计算设备中通常出现的其他部件、子部件和设备,为了描述的清楚没有在图1中对其进行说明。

计算设备102的带内处理器110可以是能够执行软件/固件的任何类型的处理器,例如,微处理器、数字信号处理器、微控制器等。带内处理器110说明性地体现为具有一个处理器核心122的单核处理器。然而,在其他实施例中,带内处理器110可以体现为具有多个处理器核心122的多核处理器。另外,计算设备102可以包括具有一个或多个处理器核心122的额外的带内处理器110。带内处理器110通常负责执行软件堆栈,其可以包括位于计算设备102上的操作系统200和各种应用、程序、库和驱动程序202、204(如图2和4示出的和下文所描述的)。

计算设备102的芯片组112可以包括存储器控制器中心(MCH或“北桥”)、输入/输出控制器中心(ICH或“南桥”)和固件设备。芯片组112的固件设备可以体现为用于存储基本输入/输出(BIOS)数据和/或指令和/或其他信息(例如,在计算设备102的引导期间使用的BIOS驱动程序)的存储设备。在其他实施例中,可以使用具有其他配置的芯片组。例如,在一些实施例中,芯片组112可以体现为平台控制器中心(PCH)。在这种实施例中,存储器控制器中心(MCH)可以包含在带内处理器110中或以其他方式与带内处理器110相关联,并且带内处理器110可以与系统存储器114直接地进行通信(如由图1中的虚线所示出的)。在任何这些配置中,芯片组112还包括将在下文中更详细地进行描述的带外(OOB)处理器124。

带内处理器110经由多个信号路径通信地耦合到芯片组112。这些信号路径(和图1中说明的其他信号路径)可以体现为能够促成计算设备102的部件之间的通信的任何类型的信号路径。例如,信号路径可以体现为任意数量的导线、线缆、光引导、印刷电路板迹线、通路、总线、中间设备等。

计算设备102的系统存储器114还可以经由多个信号路径通信地耦合到芯片组112。系统存储器114可以体现为一个或多个存储设备或数据存储单元,包括例如,动态随机存取存储设备(DRAM)、同步动态随机存取存储设备(SDRAM)、双倍数据速率同步动态随机存取存储设备(DDR SDRAM)、闪速存储设备和/或其他易失性存储设备。另外,尽管在图1中仅说明了单个系统存储设备114,但是在其他实施例中,计算设备102可以包括另外的系统存储设备。组成由带内处理器110执行的软件堆栈的操作系统200、应用、程序、库和驱动程序202、204在执行期间可以位于系统存储器114中。此外,作为存储器管理操作的一部分,在系统存储器114和数据存储设备120之间可以交换存储在系统存储器114中的软件和数据。

计算设备102的通信电路116可以体现为用于使得能够通过网络106在计算设备102和远程服务器104之间进行通信的任意数量的设备和电路。网络106可以体现为任意类型的有线和/或无线网络,例如局域网、广域网、可公共使用的全球网络(例如,互联网)或其的任何组合。此外,网络106可以包括用于促成计算设备102和远程服务器104之间的通信的任意数量的附加设备,例如,路由器、交换机、中间计算机等。通信电路116可以包括用于促成通过网络106的有线和/或无线部分进行的通信的一个或多个有线和/或无线网络接口。通信电路116还经由多个信号路径通信地耦合到芯片组112,这允许带内处理器110和OOB处理器124二者独立地访问网络106。

计算设备102的输入/输出设备118可以包括任意数量的外围或接口设备。以说明性的示例的方式,输入/输出设备118可以包括计算设备102的显示器、鼠标、键盘和/或一个或多个外部扬声器。包括在输入/输出设备118中的特定设备可以依赖于例如计算设备102的预期用途。在一些实施例中,输入/输出设备118经由多个信号路径通信地耦合到芯片组112,这允许芯片组112和/或带内处理器110接收来自输入/输出设备118的输入和将输出发送到输入/输出设备118。

计算设备102还包括数据存储设备(DSD)120,其可以说明性地体现为被配置用于数据的短期或长期存储的任何类型的设备,例如,存储设备和电路、存储卡、硬盘驱动器、固态驱动器或其他数据存储设备。在一些实施例中,DSD 120可以包括即使在DSD 120没有通电时仍然能够保存所存储的数据的非易失性存储器。另外,尽管在图1中仅说明了单个DSD 120,但是在其他实施例中,计算设备102可以包括额外的数据存储设备。DSD 120还可以经由多个信号路径通信地耦合到芯片组112。在一些实施例中,DSD 120可以经由诸如外围部件快速互连(PCIe)接口或串行AT附件(SATA)接口之类的高速串行链路耦合到芯片组112。将意识到,可以考虑在DSD 120和芯片组112之间的其他类型的接口(例如,并行信号路径)。在图1的说明性的实施例中,DSD 120包括加密电路126,其为DSD 120提供基于硬件的加密引擎212(如图2中所示)。如下文进一步描述的,加密电路126(和与其一起实现的加密引擎212)允许DSD 120为从该DSD 120检索的数据本地地生成认证元数据。

芯片组112包括带外(OOB)处理器124,其与带内处理器110不同并且一般独立于带内处理器110进行操作。OOB处理器124可以体现为能够执行软件/固件的任何类型的处理器,例如微处理器、数字信号处理器、微控制器等,包括具有一个或多个处理器核心(未示出)的一个或多个处理器。尽管在图1中将OOB处理器124说明为集成在芯片组112中,但是在其他实施例中,OOB处理器124可以体现为布置在经由多个信号路径通信地耦合到芯片组112的扩展板上的一个或多个分离的集成电路。在一些实施例中,OOB处理器124可以经由多个信号路径独立地通信地耦合到计算设备102的各个部件上(例如,系统存储器114和通信电路116)。可替换地或附加地,OOB处理器124可以包括具有类似功能的内置部件,例如专用存储器和/或专用通信电路(未示出)。

OOB处理器124被配置为用于管理计算设备102的特定功能,而不考虑计算设备102的带内处理器110或操作系统200的操作状态。为了促成这些独立操作,可以为OOB处理器124提供到计算设备102的电能电路(未示出)的独立连接,以允许OOB处理器124即使在计算设备102的其他部件被断电或关闭时仍然能够保存电能。此外,可以为OOB处理器124提供经由通信电路116的一个或多个独立的网络接口,也为其提供到电能电路(未示出)的独立的连接,以允许通过网络106进行带外通信。换言之,OOB处理器124能够在运行在带内处理器110上的操作系统200之外与网络106上的设备(例如,远程服务器104)直接地进行通信。事实上,可以在用户不知道的情况下进行该通信。OOB处理器124还能够使得计算设备102返回到全功率操作状态,包括引导操作系统200。总之,无论带内处理器110被关闭、在等待状态下运行、正在被初始化或处于正常的操作中以及无论操作系统200在引导、运行、崩溃或其他,OOB处理器124可以基于到来的请求/命令智能地进行操作并通过网络106进行通信。

在一些说明性的实施例中,可以使用主动管理技术(AMT)、使用AMT的一部分或使用管理引擎(ME)来实现OOB处理器124,它们全部可从加利福尼亚州圣克拉拉的英特尔公司获得和/或在由英特尔公司销售的芯片组中。Intel嵌入式平台技术使得能够对每一个终端设备上的非易失性存储器中存储的硬件和软件信息进行带外访问,从而消除对正在运行的操作系统和在其他管理工具中出现的许多软件代理的需要。

远程服务器104可以体现为与计算设备102分离的任何类型的计算设备。以示例的方式,远程服务器104可以体现为个人计算机、工作站、膝上型计算机、手持计算机、移动互联网设备、蜂窝电话、个人数据助理、电话设备、网络装置、虚拟化设备、存储控制器或被配置为通过网络106与计算设备102进行通信的其他基于计算机的设备。在图1中示出的说明性的实施例中,远程服务器104包括处理器130、芯片组132、系统存储器134、通信电路136和一个或多个大容量存储设备138(其每一个在配置和操作方面可以分别类似于计算设备102的带内处理器110、芯片组112、系统存储器114、通信电路116和数据存储设备120)。应预期到,远程服务器104可以具有其他配置和/或包括没有在图1中示出的其他部件(例如,一个或多个输入/输出设备)。

现在参考图2,用简化框图示出了在系统100的计算设备102和远程服务器104上运行的软件/固件环境的一个说明性的实施例。计算设备102的软件堆栈包括操作系统(OS)200、高级主机控制器接口(AHCI)驱动程序202和文件系统以及其他过滤器驱动程序204(其中的每一个可以由带内处理器110执行和/或存储在系统存储器114中或DSD 120上)。OS 200位于用户空间(环3)中并且作为计算设备102的用户通常与之进行交互的更高层应用的宿主(host)。OS 200访问位于内核(环0)中的文件系统和包括AHCI驱动程序202的过滤器驱动程序204,以访问计算设备102的硬件部件(例如,DSD 120)。将意识到,在一些实施例中,还可以部分地或完全地以固件或硬件的形式实现这些软件模块的任何模块,包括OS 200和/或驱动程序202、204。

在图2中将AHCI驱动程序202示出为与文件系统和其它过滤器驱动程序204是分离的,因为AHCI驱动程序202被配置为与DSD 120的接口模块210进行交互以执行各种读取/写入操作。具体地说,AHCI驱动程序202包括可以由AHCI驱动程序202发送到DSD接口模块210的存储命令的库206。库206中的这些存储命令是使DSD 120执行一些动作的请求和/或指令。例如,在DSD 120是经由PCIe接口连接的NAND闪速存储设备的情况下,AHCI驱动程序202可以包含使得DSD 120来执行各种读取/写入操作的存储命令的NAND命令库206。如另一示例,在DSD 120是经由SATA接口连接的固态驱动器的情况下,AHCI驱动程序202可以包含使得DSD 120来执行各种读取/写入操作的存储命令的ATA命令库206。因此,当(例如,由OS 200)请求AHCI驱动程序202检索位于DSD 120中的某个逻辑块地址(LBA)处的数据时,AHCI驱动程序202从库206选择合适的存储命令并且将该存储命令发送到DSD 120。尽管在图2中示出的说明性的实施例使用AHCI驱动程序202来实现对DSD接口模块210的接口,但是可以预期,对于AHCI驱动程序202,可以附加地或可替换地使用能够访问DSD 120(即,具有合适的存储命令库206)的计算设备102的任何主驱动程序。例如,在一些实施例中,可以使用可从加利福尼亚州圣克拉拉的英特尔公司获得的快速存储技术(RST)驱动程序。

图2的计算设备102还包括若干固件模块,例如可以在DSD 120上执行的DSD接口模块210以及可以在OOB处理器124上执行的OOB代理214。尽管示出为分别地位于DSD 120固件和芯片组112固件中,但是可以意识到,附加地或可替换地,DSD接口模块210和OOB代理214可以每一个体现为一个或多个硬件和/或软件模块。如上文所描述的,DSD接口模块210通常被配置为从AHCI驱动程序202(或其他主驱动程序)接收存储命令,以及控制DSD 120来执行各种动作(例如,读取/写入操作)。

DSD接口模块210包括基于硬件的加密引擎212,其可以包括由DSD 120的加密电路126执行的固件或软件。在一些实施例中,DSD接口模块210可以被配置为响应于来自AHCI驱动程序202的特定存储命令(或存储命令的特定类别或种类)利用加密引擎212来为从DSD 120检索的数据生成认证元数据。在其他实施例中,加密引擎212可以响应于DSD接口模块210接收的任何存储命令来为从DSD 120检索的数据生成认证元数据。以说明性的示例的方式,加密引擎212可以体现在符合Opal安全子系统类别标准(由可信计算组发布)的固件中。

由DSD 120的加密引擎212生成的认证元数据可以采取可用来验证相关联数据的可靠性的任何形式。在一些实施例中,加密引擎212可以通过将使用共享秘密密钥的带密钥散列函数应用到从DSD 120检索的数据,来生成要包括在认证元数据中的消息认证代码(MAC)。然后,也拥有所述共享秘密密钥的任何其他部件、设备或用户可以将带密钥散列函数重新应用到数据并且将输出与包括在认证元数据中的MAC进行比较。附加地或可替换地,加密引擎212可以生成要包括在认证元数据中的计数器值(例如,表明数据从DSD 120检索出来的时间的时间戳或其他标记)。然后,任何其他部件、设备或用户可以比较数据预期从DSD 120中被检索的时间,以保护不受重放(replay)攻击(涉及过期数据)。在其他实施例中,加密引擎212可以通过将使用私钥的签名算法应用到从DSD 120检索的数据来生成要包括在认证元数据中的数字签名。然后,拥有对应于该私钥的公钥的任何其他部件、设备或用户可以通过使用认证元数据来应用签名验证算法。在其他的实施例中,加密引擎212可以利用任意数量的加密散列函数来生成认证元数据。

OOB代理214被说明为在图2的实施例中的OOB处理器124上执行的固件模块(尽管在其他实施例中,OOB代理214可以体现在硬件、固件、软件或它们的任意组合中),其中,所述OOB代理214为远程服务器104提供经由主驱动程序到DSD 120的访问。由于上文描述的OOB处理器124的属性,OOB代理214通常对远程服务器104总是可用的并且针对恶意软件是防篡改的。OOB代理214包括远程块读取/写入模块216、OOB通信模块218和(在一些实施例中的)验证模块220。OOB通信模块218允许OOB代理214控制计算设备102的通信电路116的各个部分以通过网络106发送和接收去往和来自远程服务器104的各种网络消息。远程块读取/写入模块216为远程服务器提供接口来请求在DSD 120上的特定LBA处的数据。当经由OOB通信模块218接收到从DSD 120读取数据的请求时,远程块读取/写入模块216将请求转发到在带内处理器110上执行的AHCI驱动程序202。可以使用主机嵌入式控制器接口(HECI)或在OOB代理214和OS 200之间共享的任何其他存储器信道来发送在远程块读取/写入模块216和AHCI驱动程序202之间的该消息。AHCI驱动程序202还可以包括应用程序编程接口(API)208,其被配置为从OOB代理214接收这种消息并且指示AHCI 202从库206中选择和发送合适的存储命令。下文将更详细地描述包括在OOB代理214的一些实施例中的验证模块220。

远程服务器104的软件堆栈包括OS(未示出)、一个或多个ISV应用222、远程块读取/写入驱动程序224以及文件系统和其它过滤器驱动程序226(其中的每一个可以由处理器130执行和/或存储在系统存储器132中或大容量存储设备138上)。如图2中所说明的,远程服务器104还包括DSD 120的一个或多个盘映像228(存储在大容量存储设备138上)。类似于计算设备102,远程服务器104的OS(位于用户空间中)作为更高层应用的宿主,例如ISV应用222。一个或多个ISV应用222可以体现为要求DSD 120的安全扫描的存储、安全和/或可管理性应用。一个或多个ISV应用222可以(经由OS)访问(位于内核中的)文件系统和过滤器驱动程序226,以访问远程服务器104的硬件部件(例如,大容量存储设备138)。例如,ISV应用222可以经由文件系统和其它过滤器驱动程序226来访问存储在大容量存储设备138上的盘映像228。将意识到,在一些实施例中,还可以部分地或完全地将这些软件模块中的任意模块(包括OS、ISV应用222和/或驱动程序226)实现在固件或硬件中。

远程块读取/写入驱动程序224允许远程服务器104来远程地挂载(mount)计算设备102的DSD 120。换言之,远程块读取/写入驱动程序224结合在计算设备102上执行的OOB代理214,允许远程服务器104来映射并随后访问DSD 120,如同DSD 120是远程服务器104的本地存储设备一样。一旦由远程服务器104挂载了DSD 120,那么远程块读取/写入驱动程序224可以将读取在DSD 120上的特定LBA处的数据的请求发送到OOB代理(如上文所描述的,然后将该请求转发给AHCI驱动程序202)。一旦返回了所请求的数据,那么OOB代理214可以使用OOB通信模块218将该数据(与任何相关联的认证元数据一起)传输到远程服务器104的远程块读取/写入驱动程序224。然后远程块读取/写入驱动程序224可以将所请求的数据提供给ISV应用222或将该数据存储为盘映像228的一部分。

远程块读取/写入驱动程序224还包括用于使用相关联的认证元数据来验证从DSD 120检索的数据的可靠性的验证模块230。如上文所描述的,在认证元数据包括MAC的情况下,验证模块230可以将散列函数重新应用到数据(假设验证模块230拥有由加密引擎212使用的共享秘密密钥)并且将输出与包括在认证元数据中的MAC进行比较。附加地或可替换地,验证模块230可以将认证元数据中的计数器值与数据预期从DSD 120中被检索的时间进行比较,以保护不受重放攻击。在认证元数据包括数字签名的情况下,验证模块230可以通过使用认证元数据来应用签名验证算法(假设验证模块230拥有对应于由加密引擎212所使用的私钥的公钥)。在一些实施例中,可以包括在OOB代理214中的验证模块220可以在将数据传输到远程服务器104之前,以大体相同的方式进行操作以验证从DSD 120检索的数据的可靠性。在使用验证模块220的实施例中,可以从远程块读取/写入驱动程序224省略验证模块230,并且OOB代理214可以放弃将认证元数据传输到远程服务器104(因为已经验证了数据的可靠性)。

在OOB处理器124上运行的OOB代理214和在DSD 120上运行的加密引擎212的若干特征允许系统100从远程服务器104提供对计算设备102的DSD 120的安全扫描。为此,如图3中所说明的,计算设备102可以被配置为执行用于提供通过网络106的安全扫描的方法300。大体上,方法300涉及从DSD 120检索认证元数据,该认证元数据可以由OOB代理214或远程服务器104的远程块读取/写入驱动程序224使用来验证从DSD 120检索的数据的可靠性。可以由例如OOB处理器124、带内处理器110和DSD 120的硬件,并结合可以与系统100的其他部件进行交互的计算设备102的其他部件,来执行方法300。方法300可以允许为了任何目的从远程服务器104对DSD 120进行安全扫描,包括但不限于:防病毒扫描、恶意软件清除、系统修复、系统重映像和安全文件/文件夹访问。

方法300从框203开始,其中,OOB代理214建立由远程服务器104对DSD 120的远程挂载。可以由计算设备102或远程服务器104发起对DSD 120的远程挂载。在2009年5月29日提交的并且分配给本申请的受让人的序列号为NO.12/475,216的当前未决的美国专利申请中公开了可以在方法300的框302中使用的用于使用远程服务器远程地挂载数据存储设备的一个过程。如其中所描述的,远程块读取/写入驱动程序224可以请求并且OOB代理214可以传输DSD 120的主引导记录(MBR)、一个或多个引导扇区和/或一个或多个主文件表(MFT)。该数据(其可以作为盘映像228的一部分存储在大容量存储设备138上)可以允许远程块读取/写入驱动程序224来映射DSD 120。只要由一个或多个ISV应用222向DSD 120请求数据,那么远程块读取/写入驱动程序224就可以使用DSD 120的MBR、引导扇区和/或MFT来确定LBA以向OOB代理214进行请求。

在方法300的框304中,OOB代理214通过网络106接收来自远程块读取/写入驱动程序224的块读取请求。OOB代理214使用OOB通信模块218接收该请求。应当意识到,由于OOB处理器124和通信电路116维护的持久的电能和带外通信信道,即使在计算设备102的带内处理器110没有执行OS 200或处于降低的功率状态或被关闭时,OOB代理214仍然可用于从远程服务器104接收这种请求。尽管说明性的实施例描述了远程服务器104和OOB处理器124之间(经由通信电路116、136)的直接通信,但是还可以考虑到,远程服务器104可以经由一个或多个基于主机的信道(例如,也涉及带内处理器110和OS 200)与OOB处理器124进行通信。

在框306中,OOB代理214将通过使用远程块读取/写入模块216来将接收到的块读取请求转发到在计算设备102的带内处理器110上执行的合适的主驱动程序。当带内处理器110正在执行OS 200(即,已经引导了OS 200)时,如上文所描述的,OOB代理214可以将块读取请求转发到AHCI驱动程序202。然而,当带内处理器110处于降低的功率状态或被关闭,或OS 200还没有被引导时,远程块读取/写入模块216可以替代地将块读取请求引导到计算设备102的BIOS驱动程序(如果必须提供对BIOS驱动程序的访问,那么可以由OOB处理器124为计算设备102供电)。在该实施例中,OOB代理214可以为远程服务器104提供对DSD 120的访问,而不考虑计算设备102的OS 200的状态。

在框308中,AHCI驱动程序202(或其他主驱动程序)将认证存储命令发送到DSD接口模块210。当它从OOB代理214接收转发的块读取请求时,AHCI驱动程序202从库206中选择合适的IOTCL消息。在图2和3的说明性的实施例中,只要AHCI驱动程序经由OOB API 208接收读取请求,它选择和发送将使得DSD 120生成认证元数据以及检索所请求的数据的存储命令。因此,来自于远程块读取/写入驱动程序224的所有请求将使得生成认证元数据,其可以用来验证从DSD 120检索的数据的可靠性。

在框310,响应于从AHCI 202接收到认证存储命令,DSD接口模块210从DSD 120检索所请求的数据并且使用加密引擎212生成认证元数据。认证元数据可以包括上文描述的任何类型,例如MAC、计数器值、数字签名和加密散列值等。在框312中,DSD接口模块210将从DSD 120检索的数据和由DSD 120生成的认证元数据返回到AHCI 202。在框314,AHCI 202将数据和认证元数据转发到OOB代理214的远程块读取/写入模块216。

在使用验证模块220的实施例中,方法300进行到可选框316,其中,OOB代理214使用由DSD 120生成的认证元数据验证从DSD 120检索的数据。可以使用上文描述的任何方法来执行对从DSD 120检索的数据的可靠性的该验证。在可选框316之后(或在缺少验证模块220的实施例中,在框314之后),方法300进行到框318,其中,OOB代理214使用OOB通信模块218通过网络106将数据和认证元数据传输到远程块读取/写入驱动程序224。

在框320,远程块读取/写入驱动程序224可以使用验证模块230来通过使用认证元数据对数据进行验证(尽管在使用可选框316的实施例中可以跳过框320)。可以使用上文描述的任何方法来执行对从DSD 120检索的数据的可靠性的该验证。一旦验证了数据,远程块读取/写入驱动程序224可以将请求的数据提供给ISV应用222和/或将该数据存储为盘映像228的一部分。当远程块读取/写入驱动程序224将另一个块读取请求通过网络106传输到OOB代理214时,方法300可以返回到框304(不需要在每次循环中重复框302)。

现在参考图4,用简化框图示出了在系统100的计算设备102和远程服务器104上运行的软件/固件环境的另一说明性的实施例。图4的实施例包括使用相似标号进行标记的与图2类似的许多部件和模块。除了下文所解释的,这些部件和模块的操作可以与上文参考图2所描述的操作大体上类似。例如,DSD接口模块210、OOB代理214和远程服务器104的软件堆栈(包括OS、一个或多个ISV应用222、远程块读取/写入驱动程序224和文件系统以及其他过滤器驱动程序226)的操作大体上类似,除了这些模块不包括加密引擎212、验证模块220或验证模块230之外。在该说明性的实施例中,可以确保从DSD 120检索的数据的可靠性,而不需要认证元数据。

如图4中所示,计算设备102的软件堆栈包括OS 200、AHCI驱动程序202以及文件系统和其它过滤器驱动程序204(它们中的每一个可以由带内处理器110执行和/或被存储在系统存储器114中或DSD 120上)。此外,软件堆栈还包括在带内处理器110上执行的安全容器400。安全容器400可以体现为与OS 200和相关联的驱动程序202、204分离地进行维护、并且对这些软件模块而言是不可直接访问的安全存储器和/或执行空间(由此,维护安全容器400的安全)。在图4的说明性的实施例中,在安全容器中执行的主驱动程序,而非AHCI驱动程序202,直接地负责访问DSD 120。OS 200仍然通过AHCI驱动程序202间接地访问DSD 120,但是AHCI驱动程序202依赖于芯片组固件中的一个或多个固件钩子(hook)402来将请求传递到在安全容器400中执行的驱动程序。

在安全容器400中执行的驱动程序包括存储命令库206和OBB API 208(类似于在图2的说明性实施例中的AHCI驱动程序202的那些部件)。在该实施例中,OOB代理214为远程服务器104提供经由在安全容器400中执行的主驱动程序对DSD 120的访问。远程块读取/写入模块216和OOB通信模块218大体上如上文所描述的那样运行,除了远程块读取/写入模块216将块读取请求转发到在安全容器400中执行的驱动程序的OOB API 208(而非AHCI 202)。OOB API 208被配置为从OOB代理214接收消息并且指示驱动程序从库206中选择和发送合适的存储命令。然后将从DSD 120检索的数据返回到驱动程序并且直接地转发到OOB代理214。因为在该数据传送期间可以避免OS 200和相关联的驱动程序202、204,所以消除了该安全忧虑并且不需要由DSD 120生成认证元数据。

在带内处理器110上运行的安全容器400和在OOB处理器124上运行的OOB代理214的若干特征允许系统100从远程服务器104提供对计算设备102的安全扫描。为此,如图5中所说明的,计算设备102可以被配置为执行用于提供通过网络106的安全扫描的方法500。大体上,方法500涉及OOB代理214与在安全容器400中执行的主驱动程序的交互以确保从DSD 120检索的数据的可靠性。可以由例如OOB处理器124、带内处理器110和DSD 120的硬件,并结合可以与系统100的其他部件进行交互的计算设备102的其他部件,来执行方法500。方法500还可以允许为了任何目的从远程服务器104对DSD 120进行安全扫描,包括但不限于:防病毒扫描、恶意软件清除、系统修复、系统重映像和安全文件/文件夹访问。

方法500从框502开始,其中OOB代理214建立远程服务器104对DSD 120的远程挂载。在框504,OOB代理214通过网络106从远程块读取/写入驱动程序224接收块读取请求。可以大体上如上文参考图3的框302和304所描述的那样执行建立DSD 120的远程挂载和接收块读取请求。

在框506,OOB代理214将使用远程块读取/写入模块216将接收到的块读取请求转发到在计算设备102的带内处理器110上的安全容器400中执行的主驱动程序。在框508,在安全容器400中执行的驱动程序将存储命令发送到DSD接口模块210。当它从OOB代理214接收转发的块读取请求时,在安全容器400中执行的驱动程序从库206中选择合适的IOTCL消息。

在框510,响应于从在安全容器400中执行的驱动程序接收存储命令,DSD接口模块210从DSD 120检索所请求的数据。在框512,DSD接口模块210将从DSD 120检索的数据返回到驱动程序。在框514,在安全容器400中执行的驱动程序将数据和认证元数据转发到OOB代理214的远程块读取/写入模块216。方法300在框516结束,其中,OOB代理214使用OOB通信模块218通过网络106将数据传输到远程块读取/写入驱动程序224。当远程块读取/写入驱动程序224通过网络106将另一个块读取请求传输到OOB代理214时,方法500可以返回到框504(不需要在每一个循环期间重复框502)。

尽管在附图和上述描述中详细地说明和描述了本公开,但是这些说明和描述应当认为是例示性的而非限制性的特征,应当理解,仅示出和描述了说明性的实施例,并且期望保护落在本公开和所附权利要求的精神内的所有改变和修改。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1