

# NitroTPM para instancias de Amazon EC2
<a name="nitrotpm"></a>

NitroTPM, el módulo de confianza de la plataforma Nitro, es un dispositivo virtual que proporciona el [AWS Nitro System](https://aws.amazon.com//ec2/nitro/) y se ajusta a la [especificación de TPM 2.0](https://trustedcomputinggroup.org/resource/trusted-platform-module-2-0-a-brief-introduction/). Almacena de forma segura los artefactos (como contraseñas, certificados o claves de cifrado) que se utilizan para autenticar la instancia. NitroTPM puede generar claves y utilizarlas para funciones criptográficas (como hash, firma, cifrado y descifrado).

NitroTPM proporciona *arranque medido*, un proceso en el que el cargador de arranque y el sistema operativo crean hash criptográficos de cada binario de arranque y los combinan con los valores anteriores de los registros de configuración de plataformas (PCR) internos de NitroTPM. Con el arranque medido, puede obtener valores de PCR firmados de NitroTPM y utilizarlos para demostrar a las entidades remotas la integridad del software de arranque de la instancia. Esto se denomina *declaración* remota.

Con NitroTPM, las claves y los secretos se pueden etiquetar con un valor PCR específico para que nunca se pueda acceder a ellos si cambia el valor de la PCR y, con ello, la integridad de la instancia. Esta forma especial de acceso condicional se denomina *sellado y revelado*. Tecnologías de sistemas operativos, como [BitLocker](https://learn.microsoft.com/en-us/windows/security/operating-system-security/data-protection/bitlocker/), pueden utilizar NitroTPM para sellar una clave de descifrado de unidad de modo que esta solo se pueda descifrar cuando el sistema operativo arrancó correctamente y se encuentra en un buen estado conocido.

Para utilizar NitroTPM, debe seleccionar una [imagen de máquina de Amazon (AMI)](AMIs.md) que se haya configurado para la compatibilidad con NitroTPM y, a continuación, utilizar la AMI para lanzar [instancias basadas en Nitro](instance-types.md#instance-hypervisor-type). Puede seleccionar una de las AMI de Amazon creadas previamente o crear una.

**Precios**  
No se aplica ningún costo adicional por el uso de NitroTPM. Solo pagará por los recursos subyacentes que utilice.

**Topics**
+ [Requisitos](enable-nitrotpm-prerequisites.md)
+ [Habilitar una AMI de Linux para NitroTPM](enable-nitrotpm-support-on-ami.md)
+ [Verifique que una AMI esté habilitada para NitroTPM](verify-nitrotpm-support-on-ami.md)
+ [Habilitación o finalización del uso de NitroTPM](nitrotpm-instance.md)
+ [Verificación de que una instancia está habilitada para NitroTPM](verify-nitrotpm-support-on-instance.md)
+ [Recupere la clave de aprobación pública](retrieve-ekpub.md)

# Requisitos para utilizar NitroTPM con instancias de Amazon EC2
<a name="enable-nitrotpm-prerequisites"></a>

Para iniciar una instancia con NitroTPM habilitado, se debe cumplir con los siguientes requisitos.

**Topics**
+ [AMI](#nitrotpm-ami)
+ [Tipos de instancias](#nitrotpm-instancetypes)
+ [Consideraciones](#nitrotpm-considerations)

## AMI
<a name="nitrotpm-ami"></a>

La AMI debe tener NitroTPM habilitado.

**AMI de Linux**  
No hay AMI preconfiguradas. Debe configurar su propia AMI. Para obtener más información, consulte [Habilitar una AMI de Linux para NitroTPM](enable-nitrotpm-support-on-ami.md).

**AMI de Windows**  
Para encontrar una AMI de Windows de AWS que esté preconfigurada para NitroTPM y UEFI Secure Boot con claves de Microsoft, consulte [Find Windows Server AMIs configured with NitroTPM and UEFI Secure Boot](https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/ami-windows-tpm.html#ami-windows-tpm-find) en la *Referencia de AMI de Windows de AWS*.

**nota**  
**Sistema operativo**: la AMI debe incluir un sistema operativo con un controlador de búfer de respuesta del comando (CRB) TPM 2.0. La mayoría de los sistemas operativos actuales cuentan con un controlador de CRB TPM 2.0.  
**Modo de arranque UEFI**: la AMI debe estar configurada para este modo de arranque. Para obtener más información, consulte [Arranque seguro de UEFI para instancias de Amazon EC2](uefi-secure-boot.md).

## Tipos de instancias
<a name="nitrotpm-instancetypes"></a>

Debe utilizar uno de los siguientes tipos de instancia virtualizada:
+ **De uso general**: M5, M5a, M5ad, M5d, M5dn, M5n, M5zn, M6a, M6g, M6gd, M6i, M6id, M6idn, M6in, M7a, M7g, M7gd, M7i, M7i-flex, M8a, M8azn, M8g, M8gb, M8gd, M8gn, M8i, M8id, M8i-flex, T3, T3a, T4g
+ **Optimizadas para la computación**: C5, C5a, C5ad, C5d, C5n, C6a, C6g, C6gd, C6gn, C6i, C6id, C6in, C7a, C7g, C7gd, C7gn, C7i, C7i-flex, C8a, C8g, C8gb, C8gd, C8gn, C8i, C8id, C8i-flex
+ **Optimizadas para la memoria**: R5, R5a, R5ad, R5b, R5d, R5dn, R5n, R6a, R6g, R6gd, R6i, R6id, R6idn, R6in, R7a, R7g, R7gd, R7i, R7iz, R8a, R8g, R8gb, R8gd, R8gn, R8i, R8id, R8i-flex, U7i-6tb, U7i-8tb, U7i-12tb, U7in-16tb, U7in-24tb, U7in-32tb, X2idn, X2iedn, X2iezn, X8g, X8aedz, X8i, z1d
+ **Optimizadas para el almacenamiento**: D3, D3en, I3en, I4i, I7i, I7ie, I8g, I8ge, Im4gn
+ **Computación acelerada**: F2, G4dn, G5, G6, G6e, G6f, Gr6, Gr6f, G7e, Inf1, Inf2, P5, P5e, P5en, P6-B200, P6-B300, Trn2, Trn2u
+ **De computación de alto rendimiento: **Hpc6a, Hpc6id, Hpc8a

## Consideraciones
<a name="nitrotpm-considerations"></a>

Las siguientes consideraciones se aplican cuando se utiliza NitroTPM:
+ Tras iniciar una instancia mediante una AMI con NitroTPM habilitado, si quiere cambiar el tipo de instancia, el nuevo tipo de instancia que elija también debe ser compatible con NitroTPM.
+ Los volúmenes BitLocker cifrados con claves basadas en NitroTPM solo se pueden utilizar en la instancia original.
+ El estado de NitroTPM no se muestra en la consola de Amazon EC2.
+ El estado de NitroTPM no se incluye en las [instantáneas de Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-snapshots.html).
+ El estado de NitroTPM no se incluye en imágenes [VM Import/Export](https://docs.aws.amazon.com/vm-import/latest/userguide/).
+ NitroTPM no es compatible en AWS Outposts, zonas locales o zonas Wavelength.

# Habilitar una AMI de Linux para NitroTPM
<a name="enable-nitrotpm-support-on-ami"></a>

Para habilitar NitroTPM para una instancia, debe iniciar la instancia mediante una AMI con NitroTPM habilitado. Debe configurar una AMI de Linux que contenga compatibilidad con NitroTPM cuando la registre. No puede configurar la compatibilidad con NitroTPM más adelante.

Para obtener la lista de AMI de Windows que están preconfiguradas para la compatibilidad con NitroTPM, consulte [Requisitos para utilizar NitroTPM con instancias de Amazon EC2](enable-nitrotpm-prerequisites.md).

Debe crear una AMI con NitroTPM configurada mediante la API [RegisterImage](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RegisterImage.html). No puede utilizar la consola de Amazon EC2 ni VM Import/Export.

**Para habilitar una AMI de Linux para NitroTPM**

1. Lance una instancia temporal con la AMI de Linux obligatoria. Anote el ID de su volumen raíz, que puede encontrar en la consola, en la pestaña **Almacenamiento** para la instancia.

1. Cuando la instancia alcance el estado `running`, cree una instantánea del volumen raíz de la instancia. Para obtener más información, consulte [Creación de una instantánea de un volumen de EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-create-snapshot.html).

1. Registre la instantánea que creó como una AMI. En la asignación de dispositivos de bloques, especifique la instantánea que creó para el volumen raíz.

   A continuación se muestra un ejemplo de comando [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html). En `--tpm-support`, especifique `v2.0`. En `--boot-mode`, especifique `uefi`. 

   ```
   aws ec2 register-image \
       --name my-image \
       --boot-mode uefi \
       --architecture x86_64 \
       --root-device-name /dev/xvda \
       --block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=snap-0abcdef1234567890} \
       --tpm-support v2.0
   ```

   A continuación se muestra un ejemplo del cmdlet [Register-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html).

   ```
   $block = @{SnapshotId=snap-0abcdef1234567890}
   Register-EC2Image `
       -Name my-image `
       -Architecture "x86_64" `
       -RootDeviceName /dev/xvda `
       -BlockDeviceMapping @{DeviceName="/dev/xvda";Ebs=$block} `
       -BootMode Uefi `
       -TpmSupport V20
   ```

1. Finalice la instancia temporal que inició en el paso 1.

# Verifique que una AMI esté habilitada para NitroTPM
<a name="verify-nitrotpm-support-on-ami"></a>

Para habilitar NitroTPM para una instancia, debe iniciar la instancia mediante una AMI con NitroTPM habilitado. Puede describir una imagen para verificar si está habilitada para NitroTPM. Si es el propietario de la AMI, puede describir el atributo `tpmSupport` de la imagen.

La consola de Amazon EC2 no muestra `TpmSupport`.

------
#### [ AWS CLI ]

**Para verificar que NitroTPM está habilitado**  
Utilice el comando [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) .

```
aws ec2 describe-images \
    --image-ids ami-0abcdef1234567890 \
    --query Images[*].TpmSupport
```

Si NitroTPM está habilitado para la AMI, el resultado aparece de la siguiente manera. Si TPM no está habilitado, el resultado está vacío.

```
[
    "v2.0"
]
```

Como alternativa, si es el propietario de la AMI, puede utilizar el comando [describe-image-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-attribute.html) con el atributo `tpmSupport`.

```
aws ec2 describe-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --attribute tpmSupport
```

 A continuación, se muestra un ejemplo del resultado.

```
{
    "ImageId": "ami-0abcdef1234567890",
    "TpmSupport": {
        "Value": "v2.0"
    }
}
```

**Para buscar AMI con NitroTPM habilitado**  
El siguiente ejemplo enumera los ID de las AMI que posee con NitroTPM habilitado.

```
aws ec2 describe-images \
    --owners self \
    --filters Name=tpm-support,Values=v2.0 \
    --query Images[].ImageId
```

------
#### [ PowerShell ]

**Para verificar que NitroTPM está habilitado**  
Utilice el cmdlet [Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html).

```
Get-EC2Image `
    -ImageId ami-0abcdef1234567890 | Select TpmSupport
```

Si NitroTPM está habilitado para la AMI, el resultado aparece de la siguiente manera. Si TPM no está habilitado, el resultado está vacío.

```
TpmSupport
----------
v2.0
```

Como alternativa, si es el propietario de la AMI, puede usar el cmdlet [Get-EC2ImageAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageAttribute.html) con el atributo `tpmSupport`.

```
Get-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute tpmSupport
```

**Para buscar AMI con NitroTPM habilitado**  
El siguiente ejemplo enumera los ID de las AMI que posee con NitroTPM habilitado.

```
Get-EC2Image `
    -Owner self `
    -Filter @{Name="tpm-support; Values="v2.0"} | Select ImageId
```

------

# Habilitación o finalización del uso de NitroTPM en una instancia de Amazon EC2
<a name="nitrotpm-instance"></a>

Solo puede habilitar una instancia de Amazon EC2 para NitroTPM durante la inicialización. Una vez que una instancia está habilitada para NitroTPM, no puede desactivarla. Si ya no es necesario usar NitroTPM, debe configurar el sistema operativo para que deje de utilizarlo.

**Topics**
+ [Lanzamiento de una instancia con NitroTPM habilitado](#launch-instance-with-nitrotpm)
+ [Dejar de utilizar NitroTPM en una instancia](#disable-nitrotpm-support-on-instance)

## Lanzamiento de una instancia con NitroTPM habilitado
<a name="launch-instance-with-nitrotpm"></a>

Cuando lance una instancia con los [requisitos previos](enable-nitrotpm-prerequisites.md), NitroTPM se habilita automáticamente en dicha instancia. Solo puede habilitar NitroTPM en una instancia durante la inicialización. Para obtener más información acerca de cómo iniciar una instancia, consulte [Lanzamiento de una instancia de Amazon EC2](LaunchingAndUsingInstances.md).

## Dejar de utilizar NitroTPM en una instancia
<a name="disable-nitrotpm-support-on-instance"></a>

Después de inicializar una instancia con NitroTPM habilitado, no puede desactivar NitroTPM para dicha instancia. Sin embargo, puede configurar el sistema operativo para que deje de utilizar NitroTPM al desactivar el controlador de dispositivo TPM 2.0 en la instancia mediante las siguientes herramientas:
+ Para **instancias de Linux**, utilice tpm-tools.
+ Para **instancias de Windows**, utilice la consola de administración de TPM (tpm.msc).

Para obtener más información sobre la desactivación del controlador de dispositivo, consulte la documentación de su sistema operativo.

# Verificación de que una instancia de Amazon EC2 está habilitada para NitroTPM
<a name="verify-nitrotpm-support-on-instance"></a>

Puede verificar si una instancia de Amazon EC2 está habilitada para NitroTPM. Si la compatibilidad con NitroTPM está habilitada en la instancia, el comando devuelve `"v2.0"`. De lo contrario, el campo `TpmSupport` no está presente en el resultado.

La consola de Amazon EC2 no muestra el campo `TpmSupport`.

------
#### [ AWS CLI ]

**Verificación de si una instancia está habilitada para NitroTPM**  
Utilice el comando [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html).

```
aws ec2 describe-instances \
    --instance-ids i-1234567890abcdef0 \
    --query Reservations[].Instances[].TpmSupport
```

------
#### [ PowerShell ]

**Verificación de si una instancia está habilitada para NitroTPM**  
Utilice el cmdlet [Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html).

```
(Get-EC2Instance `
    -InstanceId i-1234567890abcdef0).Instances.TpmSupport
```

------

## Verifique el acceso a NitroTPM en su instancia de Windows
<a name="verify-nitrotpm-support-windows-instance"></a>

**(Solo instancias de Windows) Comprobación de si Windows puede acceder a NitroTPM**

1. [Conéctese a la instancia sw EC2 de Windows](connecting_to_windows_instance.md).

1. En la instancia, ejecute el programa tpm.msc.

   Aparecerá la ventana **Administración de TPM en computadora local**.

1. Compruebe el campo **Información del fabricante de TPM**. Contiene el nombre del fabricante y la versión de NitroTPM en la instancia.  
![\[La ventana Administración de TPM en computadora local y el campo Información del fabricante de TPM muestran la versión de NitroTPM en la instancia.\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/images/tpm-1.png)

# Recupere la clave de aprobación pública de una instancia EC2
<a name="retrieve-ekpub"></a>

Puede recuperar de forma segura la clave de aprobación pública de una instancia en cualquier momento.

------
#### [ AWS CLI ]

**Para recuperar la clave de aprobación pública de una instancia**  
Use el comando [get-instance-tpm-ek-pub](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-tpm-ek-pub.html).

**Ejemplo 1**  
El siguiente ejemplo obtiene la clave de aprobación pública `rsa-2048` en formato `tpmt` para la instancia especificada.

```
aws ec2 get-instance-tpm-ek-pub \
    --instance-id i-1234567890abcdef0 \
    --key-format tpmt \ 
    --key-type rsa-2048
```

A continuación, se muestra un ejemplo del resultado.

```
{
    "InstanceId": "i-01234567890abcdef",
    "KeyFormat": "tpmt",
    "KeyType": "rsa-2048",
    "KeyValue": "AAEACwADALIAIINxl2dEhLEXAMPLEUal1yT9UtduBlILZPKh2hszFGmqAAYAgABDA
    EXAMPLEAAABAOiRd7WmgtdGNoV1h/AxmW+CXExblG8pEUfNm0LOLiYnEXAMPLERqApiFa/UhvEYqN4
    Z7jKMD/usbhsQaAB1gKA5RmzuhSazHQkax7EXAMPLEzDthlS7HNGuYn5eG7qnJndRcakS+iNxT8Hvf
    0S1ZtNuItMs+Yp4SO6aU28MT/JZkOKsXIdMerY3GdWbNQz9AvYbMEXAMPLEPyHfzgVO0QTTJVGdDxh
    vxtXCOu9GYf0crbjEXAMPLEd4YTbWdDdgOKWF9fjzDytJSDhrLAOUctNzHPCd/92l5zEXAMPLEOIFA
    Ss50C0/802c17W2pMSVHvCCa9lYCiAfxH/vYKovAAE="
}
```

**Ejemplo 2**  
El siguiente ejemplo obtiene la clave de aprobación pública `rsa-2048` en formato `der` para la instancia especificada.

```
aws ec2 get-instance-tpm-ek-pub \
    --instance-id i-1234567890abcdef0 \
    --key-format der \ 
    --key-type rsa-2048
```

A continuación, se muestra un ejemplo del resultado.

```
{
    "InstanceId": "i-1234567890abcdef0",
    "KeyFormat": "der",
    "KeyType": "rsa-2048",
    "KeyValue": "MIIBIjANBgEXAMPLEw0BAQEFAAOCAQ8AMIIBCgKCAQEA6JF3taEXAMPLEXWH8DGZb4
    JcTFuUbykRR82bQs4uJifaKSOv5NGoEXAMPLEG8Rio3hnuMowP+6xuGxBoAHWAoDlGbO6FJrMdEXAMP
    LEnYUHvMO2GVLsc0a5ifl4buqcmd1FxqRL6I3FPwe9/REXAMPLE0yz5inhI7ppTbwxP8lmQ4qxch0x6
    tjcZ1Zs1DP0EXAMPLERUYLQ/Id/OBU7RBNMlUZ0PGG/G1cI670Zh/RytuOdx9iEXAMPLEtZ0N2A4pYX
    1+PMPK0lIOGssA5Ry03Mc8J3/3aXnOD2/ASRQ4gUBKznQLT/zTZEXAMPLEJUe8IJr2VgKIB/Ef+9gqi
    8AAQIDAQAB"
}
```

------
#### [ PowerShell ]

**Para recuperar la clave de aprobación pública de una instancia**  
Utilice el cmdlet [Get-EC2InstanceTpmEkPub](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceTpmEkPub.html).

**Ejemplo 1**  
El siguiente ejemplo obtiene la clave de aprobación pública `rsa-2048` en formato `tpmt` para la instancia especificada.

```
Get-EC2InstanceTpmEkPub `
    -InstanceId i-1234567890abcdef0 `
    -KeyFormat tpmt `
    -KeyType rsa-2048
```

**Ejemplo 2**  
El siguiente ejemplo obtiene la clave de aprobación pública `rsa-2048` en formato `der` para la instancia especificada.

```
Get-EC2InstanceTpmEkPub `
    -InstanceId i-1234567890abcdef0 `
    -KeyFormat der `
    -KeyType rsa-2048
```

------