Una de las cosas en las que más se basa la seguridad en nuestros días, consiste en generar los famosos certificados que entre otras cosas nos aseguran que nuestros datos vayan cifrados de forma segura cuando los transmitimos a través de la red. Pero no solo se usa en el protocolo HTTPS sino en multitud de protocolos seguros como los de correo.
¿Cómo se genera un cerfificado?
Básicamente los certificados se basan en un conjunto de información que se intercambia con el cliente, a cerca de las claves que van a utilizar para comunicarse, el tipo de encriptación que van a utlizar y datos sobre el proveedor del servicio.
Uno de los algoritmos que se usan en los certificados es RSA, este algoritmo es un método de cifrado de clave pública, que consta de dos claves que se intercambian, si queréis saber más sobre como funciona el mismo os dejamos este enlace.
Pero este tipo de algoritmos necesitan normalmente de un par de números que forman las claves del sistema. En este caso se necesitan unos números que tienen que tener unas propiedades especiales. Es por ello que normalmente se suele contratar con una empresa dedicada a ellos, para que te genere el certificado, aunque también hay formas de hacerlo por tus propios medios.
Los números especiales de tu certificado
En el caso del algoritmo RSA se necesita partir de un número n que tiene que ser primo. Aquí uno podría decir, pues es muy sencillo generar un número primo por ejemplo el 3 o el 7, incluso el 13. Sin embargo la cosa no es tan sencilla si nos piden generar un número primo de cien cifras y es aquí donde puede estar el pequeño (o gran) resquicio que puede desbaratar toda nuestra seguridad.
Generar números primos ¿una tarea sencilla?
El problema radica en que generar números primos grandes y cuando decimos grandes nos referimos a que tengan un números de cifras superior a cien e incluso hasta mil cifras, es algo computacionalmente imposible. Con esto queremos decir que, con la potencia de cálculo de los ordenadores actuales es imposible obtenerlos.
¿Entonces como se generan estos números si no es posible? Pues básicamente se utiliza lo que se conoce como test de primaridad. Esto nos permite generar números con una probabilidad de que sean primos. Aquí esta realmente el problema, el número tendrá una probabilidad de ser primo muy alta. Pero nadie nos puede asegurar al 100% que ese número es primo.
El mayor problema es que si el número no fuera primo, los métodos de cifrado de los algoritmos como el RSA quedarían rotos y se podría descifrar la información de una manera sencilla.
Así que esto es otro capítulo más en el que podemos decir que la seguridad al 100% no existe.