Muchas conexiones entre sistemas usan accesos a través de Clave Pública. Para acceder a tu espacio personal en cualquier web, lo haces a través de tu usuario y contraseña que es almacenada cifrada. Para acceder a tu cuenta bancaria, usas un código que también se almacena cifrado.
Los bancos protegen toda la información cifrándola. Las criptomonedas basan todo su funcionamiento en claves criptográficas. Los servicios de inteligencia de todos los países usan la criptografía para mantener seguras sus comunicaciones…
Pero... ¿sabías que si alguien resuelve un problema matemático tendrá acceso a todo lo anterior?
Se trata del problema conocido como "P «vs» NP".
Para entender el problema necesitamos saber qué es la teoría de la complejidad. Ésta estudia cómo crece el coste en tiempo/memoria en función del tamaño de este problema. Por ejemplo, queremos ordenar varios números de mayor a menor, y para ello tenemos diferentes algoritmos.
El primer algoritmo nos da el siguiente resultado:
En el caso anterior tenemos una complejidad lineal, ya que el crecimiento es constante. Pero se pueden dar casos peores:
Este ejemplo se trata de una complejidad exponencial (¡e incluso las hay peores!). Entonces, decimos que un problema tiene la complejidad del mejor algoritmo que lo resuelve.
Para esto sirve la teoría de la complejidad. Gracias a ella identificamos que hay problemas cuya complejidad crece de forma tan rápida que no merece la pena destinar recursos a su resolución. Y es en esto en los que se basa la criptografía moderna. En concreto, se basa en la complejidad que conlleva el problema de descomponer factorialmente cifras con muchos números decimales.
Actualmente, el algoritmo más eficiente que descompuso un número de 200 cifras decimales en menor tiempo lo hizo en ¡18 meses! (¿Te suena que algunos bancos piden actualizar tu contraseña cada 12 meses?).
| Cantidad de números a ordenar | 10 | 100 | 1000 | 10000 |
| Tiempo (s) | 1 | 2 | 3 | 4 |
| Cantidad de números a ordenar | 10 | 100 | 1000 | 10000 | 10000 |
| Tiempo (s) | 1 | 2 | 4 | 8 | 16 |
Volviendo a P vs NP
Pero ahora volvamos al título del problema. En teoría de la complejidad se llama:- NP al conjunto de problemas en los que se puede comprobar en un tiempo polinomial, es decir, en un tiempo razonable, si una solución es correcta o no.
- P al conjunto de problemas para los cuales se puede encontrar en un tiempo polinomial, es decir, en un tiempo razonable una solución.
Compartir: