US 12,238,217 B2
Apparatuses, methods, and systems for instructions for usage restrictions cryptographically tied with data
Jason W. Brandt, Austin, TX (US)
Assigned to Intel Corporation, Santa Clara, CA (US)
Filed by Intel Corporation, Santa Clara, CA (US)
Filed on Feb. 27, 2024, as Appl. No. 18/589,125.
Application 18/589,125 is a continuation of application No. 16/729,352, filed on Dec. 28, 2019, granted, now 11,917,067, issued on Feb. 27, 2024.
Prior Publication US 2024/0250823 A1, Jul. 25, 2024
This patent is subject to a terminal disclaimer.
Int. Cl. H04L 9/08 (2006.01); G06F 9/30 (2018.01); H04L 9/32 (2006.01)
CPC H04L 9/3226 (2013.01) [G06F 9/30178 (2013.01); H04L 9/0861 (2013.01); H04L 2209/12 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A hardware processor comprising:
a decoder of a core to decode a single instruction into a decoded single instruction, the single instruction comprising a first input operand of a handle including a ciphertext of an encryption key, an authentication tag, and additional authentication data comprising a first bit that, when set, indicates the handle is not usable when a current privilege level is greater than zero, a second bit that, when set, indicates the handle is not usable for encryption, and a third bit that, when set, indicates the handle is not usable for decryption, and a second input operand of data encrypted with the encryption key; and
an execution unit of the core to execute the decoded single instruction to:
perform a first check of the authentication tag against the ciphertext and the additional authentication data for any modification to the ciphertext or the additional authentication data,
perform a second check of a current request of the core against one or more restrictions specified by the first bit, the second bit, and the third bit of the additional authentication data of the handle,
decrypt the ciphertext to generate the encryption key only when the first check indicates no modification to the ciphertext or the additional authentication data, and the second check indicates the one or more restrictions are not violated,
decrypt the data encrypted with the encryption key to generate unencrypted data, and
provide the unencrypted data as a resultant of the single instruction.