IP Library Granted Patent US 12,498,954
Granted Patent B2
US 12,498,954 · App. 18/183,074 · Granted Dec 16, 2025

Secure virtual machine and peripheral device communication

Inventor: Michael Tsirkin (Yokneam Illit, IL)
Assignee: Red Hat, Inc.
G06F9/45558G06F9/544G06F13/28G06F13/32H04L9/0825H04L9/0894H04L9/3247G06F2009/45583G06F2009/45587G06F2009/45595
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,498,954
App. No.
18/183,074
Granted
Dec 16, 2025
Kind
B2
Abstract

A method includes exposing a public cryptographic key associated with a peripheral device of a computing system to a guest running on the computing system. The method further includes receiving, from the guest, a message including a cryptographic nonce value encrypted with the public cryptographic key. The method further includes producing the cryptographic nonce value by decrypting the message using a private cryptographic key associated with the public cryptographic key. The method further includes using a shared cryptographic key generated from the cryptographic nonce value to access contents of a direct memory access (DMA) buffer associated with the peripheral device.

Claims (52)

1 . A method comprising:

exposing, by a peripheral device of a computing system, a public cryptographic key associated with the peripheral device of the computing system to a guest operating system running on the computing system, wherein the computing system comprises a memory further comprising a first memory space associated with the guest operating system;

receiving, by the peripheral device, from the guest operating system, a message comprising a cryptographic nonce value encrypted with the public cryptographic key;

producing, by the peripheral device, the cryptographic nonce value by decrypting the message using a private cryptographic key associated with the public cryptographic key;

generating, by the peripheral device, a shared cryptographic key from the cryptographic nonce value produced by decrypting the message; and

accessing, by the peripheral device, contents of a direct memory access (DMA) buffer associated with the peripheral device within a second memory space of the memory of the computing system using the shared cryptographic key.

2 . The method of claim 1 , wherein receiving the cryptographic nonce value encrypted with the public cryptographic key comprises:

retrieving, by the peripheral device, the cryptographic nonce value from a pre-determined address of a memory of the peripheral device.

3 . The method of claim 1 , wherein the shared cryptographic key is used by the peripheral device and a processing device of the computing system to access the contents of the DMA buffer within the second memory space.

4 . The method of claim 1 , wherein exposing the public cryptographic key associated with the peripheral device of the computing system to the guest operating system running on the computing system comprises:

storing, by the peripheral device, the public cryptographic key in a configuration space of the peripheral device.

5 . The method of claim 1 , wherein using the shared cryptographic key to access the contents of the DMA buffer comprises:

responsive to receiving a first request to read the contents of the DMA buffer within the second memory space, decrypting, by the peripheral device with the shared cryptographic key, the contents of the DMA buffer.

6 . The method of claim 5 , further comprising:

responsive to receiving a second request comprising data to be stored at the DMA buffer, encrypting the data with the shared cryptographic key; and

storing, by the peripheral device, the data encrypted with the shared cryptographic key in the DMA buffer within the second memory space.

7 . The method of claim 1 , wherein the peripheral device is at least one of an encrypted storage device or a networking device.

8 . A peripheral device of a computing system, the peripheral device comprising:

a memory; and

a processing device operatively coupled to the memory, the processing device to:

expose a public cryptographic key associated with the peripheral device to a guest operating system running on the computing system, wherein the computing system comprises a system memory comprising a first memory space associated with the guest operating system;

receive, from the guest operating system, a message comprising a cryptographic nonce value encrypted with the public cryptographic key;

produce the cryptographic nonce value by decrypting the message using a private cryptographic key associated with the public cryptographic key;

generate a shared cryptographic key from the cryptographic nonce value produced by decrypting the message; and

use the shared cryptographic key to access contents of a direct memory access (DMA) buffer associated with the peripheral device within a second memory space of the system memory.

9 . The peripheral device of claim 8 , wherein to receive the cryptographic nonce value encrypted with the public cryptographic key, the processing device is to:

retrieve the cryptographic nonce value from a pre-determined address of the memory.

10 . The peripheral device of claim 8 , wherein the shared cryptographic key is used by the peripheral device and a processing device of the computing system to access the contents of the DMA buffer within the second memory space.

11 . The peripheral device of claim 8 , wherein to expose the public cryptographic key associated with the peripheral device to the guest operating system running on the computing system, the processing device is to:

store the public cryptographic key in a configuration space of the peripheral device.

12 . The peripheral device of claim 8 , wherein to use the shared cryptographic key to access the contents of the DMA buffer, the processing device is to:

responsive to receiving a first request to read the contents of the DMA buffer within the second memory space, decrypt, with the shared cryptographic key, the contents of the DMA buffer.

13 . The peripheral device of claim 12 , wherein the processing device is further to:

responsive to receiving a second request comprising data to be stored at the DMA buffer, encrypt the data with the shared cryptographic key; and

store the data encrypted with the shared cryptographic key in the DMA buffer within the second memory space.

14 . A non-transitory computer readable storage medium including instructions that, when executed by a processing device of a peripheral device of a computing system, cause the processing device to perform one or more operations comprising:

exposing a public cryptographic key associated with the peripheral device of the computing system to a guest operating system running on the computing system, wherein the computing system comprises a memory further comprising a first memory space associated with the guest operating system;

receiving, from the guest operating system, a message comprising a cryptographic nonce value encrypted with the public cryptographic key;

producing the cryptographic nonce value by decrypting the message using a private cryptographic key associated with the public cryptographic key; and

generating a shared cryptographic key from the cryptographic nonce value produced by decrypting the message;

using the shared cryptographic key to access contents of a direct memory access (DMA) buffer associated with the peripheral device within a second memory space of the memory of the computing system.

15 . The non-transitory computer readable storage medium of claim 14 , wherein receiving the cryptographic nonce value encrypted with the public cryptographic key comprises:

retrieving the cryptographic nonce value from a pre-determined address of a memory of the peripheral device.

16 . The non-transitory computer readable storage medium of claim 14 , wherein the shared cryptographic key is used by the peripheral device and a processing device of the computing system to access the contents of the DMA buffer within the second memory space.

17 . The non-transitory computer readable storage medium of claim 14 , wherein exposing the public cryptographic key associated with the peripheral device of the computing system to the guest operating system running on the computing system comprises:

storing the public cryptographic key in a configuration space of the peripheral device.

18 . The non-transitory computer readable storage medium of claim 14 , wherein using the shared cryptographic key to access the contents of the DMA buffer comprises:

responsive to receiving a first request to read the contents of the DMA buffer within the second memory space, decrypting, with the shared cryptographic key, the contents of the DMA buffer.

19 . The non-transitory computer readable storage medium of claim 14 , wherein the one or more operations further comprise:

responsive to receiving a second request comprising data to be stored at the DMA buffer, encrypting the data with the shared cryptographic key; and

storing the data encrypted with the shared cryptographic key in the DMA buffer within the second memory space.

20 . The non-transitory computer readable storage medium of claim 14 , wherein the peripheral device is at least one of an encrypted storage device or a networking device.

Assignments (2)
CHANGE OF NAME Recorded Mar 3, 2026
From: RED HAT, INC.
To: RED HAT, LLC
Reel/Frame 074913/0759 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 10, 2024
From: TSIRKIN, MICHAEL
To: RED HAT, INC.
Reel/Frame 066086/0398 →
Continuity (2)
Division 16824538 · Mar 19, 2020
Related Publication 20230221985A1 · Jul 13, 2023
References Cited (30)
US 5610715A · Yoshii et al. · 1997 [cited by applicant]
US 6377060B1 · Burkhart et al. · 2002 [cited by applicant]
US 8023528B2 · Hendel et al. · 2011 [cited by applicant]
US 8954897B2 · Neystadt et al. · 2015 [cited by applicant]
US 9477486B2 · Raj et al. · 2016 [cited by applicant]
US 9672052B1 · Berreth et al. · 2017 [cited by applicant]
US 9678895B2 · Scott-Nash · 2017 [cited by applicant]
US 9906493B1 · Rodgers · 2018 [cited by examiner]
US 10048982B2 · Chen et al. · 2018 [cited by applicant]
US 10089124B2 · Barlev et al. · 2018 [cited by applicant]
US 10176122B2 · Kaplan et al. · 2019 [cited by applicant]
US 10303899B2 · Durham et al. · 2019 [cited by applicant]
US 20080066074A1 · Nutter · 2008 [cited by examiner]
US 20150286582A1 · Scott-Nash · 2015 [cited by examiner]
US 20150378641A1 · Franke · 2015 [cited by examiner]
US 20160239339A1 · Chen et al. · 2016 [cited by applicant]
US 20160253276A1 · Jeong · 2016 [cited by examiner]
US 20180107608A1 · Kaplan · 2018 [cited by examiner]
US 20180239715A1 · Tsirkin · 2018 [cited by examiner]
US 20180247082A1 · Durham · 2018 [cited by examiner]
US 20190286577A1 · Leitao · 2019 [cited by examiner]
US 20200151362A1 · Harriman et al. · 2020 [cited by applicant]
US 20200310972A1 · Shanbhogue · 2020 [cited by examiner]
US 20210294628A1 · Tsirkin · 2021 [cited by applicant]
US 20210389965A1 · Dabak et al. · 2021 [cited by applicant]
CN 109858265A · 2019 [cited by applicant]
Avid Kaplan et al., AMD Memory Encryption, https://developer.amd.com/wordpress/media/2013/12/AMD_Memory_Encryption_Whitepaper_v7-Public.pdf, Apr. 21, 2016, Advanced Micro Devices. [cited by applicant]
Mengyuan Li et al., Exploiting Unprotected I/O Operations in AMD's Secure Encrypted Virtualization, https://www.usenix.org/system/files/sec19-li-mengyuan_0.pdf, Aug. 14-16, 2019, The Ohio State University; University of… [cited by applicant]
Shih-Wei Li, John S. Koh, and Jason Nieh, “Protecting Cloud Virtual Machines from Hypervisor and Host Operating System Exploits”, https://www.usenix.org/system/files/sec19-li-shih-wei.pdf, Department of Computer Science… [cited by applicant]
ZeCoRx—Zero Copy Receive, 1. https://www.mikelangelo-project.eu/technology/zecorx-zero-copy-receive/, downloaded Nov. 27, 2019. [cited by applicant]