a Fundación Linux ha lanzado un servicio gratuito que los desarrolladores de software pueden utilizar para firmar digitalmente sus versiones y otros appliance de software. El proyecto pretende reforzar la seguridad y la capacidad de auditoría de la cadena de suministro de software de código abierto, que se ha enfrentado a un número de ataques sin precedentes en los últimos años. Puede ver más sobre las 5 razones de usar Linux en este video.
El código del nuevo servicio, denominado sigstore, se ha desarrollado en colaboración con Google, Red Hat y la Universidad de Purdue, y será mantenido por la comunidad en el futuro. Todas las firmas y eventos de firma se almacenarán en un registro público a prueba de manipulaciones que podrá ser supervisado para descubrir posibles abusos. Más sobre FOSS o Software Libre de Código Abierto.
¿Cómo funciona sigstore?
Sigstore utiliza el protocolo de autenticación OpenID para vincular los certificados a las identidades. Esto significa que un desarrollador puede utilizar su dirección de correo electrónico o su cuenta con un proveedor de identidad OpenID existente para firmar su software.
Esto es diferente de la firma de código tradicional, que requiere la obtención de un certificado de una autoridad de certificación (CA) en la que confían los mantenedores de un ecosistema de software concreto, por ejemplo, Microsoft o Apple. La obtención de un certificado de firma de código tradicional requiere pasar por procedimientos especiales que incluyen la verificación de la identidad o la adhesión a un programa de desarrolladores.
El cliente de firma de sigstore genera un par de claves efímeras de corta duración y se pone en contacto con la PKI (infraestructura de clave pública) de sigstore, que será gestionada por la Fundación Linux. El servicio PKI comprueba si la concesión de OpenID connect es correcta y emite un certificado basado en el par de claves que se utilizará para firmar el software. El evento de firma se registra en el registro público y luego las claves pueden descartarse.
Esta es otra diferencia con respecto a la firma de código existente, ya que cada evento de firma genera un nuevo par de claves y certificado. En última instancia, el objetivo es tener una prueba pública de que una identidad concreta firmó un archivo en un momento determinado. A continuación, la comunidad deberá crear herramientas que utilicen esta información para crear políticas y mecanismos de aplicación.
"Se basa en las autoridades de certificación X.509 normales, así que la gente puede añadir su propia CA raíz, puede deshacerse de la nuestra si no quiere confiar en ella, puede añadir sus propios intermediarios, y ese tipo de cosas", explica Dan Lorenc, miembro del equipo de seguridad de código abierto de Google y colaborador del proyecto.
Los desarrolladores pueden utilizar el servicio público de PKI y el registro de transparencia, o pueden desplegar y ejecutar su propio sistema de firma interno para su organización. El código del servicio de registro, llamado Rekor, y de la autoridad de certificación raíz, llamada Fulcio, son de código abierto y están disponibles en GitHub.
¿Por qué firmar las versiones de software?
La firma de código de software en general se utiliza para ofrecer garantías sobre la procedencia del software, proporcionando pruebas de que un fragmento de código se originó con un desarrollador o una organización concreta en la que el usuario confía. Las soluciones de listas blancas de aplicaciones, por ejemplo, utilizan esta información para aplicar las políticas del usuario sobre qué software y de quién se va a ejecutar en un sistema concreto.