Technologies for trusted i/o with a channel identifier filter and processor-based cryptographic engine
Abstract
Technologies for trusted I/O include a computing device having a processor, a channel identifier filter, and an I/O controller. The I/O controller may generate an I/O transaction that includes a channel identifier and a memory address. The channel identifier filter verifies that the memory address of the I/O transaction is within a processor reserved memory region associated with the channel identifier. The processor reserved memory region is not accessible to software executed by the computing device. The processor encrypts I/O data at the memory address in response to invocation of a processor feature and copies the encrypted data to a memory buffer outside of the processor reserved memory region. The processor may securely clean the processor reserved memory region before encrypting and copying the data. The processor may wrap and unwrap programming information for the channel identifier filter. Other embodiments are described and claimed.
Claims
exact text as granted — not AI-modified1 . A computing device for secure trusted I/O channel programming, the computing device comprising:
a processor; a channel identifier filter; a channel programmer to (i) generate, by an unprivileged software component of the computing device, programming information for the channel identifier filter, wherein the programming information is indicative of a channel identifier and a channel key, and (ii) invoke, by the unprivileged software component, an unprivileged processor instruction with the programming information as a parameter; and a wrapping engine to generate, by the processor, wrapped programming information based on the programming information in response to invocation of the unprivileged processor instruction, wherein the wrapped programming information includes an encrypted channel key and is indicative of a processor reserved memory region that is associated with the channel identifier.
2 . The computing device of claim 1 , wherein the unprivileged processor instruction comprises an EBIND instruction.
3 . The computing device of claim 1 , wherein to generate the wrapped programming information comprises to encrypt the channel key with a key-wrapping key to generate the encrypted channel key, wherein the key-wrapping key is private to the processor.
4 . The computing device of claim 1 , further comprising a firmware environment to assign a trusted I/O processor reserved memory region, wherein the trusted I/O processor reserved memory region includes the processor reserved memory region associated with the channel identifier.
5 . The computing device of claim 4 , wherein the firmware environment is further to:
store a trusted I/O processor reserved memory region setting in a firmware variable in response to assignment of the trusted I/O processor reserved memory region; and integrity-protect the firmware variable with a trusted platform module of the computing device.
6 . The computing device of claim 1 , wherein the processor is further to prevent the unprivileged software component from accessing the processor reserved memory region associated with the channel identifier.
7 . The computing device of claim 1 , wherein the processor further comprises secure enclave support to establish a secure enclave, and wherein the secure enclave includes the unprivileged software component.
8 . The computing device of claim 1 , wherein:
the channel programmer is further to (i) provide, by the unprivileged software component, the wrapped programming information to a privileged software component of the computing device, and (ii) invoke, by the privileged software component, a first privileged processor feature with the wrapped programming information as a parameter; and the computing device further comprises an unwrapping engine to program, by the processor, the channel identifier filter with the channel identifier and a memory range of the processor reserved memory region in response to invocation of the first privileged processor feature.
9 . The computing device of claim 8 , wherein the first privileged processor feature comprises a TIO_UNWRAP instruction of the processor.
10 . The computing device of claim 8 , further comprising:
a processor reserved memory manager to invoke, by the privileged software component, a second privileged processor feature with the memory range of the processor reserved memory region as a parameter; and a cleaning engine to securely clear, by the processor, the memory range of the processor reserved memory region in response to invocation of the second privileged processor feature.
11 . The computing device of claim 10 , wherein the second privileged processor feature comprises a TIO_PRM_CLEANUP instruction of the processor.
12 . The computing device of claim 8 , wherein:
the channel programmer is further to verify, by the privileged software component, the wrapped programming information; and to invoke the first privileged processor feature comprises to invoke the first privileged processor feature in response to verification of the wrapped programming information.
13 . The computing device of claim 8 , wherein the channel programmer is further to read, by the privileged software component, a cryptographic response from the processor in response to invocation of the first privileged processor feature.
14 . The computing device of claim 8 , wherein the processor is further to prevent the privileged software component from accessing the processor reserved memory region associated with the channel identifier.
15 . The computing device of claim 8 , wherein the privileged software component comprises a kernel mode driver of the computing device.
16 . A method for secure trusted I/O channel programming, the method comprising:
generating, by an unprivileged software component of a computing device, programming information for a channel identifier filter of the computing device, wherein the programming information is indicative of a channel identifier and a channel key; invoking, by the unprivileged software component, an unprivileged processor instruction with the programming information as a parameter; and generating, by a processor of the computing device, wrapped programming information based on the programming information in response to invoking the unprivileged processor instruction, wherein the wrapped programming information includes an encrypted channel key and is indicative of a processor reserved memory region that is associated with the channel identifier.
17 . The method of claim 16 , further comprising preventing, by the computing device, the unprivileged software component from accessing the processor reserved memory region associated with the channel identifier.
18 . The method of claim 16 , further comprising:
providing, by the unprivileged software component, the wrapped programming information to a privileged software component of the computing device; invoking, by the privileged software component, a first privileged processor feature with the wrapped programming information as a parameter; and programming, by the processor, the channel identifier filter with the channel identifier and a memory range of the processor reserved memory region in response to invoking the first privileged processor feature.
19 . The method of claim 18 , further comprising:
invoking, by the privileged software component, a second privileged processor feature with the memory range of the processor reserved memory region as a parameter; and securely clearing, by the processor, the memory range of the processor reserved memory region in response to invoking the second privileged processor feature.
20 . The method of claim 18 , further comprising preventing, by the computing device, the privileged software component from accessing the processor reserved memory region associated with the channel identifier.
21 . One or more computer-readable storage media comprising a plurality of instructions that in response to being executed cause a computing device to:
generate, by an unprivileged software component of the computing device, programming information for a channel identifier filter of the computing device, wherein the programming information is indicative of a channel identifier and a channel key; invoke, by the unprivileged software component, an unprivileged processor instruction with the programming information as a parameter; and generate, by a processor of the computing device, wrapped programming information based on the programming information in response to invoking the unprivileged processor instruction, wherein the wrapped programming information includes an encrypted channel key and is indicative of a processor reserved memory region that is associated with the channel identifier.
22 . The one or more computer-readable storage media of claim 21 , further comprising a plurality of instructions that in response to being executed cause the computing device to prevent the unprivileged software component from accessing the processor reserved memory region associated with the channel identifier.
23 . The one or more computer-readable storage media of claim 21 , further comprising a plurality of instructions that in response to being executed cause the computing device to:
provide, by the unprivileged software component, the wrapped programming information to a privileged software component of the computing device; invoke, by the privileged software component, a first privileged processor feature with the wrapped programming information as a parameter; and program, by the processor, the channel identifier filter with the channel identifier and a memory range of the processor reserved memory region in response to invoking the first privileged processor feature.
24 . The one or more computer-readable storage media of claim 23 , further comprising a plurality of instructions that in response to being executed cause the computing device to:
invoke, by the privileged software component, a second privileged processor feature with the memory range of the processor reserved memory region as a parameter; and securely clear, by the processor, the memory range of the processor reserved memory region in response to invoking the second privileged processor feature.
25 . The one or more computer-readable storage media of claim 23 , further comprising a plurality of instructions that in response to being executed cause the computing device to prevent the privileged software component from accessing the processor reserved memory region associated with the channel identifier.Join the waitlist — get patent alerts
Track US2020349265A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.