- Puntos Clave
- ¿Qué es un certificado de firma de código?
- Cómo funciona la firma de código
- Tipos de certificados de firma de código
- Por qué las claves de firma de código deben residir en un HSM
- Firma de código en pipelines de CI/CD
- Riesgos de la firma de código y cómo mitigarlos
- ¿Cómo puede ayudar la consultoría de cifrado?
- Conclusión
- Preguntas frecuentes
- Proteja su cadena de suministro de software
Un certificado de firma de código es un certificado digital que un editor de software utiliza para firmar digitalmente el código, de modo que los sistemas operativos, los navegadores y las herramientas de seguridad puedan verificar quién lo publicó y confirmar que el código no ha sido alterado desde que fue firmado.
Un certificado de firma de código permite a un editor adjuntar una firma digital a una aplicación, script, controlador o imagen de firmware. La firma demuestra que el código proviene del titular del certificado y que no ha sufrido modificaciones desde su firma. Autoridades de certificación Las autoridades de certificación emiten certificados de firma de código con validación de organización (OV) o validación extendida (EV), y desde el 1 de junio de 2023, el Foro CA/Browser exige que cada clave privada de firma de código, ya sea OV o EV, se genere y almacene en un módulo criptográfico de hardware certificado en lugar de en software.
Puntos Clave
- Un certificado de firma de código vincula la identidad verificada del editor con el código que firma, de modo que los sistemas operativos y los motores antivirus puedan confirmar la autenticidad e integridad antes de que el usuario ejecute el software.
- Las autoridades de certificación emiten dos niveles de validación para la firma de código: Validación de Organización (OV) y Validación Extendida (EV). No existe un certificado de firma de código con validación de dominio.
- Desde el 1 de junio de 2023, los requisitos básicos del CA/Browser Forum exigen que todas las claves privadas de firma de código, OV y EV, se generen y almacenen en un módulo criptográfico de hardware certificado al menos según FIPS 140-2 Nivel 2 o Common Criteria EAL 4+.
- El sellado con fecha y hora de una firma mantiene su validez incluso después de que expire el certificado, lo cual es importante para el software que permanece en funcionamiento durante años.
- El robo de claves privadas, y no la criptografía débil, es la causa más común de incidentes de firma de código. El ataque a ASUS Live Update y otros ataques similares a la cadena de suministro se originaron por el robo de claves de firma.
¿Qué es un certificado de firma de código?
A certificado de firma de código Este es el mecanismo que muestra el indicador de "editor de confianza" al instalar un software. La clave privada del editor firma un hash criptográfico del código; el certificado contiene la clave pública correspondiente y la identidad verificada del editor. Cuando un dispositivo instala el software, recalcula el hash, compara la firma con el certificado y recorre la cadena de certificados hasta una raíz de confianza antes de permitir que la instalación continúe sin advertencias.
Los certificados de firma de código son emitidos por autoridades de certificación públicas como DigiCert, Sectigo y GlobalSign, siguiendo los Requisitos Básicos para Certificados de Firma de Código del CA/Browser Forum.
Cómo funciona la firma de código
La firma y verificación del código siguen siempre la misma secuencia básica:
- El editor genera un hash del código (la aplicación, el script o la imagen del firmware).
- La clave privada del editor, guardada en un HSM o token, cifra ese hash para crear la firma digital.
- La firma y el certificado de firma de código están integrados o adjuntos al paquete de software.
- Opcionalmente, una autoridad de certificación de fecha y hora puede firmar conjuntamente el paquete para que la firma siga siendo válida después de que caduque el certificado.
- Cuando un usuario o sistema instala el software, este recalcula el hash, verifica la firma con la clave pública del certificado y comprueba la cadena de certificados hasta una raíz de confianza antes de permitir la instalación.
Tipos de certificados de firma de código
Los certificados de firma de código vienen en dos niveles de validación, además de una función opcional de sellado de tiempo que se aplica a ambos.
| Tipo | Validación realizada | Uso típico |
|---|---|---|
| Firma de código estándar (OV) | Confirma la existencia legal de la organización y que el solicitante está autorizado para actuar en su nombre. | Aplicaciones de escritorio, controladores, herramientas internas, la mayoría del software comercial. |
| Firma de código EV | Añade una verificación más exhaustiva de la entidad legal y los antecedentes; históricamente, permitía la reputación instantánea de SmartScreen en Windows. | Controladores en modo kernel, software de seguridad, editores que necesitan generar confianza de inmediato sin un período de tiempo para construir una reputación. |
| Sellado de tiempo (complemento, no un tipo de certificado) | Una autoridad de confianza en materia de sellado de tiempo firma conjuntamente el paquete en el momento de la firma. | Cualquier software firmado que deba seguir siendo válido después de que expire el certificado de firma. |
Las versiones anteriores de este artículo se referían a "certificados de firma de código de validación de dominio". Ese tipo no existe: DV es un TLS / SSL Nivel de validación, no de firma de código. Todo certificado de firma de código requiere, como mínimo, una verificación de identidad a nivel de organización.
Por qué las claves de firma de código deben residir en un HSM
A partir del 1 de junio de 2023, el CA/Browser Forum exige que la clave privada de cada certificado de firma de código nuevo o renovado, ya sea OV o EV, se genere y almacene en un módulo criptográfico de hardware certificado según FIPS 140-2 Nivel 2 o Common Criteria EAL 4+ o superior, y que la clave no sea exportable. Los certificados emitidos antes de esa fecha no se verán afectados hasta su próxima renovación.
| Opción de almacenamiento | Cómo funciona |
|---|---|
| Token de hardware | La CA envía un token USB certificado; la clave se genera en el token y nunca sale de él. |
| HSM local o en la nube | El suscriptor opera un HSM certificado (o un HSM como servicio); la CA verifica el cumplimiento y la certificación remota de claves. |
| Servicio de firma | La CA o un proveedor de confianza guarda la clave en su propio HSM certificado y firma en nombre del suscriptor a través de una API. |
Esta regla existe porque el robo de claves de firma de software, y no la criptografía defectuosa, ha sido la causa de los incidentes de firma de código más sonados. Mantener la clave dentro de un HSM certificado significa que puede firmar código, pero nunca podrá copiarse ni utilizarse en otro lugar.
Firma de código en pipelines de CI/CD
Actualmente, la mayoría de los equipos firman el código automáticamente dentro de su proceso de compilación, en lugar de hacerlo manualmente antes del lanzamiento.
- Firma automatizada. Cada compilación en Jenkins, GitHub Actions o Azure DevOps ejecuta un paso de firma antes de que se publiquen los artefactos, lo que elimina la necesidad de gestionar manualmente la clave privada.
- Hashing del lado del cliente. Solo se envía el hash del archivo al HSM o al servicio de firma para su firma, no el artefacto completo, lo que permite que las compilaciones grandes sean rápidas.
- Control de acceso y auditoría. El control de acceso basado en roles (RBAC) restringe quién o qué puede activar una firma, y cada evento de firma se registra para garantizar el cumplimiento normativo.
- Mapeo de cumplimiento. Un registro completo de auditoría de firmas admite marcos como las directrices del NIST, PCI DSS y las políticas internas de la cadena de suministro de software, y se alinea con marcos como SLSA de Google y S2C2F de Microsoft.
Riesgos de la firma de código y cómo mitigarlos
| Robo o mal uso de claves privadas | Almacenamiento basado en HSM, RBAC y rotación de claves para que una credencial robada no pueda firmar código. |
| Dispersión clave entre equipos y flujos de trabajo | Centralice la firma digital a través de una única plataforma con un inventario de claves y certificados en tiempo real. |
| Usuarios internos malintencionados o servidores de compilación comprometidos | Entornos de compilación inmutables y auditados, y flujos de trabajo de aprobación antes de que se emita una firma. |
| Los certificados caducados provocan fallos en el software antiguo. | Añada una marca de tiempo a cada firma para que siga siendo válida después de que caduque el certificado. |
¿Cómo puede ayudar la consultoría de cifrado?
Consultoría de cifrado CodeSign seguro Es una solución segura y flexible para la firma de código en múltiples sistemas operativos, como Windows, Linux, macOS y contenedores Docker. CodeSign Secure protege los dispositivos digitales contra software malicioso mediante la firma digital de código, protegiéndolos de alteraciones durante su transmisión, lo cual constituye un componente vital de la seguridad en el mundo digitalizado actual.
CodeSign Secure permite a una organización proteger la información durante su transmisión. Además, brinda a los destinatarios del código mayor confianza al saber que el código está intacto y es original en todas las plataformas.
Conclusión
Los certificados de firma de código son esenciales para desarrollar software seguro y confiable. Al seleccionar la categoría correcta de certificado, conocer la diferencia entre confianza pública y privada, e integrar la firma de código en su flujo de trabajo de DevOps, también mejora la seguridad y confiabilidad de su software.
Cumplir con las regulaciones es una cosa, pero inspirar confianza en los usuarios y proteger sus aplicaciones contra cualquier forma de manipulación es otra. En definitiva, la firma de código mejora el nivel de seguridad de todos los programas y software creados para los usuarios.
Preguntas frecuentes
¿Cuál es la diferencia entre un certificado de firma de código y un certificado SSL/TLS?
Un certificado SSL/TLS autentica un sitio web y cifra el tráfico entre un navegador y un servidor. Un certificado de firma de código autentica al editor de un software y demuestra que el código no ha sido alterado. Ambos son certificados digitales emitidos por una CA (Autoridad de Certificación), pero verifican aspectos diferentes y no son intercambiables.
¿Necesito un certificado de firma de código EV?
La mayoría de los editores pueden usar un certificado de firma de código OV estándar. EV merece la pena por la verificación adicional que supone para los controladores en modo kernel o el software de seguridad, donde un proveedor de antivirus o Microsoft Windows exige una comprobación de identidad más estricta, o donde un editor desea el nivel más alto de garantía de identidad disponible.
¿Puedo almacenar mi clave privada de firma de código en un software en lugar de en un HSM?
No. Desde el 1 de junio de 2023, las normas del CA/Browser Forum exigen que la clave privada de cada certificado de firma de código nuevo o renovado se genere y almacene en un módulo criptográfico de hardware certificado (FIPS 140-2 Nivel 2 o Criterios Comunes EAL 4+ o superior). Las autoridades de certificación públicas no emitirán certificados para claves que solo contengan software.
¿Qué es el sellado de tiempo en la firma de código?
El sellado de tiempo añade una fecha y hora fiables y verificables de forma independiente a la firma de un código. Esto permite que una firma siga siendo válida incluso después de que caduque el certificado de firma, de modo que el software firmado hace años aún puede verificarse como legítimo en el momento de la firma.
¿Cuánto tiempo es válido un certificado de firma de código?
Los certificados de firma de código no están cubiertos por el calendario de validez de TLS cada vez más restrictivo del CA/Browser Forum. La mayoría de las autoridades de certificación los emiten por un período de uno a tres años, y el sellado de tiempo preserva la validez de la firma más allá de esa fecha de vencimiento.
Proteja su cadena de suministro de software
¿Listo para dejar de usar hojas de cálculo y tokens USB compartidos para la firma de código? Ver CodeSign seguro en acción, o inspeccione cualquier certificado con nuestro servicio gratuito. Decodificador de certificados y CSR ASN.1.
- Puntos Clave
- ¿Qué es un certificado de firma de código?
- Cómo funciona la firma de código
- Tipos de certificados de firma de código
- Por qué las claves de firma de código deben residir en un HSM
- Firma de código en pipelines de CI/CD
- Riesgos de la firma de código y cómo mitigarlos
- ¿Cómo puede ayudar la consultoría de cifrado?
- Conclusión
- Preguntas frecuentes
- Proteja su cadena de suministro de software
