¿Cómo nos aseguramos de que el código que estamos instalando sea, como mínimo, el código que envió un proveedor? La solución generalmente aceptada es la firma de código, añadiendo una firma digital a los archivos binarios que se puede utilizar para garantizar la autoría. Al mismo tiempo, la firma incluye un hash que se puede usar para mostrar que el código que recibió no ha sido alterado después de haber sido firmado.
La firma de código es cada vez más importante como parte de garantizar la lista de materiales del software y reducir los riesgos asociados con el secuestro de archivos binarios legítimos por parte del malware. La firma es necesaria si planea utilizar servicios como Microsoft Store o el Administrador de paquetes de Windows para distribuir sus aplicaciones, permitiendo que el repositorio verifique las fuentes del software.
Uso de infraestructura de clave pública para proteger el código
El proceso de firma de código es sencillo y se basa en conocimientos familiares. criptografía de clave pública técnicas. Al igual que estos, requiere firmas y certificados digitales, verificando la identidad del editor y la autoridad certificadora que emitió los certificados subyacentes. Esa última característica es clave para establecer la relación de confianza entre el editor y el código, con una lista de autoridades de certificación confiables administradas tanto por las tiendas como por el sistema operativo subyacente al que se dirige el código certificado.
Por muchas buenas razones, cada vez es mucho más difícil gestionar su propia infraestructura de firma. Las tiendas no aceptan certificados autofirmados, aunque se pueden usar para la distribución de código interno, y ahora los certificados deben guardarse en módulos de seguridad de hardware confiables, donde deben renovarse periódicamente para garantizar que siempre esté utilizando un certificado válido. certificado para su código.
Microsoft ha ofrecido durante mucho tiempo varias formas diferentes de firmar código, utilizando la técnica para garantizar que Windows sólo instale controladores confiables. Desde entonces, el proceso se ha extendido a las actualizaciones de software de Microsoft y a los instaladores utilizados por la Tienda Windows.
Una de esas formas fue Azure Code Signing, que realmente no captó la atención de los desarrolladores, a pesar de integrarse bien con Visual Studio y la Tienda Windows. Sin embargo, Azure Code Signing tampoco era la opción más barata y tenía que competir con las soluciones locales.
Presentamos la firma confiable
Microsoft ha simplificado su opción alojada en la nube e incorporado las últimas actualizaciones a la infraestructura informática segura de Azure, lanzando una vista previa de lo que llama Firma confiable. Como parte del lanzamiento, Microsoft está introduciendo una nueva estructura de precios y brinda integración con los canales de compilación de GitHub.
El objetivo detrás de Trusted Signing es reunir todo el ciclo de vida de la firma de código en un solo lugar, simplificando el proceso de adquisición de los certificados necesarios, almacenándolos de forma segura y proporcionando una forma segura y privada de firmar código.
El servicio se basa en herramientas familiares de Azure. Puede configurarlo desde el Portal de Azure, agregando una cuenta de firma confiable a un grupo de recursos dentro de su suscripción. Es mejor configurar un grupo de recursos separado para la firma de código que no se use para nada más, ya que esto le permite controlar de manera más efectiva los usuarios y roles que tienen acceso.
Hay dos opciones para Trusted Signing: básica y premium. La principal diferencia entre ambos es el número de validaciones de identidad y perfiles de certificados puedes almacenar. La validación de identidad se utiliza para demostrar quién es usted (o su organización), mientras que los perfiles de certificado se utilizan para generar los certificados utilizados para firmar su código. Los perfiles de certificado contienen información sobre la función de la firma y cómo se confía en ella.
Comenzando con la firma confiable
Empezar es directo. Puede usar Azure Portal o la CLI de Azure, aunque puede validar la identidad solo a través del portal. Debe tener esto en cuenta si está utilizando la CLI, ya que agrega otro paso y le impide automatizar el proceso.
El primer paso es registrar un proveedor de recursos de firma de código en su suscripción de Azure. Hay una lista de proveedores de recursos en la configuración de su cuenta, donde puede seleccionar la opción Microsoft.CodeSigning. Esto cambia de No registrado a Registrado, lo que le permite configurar la firma confiable creando una cuenta para guardar sus detalles de identidad y firmar perfiles de certificados. Actualmente, está limitado a las regiones de EE. UU. y Europa de Azure, y cada región tiene su propia URL de punto final dedicada que se puede usar para agregar firma automatizada a servicios de compilación externos.
A continuación, crea una cuenta de Trusted Signing como un nuevo recurso de Azure. Como la mayoría de los recursos de Azure, la creación del recurso implica seguir un asistente básico, completar los formularios necesarios para crear un nuevo grupo de recursos, elegir un plan de precios e implementar su cuenta en una región de Azure. Se necesitan unos minutos para implementar su instancia y luego podrá validar la identidad de su organización.
Deberá iniciar sesión en Azure con una cuenta que tenga el rol de Verificador de identidad de firma confiable adecuado. Deberá elegir si está validando una identidad pública o privada. Una identidad pública necesita una identidad comercial legal para el certificado, mientras que la privada solo requiere su inquilino de Azure. Las identidades públicas deben tener una URL, una dirección de correo electrónico de contacto y su ID de vendedor de Microsoft Store, si desea entregar código a través de Microsoft Store.
Existen algunas limitaciones que hacen que el uso de Trusted Signing sea imposible para empresas emergentes o comerciantes individuales, ya que es necesario tener tres años de historial fiscal. (La documentación implica que esto puede cambiar en el futuro). Es posible que deba proporcionar información adicional a través del portal si Microsoft necesita una verificación adicional. No espere una respuesta instantánea. La verificación de una cuenta podría tardar una semana o más.
Una vez que eso suceda, podrá crear un perfil de certificado, nuevamente para uso público o privado. Comience completando un formulario con la información que se codificará en sus certificados de firma. Ahora debería estar listo para comenzar a firmar el código utilizando los detalles almacenados en su cuenta de Trusted Signing. vinculándolo a un conjunto cada vez mayor de integraciones de firmas.
Agregar firma confiable a una acción de compilación de GitHub
Quizás la opción más interesante sea el soporte para usando una acción de GitHub para firmar su código tan pronto como se complete la compilación, utilizando uno de los ejecutores de Windows. Simplemente agregue la acción después de que se complete una compilación, utilizando los secretos de su cuenta y el punto final de firma de código para su cuenta de Trusted Signing. Como parte del proceso de configuración, debe agregar la carpeta y los tipos de archivos que se están firmando, el tipo de hash que está utilizando y una marca de tiempo RFC 3161. Si su objetivo son archivos de salida específicos, puede incluir un archivo de catálogo de archivos que enumere los archivos que se están firmando.
El resultado es un enfoque no intervencionista para entregar una compilación firmada: envíe algo de código a una rama de producción específica de su repositorio y la acción se encargará de compilar, empaquetar y firmar el código. Incluso lo entregará a la Tienda Windows o a un repositorio del Administrador de paquetes de Windows. el corredor es disponible en la tienda de Visual Studiopara que pueda administrarse y editarse dentro de Visual Studio.
Automatizar el ciclo de vida del certificado
Otro aspecto del servicio es soporte para el ciclo de vida de su certificado. El modelo subyacente es el enfoque estándar x.509 para certificados y sus claves. Es importante tener en cuenta que los certificados son de corta duración: se renuevan diariamente y son válidos solo por 72 horas. Eso le permite invalidar rápidamente compilaciones específicas que puedan haber sido comprometidas. No tienes que hacer nada. Todo el proceso es automático, con los certificados emitidos registrados en Azure y almacenados y administrados en hardware criptográfico seguro.
Por supuesto, una de las cuestiones clave es el coste, y Trusted Signing no es demasiado caro. La opción básica, que permite uno de cada tipo de perfil de certificado, cuesta $9,99 por 5000 firmas por mes (las firmas adicionales cuestan $0,005 por firma). Si necesita más certificados, puede elegir la opción premium de $99,99 con 100.000 firmas por mes y el mismo precio para excedentes, con 10 de cada tipo en cada cuenta.
Microsoft está haciendo un gran esfuerzo para que la firma de código sea más sencilla de usar. Sería bueno si hubiera una opción gratuita como Vamos a cifrar para proyectos de código abierto o para desarrolladores individuales, pero por ahora eso no está sobre la mesa.
Lo que se necesita es una infraestructura de firma de código que sea fácil de usar y esté disponible para todos, de modo que podamos hacer de la firma de código una parte natural del ciclo de vida del desarrollo de software. Cuanto más código se firme, menor será el riesgo para todos nosotros, incluidos Microsoft y Windows. Proporcionar un servicio de firma como Trusted Signing como servicio público podría ser el mejor enfoque a largo plazo, pero por ahora, Trusted Signing es lo que tenemos.
Copyright © 2024 IDG Communications, Inc.