US2020349265A1PendingUtilityA1

Technologies for trusted i/o with a channel identifier filter and processor-based cryptographic engine

Assignee: INTEL CORPPriority: Jun 20, 2016Filed: Jul 17, 2020Published: Nov 5, 2020
Est. expiryJun 20, 2036(~9.9 yrs left)· nominal 20-yr term from priority
G06F 21/51G06F 21/57H04L 9/32G06F 13/20G06F 21/6281H04L 9/0637G09C 1/00G06F 13/28G06F 21/85G06F 21/6218H04L 9/3242H04L 63/126G06F 21/602H04L 63/12
70
PatentIndex Score
0
Cited by
0
References
0
Claims

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-modified
1 . 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.