Ir al contenido

Próximamente estarán disponibles los certificados de 47 días. ¿Todo listo?

Actúa ahora →

¿Qué tan útiles son para usted los hashes del lado del cliente en la firma de código?

Algoritmo hash
Tabla de contenido

Definamos Firma de código en resumen.

La firma de código es un método para colocar una firma digital en un archivo, documento, software o ejecutable para comprobar su autenticidad y veracidad en cuanto a la funcionalidad y las características que ofrece. Esto también garantiza que la entidad de software (archivo, documento, software o ejecutable) no sea manipulada durante su transferencia.

La firma de código se puede implementar de dos maneras: firma del lado del cliente y firma del lado del servidor.

Ambos mencionaron métodos de firma de código que eran populares hasta que el ataque de SolarWinds salió a la luz y después de eso la firma del lado del cliente se convirtió en el tema de conversación, ya que no requiere cargar o mover los archivos de firma, lo que evita los ataques en los que el código malicioso también se firma como parte de la firma original del archivo o entidad.

Es hora de comprender primero la función hash:

El algoritmo hash es la función criptográfica que genera una salida de longitud fija, denominada resumen o valor hash, a partir de una entrada dada, que puede tener un tamaño arbitrario. La función hash tiene la propiedad de generar una salida única y unidireccional/irreversible, lo que significa que no se puede obtener el valor de entrada original mediante una operación hash inversa.

Veamos un ejemplo de algoritmo hash con una función hash simple:

SHA 256 editado

En el ejemplo anterior, se muestra una función hash criptográfica SHA-256 que convierte los datos arbitrarios en un valor hash de tamaño fijo de 256 bits.

Ahora, comprendamos en detalle la firma de código del lado del servidor.

Los siguientes pasos se realizan al firmar el código o cualquier ejecutable mediante firma del lado del servidor:

  1. Se genera un par de claves único y, en función de este par de claves, se crea una CSR (Solicitud de firma de certificado) es generado por un solicitante/desarrollador.
  2. El CSR se envía a CA (autoridad de certificación) con una plantilla de firma de código.
  3. La CA emite el certificado después de la validación y devuelve el certificado de firma de código con la clave pública al solicitante.
  4. El código/ejecutable que se va a firmar es cargado al servidor de firma de código por el solicitante.
  5. Una vez que se carga el código/ejecutable, el valor hash del código/ejecutable se calcula con la ayuda de cualquier función hash criptográfica y, dado que este valor hash se calcula en el lado del servidor, de ahí el nombre de hash del lado del servidor.
  6. El valor hash calculado se firma con la clave privada correspondiente emitida al solicitante, lo que da como resultado la firma digital.
  7. La firma digital, el certificado de firma de código y la información de la función hash ahora se combinan en un bloque de firma y se colocan en el software, que se envía al receptor/consumidor.
  8. Cuando se recibe el código/ejecutable, la computadora del consumidor primero verifica la autenticidad del certificado de firma de código.
  9. Una vez confirmada la autenticidad, el resumen se descifra con la clave pública del par de claves creado.
  10. La función hash se utiliza en el código/ejecutable para calcular el resumen.
  11. El resumen resultante se compara con el resumen enviado por el solicitante. Si los resúmenes coinciden, la instalación del software es segura.

Solución de firma de código empresarial

Obtenga una solución para todas sus necesidades criptográficas de firma de código de software con nuestra solución de firma de código.

Comprendamos en detalle la firma del lado del cliente.

Los siguientes pasos se realizan al firmar el código o cualquier ejecutable mediante firma del lado del cliente:

  1. Se genera un par de claves único y, en función de este par de claves, un solicitante/desarrollador genera una CSR (solicitud de firma de certificado).
  2. La CSR se envía a la CA (autoridad de certificación) con una plantilla de firma de código.
  3. La CA emite el certificado después de la validación y devuelve el certificado de firma de código con la clave pública al solicitante.
  4. El valor hash del código/ejecutable se calcula mediante una función hash criptográfica en el cliente. Dado que este valor hash se calcula en el lado del cliente, de ahí el nombre "hashing del lado del cliente".
  5. El solicitante carga únicamente el valor hash, es decir, el resumen del código/ejecutable que se va a firmar, en el servidor de firma de código.
  6. El valor hash calculado se firma con la clave privada correspondiente emitida al solicitante, lo que da como resultado la firma digital.
  7. La información de la firma digital y la función hash se envía de vuelta al cliente.
  8. La firma digital, el certificado de firma de código y la información de la función hash ahora se combinan en un bloque de firma y se colocan en el software en el extremo del solicitante/desarrollador.
  9. Cuando el consumidor recibe el código/ejecutable, su computadora primero verifica la autenticidad del certificado de firma de código.
  10. Una vez confirmada la autenticidad, el resumen se descifra con la clave pública del par de claves creado.
  11. La función hash se utiliza en el código/ejecutable para calcular el resumen.
  12. El resumen resultante se compara con el resumen enviado por el solicitante. Si los resúmenes coinciden, la instalación del software es segura.

Conclusión

Firma de código Se ha convertido en un requisito esencial para los desarrolladores de software, ya que la firma de código garantiza la confianza de los usuarios para instalar el software sin preocupaciones. Si bien ambos métodos de firma de código se utilizan en la industria hasta la fecha, el ataque de SolarWinds cambió drásticamente el panorama de la firma de código. Actualmente, la firma del lado del cliente es la opción preferida, considerando que ofrece una ventaja significativa en la generación remota de firmas digitales, reduciendo el ancho de banda requerido al cargar únicamente el valor hash y evitando ataques de código malicioso firmado, ya que no se mueven los archivos de código dentro del entorno.

Recursos: www.encryptionconsulting.com/centro-educativo/que-es-la-firma-de-codigo/