Hashear una contraseña y sumarla con cada byte en un archivo. ¿Qué tan seguro?

2

Tengo un documento de texto con todos mis nombres de usuario y contraseñas en mi escritorio. Decidí pasar un par de horas para hacerlo más seguro. Escribí un programa para el propósito. Toma una contraseña y un archivo, SHA-512s la contraseña y agrega cada byte de la misma al archivo en trozos de 64 bytes. Sustrae para descifrar. Me doy cuenta de que esto se derrumba si dos hash se suman a 256 por cada byte y que esto también es solo de fuerza bruta si sabes qué esperar. ¿Hay alguna otra falla de seguridad?

    
pregunta Scruffy 07.02.2015 - 00:48
fuente

2 respuestas

6
  

esto solo es de fuerza bruta si sabes qué esperar

Detente justo ahí. Lo que estás describiendo es seguridad a través de la oscuridad. Estás apostando a que un atacante no podrá saber o adivinar tu esquema. Esta es una suposición realmente, muy, realmente terrible. Es fascinante, pero una y otra vez se ha demostrado que está mal. Cualquier esquema de seguridad adecuado debe funcionar incluso si el atacante conoce el sistema que está utilizando; un atacante que sabe todo, pero su contraseña no debería poder atacar prácticamente el sistema.

Entonces, descartando la suposición de que un atacante no conoce su esquema: la seguridad es francamente terrible. Primero, es muy simple para un atacante que aprende parte del texto simple para usarlo para recuperar otras partes, porque agrega lo mismo a cada fragmento de 64 bytes. Un atacante que obtiene una contraseña suya puede ver lo que significa tenerla en una sección del texto cifrado; específicamente, si asumen que está en la posición X, pueden restarlo del texto cifrado y obtener una parte potencial de la secuencia de teclas, y luego probar esa secuencia de teclas en otro lugar.

Segundo, tu programa es bastante vulnerable a la fuerza bruta. SHA-512 es un hash extremadamente rápido. Los hashes rápidos son geniales, en general: significan que su criptografía es más rápida, lo que significa que tiene menos gastos generales, lo que significa que es más probable que pueda usar la criptografía en cualquier lugar con un rendimiento aceptable. Pero son terribles para las contraseñas, porque las contraseñas son casi invariablemente de baja entropía. Con SHA-512, un atacante que recupera el archivo puede forzar contraseñas de fuerza bruta extremadamente rápido. Los hash utilizados para las contraseñas deben ser lentos: lo que está haciendo es la baja entropía, por lo que su hash debe demorarse un poco en ejecutarse para que esto sea más lento. Una GPU puede calcular millones de hashes SHA-512 por segundo; el descifrado también es rápido, por lo que no es adecuado para resistir la fuerza bruta.

No debes usar este esquema. Más bien, debes usar la criptografía adecuada. Si tuviera que construirlo usted mismo, esto se vería como un cifrado seguro real (por ejemplo, AES en un modo apropiado), con la clave derivada con una función lenta (por ejemplo, PBKDF2). ¿Puede funcionar tu esquema? Bueno, si su contraseña es muy alta en entropía, posiblemente, en el nivel extremo, si su contraseña es una cadena verdaderamente aleatoria de 128 bits, también puede usarla directamente como clave para AES. Pero es probable que tu contraseña sea más débil de lo que crees, por lo que solo debes usar un hash lento.

Sin embargo, tampoco debes hacer eso . La criptografía es realmente difícil de implementar correctamente. Siempre que sea posible, debe usar sistemas seguros bien probados en lugar de codificar algo usted mismo. Por ejemplo, podría usar GPG para cifrar el archivo; También puede usar una herramienta de administración de contraseñas (estoy bastante seguro de que existen herramientas que ni siquiera almacenan datos encriptados en la nube, sino que son completamente locales). No implementes tu propio sistema a excepción de la práctica; Si lo hace, no use el esquema descrito aquí.

Si observa su otra pregunta , parece que aún cree que puede ocultar su esquema de un atacante y confiar en él " No, no se darán cuenta de lo que estoy haciendo ". Por lo tanto, aquí hay algo más allá de la (completamente suficiente) "seguridad por oscuridad no es efectiva:" La única razón para preocuparse por un atacante que desencripta su archivo es que ya tienen tienen el archivo. Eso significa que no pudo mantener seguro un archivo en su computadora. Su programa también es un archivo en su computadora. ¿Por qué asumir que puede mantenerlo seguro, incluso si el archivo que contiene las contraseñas no lo está?     
respondido por el cpast 07.02.2015 - 04:17
fuente
3

Está cifrando su documento con un cifrado polialfabético (el más conocido es Cifrado Vigenere ). Las técnicas para romperlas se conocen desde mediados del siglo XIX. El tuyo es particularmente vulnerable ya que el número de alfabetos (64) es fijo, y los alfabetos son rotaciones simples (en lugar de aleatorias).

Si realmente desea proteger sus contraseñas, use el cifrado moderno implementado por alguien que sepa lo que está haciendo. Obtenga un administrador de contraseñas o use un software de cifrado de archivos.

    
respondido por el Mark 07.02.2015 - 05:38
fuente

Lea otras preguntas en las etiquetas