MANUAL DE PROMOCION WEB, META TAGS, ROBOTS, SPIDERS, KEYWORDS, DESCRIPTION, HTML ,DHTML, JAVASCRIPT DISEQO WEB, PALABRAS CLAVE, TIPOGRAFIA, COLOR
manuales - recursos - gráficos - programación...

Home - Seguridad - Artículos sobre Criptografía

Sobre la longitud de las llaves de acceso a un sistema
por José de Jesús Angel Angel, director de Investigación y Desarrollo de SeguriDATA .


En la mayoría de los sistemas, desde una PC hasta una compleja red de computadoras, existen diferentes llaves de acceso. Estas nos permiten entrar a un sistema y de su seguridad depende que nadie más que los autorizados tengan acceso al sistema.

Las primeras llaves de acceso de las que hablaremos son los PINs (Personal Identification Number), estos son muy usados por ejemplo en un ATM (Automatic Teller Machine) o cajero automático, en las cajas de seguridad de un hotel, en el control de acceso de una puerta electrónica, etc. Aunque un PIN puede tener hasta 64bits de longitud, es más común usarlo con 4 dígitos numéricos.

Es obvio que esta longitud es muy insegura, ya que solo pueden usarse 104 diferentes PINes y estos pueden recorrerse en menos de un segundo con cualquier PC actual. Sin embargo estos aún se siguen usando. La respuesta ha esto es que un PIN debe de usarse en un ambiente “seguro”, es decir que físicamente no exista riesgo de que alguien pueda ver el PIN o que el dispositivo donde se usa, esté resguardado por otros controles de acceso. Lo que hará entonces difícil que un ataque a fuerza bruta (recorrer todo es espacio posible de llaves) o de inspección visual.

Otro tipo de llaves de acceso son los “Passwords”, un password es usado principalmente en cuentas de e-mails, o acceso a una PC. Este consiste usualmente de entre 6 y 10 caracteres, es decir, desde 48 hasta 80 bits. Un password debe de garantizar la seguridad de acceso a un sistema y al menos debe de resistir dos tipos de ataques comunes, como lo son el ataque de diccionario y el ataque a fuerza bruta.

Un ataque de diccionario consiste en recorrer todos los passwords más posiblemente usados, es decir, las palabras que dependiendo del lenguaje usado se piensa pueden usar mas elegidos como passwords, como los nombres propios, combinación de nombres propios y números, etc., según los diseñadores de softwares que rompen claves de esta manera afirman que mas de la mitad de los passwords usados están formados de esta manera, si son susceptibles a un ataque de diccionario.

Para evitar el primer ataque, el del diccionario, el password debe de ser lo mas aleatorio posible, sin embargo este tipo de passwords, los aleatorios, no son usados ya que no son prácticos. Un password debe ser aprendido y recordado cuando es usado, por lo que en la práctica son más usados passwords fáciles de recordar. No existe un método que sea el mas adecuado, sin embargo la misma practica sugiere uno como el siguiente: en lugar de una palabra fácil de recordar se puede elegir una frase larga pero fácil de recordar, por ejemplo, “Entre los individuos como entre las naciones el respeto al derecho ajeno es la paz”, luego entonces se construye la password tomando la primera letra de la primera palabra y después la segunda de la segunda, la primera de la tercera, la segunda de la cuarta y así sucesivamente, entonces nuestro password queda como “eoioeanlrldjeap”.

Por otra parte un password no debe de ser muy corto ya que esto permitiría ser atacado por fuerza bruta. Respecto a la longitud adecuada de un password lo comentaremos al último.

Finalmente otro tipo de llaves de acceso son las conocidas últimamente como claves criptográficas simétricas, este tipo de llaves son usadas para establecer una conexión segura a través de un canal inseguro como Internet o cualquier otro medio de comunicación insegura.

Las claves simétricas deben de ser completamente aleatorias y su generación debe de ser garantizada por un buen software o hardware que genere bits aleatorios. En la actualidad estas claves son de sesión, es decir se generan cada ves que se efectúa una conexión. Estas claves son generadas por un software que en general ya viene incluido en el browser o en el software que garantiza la conexión, estos procesos son invisibles para el usuario.

Sin embargo para aplicaciones de alta prioridad es recomendable chequear los generadores para estar seguros que las claves son aleatorias. Esto se hace usando un buen algoritmo que se haya probado su calidad, o si no se conoce el algoritmo entonces, se puede someter al generador a algunas pruebas que garantizan la aleatoriedad de sus salidas, como por ejemplo las recomendadas en NIST (National Institute of Standards and Technology).

Finalmente veamos con números, qué longitud de los passwords o claves es más adecuada, para esto damos los siguientes pasos:

  1. Partimos de un experimento real que se realizó en enero de 1999, donde se rompió a fuerza bruta DES-56, se llevo a cabo con una supercomputadora diseñada explícitamente para el caso, conjuntamente con 100 000 computadoras conectadas por Internet, todo esto logro un poder de cómputo de 245 billones de pruebas por segundo, es decir, 245000000000 de claves se ensañaron cada segundo. DES fue roto en menos de 23 horas, recorriendo un poco más del 25% del espacio de claves.
  2. Tomemos como base ese poder de cómputo, que incluso hoy en día es una buena referencia. Además de suponer que al recorrer al menos el 50% del espacio de claves existe gran seguridad de encontrar la clave.
  3. Para el caso de claves de 40 bits, tendríamos un espacio de claves de 2^40 =1099511627776. Con el poder de computo arriba mencionado, para recorrer el 50% del total es necesario solo 2.2 seg, que se obtiene dividiendo 2^40/245 billones y después entre dos. Esto es son claves muy inseguras.
  4. Para claves de 48 bits, necesitamos 574 seg = 9.5 minutos, que por lo tanto también consideramos inseguras.
  5. El caso de las claves de 56 bits, tendríamos un tiempo de 40 horas. Lo que también determinamos como inseguras.
  6. Siguiendo el mismo procedimiento para las claves de 64 bits necesitamos un tiempo de 1.2 años. Que declaramos también como inseguras.
  7. Para el caso de 80 bits, el tiempo crece hasta 78234 años. En estos momentos estamos en posición de determinar si este tiempo es seguro o no, aunque para los mas estrictos no lo es, podemos recordar que solo la existencia de la civilización como la conocemos tiene 2000 años, entonces tendrían que pasar más de 30 de estas para llegar a los 70 mil años, con este pequeño razonamiento poder determinar a este tiempo como seguro actualmente.
  8. Para 90 bits, el tiempo necesario seria de un poco más de 80 millones de años. Que en este caso las declaramos a las claves como seguras sin duda alguna.
  9. Finalmente para las claves de longitud 128 bits, necesitamos un tiempo explícito de 22020985858787784059 años, es decir, 2.2 x 10^19 años, que definitivamente es seguro para nuestros días.

Como conclusión respecto a la longitud de claves podemos dibujar la siguiente gráfica.

Longitud de las claves

Por lo tanto, respecto a los passwords podemos sugerir que se construyan de una forma fácil de recordar y tengan una longitud de al menos 10 caracteres. Para probar que estos son de buena calidad lo podemos someter a un software comercial que nos garantice que es resistente a un ataque de diccionario.

Respecto a las claves simétricas, la razón de tener 128 bits es más de implementación, ya que las computadoras trabajan con bloques de memoria múltiplos de 32 bits, sin embargo podemos con toda seguridad usar claves simétricas desde 90 bits y que sean generadas aleatoriamente.


Home - Seguridad - Artículos sobre Criptografía