Criptografía e Infraestructura de Clave Pública (PKI)

Continuando con el tema seguridad, en esta nota veremos algunas de las propiedades más importantes de seguridad, desarrollaremos el concepto de encriptación o cifrado y luego algunos conceptos de firma digital. Esto permitirá que a continuación desarrollemos el tema de infraestructura de clave pública, su funcionamiento básico y el concepto de certificados.

La criptografía está fundamentalmente basada en funciones matemáticas y su estudio profundo nos llevaría directamente a investigación matemática, que no es el objetivo en este momento.

Los métodos criptográficos están basados en algoritmos matemáticos (funciones) tales que aplicados sobre ciertos datos (la información) más un argumento variable producen un determinado resultado no legible (Texto Cifrado).

En general se usan los términos Texto Plano (la información en forma legible), Clave (el argumento variable) y Texto Cifrado (la información encriptada). Lo que podemos ver como:

La criptografía es uno de los métodos para proteger información confidencial. En esta nota la definiremos como un conjunto de técnicas matemáticas para proteger la información mediante ciertas propiedades, de las cuales definiremos las más importantes.

Debemos tener en cuenta que algunas de ellas están provistas por medios criptográficos y/o no criptográficos.

Propiedades

Confidencialidad: implica que la información esté oculta para cualquiera que no sean las partes autorizadas a verla. Para proveer confidencialidad a la información la misma debe ser encriptada (cifrada).

Es importante tener en cuenta que las claves deben ser cambiadas periódicamente para mejorar la seguridad, y además que deben estar debidamente protegidas. Tomemos dos casos una transmisión de datos usando IPSec, y la utilización de EFS (Encrypted File System).

Integridad:implica que la información no sea alterada por partes no autorizadas, tanto durante la transmisión como durante el almacenamiento.

No-Repudio:implica que el emisor no pueda falsamente negar la emisión del mensaje. Implica también que el receptor tampoco pueda falsamente negar la recepción.

No-Reenvío:implica que una información o mensaje no pueda ser reenviado por alguien que ha capturado una transacción legal.

Autenticación: implica probar la identidad de una parte a otra. Esta provee que alguien no pueda falsear su propia identidad, y permite que el receptor determine fehacientemente la identidad del emisor.

Funciones Criptográficas

Los algoritmos matemáticos (funciones) usados en criptografía cumplen con ciertas condiciones, entre ellas la fundamental implica que es sencillo computarla en un sentido, y prácticamente imposible en sentido inverso, sin conocer algún dato.

Aclaremos esto: con el Texto Plano + Algoritmo + Clave es fácil obtener el Texto Cifrado. Pero conociendo el Texto Cifrado + Algoritmo, es casi imposible obtener el Texto Plano, sin conocer la Clave. Los algoritmos utilizados son conocidos públicamente, la dificultad consiste en no conocer la clave.

Funciones de Hashing

Intervienen también funciones de Hash. Estas funciones toman una entrada de largo variable (Texto Plano) y producen una salida de largo fijo (Hash). Tienen como prioridad que un «pequeño» cambio en la entrada producen un «gran» cambio en la salida.

De todas formas debemos tener en cuenta que al «reducir» la entrada a una salida de largo fijo, y más corta generalmente, siempre es posible que diferentes entradas produzcan el mismo resultado, esto se llama colisión. Cumplen con la condición que en caso de producirse una colisión las entradas son tan diferentes que es fácil darse cuenta que no corresponden.

Encriptado (Cifrado)

El encriptado de información se puede efectuar mediante dos técnicas:

  • Encriptado por Clave Simétrica o Secreto Compartido
  • Encriptado por Clave Asimétrica o esquema de Clave Pública

Encriptado por Clave Simétrica

Si se utiliza un esquema de Clave Simétrica, también llamado método de Secreto Compartido, se utiliza la misma Clave para encriptar y desencriptar la información

El concepto fundamental a tener en cuenta es que la clave utilizada para encriptar, es la misma utilizada para desencriptar, por lo tanto los algoritmos usados son complementarios.

Este esquema tiene ventajas e inconvenientes. Entre las ventajas podemos nombrar la facilidad de implementación, y entre los inconvenientes que si alguien accediera a la Clave, en cualquiera de los extremos, obtiene la posibilidad de encriptar y desencriptar.

Encriptado por Clave Asimétrica

El esquema de Clave Asimétrica mejora notablemente la seguridad del caso anterior pero su implementación es más compleja.

El esquema de Clave Pública está basado en que cada ente posee dos claves que cumplen con las siguientes condiciones:

  • Las claves son diferentes
  • Las claves son complementarias: si se utiliza una para encriptar, es necesaria la otra para desencriptar

Cada poseedor de estas claves denomina a una como Pública, y la da a conocer públicamente, y a la otra como Privada la cual mantiene secreta y protegida.

Ejemplo de utilización

Veamos un ejemplo para aclarar el uso, como puede ser un el envío de un mensaje.

a) Esquema de Clave Simétrica o Secreto Compartido

Cuando A va enviar un mensaje a B, primero debe encriptar el mensaje utilizando un algoritmo que ambos conocen, alimentado por la Clave (el secreto compartido). Luego de lo cual lo envía. Cuando B recibe el mensaje, conociendo el algoritmo utilizado y la Clave puede desencriptar el mensaje.
Se debe mencionar que este mecanismo tiene la dificultad de cómo compartir la clave, sin que un tercero la sepa.

b) Esquema de Clave Asimétrica o Pública

Cuando A va a enviar un mensaje a B, lo debe encriptar utilizando la clave Pública de B. Recordar que B da a conocer esta última a quien la requiera. Luego lo envía. Cuando B recibe el mensaje, utilizando su clave Privada y el algoritmo utilizado puede desencriptar el mensaje.
Se debe notar que previamente A debe conocer la clave Pública de B.

Firma Digital

El proceso de Firma Digital tiene como función principal asegurarse la Integridad de la información, pudiendo proveer también No-Repudio y Autenticación.

El proceso de Firma Digital se usa generalmente en combinación con un esquema de Clave Pública, de forma de encriptar el Hash. Si esto último no sucediera, sería fácil para alguien interceptar el mensaje alterar el contenido y calcular el nuevo Hash.

Es de notar que la firma digital no provee encriptación, si fuera necesario esto último se debe combinar con una técnica de encriptación.

Si A desea enviar un mensaje firmado digitalmente a B efectúa los siguientes pasos: primero calcula el hash de la información, a este dato lo encripta con su clave privada (la de A) y el resultado se acompaña con el mensaje enviado. Cuando B recibe el mensaje, utilizando su conocimiento de la clave pública de A, desencripta el hash, y luego hace su propio calculo del hash del mensaje recibido. Si el mensaje no fue alterado desde su envío estos valores deben coincidir. Además por el hecho de poder desencriptarlo utilizando la clave pública de A, le asegura que éste fue realmente el emisor.

Combinaciones

Todos estos elementos que hemos nombrado en general se utilizan en forma combinada. Es habitual que un mensaje encriptado esté además firmado digitalmente.

Dado el alto consumo de recursos que implicaría encriptar transmisiones usando únicamente clave pública, generalmente se utiliza el esquema de clave pública para intercambiar información que permite la generación de las claves simétricas que luego se utilizarán en la transmisión de datos. IPSec utiliza esta técnica.

Infraestructura de Clave Pública

Vamos a nombrar a continuación los componentes principales de la infraestructura de clave pública, y describiremos brevemente sus funciones.

Autoridad Certificadora (CA = Certificate Authority)

Es la encargada de, luego de verificar la identidad del requirente, crear el certificado solicitado.

Certificado Digital

Aunque luego profundizaremos más, en primera instancia podemos afirmar que un certificado es una prueba de la correspondencia entre el requirente y clave pública. Podemos corresponderlo a un documento de identidad.

Punto de Publicación de Certificados (CPP = Certificate Publication Point)

Es el lugar donde la autoridad certificadora deposita los certificados que fueron requeridos y otorgados.

Lista de Certificados Revocados (CRL = Certificate Revocation List)

Aunque los certificados tienen un período de validez, los mismos pueden ser revocados antes de su vencimiento. Esto puede ser a causa, de dejar de ser confiable, compromiso de seguridad del requirente o de la autoridad certificadora, cambio de condiciones, etc.

Aplicaciones para manejo de Certificados

A los efectos de poder pedir, otorgar e instalar certificados, debemos disponer de aplicaciones que permitan efectuar estas tareas.

Aplicaciones diseñadas para usar Certificados

El uso de encriptación y firma digital requiere que la aplicación esté diseñada especialmente para su uso. Por ejemplo, es fácil ver que podemos encriptar y firmar mensajes con Outlook, pero no lo podemos hacer con Word.

Funcionamiento de la Infraestructura de Clave Pública

Uno de los componentes fundamentales del esquema de clave pública es el certificado. El certificado es una forma fehaciente de verificar la correspondencia entre un nombre y su correspondiente clave pública. Aunque contiene muchos más datos, en primera instancia podemos decir que un certificado dice algo así como:

  • Nombre: A
  • Clave Pública de A

¿Cómo nos aseguramos que el certificado es válido? es decir que es verdad que esa clave pública corresponde realmente a A. Esto lo podemos verificar pues viene firmado digitalmente por la autoridad certificadora emisora.

¿Y cómo nos aseguramos que esa firma digital es válida? Lo podemos verificar mediante el conocimiento de la clave pública de la autoridad certificadora.

¿Y cómo obtenemos la clave pública de la autoridad certificadora? Obteniendo e instalando el certificado de la autoridad certificadora.

¿Y quien asegura que ese certificado es válido? Generalmente otra autoridad certificadora.

¿Y a esta autoridad certificadora? otra autoridad certificadora. Pero tenemos que ponerle un tope a esto. En última instancia existen autoridades certificadoras que se certifican a sí mismas. Es decir tienen un certificado otorgado a ellas y firmado por sí mismas. Son las llamadas autoridades certificadoras raíz.

Vamos a poner todos estos conocimientos en funcionamiento con un ejemplo de correo electrónico. Partimos que existen dos usuarios: A y B. Y una autoridad Certificadora CA.

La autoridad certificadora CA, es de tipo raíz y por lo tanto se otorga un certificado a sí misma.

El usuario A debe primero instalar el certificado de la CA. Esto es que va a confiar en todos los certificados otorgados por esta CA

Luego A solicita un certificado para sí mismo, cumpliendo con las condiciones que exige la CA para otorgar los certificados.

Suponiendo que la CA otorga su certificado procede a instalarlo.

El usuario B procede de la misma forma: instala el certificado de la CA, solicita un certificado para sí mismo, que es otorgado e instalado.

Hasta este momento tenemos tres certificados: el de la CA, el de A y el de B. Cada usuario tiene instalado el de la CA y el propio.

Si A envía un mensaje a B, firmado digitalmente, esto es encriptando el hash con su clave privada, debe enviarle también su clave pública. Y esto lo hace adjuntando su propio certificado (que contiene la clave pública).

Cuando B recibe el mensaje, obtiene del certificado la clave pública que le permite verificar la firma digital. Si B agrega a A a su lista de contactos además está instalando el certificado de A.

Luego B debe proceder igual que A, enviado un mensaje firmado digitalmente, con lo cual A procediendo en forma análoga, instala el certificado de B.

A partir que A y B poseen tanto su propio par de claves, como la pública del otro pueden intercambiar mensajes encriptados (y por supuesto también firmados)

Obtención de un certificado

Una de las formas más comunes de solicitud de certificados es a través de HTTP con el IIS de Windows 2000 e Internet Explorer, aunque también puede ser por Active Directory

El requirente, es quien genera su propio par de claves. La privada queda guardada localmente, y la pública es enviada cuando contacta a la CA para solicitar el certificado, proveyendo además toda la información requerida.

Luego del análisis de toda la información, y contando que la misma sea adecuada, la CA otorgará el certificado que quedará disponible.

El requirente debe contactar a la CA, para verificar el estado de su pedido, y en caso de ser otorgado, instalará su propio certificado. En este momento su clave privada es agregada a su perfil de usuario, y ya está en condiciones de utilizar ambas.

Contenido del Certificado

El contenido de un certificado en forma detallada está fuera del alcance de esta nota, pero veremos algunos de los datos importantes que contiene. Recordemos que el uso principal es verificar la correspondencia entre el nombre de a quien fue otorgado y su correspondiente clave pública.

Algunos de los campos que contiene son:

  • Subject: a quien fue otorgado
  • Subject Public Key: clave pública correspondiente
  • Issuer: quien otorgó el certificado
  • Serial: número de control de la autoridad certificadora
  • Not Before: no válido antes de determinada fecha
  • Not After: no válido después de determinada fecha
  • Signed: firma digital de la autoridad certificadora.

Nota Final

Los conceptos de encriptación, firma digital e infraestructura de clave pública involucran temas complejos, desde la teoría matemática subyacente, pasando por la adecuada planificación y finalmente las dificultades de implementación. El propósito de esta nota ha sido efectuar una introducción a los conceptos fundamentales de funcionamiento. Para profundizar estos conocimientos hay disponible una amplia bibliografía, cursos generales de seguridad y capacitación específica sobre cada una de las plataformas disponibles.

Post a comment or leave a trackback: Trackback URL.

Comments


  • Fatal error: Uncaught Error: Call to undefined function ereg() in F:\blogs.itpro.es\wp-content\themes\notesil\functions.php:333 Stack trace: #0 F:\blogs.itpro.es\wp-content\themes\notesil\functions.php(35): notesil_commenter_link() #1 F:\blogs.itpro.es\wp-includes\class-walker-comment.php(179): notes_comments(Object(WP_Comment), Array, 1) #2 F:\blogs.itpro.es\wp-includes\class-wp-walker.php(145): Walker_Comment->start_el('', Object(WP_Comment), 1, Array) #3 F:\blogs.itpro.es\wp-includes\class-walker-comment.php(139): Walker->display_element(Object(WP_Comment), Array, '5', 0, Array, '') #4 F:\blogs.itpro.es\wp-includes\class-wp-walker.php(387): Walker_Comment->display_element(Object(WP_Comment), Array, '5', 0, Array, '') #5 F:\blogs.itpro.es\wp-includes\comment-template.php(2174): Walker->paged_walk(Array, '5', 0, 0, Array) #6 F:\blogs.itpro.es\wp-content\themes\notesil\comments.php(25): wp_list_comments('type=comment&ca...') #7 F:\blogs.itpro.es\wp-includes\comment-template.php(1512): require('F:\\blogs.itpro....') #8 F:\ in F:\blogs.itpro.es\wp-content\themes\notesil\functions.php on line 333