domingo, 23 de noviembre de 2025

Observaciones y recomendaciones para implementar el criptosistema

Para llevar a cabo un criptosistema asimétrico haciendo uso de una firma digital para cifrar archivos de tipo PDF, se han identificado las siguientes buenas prácticas o consideraciones al momento de implementar el criptosistema en cuestión (Domingo, 2004):

  • Identificar un algoritmo de hash robusto. Se sugiere SHA-256 o superior.
  • Usar tamaños de clave apropiados, mayores a 1024 bits.
  • La clave privada debe mantenerse en hardware o almacenamiento cifrado seguro. Si pierde esta privacidad, la firma deja de ser confiable.
  • Emitir la firma con un certificado válido para reforzar en no repudio.
  • Importar librerías y esquemas PDF comprobados para evitar errores de implementación.
  • Existen variedad de bibliotecas para trabajar con PDF. Dependiendo de la complejidad del documento puede que extraiga adecuadamente o no la información. Por tanto, lo mejor es probar varias según se requiera.

Para procesamientos a grande escala, hacer uso de bibliotecas rápidas y procesamiento por lotes.

Referencias

  • Domingo, J & Herrera J. (2004). Criptosistemas de clave públicaEn: Criptografía (Modulo 5). https://openaccess.uoc.edu/server/api/core/bitstreams/3e55b538-eb12-44eb-9abf-6a59b38157b8/content

Caso práctico de aplicación (qué algoritmo, donde y cómo usarlo)

Para el caso práctico de aplicación se utilizó el algoritmo RSA para cifrar el contenido de un archivo PDF implementando también el uso de una firma digital. El uso de esta firma digital en un PDF permite garantizar la autenticidad de quien lo firmó, la integridad del documento en cuanto a que no se haya modificado desde que se firmo y el no repudio, que significa que el firmante no puede negar la firma del archivo en un principio (Domingo, 2004).

El funcionamiento del algoritmo RSA con firma consta de los siguientes pasos:

1. Generación del hash: Se hace un resumen criptográfico del contenido del archivo PDF con una función hash (SHA-256).

2. Firma del hash: Se hace la firma del hash con la clave privada del emisor. Este proceso da como resultado la firma digital.

3. Unión de la firma: La firma digital y la clave pública se adjuntan al archivo PDF como metadato.

4. Verificación: El receptor del PDF hace el cálculo del hash del documento, se descifra la firma con la clave publica y se comparan ambos hashes para verificar si el contenido no se ha modificado y es autentico.

El programa se realizó dentro del IDE de Visual Studio Code con lenguaje de programación Python. Donde se importó la librería de “cryptography” y algunas de sus clases las cuales permiten integrar los algoritmos de RSA. Como primer paso se crearon las claves publicas y privadas, luego de esto se hizo el firmado del mensaje haciendo uso de la llave privada y su posterior guardado en extensión “sig”. A continuación, se hizo el cifrado de un archivo PDF de prueba con la llave publica y su contenido también se guardo en un archivo “bin”.  Finalmente, para hacer las verificaciones pertinentes, se hace la lectura del contenido cifrado del archivo PDF para luego desencriptar con la llave privada y verificar la firma con el mensaje original. Para visualizar este proceso se hace una impresión en consola del contenido descifrado y si la firma efectivamente muestra un contenido confiable.

El enlace del programa desarrollado para el caso práctico de uso del algoritmo RSA es el siguiente:

https://github.com/CamiloC3P/cifrado_asimetrico


Referencias:

  • Domingo, J & Herrera J. (2004). Firmas digitalesEn: Criptografía (Modulo 6). https://openaccess.uoc.edu/server/api/core/bitstreams/799ab263-4668-43f2-81d7-5d8a80026228/content

Ventajas, desventajas y diferencias con el criptosistema simétrico

En el siguiente cuadro comparativo se evidencian las principales diferencias y tanto ventajas y desventajas entre los sistemas de criptografía simétricos y asimétricos (Maillo, 2017).


 

Criptosistema simétrico

Criptosistema asimétrico

Gestión de las claves

Se requiere de una clave distinta para comunicar un emisor y receptor. Lo que genera una complejidad en el número de claves ya que con un nuevo nodo se necesitarían n² claves distintas.

Únicamente se requieren dos claves tanto para emisor como receptor (clave pública y clave privada) sin importar la cantidad de nodos, siendo mucho más eficiente.

Longitud de claves

128 bits.

1024 bits.

Vida de las claves

La duración de la clave es corta ya que se usa una distinta en cada sesión.

La duración de la clave es mayor, pudiendo llegar a meses o años según se requiera.

Autenticación del emisor

Permiten realizar una autenticación eficiente sobre la información, pero no mucho sobre el emisor.

Tanto en emisor como en receptor puede hacerse una autenticación confiable mediante la firma digital.

Velocidad de cifrado

La velocidad de cifrado es superior en comparación al cifrado asimétrico. Para cifrado de Hardware estaría alrededor de los cientos de MB/s

La velocidad de cifrado es inferior en comparación con el cifrado simétrico. Para cifrado de Hardware estaría cerca de los cientos de KB/s


Referencias: 

  • Maillo, J. (2017). Criptografía modernaEn: Sistemas seguros de acceso y transmisión de datos (pp. 67-85). RA-MA Editorial.

¿Cómo funciona y cuales son sus algoritmos representativos?

Cómo se mencionó anteriormente, el criptosistema de clave pública emplea una clave pública y una clave privada que se encuentran relacionadas matemáticamente. El mensaje inicial que posteriormente es cifrado con la clave pública debe ser descifrado con la clave privada y viceversa.


En la criptografía de clave pública no se hace tanto uso de operaciones lógicas sino de operaciones matemáticas que implican la resolución de problemas de alta complejidad. Lo anterior conlleva a que los mensajes encriptados lleven números en lugar de colecciones de bits, ya que de esta manera se pueden realizar este tipo de operaciones matemáticas (Hernández, 2016).

Dentro de los algoritmos más representativos de la criptografía asimétrica se encuentran:

Algoritmo RSA

El algoritmo RSA hace parte de los modelos de clave pública tanto para cifrar datos como para crear firmas digitales. Es de los criptosistemas de clave pública más utilizados por su sencillez de implementación y nivel de seguridad.


Su funcionamiento se basa en operaciones matemáticas complejas, en donde el par de claves se calcula mediante el producto de dos números primos muy grandes que son denominados generalmente como p y q. La seguridad de este algoritmo radica en que ambos números deben ser aleatorios y tener una longitud de bits similar (Maillo, 2017).

n = p*q

Luego de esto se escoge un numero e que sea primo relativo con (p-1)(q-1), y que tenga inversa módulo (p-1)(q-1), donde existirá un numero d tal que:

d * e  1(mod(p-1)*(q-1))

Obtenidos estos valores se define el par de claves del algoritmo de la siguiente manera:

Clave Pública = (n,e)

Clave Privada = (n,d)

Para cifrar la información el algoritmo RSA usa la siguiente expresión matemática:

c = m^e (mod n)

Y para decodificar usa:

m = c^d (mod n)

Algoritmo de intercambio de clave de Diffie-Hellman

Más que un algoritmo es un protocolo de intercambio de información en el que tanto emisor como receptor terminan obteniendo una información en común. Este intercambio funciona de tal manera que los participantes puedan pactar una clave secreta compartida sobre un canal inseguro, evitando el inconveniente de distribución de claves (Domingo, 2004).


Para cumplir a cabalidad este protocolo de intercambio se siguen los siguientes pasos:

1.  Los usuarios, A y B, eligen públicamente un grupo multiplicativo finito G de orden n y un generador α G.

2. A genera un número aleatorio a, calcula α^a dentro de G y transmite el resultado de B.

3. B genera un número aleatorio b, calcula α^b dentro de G y transmite el resultado de A.

4.  A recibe α^b y calcula (α^b)^a dentro de G.

5. B recibe α^a y calcula (α^a)^b dentro de G.

Al final del protocolo, A y B han pactado un elemento α^ab del grupo G que es común en ambos y secreto para el resto de los usuarios.

Algoritmo ElGamal

Este es un algoritmo de uso libre, típicamente utilizado en protocolos de correo seguros. Se basa en el algoritmo de intercambio de Diffie-Hellman y aplica el problema del cálculo del logaritmo discreto para dar un nivel de seguridad superior sobre la información que se protege. Aunque en sus inicios fue pensado para usarse con firmas digitales también aplica para la protección de datos sensibles (Maillo, 2017).

Las claves de este cifrado se crean a partir de la elección de un número k que sea primo relativo con p-1. Luego de esto, siendo m el mensaje a proteger se calcula:

a = g^k (mod p)

b = (y^k)*m (mod p)

El par (a,b) constituye el texto codificado, que tendrá una longitud doble a la del texto original.

Por otra parte, el descifrado se hace con la expresión:

 b|a^x (mod p)

Referencias:

  • Domingo, J & Herrera J. (2004). Criptosistemas de clave públicaEn: Criptografía (Modulo 5). https://openaccess.uoc.edu/server/api/core/bitstreams/3e55b538-eb12-44eb-9abf-6a59b38157b8/content
  • Hernández, L. (2016). Criptografía de clave asimétrica. En: La Criptografía (pp. 93-134). Editorial CSIC Consejo Superior de Investigaciones Científicas.
  • Maillo, J. (2017). Criptografía moderna. En: Sistemas seguros de acceso y transmisión de datos (pp. 67-85). RA-MA Editorial.

¿Qué es el criptosistema de clave pública?

Para poder entender que es un criptosistema de clave pública, es necesario tener claridad en el concepto de clave.


Una clave no es más que un dato que se emplea para hacer la codificación de un mensaje que queremos cifrar. Este dato es la base de una transformación que generalmente es de tipo matemática. Cuando se hace este proceso, nuestra información original toma una estructura de datos que parecen ser aleatorios y sin relación alguna; por lo general, se obtiene un dato alfanumérico como resultado (IBM, 2022).

Luego de combinar nuestra información original o también conocida como “texto plano” con un algoritmo criptográfico que implícitamente utiliza la clave criptográfica, se obtiene dicho dato cifrado totalmente transformado e ilegible.

Para poder retornar a ese punto donde nuestros datos iniciales sean legibles o en “texto plano”, se requiere el uso de la clave criptográfica, pues nos va a permitir desencriptar nuestros datos previamente tratados en el algoritmo criptográfico.

El proceso anterior es un claro ejemplo de criptografía simétrica, donde solo se usa una clave. Pero para el criptosistema de clave pública o también llamado “criptografía simétrica”, su funcionamiento se basa en el uso de dos claves.

En la criptografía de clave publica se encriptan los datos mediante dos claves diferentes, en donde la clave publica es de libre acceso y realiza el cifrado de los datos inicialmente, y la clave privada (secreta) se encarga del desencriptado final de los datos. Los datos que son encriptados con la clave pública solo pueden ser descifrados únicamente con la clave privada y son típicamente implementados en protocolos de seguridad SSL/TSL (cloudflare, 2025).

Referencias:

  • cloudflare. (2025). ¿Cómo funciona la criptografía de clave pública?. https://www.cloudflare.com/es-es/learning/ssl/how-does-public-key-encryption-work/
  • IBM. (2022). Criptografía de clave pública. https://www.ibm.com/docs/es/integration-bus/10.0.0?topic=overview-public-key-cryptography




Observaciones y recomendaciones para implementar el criptosistema

Para llevar a cabo un criptosistema asimétrico haciendo uso de una firma digital para cifrar archivos de tipo PDF, se han identificado las s...