Ir al contenido

¡Se acercan los certificados de 47 días! ¿Estás preparado?

Actúa ahora →

Comprensión de la firma de imágenes de Docker

Comprensión de la firma de imágenes de Docker

Introducción

Hoy en día, todas las aplicaciones o software que utilizan los usuarios se virtualizan y se descargan desde un contenedor Docker. Muchos usuarios temen que atacantes hayan manipulado el archivo que descargan del contenedor e inyectado un script malicioso o malware. De ser así, cada vez que alguien lo descarga y lo ejecuta en su sistema, este se ve afectado por el script malicioso del atacante.

Firma de imágenes Docker, definida como: adjuntar una firma criptográfica a una imagen de contenedor para que un verificador pueda confirmar qué registro/canal de compilación la produjo y que no ha cambiado desde entonces, utilizando herramientas como Cosign o Notation, que almacenan la firma como un artefacto OCI separado vinculado al resumen de la imagen en el propio registro, en lugar de incluir un certificado dentro de la imagen como lo hace la firma de código ejecutable tradicional.

Puntos Clave

  • La firma de contenedores moderna no incluye un certificado dentro de la imagen. Cosign y Notation adjuntan la firma como un artefacto OCI 1.1 Referrers independiente, dirigido al resumen del contenido de la imagen, que se puede encontrar en el registro junto con la propia imagen.
  • Esta página es una introducción conceptual. Para la comparación completa entre Cosign (sin clave, basado en OIDC) y Notation (PKI con raíz de certificado), registros de transparencia y aplicación del control de admisión, consulte Contenedores de firma y artefactos OCI: notación, cofirma y decisión del modelo de confianza.

La necesidad de firmar imágenes de Docker:

Si una organización proporciona un software o producto a su cliente, ¿cómo puede este verificar que no ha sido manipulado? Para brindarles tranquilidad, una organización puede colocar su firma de confianza en el software o producto. Si alguien intenta manipular el código, la firma se modifica. Aquí es donde entra en juego la firma de imágenes. La firma de imágenes permite a una organización firmar su imagen antes de enviarla al contenedor para que el cliente pueda usarla de forma segura.

De forma similar a como se detecta la actividad maliciosa mediante la firma de código, cuando un usuario intenta instalar o ejecutar un archivo, primero se verifica la firma. Si no se encuentra el certificado de firma de imagen de la organización , se impide que el usuario continúe.

¿Qué es la firma de imágenes de Docker?

La firma de imágenes de Docker es el proceso de firmar digitalmente imágenes de Docker para confirmar la identidad del autor del software y garantizar que el código no se haya alterado ni comprometido.

¿Cómo funciona la firma de imágenes de Docker?

El funcionamiento de la firma de imágenes se puede dividir en dos partes:

  1. En el lado del servidor o del desarrollador
  2. Del lado del cliente

En primer lugar, discutiremos cómo el
El proceso tiene lugar en el lado del servidor:

Lado del servidor
  1. La imagen original, es decir, la imagen de Docker que el usuario desea proporcionar a los clientes de forma segura, se procesa primero mediante un algoritmo hash. Hashing algoritmo, porque es prácticamente imposible revertir un hash.
  2. La imagen de Docker en formato hash que obtenemos se firma luego con la clave privada del desarrollador.
  3. Luego, la imagen hash firmada de Docker se empaqueta con la imagen original y el certificado digital, que juntos también se conocen como certificado de firma de imagen.
  4. Ahora se puede cargar o transferir al cliente.

Ahora, veamos cómo se lleva a cabo el proceso en el lado del cliente.

Lado del cliente
  1. La imagen original del contenedor pasa a través de un algoritmo hash para obtener el hash de la imagen.
  2. La clave pública se extrae del certificado y se aplica al hash firmado de la imagen de Docker para extraer el hash de la imagen.
  3. Se comparan ambos hashes creados en los pasos 1 y 2 y, si ambos hashes son iguales, la imagen no se ha modificado y la firma se considera válida.
  4. Al mismo tiempo, se verifica el certificado de firma de imagen para garantizar que haya sido firmado por una CA de confianza. Se verifica su fecha de caducidad y se compara con las listas de revocación para garantizar su validez.

Cómo funciona esto realmente en la práctica

La lógica de verificación mediante hash descrita anteriormente es el modelo mental correcto, pero el empaquetado difiere de la firma de código tradicional en la práctica. En lugar de incluir un certificado dentro de la imagen, Cosign y Notation almacenan la firma como un artefacto independiente en el registro OCI, vinculado al resumen de contenido de la imagen mediante la API OCI 1.1 Referrers. Cosign también admite la firma sin clave, utilizando un certificado OIDC de corta duración y registrando el evento en Rekor, un registro público de transparencia, eliminando así la necesidad de gestionar una clave privada de larga duración. Notation utiliza el modelo más familiar basado en certificados, verificado con una CA que usted controla. Ambos enfoques son actuales y reciben mantenimiento activo; Docker Content Trust, el antiguo mecanismo de firma basado en Notary integrado en la CLI de Docker, ha sido reemplazado en gran medida por estos dos en las implementaciones actuales.

Solución de firma de código empresarial

Obtenga una solución para todas sus necesidades criptográficas de firma de código de software con nuestra solución de firma de código.

Debilidades de la firma de imágenes de Docker

La firma de imágenes también presenta varias debilidades, entre ellas:
La gestión incorrecta de la clave privada creada al inicio del proceso de firma de imágenes puede generar inseguridad en el software enviado. Si se roba una clave privada legítima, el atacante puede codificar su software malicioso con ella, lo que indicará al usuario que el software es seguro, incluso si no lo es.

Los actores de amenazas pueden obtener un certificado de confianza, pero lo que disuade a la mayoría de los atacantes es la necesidad de proporcionar información de identificación para obtenerlo. Si se distribuye software malicioso con un certificado legítimo, se puede identificar y detener al desarrollador.

Nota : Si el usuario permite la instalación del software, incluso si el sistema operativo indica que no se trata de una imagen firmada, la firma de la imagen resulta inútil.

Para evitar estas debilidades, existen prácticas recomendadas que se deben seguir:

Para la protección de las claves de cifrado, se deben utilizar módulos de seguridad de hardware ( HSM ). Un HSM es un dispositivo físico especializado y de alta confianza. Se trata de un ordenador de red que realiza todas las operaciones criptográficas principales, incluyendo cifrado , descifrado , autenticación, gestión de claves, intercambio de claves, etc. Son resistentes a la manipulación y utilizan operaciones criptográficas extremadamente seguras.

Junto con los HSM, se debe utilizar el principio del mínimo privilegio con las claves, para garantizar que solo los usuarios que necesitan la clave tengan acceso a ella.

Por último, siempre se debe tener cuidado con la firma de imágenes. Descargue e instale únicamente software cuya imagen esté firmada por una CA de confianza.

El futuro de la firma de código

Como podemos ver en el mundo actual, la seguridad y la confianza son fundamentales para el crecimiento de cualquier organización. Todas las organizaciones desean proteger sus datos y proporcionarlos de forma segura a sus clientes. Diversas actividades maliciosas ocurren a diario, por lo que la firma de imágenes aumentará exponencialmente. Todas las organizaciones necesitan implementar la firma de código y la firma de imágenes.

Nuestra oferta de firma de código

Nuestro producto, CodeSign Secure, proporciona una solución segura y flexible para las necesidades de firma de código de una organización para firmar aplicaciones de Windows, Linux, Macintosh, Docker y Android/iOS.

Nuestro marco se puede ampliar para proteger cualquier otro código o documento según lo soliciten nuestros clientes.

  • Las claves están protegidas por el HSM que usted elija: nCipher, Utimaco, Safenet.
  • Se definen políticas y flujos de trabajo para proteger y agilizar el proceso de envío y aprobación de trabajos.
  • Es posible integrar de forma sistemática sus análisis de virus y malware existentes.
  • Desarrollado en una API REST abierta, lo que permite integraciones y requisitos personalizados.

Conclusión

Los datos son cruciales en este mundo conectado, donde la firma de código puede utilizarse para verificarlos. La manipulación de datos puede provocar pérdidas graves, por lo que no se debe confiar en ellos. El software también debería mostrar una advertencia o impedir por completo que el usuario instale software con certificados no confiables. Un software o una aplicación firmados pueden lograr una red confiable de usuarios, dispositivos y programas.

Preguntas frecuentes

¿Sigue siendo Docker Content Trust la forma estándar de firmar imágenes de contenedores?

No. Cosign y Notation lo han reemplazado en gran medida en las implementaciones actuales, ya que ambos ofrecen almacenamiento de firmas nativo de OCI 1.1 y una integración más amplia con el ecosistema y el control de admisión.

¿Necesito gestionar una clave privada para firmar una imagen de contenedor?

No necesariamente. Cosign admite la firma sin clave mediante certificados OIDC de corta duración que se registran en un registro público de transparencia, eliminando por completo la gestión de claves de larga duración. El modelo de Notation, basado en certificados, sí requiere la gestión de una clave a través de su propia CA.

¿Dónde se almacena realmente la firma de una imagen contenedora?

Junto con la imagen en el registro OCI, como un artefacto separado vinculado al resumen del contenido de la imagen a través de la API OCI 1.1 Referrers, no incrustado dentro de la propia imagen.