FAQ Hero
Confianza para la firma de código

¿Qué es la firma de código?

¿Qué es la firma de código?

La firma de código es el proceso de aplicar una firma digital a un archivo (sea o no binario) de software. Esta firma digital valida la identidad del autor o editor del software y verifica que el archivo no ha sido alterado ni manipulado desde que se firmó. La firma de código es un indicador para el destinatario del software de que el código es de confianza, y desempeña un papel fundamental en la lucha contra los intentos de atacar los sistemas o datos.

Los casos de uso de la firma de código incluyen: software para uso interno o externo, revisiones o correcciones, pruebas, desarrollo de productos de dispositivos IoT, entornos informáticos y aplicaciones móviles. Además del código y el software, la firma de código se aplica también a aplicaciones, firmware, archivos, mensajes, XML, scripts, contenedores e imágenes.

¿Cómo funciona la firma de código?

Al igual que sucede con otras tecnologías PKI, en la firma de código intervienen un par de claves pública-privada, una autoridad de certificación y un certificado digital. Cuando un editor firma software, crea un paquete delimitado que incluye el software del editor, un certificado de firma de código y una firma digital. El certificado de firma de código contiene la identidad y la clave pública del editor, así como la firma de la CA que confirma que esta ha verificado la identidad. La firma digital es el hash firmado del software con la clave privada del editor. Cuando se distribuye el software, el agente de usuario comprueba la validez e integridad del certificado (para determinar si el software se ha alterado desde que se firmó). Utiliza la clave pública del certificado para revelar el hash de la firma digital. A continuación, compara el hash de la firma digital con el hash del software calculado recientemente. Si los hashes coinciden, el cliente o usuario tiene la seguridad de que el software no ha sido manipulado. La gestión de claves privadas es un elemento de seguridad esencial en la firma de código. Si la clave se gestiona mal o alguien la roba, los ciberdelincuentes pueden utilizarla para firmar código malicioso y distribuirlo como si fuera una actualización para los sistemas de los desarrolladores o clientes.

¿Por qué es necesario firmar el código?

Las principales plataformas de software, como Java y Microsoft, exigen la firma de código para evitar la propagación de malware. También es una buena práctica de seguridad firmar el código para que los clientes o usuarios no descarguen código manipulado o de fuentes desconocidas. La firma de código sirve para distinguir el código o el software de su empresa del código que puede haberse empaquetado para simular que procede de su organización. Además, cuando se publica software sin firmar, los usuarios pueden encontrarse con etiquetas de advertencia de seguridad. Cuando el código se crea y desarrolla para su uso interno, la firma de código facilita el control y permite saber quién es el responsable de cada tarea.

¿Qué tipos de software se pueden firmar?

Se puede firmar cualquier tipo de archivo (sea o no binario), por ejemplo:

• Aplicaciones de software que se pueden descargar de sitios web

• Aplicaciones informáticas internas

• Aplicaciones móviles

• Archivos XML

• Scripts

• Imágenes de software

• Contenedores

• Controladores y utilidades

• Firmware

¿Qué pasos hay que seguir para firmar código?

En primer lugar, el editor de software genera un par de claves pública-privada. A continuación, obtiene un certificado de firma de código enviando una solicitud de firma de certificado (CSR) junto con su clave pública a una autoridad de certificación (CA). La CA verifica la identidad del editor y autentica la solicitud del certificado. Si todo está en orden, la CA emite el certificado de firma de código. El certificado incluye la identidad del editor, la clave pública y la firma de la CA. La firma de la CA es importante, ya que atestigua que la identidad del portador del certificado ha sido verificada por una empresa externa de confianza. El certificado de firma de código confirma no solo la identidad del editor, sino también la integridad del software. Cuando el editor firma software, crea un paquete delimitado que incluye el software, el certificado de firma de código y una firma digital.

La firma digital también requiere:

  1. Generar un hash o una representación criptográfica única del software con un algoritmo de hash.
  2. Firmar el hash con la clave privada del editor y un algoritmo de firma.

La firma de código se puede realizar manualmente o de forma automatizada como parte del ciclo de desarrollo de software, como por ejemplo un proceso de integración y distribución continuas (CI/CD).