¿Es posible que mi contraseña tenga más de una combinación de contraseña?

28

¿Puede mi contraseña tener más de una combinación de contraseña?

Leí sobre las cerraduras de combinación física (la cerradura que abre con números) y aprendí que una cerradura de combinación puede tener más de una combinación posible.

También tuve mi primer teléfono, un teléfono Nokia normal (no un teléfono inteligente) que estaba protegido con contraseña y pude abrir el dispositivo con una contraseña que no era realmente la contraseña exacta del teléfono. Al igual que si la contraseña se configuró en 4545 y escribí 1111, el teléfono aún está desbloqueado. O si la contraseña del teléfono se configuró en 4114 y escribí, digamos, 2141, el teléfono aún está desbloqueado.

La pregunta es, si mi contraseña para mi computadora portátil era !78ghA,NJ58*#3&* , ¿es posible que una próxima combinación funcione a mis espaldas o solo funcionará si hay una vulnerabilidad?

    
pregunta Henry WH Hack v2.1.2 12.01.2016 - 12:59
fuente

2 respuestas

44

En la mayoría de los sistemas protegidos con contraseña, generalmente es posible, pero muy improbable.

Detrás de muchos mecanismos de validación de contraseñas está el uso de funciones hash con sal. En aras de la simplicidad, olvidémonos de la sal por un momento.

Cuando un usuario establece su contraseña, hash(password) se almacena en la base de datos Cuando el usuario inicia sesión presentando password' , hash(password') se compara con hash(password) . Si coincide, el usuario puede iniciar sesión.

Recordemos, sin embargo, que las funciones hash obtienen datos de longitud ilimitada y los transforman en datos de tamaño limitado, ej. 128 bits. Por lo tanto, no es difícil entender que puede haber más de un mensaje que produzca el mismo hash desde una función dada. Eso se llama colisión y es lo que te preocupa.

Lo que pasa es que las funciones hash se producen para ser tan aleatorias que no deberías encontrar o producir una colisión fácilmente. Teóricamente es "posible", pero prácticamente "imposible", si está utilizando una buena función hash moderna.

    
respondido por el CristianTM 12.01.2016 - 14:19
fuente
10

Primero, según la teoría matemática, sí (aunque en la práctica puede ignorar esto por completo para las funciones de hash modernas y los números que se pueden lograr mediante cálculos en este universo). Si el sistema no almacena su contraseña en texto sin formato o mediante encriptación reversible, pero en lugar de eso, la hace (como es una práctica recomendada) existe una infinidad de contraseñas potenciales que generarán un hash que se corresponderá con su hash (asumiendo un hash criptográfico ideal función).

Por ejemplo, si su contraseña era password = '!78ghA,NJ58*#3&*' y utilizaron un hash sha256 con sal (tenga en cuenta que esto debe fortalecerse con la clave con muchas rondas para hacer más dura la fuerza bruta) con una sal de 3 bytes: d7 35 e6 entonces su el hash de la contraseña sería 4fe5bbb74a21fb6d20785ce7fce1cd51d6fc87c5a55f65d75e8f37096ed54a53 (en python puede calcularlo con):

>>> import hashlib
>>> salt = '\xd7\x35\xe6'
>>> password = '!78ghA,NJ58*#3&*'
>>> hashlib.sha256(salt + password).hexdigest()
'4fe5bbb74a21fb6d20785ce7fce1cd51d6fc87c5a55f65d75e8f37096ed54a53'

Note que este hash es de 256 bits. Entonces solo hay 2 256 ~ 10 77 posibles hashes. Si las funciones hash funcionan bien y seleccionan hashes uniformemente para todas las entradas posibles (es decir, la función hash actúa como un oráculo aleatorio ) , una vez que intentes significativamente más de 10 hash 77 , algunos hashes colisionarán (que se puede demostrar con el principio de pigeonhole ). Si probaste 10 hash 80 , deberías esperar encontrar cerca de 1000 contraseñas que coincidan con cualquier hash dado.

Sin embargo, 10 77 es un número extremadamente grande; es aproximadamente el número de átomos en el universo observable. O si cada átomo en el sistema solar (~ 10 57 ) calculara un hash cada nanosegundo, pasaría unos 3000 años antes de que calculara 10 hashes 77 , por lo que esto no es ' Es algo de lo que tienes que preocuparte en la práctica.

(Si probó 5 mil millones de hashes por segundo durante 100 años y tuvo una contraseña muy segura, la posibilidad de encontrar aleatoriamente una contraseña diferente que coincida con su hash de 256 bits es 1 en 7.4 x 10 57 ; esto es como las probabilidades de comprar 7 boletos de powerball en semanas sucesivas y ganar el premio mayor las primeras 6 veces y luego jugar una séptima vez y hacer coincidir 5 números (sin powerball) para ganar solo $ 1 millón.)

Por supuesto, esto no significa que, en la práctica, su contraseña sea única. Personalmente me he encontrado con un sistema Cisco VPN desplegado en la naturaleza que trunca una contraseña aleatoria de 12 caracteres en 8 caracteres sin notificar al usuario (inicialmente descubrí que cuando escribí demasiado rápido, dejé un carácter y aún funcionó; y luego hizo prueba y error). Entonces, siempre y cuando los primeros 8 caracteres sean correctos, puede escribir lo que quiera después y funcionará.

Esto tampoco es un caso aislado; por ejemplo, Microsoft solía truncar silenciosamente las contraseñas de Windows Live ID a 16 caracteres aunque ahora informa al usuario que limita las contraseñas a 16 caracteres:

  

Las contraseñas de Windows Live ID siempre estaban limitadas a 16 caracteres: el proceso de inicio de sesión ignoró cualquier contraseña adicional. Cuando cambiamos "Windows Live ID" a "cuenta de Microsoft", también actualizamos la página de inicio de sesión para informarle que solo son necesarios los primeros 16 caracteres de su contraseña ".

También es posible que un sistema de autenticación mal diseñado elimine los caracteres especiales de la mitad de su contraseña. Mi amigo descubrió que T-Mobile hizo esto en 2011 cuando usó sus la característica de "contraseña olvidada" mal diseñada que le envió su contraseña en texto simple que en su caso eliminó los caracteres especiales de su contraseña.

    
respondido por el dr jimbob 12.01.2016 - 19:10
fuente

Lea otras preguntas en las etiquetas