COMBINACIONES Y BITS DE CIFRADO

    Cada vez oímos con más frecuencia que se han reventado claves de cuentas de correo, que ha quedado anticuado el sistema de cifrado SHA1 o el sistema de verificación de descargas hash MD5. Recomiendan usar contraseñas fuertes y cuando nos disponemos a utilizar programas para tal fin, no entendemos muy bien lo que son los bits de cifrado y oímos de lejos términos como combinaciones o fuerza bruta.

    Intentaré esclarecer un poco estos conceptos, muy básicos y fáciles de entender, pero que se nos enquistan muchas veces. Deberemos hacer algunos cálculos, pero son muy fáciles.

LOS BITS

     El número de posibilidades para una clave en particular es dos a la potencia n, donde «n» es la longitud de la clave en bits. El cifrado con 2 bits tiene cuatro posibles resultados: 00, 01, 10 y 11, por lo tanto, matemáticamente existen 2^n (2 elevado a n) posibles valores para una clave de n bits. Cada vez que añadimos un bit se dobla el número de posibles claves. Para una clave de 6 bits, matemáticamente existen 2^6 posibles valores, es decir, 2x2x2x2x2x2= 64 combinaciones. Una clave de 10 bits tiene 1.024 posibilidades (2^10)

Entendamos entonces los bits como el número de veces que multiplicamos por sí mismo a 2, que nos da la cantidad de posibles combinaciones para un solo carácter.

    ¿Así pues, si meto muchos bits mejor? Pues la respuesta es que no. Cuanto más larga sea la clave más se tarda en decodificar. Las claves han de ser lo suficientemente seguras sin sobrepasarse a la hora de calcularla. En este caso, más no es mejor.

LAS COMBINACIONES

    Si se usa una clave numérica (números del 0 al 9) y 4 dígitos (por ejemplo un PIN) tendríamos 10 posibilidades de 4 dígitos de longitud, por lo que las combinaciones posibles serían 10 mil:

10^4 = 10.000

Si usamos nuestro alfabeto de 27 letras mayúsculas y minúsculas, más los 10 números y 5 carácteres daría 69 diferentes posibilidades para un único carácter de esos 4 que dijimos antes.

69^4 = 22.667.121

QUE LA FUERZA TE ACOMPAÑE

    Queremos atacar por fuerza bruta una contraseña. Supongamos que nuestro equipo tiene una potencia de cálculo de 8 mil millones de cálculos por segundo (un pc casero):

69^4 / 8.000.000.000 = 0,00284 segundos

Tardamos menos de una centésima de segundo en reventar una clave de 22 millones de combinaciones. Así pues, podemos asegurar sin equivocarnos que una clave de 4 digitos es una mierda.

Vamos a meter una clave de 10 dígitos. Como nos saldrán demasiados segundos, vamos a pasarlo a años (multiplicando por los 31.556.926 segundos que tiene un año)

69^10 / 8.000.000.000 x 31.556.926 = 9,689 años

Bueno, está mejor, pero si tenemos en cuenta que se utilizan redes de ordenadores muy potentes, esa cifra se reduce drásticamente. Imagina un Xeon de 2 billones por segundo (2 petaflops), o los 93 cuatrillones de operaciones por segundo del supercomputador chino Sunway TaihuLight.

¿Y si solo añadimos 1 dígito más?

69^11 / 8.000.000.000 x 31.556.926 = 668,58 años

Esto es así porque el tamaño de la clave se duplica, es decir, una clave de 129 bits tiene dos veces las combinación del de 128 bits.

    Es por esto que cada vez recomiendan usar contraseñas más largas. Actualmente se recomiendan claves de 20 dígitos.

Los más paranoicos en cifrado dicen que la clave debería dar un resultado igual o superior al tiempo transcurrido desde la creación del universo (14 mil millones de años).

CONCLUSIONES

    Cuantos más carácteres tenga una contraseña, mejor, pero más aun si se usan los bits adecuados. En 1998, la Fundación Electronic Frontier quebró un código DES de 56 bits en sólo tres días, pero al paso que va la informática, se cree que una clave de 128 bits será comprometida en breve, así que de momento, estamos seguros, pero cada vez más sistemas de cifrado incorporan ya los 256 bits.

    Es por eso que cada vez se intenta atacar sistemas de cifrado a través de vulnerabilidades o backdoors, y no tanto por fuerza bruta.

Te puede interesar:

Algoritmos de cifrado I

Algoritmos de cifrado II

Compartir

4 Comentarios

  1. Quizás hubiera sido interesante mencionar que cuando se dice que «se ha roto» un algoritmo significa que se ha descubierto un método más eficiente que la fuerza bruta. Esto es lo que pasó con MD5 hace ya años, y hace unos meses con SHA1.

    1. El articulo sigue la progresión lógica que al autor ha fijado desde los anteriores y a mi me parece magnifica, entrar a explicar lo que ocurrió con MD5 o SHA1 como dices , implicaría tener que explicar las colisiones de hash y eso creo que da para un articulo entero ;)

      Buen articulo ;)

  2. IYÁN, tienes razón, menciono de pasada al final que ya no se usa tanto la fuerza bruta, si no que se buscan vulnerabilidades. El caso es que hay tanta y tanta info que meterlo todo queda fuera del objetivo de este mini artículo, quizá en futuros artículos lo comento más en profundidad, como el quebrado del RSA de 1024 bits.

Deja una respuesta a puppetmaster Cancelar respuesta

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax