CN107851161B - 对具有dma能力的i/o控制器的i/o数据进行密码保护 - Google Patents
对具有dma能力的i/o控制器的i/o数据进行密码保护 Download PDFInfo
- Publication number
- CN107851161B CN107851161B CN201680042468.4A CN201680042468A CN107851161B CN 107851161 B CN107851161 B CN 107851161B CN 201680042468 A CN201680042468 A CN 201680042468A CN 107851161 B CN107851161 B CN 107851161B
- Authority
- CN
- China
- Prior art keywords
- dma
- transaction
- computing device
- channel identifier
- cryptographic engine
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0822—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Engineering (AREA)
- Storage Device Security (AREA)
Abstract
用于I/O数据的密码保护的技术包括具有一个或多个I/O控制器的计算设备。每个I/O控制器可以耦合到一个或多个I/O设备。每个I/O控制器可以生成直接存储器存取(DMA)事务,其包括指示I/O控制器并且指示耦合到I/O控制器的I/O设备的通道标识符。计算设备拦截DMA事务,并且根据通道标识符来确定是否保护DMA事务。如果是,则计算设备使用与通道标识符相关联的加密密钥来执行密码操作。计算设备可以包括密码引擎,其拦截DMA事务,并且通过确定通道标识符是否与密码引擎的通道标识符表中的条目相匹配来确定是否保护DMA事务。描述并要求保护其他实施例。
Description
相关申请的交叉引用
本申请要求享有于2015年12月18日提交的、题为“CRYPTOGRAPHIC PROTECTION OFI/O DATA I/OR DMA CAPABLE I/O CONTROLLERS”的美国实用专利申请序号14/974,956的优先权,该申请根据35U.S.C.§119(e)要求享有于2015年7月20日提交的、题为“CRYPTOGRAPHIC PROTECTION OF I/O DATA I/OR DMA CAPABLE I/O CONTROLLERS”的美国临时专利申请序号62/194,763的优先权,以及于2015年7月21日提交的、题为“CRYPTOGRAPHIC PROTECTION OF I/O DATA I/OR DMA CAPABLE I/O CONTROLLERS”的美国临时专利申请序号62/195,148的优先权。
背景技术
为了安全性,典型的计算设备可以依靠软件代理(例如,防恶意软件代理)。然而,赶上用户设备上越来越多的恶意软件攻击是很困难的。为了对抗恶意软件威胁,存在通过在可信执行环境(TEE)内运行安全敏感的软件来保护安全敏感的软件的趋势。TEE提供了即使当系统的其他部分受到损害时也可以保护秘密的无菌环境。TEE的示例包括软件防护扩展(SGX)、安全虚拟机(VM)以及融合安全引擎(CSE)。TEE虽然对于保护TEE内的秘密很有用,但是不能保护传送到安全“容器”内和/或传送到安全“容器”外的诸如用户和传感器数据的I/O数据。对于可信I/O的安全要求根据使用情况和设备而变化,并且可能涉及保密性、完整性、活性以及重放保护的风格和组合。
在个人计算机平台上,保护I/O具有若干复杂性。为了保护用于给定用途的I/O,可能需要保护许多输入设备,因为平台通常具有经由不同I/O控制器连接的多个相同类别的设备,并且用户可能在使用期间动态地选择所连接的设备中的任一个。例如,当输入文本时,用户可以选择使用嵌入式键盘、USB键盘、或蓝牙(BT)键盘。用户还可以使用触摸屏来输入数据。这意味着所有键盘和触摸输入可能都需要被保护,以用于要求安全的文本输入的用途。另外,I/O设备可以由安全应用以及由常规应用使用,这意味着可能要求这些设备从受保护动态地切换到未加密(in-the-clear),并且反之亦然。
附图说明
本文描述的概念在附图中通过示例的方式而非通过限制的方式示出。为了简单且清楚地说明,图中所示的元素不一定按比例绘制。在认为适当的地方,附图标记在图中重复以指示对应或类似的元素。
图1是用于I/O数据的密码保护的计算设备的至少一个实施例的简化框图;
图2是可以由图1的计算设备建立的环境的至少一个实施例的简化框图;
图3是可以由图1-2的计算设备的密码引擎执行的用于I/O数据的密码保护的方法的至少一个实施例的简化流程图;
图4是示出可以由图1-2的计算设备处理的事务层分组前缀的至少一个实施例的示意图;
图5是用于对可以由图1-2的计算设备的密码引擎执行的写入事务进行处理的方法的至少一个实施例的简化流程图;
图6是示出图5的方法的操作的简化框图;
图7是用于对可以由图1-2的计算设备的密码引擎执行的读取请求事务进行处理的方法的至少一个实施例的简化流程图;
图8是示出图7的方法的操作的简化框图;
图9是用于对可以由图1-2的计算设备的密码引擎执行的读取完成事务进行处理的方法的至少一个实施例的简化流程图;以及
图10是示出图9的方法的操作的简化框图。
具体实施方式
虽然本公开的概念易受各种修改和替代形式影响,但是其特定实施例已经通过附图中的示例示出,并且将在本文中详述。然而,应该理解的是,并非旨在将本公开的概念限制到所公开的特定形式,而是相反,旨在覆盖与本公开和所附权利要求一致的所有修改、等同物以及替代物。
在说明书中提及“一个实施例”、“实施例”、“说明性实施例”等指示所描述的实施例可以包括特定特征、结构或特性,但是每个实施例可以必须或可以不一定包括该特定特征、结构或特性。此外,这种短语不一定指代相同的实施例。此外,当结合实施例描述特定特征、结构或特性时,认为结合无论是否明确描述的其他实施例来实现这样的特征、结构或特性是在本领域技术人员的知识范围内的。另外,应该认识到,包括在“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提供对经由直接存储器存取操作(DMAed)在平台I/O控制器144与存储器132之间传送的数据的即时(on-the-fly)加密和解密。每个DMA事务被标记有通道ID(CID),其表示与特定I/O设备146或I/O设备146的集合相关联的数据流。密码引擎140使用CID来可靠地识别必须受到保护的事务,取回对应的加密密钥,并且对DMA数据执行适当的密码操作。密码引擎140可以允许未受保护的事务不经改变地通过,而不执行密码操作。通过可信软件利用通道信息和相关联的加密密钥对密码引擎140进行编程。因此,密码引擎140提供保密性、完整性、防重放保护以及认证。
如下面进一步描述的,计算设备100以以下方式使用密码引擎140来保护用于具有DMA能力的设备146的I/O:其可以简化软件模型、能够支持高带宽I/O数据(使I/O控制器144的吞吐量与低时延匹配)、可扩展、并且可以通过基于硬件的保护来提供更高级别的安全性。另外,使用CID来识别安全DMA事务可以将对现有控制器144的影响最小化以支持可信I/O,并且可以不要求对连接到I/O控制器144的单独的设备146进行任何改变。此外,因为计算设备100保护数据有效载荷而不是数据路径,所以可以使用现有的不可信软件组件(例如,平台固件、操作系统、VMMS、总线驱动程序以及其他低级别硬件驱动程序),而不需要将这些组件包括在平台的可信代码库(TCB)中。另外,使用CID来保护DMA通道允许以设备级的粒度保护数据,并且还可以允许关于数据源真实性(即,数据来自本地平台上的特定设备146)的基于硬件的证明。
计算设备100可以体现为能够执行本文描述的功能的任何类型的计算或计算机设备,包括但不限于计算机、台式计算机、工作站、服务器、膝上型计算机、笔记本计算机、平板计算机、移动计算设备、可穿戴计算设备、网络器具、web器具、分布式计算系统、基于处理器的系统、和/或消费者电子设备。如图1所示,计算设备100说明性地包括处理器120、输入/输出子系统128、存储器132、数据存储设备134以及通信电路136。当然,在其他实施例中,计算设备100可以包括其他或附加组件,例如,在台式计算机中常见地发现的那些组件(例如,各种输入/输出设备)。另外,在一些实施例中,说明性组件中的一个或多个组件可以并入另一组件,或以其他方式形成另一组件的一部分。例如,在一些实施例中,存储器132或其部分可以并入处理器120中。
处理器120可以体现为能够执行本文描述的功能的任何类型的处理器。处理器120可以体现为单核或多核处理器、数字信号处理器、微控制器、或者其他处理器或处理/控制电路。如所示出的,处理器120可以包括硬件虚拟化支持122、安全隔离区(enclave)支持124以及密码引擎编程支持126。
硬件虚拟化支持122支持计算设备100对操作系统、应用以及其他软件的虚拟化执行。硬件虚拟化支持122可以通过提供以下两种执行模式来包括虚拟机扩展(VMX)支持:VMX根模式和VMX非根模式。VMX根模式允许执行软件对计算设备100及其硬件资源具有广泛的控制。相反地,管理程序、虚拟机监视器(VMM)、或主机操作系统(OS)可以在VMX根模式下执行。VMX非根模式限制对特定硬件指令的存取,同时仍然实现处理器120的普通环/特权系统。一个或多个客体OS可以在VMX非根模式下执行。这些客体OS可以在环零中执行,类似于不进行虚拟化地执行。硬件虚拟化支持122还可以支持扩展页表(EPT),其可以体现为硬件辅助的第二级页面地址转换。硬件虚拟化支持122可以体现为例如VT-x技术。
安全隔离区支持124允许处理器120建立被称为安全隔离区的可信执行环境,其中执行代码可以被测量、验证和/或以其他方式确定为是可信的。另外,可以对包括在安全隔离区中的代码和数据进行加密,或以其他方式保护其免于被在安全隔离区之外执行的代码存取。例如,包括在安全隔离区中的代码和数据可以在被执行时或者在被存储于处理器120的某个受保护的高速缓存存储器中时由处理器120的硬件保护机制进行保护。包括在安全隔离区中的代码和数据可以在存储于共享高速缓存或主存储器132中时被加密。安全隔离区支持124可以体现为允许处理器120在存储器132中建立一个或多个安全隔离区的一组处理器指令扩展。例如,安全隔离区支持124可以体现为软件防护扩展(SGX)技术。
密码引擎编程支持126允许处理器120对密码引擎140编程以提供对DMAI/O数据的密码保护。特别地,处理器120可以启用或禁用某些DMAI/O通道的加密,并且可以将加密密钥安全地提供给密码引擎140。密码引擎编程支持126可以体现为一个或多个专用处理器指令和相关联的硬件、伪代码、固件或处理器120的其他组件。处理器120的密码引擎编程支持126可以允许可信软件对密码引擎140进行编程,同时防止不可信软件对密码引擎140进行编程。
存储器132可以体现为能够执行本文描述的功能的任何类型的易失性或非易失性存储器或数据存储装置。在操作中,存储器132可以存储在计算设备100的操作期间使用的各种数据和软件,例如,操作系统、应用、程序、库以及驱动程序。存储器132经由I/O子系统128可通信地耦合到处理器120,I/O子系统128可以体现为用于促进与处理器120、存储器132以及计算设备100的其他组件的输入/输出操作的电路和/或组件。例如,I/O子系统128可以体现为或以其他方式包括存储器控制器中心、输入/输出控制中心、平台控制器中心、集成控制电路、固件设备、通信链路(即,点对点链路、总线链路、电线、电缆、光导、印刷电路板迹线等)和/或用于促进输入/输出操作的其他组件和子系统。另外或可替代地,在一些实施例中,存储器132可以经由处理器120的集成存储器控制器可通信地耦合到处理器120。I/O子系统128还可以包括安全路由支持130。安全路由支持130包括硬件支持,用于确保在流氓软件的影响下I/O数据无法在结构128中误传。安全路由支持130可以与密码引擎140一起用于提供对I/O数据的密码保护。在一些实施例中,I/O子系统128可以形成片上系统(SoC)的一部分,并且与处理器120、存储器132以及计算设备100的其他组件一起并入到单个集成电路芯片上。
数据存储设备134可以体现为被配置用于短期或长期存储数据的任何类型的设备或多个设备,例如,存储器设备和电路、存储器卡、硬盘驱动器、固态驱动器、或其他数据存储设备。在一些实施例中,数据存储设备134可以用于存储一个或多个安全隔离区的内容。安全隔离区的内容在由数据存储设备134存储时可以被加密以防止未经授权的存取。
计算设备100的通信电路136可以体现为能够通过网络实现计算设备100与其他远程设备之间的通信的任何通信电路、设备、或其集合。通信电路136可以被配置为使用任何一种或多种通信技术(例如,有线或无线通信)和相关联的协议(例如,以太网、WiMAX等)来实现这种通信。
在一些实施例中,计算设备100可以包括安全引擎138,该安全引擎138可以体现为能够向计算设备100提供安全相关的服务的任何(多个)硬件组件或电路。特别地,安全引擎138可以包括能够独立且安全地从处理器120执行固件和/或其他代码的微处理器、微控制器、或其他嵌入式控制器。因此,安全引擎138可以用于建立与由处理器120执行的代码分离的可信执行环境。安全引擎138可以通过诸如主机嵌入式控制器接口(HECI)的专用总线与处理器120和/或计算设备100的其他组件进行通信。安全引擎138还可以提供对计算设备100的远程配置、控制、或管理。在说明性实施例中,安全引擎138体现为并入计算设备100的片上系统(SoC)中的融合安全和管理性引擎(CSME)。在一些实施例中,安全引擎138可以体现为管理性引擎、带外处理器、可信平台模块(TPM)、或者其他安全引擎设备或设备集合。此外,在一些实施例中,安全引擎138还能够独立于计算设备100的状态(例如,独立于主处理器120的状态)使用通信电路136或专用通信电路进行通信,也被称为“带外”通信。
密码引擎140可以体现为能够执行本文描述的功能的任何微控制器、微处理器、功能块、逻辑、或者其他电路或电路集合。如下面进一步描述的,密码引擎140可以在对存储器132进行的一个或多个直接存储器存取(DMA)操作中加密和/或解密由I/O控制器144读取或写入的I/O数据。密码引擎140包括内部通道标识符(CID)表142,密码引擎140使用该表来动态地识别要保护的(多个)DMA通道。CID表142可以由可信软件来控制和/或编程,例如,使用处理器120的密码引擎编程支持126。CID表142的加密密钥和/或其他秘密信息不可用于不可信软件。在一些实施例中,密码引擎140可以与I/O子系统128和/或处理器120一起并入计算设备100的片上系统(SoC)中。另外,虽然密码引擎140被示为硬件密码引擎,但是应该理解,在一些实施例中,密码引擎140可以体现为计算设备100的任何安全计算组件,包括计算设备100的硬件、固件、处理器微代码、和/或软件的任何组合。
类似地,I/O控制器144可以体现为能够执行本文描述的功能的任何嵌入式控制器、微控制器、微处理器、功能块、逻辑、或者其他电路或电路集合。在一些实施例中,I/O控制器144中的一个或多个可以嵌入到计算设备100的另一组件中,例如,I/O子系统128和/或处理器120。另外或可替代地,I/O控制器144中的一个或多个可以经由诸如PCI快速(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事务断言适当的CID(例如,作为事务层分组(TLP)前缀的一部分),以唯一地识别DMA事务的源并提供活性保护。CID还实现I/O与不同的设备146的隔离。
现在参考图2,在说明性实施例中,计算设备100在操作期间建立环境200。说明性环境200包括可信应用模块202、保护模块204以及拦截模块206。环境200的各种模块可以体现为硬件、固件、微代码、软件、或其组合。因此,在一些实施例中,环境200的模块中的一个或多个模块可以体现为电路或电子设备集合(例如,可信应用电路202、保护电路204、和/或拦截电路206)。应当认识到,在这样的实施例中,可信应用电路202、保护电路204、和/或拦截电路206中的一个或多个可以形成以下中的一个或多个的一部分:处理器120、I/O子系统126、密码引擎140、和/或计算设备100的其他组件。另外,在一些实施例中,说明性模块中的一个或多个可以形成另一模块的一部分,和/或说明性模块中的一个或多个可以彼此独立。
拦截模块206被配置为拦截由I/O控制器144生成的直接存储器存取(DMA)事务。每个I/O控制器144可以生成一个或多个DMA事务,并且每个DMA事务包括标识相关联的I/O控制器144和I/O设备146的通道标识符。拦截模块206还被配置为根据通道标识符来确定是否保护DMA事务。拦截模块206可以被配置为响应于确定不保护DMA事务而将DMA事务传递到存储器132。
保护模块204被配置为响应于确定保护DMA事务而使用与通道标识符相关联的加密密钥来执行密码操作。所执行的密码操作可以取决于所拦截的DMA事务是写入事务、读取请求事务、还是读取完成事务。例如,对于包括明文I/O数据的写入事务,保护模块204可以被配置为根据明文I/O数据和加密密钥来生成经加密的密文。对于写入事务,保护模块204还可以被配置为响应于密码操作的执行而生成DMA写入事务,该DMA写入事务包括认证标签结构和认证标签缓冲器在存储器132中的地址。
对于读取请求事务,保护模块204可以被配置为从原始DMA事务生成包括数据标签和存储器132中的目标地址的DMA读取请求事务。保护模块204还可以被配置为生成包括认证标签(AT)和认证标签缓冲器在存储器132中的地址的另一DMA读取请求事务。对于读取请求事务,拦截模块206还可以被配置为响应于DMA读取请求事务的生成而拦截DMA读取完成事务。DMA读取完成事务可以包括数据标签和经加密的密文,或者AT标签和认证标签结构。对于被拦截的读取完成事务,保护模块204可以被配置为生成DMA读取完成事务,其包括明文I/O数据、来自DMA读取请求事务的控制器标签、以及通道标识符。
可信应用模块202被配置为响应于DMA写入事务的生成而通过可信软件利用加密密钥对存储在存储器132中的密文进行解密。可信应用模块202可以被配置为使用处理器120的安全隔离区支持124来建立应用安全隔离区。应用安全隔离区可以包括或以其他方式保护可信软件。虽然说明性实施例利用处理器120的安全隔离区支持124来保护可信软件,但是应当理解,本公开的技术可以将可信输入递送到任何可信执行环境(TEE),包括SGX安全隔离区、安全虚拟机(VM)、或其他TEE。
现在参考图3,在使用中,计算设备100可以执行用于利用直接存储器存取(DMA)控制器来密码地保护I/O的方法300。方法300可以由密码引擎140的硬件、固件、软件、或其他执行资源执行。方法300开始于框302,其中密码引擎140探查由I/O控制器144生成的针对存储器132的所有直接存储器存取(DMA)事务。密码引擎140可以在由I/O控制器144生成的每个DMA事务到达存储器132之前拦截该DMA事务。每个DMA事务可以体现为由I/O控制器144生成的用于将数据写入到存储器132(输入事务)或从存储器132读取数据(输出事务)的命令。特别地,I/O控制器144可以充当总线主控器并生成PCI快速(PCIe)事务层分组(TLP)以从存储器132读取数据或将数据写入到存储器132。因此,每个DMA事务可以体现为PCIe DMA事务,例如,写入事务、读取请求事务、或读取完成事务。在框304中,密码引擎140确定是否检测到事务。如果否,则方法300循环回框302,以继续针对DMA事务进行监测。如果检测到DMA事务,则方法300前进到框306。
在框306中,密码引擎140从DMA事务的事务层分组(TLP)前缀中读取通道标识符(CID)。CID唯一地标识计算设备100上的特定DMA通道,其表示与特定I/O设备146或I/O设备146的集合相关联的数据流。特别地,CID可以包括控制器标识符,其标识特定的I/O控制器144以及通道编号,该通道编号标识连接到I/O控制器144的特定I/O设备146。在一些实施例中,每个I/O控制器144可以在所生成的每个DMA事务中包括CID,而不管相关联的DMA通道是否安全。分配给CID的相应字段的值和CID的相应字段的大小可以取决于计算设备100和/或控制器144。
现在参考图4,图400示出了包括通道标识符404的TLP前缀402的一个可能实施例。图400示出了可以在PCIe兼容的计算设备100上使用的通道ID(CID)格式。如上面描述的,为了PCIe兼容的系统上的DMA数据,I/O控制器144充当总线主控器,生成PCIe事务层分组(TLP)以从存储器132读取数据/将数据写入到存储器132。TLP由4个DWORD报头组成,随后(在IA平台上)是高达256字节的数据。可选地,可以向TLP预先添加高达四个32位TLP前缀。如所示出的,计算设备100可以使用TLP前缀中的一个来携带用于DMA事务的CID信息。特别地,图400示出了可以与每个TLP一起被包括的供应商定义的TLP前缀402。TLP前缀402包括通道标识符字段404,其分别唯一地标识I/O控制器144和与事务相关联的设备146的DMA通道。说明性TLP前缀402还包括可以允许密码引擎140识别并管理其对相应事务的加密/解密的其他标记。
返回参考图3,在从DMA事务读取CID之后,在框308中,密码引擎140基于CID来确定是否保护DMA事务。如上面描述的,可以使用处理器120的密码引擎编程支持126将计算设备100的每个DMA通道单独地编程为安全的操作和脱离安全的操作。因此,密码引擎140可以使用任何适当的技术来确定与CID相关联的DMA通道是否已经被编程为安全的。在一些实施例中,在框310中,密码引擎140可以针对与从DMA事务读取的CID匹配的条目对CID表142进行搜索。如上面描述的,CID表142可以体现为内容可寻址存储器(CAM)或可以利用CID进行索引以取回匹配条目的其他数据结构。如果密码引擎140已经被编程为保护相关联的DMA通道,则CID表142可以包括与CID匹配的条目。如果相关联的DMA通道尚未被编程用于安全操作,则CID表142可能不包括匹配条目。另外或可替代地,在一些实施例中,CID表142中的匹配条目可以指示相关联的DMA通道是否已经被编程用于安全操作。在框312中,密码引擎140确定是否保护与CID相关联的DMA通道。如果否,则方法300向前分支到下面描述的框322。如果密码引擎140确定保护DMA通道,则方法300前进到框314。
在框314中,密码引擎140使用与匹配的CID相关联的加密密钥来执行与DMA事务相关联的密码操作。例如,密码引擎140可以从CID表142中的匹配条目取回加密密钥并且执行密码操作。密码引擎140可以使用存储在CID表142条目中的信息(例如,加密密钥、计数器值以及其他信息)来执行密码操作。特别地,密码引擎140可以在从I/O设备146输入的数据被写入存储器132之前对该数据进行加密,密码引擎140可以在从存储器132读取的数据被输出到I/O设备146之前对该数据进行解密,并且密码引擎140可以执行对数据的加密认证。在一些实施例中,密码操作可以作为处理多于一个DMA事务(例如,通过处理读取请求和相关联的读取完成)的结果来执行。
因此,在一些实施例中,在框316中,密码引擎140可以处理DMA写入事务。下面结合图5描述了用于处理DMA写入事务的方法的一个实施例。在一些实施例中,在框318中,密码引擎140可以处理DMA读取请求事务。下面结合图7描述了用于处理DMA读取请求事务的方法的一个实施例。在一些实施例中,在框320中,密码引擎140可以处理DMA读取完成事务。下面结合图9描述了用于处理DMA读取完成事务的方法的一个实施例。在执行密码操作之后,方法300循环回到框302以继续探查DMA事务。
返回参考框312,如果密码引擎140确定不保护DMA通道,则方法300分支到框322。在框322中,密码引擎140使DMA事务传递通过到存储器132而不执行密码操作。在被传递通过之后,DMA事务可以作为典型的事务由存储器132执行,而不受保护或以其他方式由密码引擎140保护。在一些实施例中,在框324中,密码引擎140可以从DMA事务剥离包括CID的TLP前缀。在这些实施例中,提供给存储器132的DMA事务可以与典型的未受保护的DMA事务相同或相似。在传递通过DMA事务之后,方法300循环回到框302以继续探查DMA事务。
现在参考图5,在使用中,计算设备100可以执行用于处理DMA写入事务的方法500。方法500可以作为方法300的一部分由密码引擎140执行,例如,结合图3的框316。方法500开始于框502,其中密码引擎140对DMA写入事务执行加密操作。如上面结合图3描述的,密码引擎140拦截DMA写入事务,并且确定DMA事务的通道标识符(CID)与CID表142中的条目匹配。DMA写入事务还包括附加信息,例如,存储器132中的目的地地址、由I/O设备146生成的明文I/O数据、以及其他I/O数据。
在框504中,密码引擎140从匹配的CID条目中取回加密密钥、CID表142索引以及计数器值。CID表142可以包括与通道保护相关的附加信息,例如,保护模式、方向位以及跳过。保护模式确定数据是应该仅被加密、仅受到完整性保护、还是完全受到保护。方向位指示保护是需要应用于输入数据还是输出数据。跳过值指示是否不应对明文I/O数据的某些字节进行加密。
在框506中,密码引擎140加密来自DMA写入事务的明文I/O数据以生成经加密的密文。密码引擎140可以使用任何适当的加密算法。例如,在一些实施例中,密码引擎140可以执行AES-GCM加密。密码引擎140使用从CID表142中取回的加密密钥对I/O数据进行加密。在一些实施例中,在框508中,密码引擎140可以跳过由匹配的CID表142条目中的跳过长度字段指定的一定数量的字节。例如,密码引擎140传递通过所跳过的字节而不进行加密。关于跳过,若干I/O协议包括一些元数据,其使得较低级别的驱动程序能够将数据路由到正确的软件堆栈。密码引擎140可以被编程为跳过对元数据进行加密,使元数据未加密以使得预先存在的驱动程序能够继续起作用。通过使路由(例如,报头)信息未加密,不仅可以减小计算设备100的可信代码库(TCB),而且还可以增加对现有I/O软件的重新使用。例如,人机接口设备(HID)设备报告的第一字节可以被系统HID类驱动程序用于路由。作为另一示例,蓝牙L2CAP分组的前9个字节可以被系统BT L2CAP驱动程序用于路由。
在框510中,密码引擎140基于DMA写入事务来生成认证标签结构(ATS)。ATS针对经加密的密文提供真实性和完整性保证。认证标签结构可以通过任何适当的经认证的加密算法(例如,AES-GCM)生成。密码引擎140可以针对接收到的每个DMA写入事务生成ATS。另外或可替代地,为了减少所生成的输入ATS的数量,密码引擎140可以跨用于相同输入操作的多个DMA写入事务计算单个ATS。
在框512中,密码引擎140生成有效载荷DMA写入事务。有效载荷DMA写入事务包括经加密的密文,并且指向原始DMA写入事务的目的地存储器地址。密码引擎140可以将有效载荷DMA写入事务提供给存储器132,将密文写入存储器132。在密文被写入存储器132之后,可信软件(例如,应用隔离区、设备驱动程序隔离区、或其他可信软件实体或可信执行环境)可以安全地从存储器132读取并解密该密文。
在框514中,密码引擎140生成ATS DMA写入事务。ATS DMA写入事务包括ATS,并且指向存储于存储器132中的认证标签(AT)缓冲器的地址。例如,密码引擎140可以在存储器132中维持一个或多个AT队列以存储所生成的ATS。密码引擎140可将ATS DMA写入事务提供给存储器132,将ATS写入存储器132。在ATS被写入存储器之后,可信软件(例如,应用隔离区、设备驱动程序隔离区、或其它可信软件实体或可信执行环境)可以从存储器132读取并验证ATS。在一些实施例中,在框516中,密码引擎140可以基于匹配的CID表142条目来确定AT缓冲器地址。换言之,AT缓冲器可以取决于相关联的DMA通道的CID。在生成ATS DMA写入事务之后,方法500完成。如上面结合图3所描述的,密码引擎140可以继续针对DMA事务进行监测。
现在参考图6,图600示出了对可以由方法500执行的DMA写入事务的处理。如所示出的,密码引擎140包括CID表142、AES-GCM块602以及认证标签(AT)控制块604。密码引擎140拦截DMA写入事务606,其包括明文有效载荷608、事务层分组(TLP)报头610以及TLP前缀402。TLP报头610标识存储器中的用于DMA写入事务的目的地地址612。如图4所示,TLP前缀402包括通道标识符(CID)404。
密码引擎140利用CID 404对CID表142进行索引。由CID表142生成的加密密钥、CID索引和计数器值以及明文数据608被提供给AES-GCM块602。AES-GCM块602生成密文有效载荷614和ATS数据616。将AT地址、AT大小以及标记提供给AT控制块604,该AT控制块604生成AT缓冲地址618。密码引擎140生成有效载荷DMA写入事务620,其包括密文有效载荷614和TLP报头610,该TLP报头610包括DMA写入事务606的目的地地址612。密码引擎140还生成ATSDMA写入事务622,其包括ATS数据616和TLP报头610,该TLP报头610包括AT缓冲地址618。
现在参考图7,在使用中,计算设备100可以执行用于处理DMA读取请求事务的方法700。方法700可以作为方法300的一部分由密码引擎140执行,例如,结合图3的框318。方法700开始于框702,其中密码引擎140将用于DMA读取请求的完成信息存储在密码引擎140的完成队列中。如上面结合图3所描述的,密码引擎140拦截DMA读取请求事务,并确定DMA事务的通道标识符(CID)与CID表142中的条目匹配。DMA读取请求事务还包括附加信息,例如,存储器132中的源地址、与I/O控制器144相关联的控制器标签、以及其他I/O数据。密码引擎140可以存储来自DMA读取请求事务的信息,其将用于处理相关联的DMA读取完成事务。在框704中,密码引擎140将来自DMA读取请求事务的控制器标签存储在完成队列中。控制器标签可以包括与I/O控制器144相关联的请求者ID以及附加标签数据。在框706中,密码引擎140将计数器值和来自匹配的CID表142条目的CID表142索引存储在完成队列中。
在框708中,密码引擎140生成有效载荷DMA读取请求。有效载荷DMA读取请求对存储在原始DMA读取请求事务的源地址处的数据进行请求。密码引擎140可以将有效载荷DMA读取请求事务提供给存储器132。如下面进一步描述的,存储器132可以生成读取响应事务,其包括从源地址读取的经加密的密文。在框710中,密码引擎140在有效载荷DMA读取请求中包括来自原始DMA读取请求事务的数据有效载荷的源地址。在框712中,密码引擎140在有效载荷DMA读取请求中包括密码引擎数据标签。该数据标签与密码引擎140相关联,并且可以由密码引擎140用于识别相关联的读取完成事务。例如,数据标签可以包括与密码引擎140相关联的请求者ID以及附加标签数据。存储器132可以在读取完成中包括数据标签,允许将读取完成路由到密码引擎140。另外,完成队列可以利用数据标签进行索引,以检索相关联的完成信息。
在框714中,密码引擎140生成认证标签结构(ATS)DMA读取请求。ATS DMA读取请求对存储在存储器132中的ATS缓冲器中的ATS进行请求。可以基于相关联的DMA通道的CID来确定ATS缓冲器的地址。在框716中,密码引擎140在ATS DMA读取请求中包括ATS缓冲器地址。说明性地,ATS缓冲器基于匹配的CID表142条目;例如,缓冲地址或相关联的地址(例如,AT队列的地址)可以包括在CID表142条目中。在框718中,密码引擎140在ATS DMA读取请求中包括密码引擎AT标签。AT标签与密码引擎140相关联,并且可以由密码引擎140用于识别相关联的读取完成标签。例如,AT标签可以包括与密码引擎140相关联的请求者ID以及附加标签数据。存储器132可以在读取完成中包括AT标签,允许将读取完成路由到密码引擎140。另外,完成队列可以利用AT标签进行索引,以检索相关联的完成信息。上面描述的AT标签和数据标签可以是不同的,以允许密码引擎140区分相关联的读取完成事务。
在生成有效载荷DMA读取请求和ATS DMA读取请求之后,方法700完成。存储器132可以处理读取请求并且生成包括从存储器132读取的数据的对应读取完成。如上面结合图3所描述的,密码引擎140可以继续针对DMA事务进行监测。
现在参考图8,图800示出了对可以由方法700执行的DMA读取请求事务的处理。如所示出的,密码引擎140包括CID表142、AT控制块604以及完成队列802。密码引擎140拦截DMA读取请求事务804,其包括事务层分组(TLP)报头610和TLP前缀402。TLP报头610标识存储器中的用于DMA读取请求事务的源地址806以及控制器标签808。如图4所示,TLP前缀402包括通道标识符(CID)404。
密码引擎140利用CID 404对CID表142进行索引。将由CID表142生成的CID索引和计数器值以及控制器标签808提供给完成队列802。完成队列802生成相关联的数据标签810和AT标签812。将AT地址、AT大小以及标记提供给AT控制块604,该AT控制块生成AT缓冲地址814。密码引擎140生成有效载荷DMA读取完成事务816,其包括TLP报头610,该TLP报头610包括DMA读取请求事务804的源地址806和数据标签810。密码引擎140还生成ATS DMA读取请求事务818,其包括TLP报头610,该TLP报头610包括AT缓冲器地址814和AT标签812。
现在参考图9,在使用中,计算设备100可以执行用于处理DMA读取完成事务的方法900。方法900可以作为方法300的一部分由密码引擎140执行,例如,结合图3的框320。方法900开始于框902,其中密码引擎140接收有效载荷读取完成事务和对应的ATS读取完成事务。如上所述,读取完成事务可以各自由存储器132响应于来自密码引擎140的对应读取请求事务而生成。如上所述,可以基于由密码引擎140包括在对应的读请求事务中的数据标签和/或AT标签,将DMA读取完成事务从存储器132路由到密码引擎140。
在框904中,密码引擎140对有效载荷读取完成事务执行解密操作。特别地,密码引擎140可以执行经认证的解密操作以解密并验证存储在存储器132中的经加密的数据。在框906中,密码引擎140从密码引擎140的完成队列中取回计数器值和CID表索引。如上面结合图7的框702所描述的,密码引擎140响应于先前的读取请求事务而将这些值存储在完成队列中。在框908中,密码引擎140使用CID表142索引从CID表142中取回加密密钥。如上所述,CID表142还可以包括与通道保护相关的附加信息,例如,保护模式、方向位以及跳过。
在框910中,密码引擎140对来自有效载荷读取完成事务的密文进行解密以生成明文I/O数据。密文可以对应于由可信软件(例如,应用隔离区、设备驱动程序隔离区、或其他可信软件实体或可信执行环境)存储在存储器132中的经加密的I/O数据。密码引擎140可以使用任何适当的解密算法。例如,在一些实施例中,密码引擎140可以执行AES-GCM解密。密码引擎140使用从CID表142取回的加密密钥来解密密文。在一些实施例中,在框912中,密码引擎140可以跳过由匹配的CID表142条目中的跳过长度字段指定的一定数量的字节。例如,密码引擎140可以传递通过所跳过的字节而不进行解密。
在框914中,密码引擎140使用来自ATS读取完成事务的ATS数据来验证密文。因此,密码引擎140为经加密的密文提供真实性和完整性保证。可以使用认证标签结构通过任何适当的经认证的加密算法(例如,AES-GCM)来验证密文。在框916中,密码引擎140确定解密操作是否被成功地验证。如果否,则方法900分支到框918,其中密码引擎140指示验证错误。返回参考框916,如果解密被成功验证,则方法900前进到框920。
在框920中,密码引擎140生成DMA读取完成事务。DMA读取完成包括明文I/O数据,并且指向生成原始DMA读取请求事务的I/O控制器144。在框922中,密码引擎140包括TLP前缀,其包括相关联的I/O设备146的通道标识符(CID)。例如,CID可以从原始DMA读取请求事务中存储。在框924中,密码引擎包括与来自完成队列的原始DMA读取请求相关联的控制器标签。包括控制器标签模拟来自存储器132的读取完成,并且使得DMA读取完成事务被路由到正确的I/O控制器144。在框926中,密码引擎140包括经解密的明文I/O数据。在生成读取完成事务之后,方法900完成,并且I/O控制器144可以将来自读取完成事务的I/O数据输出到适当的I/O设备146。因为I/O数据未加密地从密码引擎140传输到I/O控制器144,并且然后传输到I/O设备146,所以I/O设备146不需要执行任何解密操作。如上面结合图3所描述的,密码引擎140可以继续针对DMA事务进行监测。
现在参考图10,图1000示出了对可以由方法900执行的读取完成事务的处理。如所示出的,密码引擎140包括CID表142、AES-GCM块602以及完成队列802。密码引擎140拦截有效载荷读取完成事务1002,其包括密文有效载荷1004和TLP报头610。该TLP报头610包括数据标签810,其允许密码引擎140识别有效载荷读取完成事务1002。密码引擎140还拦截ATS读取完成事务1006,其包括ATS有效载荷1008和TLP报头610。该TLP报头610包括AT标签812,其允许密码引擎140识别ATS读取完成事务1006。
密码引擎140使用数据标签810和/或AT标签812来从完成队列802中查找计数器值和CID表142索引。密码引擎140利用CID表142索引对CID表142进行索引以取回加密密钥。将加密密钥、计数器值、密文有效载荷1004以及ATS有效载荷1008提供给AES-GCM块602。AES-GCM块602使用ATS有效载荷1008来验证密文有效载荷1004,并生成经解密的明文有效载荷1010。密码引擎140生成读取完成事务1012,其包括明文有效载荷1010、包括控制器标签808的TLP报头610、以及包括相关联的DMA通道的CID 404的TLP前缀402。
应当理解的是,在一些实施例中,方法300、500、700、和/或900可以体现为存储在计算机可读介质上的各种指令,其可以由密码引擎140、处理器120、和/或计算设备100的其他组件执行,以使得计算设备100执行对应的方法300、500、700、和/或900。计算机可读介质可以体现为能够由计算设备100读取的任何类型的介质,包括但不限于存储器132、数据存储设备134、密码引擎140的存储器、密码引擎140的固件、和/或其它介质。示例
下面提供了本文公开的技术的说明性示例。这些技术的实施例可以包括下面描述的示例中的任何一个或多个,以及任何组合。
示例1包括一种用于安全I/O的计算设备,该计算设备包括:I/O控制器,其用于生成直接存储器存取(DMA)事务,其中,DMA事务包括指示I/O控制器并且指示耦合到I/O控制器的I/O设备的通道标识符;拦截模块,其用于(i)拦截来自I/O控制器的DMA事务,并且(ii)根据通道标识符来确定是否保护DMA事务;以及保护模块,其用于响应于保护DMA事务的确定,而使用与通道标识符相关联的加密密钥来执行密码操作。
示例2包括示例1的主题,并且还包括密码引擎,密码引擎包括通道标识符表和硬件密码块,其中:拦截DMA事务包括由密码引擎拦截DMA事务;确定是否保护DMA事务包括:(i)由密码引擎确定DMA事务的通道标识符是否与密码引擎的通道标识符表中的条目相匹配,以及(ii)由密码引擎响应于DMA事务的通道标识符与条目相匹配的确定,而从通道标识符表中的该条目取回加密密钥;并且执行密码操作包括由密码引擎使用加密密钥利用密码引擎的硬件密码块来执行密码操作。
示例3包括示例1和2中任一项的主题,并且其中,通道标识符表包括密码引擎的内容可寻址存储器。
示例4包括示例1-3中任一项的主题,并且其中,DMA事务包括事务层分组(TLP)前缀,其中,TLP前缀包括通道标识符。
示例5包括示例1-4中任一项的主题,并且其中,拦截模块还响应于不保护DMA事务的确定而将DMA事务传递到计算设备的存储器。
示例6包括示例1-5中任一项的主题,并且其中:DMA事务包括DMA写入事务,其进一步包括由I/O设备生成的明文I/O数据;并且执行密码操作包括根据明文I/O数据和加密密钥来生成经加密的密文。
示例7包括示例1-6中任一项的主题,并且其中:保护模块还用于响应于密码操作的执行而生成第二DMA写入事务,其中,第二DMA写入事务包括密文和计算设备的存储器中的目标地址;其中,DMA写入事务还包括存储器中的目标地址。
示例8包括示例1-7中任一项的主题,并且还包括可信应用模块,其用于响应于第二DMA写入事务的生成,由计算设备的可信软件利用加密密钥来对密文进行解密。
示例9包括示例1-8中任一项的主题,并且还包括处理器,处理器包括安全隔离区支持,其中,可信应用模块还建立应用安全隔离区,其中,应用安全隔离区包含可信软件。
示例10包括示例1-9中任一项的主题,并且其中,执行密码操作还包括根据明文I/O数据和加密密钥来生成认证标签结构。
示例11包括示例1-10中任一项的主题,并且其中,保护模块还用于响应于密码操作的执行而生成第二DMA写入事务,其中,第二DMA写入事务包括认证标签结构和认证标签缓冲器在计算设备的存储器中的地址。
示例12包括示例1-11中任一项的主题,并且其中,DMA事务包括DMA读取请求事务,DMA读取请求事务包括与I/O控制器相关联的控制器标签和存储器中的目标地址。
示例13包括示例1-12中任一项的主题,并且其中,保护模块还用于响应于保护DMA事务的确定而生成第二DMA读取请求事务,其中,第二DMA读取请求事务包括数据标签和目标地址。
示例14包括示例1-13中任一项的主题,并且其中:拦截模块还用于响应于第二DMA读取请求事务的生成而拦截DMA读取完成事务,其中,DMA读取完成事务包括数据标签和经加密的密文;并且执行密码操作包括根据密文和加密密钥来生成经解密的明文I/O数据。
示例15包括示例1-14中任一项的主题,并且其中,保护模块还用于响应于密码操作的执行而生成第二DMA读取完成事务,其中,第二DMA读取完成事务包括明文I/O数据、控制器标签以及通道标识符。
示例16包括示例1-15中任一项的主题,并且其中,保护模块还用于响应于保护DMA事务的确定而生成第二DMA读取请求事务,其中,第二DMA读取请求事务包括认证标签(AT)标签以及认证标签缓冲器在存储器中的地址。
示例17包括示例1-16中任一项的主题,并且其中:拦截模块还用于响应于第二DMA读取请求事务的生成而拦截DMA读取完成事务,其中,DMA读取完成事务包括AT标签和认证标签结构;并且执行密码操作包括根据认证标签结构和加密密钥来对经加密的密文进行认证。
示例18包括一种用于安全I/O的方法,该方法包括:由计算设备拦截来自计算设备的I/O控制器的直接存储器存取(DMA)事务,其中,DMA事务包括指示I/O控制器并且指示耦合到I/O控制器的I/O设备的通道标识符;由计算设备根据通道标识符来确定是否保护DMA事务;以及由计算设备响应于确定保护DMA事务而使用与通道标识符相关联的加密密钥来执行密码操作。
示例19包括示例18的主题,并且其中:拦截DMA事务包括由计算设备的密码引擎拦截DMA事务;确定是否保护DMA事务包括:(i)由密码引擎确定DMA事务的通道标识符是否与密码引擎的通道标识符表中的条目相匹配,以及(ii)响应于确定DMA事务的通道标识符与条目相匹配,由密码引擎从通道标识符表的该条目取回加密密钥;并且执行密码操作包括由密码引擎使用加密密钥利用密码引擎的硬件密码块来执行密码操作。
示例20包括示例18和19中任一项的主题,并且其中,确定DMA事务的通道标识符是否与通道标识符表中的条目相匹配包括搜索密码引擎的内容可寻址存储器。
示例21包括示例18-20中任一项的主题,并且其中,拦截DMA事务包括拦截包括事务层分组(TLP)前缀的DMA事务,其中,TLP前缀包括通道标识符。
示例22包括示例18-21中任一项的主题,并且还包括响应于确定不保护DMA事务而将DMA事务传递到计算设备的存储器。
示例23包括示例18-22中任一项的主题,并且其中:拦截DMA事务包括拦截DMA写入事务,其中,DMA事务还包括由I/O设备生成的明文I/O数据;并且执行密码操作包括根据明文I/O数据和加密密钥来生成经加密的密文。
示例24包括示例18-23中任一项的主题,并且还包括:由计算设备响应于执行密码操作而生成第二DMA写入事务,其中,第二DMA写入事务包括密文和计算设备的存储器中的目标地址;其中,DMA写入事务还包括存储器中的目标地址。
示例25包括示例18-24中任一项的主题,并且还包括响应于生成第二DMA写入事务,由计算设备的可信软件利用加密密钥对密文进行解密。
示例26包括示例18-25中任一项的主题,并且还包括由包括安全隔离区支持的计算设备的处理器建立应用安全隔离区,其中,应用安全隔离区包括可信软件。
示例27包括示例18-26中任一项的主题,并且其中,执行密码操作还包括根据明文I/O数据和加密密钥来生成认证标签结构。
示例28包括示例18-27中任一项的主题,并且还包括由计算设备响应于执行密码操作而生成第二DMA写入事务,其中,第二DMA写入事务包括认证标签结构和认证标签缓冲器在计算设备的存储器中的地址。
示例29包括示例18-28中任一项的主题,并且其中,拦截DMA事务包括拦截DMA读取请求事务,其中,DMA事务包括与I/O控制器相关联的控制器标签和计算设备的存储器中的目标地址。
示例30包括示例18-29中任一项的主题,并且还包括由计算设备响应于确定保护DMA事务而生成第二DMA读取请求事务,其中,第二DMA读取请求事务包括数据标签和目标地址。
示例31包括示例18-30中任一项的主题,并且还包括由计算设备响应于生成第二DMA读取请求事务而拦截DMA读取完成事务,其中,DMA读取完成事务包括数据标签和经加密的密文;其中,执行密码操作包括根据密文和加密密钥来生成经解密的明文I/O数据。
示例32包括示例18-31中任一项的主题,并且还包括由计算设备响应于执行密码操作而生成第二DMA读取完成事务,其中,第二DMA读取完成事务包括明文I/O数据、控制器标签以及通道标识符。
示例33包括示例18-32中任一项的主题,并且还包括由计算设备响应于确定保护DMA事务而生成第二DMA读取请求事务,其中,第二DMA读取请求事务包括认证标签(AT)标签和认证标签缓冲器在存储器中的地址。
示例34包括示例18-33中任一项的主题,并且还包括由计算设备响应于生成第二DMA读取请求事务而拦截DMA读取完成事务,其中,DMA读取完成事务包括AT标签和认证标签结构;其中,执行密码操作包括根据认证标签结构和加密密钥来对经加密的密文进行认证。
示例35包括一种计算设备,包括:处理器;以及存储器,其中存储有多个指令,该指令在由处理器执行时使得计算设备执行示例18-34中任一项的方法。
示例36包括一种或多种机器可读存储介质,包括存储在其上的多个指令,该指令响应于被执行而使得计算设备执行示例18-34中任一项的方法。
示例37包括一种计算设备,其包括用于执行示例18-34中任一项的方法的模块。
示例38包括一种用于安全I/O的计算设备,该计算设备包括:用于拦截来自计算设备的I/O控制器的直接存储器存取(DMA)事务的模块,其中,DMA事务包括指示I/O控制器并且指示耦合到I/O控制器的I/O设备的通道标识符;用于根据通道标识符来确定是否保护DMA事务的模块;以及用于响应于确定保护DMA事务而使用与通道标识符相关联的加密密钥来执行密码操作的模块。
示例39包括示例38的主题,并且其中:用于拦截DMA事务的模块包括用于由计算设备的密码引擎拦截DMA事务的模块;用于确定是否保护DMA事务的模块包括:(i)用于由密码引擎确定DMA事务的通道标识符是否与密码引擎的通道标识符表中的条目相匹配的模块,以及(ii)用于响应于确定DMA事务的通道标识符与条目匹配由密码引擎从通道标识符表中的条目取回加密密钥的模块;并且用于执行密码操作的模块包括用于由密码引擎使用加密密钥利用密码引擎的硬件密码块来执行密码操作的模块。
示例40包括示例38和39中任一项的主题,并且其中,用于确定DMA事务的通道标识符是否与通道标识符表中的条目相匹配的模块包括用于搜索密码引擎的内容可寻址存储器的模块。
示例41包括示例38-40中任一项的主题,并且其中,用于拦截DMA事务的模块包括用于拦截包括事务层分组(TLP)前缀的DMA事务的模块,其中,TLP前缀包括通道标识符。
示例42包括示例38-41中任一项的主题,并且还包括用于响应于确定不保护DMA事务而将DMA事务传递到计算设备的存储器的模块。
示例43包括示例38-42中任一项的主题,并且其中:用于拦截DMA事务的模块包括用于拦截DMA写入事务的模块,其中,DMA事务进一步包括由I/O设备生成的明文I/O数据;并且用于执行密码操作的模块包括用于根据明文I/O数据和加密密钥来生成经加密的密文的模块。
示例44包括示例38-43中任一项的主题,并且还包括:用于响应于执行密码操作而生成第二DMA写入事务的模块,其中,第二DMA写入事务包括密文和计算设备的存储器中的目标地址;其中,DMA写入事务还包括存储器中的目标地址。
示例45包括示例38-44中任一项的主题,并且还包括用于响应于生成第二DMA写入事务由计算设备的可信软件利用加密密钥来对密文进行解密的模块。
示例46包括示例38-45中任一项的主题,并且还包括用于由包括安全隔离区支持的计算设备的处理器来建立应用安全隔离区的模块,其中,应用安全隔离区包括可信软件。
示例47包括示例38-46中任一项的主题,并且其中,用于执行密码操作的模块还包括用于根据明文I/O数据和加密密钥来生成认证标签结构的模块。
示例48包括示例38-47中任一项的主题,并且还包括用于响应于执行密码操作而生成第二DMA写入事务的模块,其中,第二DMA写入事务包括认证标签结构和认证标签缓冲器在计算设备的存储器中的地址。
示例49包括示例38-48中任一项的主题,并且其中,用于拦截DMA事务的模块包括用于拦截DMA读取请求事务的模块,其中,DMA事务包括与I/O控制器相关联的控制器标签以及计算设备的存储器中的目标地址。
示例50包括示例38-49中任一项的主题,并且还包括用于响应于确定保护DMA事务而生成第二DMA读取请求事务的模块,其中,第二DMA读取请求事务包括数据标签和目标地址。
示例51包括示例38-50中任一项的主题,并且还包括:用于响应于生成第二DMA读取请求事务而拦截DMA读取完成事务的模块,其中,DMA读取完成事务包括数据标签和经加密的密文;其中,用于执行密码操作的模块包括用于根据密文和加密密钥来生成经解密的明文I/O数据的模块。
示例52包括示例38-51中任一项的主题,并且还包括用于响应于执行密码操作而生成第二DMA读取完成事务的模块,其中,第二DMA读取完成事务包括明文I/O数据、控制器标签以及通道标识符。
示例53包括示例38-52中任一项的主题,并且还包括用于响应于确定保护DMA事务而生成第二DMA读取请求事务的模块,其中,第二DMA读取请求事务包括认证标签(AT)标签和认证标签缓冲器在存储器中的地址。
示例54包括示例38-53中任一项的主题,并且还包括:用于响应于生成第二DMA读取请求事务而拦截DMA读取完成事务的模块,其中,DMA读取完成事务包括AT标签和认证标签结构;其中,用于执行密码操作的模块包括用于根据认证标签结构和加密密钥来对经加密的密文进行认证的模块。
Claims (24)
1.一种用于安全I/O的计算设备,所述计算设备包括:
I/O控制器,其用于生成直接存储器存取(DMA)事务,其中,所述DMA事务包括指示所述I/O控制器并且指示耦合到所述I/O控制器的I/O设备的通道标识符,其中,所述DMA事务包括事务层分组(TLP)前缀,并且其中,所述TLP前缀包括所述通道标识符;
拦截模块,其用于(i)拦截来自所述I/O控制器的所述DMA事务,并且(ii)根据所述通道标识符来确定是否保护所述DMA事务;以及
保护模块,其用于响应于保护所述DMA事务的确定而使用与所述通道标识符相关联的加密密钥来执行密码操作;
其中,所述拦截模块还用于响应于不保护所述DMA事务的确定,通过剥离包括所述通道标识符的所述TLP前缀来对所述DMA事务进行传递。
2.根据权利要求1所述的计算设备,还包括密码引擎,所述密码引擎包括通道标识符表和硬件密码块,其中:
拦截所述DMA事务包括由所述密码引擎拦截所述DMA事务;
确定是否保护所述DMA事务包括:(i)由所述密码引擎确定所述DMA事务的通道标识符是否与所述密码引擎的通道标识符表中的条目相匹配,以及(ii)响应于所述DMA事务的通道标识符与所述条目相匹配的确定,由所述密码引擎从所述通道标识符表中的所述条目取回所述加密密钥;并且
执行所述密码操作包括由所述密码引擎使用所述加密密钥利用所述密码引擎的硬件密码块来执行密码操作。
3.根据权利要求2所述的计算设备,其中,所述通道标识符表包括所述密码引擎的内容可寻址存储器。
4.根据权利要求1所述的计算设备,其中:
所述DMA事务包括DMA写入事务,所述DMA写入事务进一步包括由所述I/O设备生成的明文I/O数据;并且
执行所述密码操作包括根据所述明文I/O数据和所述加密密钥来生成经加密的密文。
5.根据权利要求4所述的计算设备,其中:
所述保护模块还用于响应于所述密码操作的执行而生成第二DMA写入事务,其中,所述第二DMA写入事务包括所述密文和所述计算设备的存储器中的目标地址;
其中,所述DMA写入事务还包括所述存储器中的目标地址。
6.根据权利要求5所述的计算设备,还包括可信应用模块,所述可信应用模块用于响应于所述第二DMA写入事务的生成,由所述计算设备的可信软件利用所述加密密钥来对所述密文进行解密。
7.根据权利要求6所述的计算设备,还包括处理器,所述处理器包括安全隔离区支持,其中,所述可信应用模块还用于建立应用安全隔离区,其中,所述应用安全隔离区包括所述可信软件。
8.根据权利要求4所述的计算设备,其中,执行所述密码操作还包括根据所述明文I/O数据和所述加密密钥来生成认证标签结构。
9.根据权利要求1所述的计算设备,其中,所述DMA事务包括DMA读取请求事务,所述DMA读取请求事务包括与所述I/O控制器相关联的控制器标签以及存储器中的目标地址。
10.根据权利要求9所述的计算设备,其中,所述保护模块还用于响应于保护所述DMA事务的所述确定而生成第二DMA读取请求事务,其中,所述第二DMA读取请求事务包括数据标签和所述目标地址。
11.根据权利要求10所述的计算设备,其中:
所述拦截模块还用于响应于所述第二DMA读取请求事务的生成而拦截DMA读取完成事务,其中,所述DMA读取完成事务包括所述数据标签和经加密的密文;并且
执行所述密码操作包括根据所述密文和所述加密密钥来生成经解密的明文I/O数据。
12.根据权利要求9所述的计算设备,其中,所述保护模块还用于响应于保护所述DMA事务的所述确定而生成第二DMA读取请求事务,其中,所述第二DMA读取请求事务包括认证标签(AT)标签以及认证标签缓冲器在所述存储器中的地址。
13.一种用于安全I/O的方法,所述方法包括:
由计算设备拦截来自所述计算设备的I/O控制器的直接存储器存取(DMA)事务,其中,所述DMA事务包括指示所述I/O控制器并且指示耦合到所述I/O控制器的I/O设备的通道标识符,其中,所述DMA事务包括事务层分组(TLP)前缀,并且其中,所述TLP前缀包括所述通道标识符;
由所述计算设备根据所述通道标识符来确定是否保护所述DMA事务;
由所述计算设备响应于确定保护所述DMA事务而使用与所述通道标识符相关联的加密密钥来执行密码操作;以及
由所述计算设备响应于确定不保护所述DMA事务,通过剥离包括所述通道标识符的所述TLP前缀来对所述DMA事务进行传递。
14.根据权利要求13所述的方法,其中:
拦截所述DMA事务包括由所述计算设备的密码引擎拦截所述DMA事务;
确定是否保护所述DMA事务包括:(i)由所述密码引擎确定所述DMA事务的通道标识符是否与所述密码引擎的通道标识符表中的条目相匹配,以及(ii)响应于确定所述DMA事务的通道标识符与所述条目相匹配,由所述密码引擎从所述通道标识符表中的所述条目取回所述加密密钥;并且
执行所述密码操作包括由所述密码引擎使用所述加密密钥利用所述密码引擎的硬件密码块来执行密码操作。
15.根据权利要求13所述的方法,其中:
拦截所述DMA事务包括拦截DMA写入事务,其中,所述DMA事务还包括由所述I/O设备生成的明文I/O数据;并且
执行所述密码操作包括根据所述明文I/O数据和所述加密密钥来生成经加密的密文。
16.根据权利要求13所述的方法,其中,拦截所述DMA事务包括拦截DMA读取请求事务,其中,所述DMA事务包括与所述I/O控制器相关联的控制器标签以及所述计算设备的存储器中的目标地址。
17.一种用于安全I/O的计算设备,所述计算设备包括:
用于拦截来自所述计算设备的I/O控制器的直接存储器存取(DMA)事务的模块,其中,所述DMA事务包括指示所述I/O控制器并且指示耦合到所述I/O控制器的I/O设备的通道标识符,其中,所述DMA事务包括事务层分组(TLP)前缀,并且其中,所述TLP前缀包括所述通道标识符;
用于根据所述通道标识符来确定是否保护所述DMA事务的模块;
用于响应于确定保护所述DMA事务而使用与所述通道标识符相关联的加密密钥来执行密码操作的模块;以及
用于响应于确定不保护所述DMA事务,通过剥离包括所述通道标识符的所述TLP前缀来对所述DMA事务进行传递的模块。
18.根据权利要求17所述的计算设备,其中:
用于拦截所述DMA事务的模块包括用于由所述计算设备的密码引擎拦截所述DMA事务的模块;
用于确定是否保护所述DMA事务的模块包括:(i)用于由所述密码引擎确定所述DMA事务的通道标识符是否与所述密码引擎的通道标识符表中的条目相匹配的模块,以及(ii)用于响应于确定所述DMA事务的通道标识符与所述条目相匹配而由所述密码引擎从所述通道标识符表中的所述条目取回所述加密密钥的模块;并且
用于执行所述密码操作的模块包括用于由所述密码引擎使用所述加密密钥利用所述密码引擎的硬件密码块来执行密码操作的模块。
19.根据权利要求17所述的计算设备,其中:
用于拦截所述DMA事务的模块包括用于拦截DMA写入事务的模块,其中,所述DMA事务还包括由所述I/O设备生成的明文I/O数据;并且
用于执行所述密码操作的模块包括用于根据所述明文I/O数据和所述加密密钥来生成经加密的密文的模块。
20.根据权利要求19所述的计算设备,还包括:
用于响应于执行所述密码操作而生成第二DMA写入事务的模块,其中,所述第二DMA写入事务包括所述密文和所述计算设备的存储器中的目标地址;
其中,所述DMA写入事务还包括所述存储器中的目标地址。
21.根据权利要求17所述的计算设备,其中,用于拦截所述DMA事务的模块包括用于拦截DMA读取请求事务的模块,其中,所述DMA事务包括与所述I/O控制器相关联的控制器标签以及所述计算设备的存储器中的目标地址。
22.根据权利要求21所述的计算设备,还包括用于响应于确定保护所述DMA事务而生成第二DMA读取请求事务的模块,其中,所述第二DMA读取请求事务包括数据标签和所述目标地址。
23.一种计算设备,包括:
处理器;以及
存储器,其中存储有多个指令,所述指令在由所述处理器执行时使得所述计算设备执行根据权利要求13-16中任一项所述的方法。
24.一种或多种机器可读存储介质,包括存储在其上的多个指令,所述指令响应于被执行而使得计算设备执行根据权利要求13-16中任一项所述的方法。
Applications Claiming Priority (7)
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 | ||
US14/974,956 US10181946B2 (en) | 2015-07-20 | 2015-12-18 | Cryptographic protection of I/O data for DMA capable I/O controllers |
US14/974,956 | 2015-12-18 | ||
PCT/US2016/038389 WO2017014885A1 (en) | 2015-07-20 | 2016-06-20 | Cryptographic protection of i/o data for dma capable i/o controllers |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107851161A CN107851161A (zh) | 2018-03-27 |
CN107851161B true CN107851161B (zh) | 2023-01-13 |
Family
ID=57834499
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680042468.4A Active CN107851161B (zh) | 2015-07-20 | 2016-06-20 | 对具有dma能力的i/o控制器的i/o数据进行密码保护 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10181946B2 (zh) |
EP (1) | EP3326102B1 (zh) |
CN (1) | CN107851161B (zh) |
WO (1) | WO2017014885A1 (zh) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10586052B1 (en) * | 2017-10-04 | 2020-03-10 | EMC IP Holding Company LLC | Input/output (I/O) inspection methods and systems to detect and defend against cybersecurity threats |
CN112005237B (zh) * | 2018-04-30 | 2024-04-30 | 谷歌有限责任公司 | 安全区中的处理器与处理加速器之间的安全协作 |
CN111566989B (zh) | 2018-06-14 | 2022-06-07 | 华为技术有限公司 | 一种密钥处理方法及装置 |
US11169935B2 (en) * | 2018-06-20 | 2021-11-09 | Intel Corporation | Technologies for low-latency cryptography for processor-accelerator communication |
CN111492353B (zh) * | 2018-08-15 | 2023-07-18 | 华为技术有限公司 | 一种安全的数据转移装置、系统和方法 |
KR20200032945A (ko) * | 2018-09-19 | 2020-03-27 | 시큐리티플랫폼 주식회사 | 가상사설망 기능을 수행하기 위한 시스템 온 칩 및 이를 포함하는 시스템 |
WO2020248088A1 (zh) * | 2019-06-10 | 2020-12-17 | 华为技术有限公司 | 安全访问方法及电子设备 |
US11403234B2 (en) | 2019-06-29 | 2022-08-02 | Intel Corporation | Cryptographic computing using encrypted base addresses and used in multi-tenant environments |
US11575504B2 (en) | 2019-06-29 | 2023-02-07 | Intel Corporation | Cryptographic computing engine for memory load and store units of a microarchitecture pipeline |
US11580234B2 (en) | 2019-06-29 | 2023-02-14 | Intel Corporation | Implicit integrity for cryptographic computing |
US11250165B2 (en) | 2019-12-20 | 2022-02-15 | Intel Corporation | Binding of cryptographic operations to context or speculative execution restrictions |
US20200257827A1 (en) * | 2019-06-29 | 2020-08-13 | Intel Corporation | Memory write for ownership access in a core |
US20200145187A1 (en) * | 2019-12-20 | 2020-05-07 | Intel Corporation | Bit-length parameterizable cipher |
US20200151362A1 (en) * | 2019-08-21 | 2020-05-14 | Intel Corporation | Integrity and data encryption (ide) over computer buses |
CN111290979B (zh) * | 2020-03-23 | 2021-08-17 | 优刻得科技股份有限公司 | 数据传输方法、装置及系统 |
CN114385528A (zh) | 2020-10-16 | 2022-04-22 | 瑞昱半导体股份有限公司 | 直接记忆体存取控制器、使用其之电子装置以及操作其的方法 |
CN114385529A (zh) | 2020-10-16 | 2022-04-22 | 瑞昱半导体股份有限公司 | 直接记忆体存取控制器、使用其之电子装置以及操作其的方法 |
CN112257092B (zh) * | 2020-11-05 | 2023-10-27 | 海光信息技术股份有限公司 | 数据传输控制方法、密钥管理方法、配置方法及相关装置 |
CN112416525B (zh) * | 2020-11-27 | 2022-06-03 | 海光信息技术股份有限公司 | 设备驱动初始化方法、直接存储访问方法及相关装置 |
WO2022132184A1 (en) * | 2020-12-20 | 2022-06-23 | Intel Corporation | System, method and apparatus for total storage encryption |
US11669625B2 (en) | 2020-12-26 | 2023-06-06 | Intel Corporation | Data type based cryptographic computing |
US11580035B2 (en) | 2020-12-26 | 2023-02-14 | Intel Corporation | Fine-grained stack protection using cryptographic computing |
US20220311756A1 (en) * | 2021-03-26 | 2022-09-29 | Microsoft Technology Licensing, Llc | Partial authentication tag aggregation to support interleaved encryption and authentication operations on multiple data records |
US11874776B2 (en) | 2021-06-25 | 2024-01-16 | Intel Corporation | Cryptographic protection of memory attached over interconnects |
CN116932422A (zh) * | 2022-03-30 | 2023-10-24 | 华为技术有限公司 | 数据处理方法和装置 |
US20230393780A1 (en) * | 2022-06-02 | 2023-12-07 | Micron Technology, Inc. | Memory controller firmware virtualization |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7937595B1 (en) * | 2003-06-27 | 2011-05-03 | Zoran Corporation | Integrated encryption/decryption functionality in a digital TV/PVR system-on-chip |
US7685436B2 (en) * | 2003-10-02 | 2010-03-23 | Itt Manufacturing Enterprises, Inc. | System and method for a secure I/O interface |
EP1870814B1 (en) * | 2006-06-19 | 2014-08-13 | Texas Instruments France | Method and apparatus for secure demand paging for processor devices |
US7757280B2 (en) * | 2006-01-17 | 2010-07-13 | International Business Machines Corporation | Method and system for memory protection and security using credentials |
US9904809B2 (en) * | 2006-02-27 | 2018-02-27 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Method and system for multi-level security initialization and configuration |
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 |
JP4347350B2 (ja) * | 2007-02-15 | 2009-10-21 | 富士通株式会社 | データ暗号転送装置、データ復号転送装置、データ暗号転送方法およびデータ復号転送方法 |
US7865631B2 (en) * | 2007-12-06 | 2011-01-04 | International Business Machines Corporation | Dynamic logical data channel assignment using time-grouped allocations |
US20110161675A1 (en) * | 2009-12-30 | 2011-06-30 | Nvidia Corporation | System and method for gpu based encrypted storage access |
US20130042043A1 (en) * | 2011-08-08 | 2013-02-14 | Qualcomm Incorporated | Method and Apparatus for Dynamic Channel Access and Loading in Multichannel DMA |
WO2013147872A1 (en) * | 2012-03-30 | 2013-10-03 | Intel Corporation | Two dimensional direct memory access scheme for enhanced network protocol processing performance |
US10887296B2 (en) * | 2012-12-31 | 2021-01-05 | Ncr Corporation | Secure provisioning manifest for controlling peripherals attached to a computer |
-
2015
- 2015-12-18 US US14/974,956 patent/US10181946B2/en active Active
-
2016
- 2016-06-20 WO PCT/US2016/038389 patent/WO2017014885A1/en active Application Filing
- 2016-06-20 EP EP16828187.1A patent/EP3326102B1/en active Active
- 2016-06-20 CN CN201680042468.4A patent/CN107851161B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US10181946B2 (en) | 2019-01-15 |
CN107851161A (zh) | 2018-03-27 |
EP3326102A4 (en) | 2019-03-20 |
EP3326102B1 (en) | 2019-09-18 |
WO2017014885A1 (en) | 2017-01-26 |
US20170026171A1 (en) | 2017-01-26 |
EP3326102A1 (en) | 2018-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107851161B (zh) | 对具有dma能力的i/o控制器的i/o数据进行密码保护 | |
CN107851162B (zh) | 用于对安全i/o的密码引擎进行安全编程的技术 | |
US11423159B2 (en) | Technologies for trusted I/O protection of I/O data with header information | |
CN107851163B (zh) | 用于i/o数据的完整性、防重放和真实性保证的技术 | |
US10374805B2 (en) | Technologies for trusted I/O for multiple co-existing trusted execution environments under ISA control | |
CN108140094B (zh) | 用于安全可信i/o访问控制的技术 | |
TWI715619B (zh) | 用於硬體強制單向密碼學的處理器、方法及系統 | |
US10810138B2 (en) | Enhanced storage encryption with total memory encryption (TME) and multi-key total memory encryption (MKTME) | |
US10536274B2 (en) | Cryptographic protection for trusted operating systems | |
US10691627B2 (en) | Avoiding redundant memory encryption in a cryptographic protection system | |
US20210126776A1 (en) | Technologies for establishing device locality |
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 |