Las empresas Red Hat y Google, junto con la Universidad de Purdue, han fundado el proyecto Sigstore, con el objetivo de crear herramientas y servicios para la verificación de software mediante firmas digitales y el mantenimiento de un registro público para confirmar la autenticidad (transparency log). El proyecto se desarrollará bajo la égida de la organización sin ánimo de lucro Linux Foundation.
El proyecto propuesto permitirá mejorar la seguridad de los canales de distribución de software y protegerse contra ataques dirigidos a sustituir componentes y dependencias del software (supply chain). Uno de los problemas clave de seguridad en el software de código abierto es la dificultad para verificar la fuente de obtención del programa y certificar el proceso de compilación. Por ejemplo, para comprobar la integridad de un lanzamiento, la mayoría de los proyectos utilizan hashes, pero a menudo la información necesaria para la verificación se almacena en sistemas no seguros y en repositorios de código compartidos, lo que permite que los atacantes sustituyan los archivos necesarios para la verificación y, sin levantar sospechas, introduzcan cambios maliciosos.
Solo una pequeña parte de los proyectos utiliza firmas digitales al distribuir lanzamientos debido a las dificultades en la gestión de claves, distribución de claves públicas y revocación de claves comprometidas. Para que la verificación tenga sentido, también se requiere organizar un proceso confiable y seguro para la distribución de claves públicas y sumas de verificación. Incluso con la existencia de una firma digital, muchos usuarios ignoran la verificación, ya que deben invertir tiempo en estudiar el proceso de verificación y entender qué clave merece confianza.
Sigstore se presenta como el equivalente de Let’s Encrypt para el código, proporcionando certificados para la validación de código mediante firmas digitales y herramientas para automatizar la verificación. Con Sigstore, los desarrolladores podrán crear firmas digitales para artefactos relacionados con la aplicación, como archivos de lanzamiento, imágenes de contenedores, manifiestos y archivos ejecutables. Una característica de Sigstore es que el material utilizado para la firma se refleja en un registro público protegido contra modificaciones, que se puede utilizar para la verificación y auditoría.
En lugar de keys permanentes, Sigstore utiliza claves efímeras de corta duración que se generan en base a las credenciales confirmadas por proveedores de OpenID Connect (en el momento de la generación de claves para la firma digital, el desarrollador se identifica a través de un proveedor de OpenID vinculado a su email). La autenticidad de las claves se verifica a través de un registro público centralizado, que permite confirmar que el firmante es realmente quien dice ser y que la firma fue generada por el mismo participante responsable de lanzamientos anteriores.
Sigstore ofrece tanto un servicio listo para usar como un conjunto de herramientas que permiten implementar servicios similares en su propio hardware. El servicio es gratuito para todos los desarrolladores y proveedores de software, y está alojado en un entorno neutral: la Linux Foundation. Todos los componentes del servicio son de código abierto, están escritos en Go y se distribuyen bajo la licencia Apache 2.0.
De los componentes en desarrollo se pueden destacar:
- Rekor: implementación de un registro para almacenar metadatos certificados con firmas digitales, que reflejan información sobre los proyectos. Para garantizar la integridad y protegerse contra la alteración de datos retroactiva, se utiliza una estructura jerárquica de 'Árbol de Merkle', en la que cada rama verifica todas las ramas y nodos inferiores, gracias a un hash jerárquico conjunto. Con un hash final, el usuario puede certificar la corrección de todo el historial de operaciones, así como la validez de los estados anteriores de la base de datos (el hash de verificación raíz del nuevo estado de la base se calcula en función del estado anterior). Se proporciona una API Restful para la verificación y adición de nuevos registros, así como una interfaz cli.
- Fulcio (SigStore WebPKI): sistema para la creación de autoridades certificadoras (Root-CA) que emiten certificados de corta duración basados en un email autenticado a través de OpenID Connect. La vida útil del certificado es de 20 minutos, durante los cuales el desarrollador debe generar la firma digital (si el certificado cae en manos de un atacante más tarde, ya habrá expirado).
- Cosign (Container Signing): herramienta para generar firmas para contenedores, verificar firmas y alojar contenedores firmados en repositorios compatibles con OCI (Open Container Initiative).
Fuente: opennet.ru
