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

Un cifrado de clave pública (o asimétrica), es aquel cifrado que se basa en el uso de una pareja de claves, pública y privada, de las cuales una se usa para cifrar y la otra para descifrar.

Ambas claves están relacionadas por una función trampa, suele ser una función matemática. Las claves se calculan usando la función y la inversa de ésta, siendo la función inversa la función trampa al ser muy difícil o imposible de calcular.

  • Función irreversible
    x ∈ A, f(x) fácil de calcular
    y ∈ f(A), x = f-1(y) difícil de calcular

  • Función trampa
    x = f-1(y) Es calculable conociendo la trampa de la función. Pero sin conocer dicha trampa, y = f(x) es unidireccional.
    Además la trampa sólo se puede calcular con la clave privada.

Algoritmo de Diffie-Hellman

Desarrollado por Whitfiled Diffie y Martín Hellman en 1976. Este algoritmo es, básicamente, un protocolo para realizar el intercambio de claves. En realidad no es un cifrado, se creó para solucionar el problema de los cifrados de clave privada (o simétricos) en el intercambio de claves. El algoritmo consiste en los siguientes pasos:

  1. Se establecen un primo «p» y un generador g ∈ Z*p. Estos dos valores («g» y «p») son públicos. Siendo Z* el conjunto de los enteros menores que «p», que son primos relativos de éste y además es un grupo bajo la multiplicación módulo «p».
  2. A escoge x ∈ Zp-1 al azar, calcula X = gx (mod p), y envía X a B.
  3. B escoge y ∈ Zp-1 al azar, calcula Y = gy (mod p), y encía Y a A.
  4. A calcula K = (gy mod p)x mod p
  5. B calcula K = (gx mod p)y mod p
  6. Siendo la clave «K».

Diffie-Hellman
Imagen sacada de la wikipedia

Si alguién intercerptara nuestra conversación, por ejemplo un usuario malintencionado «E» que poseyera p, g, X e Y, podría calcular el secreto compartido si tuviera también uno de los valores privados (x o y) o lograse invertir la función, pero como se menciona anteriormente estos algoritmos usan funciones trampa, ya que para calcular x dado X tenemos que el problema del logaritmo discreto en Zp* es un problema que se cree intratable computacionalmente.

(Más información en Wikipedia)

Este algoritmo se usa(ba) para compartir una clave privada usando unos valores públicos, como veremos en próximos posts los cifrados de clave pública se basan básicamente en métodos semejantes.

Post anterior: Cifrado de clave privada

Print Friendly, PDF & Email