Hoy en día se usa mucho el cifrado con clave pública y clave privada, el llamado cifrado asimétrico. Navegando lo usáis con SSL (aunque es mixto), lo usáis con certificados digitales, los monederos de las criptomonedas (Bitcoin etc) lo usan etc.
Así que hemos hecho un pequeño vídeo explicando cómo funciona este tipo de cifrado y por qué es más seguro en muchos casos. Aunque, como explicamos en el vídeo, es algo más lento que el cifrado simétrico y, por ejemplo, en SSL se usa el método híbrido donde algunos pasos son simétricos y otros asimétricos para tener la ventaja de ambos métodos.
Si queréis más sobre cómo se calcula y obtiene la clave pública y la privada, de manera matemática, este es el algoritmo para RSA:
Cifrado: C = M^e ( modulo n )
Descrifrado: M = C^d ( modulo n )
donde:
M = Texto plano a cifrar expresado como un número entero.
C = Texto cifrado expresado como un número entero.
n = el producto de dos números primos grandes aleatorios p y q.
d = un número primo relativo de (p-1)*(q-1) grande y aleatorio.
e = el inverso multiplicando de d, es decir:
( e * d ) = 1 ( modulo ( p – 1 ) * ( q – 1 ) )
La clave pública es el par ( n, e ).
La clave privada es el par ( n, d ).
El método es seguro porque la única manera de encontrar el factor primo de un número es probar las divisiones. Y claro, números primos hay infinitos y en este caso trabajamos con números muy grandes y aleatorios.
En una clave privada de 128 bits hay
2^128 / ln( 2^128 ) = 3,835,341,275,459,350,000,000,000,000,000,000,000 números que se pueden probar.
Si se pudieran comprobar un trillón de números por segundo (ya es mucho)… ¡se tardaría 121,617,874,031,562,000 en probar todos!
En este ejemplo de wikibooks explican muy bien cómo se obtienen todos los elementos de este tipo de cifrado.
Os recomendamos los siguientes productos relacionados con la informática: