Tema 21.3 Criptografía de clave pública

Uso de firmas digitales
Las firmas digitales son una técnica matemática empleada para brindar autenticidad, integridad, y no repudio. Con ello, sirven como prueba legal de que el intercambio de datos ha tenido lugar. Además, usan criptografía asimétrica.
Sus propiedades son:
- Autenticidad: no son falsificables.
- Inalterabilidad: tras firmar un documento, no es posible modificarlo.
- No reutilizable: no se puede transferir la firma entre documentos.
- No repudio: misma validez que un documento firmado físicamente, garantizando la autenticidad.
Las firmas digitales se usan en estas dos situaciones:
- Firma de código: garantiza la integridad y autenticidad de los archivos ejecutables del software proporcionado por un editor.
- Certificados digitales: fichero digital que vincula a una entidad o persona con su clave púbica, permitiendo identificar al titular inequívocamente. Permite establecer conexiones encriptadas.
Se utilizan tres algoritmos de encriptación asimétrica para generar y verificar firmas digitales, que son:
- Algoritmo de Firma Digital (DSA), que genera también pares de claves públicas y privadas
- Algoritmo asimétrico de Rivest-Shamir-Adleman (RSA)
- Algoritmo de Firma Digital de Curva Elíptica (ECDSA), que es el algoritmo DSA al que se le aplican dichas técnicas matemáticas.
Firmas digitales para la firma de código
Como hemos visto, las firmas de código sirven para que el usuario final pueda verificar que el software (archivo ejecutable) que quiere instalar es lícito. De esta forma, firmar digitalmente el código ofrece, una serie de garantías:
- Autenticidad. El código es auténtico y realmente es provisto por el editor
- Integridad del código desde su lanzamiento.
- No repudio tras la publicación del código.
Sobre el software firmado digitalmente:
- Pretende asegurar que no se alteró y proviene de una fuente de confianza.
- Sirve como verificación de que el código no ha sido manipulado por agentes de amenazas y que un tercero no ha insertado código malicioso en el archivo.
Así, los Gobiernos especifican que el software disponible para su descarga debe estar firmado digitalmente, para proporcionar seguridad ante posibles amenazas maliciosas.
En las propiedades de un archivo ejecutable podemos ver la firma digital del editor. Se muestra el algoritmo de encriptación utilizado para la firma, la fecha en la que se firmó, el nombre del editor, el nombre de los emisores del certificado y el periodo de validez del mismo.
Para realizar la correcta comprobación del certificado firmado digitalmente de un archivo, se seguirán los siguientes pasos:
- Acceder a las Propiedades de archivo.
El archivo ejecutable fue descargado de internet. El archivo contiene una herramienta de software de Cisco Systems.

- Acceder a las Firmas Digitales
Hacer clic en la ficha Firmas digitales (1) revela que el archivo procede de una organización de confianza, Cisco Systems Inc. El resumen del archivo fue creado con el algoritmo sha256. También se proporciona la fecha en la que se firmó el archivo. Al hacer clic en el botón Details (2) se abre la ventana Detalles de Firmas Digitales (Digital Signatures Detail DSD).

- Detalles de la Firma Digital
La ventana «Detalles de Firma Digital» revela que el archivo fue firmado por Cisco Systems, Inc en Octubre de 2019. Esto se verificó mediante un refrendo (segunda firma para comprobar la validez de un documento) proporcionado por la Autoridad de Estampado de Tiempo de Entrust el mismo día en que fue firmada por Cisco. Haga clic en Ver certificado (1) para ver los detalles del propio certificado.

- Examinar información sobre Certificados
La pestaña General (1) proporciona los propósitos del certificado, a quién se emitió el certificado y quién lo emitió. También muestra el período para el que el certificado es válido. Los certificados no válidos pueden impedir que se ejecute el archivo.

- Ruta de Certificación
Haga clic en la pestaña Ruta de Certificación (1) para ver que el archivo fue firmado por Cisco Systems, como se verificó en DigiCert. En algunos casos, una entidad adicional puede verificar independientemente el certificado.

Firmas digitales para certificados digitales
Los certificados digitales:
- Permiten que los usuarios, hosts y organizaciones intercambien información de manera segura en Internet.
- Se usan para autenticar y verificar que los usuarios que envían un mensaje son quienes afirman ser (verifica de forma independiente una identidad.).
- También, garantizan la confidencialidad del receptor con los medios necesarios para encriptar una respuesta.
- Los certificados digitales son similares a los certificados físicos.
A continuación, se verá un ejemplo referente a la utilización de la firma digital:
Bob conforma la orden y su ordenador crea un hash de la confirmación (1). El ordenador encripta el hash con la clave privada de Bob (2). El hash encriptado, conocido como la firma digital, se adjunta al documento y la confirmación del pedido se envía a Alice por medio de Internet (3).

Cuando Alice recibe la firma digital:
- El dispositivo receptor de Alice acepta la confirmación del pedido con la firma digital y obtiene la clave pública de Bob (1).
- Después de eso, el ordenador de Alice desencripta la firma utilizando la clave pública de Bob. Este paso revela el valor hash supuesto del dispositivo que envía los paquetes (2).
- El ordenador de Alice crea un hash del documento recibido (sin su firma) y lo compara con el hash de la firma desencriptada. Si los hashes coinciden, el documento es auténtico (se confirma que fue enviado por Bob y que no se modificó desde que se firmó) (3).
