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!
fuente
Respuestas:
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.106 000000 999999:
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 hayAAXXXX A X AA XAAXXX XXAAXX XXXAAX XXXXAA 104 104 A 105 opciones 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
y en este punto no está claro si hay una "envoltura". Si hay, también incluimos
Cada solución tiene combinaciones asociadas, por el mismo razonamiento que el anterior. Entonces, cuente cuántas soluciones debe haber. Recuerde contar pedidos alternativos, como103 XABCXX.
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 CB C |S|=|A|−|B|−|C|, |S|=|A|−|B|−|C|+|B∩C|, B∩C B C B C
Hay varias formas en que esto puede ocurrir:
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".
fuente
Obtener una fórmula cerrada parece complejo. Sin embargo, es bastante fácil enumerarlos. Hay
568 916
posibles 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
)fuente