CN107851163A - 用于i/o数据的完整性、防重放和真实性保证的技术 - Google Patents
用于i/o数据的完整性、防重放和真实性保证的技术 Download PDFInfo
- Publication number
- CN107851163A CN107851163A CN201680042659.0A CN201680042659A CN107851163A CN 107851163 A CN107851163 A CN 107851163A CN 201680042659 A CN201680042659 A CN 201680042659A CN 107851163 A CN107851163 A CN 107851163A
- Authority
- CN
- China
- Prior art keywords
- data
- authenticating tag
- computing device
- frame
- metadata
- 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
Links
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/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- 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/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/031—Protect user input by software means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Bioethics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
用于I/O数据的真实性保证的技术包括具有加密引擎和一个或多个I/O控制器的计算设备。所述计算设备的元数据生成器对I/O数据执行经认证的加密操作以生成经加密的I/O数据和认证标签。所述元数据生成器将所述经加密的I/O数据存储在DMA缓冲器中,并且将所述认证标签存储在认证标签队列中。元数据消费器对来自所述DMA缓冲器的所述经加密的I/O数据进行解密,并且使用来自所述认证标签队列的所述认证标签来判定所述经加密的I/O数据是否是真实的。对于输入,所述元数据生成器可以被实施为所述加密引擎,并且所述元数据消费器可以被实施为可信软件组件。对于输出,所述元数据生成器可以被实施为所述可信软件组件,并且所述元数据消费器可以被实施为所述加密引擎。描述并要求保护了其他实施例。
Description
相关申请的交叉引用
本申请要求于2015年12月18日提交的题为“TECHNOLOGIES FOR INTEGRITY,ANTI至REPLAY,AND AUTHENTICITY ASSURANCE FOR I/O DATA(用于I/O数据的完整性、防重放和真实性保证的技术)”的美国发明专利申请序列号14/974,874的优先权,所述美国发明专利申请根据35 U.S.C.§119(e)要求以下各项的优先权:于2015年7月20日提交的题为“CRYPTOGRAPHIC PROTECTION OF I O DATA FOR DMA CAPABLE I/O CONTROLLERS(用于有DMA能力的I/O控制器的I/O数据的加密保护)”的美国临时专利申请序列号62/194,763;于2015年7月21日提交的题为“CRYPTOGRAPHIC PROTECTION OF I/O DATA FOR DMA CAPABLEI/O CONTROLLERS(用于有DMA能力的I/O控制器的I/O数据的加密保护)”的美国临时专利申请序列号62/195,148;以及于2015年7月28日提交的题为“TECHNOLOGIES FOR INTEGRITY,ANTI至REPLAY,AND AUTHENTICITY ASSURANCE FOR I/O DATA(用于I/O数据的完整性、防重放和真实性保证的技术)”的美国临时专利申请序列号62/197,802。
背景技术
对于安全性,典型的计算设备可以依靠软件代理,例如反恶意软件代理。但是,难以跟上用户设备上越来越多的恶意软件攻击。为了对抗恶意软件威胁,通过在可信执行环境(TEE)内部运行安全性敏感软件以保护安全性敏感软件是一种趋势。TEE提供了即使系统的其他部分受到损害仍可以保护秘密的通过安全检查的环境。TEE的示例包括软件防护扩展(SGX)、安全虚拟机(VM)以及融合式安全引擎(CSE)。TEE虽然对保护TEE内的秘密很有用,但可能不保护被传达进入和/或离开安全“容器(container)”的I/O数据,例如用户数据和传感器数据。可信I/O的安全性要求因使用情况和设备而异,并且涉及保密性、完整性、活跃度、以及重放保护的风格和组合。
当前的处理器可以提供对可信执行环境如安全飞地的支持。安全飞地包括由处理器保护以免受未经授权的访问(包括未经授权的读取和写入)的存储器的一部分(包括代码和/或数据)。特别地,某些处理器可能包括软件防护扩展(SGX),以提供安全飞地支持。特别地,SGX为安全飞地数据提供机密性、完整性以及重放保护,同时所述数据驻留在平台存储器中。片上边界形成了自然的安全边界,数据和代码可以以明文形式存储于此并且被假定是安全的。SGX不保护横跨片上边界移动的I/O数据。
处理I/O数据的可信应用通常需要保证它们消费(或生成)的数据来源于特定的源设备(对于输入)或将到达特定的设备目标设备(对于输出)。可信应用可能还需要确保应用与设备之间传输的数据的完整性得以保留,并且对手无法重放早前捕获的数据。完整性违规必须由可信应用(对于输入)或消费设备(对于输出)可检测到。例如,银行应用可能要求来自用户的用于资金转让交易的键盘输入受到完整性保护。在没有完整性保护的情况下,平台上的恶意软件可能会在所述应用处理用户输入在存储器中的转账金额之前对所述转账金额进行修改,导致待执行的交易不同于用户所期望的。
存在已知的加密算法用于计算数据(诸如消息认证码(MAC))的完整性度量。现有的I/O控制器和软件堆栈(例如,总线驱动器、设备驱动器等)除数据外不携带这种额外的信息。另外,许多现有的硬件设备和控制器不支持用于生成验证完整性和真实性所需的元数据的加密基元。
视频捕获控制器通常将所捕获的视频数据组织为帧缓冲器的循环队列。视频加速控制器通常将所捕获的数据组织为帧缓冲器的流水线。帧缓冲器数据通常被固定大小的单元(通常是高速缓存行)中的视频捕获和加速控制器访问。视频加速硬件可以线性地(例如,如顺序像素)、以像块(例如,像素阵列)的方式、或随机地访问帧缓冲器数据。
附图说明
在附图中通过示例的方式而不是通过限制的方式来展示了本文中所描述的概念。为了说明的简单和清楚起见,附图中所展示的元件不一定按比例绘制。在认为适当的情况下,在附图当中已经重复了参考标号以表示相应或相似的元件。
图1是用于I/O数据真实性保证的计算设备的至少一个实施例的简化框图;
图2是可由图1的计算设备建立的环境的至少一个实施例的简化框图;
图3是可由图1至图2的计算设备建立的系统架构的至少一个实施例的简化框图;
图4是可由图1至图3的计算设备执行的用于I/O数据完整性和真实性保证的方法的至少一个实施例的简化流程图;
图5是展示可由图1至图3的计算设备建立的认证标签队列的至少一个实施例的示意图;
图6是可由图1至图3的计算设备执行的用于数据匹配和认证的方法的至少一个实施例的简化流程图。
图7是可由图1至图3的计算设备执行的用于I/O数据完整性和真实性保证的另一方法的至少一个实施例的简化流程图;
图8是展示了可由图1至图3的计算设备维持的数据阵列的示意图;并且
图9是展示了可由图1至图3的计算设备执行的元数据地址计算的示意图。
具体实施方式
虽然本公开的概念易于经历各种修改和替代形式,但是在附图中已经通过示例的方式示出了其特定实施例并且将在本文中对其进行详细描述。然而,应当理解的是,不意在将本公开的概念限制于所公开的特定形式,而相反,意图是覆盖与本公开和所附权利要求书一致的所有修改形式、等效形式和替代形式。
在说明书中提到的“一个实施例”、“实施例”、“说明性实施例”等指示所描述的实施例可以包括具体特征、结构或特性,但每一个实施例可能或者可能不一定包括所述具体特征、结构或特性。此外,此些短语不一定指相同的实施例。进一步地,当结合实施例描述具体特征、结构或特性时,应认为,无论是否明确描述,结合其他实施例来实现这种特征、结构或特性是在本领域的普通技术人员的知识范围内。另外,应当认识到,包括在采用“A、B和C中至少一个”形式的列表中的项可意指(A);(B);(C);(A和B);(A和C);(B和C);或(A、B和C)。类似地,采用“A、B或C中的至少一者”的形式列出的项可以意指(A);(B);(C);(A和B);(A和C);(B和C);或(A、B和C)。
在一些情况下,可以在硬件、固件、软件或其任何组合中实施所公开的实施例。所公开的实施例还可以被实施为由一个或多个暂态或非暂态机器可读(例如,计算机可读)存储介质所承载的或存储于其上的指令,所述指令可以由一个或多个处理器读取和执行。机器可读存储介质可以被实施为任何存储设备、机制、或用于存储或传输采用机器可读形式的信息的其他物理结构(例如,易失性或非易失性存储器、介质盘或其他介质设备)。
在附图中,可以采用特定安排和/或排序来示出一些结构特征或方法特征。然而,应当理解的是,可能不需要这种特定的安排和/或排序。相反,在一些实施例中,可以采用与在说明性附图中所示出的方式和/或顺序不同的方式和/或顺序来安排这种特征。另外,在特定的图中包括结构性特征或方法特征并不意味着暗示在所有实施例中都需要这种特征,并且在某些实施例中,可以不包括这种特征或者这种特征可以与其他特征组合。
现在参考图1,在说明性实施例中,用于I/O真实性验证的计算设备100包括处理器120、主存储器132、硬件加密引擎140、以及与一个或多个I/O设备146通信的一个或多个I/O控制器144等其他组件。在使用中,加密引擎140在平台I/O控制器144与存储器132之间提供经由直接存储器存取操作(DMAed)传送的数据的即时加密和解密。每个DMA事务用表示与特定I/O设备146或I/O设备组146相关联的数据流的通道ID(CID)来标记。加密引擎140使用CID来可靠地标识必须被保护的事务、检索相应的加密密钥、并且对DMA数据执行适当的加密操作。如下面进一步描述的,计算设备100使用加密引擎140来创建、报告和验证与来自/去往I/O控制器144的DMA数据相关联的认证信息。计算设备100使用不涉及I/O控制器144的带外机制来生成并验证完整性元数据(称为认证标签(AT))。计算设备100在加密引擎140与系统存储器132之间使用分开的AT元数据流。在输入情况下,加密引擎140生成AT元数据,所述AT元数据被写入存储器132中的专用AT队列中(与DMA缓冲器分离开)。在输出情况下,可信软件生成AT元数据,并且加密引擎140从AT队列中读取所述AT元数据并使用它来验证完整性。因此,计算设备100可以以零硬件成本向I/O控制器144和/或设备146提供I/O数据的数据来源真实性、完整性和重放保护,并且可以对软件堆栈具有低成本/影响(例如,通过避免对低级I/O总线驱动器产生影响)。另外,计算设备100可以确定AT队列的大小以满足特定DMA通道的等待时间和通量要求。
在一些实施例中,计算设备100可以使用视频捕获控制器来捕获视频帧数据。另外,计算设备100可以使用视频加速控制器来加速或以其他方式处理所述视频帧数据。计算设备100可以例如通过视频控制器来监测对所捕获的视频帧数据的高速缓存行的访问。可以线性地、以像块的方式和/或随机地访问所述高速缓存行。响应于高速缓存行访问,计算设备100将高速缓存行的地址转换成对应认证标签元数据结构的地址。因此,在这些实施例中,设备设备100可以有效地认证、完整性检查、防重放保护或以其他方式验证所捕获的视频帧数据高速缓存行,所述视频帧数据高速缓存行可以被随机访问。
计算设备100可以被实施为能够执行在此所描述的功能的任何类型的计算设备或计算机设备,包括但不限于计算机、台式计算机、工作站、服务器、膝上型计算机、笔记本计算机、平板计算机、移动计算设备、可穿戴计算设备、网络电器、web电器、分布式计算系统、基于处理器的系统和/或消费电子设备。如图1中所示,计算设备100示意性地包括处理器120、输入/输出子系统128、存储器132、数据存储设备134以及通信电路系统136。当然,在其他实施例中,计算设备100可以包括其他或附加组件,如台式计算机中常见的那些组件(例如,各种输入/输出设备)。另外,在一些实施例中,说明性组件中的一个或多个说明性组件可以结合在另一组件中,或以其他方式形成其一部分。例如,在一些实施例中,存储器132或其一部分可以结合到处理器120中。
处理器120可以被实施为能够执行在本文中所描述的功能的任何类型的处理器。处理器120可以被实施为(多个)单核或多核处理器、数字信号处理器、微控制器或其他处理器或处理/控制电路。如所示,处理器120可以包括硬件虚拟化支持122、安全飞地支持124、以及加密引擎编程支持126。
硬件虚拟化支持122支持计算设备100对操作系统、应用、以及其他软件的虚拟化执行。硬件虚拟化支持122可以通过提供两种执行模式来包括虚拟机扩展(VMX)支持:VMX根模式和VMX非根模式。VMX根模式允许执行软件具有对计算设备100及其硬件资源的广泛控制。相反地,管理程序、虚拟机监视程序(VMM)或主机操作系统(OS)可以在VMX根模式下执行。VMX非根模式限制访问某些硬件指令,同时仍实施处理器120的普通环/权限系统。一个或多个客户OS可以在VMX非根模式下执行。类似于在没有虚拟化的情况下的执行,那些客户OS可以在环零中执行。硬件虚拟化支持122还可以支持扩展页表(EPT),所述EPT可以被实施为硬件辅助的第二级页地址转换。硬件虚拟化支持122可以被实施为例如VT-x技术。
安全飞地支持124允许处理器120建立被称为安全飞地的可信执行环境,在所述可信执行环境中可以测量、验证和/或以其他方式确定执行代码是真实的。此外,安全飞地中所包括的代码和数据可以被加密或以其他方式被保护不被在安全飞地以外执行的代码访问。例如,安全飞地中包含的代码和数据可以在被执行或者被存储在处理器120的某个受保护的高速缓冲存储器中的同时由处理器120的硬件保护机制来保护。安全飞地中包含的代码和数据可以在被存储在共享高速缓存或主存储器132中时被加密。安全飞地支持124可以被实施为一组处理器指令扩展,其允许处理器120在存储器132中建立一个或多个安全飞地。例如,安全飞地支持124可以被实施为软件防护扩展(SGX)技术。
加密引擎编程支持126允许处理器120对加密引擎140进行编程以提供对I/O数据的加密保护。特别地,处理器120可以启用或禁用某些I/O通道的加密,并且可以向加密引擎140安全地提供加密密钥。加密引擎编程支持126可以被实施为一个或多个专用处理器指令(例如,指令EBINDTIO、UNWRAP、或其他指令)以及处理器120的相关联的硬件、微码、固件或其他组件。处理器120的加密引擎编程支持126可以允许可信软件对加密引擎140进行编程,同时防止不可信软件对加密引擎140进行编程。
存储器132可以被实施为能够执行此处所描述的功能的任何类型的易失性或非易失性存储器或数据存储设备。在运算中,存储器132可存储在计算设备100运算期间使用的各种数据和软件,如运算系统、应用、程序、函数库和驱动程序。存储器132以通信方式经由I/O子系统128耦合到处理器120,所述I/O子系统128可被实施为电路系统和/或组件以促进与计算设备100的处理器120、存储器132和/或其它组件的输入/输出操作。例如,I/O子系统128可以被实施为或以其他方式包括用于促进输入/输出操作的存储器控制器中枢、输入/输出控制中枢、平台控制器中枢、集成控制电路系统、固件设备、通信链路(即,点到点的链路、总线链路、导线、线缆、光导、印刷电路板迹线等)和/或其他组件及子系统。I/O子系统128可以进一步包括安全路由支持130。安全路由支持130包括用于确保在流氓软件的影响下I/O数据无法在结构128中误传的硬件支持。安全路由支持130可以与加密引擎140一起使用以提供I/O数据的加密保护。在一些实施例中,I/O子系统128可以形成片上系统(SoC)的一部分并且可以与计算设备100的处理器120、存储器132以及其他组件一起结合在单个集成电路芯片上。
数据存储设备134可以被实施为被配置用于对数据进行短期或长期存储的任何类型的一个或多个设备(如例如,存储器设备和电路、存储器卡、硬盘驱动器、固态驱动器或其他数据存储设备)。在一些实施例中,数据存储设备134可用于存储一个或多个安全飞地的内容。安全飞地的内容当由数据存储设备134存储时可被加密以防止未授权的访问。
计算设备100的通信电路系统136可以被实施为能够通过网络实现计算设备100与其他远程设备之间的通信的任何通信电路、设备或其集合。通信电路系统136可以被配置用于使用任何一种或多种通信技术(例如,有线或无线通信)以及相关联的协议(例如,以太网、WiMAX等)来实现这种通信。
在一些实施例中,计算设备100可以包括安全性引擎138,所述安全性引擎可以被实施为能够对计算设备100提供的安全相关的服务的任何(多个)硬件组件或电路系统。特别地,安全性引擎138可以包括能够独立地且安全地执行来自处理器120的固件和/或其他代码的微处理器、微控制器、或其他嵌入式控制器。因此,安全性引擎138可以被用来建立与由处理器120执行的代码分开的可信执行环境。安全性引擎138可以通过诸如主机嵌入式控制器接口(HECI)等专用总线与计算设备100的处理器120和/或其他组件进行通信。安全性引擎138还可以提供对计算设备100的远程配置、控制或管理。在所示实施例中,安全性引擎138被实施为并入计算设备100的片上系统(SoC)中的融合式安全和管理引擎(CSME)。在一些实施例中,安全性引擎138可以被实施为可管理性引擎、带外处理器、可信平台模块(TPM)、或其他安全性引擎设备或设备集合。此外,在一些实施例中,安全性引擎138还能够使用通信电路系统136或独立于计算设备100的状态(例如,独立于主处理器120的状态)的专用通信电路进行通信,也被称为“带外”通信。
加密引擎140可以被实施为能够执行本文所描述的功能的任何微控制器、微处理器、功能块、逻辑或其他电路或电路集合。如下面进一步描述的那样,在对存储器132的一个或多个直接存储器存取(DMA)操作中,加密引擎140可以对由I/O控制器144读取或写入的I/O数据进行加密和/或解密。加密引擎140包括内部通道标识符(CID)表142,加密引擎140使用所述表来动态地标识待保护的(多个)DMA通道。可以由可信软件例如使用处理器120的加密引擎编程支持126来控制和/或编程所述CID表142。CID表142的加密密钥和/或其他秘密信息对于不可信软件是不可用的。在一些实施例中,加密引擎140可以与I/O子系统128和/或处理器120一起并入计算设备100的片上系统(SoC)中。
类似地,I/O控制器144可以被实施为能够执行本文所描述的功能的任何嵌入式控制器、微控制器、微处理器、功能块、逻辑或其他电路或电路集合。在一些实施例中,I/O控制器144中的一个或多个可以被嵌入计算设备100的另一组件中,如I/O子系统128和/或处理器120。另外或可替代地,I/O控制器144中的一个或多个可以经由诸如PCI Express(PCIe)或其他I/O连接等扩展总线连接到I/O子系统128和/或处理器120。如下面进一步描述的,I/O控制器144例如通过外围通信总线(例如,USB、蓝牙等)与一个或多个I/O设备146通信。I/O设备146可以被实施为任何I/O设备,如人机接口设备、键盘、鼠标、触摸屏、麦克风、相机和其他输入设备、以及显示器和其他输出设备。如上所述,使用被称为通道标识符(CID)的标识符来唯一地标识I/O控制器144和相关联的DMA通道。每个I/O控制器144可以用每个DMA事务(例如作为事务层分组(TLP)前缀的一部分)来断言合适的CID,以便唯一地标识DMA事务的来源并提供活跃度保护。CID还使得I/O能够与不同设备146隔离。
在使用中,加密引擎140可以监听由I/O控制器144生成到存储器132中的所有DMA事务。在去往或来自能够参与可信I/O的设备146的每个事务中,加密引擎140引用CID表142以在CID表142中找到对应于DMA通道的CID。匹配表示通道当前受保护,并且加密引擎140应使用与通道相关联的通道密钥来保护被写入存储器132中和/或从存储器132中读取的数据(取决于通道的方向)。
现在参照图2,在说明性实施例中,计算设备100在操作期间建立环境200。说明性环境200包括元数据生成器模块202、元数据消费器模块204、视频捕获模块206以及元数据访问模块208。环境200的不同模块可以被实施为硬件、固件、微码、软件或其组合。这样,在一些实施例中,环境200的模块中的一个或多个模块可以被实施为电子设备的电路系统或集合(例如,元数据生成器电路系统202、元数据消费器电路系统204、视频捕获电路系统206和/或元数据访问电路系统208)。应当理解,在这样的实施例中,元数据生成器电路系统202、元数据消费器电路系统204、视频捕获电路系统206和/或元数据访问电路系统208中的一者或多者可以形成计算设备100的处理器120、I/O子系统128、加密引擎140和/或其他组件中的一者或多者的一部分。另外,在一些实施例中,说明性模块中的一个或多个说明性模块可以形成另一个模块的一部分和/或说明性模块中的一个或多个说明性模块可以彼此独立。
元数据生成器模块202被配置用于对与I/O控制器144相关联的I/O数据执行经认证的加密操作以生成经加密的I/O数据和认证标签。元数据生成器模块202被进一步配置用于将经加密的I/O数据写入与直接存储器存取(DMA)操作相关联的存储器缓冲器中,并且将认证标签写入存储器132中的认证标签队列中。认证标签队列可以被实施为认证标签结构阵列的链表。每个认证标签结构阵列可占用存储器页,并且每个认证标签结构阵列可以包括下一指针阵列和多个认证标签结构。元数据生成器模块202可以被配置用于由加密引擎140评估写入条件以判定是否将所述认证标签写入所述认证标签队列中。元数据生成器模块202可以被配置用于如果确定不写入认证标签则将认证标签累积在累积认证标签中,并且如果确定写入认证标签队列,则将累积认证标签写入认证标签队列中。
元数据消费器模块204被配置用于响应于DMA操作而对经加密的I/O数据进行解密,并且使用所述认证标签来判定所述经加密的I/O数据是否是真实的。元数据消费器模块204可以被进一步配置用于响应于确定了经加密的I/O数据是真实的而由可信软件组件对I/O数据进行处理、或者由加密引擎140将I/O数据输出到I/O控制器144。元数据消费器模块204可以被进一步配置用于响应于确定了经加密的I/O数据不是真实的而由可信软件组件指示完整性失败、或者执行加密引擎140失败模式。
视频捕获模块206被配置用于监测对帧缓冲器数据阵列的高速缓存行的访问。帧缓冲器数据阵列包括由计算设备100的视频捕获控制器捕获的帧数据。元数据访问模块208被配置用于根据所述高速缓存行的地址来确定元数据地址,并且使用所述元数据地址来访问帧认证标签结构。所述帧认证标签结构被包括在与帧缓冲器数据阵列相对应的帧元数据阵列中。元数据访问模块208可以被进一步配置用于使用所述帧认证标签结构来认证帧缓冲器数据的高速缓存行。
现在参考图3,图示300示出了计算设备100的系统架构的至少一个实施例。如所示,架构300包括硬件组件,所述硬件组件包括加密引擎140、可信I/O控制器144以及I/O设备146。虽然被展示为包括单个I/O控制器144和I/O设备146,但是应当理解,计算设备100可以包括多个I/O控制器144(其进而可以连接到多个I/O设备146)。
如所示,系统架构的软件组件包括内核模式软件(包括加密引擎驱动器(CED)304、总线驱动器314、以及过滤驱动器312),以及用户模式软件(包括加密引擎飞地(CEE)302、设备驱动器飞地(DDE)310、以及可信应用308)。来自I/O设备146的经加密的I/O数据可以经由DMA缓冲器316传递到可信应用308,并且认证标签(AT)条目可以经由AT队列318从加密引擎140传递到DDE 310。
AT队列318由CED 304分配和管理,所述CED可以被实施为内核模式(例如,环0)驱动器,所述内核模式驱动器控制加密引擎140并且还用AT队列318的地址对加密引擎140进行编程。如下所述,加密引擎140可以使用AT队列318的地址来确定将AT元数据写入哪里(对于输入)以及从哪里读取AT元数据(对于输出)。因此,分配和管理AT队列318的责任以及生成和使用AT元数据的任务不落在I/O控制器144或低级总线驱动器314上,并且不影响它们。
CEE 302可以被实施为受处理器120的安全飞地支持124保护的用户级(例如,环3)代码。CEE 302维持或以其他方式访问与一个或多个DMA通道相关联的加密密钥。CEE 302可以使用处理器120的加密引擎编程支持126对加密引擎140进行编程。特别地,CEE 302可以执行一个或多个专用处理器指令以准备包封的通道编程信息,所述通道编程信息包括可用于对加密引擎140进行编程的包封的加密密钥。CEE 302可以将所述包封的编程信息提供给CED 304。CED 304将所述包封的编程信息提供给解包封引擎306,所述解包封引擎可以对二进制blob进行解包封和验证,并且如果通过验证,则将通道编程信息编程到加密引擎140中。解包封引擎306可以被实施为处理器120或加密引擎140的硬件、固件、和/或微代码资源。
现在参考图4,在使用中,计算设备100可以执行一种用于I/O数据完整性和真实性保证的方法400。方法400可以由计算设备100的硬件、固件和/或软件的组合来执行,包括由计算设备100以及计算设备100的加密引擎140执行的一个或多个安全飞地。方法400开始于框402,在所述框中,设备驱动器飞地(DDE)310请求加密引擎驱动器(CED)304分配认证标签(AT)队列318。用于特定I/O设备146(与DMA通道相关联)的DDE 310可以估计保持用于其关联的DMA缓冲器316的AT元数据所需的AT队列318的大小。由于DMA缓冲器316的大小、填充缓冲器316所需的DMA传送次数、以及每次DMA传送的大小是已知的,因此可以确定AT队列318的最大大小以确保有足够的存储器来保持与给定DMA缓冲器316相对应的所有AT条目,直到数据通过验证为止。例如,在音频输入的情况下,对于低等待时间音频CD品质立体声数据,音频控制器144典型地可以每1ms传送192个字节的样本。对于I/O控制器144,相关联的音频驱动器DDE 310可以分配两个DMA缓冲器316,每一个的大小是1920字节。在所述示例中,采用20次192字节的传送来填充这两个DMA缓冲器316。因此,DDE 310可以请求足够大的AT队列318以处理为填充DMA缓冲器316所需的所有DMA传送所生成的AT元数据。DDE 310可以通过托管DDE 310的服务来请求CED 304分配适当大小的AT队列318。
在框404中,CED 304分配并初始化AT队列318。CED 304例如可以在存储器132中分配一个或多个空闲页,以将认证标签元数据存储在一个或多个认证标签结构(ATS)中。CED304可以为每个DMA通道分配AT队列318,这可以为每个I/O设备146提供一个AT队列318。某些高带宽通道可能需要大于一页的AT队列318。另外,由加密引擎140支持的设备146可以是热插拔的,这意味着与这些设备146相关联的DDE 310可以在OS已引导之后很长时间被加载。然而,操作系统运行的时间越长,分配大于一页(即4kB)的缓冲器就越困难。因此,在一些实施例中,AT队列318可以由分散在存储器中的任意数量的页大小的ATS阵列构成。AT队列318可以被组织为一个或多个ATS阵列的循环队列。
现在参考图5,图示500展示了AT队列318的一个可能实施例。说明性AT队列318包括两个ATS阵列502、504。每个ATS阵列502、504被实施为页大小的ATS结构阵列,包括下一个ATS 506,接下来是多个信息ATS 508。每个信息ATS 508可以包括与一个或多个DMA事务相关联的AT元数据。对于分配AT队列318,软件可以为包含在AT队列318中的每个ATS阵列分配页,并且然后对每个ATS阵列的下一ATS 506条目进行初始化以指向AT队列318中的下一ATS阵列。
下面在表1中示出了信息ATS 508的格式的一个可能实施例。如所示,AT字段被实施为使用诸如AES-GCM的完整性保护算法生成的128位字段。计数器字段被用作加密算法的初始化向量(IV)的输入。计数器字段用于重放保护。AT元数据的消费器在其执行对DMA数据的经认证的解密时可以使用其IV中的计数器值。消息长度字段可以由元数据消费器用来将此AT与DMA数据的通过其来计算AT的部分进行匹配(如下面结合图6进一步描述的)。下面在对AT队列318进行读取/写入的情况下描述了循环位字段的使用。通过将页大小除以ATS大小来确定一页ATS阵列中的ATS条目的最大数量,所述最大数量在说明性实施例中是128。
表1.信息ATS格式
下面在表2中示出了下一ATS 506的一个可能实施例。如所示,指向下一ATS阵列字段的指针包括用于AT队列318中的下一ATS阵列的页地址的高阶位。例如,如图5所示,ATS阵列502的下一ATS 506指向ATS阵列504,并且ATS阵列504的下一ATS 506指向ATS阵列502,从而建立循环AT队列318。
表2.下一ATS格式
如图5所示,可以使用ATS指针510来引用ATS条目。可以在加密引擎140内部维护的说明性ATS指针510包括基地址、索引计数器、以及多个低阶零位。所述基地址为ATS阵列(在说明性实施例中,ATS阵列502)提供页对齐地址的高阶位。所述索引计数器引用ATS阵列中的当前ATS。ATS指针510的低阶位为零,其中,零位的数量表示ATS条目(例如,下一ATS 506或信息ATS 508)的大小。如所示,对ATS的处理可以从条目1(第一信息ATS 508)开始。当ATS指针510的索引计数器在页结束处回绕时,ATS阵列的第零条目被解释为下一ATS 506。下一ATS 506提供了AT队列318中的下一ATS阵列(其说明性地是ATS阵列504)的基地址。例如,当遇到ATS阵列的第零条目时,加密引擎140可以简单地用在下一ATS 506中限定的基地址值来覆写由加密引擎140维持的ATS指针510中的基地址的当前值。
返回参考图4,在框406中,加密引擎飞地(CEE)302对加密引擎140进行编程以便安全操作。特别地,加密引擎140被编程用于保护用于特定I/O设备146的DMA通道。在框408中,CED 304利用有待用于受保护的DMA通道的AT队列318的地址对加密引擎140进行编程。CED304可以通过MMIO接口用针对受保护DMA通道的相应AT队列318的地址对加密引擎140进行编程。AT队列318的地址可以被映射到托管与AT元数据相关联的可信DDE310的服务的虚拟地址空间中。
在框410中,计算设备100的元数据生成器基于一个或多个DMA事务来生成认证标签(AT)元数据。所述元数据生成器使用经认证的加密算法(如AES-GCM)、使用用于保护DMA通道的加密密钥来计算认证标签(AT)元数据。除了AT元数据之外,可以记录附加信息以辅助完整性验证器并管理AT队列318。如下面进一步描述的,元数据生成器可以被实施为用于输入数据的加密引擎140或者用于输出数据的可信软件(例如,DDE 310)。
在一些实施例中,在框412中,加密引擎140可以基于一个或多个输入DMA事务来生成AT元数据。当加密引擎140拦截来自I/O设备146的DMA分组并且确定DMA数据需要完整性保护时,加密引擎140使用被编程到用于DMA通道的加密引擎140中的加密密钥来计算用于所述DMA分组的AT元数据。为了保证输入数据实际上来源于软件预期的设备146,加密引擎140可以将I/O设备146的唯一通道ID(CID)(由可信软件编程到加密引擎140中)混合到用于计算AT元数据的加密算法中。因此,如果攻击者用攻击者自己的数据替换原始数据,则可信软件将能够检测到攻击者的数据不是来源于可信软件所期望的I/O设备146,因为在针对所述数据对AT进行计算时,可信软件在将其与加密引擎140所生成的AT进行比较之前将使用I/O设备146的CID和用于I/O设备146的唯一密钥。类似地,在一些实施例中,在框414中,诸如应用飞地308和/或设备驱动器飞地(DDE)310等可信软件可基于一个或多个输出DMA事务生成AT元数据。可信软件(例如,可信DDE 310)可以使用用于保护DMA通道的加密密钥来生成用于DMA输出数据的AT元数据。
在一些实施例中,在框416中,元数据生成器(例如,加密引擎140或可信软件组件)可以应用一个或多个规则来判定是否写出用于DMA事务的AT元数据。例如,代替立即写出用于当前DMA分组的AT元数据,在一些实施例中,加密引擎140可以在若干个DMA分组上累积完整性度量并且针对若干个DMA分组写出单个AT。当若干个潜在条件之一被满足时,加密引擎140可以写出AT元数据。例如,加密引擎140可以为短分组写出AT元数据;也就是说,加密引擎140可以在接收到小于所述通道的I/O控制器144的通道最大传送单元(MTU)的事务时写出AT元数据。作为另一示例,如果同一通道的累积事务中的字节数已经达到用于AT生成的最大长度(例如,4kB),则加密引擎140可以写出AT元数据。作为另一示例,如果接收到具有不同于前一事务的通道标识符(CID)的事务,则加密引擎140可以写出AT元数据。作为另一示例,如果接收到具有与前一事务相同CID的事务但是新事务与前一事件物理上不连续(例如,已越过页边界),则加密引擎140可以写出AT元数据。作为另一示例,如果接收到消息结束(EOM)标志已设定的DMA事务,则加密引擎140可以写出AT元数据。
在框418中,元数据生成器判定是否写出AT元数据。若否,则方法400循环回到框410,在所述框中,元数据生成器可以生成用于后续DMA事务的附加AT元数据。如果元数据生成器确定写出AT元数据,则方法400前进到框420。
在框420中,元数据生成器将AT元数据写入AT队列318中。在一些实施例中,在框422中,加密引擎140可以针对一个或多个输入DMA事务写入AT元数据。在一些实施例中,在框424中,可信软件可以针对一个或多个输出DMA事务写入AT元数据。
为了管理将条目添加到AT队列318中,元数据生成器(例如,加密引擎140和/或可信软件)可以维持逻辑入队指针和生成器循环状态标志。入队指针表示有待添加到AT队列318中的下一信息ATS 508的地址。当AT队列318被初始建立时,入队指针可以被设定为AT队列318的第一信息ATS 508的地址。换言之,入队指针最初可以指AT队列318中的第一ATS阵列的ATS阵列偏移1(第二ATS条目)。作为逻辑实体,入队指针可能不可通过物理寄存器访问。加密引擎140还可以将用于每个AT队列318的输入入队指针的私有副本维持在CID表142中、在用于与正受保护的DMA通道相对应的CID表142条目的ATS指针寄存器中。元数据生成器在AT队列318中的入队指针位置处将AT元数据写入ATS结构中。
信息ATS 508中的循环位(Cyc)字段可以用于标识所述入队指针在AT队列318中的位置,这可以消除对限定物理入队指针寄存器的需要。当AT队列318被初始化时,所有信息ATS 508的循环位应被设置为零。当信息ATS 508被写入AT队列318中时,循环位被切换。例如,在第一次穿过AT队列318时,所有的循环位被设置为一,在第二次穿过时被设置为零,以此类推。当在两个信息ATS 508之间检测到循环位转换时,所述循环位转换表示入队指针的位置。由生成器维持的生成器循环状态标志标识了生成器应写入循环位的值。
如上所述,AT队列中的下一ATS 506条目可以包括指向页大小的下一ATS阵列的指针。当下一ATS 506的切换周期(TC)标志被置位时,TC标志指示已经到达AT队列318的结束,并且应切换所述循环位的值。如上所述,通过软件在AT队列318的最后一个ATS阵列的下一ATS 506中将TC标志设置为1,以标记AT队列318的结束。应当指出,下一ATS 506不由加密引擎140进行写操作,而是只读。因为软件分配了形成AT队列318的ATS阵列,所以只有软件可以写下一ATS 506。
生成器可以使用出队指针来确定AT队列318何时已满。由元数据消费器管理的出队指针表示由元数据消费器处理的最后一个ATS的地址。当元数据生成器处理信息ATS 508条目时,生成器更新其出队指针的副本。如果使入队指针前进将使其等于出队指针,则AT队列318已满。
仍然参考图4,在框426中,计算设备100的元数据消费器从AT队列318中读取并验证AT元数据。元数据消费器可以将来自AT队列318的AT元数据与存储在DMA缓冲器316中的DMA传送数据进行比较,并且然后使用AT元数据验证DMA数据的完整性。下面结合图6进一步描述AT元数据与DMA数据的匹配和验证算法的一个可能实施例。在一些实施例中,在框428中,可信软件可以针对一个或多个输入DMA事务验证AT元数据。例如,当DMA事务完成并且可信软件(例如,可信DDE 310)被通知DMA完成时,可信软件可以使用AT数据匹配算法从AT队列318中读取AT数据并且验证DMA数据的完整性。在一些实施例中,在框430中,加密引擎140可以针对一个或多个输出DMA事务验证AT元数据。例如,当加密引擎140拦截待由I/O控制器144读取的输出数据时,加密引擎140从AT队列318中读取对应的AT元数据。对于输出数据,如果完整性检查通过,则加密引擎140验证输出数据的完整性并且将输出数据释放到I/O控制器144。在一些实施例中,例如,当执行一个或多个DMA事务以将I/O数据复制到存储器132中时,加密引擎140可以是元数据生成器和元数据消费器两者。
为了管理从AT队列318读取条目,元数据消费器(例如,可信软件和/或加密引擎140)可以维持逻辑出队指针和消费器循环状态标志。如上所述,出队指针表示消费器在AT队列318上处理的最后一个信息ATS 508的地址。当AT队列318被初始建立时,出队指针可以被设定为AT队列318的第一信息ATS 508的地址。换言之,出队指针最初可以指AT队列318中的第一ATS阵列的ATS阵列偏移1(第二ATS条目)。作为逻辑实体,出队指针可能不可通过物理寄存器访问。加密引擎140还可以将用于每个AT队列318的输出出队指针的私有副本维持在CID表142中、在用于与正受保护的DMA通道相对应的CID表142条目的ATS指针寄存器中。消费器在AT队列318中的出队指针位置处从ATS结构中读取AT元数据。
元数据消费器可以使用入队指针来确定AT队列318何时是空的。如上所述,入队指针可以被表示为两个信息ATS 508之间的循环位转换的位置。当消费器从AT队列318获取信息ATS 508时,消费器针对循环位转换进行检查。如果检测到循环位转换,则AT队列318是空的。如上所述,消费器维持消费器循环状态标志,消费器可以将所述循环状态标志与消费器获取的信息ATS508条目中的循环位进行比较。如果消费器循环状态标志等于所述循环位的值,则消费器拥有由出队指针所指向的信息ATS 508条目并且可以对其进行处理。如果消费器循环状态标志和所述循环位的值不相等,则消费器应停止处理信息ATS 508并等待更多工作的通知。可信软件可以通过检验循环位转换来确定由加密引擎140针对输入通道所写的最后一个有效信息ATS 508。类似地,加密引擎140可以通过检验循环位转换来确定由可信软件针对输出通道所写的最后一个有效信息ATS 508。
仍然参考图4,在框432中,元数据消费器判定AT元数据是否有效。若否,则方法400分支到框434,在所述框中,元数据消费器执行适当的失败模式。例如,在一些实施例中,可信软件(例如,相关联的DDE 310)可以被通知失败。计算设备100可以通过例如终止DMA事务或改变用于计算AT元数据的加密密钥来处理完整性失败,以防止攻击者获得更多信息来破坏DMA通道数据流的完整性。作为另一示例,响应于完整性检查的失败,加密引擎140还可以执行适当的失败模式。例如,对于音频输出数据,在一些实施例中,加密引擎140可以发送随机字节和/或空白数据的分组,而不是发送被损害的DMA数据。作为另一示例,在一些实施例中,加密引擎140可以通过中断向可信软件通知失败,使得可信软件可以处理这种情况。在执行失败模式之后,方法400循环回到框410,在所述框中可以对附加的DMA事务进行处理。返回参考框432,如果AT元数据有效,则方法400分支到框436,在所述框中,元数据消费器释放DMA事务数据以进行处理。例如,可信软件(例如,DDE310)可以将输入数据释放到应用飞地308以进行处理,并且加密引擎140可以将输出数据释放到合适的I/O控制器144以便输出。在释放所述数据以进行处理之后,方法400循环回到框410,在所述框中可以对附加的DMA事务进行处理。
现在参考图6,在使用中,计算设备100可以执行一种用于将认证标签与相关联的DMA数据进行匹配的方法600。计算设备100可以在经认证的解密期间执行方法600,以验证DMA数据的完整性并且通过从AT队列318中读取认证标签(AT)数据并将AT元数据与来自DMA缓冲器316的数据进行匹配来在系统存储器132中防止重放。如上所述,可结合图4的框426,由元数据消费器(即,对于输入为可信软件或者对于输出为加密引擎140)执行方法600。方法600开始于602,在所述框中,计算设备100将DMA通道的消息长度计数器初始化为零。在框604中,计算设备100在DMA数据缓冲器316的第一个字节处开始。在框606中,计算设备100在AT队列318中处理的最后一个ATS条目处开始进行处理。
在框608中,计算设备100从AT队列318中读取下一信息ATS 508条目并记录信息ATS 508条目的消息长度字段中存储的值。消息长度字段中存储的值被进一步描述为n。在框610中,计算设备100从DMA数据缓冲器316中读取n个字节,并且使用当前信息ATS 508条目中的AT值来对这n个字节执行经认证的解密。例如,如上所述,计算设备100可以使用与DMA通道相关联的加密密钥来执行经AES-GCM认证的解密。在框612中,计算设备100判定认证是否成功。如果认证不成功,则方法600在框614中返回失败。如果认证成功,则方法600前进到框616。
在框616中,计算设备100将信息ATS 508条目的消息长度字段的值n添加到消息长度计数器中。在框618中,计算设备100判定消息长度计数器的新值是否小于DMA数据缓冲器316中存储的数据的长度。如果消息长度计数器的新值小于DMA数据缓冲器316中存储的数据的长度,则方法600循环回到框608以继续对信息ATS 508条目进行处理。如果消息长度计数器的新值不小于DMA数据缓冲器316中存储的数据的长度,则方法600在框620中返回成功。
由于AT队列318的大小是基于与每次DMA传送相关联的DMA缓冲器316的大小来确定的,并且用于所述缓冲器316的信息ATS 508条目响应于它们的DMA完成(即,在下一次传送之前)而被处理,所以AT数据可能永远不再耗费在缓冲器覆写上,即使是对于高带宽设备亦是如此。如果可信软件具有要在其DMA缓冲器316中处理的DMA数据,则可信软件将在AT队列318中找到相应的AT数据。AT数据和DMA数据可能永远不会摆脱步,因为如果不存在DMA传送(例如,当可信软件处理数据和调度新传送时较慢),则不生成新的AT数据。通过使用信息ATS 508条目中的消息长度字段,上面结合方法600描述的算法可以确保信息ATS 508条目可以在每次传送之后顺序地与DMA数据相匹配。
现在参考图7,在使用中,计算设备100可以执行一种用于I/O数据完整性和真实性保证的方法700。方法700可以由计算设备100的硬件、固件和/或软件的任何适当的组合来执行,包括由计算设备100以及计算设备100的加密引擎140执行的一个或多个安全飞地。方法700开始于框702,在所述框中,计算设备100分配用于帧缓冲器队列的帧缓冲器数据阵列、以及用于视频捕获和处理的加速级。特别地,计算设备100分配适合于与视频捕获和加速控制器一起使用的帧缓冲器数据阵列。如上所述,视频捕获控制器通常将所捕获的视频数据组织为帧缓冲器的循环队列。视频加速控制器通常将所捕获的数据组织为帧缓冲器的流水线。帧缓冲器数据通常被固定大小的单元(通常是高速缓存行)中的视频捕获和加速控制器访问。因此,计算设备100可以将帧缓冲器数据阵列分配为从存储器132中的帧数据基地址开始的帧数据缓冲器的二维阵列。帧缓冲器数据阵列的一个维度对应于帧缓冲器队列中存储的帧数据缓冲器(即,帧)的数量。帧缓冲器数据阵列的另一个维度对应于加速流水线中的级数。每个帧数据缓冲器(即,帧)可以包括整数个高速缓存行。
在框704中,计算设备100分配用于帧缓冲器数据阵列的帧元数据阵列。计算设备100分配直接对应于帧缓冲器数据阵列的帧元数据阵列。因此,计算设备100可以将帧元数据阵列分配为从存储器132中的元数据基地址开始的元数据缓冲器的二维阵列。帧元数据阵列的一个维度对应于帧缓冲器队列中存储的帧数据缓冲器的数量。帧元数据阵列的另一个维度对应于加速流水线中的级数。每个元数据缓冲器包括与帧数据缓冲器的每个高速缓存行相对应的认证标签数据。换言之,元数据缓冲器包括与帧数据缓冲器中的高速缓存行的数量相同的整数个认证标签。
现在参考图8,图示800展示了帧缓冲器数据阵列和帧元数据阵列的一个可能实施例。如所示,帧缓冲器数据阵列802被定位在帧数据基地址804处、并且并被组织为帧数据缓冲器的二维阵列。帧缓冲器数据阵列802包括用于n个帧和m个加速级的帧数据缓冲器。帧元数据阵列806被定位在元数据基地址808处、并且并被组织为元数据缓冲器的二维阵列。帧元数据阵列806包括用于n个帧和m个加速级的元数据缓冲器。每个帧数据缓冲器(i,j)对应于一个元数据缓冲器(i,j);例如,帧数据缓冲器(0,0)对应于元数据缓冲器(0,0);帧数据缓冲器(0,1)对应于元数据缓冲器(0,1);依此类推。每个帧数据缓冲器可以包括多个高速缓存行,并且每个对应的元数据缓冲器包括与那些高速缓存行中的每一个对应的认证标签数据。
返回参考图7,在框706中,计算设备100监测对帧缓冲器数据阵列内的高速缓存行的访问。所述访问可以例如由计算设备100的视频捕获控制器、视频加速控制器、或其他硬件组件生成。在框708中,计算设备100判定是否发生了高速缓存行访问。若否,则方法700循环回到框706以监测对帧缓冲器数据阵列的访问。如果已发生了高速缓存行访问,则方法700前进到框710。
在框710中,计算设备100将帧数据高速缓存行访问的地址映射到帧元数据阵列中的认证标签地址。计算设备100可以使用任何适当的算法来基于帧缓冲器数据阵列和帧元数据阵列在存储器132中的布局来对所述地址进行映射。在框712中,计算设备100可以从帧数据高速缓存行访问的地址中减去帧数据基地址以找到高速缓存行偏移。在框714中,计算设备100可以基于AT大小来调整所述高速缓存行偏移以找到AT偏移。例如,计算设备100可以基于高速缓存行和对应认证标签的相对大小来将高速缓存行偏移向右或向左移位。继续所述示例,如果高速缓存行的大小是64字节,并且与高速缓存行相对应的认证标签的大小是32字节,则计算设备100可以将高速缓存行偏移右移一位以确定AT偏移。在框716中,计算设备100将AT偏移添加到帧元数据基地址以找到AT地址。
在框718中,计算设备100在框710中确定的AT地址处访问AT元数据。如上所述,AT元数据对应于当前被访问的帧缓冲器数据高速缓存行。因此,计算设备100可以使用AT元数据来认证、完整性检查、防重放保护或以其他方式验证所述帧缓冲器数据。在访问AT元数据之后,方法700循环回到框706以继续监测帧缓冲器数据高速缓存行访问。
现在参考图9,图示900展示了帧数据高速缓存行的地址与对应认证标签(AT)元数据的地址之间的映射的一个可能实施例。事务地址902表示帧缓冲器数据高速缓存行的地址。事务地址902在其高阶位中包括帧数据基地址804,接下来是级数904、帧数906、高速缓存行数908、以及被设置为零的多个低阶位。被设置为零的低阶位的数量由高速缓存行的大小决定。包括级数904、帧数906、以及高速缓存行数908的高速缓存行索引910可以标识在帧缓冲器数据阵列内被访问的高速缓存行。包括级数904、帧数906、高速缓存行数908、以及低阶零位的高速缓存行偏移912表示帧缓冲器数据阵列内的高速缓存行在存储器中的偏移。
认证标签(AT)地址914表示与事务地址902相对应的AT元数据的地址。AT地址914在其高阶位中包括元数据基地址808,接下来是级数904、帧数906、AT数916、以及被设置为零的多个低阶位。被设置为零的低阶位的数量由AT元数据的大小决定。包括级数904、帧数906、以及AT数916的AT索引918可以标识在帧元数据阵列内的AT元数据。包括级数904、帧数906、AT数916、以及低阶零位的AT偏移920表示帧元数据阵列内的AT数据在存储器中的偏移。
如所示,可以从事务地址902中减去帧数据基地址804,以生成高速缓存行偏移912。在说明性实施例中,高速缓存行偏移可以右移一位以生成AT偏移920。AT偏移920可以被添加到元数据基地址808以生成AT地址914。
应当理解的是,在一些实施例中,方法400、600和/或700可以被实施为存储在计算机可读介质上的各种指令,所述指令可以由计算设备100的处理器120、加密引擎140和/或其他组件来执行,以使得计算设备100执行相应的方法400、600和/或700。所述计算机可读介质可以被实施为能够由计算设备100读取的任何类型的介质,包括但不限于存储器132、数据存储设备134、加密引擎140的存储器、加密引擎140的固件和/或其他介质。
示例
下文提供本文中所公开的技术的说明性示例。这些技术的实施例可包括下文描述的示例中的任何一者或多者以及其任何组合。
示例1包括一种用于I/O数据完整性验证的计算设备,所述计算设备包括:元数据生成器模块,所述元数据生成器模块用于:(i)对与所述计算设备的I/O控制器相关联的I/O数据执行经认证的加密操作,以生成经加密的I/O数据和认证标签,(ii)将所述经加密的I/O数据写入与直接存储器存取操作相关联的存储器缓冲器中,以及(iii)将所述认证标签写入存储器中的认证标签队列中;以及元数据消费器模块,所述元数据消费器模块用于:(i)响应于所述直接存储器存取操作而对所述经加密的I/O数据进行解密,以及(ii)响应于对所述经加密I/O数据的解密而用所述认证标签来判定所述经加密的I/O数据是否是真实的。
示例2包括如示例1所述的主题,并且其中,所述元数据生成器模块包括所述计算设备的加密引擎,并且所述元数据消费器模块包括所述计算设备的可信软件组件。
示例3包括如示例1和2中任一项所述的主题,并且其中,所述元数据消费器模块进一步用于响应于确定了所述经加密的I/O数据是真实的而由所述可信软件组件对所述I/O数据进行处理。
示例4包括如示例1至3中任一项所述的主题,并且其中,所述元数据消费器模块进一步用于响应于确定了所述经加密的I/O数据不是真实的而由所述可信软件组件指示完整性失败。
示例5包括如示例1至4中任一项所述的主题,并且其中,对与所述I/O控制器相关联的所述I/O数据执行所述经认证的加密操作包括:由所述加密引擎拦截由所述I/O控制器发起的DMA事务,其中,所述DMA事务包括所述I/O数据并且与DMA通道标识符相关联;以及响应于对所述DMA事务的拦截而由所述加密引擎执行所述经认证的加密操作。
示例6包括如示例1至5中任一项所述的主题,并且其中,所述元数据生成器模块进一步用于:由所述加密引擎评估写入条件,以判定是否将所述认证标签写入所述认证标签队列中;响应于确定了不将所述认证标签写入所述认证标签队列中而由所述加密引擎将所述认证标签累积到累积认证标签中;以及响应于确定了将所述认证标签写入所述认证标签队列中而由所述加密引擎写入所述累积认证标签。
示例7包括如示例1至6中任一项所述的主题,并且其中,评估所述写入条件以判定是否将所述认证标签写入所述认证标签队列中包括:将所述DMA事务的长度与所述I/O控制器的DMA通道最大传输单元进行比较;将用于所述DMA通道的I/O数据的累积字节数与用于认证标签生成的最大长度进行比较;判定所述DMA事务是否从前一DMA事务越过页边界;判定所述DMA事务的消息结束标志是否被设定;或者将所述DMA事务的所述DMA通道标识符与前一DMA事务的DMA通道标识符进行比较。
示例8包括如示例1至7中任一项所述的主题,并且其中,所述元数据生成器模块包括所述计算设备的可信软件组件,并且所述元数据消费器模块包括所述计算设备的加密引擎。
示例9包括如示例1至8中任一项所述的主题,并且其中,所述元数据消费器模块进一步用于响应于确定了所述经加密的I/O数据是真实的而由所述加密引擎将所述I/O数据输出到所述I/O控制器。
示例10包括如示例1至9中任一项所述的主题,并且其中,所述元数据消费器模块进一步用于响应于确定了所述经加密的I/O数据不是真实的而由所述加密引擎执行加密引擎失败模式。
示例11包括如示例1至10中任一项所述的主题,并且其中,所述元数据生成器模块包括所述计算设备的加密引擎,并且所述元数据消费器模块包括所述加密引擎。
示例12包括如示例1至11中任一项所述的主题,并且其中,所述认证标签队列包括认证标签结构阵列的链表,其中,所述认证标签结构阵列中的每一个都包括存储器页,并且其中,每个认证标签结构阵列包括下一阵列指针和多个认证标签结构。
示例13包括如示例1至12中任一项所述的主题,并且其中,用所述认证标签来判定所述经加密的I/O数据是否是真实的包括:从所述认证标签队列中读取认证标签结构,其中,所述认证标签结构包括消息长度值和所述认证标签;从与所述直接存储器存取操作相关联的所述存储器缓冲器中读取第一数量的字节,其中,字节的第一数量是所述消息长度值;以及用所述认证标签对所述第一数量的字节执行经认证的解密,以判定所述经加密的I/O数据是否是真实的。
示例14包括如示例1至13中任一项所述的主题,并且其中,用所述认证标签来判定所述经加密的I/O数据是否是真实的进一步包括:响应于确定了所述经加密的I/O数据是真实的而将所述字节的第一数量添加到消息长度计数器中;判定所述消息长度计数器是否小于与所述直接存储器存取操作相关联的所述存储器缓冲器的大小;响应于确定了所述消息长度计数器小于所述存储器缓冲器的大小而从所述认证标签队列中读取下一认证标签结构;以及响应于确定了所述消息长度计数器不小于所述存储器缓冲器的大小而返回成功。
示例15包括如示例1至14中任一项所述的主题,并且其中,用所述认证标签来判定所述经加密的I/O数据是否是真实的进一步包括响应于确定了所述经加密的I/O数据不是真实的而返回失败。
示例16包括一种用于I/O数据完整性验证的计算设备,所述计算设备包括:视频捕获模块,所述视频捕获模块用于监测对帧缓冲器数据阵列的高速缓存行的访问,其中,所述帧缓冲器数据阵列包括由所述计算设备的视频捕获控制器捕获的帧数据;以及元数据访问模块,所述元数据访问模块用于(i)根据所述高速缓存行的地址来确定元数据地址、以及(ii)使用所述元数据地址来访问帧认证标签结构,其中,所述帧认证标签结构被包括在与所述帧缓冲器数据阵列相对应的帧元数据阵列中。
示例17包括如示例16所述的主题,并且其中:所述帧缓冲器数据阵列包括第一数量的级,每个级包括第二数量的帧,并且每个帧包括第三数量的高速缓存行;并且所述帧元数据阵列包括所述第一数量的级,并且每个级包括所述第二数量的帧,并且每个帧包括所述第三数量的认证标签结构。
示例18包括如示例16和17中任一项所述的主题,并且其中,所述元数据访问模块进一步用于响应于对所述帧认证标签结构的访问而用所述帧认证标签结构对所述帧缓冲器数据的所述高速缓存行进行认证。
示例19包括如示例16至18中任一项所述的主题,并且其中,确定所述元数据地址包括:确定所述高速缓存行的高速缓存行偏移;调整所述高速缓存行偏移以确定认证标签结构偏移;以及基于所述认证标签结构偏移确定所述元数据地址。
示例20包括如示例16至19中任一项所述的主题,并且其中:确定所述高速缓存行偏移包括从所述高速缓存行的地址中减去所述帧缓冲器数据阵列的基地址;调整所述高速缓存行偏移以确定认证标签结构偏移包括使所述高速缓存行偏移按位移位;并且确定所述元数据地址包括将所述认证标签结构偏移添加到所述帧元数据阵列的基地址。
示例21包括一种用于I/O数据完整性验证的方法,所述方法包括:由计算设备的元数据生成器对与所述计算设备的I/O控制器相关联的I/O数据执行经认证的加密操作以生成经加密的I/O数据和认证标签;由所述元数据生成器将所述经加密的I/O数据写入与直接存储器存取操作相关联的存储器缓冲器中;由所述元数据生成器将所述认证标签写入存储器中的认证标签队列中;响应于所述直接存储器存取操作而由所述计算设备的元数据消费器对所述经加密的I/O数据进行解密;以及响应于对所述经加密的I/O数据进行解密而由所述元数据消费器使用所述认证标签来判定所述经加密的I/O数据是否是真实的。
示例22包括如示例21所述的主题,并且其中,所述元数据生成器包括所述计算设备的加密引擎,并且所述元数据消费器包括所述计算设备的可信软件组件。
示例23包括如示例21和22中任一项所述的主题,并且进一步包括响应于确定了所述经加密的I/O数据是真实的而由所述可信软件组件对所述I/O数据进行处理。
示例24包括如示例21至23中任一项所述的主题,并且进一步包括响应于确定了所述经加密的I/O数据不是真实的而由所述可信软件组件指示完整性失败。
示例25包括如示例21至24中任一项所述的主题,并且其中,对与所述I/O控制器相关联的所述I/O数据执行所述经认证的加密操作包括:由所述加密引擎拦截由所述I/O控制器发起的DMA事务,其中,所述DMA事务包括所述I/O数据并且与DMA通道标识符相关联;以及响应于拦截所述DMA事务而由所述加密引擎执行所述经认证的加密操作。
示例26包括如示例21至25中任一项所述的主题,并且进一步包括:由所述加密引擎评估写入条件,以判定是否将所述认证标签写入所述认证标签队列中;响应于确定了不将所述认证标签写入所述认证标签队列中而由所述加密引擎将所述认证标签累积到累积认证标签中;以及响应于确定了将所述认证标签写入所述认证标签队列中而由所述加密引擎写入所述累积认证标签。
示例27包括如示例21至26中任一项所述的主题,并且其中,评估所述写入条件以判定是否将所述认证标签写入所述认证标签队列中包括:将所述DMA事务的长度与所述I/O控制器的DMA通道最大传输单元进行比较;将用于所述DMA通道的I/O数据的累积字节数与用于认证标签生成的最大长度进行比较;判定所述DMA事务是否从前一DMA事务越过页边界;判定所述DMA事务的消息结束标志是否被设定;或者将所述DMA事务的所述DMA通道标识符与前一DMA事务的DMA通道标识符进行比较。
示例28包括如示例21至27中任一项所述的主题,并且其中,所述元数据生成器包括所述计算设备的可信软件组件,并且所述元数据消费器包括所述计算设备的加密引擎。
示例29包括如示例21至28中任一项所述的主题,并且进一步包括响应于确定了所述经加密的I/O数据是真实的而由所述加密引擎将所述I/O数据输出到所述I/O控制器。
示例30包括如示例21至29中任一项所述的主题,并且进一步包括响应于确定了所述经加密的I/O数据不是真实的而由所述可信软件组件执行加密引擎失败模式。
示例31包括如示例21至30中任一项所述的主题,并且其中,所述元数据生成器包括所述计算设备的加密引擎,并且所述元数据消费器包括所述加密引擎。
示例32包括如示例21至31中任一项所述的主题,并且其中,所述认证标签队列包括认证标签结构阵列的链表,其中,所述认证标签结构阵列中的每一个都包括存储器页,并且其中,每个认证标签结构阵列包括下一阵列指针和多个认证标签结构。
示例33包括如示例21至32中任一项所述的主题,并且其中,使用所述认证标签来判定所述经加密的I/O数据是否是真实的包括:从所述认证标签队列中读取认证标签结构,其中,所述认证标签结构包括消息长度值和所述认证标签;从与所述直接存储器存取操作相关联的所述存储器缓冲器中读取第一数量的字节,其中,字节的第一数量是所述消息长度值;以及使用所述认证标签对所述第一数量的字节执行经认证的解密,以判定所述经加密的I/O数据是否是真实的。
示例34包括如示例21至33中任一项所述的主题,并且其中,使用所述认证标签来判定所述经加密的I/O数据是否是真实的进一步包括:响应于确定了所述经加密的I/O数据是真实的而将所述字节的第一数量添加到消息长度计数器中;判定所述消息长度计数器是否小于与所述直接存储器存取操作相关联的所述存储器缓冲器的大小;响应于确定了所述消息长度计数器小于所述存储器缓冲器的大小而从所述认证标签队列中读取下一认证标签结构;以及响应于确定了所述消息长度计数器不小于所述存储器缓冲器的大小而返回成功。
示例35包括如示例21至34中任一项所述的主题,并且其中,使用所述认证标签来判定所述经加密的I/O数据是否是真实的进一步包括响应于确定了所述经加密的I/O数据不是真实的而返回失败。
示例36包括一种用于I/O数据完整性验证的方法,所述方法包括:由计算设备监测对帧缓冲器数据阵列的高速缓存行的访问,其中,所述帧缓冲器数据阵列包括由所述计算设备的视频捕获控制器捕获的帧数据;由所述计算设备根据所述高速缓存行的地址来确定元数据地址;以及由所述计算设备使用所述元数据地址来访问帧认证标签结构,其中,所述帧认证标签结构被包括在与所述帧缓冲器数据阵列相对应的帧元数据阵列中。
示例37包括如示例36所述的主题,并且其中:所述帧缓冲器数据阵列包括第一数量的级,每个级包括第二数量的帧,并且每个帧包括第三数量的高速缓存行;并且所述帧元数据阵列包括所述第一数量的级,并且每个级包括所述第二数量的帧,并且每个帧包括所述第三数量的认证标签结构。
示例38包括如示例36和37中任一项所述的主题,并且进一步包括响应于访问所述帧认证标签结构而由所述计算设备使用所述帧认证标签结构对所述帧缓冲器数据的所述高速缓存行进行认证。
示例39包括如示例36至38中任一项所述的主题,并且其中,确定所述元数据地址包括:确定所述高速缓存行的高速缓存行偏移;调整所述高速缓存行偏移以确定认证标签结构偏移;以及基于所述认证标签结构偏移确定所述元数据地址。
示例40包括如示例36至39中任一项所述的主题,并且其中:确定所述高速缓存行偏移包括从所述高速缓存行的地址中减去所述帧缓冲器数据阵列的基地址;调整所述高速缓存行偏移以确定认证标签结构偏移包括使所述高速缓存行偏移按位移位;并且确定所述元数据地址包括将所述认证标签结构偏移添加到所述帧元数据阵列的基地址。
示例41包括一种计算设备,所述计算设备包括:处理器;以及存储器,所述存储器具有存储于其中的多条指令,所述多条指令当被所述处理器执行时使所述计算设备执行如示例21至40中任一项所述的方法。
示例42包括一种或多种机器可读存储介质,所述一种或多种机器可读存储介质包括存储于其上的多条指令,所述多条指令响应于被执行而使计算设备执行如示例21至40中任一项所述的方法。
示例43包括一种计算设备,所述计算设备包括用于执行如示例21至40中任一项所述的方法的装置。
示例44包括一种用于I/O数据完整性验证的计算设备,所述计算设备包括:用于由所述计算设备的元数据生成器对与所述计算设备的I/O控制器相关联的I/O数据执行经认证的加密操作以生成经加密的I/O数据和认证标签的装置;用于由所述元数据生成器将所述经加密的I/O数据写入与直接存储器存取操作相关联的存储器缓冲器中的装置;用于由所述元数据生成器将所述认证标签写入存储器中的认证标签队列中的装置;用于响应于所述直接存储器存取操作而由所述计算设备的元数据消费器对所述经加密的I/O数据进行解密的装置;以及用于响应于对所述经加密的I/O数据进行解密而由所述元数据消费器使用所述认证标签来判定所述经加密的I/O数据是否真实的装置。
示例45包括如示例44所述的主题,并且其中,所述元数据生成器包括所述计算设备的加密引擎,并且所述元数据消费器包括所述计算设备的可信软件组件。
示例46包括如示例44和45中任一项所述的主题,并且进一步包括用于响应于确定了所述经加密的I/O数据是真实的而由所述可信软件组件对所述I/O数据进行处理的装置。
示例47包括如示例44至46中任一项所述的主题,并且进一步包括用于响应于确定了所述经加密的I/O数据不是真实的而由所述可信软件组件指示完整性失败的装置。
示例48包括如示例44至47中任一项所述的主题,并且其中,用于对与所述I/O控制器相关联的所述I/O数据执行所述经认证的加密操作的所述装置包括:用于由所述加密引擎拦截由所述I/O控制器发起的DMA事务的装置,其中,所述DMA事务包括所述I/O数据并且与DMA通道标识符相关联;以及用于响应于拦截所述DMA事务而由所述加密引擎执行所述经认证的加密操作的装置。
示例49包括如示例44至48中任一项所述的主题,并且进一步包括:用于由所述加密引擎评估写入条件以判定是否将所述认证标签写入所述认证标签队列中的装置;用于响应于确定了不将所述认证标签写入所述认证标签队列中而由所述加密引擎将所述认证标签累积到累积认证标签中的装置;以及用于响应于确定了将所述认证标签写入所述认证标签队列中而由所述加密引擎写入所述累积认证标签的装置。
示例50包括如示例44至49中任一项所述的主题,并且其中,用于评估所述写入条件以判定是否将所述认证标签写入所述认证标签队列中的所述装置包括:用于将所述DMA事务的长度与所述I/O控制器的DMA通道最大传输单元进行比较的装置;用于将用于所述DMA通道的I/O数据的累积字节数与用于认证标签生成的最大长度进行比较的装置;用于判定所述DMA事务是否从前一DMA事务越过页边界的装置;用于判定所述DMA事务的消息结束标志是否被设定的装置;或者用于将所述DMA事务的所述DMA通道标识符与前一DMA事务的DMA通道标识符进行比较的装置。
示例51包括如示例44至50中任一项所述的主题,并且其中,所述元数据生成器包括所述计算设备的可信软件组件,并且所述元数据消费器包括所述计算设备的加密引擎。
示例52包括如示例44至51中任一项所述的主题,并且进一步包括用于响应于确定了所述经加密的I/O数据是真实的而由所述加密引擎将所述I/O数据输出到所述I/O控制器的装置。
示例53包括如示例44至52中任一项所述的主题,并且进一步包括用于响应于确定了所述经加密的I/O数据不是真实的而由所述可信软件组件执行加密引擎失败模式的装置。
示例54包括如示例44至53中任一项所述的主题,并且其中,所述元数据生成器包括所述计算设备的加密引擎,并且所述元数据消费器包括所述加密引擎。
示例55包括如示例44至54中任一项所述的主题,并且其中,所述认证标签队列包括认证标签结构阵列的链表,其中,所述认证标签结构阵列中的每一个都包括存储器页,并且其中,每个认证标签结构阵列包括下一阵列指针和多个认证标签结构。
示例56包括如示例44至55中任一项所述的主题,并且其中,用于使用所述认证标签来判定所述经加密的I/O数据是否真实的所述装置包括:用于从所述认证标签队列中读取认证标签结构的装置,其中,所述认证标签结构包括消息长度值和所述认证标签;用于从与所述直接存储器存取操作相关联的所述存储器缓冲器中读取第一数量的字节的装置,其中,字节的第一数量是消息长度值;以及用于使用所述认证标签对所述第一数量的字节执行经认证的解密以判定所述经加密的I/O数据是否真实的装置。
示例57包括如示例44至56中任一项所述的主题,并且其中,用于使用所述认证标签来判定所述经加密的I/O数据是否真实的所述装置进一步包括:用于响应于确定了所述经加密的I/O数据是真实的而将所述字节的第一数量添加到消息长度计数器中的装置;用于判定所述消息长度计数器是否小于与所述直接存储器存取操作相关联的所述存储器缓冲器的大小的装置;用于响应于确定了所述消息长度计数器小于所述存储器缓冲器的大小而从所述认证标签队列中读取下一认证标签结构的装置;以及用于响应于确定了所述消息长度计数器不小于所述存储器缓冲器的大小而返回成功的装置。
示例58包括如示例44至57中任一项所述的主题,并且其中,用于使用所述认证标签来判定所述经加密的I/O数据是否真实的所述装置进一步包括用于响应于确定了所述经加密的I/O数据不是真实的而返回失败的装置。
示例59包括一种用于I/O数据完整性验证的计算设备,所述计算设备包括:用于监测对帧缓冲器数据阵列的高速缓存行的访问的装置,其中,所述帧缓冲器数据阵列包括由所述计算设备的视频捕获控制器捕获的帧数据;用于根据所述高速缓存行的地址来确定元数据地址的装置;以及用于使用所述元数据地址来访问帧认证标签结构的装置,其中,所述帧认证标签结构被包括在与所述帧缓冲器数据阵列相对应的帧元数据阵列中。
示例60包括如示例59所述的主题,并且其中:所述帧缓冲器数据阵列包括第一数量的级,每个级包括第二数量的帧,并且每个帧包括第三数量的高速缓存行;并且所述帧元数据阵列包括所述第一数量的级,并且每个级包括所述第二数量的帧,并且每个帧包括所述第三数量的认证标签结构。
示例61包括如示例59和60中任一项所述的主题,并且进一步包括用于响应于访问所述帧认证标签结构而使用所述帧认证标签结构对所述帧缓冲器数据的所述高速缓存行进行认证的装置。
示例62包括如示例59至61中任一项所述的主题,并且其中,确定所述元数据地址包括:用于确定所述高速缓存行的高速缓存行偏移的装置;用于调整所述高速缓存行偏移以确定认证标签结构偏移的装置;以及用于基于所述认证标签结构偏移确定所述元数据地址的装置。
示例63包括如示例59至62中任一项所述的主题,并且其中:用于确定所述高速缓存行偏移的所述装置包括用于从所述高速缓存行的地址中减去所述帧缓冲器数据阵列的基地址的装置;用于调整所述高速缓存行偏移以确定认证标签结构偏移的所述装置包括用于使所述高速缓存行偏移按位移位的装置;并且用于确定所述元数据地址的所述装置包括用于将所述认证标签结构偏移添加到所述帧元数据阵列的基地址的装置。
Claims (25)
1.一种用于I/O数据完整性验证的计算设备,所述计算设备包括:
元数据生成器模块,所述元数据生成器模块用于:(i)对与所述计算设备的I/O控制器相关联的I/O数据执行经认证的加密操作,以生成经加密的I/O数据和认证标签;(ii)将所述经加密的I/O数据写入与直接存储器存取操作相关联的存储器缓冲器中;以及(iii)将所述认证标签写入存储器中的认证标签队列中;以及
元数据消费器模块,所述元数据消费器模块用于:(i)响应于所述直接存储器存取操作而对所述经加密的I/O数据进行解密;以及(ii)响应于对所述经加密的I/O数据的解密而用所述认证标签来判定所述经加密的I/O数据是否是真实的。
2.如权利要求1所述的计算设备,其中,所述元数据生成器模块包括所述计算设备的加密引擎,并且所述元数据消费器模块包括所述计算设备的可信软件组件。
3.如权利要求2所述的计算设备,其中,所述元数据消费器模块进一步用于:响应于确定了所述经加密的I/O数据不是真实的而由所述可信软件组件指示完整性失败。
4.如权利要求2所述的计算设备,其中,对与所述I/O控制器相关联的所述I/O数据执行所述经认证的加密操作包括:
由所述加密引擎拦截由所述I/O控制器发起的DMA事务,其中,所述DMA事务包括所述I/O数据并且与DMA通道标识符相关联;以及
响应于对所述DMA事务的拦截而由所述加密引擎执行所述经认证的加密操作。
5.如权利要求4所述的计算设备,其中,所述元数据生成器模块进一步用于:
由所述加密引擎评估写入条件,以判定是否将所述认证标签写入所述认证标签队列中;
响应于确定了不将所述认证标签写入所述认证标签队列中而由所述加密引擎将所述认证标签累积到累积认证标签中;以及
响应于确定了将所述认证标签写入所述认证标签队列中而由所述加密引擎写入所述累积认证标签;
其中,评估所述写入条件以判定是否将所述认证标签写入所述认证标签队列中包括:
将所述DMA事务的长度与所述I/O控制器的DMA通道最大传输单元进行比较;
将用于所述DMA通道的I/O数据的累积字节数与用于认证标签生成的最大长度进行比较;
判定所述DMA事务是否从前一DMA事务越过页边界;
判定所述DMA事务的消息结束标志是否被设定;或者
将所述DMA事务的所述DMA通道标识符与前一DMA事务的DMA通道标识符进行比较。
6.如权利要求1所述的计算设备,其中,所述元数据生成器模块包括所述计算设备的可信软件组件,并且所述元数据消费器模块包括所述计算设备的加密引擎。
7.如权利要求6所述的计算设备,其中,所述元数据消费器模块进一步用于:响应于确定了所述经加密的I/O数据是真实的而由所述加密引擎将所述I/O数据输出到所述I/O控制器。
8.如权利要求6所述的计算设备,其中,所述元数据消费器模块进一步用于:响应于确定了所述经加密的I/O数据不是真实的而由所述加密引擎执行加密引擎失败模式。
9.如权利要求1所述的计算设备,其中,所述元数据生成器模块包括所述计算设备的加密引擎,并且所述元数据消费器模块包括所述加密引擎。
10.如权利要求1至9中任一项所述的计算设备,其中,所述认证标签队列包括认证标签结构阵列的链表,其中,所述认证标签结构阵列中的每一个都包括存储器页,并且其中,每个认证标签结构阵列包括下一阵列指针和多个认证标签结构。
11.如权利要求1至9中的任一项所述的计算设备,其中,用所述认证标签来判定所述经加密的I/O数据是否是真实的包括:
从所述认证标签队列中读取认证标签结构,其中,所述认证标签结构包括消息长度值和所述认证标签;
从与所述直接存储器存取操作相关联的所述存储器缓冲器中读取第一数量的字节,其中,字节的第一数量是所述消息长度值;
用所述认证标签对所述第一数量的字节执行经认证的解密,以判定所述经加密的I/O数据是否是真实的;
响应于确定了所述经加密的I/O数据是真实的而将所述字节的第一数量添加到消息长度计数器中;
判定所述消息长度计数器是否小于与所述直接存储器存取操作相关联的所述存储器缓冲器的大小;
响应于确定了所述消息长度计数器小于所述存储器缓冲器的大小而从所述认证标签队列中读取下一认证标签结构;以及
响应于确定了所述消息长度计数器不小于所述存储器缓冲器的大小而返回成功。
12.一种用于I/O数据完整性验证的计算设备,所述计算设备包括:
视频捕获模块,所述视频捕获模块用于监测对帧缓冲器数据阵列的高速缓存行的访问,其中,所述帧缓冲器数据阵列包括由所述计算设备的视频捕获控制器捕获的帧数据;以及
元数据访问模块,所述元数据访问模块用于:(i)根据所述高速缓存行的地址来确定元数据地址;以及(ii)使用所述元数据地址来访问帧认证标签结构,其中,所述帧认证标签结构被包括在与所述帧缓冲器数据阵列相对应的帧元数据阵列中。
13.如权利要求12所述的计算设备,其中:
所述帧缓冲器数据阵列包括第一数量的级,每个级包括第二数量的帧,并且每个帧包括第三数量的高速缓存行;并且
所述帧元数据阵列包括所述第一数量的级,并且每个级包括所述第二数量的帧,并且每个帧包括所述第三数量的认证标签结构。
14.如权利要求12所述的计算设备,其中,所述元数据访问模块进一步用于:响应于对所述帧认证标签结构的访问而用所述帧认证标签结构对所述帧缓冲器数据的所述高速缓存行进行认证。
15.如权利要求12至14中的任一项所述的计算设备,其中,确定所述元数据地址包括:
确定所述高速缓存行的高速缓存行偏移,其中,确定所述高速缓存行偏移包括:从所述高速缓存行的地址中减去所述帧缓冲器数据阵列的基地址;
调整所述高速缓存行偏移以确定认证标签结构偏移,其中,调整所述高速缓存行偏移以确定认证标签结构偏移包括:使所述高速缓存行偏移按位移位;以及
基于所述认证标签结构偏移来确定所述元数据地址,其中,确定所述元数据地址包括:将所述认证标签结构偏移添加到所述帧元数据阵列的基地址。
16.一种用于I/O数据完整性验证的方法,所述方法包括:
由计算设备的元数据生成器对与所述计算设备的I/O控制器相关联的I/O数据执行经认证的加密操作以生成经加密的I/O数据和认证标签;
由所述元数据生成器将所述经加密的I/O数据写入与直接存储器存取操作相关联的存储器缓冲器中;
由所述元数据生成器将所述认证标签写入存储器中的认证标签队列中;
响应于所述直接存储器存取操作而由所述计算设备的元数据消费器对所述经加密的I/O数据进行解密;以及
响应于对所述经加密的I/O数据进行解密而由所述元数据消费器使用所述认证标签来判定所述经加密的I/O数据是否是真实的。
17.如权利要求16所述的方法,其中,所述元数据生成器包括所述计算设备的加密引擎,并且所述元数据消费器包括所述计算设备的可信软件组件。
18.如权利要求17所述的方法,其中,对与所述I/O控制器相关联的所述I/O数据执行所述经认证的加密操作包括:
由所述加密引擎拦截由所述I/O控制器发起的DMA事务,其中,所述DMA事务包括所述I/O数据并且与DMA通道标识符相关联;以及
响应于拦截所述DMA事务而由所述加密引擎执行所述经认证的加密操作。
19.如权利要求16所述的方法,其中,所述元数据生成器包括所述计算设备的可信软件组件,并且所述元数据消费器包括所述计算设备的加密引擎。
20.如权利要求16所述的方法,其中,使用所述认证标签来判定所述经加密的I/O数据是否是真实的包括:
从所述认证标签队列中读取认证标签结构,其中,所述认证标签结构包括消息长度值和所述认证标签;
从与所述直接存储器存取操作相关联的所述存储器缓冲器中读取第一数量的字节,其中,字节的第一数量是所述消息长度值;以及
使用所述认证标签对所述第一数量的字节执行经认证的解密,以判定所述经加密的I/O数据是否是真实的。
21.一种用于I/O数据完整性验证的方法,所述方法包括:
由计算设备监测对帧缓冲器数据阵列的高速缓存行的访问,其中,所述帧缓冲器数据阵列包括由所述计算设备的视频捕获控制器捕获的帧数据;
由所述计算设备根据所述高速缓存行的地址来确定元数据地址;以及
由所述计算设备使用所述元数据地址来访问帧认证标签结构,其中,所述帧认证标签结构被包括在与所述帧缓冲器数据阵列相对应的帧元数据阵列中。
22.如权利要求21所述的方法,其中:
所述帧缓冲器数据阵列包括第一数量的级,每个级包括第二数量的帧,并且每个帧包括第三数量的高速缓存行;并且
所述帧元数据阵列包括所述第一数量的级,并且每个级包括所述第二数量的帧,并且每个帧包括所述第三数量的认证标签结构。
23.一种计算设备,包括:
处理器;以及
存储器,所述存储器具有存储于其中的多条指令,所述多条指令当由所述处理器执行时使所述计算设备执行如权利要求16至22中任一项所述的方法。
24.一种或多种机器可读存储介质,包括存储于其上的多条指令,所述多条指令响应于被执行而使计算设备执行如权利要求16至22中的任一项所述的方法。
25.一种计算设备,包括用于执行如权利要求16至22中任一项所述的方法的装置。
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562194763P | 2015-07-20 | 2015-07-20 | |
US62/194,763 | 2015-07-20 | ||
US201562195148P | 2015-07-21 | 2015-07-21 | |
US62/195,148 | 2015-07-21 | ||
US201562197802P | 2015-07-28 | 2015-07-28 | |
US62/197,802 | 2015-07-28 | ||
US14/974,874 | 2015-12-18 | ||
US14/974,874 US10073977B2 (en) | 2015-07-20 | 2015-12-18 | Technologies for integrity, anti-replay, and authenticity assurance for I/O data |
PCT/US2016/038397 WO2017014890A1 (en) | 2015-07-20 | 2016-06-20 | Technologies for integrity, anti-replay, and authenticity assurance for i/o data |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107851163A true CN107851163A (zh) | 2018-03-27 |
CN107851163B CN107851163B (zh) | 2022-03-08 |
Family
ID=57834861
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680042659.0A Active CN107851163B (zh) | 2015-07-20 | 2016-06-20 | 用于i/o数据的完整性、防重放和真实性保证的技术 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10073977B2 (zh) |
EP (1) | EP3326106A4 (zh) |
CN (1) | CN107851163B (zh) |
WO (1) | WO2017014890A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109993003A (zh) * | 2019-03-12 | 2019-07-09 | 广州大学 | 一种基于sgx的软件流安全验证方法及装置 |
CN111221756A (zh) * | 2019-11-13 | 2020-06-02 | 北京中航通用科技有限公司 | 一种上位机高效下行数据传输的方法 |
CN113139175A (zh) * | 2020-01-19 | 2021-07-20 | 阿里巴巴集团控股有限公司 | 处理单元、电子设备以及安全控制方法 |
CN115617722A (zh) * | 2022-12-05 | 2023-01-17 | 成都博宇利华科技有限公司 | 实现多pcie设备共享dma链表的系统及方法 |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10027640B2 (en) * | 2015-09-22 | 2018-07-17 | Qualcomm Incorporated | Secure data re-encryption |
US10225247B2 (en) * | 2015-12-14 | 2019-03-05 | Intel Corporation | Bidirectional cryptographic IO for data streams |
US10936713B2 (en) | 2015-12-17 | 2021-03-02 | The Charles Stark Draper Laboratory, Inc. | Techniques for metadata processing |
US10235176B2 (en) | 2015-12-17 | 2019-03-19 | The Charles Stark Draper Laboratory, Inc. | Techniques for metadata processing |
KR102466412B1 (ko) * | 2016-01-14 | 2022-11-15 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
CN107256363B (zh) * | 2017-06-13 | 2020-03-06 | 杭州华澜微电子股份有限公司 | 一种由加解密模块阵列组成的高速加解密装置 |
US10963295B2 (en) * | 2017-09-08 | 2021-03-30 | Oracle International Corporation | Hardware accelerated data processing operations for storage data |
US10592663B2 (en) * | 2017-12-28 | 2020-03-17 | Intel Corporation | Technologies for USB controller state integrity protection |
WO2019152792A1 (en) | 2018-02-02 | 2019-08-08 | Dover Microsystems, Inc. | Systems and methods for policy linking and/or loading for secure initialization |
EP3746925B1 (en) | 2018-02-02 | 2024-09-11 | The Charles Stark Draper Laboratory Inc. | Systems and methods for policy execution processing |
WO2019213061A1 (en) | 2018-04-30 | 2019-11-07 | Dover Microsystems, Inc. | Systems and methods for checking safety properties |
GB2574628B (en) * | 2018-06-13 | 2020-12-09 | Arm Ip Ltd | Attestation of processing |
US11386017B2 (en) * | 2018-06-20 | 2022-07-12 | Intel Corporation | Technologies for secure authentication and programming of accelerator devices |
TW202022679A (zh) | 2018-11-06 | 2020-06-16 | 美商多佛微系統公司 | 用於停滯主處理器的系統和方法 |
US11841956B2 (en) | 2018-12-18 | 2023-12-12 | Dover Microsystems, Inc. | Systems and methods for data lifecycle protection |
CN110069935B (zh) * | 2019-03-20 | 2020-12-01 | 上海交通大学 | 基于标记内存的内部敏感数据保护方法及系统 |
US11139981B2 (en) | 2019-03-29 | 2021-10-05 | Intel Corporation | Message authentication code (MAC) based compression and decompression |
US11126752B2 (en) | 2019-09-04 | 2021-09-21 | Fresenius Medical Care Holdings, Inc. | Authentication of medical device computing systems by using metadata signature |
US12079197B2 (en) | 2019-10-18 | 2024-09-03 | Dover Microsystems, Inc. | Systems and methods for updating metadata |
US11496314B2 (en) * | 2019-12-18 | 2022-11-08 | Intel Corporation | Integrity protected command buffer execution |
US11347875B2 (en) | 2020-01-28 | 2022-05-31 | Intel Corporation | Cryptographic separation of memory on device with use in DMA protection |
US11281579B2 (en) * | 2020-01-28 | 2022-03-22 | Intel Corporation | Cryptographic separation of MMIO on device |
US12001365B2 (en) * | 2020-07-07 | 2024-06-04 | Apple Inc. | Scatter and gather streaming data through a circular FIFO |
US11860784B1 (en) * | 2022-06-27 | 2024-01-02 | Advanced Micro Devices, Inc. | Live profile-driven cache aging policies |
US12093355B2 (en) | 2022-09-07 | 2024-09-17 | Bank Of America Corporation | Secure data transfer in a virtual environment using blockchain |
CN115842790B (zh) * | 2022-12-29 | 2023-05-02 | 三未信安科技股份有限公司 | 一种应用于PCIe设备的业务数据流量控制方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040230797A1 (en) * | 2002-03-16 | 2004-11-18 | Yoram Ofek | Remotely authenticated operation method |
CN1722046A (zh) * | 2004-06-30 | 2006-01-18 | 富士通株式会社 | 安全处理器和用于安全处理器的程序 |
US20060080553A1 (en) * | 2004-10-08 | 2006-04-13 | International Business Machines Corporation | Secure memory caching structures for data, integrity and version values |
CN1983267A (zh) * | 2005-07-01 | 2007-06-20 | Qnx软件操作系统德国有限公司 | 延迟验证数据完整性的文件系统 |
EP1870814A1 (en) * | 2006-06-19 | 2007-12-26 | Texas Instruments France | Methods, apparatus, and systems for secure demand paging and other paging operations for processor devices |
US20080052532A1 (en) * | 2006-08-25 | 2008-02-28 | Texas Instruments Incorporated | Methods and systems involving secure ram |
CN101149714A (zh) * | 2006-09-18 | 2008-03-26 | 国际商业机器公司 | 用于执行直接存储器存取的方法和系统 |
CN102193886A (zh) * | 2010-03-05 | 2011-09-21 | Lsi公司 | 能够进行并发数据操纵的dma引擎 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10357196B4 (de) | 2003-12-08 | 2006-01-26 | Infineon Technologies Ag | Echtheitsetikett und Verfahren zum Betreiben eines Echtheitsetiketts |
US7716389B1 (en) | 2006-03-17 | 2010-05-11 | Bitmicro Networks, Inc. | Direct memory access controller with encryption and decryption for non-blocking high bandwidth I/O transactions |
US9110796B2 (en) | 2009-01-27 | 2015-08-18 | Avago Technologies General Ip (Singapore) Pte Ltd | Apparatus and circuitry for memory-based collection and verification of data integrity information |
KR101687439B1 (ko) | 2010-07-22 | 2016-12-16 | 나그라비젼 에스에이 | 소프트웨어 무결성을 보장하기위한 프로세서 실행 방법 |
US8595510B2 (en) * | 2011-06-22 | 2013-11-26 | Media Patents, S.L. | Methods, apparatus and systems to improve security in computer systems |
US10102390B2 (en) | 2012-06-28 | 2018-10-16 | Honeywell International Inc. | Memory authentication with redundant encryption |
-
2015
- 2015-12-18 US US14/974,874 patent/US10073977B2/en not_active Expired - Fee Related
-
2016
- 2016-06-20 CN CN201680042659.0A patent/CN107851163B/zh active Active
- 2016-06-20 EP EP16828192.1A patent/EP3326106A4/en not_active Withdrawn
- 2016-06-20 WO PCT/US2016/038397 patent/WO2017014890A1/en active Application Filing
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040230797A1 (en) * | 2002-03-16 | 2004-11-18 | Yoram Ofek | Remotely authenticated operation method |
CN1722046A (zh) * | 2004-06-30 | 2006-01-18 | 富士通株式会社 | 安全处理器和用于安全处理器的程序 |
US20060080553A1 (en) * | 2004-10-08 | 2006-04-13 | International Business Machines Corporation | Secure memory caching structures for data, integrity and version values |
CN1983267A (zh) * | 2005-07-01 | 2007-06-20 | Qnx软件操作系统德国有限公司 | 延迟验证数据完整性的文件系统 |
EP1870814A1 (en) * | 2006-06-19 | 2007-12-26 | Texas Instruments France | Methods, apparatus, and systems for secure demand paging and other paging operations for processor devices |
US20080052532A1 (en) * | 2006-08-25 | 2008-02-28 | Texas Instruments Incorporated | Methods and systems involving secure ram |
CN101149714A (zh) * | 2006-09-18 | 2008-03-26 | 国际商业机器公司 | 用于执行直接存储器存取的方法和系统 |
CN102193886A (zh) * | 2010-03-05 | 2011-09-21 | Lsi公司 | 能够进行并发数据操纵的dma引擎 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109993003A (zh) * | 2019-03-12 | 2019-07-09 | 广州大学 | 一种基于sgx的软件流安全验证方法及装置 |
CN111221756A (zh) * | 2019-11-13 | 2020-06-02 | 北京中航通用科技有限公司 | 一种上位机高效下行数据传输的方法 |
CN111221756B (zh) * | 2019-11-13 | 2023-06-30 | 北京中航通用科技有限公司 | 一种上位机高效下行数据传输的方法 |
CN113139175A (zh) * | 2020-01-19 | 2021-07-20 | 阿里巴巴集团控股有限公司 | 处理单元、电子设备以及安全控制方法 |
US11977663B2 (en) | 2020-01-19 | 2024-05-07 | Alibaba Group Holding Limited | Processing unit, electronic device, and security control method |
CN115617722A (zh) * | 2022-12-05 | 2023-01-17 | 成都博宇利华科技有限公司 | 实现多pcie设备共享dma链表的系统及方法 |
CN115617722B (zh) * | 2022-12-05 | 2023-03-07 | 成都博宇利华科技有限公司 | 实现多pcie设备共享dma链表的系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107851163B (zh) | 2022-03-08 |
EP3326106A4 (en) | 2019-03-27 |
US20170024568A1 (en) | 2017-01-26 |
US10073977B2 (en) | 2018-09-11 |
EP3326106A1 (en) | 2018-05-30 |
WO2017014890A1 (en) | 2017-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107851163A (zh) | 用于i/o数据的完整性、防重放和真实性保证的技术 | |
US20210390063A1 (en) | Technologies for Secure I/O with Accelerator Devices | |
Awad et al. | Obfusmem: A low-overhead access obfuscation for trusted memories | |
Henson et al. | Memory encryption: A survey of existing techniques | |
US11775659B2 (en) | Cryptographic separation of memory on device with use in DMA protection | |
Lapid et al. | Cache-attacks on the ARM TrustZone implementations of AES-256 and AES-256-GCM via GPU-based analysis | |
CN107924448A (zh) | 硬件实施的单向密码术 | |
CN107851161A (zh) | 对具有dma能力的i/o控制器的i/o数据进行密码保护 | |
US11782829B2 (en) | Cryptographic separation of MMIO on device | |
CN115525903A (zh) | 用于对安全i/o的密码引擎进行安全编程的技术 | |
CN110825672B (zh) | 用于联机加密处理的高性能自主硬件引擎 | |
CN108011706A (zh) | 数据处理装置和用于数据的加密处理的方法 | |
US20240028775A1 (en) | Hardware protection of inline cryptographic processor | |
CN113704041A (zh) | Fpga设计的安全调试 | |
US20150363334A1 (en) | Speculative cryptographic processing for out of order data | |
US20240169098A1 (en) | Secure Chip-Wide Transmission | |
TWI845059B (zh) | 執行安全密碼操作之積體電路及方法 | |
TWI856849B (zh) | 安全加密協同處理器 | |
Xu et al. | Fault-tolerant deep learning inference on CPU-GPU integrated edge devices with TEEs | |
JP2024513716A (ja) | 読み取り専用メモリ(rom)のセキュリティ | |
JP2024515450A (ja) | 読み取り専用メモリ(rom)のセキュリティ | |
Prata | Secure External Memory on Embedded Devices | |
TW202407562A (zh) | 安全加密協同處理器 | |
CN118575161A (zh) | 安全伪随机数生成器(prng)重播种 |
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 |