Criptografía en Acción: Caso Práctico con RSA en C#

🔐 Criptografía en Acción: Caso Práctico con RSA en C#

Resumen:
En esta entrada exploraremos un caso práctico de implementación de un criptosistema de clave pública, específicamente usando el algoritmo RSA en un entorno de consola con C#. Se explicará paso a paso cómo generar claves, cifrar, descifrar y se integrará un repositorio funcional para facilitar la comprensión y aplicación.


🧠 ¿Por qué un caso práctico?

Los criptosistemas de clave pública pueden parecer teóricos o abstractos cuando se estudian desde una perspectiva meramente conceptual. Por eso, construir una aplicación funcional permite conectar la teoría con la práctica. Este ejemplo muestra cómo garantizar la confidencialidad en la comunicación entre un cliente y una empresa usando el algoritmo RSA.


🧪 Contexto del caso

Imaginemos que un cliente desea recibir información confidencial por parte de una empresa. Como no desea que nadie intercepte el mensaje, comparte su clave pública con la empresa. Esta, a su vez, cifra el mensaje con dicha clave y se lo envía al cliente, quien lo descifra con su clave privada. Este mecanismo garantiza que solo el cliente podrá leer el mensaje.


🧰 Herramientas utilizadas

  • Lenguaje: C#

  • Plataforma: .NET Console App

  • Librería criptográfica: System.Security.Cryptography

  • IDE recomendado: Visual Studio o Visual Studio Code

  • Repositorio: ConsoleApp_Cripto_Async en GitHub


🧾 Estructura general del programa

El flujo del programa es el siguiente:

  1. El cliente genera su par de claves (pública y privada).

  2. Exporta su clave pública y la entrega a la empresa.

  3. La empresa cifra un mensaje con la clave pública del cliente.

  4. El cliente recibe el mensaje y lo descifra con su clave privada.

Este proceso simula un esquema clásico de cifrado asimétrico para comunicación segura.

🧩 Código explicado paso a paso

using System; using System.Security.Cryptography; using System.Text;

Importamos las librerías necesarias para criptografía y codificación de texto.


Paso 1: Generación del par de claves

using (RSA rsaCliente = RSA.Create()) { string clavePublica = Convert.ToBase64String(rsaCliente.ExportSubjectPublicKeyInfo()); string clavePrivada = Convert.ToBase64String(rsaCliente.ExportPkcs8PrivateKey()); }

El objeto RSA.Create() genera un nuevo par de claves. Luego, se exportan en formato Base64 para facilitar su visualización y transporte. La clave pública se compartirá, mientras que la privada debe mantenerse segura.


Paso 2: Cifrado del mensaje por parte de la empresa


using (RSA rsaEmpresa = RSA.Create()) { rsaEmpresa.ImportSubjectPublicKeyInfo(Convert.FromBase64String(clavePublica), out _); byte[] datosCifrados = rsaEmpresa.Encrypt( Encoding.UTF8.GetBytes("Este es un archivo confidencial."), RSAEncryptionPadding.Pkcs1 ); }

La empresa recibe la clave pública del cliente, la importa, y cifra el mensaje usando RSAEncryptionPadding.Pkcs1. Esto garantiza que el mensaje solo pueda ser descifrado con la clave privada correspondiente.


Paso 3: Descifrado por parte del cliente

using (RSA rsaClienteDescifrado = RSA.Create())
{ rsaClienteDescifrado.ImportPkcs8PrivateKey(Convert.FromBase64String(clavePrivada), out _); byte[] datosDescifrados = rsaClienteDescifrado.Decrypt(datosCifrados, RSAEncryptionPadding.Pkcs1); string mensajeDescifrado = Encoding.UTF8.GetString(datosDescifrados); }

El cliente usa su clave privada para descifrar los datos. El texto original se reconstruye a partir de los bytes descifrados.


🔗 Repositorio del proyecto

El código completo de esta demostración está disponible en el siguiente repositorio de GitHub:

👉 https://github.com/Alexander-C89/ConsoleApp_Cripto_Async

Este repositorio contiene:

  • Código funcional de cifrado y descifrado RSA.

  • Comentarios detallados en el código fuente.

  • Archivos .csproj y estructura de solución para ejecutarlo directamente en Visual Studio.

  • Posibilidad de modificar el flujo para incluir firma digital o intercambio de claves.


🖼️ Recursos Multimedia

A continuación, algunos recursos que puedes añadir a la entrada para enriquecerla visualmente:

  1. Imagen ilustrativa del flujo asimétrico (creada por IA o editada):

  2. Video explicativo del proceso RSA en C#:
    🔗 RSA Encryption in C# (YouTube - dotNET)

  3. Presentación breve sobre cifrado asimétrico (PowerPoint PDF):
    🔗 Criptografía Asimétrica - Conceptos y Ejemplo (SlideShare)


⚙️ Variaciones posibles

Este programa puede adaptarse para:

  • Enviar archivos cifrados.

  • Firmar digitalmente documentos (firma con clave privada, verificación con clave pública).

  • Establecer canales seguros en redes públicas (como HTTPS).


🧭 Conclusión

Este caso práctico demuestra cómo el cifrado asimétrico puede implementarse con facilidad en una aplicación de consola. Más allá del ejemplo, abre las puertas a múltiples aplicaciones en el mundo real: desde comunicación segura hasta sistemas bancarios, plataformas de autenticación y firma digital. El uso de librerías nativas de C# simplifica la adopción del RSA en entornos productivos y educativos.

Comentarios

Entradas populares de este blog

Criptosistema de clave pública: la base de la seguridad moderna