• No se han encontrado resultados

Criptografía Asimétrica o Pública

In document IPsec en Ambientes IPv4 e IPv6 (página 113-117)

Capítulo 5 Criptografía

5. Criptografía Asimétrica o Pública

Los algoritmos asimétricos emplean generalmente longitudes de clave mucho mayores que los simétricos y difieren fundamentalmente de los algoritmos simétricos en que la claves no son únicas sino que forman pares. Por ejemplo, mientras que para algoritmos simétricos se considera segura una clave de 128 bits, para algoritmos asimétricos (si exceptuamos aquellos basados en curvas elípticas) se recomiendan claves de al menos 1024 bits. Además, la complejidad del cálculo de algoritmos asimétricos los hace considerablemente más lentos que los algoritmos de cifrado simétricos. En la práctica los métodos asimétricos se emplean únicamente para codificar la clave de sesión (simétrica) de cada mensaje o transacción particular,

[www1], [www5], [hispa], [Principi], [popu], [inco], [Cripseg]. Por otra parte algoritmos asimétricos ofrecen un abanico superior de posibilidades, pudiendo emplearse para establecer comunicaciones seguras por canales inseguros (puesto que únicamente viaja por el canal la clave pública, que sólo sirve para cifrar), o para llevar a cabo

autentificaciones.

En la práctica se emplea una combinación de criptosistemas simétricos y asimétricos, puesto que los segundos presentan el inconveniente de ser computacionalmente mucho más costosos que los primeros. En el mundo real se codifican los mensajes (largos) mediante algoritmos simétricos, que suelen ser muy eficientes, y luego se hace uso de la criptografía asimétrica para codificar las claves simétricas (cortas).

5.1 Aplicaciones de los Algoritmos Asimétricos

clave privada

K

Pr y la clave pública

K

Pu, eliminando el mayor problema de

los sistemas de clave privada, dar a conocer únicamente al receptor

autorizado la clave usada en el sistema de cifrado/descifrado. Una de ellas se emplea para codificar, mientras que la otra se usa para decodificar. Dependiendo de la aplicación que le demos al algoritmo, la clave pública será la de cifrado o viceversa. Como se ve se introduce un nuevo problema, la autenticación del origen de los datos. Puesto que todo el mundo conoce la clave pública, se puede enviar un mensaje falseando la procedencia. En los sistemas de clave privada esto no pasaba, ya que la clave la compartían únicamente el emisor y el receptor de la información, asegurando la

confidencialidad y la procedencia de la información. Para que estos

criptosistemas sean seguros también ha de cumplirse que a partir de una de las claves resulte extremadamente difícil calcular la otra. Para poder dar a conocer las claves públicas de los usuarios sin ningún riesgo, debemos asegurarnos que estas no pueden ser ni modificadas ni alteradas en ninguna forma. Con esta función se crearon las Autoridades de Certificación

(Certification Authorities, CA), que son organismos encargados de distribuir las claves públicas y velar por ellas [Cripseg], [inco]. 5.1.1 Protección de la Información

Una de las aplicaciones inmediatas de los algoritmos asimétricos es el cifrado de la información sin tener que transmitir la clave de

decodificación, lo cual permite su uso en canales inseguros. Supongamos que

A

quiere enviar un mensaje a

B

(Figura 4). Para ello solicita a

B

su clave pública

K

Pu

(o la obtiene de una Autoridad de Certificación).

A

genera

entonces el mensaje cifrado

E

KPu

(m)

. Una vez hecho esto únicamente quien posea la clave

K

Pr (en nuestro ejemplo,

B

) podrá recuperar el mensaje

original

m

[Cripseg].

A

B

m

K

Pr

K

Pu

A

tiene el mensaje

m

y quiere enviárselo a

B

m

<---

K

Pu

K

Pr

K

Pu

B

envía a

A

su clave pública,

K

Pu

m K

Pu

E

KPu

(m)

--->

K

Pr

K

Pu

A

codifica el mensaje

m

y envía a

B

el criptograma

E

KPu

(m)

m K

Pu

K

Pr

K

pu

m

B

decodifica el criptograma empleando la clave privada

K

Pr

Figura 4: Transmisión de información empleando algoritmos asimétricos Nótese que para este tipo de aplicación, la llave que se hace pública es aquella que permite codificar los mensajes, mientras que la llave privada es aquella que permite descifrarlos.

5.1.2 Autentificación

La segunda aplicación de los algoritmos asimétricos es la autentificación de mensajes, con ayuda de funciones resumen (ver Sección 6.2), que nos permiten obtener una firma digital a partir de un mensaje. Dicha firma es mucho más pequeña que el mensaje original. Supongamos que

A

recibe un mensaje

m

de

B

y quiere comprobar su autenticidad. Para ello

B

genera un resumen del mensaje

r(m)

(ver Figura 5) y lo codifica empleando la clave de cifrado, que en este caso será la privada [Cripseg].

A

B

K

Pu

m

<---

K

Pr

K

Pu

A

, que posee la clave pública

K

Pu

de

B

, recibe el mensaje

m

y quiere autentificarlo.

m K

Pu

E

KPr

r(m)

<---

K

Pr

K

Pu

B

genera el resumen de

m

y envía a

A

el criptograma asociado

E

KPr

r(m)

m K

Pu

r´(m)

K

Pr

K

Pu

A

genera por su cuenta

r´(m)

y decodifica el criptograma recibido usando la clave

K

Pu

m K

Pu

r´(m) r(m)

K

Pr

K

Pu

A

compara

r(m)

y

r´(m)

para comprobar la autenticidad del mensaje

m

Figura 5: Autentificación de la información empleando algoritmos asimétricos.

La clave de descifrado se habrá hecho pública previamente, y debe estar en poder de

A

.

B

envía entonces a

A

el criptograma correspondiente a

r(m)

.

A

puede ahora generar su propio

r´(m)

y compararla con

r(m)

el cual es el

valor obtenido del criptograma enviado por

B

. Si coinciden, el mensaje será auténtico, puesto que el único que posee la clave para codificar es

precisamente

B

.

Nótese que en este caso la clave que se emplea para cifrar es la clave privada, justo al revés que para la simple codificación de mensajes. En muchos de los algoritmos asimétricos ambas claves sirven tanto para cifrar como para descifrar, de manera que si empleamos una para codificar, la otra permitirá decodificar y viceversa. Esto es lo que ocurre con el algoritmo RSA, en el que un único par de claves es suficiente para codificar y autentificar.

5.2 Algoritmos Asimétricos

5.2.1 Algoritmo de Diffie-Hellman

Es un algoritmo asimétrico, basado en el problema de Diffie-Hellman (ver Sección 3.4), que se emplea fundamentalmente para acordar una clave secreta común entre dos interlocutores, sin necesidad de ningún secreto

preestablecido entre ellos, a través de un canal de comunicación inseguro. La ventaja de este sistema es que no son necesarias llaves públicas en el

sentido estricto, sino información compartida por los dos comunicantes. Este algoritmo no proporciona ni autenticación ni cifrado, por ende no suele utilizarse para la protección de datos. Debido a que es uno de los algoritmos más utilizados con IPsec, describiré su funcionamiento [www1], [www3], [hispa], [inco], [CICESE], [Cripseg]:

Sean

A

y

B

los interlocutores en cuestión. En primer lugar, se calcula un número primo

p

y un generador

α

de

Z

p

*

, con 2

≤α≤p-1

. Esta información es

pública y conocida por ambos. El algoritmo queda como sigue:

1.

A

escoge un número aleatorio

x

, tal que 1

≤x≤p-2

y envía a

B

el valor:

α

x

(mod p)

2.

B

escoge un número aleatorio

y

, tal que 1

≤y ≤p-2

y envía a

A

el valor:

α

y

(mod p)

3.

B

recoge

α

x y calcula

K

=

x

)

y

(mod p)

4.

A

recoge

α

y

y calcula

K

=

y

)

x

(mod p)

Puesto que

x

e

y

no viajan por la red, al final

A

y

B

terminan compartiendo el valor de

K

, sin que nadie que capture los mensajes transmitidos pueda repetir el cálculo.

5.2.1.1 Grupos de Diffie-Hellman

El material clave de Diffie-Hellman que ambos interlocutores intercambian puede constar de 768, 1.024 ó 2.048 bits y se conoce como grupos de Diffie- Hellman 1, 2 y 2048 respectivamente. Para una completa descripcion de los grupos (como el grupo exponencial modular clásico MODP, o los grupos de curvas elípticas como EC2N y ECP), como crear nuevos grupos (grupos

privados) de D-H y consideraciones de seguridad sobre D-H vease el capítulo 9. La eficacia del grupo de Diffie-Hellman es proporcional a la de la clave calculada a partir del intercambio Diffie-Hellman. Los grupos Diffie-

Hellman más eficaces pueden combinarse con mayores longitudes de claves para aumentar la dificultad del cálculo de una clave secreta [www3], [win2003].

Los grupos Diffie-Hellman se utilizan para determinar la longitud de los números primos base (del material clave) utilizados durante el proceso de intercambio de claves de Diffie-Hellman. La eficacia criptográfica de cualquier clave derivada de un intercambio Diffie-Hellman depende en parte de la eficacia del grupo de Diffie-Hellman en el que se basan los números primos.

El grupo 1 proporciona 768 bits de protección de clave, el grupo 2 proporciona 1024 bits y el grupo 2048 proporciona 2048 bits. Cuando se utiliza un grupo más seguro, la clave derivada del intercambio Diffie- Hellman es más segura y es más difícil que un intruso la averigüe. Si se especifican grupos no coincidentes en cada interlocutor, no será posible la negociación. El grupo no se puede cambiar durante la negociación.

5.2.1.2 Notas de Implementación

Si bien el grupo 2 es el más seguro puede ser que algunos sistemas

solo se le brinda soporte en Windows Server 2003. Por ende para asegurar la interoperatibilidad se suele usar el grupo bajo de Diffie-Hellman, a menos que se sepa de antemano que grupo soporta nuestro interlocutor [www3], [win2003].

IKE negocia el grupo específico que se utiliza, lo que asegura que no haya errores en la negociación por falta de correspondencia en un grupo Diffie- Hellman entre los dos interlocutores.

Si se habilita el PFS (vea el Capítulo 10) de clave de sesión, se negocia una nueva clave de Diffie-Hellman durante la primera negociación de SA de modo rápido. Esta nueva clave elimina la dependencia entre la clave de sesión y el intercambio Diffie-Hellman realizado para la clave principal [win2003].

Tanto el interlocutor inicial como el que responde deben tener habilitado el PFS de clave de sesión; de lo contrario, la negociación no se producirá. El grupo Diffie-Hellman es el mismo para las SA negociaciones en modo

principal y en modo rápido. Cuando se habilita el PFS de clave de sesión, aunque el grupo Diffie-Hellman forme parte de la negociación de SA de modo principal, sólo afecta a la regeneración de claves durante el

establecimiento de la clave de sesión. 5.2.2 El Algoritmo RSA

Sus claves sirven indistintamente tanto para codificar como para

autentificar. Debe su nombre a sus tres inventores: Ronald Rivest, Adi Shamir y Leonard Adleman, y estuvo bajo patente de los Laboratorios RSA hasta el 20 de septiembre de 2000, por lo que su uso comercial estuvo restringido hasta esa fecha. Nadie ha conseguido probar o rebatir su seguridad, y se lo tiene como uno de los algoritmos asimétricos más

seguros. RSA se basa en la dificultad para factorizar números grandes. Las claves públicas y privadas se calculan a partir de un número que se obtiene como producto de dos primos grandes [www1], [Principi], [Cripseg].

5.2.3 Criptografía de Curvas Elípticas

Para curvas elípticas existe un problema análogo al de los logaritmos discretos en grupos finitos de enteros. Esto nos va a permitir trasladar cualquier algoritmo criptográfico definido sobre enteros, y que se apoye en este problema, al ámbito de las curvas elípticas. La ventaja que se obtiene es que, con claves más pequeñas, se obtiene un nivel de seguridad

equiparable [Cripseg], [www2].

Debido a la relación existente entre ambos, muchos algoritmos que se basan en el problema de la factorización pueden ser replanteados para descansar sobre los logaritmos discretos. De hecho, existen versiones de curvas elípticas de muchos de los algoritmos asimétricos más populares (ejemplos de implementaciones de curvas elíptica se puede encontrar en el capítulo 9).

In document IPsec en Ambientes IPv4 e IPv6 (página 113-117)