Fuerza Bruta
2008-01-19 00:26:59-06
Ciencia y Tecnologia
Aun un poco pensativo sobre el amigo Bobby, he decidido escribir un poco de ciencia informática, nada nuevo, es solo un pequeño análisis sobre el asunto de los PINs y las limitaciones reales de la fuerza Bruta.
Nadie tendrá problema en ver las contraseñas como un conjunto de caracteres, estos se resuelven para una maquina especifica en su conjunto conocido, digamos ASCII o ISO 8859-1. El primero puede representar un total de 256 caracteres, el segundo 377.
Ocuparemos para este pequeño estudio el estándar ASCII, pues es sencillo y se representa en su totalidad con 256 caracteres que es justamente 2^8 (cosa que me facilita los Calculos). Sin embargo, dentro de este conjunto de caracteres hay dos que nunca apareceran en una contraseña El caracter Nulo (00H) y el retorno de carro (0DH) pues no son caracteres validos en una contraseña, hay otro que no seria muy común ver una contraseña el salto de linea (0AH) pues es un carácter de control amplia e innecesariamente usado en sistemas Operativos Windows, sin embargo, en Sistemas tipo Unix es un carácter valido.
Entonces dejaremos solo 254 caracteres para las operaciones, esto es para todos los propósitos, aunque algunos identificadores de contraseñas no soportaran mas que los caracteres imprimibles (20H-7EH coff, coff 32 a 126 decimal) observaremos este caso particular mas adelante. empecemos a calcular según el tamaño de la contraseña.
La formula es sencilla tomamos la extensión de nuestro alfabeto base (254 caracteres distintos) y lo elevamos a la potencia correspondiente a la longitud de la contraseña, entonces cada columna de la derecha (salvo la ultima) es el resultado de la siguiente formula (254) ^ i, donde i es el valor de la columna izquierda. al final es necesario sumar las cantidades para abarcar todas las posibles contraseñas con longitud 0 a 8.
Esos son muchas contraseñas, suponiendo que las deseamos guardar todas ellas en un archivo de texto, esto en algún sistema "Unix Like" así solo requeriremos guardar el retorno de carro adicional a los caracteres de la contraseña, así regresemos a lo básico cada carácter en el sistema ASCII se guarda en un Byte
Espacio Requerido
Observemos la suma total (156,471,290,687,426,803,757) sabemos que un Gigabyte (2 ^ 30) son aproximadamente 1,073,741,824 Bytes y un TeraByte (2 ^ 40) son 1,099,511,627,776 Bytes. Entonces tendríamos aproximadamente 142,309,809.86 TeraBytes necesarios para guardar todas las contraseñas posibles. ufff!!! apenas mi disco duro ;) .
Siendo honestos, CREO que el 98% de todas las contraseñas usadas se encuentra solo en en intervalo de 20H a 7EH, son como 94 caracteres, esto reduce considerablemente la magnitud de los cálculos.
veamos:
Solo caracteres imprimibles
Seguimos el mismo procedimiento para generar la segunda tabla
Espacio requerido
55,384,860,060,483,705 Bytes son aproximadamente 50,372.238 TeraBytes sigue siendo mucho espacio, digamos entonces que no lo vamos a guardar, pero vamos entonces a generar cada contraseña, La velocidad es dependiente de la maquina, si donde se van a probar las contraseñas son dentro de la maquina o en un Server remoto, CREO posible todo este proceso en 1/2 segundo. Teniamos 6,161,234,432,565,771 posibles contraseñas entre dos 3080617216282885.5 segundos, ahora a minutos, esto es 51,343,620,271,381.425 minutos, ahora a horas, 855,727,004,523.02375 horas, a dias 35655291855.12599 dias, esto transformado a años serian 97,685,731.11 años
Entonces, Como funcionan los programas que atacan fuerza Bruta, bueno atacan el eslabón mas débil , la accion humana, las contraseñas comunes suelen ser nombres de personas, objetos, fechas, sucesiones numericas simples o significativas, por ejemplo, si tu contraseña fuera de 3 digitos existe una gran probabilidad de que sea 007, 666,123, 321 y otras por el estilo. Con estas palabras se crean diccionarios que se usan para "ataques de Diccionario".
Noten que solo calcule contraseñas con una extension maxima de 8 caracteres esto solo para ejemplificar, la idea de hacer todos estos calculos la tome de un profesor que nos planteo un problema que tenia que ver con algo asi.
Saludos.
Nota si encuentran errores en los calculos, mencionenlo por que todo lo hice a mano.
Nadie tendrá problema en ver las contraseñas como un conjunto de caracteres, estos se resuelven para una maquina especifica en su conjunto conocido, digamos ASCII o ISO 8859-1. El primero puede representar un total de 256 caracteres, el segundo 377.
Ocuparemos para este pequeño estudio el estándar ASCII, pues es sencillo y se representa en su totalidad con 256 caracteres que es justamente 2^8 (cosa que me facilita los Calculos). Sin embargo, dentro de este conjunto de caracteres hay dos que nunca apareceran en una contraseña El caracter Nulo (00H) y el retorno de carro (0DH) pues no son caracteres validos en una contraseña, hay otro que no seria muy común ver una contraseña el salto de linea (0AH) pues es un carácter de control amplia e innecesariamente usado en sistemas Operativos Windows, sin embargo, en Sistemas tipo Unix es un carácter valido.
Entonces dejaremos solo 254 caracteres para las operaciones, esto es para todos los propósitos, aunque algunos identificadores de contraseñas no soportaran mas que los caracteres imprimibles (20H-7EH coff, coff 32 a 126 decimal) observaremos este caso particular mas adelante. empecemos a calcular según el tamaño de la contraseña.
Numero de contraseñas
| Tamaño de contraseña | contraseñas posibles |
| 0 | 1 |
| 1 | 254 |
| 2 | 64516 |
| 3 | 16387064 |
| 4 | 4162314256 |
| 5 | 1057227821024 |
| 6 | 268535866540096 |
| 7 | 68208110101184384 |
| 8 | 17324859965700833536 |
| Suma | 17393337673075145131 |
La formula es sencilla tomamos la extensión de nuestro alfabeto base (254 caracteres distintos) y lo elevamos a la potencia correspondiente a la longitud de la contraseña, entonces cada columna de la derecha (salvo la ultima) es el resultado de la siguiente formula (254) ^ i, donde i es el valor de la columna izquierda. al final es necesario sumar las cantidades para abarcar todas las posibles contraseñas con longitud 0 a 8.
Esos son muchas contraseñas, suponiendo que las deseamos guardar todas ellas en un archivo de texto, esto en algún sistema "Unix Like" así solo requeriremos guardar el retorno de carro adicional a los caracteres de la contraseña, así regresemos a lo básico cada carácter en el sistema ASCII se guarda en un Byte
| Longitud | Passwords posibles * (longitud +1) | BYTES |
| 0 | 1 * (0 +1) | 1 |
| 1 | 254 * (1 +1) | 508 |
| 2 | 64516 * (2 +1) | 193548 |
| 3 | 16387064 * (3 +1) | 65548256 |
| 4 | 4162314256 * (4 +1) | 20811571280 |
| 5 | 1057227821024 * (5 +1) | 6343366926144 |
| 6 | 268535866540096 * (6 +1) | 1879751065780672 |
| 7 | 68208110101184384 * (7 +1) | 545664880809475072 |
| 8 | 17324859965700833536 * (8 +1) | 155923739691307501824 |
| Total en Bytes | 156471290687426803757 |
Observemos la suma total (156,471,290,687,426,803,757) sabemos que un Gigabyte (2 ^ 30) son aproximadamente 1,073,741,824 Bytes y un TeraByte (2 ^ 40) son 1,099,511,627,776 Bytes. Entonces tendríamos aproximadamente 142,309,809.86 TeraBytes necesarios para guardar todas las contraseñas posibles. ufff!!! apenas mi disco duro ;) .
Siendo honestos, CREO que el 98% de todas las contraseñas usadas se encuentra solo en en intervalo de 20H a 7EH, son como 94 caracteres, esto reduce considerablemente la magnitud de los cálculos.
veamos:
| Tamaño Contraseña | Contraseñas posibles |
| 0 | 1 |
| 1 | 94 |
| 2 | 8836 |
| 3 | 830584 |
| 4 | 78074896 |
| 5 | 7339040224 |
| 6 | 689869781056 |
| 7 | 64847759419264 |
| 8 | 6095689385410816 |
| Total | 6161234432565771 |
Seguimos el mismo procedimiento para generar la segunda tabla
| Longitud | Passwords*(longitud+1) | Bytes |
| 0 | 1 * (0 +1) | 1 |
| 1 | 94 * (1 +1) | 188 |
| 2 | 8836 * (2 +1) | 26508 |
| 3 | 830584 * (3 +1) | 3322336 |
| 4 | 78074896 * (4 +1) | 390374480 |
| 5 | 7339040224 * (5 +1) | 44034241344 |
| 6 | 689869781056 * (6 +1) | 4829088467392 |
| 7 | 64847759419264 * (7 +1) | 518782075354112 |
| 8 | 6095689385410816 * (8 +1) | 54861204468697344 |
| total | 55384860060483705 |
55,384,860,060,483,705 Bytes son aproximadamente 50,372.238 TeraBytes sigue siendo mucho espacio, digamos entonces que no lo vamos a guardar, pero vamos entonces a generar cada contraseña, La velocidad es dependiente de la maquina, si donde se van a probar las contraseñas son dentro de la maquina o en un Server remoto, CREO posible todo este proceso en 1/2 segundo. Teniamos 6,161,234,432,565,771 posibles contraseñas entre dos 3080617216282885.5 segundos, ahora a minutos, esto es 51,343,620,271,381.425 minutos, ahora a horas, 855,727,004,523.02375 horas, a dias 35655291855.12599 dias, esto transformado a años serian 97,685,731.11 años
Entonces, Como funcionan los programas que atacan fuerza Bruta, bueno atacan el eslabón mas débil , la accion humana, las contraseñas comunes suelen ser nombres de personas, objetos, fechas, sucesiones numericas simples o significativas, por ejemplo, si tu contraseña fuera de 3 digitos existe una gran probabilidad de que sea 007, 666,123, 321 y otras por el estilo. Con estas palabras se crean diccionarios que se usan para "ataques de Diccionario".
Noten que solo calcule contraseñas con una extension maxima de 8 caracteres esto solo para ejemplificar, la idea de hacer todos estos calculos la tome de un profesor que nos planteo un problema que tenia que ver con algo asi.
Saludos.
Nota si encuentran errores en los calculos, mencionenlo por que todo lo hice a mano.
Permalink: http://www.mononeurona.org/users/entry/vendaval/1069
Comentblogs:1.-
saidjose wrote:
Exelente explicación me aclareste un poco mas el panorama de como hacen los craques para craquear contraseñas
Gracias Vendaval
2008-01-23 12:58:42-06
Exelente explicación me aclareste un poco mas el panorama de como hacen los craques para craquear contraseñas
Gracias Vendaval
2008-01-23 12:58:42-06










