# Gestionar claves para la confianza de contenido


La confianza para una etiqueta de imagen se gestiona mediante el uso de claves. La confianza de contenido de Docker hace uso de cinco tipos diferentes de claves:

| Clave | Descripción |
|:-----------|:----------- |
| clave raíz   | Raíz de la confianza de contenido para una etiqueta de imagen. Cuando la confianza de contenido está habilitada, creas la clave raíz una sola vez. También se conoce como la clave fuera de línea (offline), porque debe mantenerse fuera de línea. |
| targets    | Esta clave te permite firmar etiquetas de imágenes, gestionar delegaciones que incluyen claves delegadas o rutas de delegación permitidas. También conocida como la clave del repositorio, ya que esta clave determina qué etiquetas se pueden firmar en un repositorio de imágenes. |
| snapshot   | Esta clave firma la colección actual de etiquetas de imagen, evitando ataques de tipo mix-and-match. |
| timestamp  | Esta clave permite que los repositorios de imágenes de Docker tengan garantías de seguridad de frescura sin necesidad de actualizaciones periódicas de contenido en el lado del cliente. |
| delegación | Las claves de delegación son claves de etiquetado opcionales y te permiten delegar la firma de etiquetas de imágenes a otros creadores sin tener que compartir tu clave targets. |

Al realizar un `docker push` con Content Trust habilitado por primera vez, las claves root, targets, snapshot y timestamp se generan automáticamente para el repositorio de imágenes:

- Las claves root y targets se generan y almacenan localmente en el lado del cliente.

- Las claves timestamp y snapshot se generan de forma segura y se almacenan en un servidor de firma que se despliega junto al registro de Docker. Estas claves se generan en un servicio backend que no está expuesto directamente a Internet y se cifran en reposo. Utiliza la CLI de Notary para [gestionar tu clave snapshot localmente](https://github.com/theupdateframework/notary/blob/master/docs/advanced_usage.md#rotate-keys).

Las claves de delegación son opcionales y no se generan como parte del flujo de trabajo normal de `docker`. Deben ser [generadas manualmente y añadidas al repositorio](/engine/security/trust/trust_key_mng/trust_delegation/#creating-delegation-keys).

## Elegir una frase de contraseña

Las frases de contraseña que elijas tanto para la clave raíz como para la clave del repositorio deben ser generadas de forma aleatoria y guardadas en un gestor de contraseñas. Tener la clave del repositorio permite a los usuarios firmar etiquetas de imágenes en un repositorio. Las frases de contraseña se utilizan para cifrar tus claves en reposo y garantizar que la pérdida de una computadora portátil o una copia de seguridad no deseada no pongan en riesgo el material de la clave privada.

## Copia de seguridad de tus claves

Todas las claves de confianza de Docker se almacenan cifradas utilizando la frase de contraseña que proporcionas al crearlas. Aún así, debes tener cuidado con el lugar donde realizas la copia de seguridad. Una buena práctica consiste en crear dos llaves USB cifradas.

> [!WARNING]
>
> Es muy importante que realices una copia de seguridad de tus claves en un lugar seguro y protegido. La pérdida de la clave del repositorio es recuperable, pero la pérdida de la clave raíz no lo es.

El cliente de Docker almacena las claves en el directorio `~/.docker/trust/private`. Antes de hacer la copia de seguridad, debes empaquetarlas en un archivo `tar`:

```console
$ umask 077; tar -zcvf private_keys_backup.tar.gz ~/.docker/trust/private; umask 022
```

## Firma y almacenamiento en hardware

Docker Content Trust puede almacenar y firmar con claves raíz desde una Yubikey 4. Se prioriza la Yubikey sobre las claves almacenadas en el sistema de archivos. Cuando inicias un nuevo repositorio con confianza de contenido, Docker Engine busca una clave raíz localmente. Si no se encuentra una clave y la Yubikey 4 está presente, Docker Engine crea una clave raíz en la Yubikey 4. Consulta la [documentación de Notary](https://github.com/theupdateframework/notary/blob/master/docs/advanced_usage.md#use-a-yubikey) para obtener más detalles.

Antes de Docker Engine 1.11, esta característica solo estaba en la rama experimental.

## Pérdida de claves

> [!WARNING]
>
> Si un creador pierde las claves, significa perder la capacidad de firmar imágenes para los repositorios en cuestión. Si pierdes una clave, envía un correo electrónico al [soporte de Docker Hub](mailto:hub-support@docker.com). Como recordatorio, la pérdida de una clave raíz no es recuperable.

Esta pérdida también requiere la intervención manual de cada consumidor que haya utilizado una etiqueta firmada de este repositorio antes de la pérdida.
Los consumidores de imágenes obtienen el siguiente error para el contenido descargado previamente del repositorio o repositorios afectados:

```console
Warning: potential malicious behavior - trust data has insufficient signatures for remote repository docker.io/my/image: valid signatures did not meet threshold
```

Para corregir esto, deben descargar una nueva etiqueta de imagen que esté firmada con la nueva clave.

## Información relacionada

* [Confianza de contenido en Docker](/engine/security/trust/trust_key_mng/)
* [Automatización con confianza de contenido](/engine/security/trust/trust_key_mng/trust_automation/)
* [Delegaciones para la confianza de contenido](/engine/security/trust/trust_key_mng/trust_delegation/)
* [Jugar en un entorno de pruebas (sandbox) de confianza de contenido](/engine/security/trust/trust_key_mng/trust_sandbox/)

