La "contraseña más segura"


11

Tengo una aplicación que está protegida por un PIN de cuatro dígitos y el usuario tuvo cinco intentos de iniciar sesión antes de que se bloquee la cuenta.

Ahora, uno de mis clientes quiere "fortalecer" la seguridad y abogar por otra solución:

  • PIN de seis dígitos
  • NO "mismo dígito uno al lado del otro": por ejemplo: 11 3945 o 39 55 94
  • NO "tres-funcionamiento números": por ejemplo: 123 654 o 53 789 3

Ahora a la pregunta: ¿Qué solución es la más fuerte?

Puedo calcular los cuatro dígitos bastante fácil, pero ¿cómo calculo el otro?

¡Gracias!

Actualizar

Obtienes lo que pides, especialmente cuando trabajas con matemáticas :)

Entonces, lo que estaba preguntando era la cantidad de combinaciones para ambas secuencias numéricas.

Al leer las respuestas y los comentarios, me ha quedado claro que realmente no importa. Si tiene 5 conjeturas, no importa si tiene 10.000 o ~ 800.000 para elegir. Más importante es descartar 1234 y el día de nacimiento. En mi situación, en realidad tengo el día de nacimiento de los usuarios, así que tengo algo que verificar.

Gracias por una gran discusión!


44
Desde una perspectiva histórica, debe familiarizarse con el criptoanálisis de la máquina Enigma. En particular, el algoritmo Enigma nunca cifró una carta para sí mismo. Sus ingenieros pensaron que esto era más seguro, pero tuvo el efecto de hacer que la máquina fuera mucho menos segura. Este fue uno de los muchos pasos que permitieron a las Potencias Aliadas romper el Enigma. No soy un experto en criptografía de ninguna manera, pero la noción general es que desea que su espacio de claves sea lo más grande posible.
Sycorax dice Reinstate Monica

2
Creo que esto pertenece a la Criptografía , no aquí.
gung - Restablece a Monica

2
Casper, por favor aclare: ¿le preocupa principalmente como un problema de seguridad (por ejemplo, hay consideraciones relacionadas con algo más que la probabilidad), en cuyo caso puede ser mejor en otro lugar, o está haciendo una pregunta principalmente de probabilidad (que encaja aquí)?
Glen_b -Reinstalar Monica

3
Teóricamente, si te enfocas únicamente en los ataques de fuerza bruta, más posibilidades significan más seguridad, por lo que las restricciones, como no tener el mismo dígito o no ejecutar 3, reducen el número de posibilidades y, por lo tanto, son estrictamente más débiles. Sin embargo, prácticamente (como toca el usuario777) las personas no eligen pines aleatorios. Si los usuarios son más vagos que paranoicos, muchos de ellos pueden elegir pines como "000000" o "123456", lo que hace que las cosas sean menos seguras.
Gregor Thomas

2
Estoy votando para cerrar (temporalmente) esta pregunta como poco clara, sobre la base de que las intenciones del OP aún no son obvias. Realmente preferiría ver respondida la pregunta de @ Glen_b, por lo que sabemos si esto debería tratarse como una pregunta combinatoria / de probabilidad o como algo que se migra mejor.
Silverfish

Respuestas:


8

Solicitó ayuda a un foro de estadísticos para esta pregunta, por lo que le proporcionaré una respuesta basada en estadísticas. Por lo tanto, es razonable suponer que está interesado en la probabilidad de adivinar un PIN al azar (para alguna definición de aleatorio), pero eso es leer más en la pregunta de lo que se proporciona.

Mi enfoque será enumerar todas las opciones posibles sin restringir, luego restar las opciones nulas. Sin embargo, esto tiene un ángulo agudo, llamado principio de inclusión-exclusión, que corresponde a la idea intuitiva de que no desea restar lo mismo de un conjunto dos veces.

En un PIN de seis dígitos sin restricciones y un sistema de números decimales, hay combinaciones posibles, de a cada dígito tiene 10 opciones.106000000999999:

Considere cómo se ven "dos dígitos adyacentes idénticos": , donde las posiciones etiquetadas con son iguales y puede ser cualquier dígito decimal. Ahora considere cuántas otras formas se puede organizar la cadena en seis dígitos: , , y . Entonces, para cualquier pedido en particular (una de esas opciones), hay al menos combinaciones, ya que hay dígitos sin restricción. Ahora, ¿cuántas opciones de hay? Estamos trabajando con dígitos decimales, por lo que debe haber 10. Entonces hayAAXXXXAXAAXAAXXXXXAAXXXXXAAXXXXXAA104104A105opciones para un pedido particular. Hay cinco de estos ordenamientos, por lo que hay arreglos que satisfacen esta definición. (Lo que esto significa en términos de seguridad podría medirse en términos de una medida teórica de la información de cuánto reduce esto la entropía del espacio PIN).5×105

Ahora considere cómo se ven los números consecutivos. En la cadena , si conocemos A, también conocemos B y C *: si A es 5, entonces B es 6 y C es 7. Entonces podemos enumerar estas opciones:ABCXXX

  • 012XXX
  • 123XXX
  • 234XXX
  • 456XXX
  • 789XXX

y en este punto no está claro si hay una "envoltura". Si hay, también incluimos

  • 890XXX
  • 901XXX

Cada solución tiene combinaciones asociadas, por el mismo razonamiento que el anterior. Entonces, cuente cuántas soluciones debe haber. Recuerde contar pedidos alternativos, como103XABCXX.

Ahora llegamos a la esquina cerrada, que es el principio de inclusión-exclusión. Hemos hecho el conjunto de todos los PIN de seis dígitos en tres conjuntos:

A. PIN permitidos B. PIN inválidos debido a "dígitos adyacentes" C. PIN inválidos debido a "dígitos secuenciales"

Pero hay una sutileza adicional, y es que hay algunos números de 6 dígitos que pueden ser asignadas a ambos y . Entonces, si calculamos restamos esos números dos veces, y nuestra respuesta es incorrecta. El cálculo correcto es donde es el conjunto de elementos en tanto y . Así que hay que determinar cuántas maneras puede un número caída tanto en y .C | S | = | A | - | B | - | C | , | S | = | A | - | B | - | C | + | B C | , B C B C B CBC|S|=|A||B||C|,|S|=|A||B||C|+|BC|,BCBCBC

Hay varias formas en que esto puede ocurrir:

  • AABCXX
  • ABCXDD y así sucesivamente. Por lo tanto, debe elaborar un enfoque sistemático para esto, así como una forma de realizar un seguimiento de los pedidos alternativos. Usando la misma lógica que he aplicado anteriormente, esto debería ser muy manejable, aunque un poco tedioso. Solo tenga en cuenta cuántas formas alternativas podría haber para satisfacer tanto a B como a C.

Los enfoques ligeramente más avanzados aprovecharían los resultados combinatorios básicos y el teorema fundamental del conteo, pero elegí esta vía ya que coloca la menor carga técnica en el lector.

Ahora, para que esta sea una pregunta de probabilidad bien formada, tenemos que tener alguna medida de probabilidad para cada arreglo. En el supuesto de un ataque ingenuo, uno podría suponer que todas las combinaciones de dígitos tienen la misma probabilidad. En este escenario, la probabilidad de una combinación elegida al azar es Si ese es el tipo de ataque que más le interesa evitar, entonces el conjunto de criterios propuesto obviamente debilita el sistema, porque algunas combinaciones están prohibidas, por lo que solo un atacante tonto las probaría. Dejo el resto del ejercicio al lector.1|S|

La arruga de "cinco hasta el bloqueo" es decididamente la mejor protección contra el acceso no autorizado, ya que en el esquema de 4 o 6 dígitos, hay una gran cantidad de opciones, e incluso cinco conjeturas aleatorias diferentes tienen un bajo probabilidad de éxito Para una pregunta de probabilidad bien planteada, es posible calcular la probabilidad de que dicho ataque tenga éxito.

Pero otros factores además de la probabilidad de secuencias de números pueden influir en la seguridad del mecanismo PIN. ¡Principalmente, las personas tienden a no elegir PIN al azar! Por ejemplo, algunas personas usan su fecha de nacimiento, o fecha de nacimiento de los niños, o algún número relacionado de manera personal similar como PIN. Si un atacante conoce el DOB del usuario, entonces probablemente sea una de las primeras cosas que intente. Entonces, para un usuario en particular, algunas combinaciones pueden ser más probables que otras.

* Las secuencias que enumeras están aumentando estrictamente, y no está claro si aumentan o disminuyen cuando dices "número de tres carreras".


1

Obtener una fórmula cerrada parece complejo. Sin embargo, es bastante fácil enumerarlos. Hay 568 916posibles códigos para la segunda solución. Que es mayor que la cantidad de soluciones con un código PIN de cuatro dígitos. El código para enumerarlos está debajo. Aunque no está optimizado, solo tarda unos segundos en ejecutarse.

Nota. Supuse que la secuencia tenía que estar en orden creciente (que puede modificarse fácilmente three_running)

N = 999999

candidates = range(N)

def same_consecutive_digits(x):
    x_string = str(x).zfill(6)
    for i in range(1,len(x_string)):
        if x_string[i] == x_string[i-1]:
            return True
    return False

def three_running(x):
    x_string = str(x).zfill(6)
    for i in range(2,len(x_string)):
        if int(x_string[i]) == int(x_string[i-1]) + 1 and int(x_string[i-1]) == int(x_string[i-2]) + 1:
            return True
    return False

def valid(x):
    return not same_consecutive_digits(x) and not three_running(x)

assert(same_consecutive_digits(88555))
assert(same_consecutive_digits(123))
assert(not same_consecutive_digits(852123))
assert(three_running(123456))
assert(not three_running(4587))
assert(valid(134679))
assert(not valid(123894))
assert(not valid(111111))
assert(not valid(151178))
assert(valid("031278"))

accepted = [i for i in range(N) if valid(i)]
print(len(accepted))

Implícito en el código, pero no en su descripción, está la suposición de que los PIN nunca comenzarán con el dígito "0". Eso no suele ser cierto para los PIN o contraseñas. La respuesta correcta, permitiendo tales ceros, es 568,916. Sin embargo, tengamos en cuenta que la respuesta relevante consideraría que los ataques al PIN en este problema restringido pueden hacerse mucho más eficientes explotando las restricciones, lo que implica que esta mera enumeración de las posibilidades no representa adecuadamente la "fuerza" de el sistema, como se señala en los comentarios a la pregunta.
whuber
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.