yeahuh / rpms / qemu-kvm

Forked from rpms/qemu-kvm 2 years ago
Clone

Blame SOURCES/kvm-doc-Fix-some-mistakes-in-the-SEV-documentation.patch

a83cc2
From 17c1559139d6a58794944901f84dd4e8cd1f5335 Mon Sep 17 00:00:00 2001
a83cc2
From: Connor Kuehl <ckuehl@redhat.com>
a83cc2
Date: Tue, 22 Jun 2021 20:00:20 -0400
a83cc2
Subject: [PATCH 08/12] doc: Fix some mistakes in the SEV documentation
a83cc2
MIME-Version: 1.0
a83cc2
Content-Type: text/plain; charset=UTF-8
a83cc2
Content-Transfer-Encoding: 8bit
a83cc2
a83cc2
RH-Author: Miroslav Rezanina <mrezanin@redhat.com>
a83cc2
RH-MergeRequest: 16: Synchronize with RHEL-AV 8.5 release 21 to RHEL 9
a83cc2
RH-Commit: [6/8] ce828f81de1320a1833241700cb13dfdcf7d82e7 (mrezanin/centos-src-qemu-kvm)
a83cc2
RH-Bugzilla: 1957194
a83cc2
RH-Acked-by: Vitaly Kuznetsov <vkuznets@redhat.com>
a83cc2
RH-Acked-by: Daniel P. Berrangé <berrange@redhat.com>
a83cc2
a83cc2
From: Tom Lendacky <thomas.lendacky@amd.com>
a83cc2
a83cc2
Fix some spelling and grammar mistakes in the amd-memory-encryption.txt
a83cc2
file. No new information added.
a83cc2
a83cc2
Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
a83cc2
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
a83cc2
Reviewed-by: Connor Kuehl <ckuehl@redhat.com>
a83cc2
Message-Id: <a7c5ee6c056d840f46028f4a817c16a9862bdd9e.1619208498.git.thomas.lendacky@amd.com>
a83cc2
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
a83cc2
(cherry picked from commit f538adeccf4554e6402fe661a0a51bcc8d6bd227)
a83cc2
Signed-off-by: Connor Kuehl <ckuehl@redhat.com>
a83cc2
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
a83cc2
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
a83cc2
---
a83cc2
 docs/amd-memory-encryption.txt | 59 +++++++++++++++++-----------------
a83cc2
 1 file changed, 29 insertions(+), 30 deletions(-)
a83cc2
a83cc2
diff --git a/docs/amd-memory-encryption.txt b/docs/amd-memory-encryption.txt
a83cc2
index 145896aec7..ed85159ea7 100644
a83cc2
--- a/docs/amd-memory-encryption.txt
a83cc2
+++ b/docs/amd-memory-encryption.txt
a83cc2
@@ -1,38 +1,38 @@
a83cc2
 Secure Encrypted Virtualization (SEV) is a feature found on AMD processors.
a83cc2
 
a83cc2
 SEV is an extension to the AMD-V architecture which supports running encrypted
a83cc2
-virtual machine (VMs) under the control of KVM. Encrypted VMs have their pages
a83cc2
+virtual machines (VMs) under the control of KVM. Encrypted VMs have their pages
a83cc2
 (code and data) secured such that only the guest itself has access to the
a83cc2
 unencrypted version. Each encrypted VM is associated with a unique encryption
a83cc2
-key; if its data is accessed to a different entity using a different key the
a83cc2
+key; if its data is accessed by a different entity using a different key the
a83cc2
 encrypted guests data will be incorrectly decrypted, leading to unintelligible
a83cc2
 data.
a83cc2
 
a83cc2
-The key management of this feature is handled by separate processor known as
a83cc2
-AMD secure processor (AMD-SP) which is present in AMD SOCs. Firmware running
a83cc2
-inside the AMD-SP provide commands to support common VM lifecycle. This
a83cc2
+Key management for this feature is handled by a separate processor known as the
a83cc2
+AMD secure processor (AMD-SP), which is present in AMD SOCs. Firmware running
a83cc2
+inside the AMD-SP provides commands to support a common VM lifecycle. This
a83cc2
 includes commands for launching, snapshotting, migrating and debugging the
a83cc2
-encrypted guest. Those SEV command can be issued via KVM_MEMORY_ENCRYPT_OP
a83cc2
+encrypted guest. These SEV commands can be issued via KVM_MEMORY_ENCRYPT_OP
a83cc2
 ioctls.
a83cc2
 
a83cc2
 Launching
a83cc2
 ---------
a83cc2
-Boot images (such as bios) must be encrypted before guest can be booted.
a83cc2
-MEMORY_ENCRYPT_OP ioctl provides commands to encrypt the images :LAUNCH_START,
a83cc2
+Boot images (such as bios) must be encrypted before a guest can be booted. The
a83cc2
+MEMORY_ENCRYPT_OP ioctl provides commands to encrypt the images: LAUNCH_START,
a83cc2
 LAUNCH_UPDATE_DATA, LAUNCH_MEASURE and LAUNCH_FINISH. These four commands
a83cc2
 together generate a fresh memory encryption key for the VM, encrypt the boot
a83cc2
-images and provide a measurement than can be used as an attestation of the
a83cc2
+images and provide a measurement than can be used as an attestation of a
a83cc2
 successful launch.
a83cc2
 
a83cc2
 LAUNCH_START is called first to create a cryptographic launch context within
a83cc2
-the firmware. To create this context, guest owner must provides guest policy,
a83cc2
+the firmware. To create this context, guest owner must provide a guest policy,
a83cc2
 its public Diffie-Hellman key (PDH) and session parameters. These inputs
a83cc2
-should be treated as binary blob and must be passed as-is to the SEV firmware.
a83cc2
+should be treated as a binary blob and must be passed as-is to the SEV firmware.
a83cc2
 
a83cc2
-The guest policy is passed as plaintext and hypervisor may able to read it
a83cc2
+The guest policy is passed as plaintext. A hypervisor may choose to read it,
a83cc2
 but should not modify it (any modification of the policy bits will result
a83cc2
 in bad measurement). The guest policy is a 4-byte data structure containing
a83cc2
-several flags that restricts what can be done on running SEV guest.
a83cc2
+several flags that restricts what can be done on a running SEV guest.
a83cc2
 See KM Spec section 3 and 6.2 for more details.
a83cc2
 
a83cc2
 The guest policy can be provided via the 'policy' property (see below)
a83cc2
@@ -40,31 +40,30 @@ The guest policy can be provided via the 'policy' property (see below)
a83cc2
 # ${QEMU} \
a83cc2
    sev-guest,id=sev0,policy=0x1...\
a83cc2
 
a83cc2
-Guest owners provided DH certificate and session parameters will be used to
a83cc2
+The guest owner provided DH certificate and session parameters will be used to
a83cc2
 establish a cryptographic session with the guest owner to negotiate keys used
a83cc2
 for the attestation.
a83cc2
 
a83cc2
-The DH certificate and session blob can be provided via 'dh-cert-file' and
a83cc2
-'session-file' property (see below
a83cc2
+The DH certificate and session blob can be provided via the 'dh-cert-file' and
a83cc2
+'session-file' properties (see below)
a83cc2
 
a83cc2
 # ${QEMU} \
a83cc2
      sev-guest,id=sev0,dh-cert-file=<file1>,session-file=<file2>
a83cc2
 
a83cc2
 LAUNCH_UPDATE_DATA encrypts the memory region using the cryptographic context
a83cc2
-created via LAUNCH_START command. If required, this command can be called
a83cc2
+created via the LAUNCH_START command. If required, this command can be called
a83cc2
 multiple times to encrypt different memory regions. The command also calculates
a83cc2
 the measurement of the memory contents as it encrypts.
a83cc2
 
a83cc2
-LAUNCH_MEASURE command can be used to retrieve the measurement of encrypted
a83cc2
-memory. This measurement is a signature of the memory contents that can be
a83cc2
-sent to the guest owner as an attestation that the memory was encrypted
a83cc2
-correctly by the firmware. The guest owner may wait to provide the guest
a83cc2
-confidential information until it can verify the attestation measurement.
a83cc2
-Since the guest owner knows the initial contents of the guest at boot, the
a83cc2
-attestation measurement can be verified by comparing it to what the guest owner
a83cc2
-expects.
a83cc2
+LAUNCH_MEASURE can be used to retrieve the measurement of encrypted memory.
a83cc2
+This measurement is a signature of the memory contents that can be sent to the
a83cc2
+guest owner as an attestation that the memory was encrypted correctly by the
a83cc2
+firmware. The guest owner may wait to provide the guest confidential information
a83cc2
+until it can verify the attestation measurement. Since the guest owner knows the
a83cc2
+initial contents of the guest at boot, the attestation measurement can be
a83cc2
+verified by comparing it to what the guest owner expects.
a83cc2
 
a83cc2
-LAUNCH_FINISH command finalizes the guest launch and destroy's the cryptographic
a83cc2
+LAUNCH_FINISH finalizes the guest launch and destroys the cryptographic
a83cc2
 context.
a83cc2
 
a83cc2
 See SEV KM API Spec [1] 'Launching a guest' usage flow (Appendix A) for the
a83cc2
@@ -78,10 +77,10 @@ To launch a SEV guest
a83cc2
 
a83cc2
 Debugging
a83cc2
 -----------
a83cc2
-Since memory contents of SEV guest is encrypted hence hypervisor access to the
a83cc2
-guest memory will get a cipher text. If guest policy allows debugging, then
a83cc2
-hypervisor can use DEBUG_DECRYPT and DEBUG_ENCRYPT commands access the guest
a83cc2
-memory region for debug purposes.  This is not supported in QEMU yet.
a83cc2
+Since the memory contents of a SEV guest are encrypted, hypervisor access to
a83cc2
+the guest memory will return cipher text. If the guest policy allows debugging,
a83cc2
+then a hypervisor can use the DEBUG_DECRYPT and DEBUG_ENCRYPT commands to access
a83cc2
+the guest memory region for debug purposes.  This is not supported in QEMU yet.
a83cc2
 
a83cc2
 Snapshot/Restore
a83cc2
 -----------------
a83cc2
-- 
a83cc2
2.27.0
a83cc2