| Artículos | 01 ENE 2006

Envío de mensajes cifrados y firmados desde ASP/IIS

Tags: Histórico
Cómo utilizar CAPICOM para proteger mensajes de correo desde páginas web
Gonzalo Alvarez.
Aunque .NET ha simplificado notablemente la programación de aplicaciones que incorporen sencillas operaciones criptográficas, como cifrar o calcular hashes, no aporta clases para la gestión de certificados, firma de mensajes y sobres digitales. Sin embargo, se puede acceder a todas estas funciones criptográficas avanzadas desde CAPICOM, una DLL que se puede invocar desde cualquier lenguaje orientado a objetos. Concretamente, explicaremos cómo enviar mensajes de correo electrónico cifrados y/o firmados desde páginas ASP.

En los artículos “Criptografía con .NET” (PC World nº 205 y 206) explicamos en detalle conceptos criptográficos básicos como el cifrado de clave simétrica (o de clave secreta), los hashes, la generación de números pseudoaleatorios criptográficamente seguros, la derivación de claves de cifrado a partir de contraseñas, el cifrado asimétrico (o de clave pública) y la firma digital. Ilustramos estos conceptos mediante ejemplos desarrollados con .NET, si bien debido a su complejidad y a que no está soportado nativamente por .NET, no tratamos entonces la firma de mensajes ni los sobres digitales (enveloping).
En este artículo retomamos la explicación allí donde la dejamos, pasando a explicar cómo pueden desarrollarse cómodamente estas operaciones mediante el uso de la CAPICOM. Se trata de un objeto COM que expone buena parte de la funcionalidad de la CryptoAPI para proporcionar servicios criptográficos a aplicaciones. Presenta la inestimable ventaja de ocultar los detalles farragosos y propensos a errores de la programación directa con la CryptoAPI. En su lugar, expone las funciones criptográficas más importantes de una manera fácilmente accesible, desde cualquier lenguaje orientado a objetos como Visual Basic, VBScript, JavaScript, VB.NET, C#, C++, etc. CAPICOM viene empaquetado como un control ActiveX, lo que permite su cómoda utilización también desde páginas web escritas en ASP o ASP.NET. La última versión de CAPICOM, la 2.1.0.1, se puede descargar gratuitamente desde www.microsoft.com/downloads/details.aspx?FamilyID=860ee43a-a843-462f-abb5-ff88ea5896f6.

El modelo de objetos de CAPICOM
CAPICOM incluye funcionalidad para gestionar la autenticación de mensajes mediante el uso de firmas digitales y certificados, para el envío de mensajes dentro de sobres digitales (digital enveloping) y para cifrar y descifrar datos. Las diferentes categorías en las que se agrupan los objetos disponibles aparecen listadas en la tabla Modelo de objetos de CAPICOM. Cada una de ellas agrupa un número variable de objetos relacionados. En este artículo solamente explicaremos aquellos objetos que van a ser utilizados, pertenecientes a las tres primeras categorías.
La firma digital es una aplicación criptográfica que permite verificar quién ha enviado un mensaje y que éste no ha sido alterado, protegiendo tanto la autenticidad como la integridad. Utiliza un algoritmo de hash, como SHA-1 o MD5, para calcular un resumen del mensaje. Este hash se cifra mediante un algoritmo asimétrico, como RSA, utilizando la clave privada del remitente, lo que equivale a la firma digital. A continuación se envían tanto el mensaje como el hash cifrado (la firma) al destinatario, el cual recalcula de nuevo el hash utilizando el mismo algoritmo y descifra la firma utilizando la clave pública del remitente. Si coinciden ambos hashes, el que él ha calculado y el descifrado a partir de la firma recibida, entonces tiene la certeza de la verdadera identidad del emisor y de que el mensaje no ha sido alterado durante el camino.
El sobre digital es una aplicación criptográfica en la cual el remitente envía un mensaje sellado de tal manera que nadie excepto su legítimo destinatario es capaz de abrirlo, protegiendo así la confidencialidad. Utiliza una clave de sesión de un algoritmo de cifrado simétrico, tipo AES o DES, generada aleatoriamente, con la cual se cifra el contenido del mensaje. Esta clave de sesión es a su vez cifrada con la clave pública del destinatario utilizando un algoritmo de cifrado asimétrico, tipo RSA. Al recibir el mensaje dentro de su sobre digital, el destinatario es capaz gracias a su clave privada de descifrar la clave de sesión y usando ésta puede descifrar el contenido del mensaje.
Por último, para estar seguro de que una determinada clave pública pertenece en realidad a un usuario, es necesario utilizar los certificados digitales, que garantizan la veracidad de esta información. Un certificado contiene los datos personales del usuario, junto con su clave pública, todo ello firmado digitalmente por una autoridad de certificación, lo que permite vincular con confianza la identidad del sujeto con su clave pública. Actualmente se utilizan los certificados en formato X.509 v3.
Puedes obtener una referencia completa de todos los objetos de la CAPICOM en msdn.microsoft.com/library/en-us/security/security/capicom_reference.asp.

Cómo utilizar CAPICOM
Una vez que hayas descargado el archivo de instalación de CAPICOM, debes registrar la DLL, llamada capicom.dll. Para ello, copia el archivo capicom.dll al directorio c:\Windows\System32 y selecciona Inicio » Ejecutar. A continuación escribe regsvr32 capicom.dll y pulsa Aceptar. La DLL queda así registrada y lista para usar desde cualquier programa. La instalación viene acompañada de numerosos ejemplos en una variedad de lenguajes: VBScript, JScript, Visual Basic, C#, ASP y C++, que seguramente te resultarán de gran utilidad.
Además de la propia DLL, para el objetivo de este artículo, que es firmar mensajes, necesitamos contar con un certificado de firma digital con una clave privada asociada. Llegados a este punto caben varias posibilidades. Podemos conectar a una autoridad de certificación establecida, como Verisign (www.verisign.com) o Thawte (www.thawte.com), y solicitar un certificado gratuito de prueba. También puedes instalar tu propia autoridad de certificación si dispones del sistema operativo Windows Server 2000/2003. Una tercera posibilidad consiste en utilizar la herramienta makecert, que se puede descargar junto con otras herramientas relacionadas con la gestión y uso de certificados desde www.microsoft.com/downloads/details.aspx?FamilyID=2B742795-D0F0-4A66-B27F-22A95FCD3425. Las instrucciones para utilizar estas herramientas se pueden leer en msdn.microsoft.com/library/default.asp?url=/library/en-us/seccrypto/security/makecert.asp. Para la realización de este artículo hemos elegido la segunda opción, consistente en utilizar la autoridad de certificados incluida en las distribuciones de Windows 2000/2003. En cualquier caso, una vez que se cuenta con un certificado válido y de confianza, se puede seguir adelante.

Firma de datos
Para poder firmar datos se requiere la clave privada del usuario, lo que exige contar con un certificado digital que contenga la clave pública del usuario, así como una clave privada asociada. Como ya explicamos, se calcula el hash de los datos y éste se cifra utilizando la clave privada del usuario. Normalmente, se anexiona a los datos firmados el certificado del usuario, que contiene la clave pública correspondiente a la clave privada empleada, de manera que cualquiera pueda verificar la validez de la firma. Los certificados se almacenan en

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información