(¿Por qué) una hoja de cálculo de MS Office 2010 encriptada (debe) tener el hash de la contraseña "escrito"?

0

Para mi ingenua mente, parece que el cifrado de un documento con AES debería ser el siguiente:

HumanPassword --- | hash | - > tecla --- | AES | - > Texto cifrado

                       plaintext|--^

Y el descifrado de esta manera:

HumanPassword --- | hash | - > tecla --- | AES | - > Texto sin formato

                      ciphertext|--^

Y como tal, parece que el paquete cifrado (el archivo de Excel) no debería contener el hash de la contraseña humana , y además, sería inseguro que no sea seguro. hazlo .

Uno de mis compañeros de trabajo dice que "si el archivo no contenga el hash, ¿con qué compararía la contraseña?"

Me parece que no tiene que hacer ninguna comparación. Debe descifrar con cualquier clave que obtenga del hash, y si funcionó, el resultado no será un disparate. Si no funcionó, Excel debería ver el disparate y decir "Contraseña incorrecta, nincompoop". Pero no debería tener el hash en el archivo. No debería necesitar comparar nada.

Sin embargo, parece que tiene el hash en el archivo.

Cuando mi compañero de trabajo y yo seleccionamos este archivo, descubrimos que efectivamente había un valor de hash allí, y ahora estamos ejecutando ataques de diccionario y de fuerza bruta contra él.

Supongo que mi pregunta es esta:

¿Por qué un documento cifrado de MS Office 2010 necesita almacenar el hash de la contraseña?

Y, si las preguntas secundarias son apropiadas en SE,

Si no es absolutamente necesario, ¿por qué Microsoft eligió hacerlo? ¿No es menos seguro si el algoritmo hash no es muy bueno?

    
pregunta H. Wilson 12.08.2017 - 00:07
fuente

1 respuesta

1

Este es un caso en el que la seguridad ha sido escarificada por su facilidad de uso.

El hash actúa como una suma de comprobación. Si no tuvieran nada con qué compararlo, no podrían determinar si el archivo fue descifrado con la contraseña correcta. Sin esta comparación, intentaría cargar a ciegas en el archivo. Una contraseña incorrecta significaría que se cargaría en dañado. Y el usuario / aplicación no sabría si este daño se debió a una contraseña incorrecta o algún otro problema.

Además, el hash no es un hash directo de la clave. En Office 2007, la contraseña es hash 50.000 veces, y en Office 2010 la tiene 100.000 veces. Ambos utilizando SHA-1. Esto es para combatir las herramientas que dañan hashes forzados para versiones anteriores. Office 2013 usa la misma estrategia pero usa SHA-512 de manera predeterminada. Como resultado, el hash es seguro para la redistribución. Puede obtener más información sobre la protección con contraseña aquí .

Dicho esto, todavía es posible la fuerza bruta. En última instancia, la fuerza de la clave depende del usuario final.

    
respondido por el Bacon Brad 12.08.2017 - 00:57
fuente

Lea otras preguntas en las etiquetas