首页> 中国专利> 利用存储控制器总线接口以确保存储设备和主机之间的数据传输安全

利用存储控制器总线接口以确保存储设备和主机之间的数据传输安全

摘要

本发明所公开的实施例提供了一种确保存储设备和主机之间的数据传输安全的系统。在操作过程中,系统从在主机上执行的设备驱动程序获取输入/输出(I/O)命令和与I/O命令相关联的加密上下文。接着,所述系统利用主机与存储设备之间的存储控制器总线接口将加密上下文应用于与I/O命令相关的数据,其中所述加密上下文使加密形式的数据能够在存储设备和主机之间传输。最后,系统利用存储控制器总线接口向存储设备发出I/O命令,其中I/O命令由存储设备处理。

著录项

  • 公开/公告号CN104160407A

    专利类型发明专利

  • 公开/公告日2014-11-19

    原文格式PDF

  • 申请/专利权人 苹果公司;

    申请/专利号CN201380011608.8

  • 发明设计人 C·J·萨考纳;

    申请日2013-02-27

  • 分类号G06F21/85(20060101);

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人边海梅

  • 地址 美国加利福尼亚

  • 入库时间 2023-12-17 03:45:10

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-04-05

    授权

    授权

  • 2014-12-17

    实质审查的生效 IPC(主分类):G06F21/85 申请日:20130227

    实质审查的生效

  • 2014-11-19

    公开

    公开

说明书

技术领域

本实施例涉及用于计算机系统的存储设备。更具体地,本实施例涉及 利用存储设备控制器总线接口来对存储设备和连接至所述存储设备上的主 机之间传输的数据进行加密和解密的技术。

背景技术

现代计算机系统通常包括具有处理器和存储器的母板,以及通过多种 接口连接至母板的一组外围组件。例如,串行高级技术附件(SATA)接口 可有利于存储设备(例如,硬盘驱动器(HDD)、光驱、固态硬盘驱动器 (SSD)、混合硬盘驱动器(HHD)等)和母板之间的数据传输,而外围 组件快速互联(PCIe)总线可允母板与多个集成和/或添加式外围组件之间 通信。

在计算机系统内此类数据传输可与多个安全问题和/或缺点相关联。具 体地,存储和/或传输未加密明文形式的数据的存储设备可容易受到窃听者 和/或攻击者未授权访问的攻击。例如,虽然所述数据在存储设备中静止和/ 或穿越HDD与计算机系统母板之间的接口(例如,SATA接口)进行传 输,HDD未加密数据的保密性可能会受到影响。另一方面,存储之前采用 HDD加密的数据可在静止的同时受到保护,但数据在HDD与母板之间进 行传输之前也可能是未加密的,因此容易受到HDD外部的未授权访问的攻 击。

为进一步确保数据安全,母板上的中央处理单元(CPU)可在通过接 口向存储设备传输数据之前对数据进行加密。因此,所述数据的保密性既 可在数据静止时得以保持,也可在数据通过接口传输的过程中保持。然 而,基于CPU的存储数据的加密可需要CPU顺序检索数据,复制数据,加 密复制的数据,然后将数据传输到存储设备,因此增加了计算开销和/或计 算机系统的功耗。

从而,我们需要一种用于降低与确保计算机系统中的数据存储和传输 安全相关联的功耗和/或计算开销的机构。

发明内容

本发明所公开的实施例提供一种确保在存储设备和主机之间的数据传 输安全的系统。在操作过程中,所述系统获取来自在主机上执行的设备驱 动程序的输入/输出(I/O)命令和与I/O命令相关联的加密上下文。接着, 所述系统利用主机与存储设备之间的存储控制器总线接口将加密上下文应 用于与I/O命令相关联的数据,其中加密上下文允许加密形式的数据在存储 设备和主机之间传输。最后,所述系统利用存储控制器总线接口向存储设 备发出I/O命令,其中I/O命令由存储设备处理。

在一些实施例中,在I/O命令由存储设备完成之后,所述系统还将已 完成的I/O命令通知给设备驱动程序。

在一些实施例中,从主机获取I/O命令和加密上下文包括:

(i)从设备驱动程序中获取与I/O命令与加密上下文相关联的一组存 储地址;以及

(ii)利用直接存储器访问(DMA)将I/O命令和加密上下文从主机上 的存储地址传输到存储控制器总线接口上的缓冲区。

在一些实施例中,所述系统根据I/O命令的类型来处理I/O命令。如果 I/O命令对应于写入命令,则系统在向存储设备发出I/O命令之前利用加密 上下文来加密所述数据。如果I/O命令对应于读取命令,则在I/O命令由存 储设备处理之后系统利用加密上下文来解密所述数据。

在一些实施例中,如果I/O命令对应于读取命令,则在将已完成的I/O 命令通知给设备驱动程序之前,系统还将解密的数据传输到主机上的一组 存储地址(例如,利用DMA)。

在一些实施例中,加密上下文与其中应用、文件和用户中的至少一者 相关联。换句话讲,加密上下文可允许实现主机内不同加密粒度的数据加 密,因此提供与常规的基于块的存储设备的加密和解密相比更大的数据安 全灵活性。

在一些实施例中,加密上下文包括一个或多个密匙和一个初始向量。 例如,密匙和/或初始向量可用于执行数据的AES-XTS加密。

附图说明

图1示出了根据本发明所公开的实施例的系统的示意图。

图2示出了根据本发明所公开的实施例的存储控制器总线接口。

图3示出了根据本发明所公开的实施例的示例性加密上下文。

图4示出了根据本发明所公开的实施例的流程图,该流程图举例示出 确保存储设备和主机之间数据传输安全的过程。

图5示出了根据本发明所公开的实施例的计算机系统。

在附图中,类似的附图标号是指相同的附图元件。

具体实施方式

给出以下描述是为了使本领域的任何技术人员能够做出并使用实施 例,并且以下描述是在特定应用及其要求的语境中提供的。对于本领域的 技术人员而言,对本发明所公开的实施例的各种修改将是显而易见的,并 且可以将本文定义的一般原理应用于其他实施例和应用而不脱离本公开的 实质和范围。因此,本发明不限于所示的实施例,但要符合根据本文公开 的原理和特征的最广泛范围。

该具体实施方式中描述的数据结构和代码通常存储在计算机可读存储 介质上,其可以是能够存储供计算机系统使用的代码和/或数据的任何设备 或介质。计算机可读存储介质包括但不限于易失性存储器、非易失性存储 器、磁性和光学存储设备,例如磁盘驱动器、磁带、CD(光盘)、DVD (数字多功能光盘或数字视频光盘)、或现在已知或以后开发的能够存储 代码和/或数据的其他介质。

可以将具体实施方式部分描述的方法和过程具体化为代码和/或数据, 该方法和过程可存储在如上所述的计算机可读存储介质中。当计算机系统 读取并执行计算机可读存储介质上存储的代码和/或数据时,计算机系统执 行具体化为数据结构和代码并存储于计算机可读存储介质内的方法和过 程。

此外,可以将本文描述的方法和过程包括在硬件模块或装置中。这些 模块或装置可以包括但不限于专用集成电路(ASIC)芯片、现场可编程门 阵列(FPGA)、在特定时间执行特定软件模块或一段代码的专用或共享处 理器、和/或其他现在已知或以后开发的可编程逻辑设备。当激活硬件模块 或装置时,它们执行包括在其中的方法和过程。

本发明所公开的实施例提供了一种用于在计算机系统内传输数据的方 法和系统。如图1所示,计算机系统可包括存储设备110,诸如硬盘驱动器 (HDD)、固态硬盘驱动器(SSD)和/或通过诸如串行ATA(SATA)接 口的存储控制器总线接口108连接至处理器(例如,中央处理单元 (CPU))和/或计算机系统内的存储器的混合硬盘驱动器(HHD)。

存储设备110可以存储用于在处理器上执行的应用程序102和/或文件 系统104的数据。为了访问和/或修改数据,应用程序102可对一个或多个 文件向文件系统104做出系统调用,并且文件系统104可向用于存储设备 110的设备驱动程序106发出与系统调用对应的输入/输出(I/O)请求。接 着,设备驱动程序106可构建I/O命令114,该命令包含逻辑块地址 (LBA)、多个块、和/或与一个或多个请求文件相关的其他信息,并通过 存储控制器总线接口108将I/O命令114传输到存储设备110。然后,存储 设备110可通过读取和/或写入I/O命令114中指定的块来处理I/O命令 114。

本领域的技术人员将会知道,当数据在存储设备110上静止和/或数据 通过存储控制器总线接口108传输的同时,计算机系统上的未加密数据可 容易受到未授权访问的攻击。为规避此类漏洞,数据可通过存储设备110 和/或在计算机系统的CPU上执行的进程进行加密。例如,存储设备110的 控制器可通过利用128位高级加密标准(AES)对数据进行加密来确保存 储设备110上的数据的安全。

然而,通过CPU和/或存储设备110来加密所述数据可具有多个缺点。 第一,由存储设备110加密的数据可被解密以用于通过存储控制器总线接 口108进行传输,因此容易受到攻击者的窥探。另一方面,在通过存储控 制器总线接口108传输到存储设备110之前,通过CPU来加密所述数据可 防止数据存储和传输过程中的未授权数据访问,但也可增加计算开销和/或 计算机系统的功耗。例如,通过将数据从第一个缓冲区复制到第二个缓冲 区,在第二缓冲区对数据加密,然后将数据传送给存储设备110,CPU可 以确保写入存储设备110过程中的数据安全。与数据复制和加密相关联的 另外的CPU周期可导致相应的写入延迟增加,以及执行写入操作时CPU消 耗的功率的增加。

在一个或多个实施例中,图1的系统通过在存储控制器总线接口108 上执行加密来降低存储设备110上的功耗和/或与基于CPU的数据加密相关 联的延迟。如上所述,应用程序102和/或计算机系统的另一个组件可以通 过对文件系统104做出系统调用来读取和/或写入存储设备110上的数据。

接着,文件系统104可向设备驱动程序106提供用于系统调用的加密 上下文112。在一个或多个实施例中,加密上下文112允许在存储设备110 和计算机系统之间传输加密形式的数据。例如,加密上下文112可包括一 个或多个密钥和一个初始向量,与AES-XTS数据加密一起使用。在向存储 设备110传输数据之前,加密上下文112可然后用于对计算机系统上的数 据进行加密,并且在从存储设备110接收到数据之后可用于对计算机系统 上的数据进行解密。下面相对于图3还详细地讨论了加密上下文。

在一个或多个实施例中,文件系统104包括对不同加密粒度的数据的 加密和解密进行管理的功能性。例如,文件系统104可维护一组加密上下 文,包括加密上下文112,以用于加密和解密存储设备110上的数据。文件 系统104还可将密钥和/或初始向量从每个加密分配至应用程序、文件和/或 用户。然后,与应用程序、文件和/或用户相关联的数据可使用对应的加密 上下文进行加密和解密。换句话讲,在确保计算机系统上的数据安全方 面,与存储设备(例如,存储设备110)和/或执行基于块的数据加密和解 密的控制器相比,文件系统104可提供更多的灵活性。

一旦加密上下文112可用,设备驱动程序106就可将加密上下文112 放到计算机系统上的存储器内,并向存储控制器总线接口108提供用于加 密上下文112的存储地址。设备驱动程序106还可基于系统调用在存储器 内构建I/O命令114,并向存储控制器总线接口108提供用于I/O命令114 的存储地址。然后,存储控制器总线接口108可使用直接存储器访问 (DMA)将I/O命令114和加密上下文112从计算机系统上的存储地址转 移至缓冲区116。一旦I/O命令114和加密上下文112位于缓冲区116中, 存储控制器总线接口108就可将加密上下文112应用于与I/O命令114相关 联的数据,并向存储设备110发出I/O命令114来由存储设备110进行处 理,如下相对于图2进一步详细地讨论。

图2示出了根据本发明所公开的实施例的存储控制器总线接口108。 如上所述,存储控制器总线接口108可用于在存储设备(例如,图1的存 储设备110)和主机(例如,计算机系统)之间传输数据。例如,存储控制 器总线接口108可对应于高级主机控制器接口(AHCI)控制器(例如,主 机总线适配器),该控制器将SATA HDD连接至主机上的包含CPU和存 储器的母板。作为另外一种选择,存储控制器总线接口108可以通过用于 SSD的集成NAND控制器来实现,该集成NAND控制器将SSD上的一组 NAND芯片连接至母板。

此外,存储控制器总线接口108可通过同时使加密形式的数据在存储 设备和主机之间进行存储和传输来防止数据的未授权访问。首先,存储控 制器总线接口108可利用诸如外围组件快速互连(PCIe)接口等存储器接 口202和DMA引擎204从在主机上执行的设备驱动程序(例如,图1的设 备驱动程序106)获取I/O命令(例如,图1的I/O命令114)和与I/O命令 相关联的加密上下文(例如,图1的加密上下文112)。例如,所述设备驱 动程序可向存储控制器总线接口108提供一组与I/O命令相关联的存储地址 和加密上下文,并且DMA引擎204可利用存储器接口202将I/O命令、相 关数据和/或加密上下文从主机上的存储地址传输到缓冲区116,而不直接 访问主机的CPU。

为了保护数据,存储控制器总线接口108内的加密装置206可将加密 上下文应用于数据,因此使得加密形式的数据能够在存储设备和主机之间 进行传输。例如,加密装置206可包括一组平行操作的加密引擎,每个加 密引擎利用来自加密上下文的一组密钥和初始向量可对一部分数据执行 AES-XTS加密。

存储控制器总线接口108内的命令处理装置208也可以处理I/O命 令,并通过存储设备接口210(例如,SATA接口)向存储设备发出I/O命 令,以由存储设备进行处理。例如,如果I/O命令对应于写入命令,在命令 处理装置208向存储设备发出I/O命令之前,加密装置206可以使用加密上 下文来加密所述数据。如果I/O命令对应于读取命令,在I/O命令由存储设 备处理并且数据通过存储设备接口210被接收之后,加密装置206可使用 加密上下文来解密所述数据。然后,存储控制器总线接口108可将解密的 数据传输到主机上的一组存储地址(例如,使用存储器接口202和DMA引 擎204),以供应用程序和/或组件用来请求数据。

通过将用于对存储器进行读写的最小块尺寸(例如,通过存储器接口 202)设定为用于在存储设备接口210上加密和解密传输的数据时采用的块 尺寸,可进一步有利于存储控制器总线接口108的操作。例如,存储设备 可对应于页面尺寸为4KB的SSD。因此,每个页面可对应于存储设备与存 储控制器总线接口108之间传输的数据的最小单元。继而,存储器接口202 上的I/O的最小块尺寸也可设置为4KB以简化数据的加密和解密(例如, 通过允许加密装置206仅对完整页面进行加密和解密)。

在I/O命令由存储设备完成之后,存储控制器总线接口108可将已完 成的I/O命令通知给设备驱动程序。例如,存储控制器总线接口108可以通 过存储器接口202将已完成的I/O命令的通知发送到设备驱动程序。然后, 存储控制器总线接口108可从设备驱动程序获取新的I/O命令和加密上下 文,并按上述方式处理新的I/O命令,直到向存储设备发出的所有未处理 I/O命令均已完成。

由于存储设备上的数据加密和解密是由存储控制器总线接口108提供 的,因此当数据在存储设备上处于静止时,以及数据在存储设备和主机之 间传输的过程中(例如,通过存储控制器总线接口108),数据都可以获得 保护以防止未授权访问。此外,存储控制器总线接口108可减少与基于 CPU的数据加密相关联的性能开销和/或功耗。例如,通过按顺序创建写入 命令,复制与写入命令相关联的数据,在副本上执行加密,然后将写入命 令和加密的数据传输到存储设备,CPU可以对存储设备执行写入操作。另 一方面,当其他I/O命令正在由CPU和/或存储设备创建、传输和/或处理的 同时,存储控制器总线接口108可对与写入命令相关联的数据进行加密而 不复制数据。相似地,将数据加密从CPU卸载至存储控制器总线接口108 可以使与加密相关联的功耗从10W以上减少到少于3W。

图3示出了根据本发明所公开的实施例的示例性加密上下文。加密上 下文可被保存在包含其他加密上下文的加密上下文表中,加密上下文表中 的条目可与存储控制器总线接口(例如,图1的存储控制器总线接口108) 的命令表(例如AHCI命令表)中的I/O命令相匹配。例如,加密上下文表 中的加密上下文可与命令表中对应的I/O命令共享一个索引。然后,加密上 下文和I/O命令可通过同时向加密上下文表和命令列表提供索引来进行检 索。

如图3所示,加密上下文可以由16个32位数据字构成。第一个数据 字(例如,“DW0”)可包含块尺寸302、一组保留位304和使能位306。 块尺寸302可规定每个待加密的块的长度,并可表示为4096字节的2x乘 数。例如,块尺寸302的值为0可表示每个块长4096字节,值1可表示每 个块长8192字节,并且值2可表示每个块长16384字节。在第一个数据字 的后半部分中,保留位304可清零,并且使能位306可用于启用或禁用与 加密上下文相关联的数据的加密和/或解密。例如,使能位306可以进行设 置来启用块加密,并可以清零来禁用块加密。

第二数据字(例如,“DW1”)可包含块计数308,其表示利用加密 上下文进行加密的块的数目。块计数308可以由DMA引擎(例如,图2的 DMA引擎204)使用,以确定需要从初始向量表中获取多少数据。此外, 第三数据字和第四数据字(例如,“DW2”和“DW3”)中的初始向量表 地址310和上级初始向量表地址312可以指定针对初始向量表的64位地 址。

最后,其余的加密上下文(例如,“DW4”到“DW15”)可能包括 两个128位密钥314-316和一个128位初始向量318,以用于AES-XTS数 据加密。因此,加密上下文可是结构化的,使得对于一个4KB大小的 I/O,只需要从加密上下文表获取加密上下文,而不需要利用初始向量表地 址310和上级初始向量表地址312来单独获取初始向量表。

图4示出了根据本发明所公开的实施例的流程图,该流程图示出了确 保存储设备和主机之间的数据传输安全的过程。在一个或多个实施例中, 可省略、重复和/或以不同顺序执行一个或多个步骤。因此,图4中所示步 骤的具体布置不应理解为是对实施例的范围的限制。

初始,I/O命令和与I/O命令相关联的加密上下文从主机(操作402) 上执行的设备驱动程序获取。为了获取I/O命令和加密上下文,与I/O命令 和加密上下文相关联的一组存储地址可从设备驱动程序获得。然后,DMA 可被用来将I/O命令和加密上下文从主机上的存储地址转移到主机与存储设 备之间的存储控制器总线接口上的缓冲区。

通过将加密上下文应用于与I/O命令相关联的数据以及向存储设备发 出I/O命令以由存储设备进行处理,存储控制器总线接口可对I/O命令进行 处理。加密上下文可允许在存储设备和主机之间传输加密形式的数据,因 此保护数据的保密性。此外,存储控制器总线接口可将加密上下文应用于 与应用程序、文件和/或用户相关联的数据。换句话讲,加密上下文可允许 主机内的数据按不同的加密粒度进行加密,因此在确保数据安全方面提供 与常规的基于块的存储设备加密和解密相比更大的灵活性。

此外,存储控制器总线接口可基于I/O命令的类型对I/O命令进行处理 (操作404)。如果I/O命令对应于读取命令,则存储控制器总线接口可以 向存储设备发出I/O命令(操作406),然后在从存储设备中检索到数据后 使用加密上下文来解密所述数据(操作408)。一旦数据被解密,存储控制 器总线接口可将解密的数据传输到主机上的一组存储地址(操作410)以供 主机使用。如果I/O命令对应于写入命令,则存储控制器总线接口可在向存 储设备发出I/O命令(操作414)之前,对需要写入的数据进行加密(操作 412)。最后,在I/O命令由存储设备和/或存储控制器总线接口完成之后, 将已完成的I/O命令通知给设备驱动程序(操作416)。

图5示出根据本发明所公开的实施例的计算机系统500。计算机系统 500可对应于包括处理器502、存储器504、存储设备506和/或存在于电子 计算设备中的其他组件的装置。处理器502可支持与计算机系统500中的 其他处理器一起进行并行处理和/或多线程操作。计算机系统500还可包括 输入/输出(I/O)设备,例如键盘508、鼠标510和显示器512。

计算机系统500可包括执行本发明实施例的各种组件的功能性。具体 地,计算机系统500可包括对计算机系统500上的硬件和软件资源的使用 进行协调的操作系统(未示出),以及为用户执行专门任务的一个或多个 应用程序。为了针对用户执行任务,应用程序可从操作系统获得计算机系 统500上的硬件资源的使用情况,并通过由操作系统提供的硬件和/或软件 框架与用户进行交互。

在一个或多个实施例中,计算机系统500提供了一种系统以确保存储 设备(例如,存储器506)与主机之间的数据传输安全。该系统可包括设备 驱动程序,以及主机与存储设备之间的存储控制器总线接口。设备驱动程 序可在主机上执行,并向存储控制器总线接口提供输入/输出(I/O)命令以 及与I/O命令相关联的加密上下文。存储控制器总线接口可将加密上下文应 用于与I/O命令相关联的数据,以使加密形式的数据能够在存储设备和主机 之间传输。存储控制器总线接口还可向存储设备发出I/O命令,以由存储设 备对I/O命令进行处理。最后,该系统也包括文件系统。在主机使用存储设 备期间,该文件系统创建并管理加密上下文。

此外,计算机系统500的一个或多个组件可被远程定位并经网络连接 到其他组件。本发明实施例的各部分(例如,设备驱动程序、存储控制器 总线接口、文件系统、存储设备等)也可位于实现实施例的分布式系统的 不同节点上。例如,本发明实施例可采用云计算系统来实现,该系统可在 远程存储设备和主机之间传输数据。

仅仅出于例示和描述的目的给出了各种实施例的前述描述。它们并非 旨在为详尽的,也不旨在将本发明限制为所公开的形式。因此,对于本领 域技术人员而言许多修改和变型将是显而易见的。另外,以上公开并非旨 在限制本发明。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号