¿Cómo se usa un pimiento con contraseñas con sal?

3

¿Cómo se usa una pimienta (un número constante grande) después de que una contraseña haya sido salada con una sal mediante una función de hashing como bcrypt?

De la Guía de estudio oficial de Sybex CISSP, 8ª edición (2018):

  

Agregar un pimiento a una contraseña con sal aumenta la seguridad, lo que hace que sea más difícil de descifrar.

¿Un pimiento está simplemente concatenado al principio o al final de una contraseña con sal? ¿Está concatenado a la contraseña con sal, que luego se vuelve a hash?

    
pregunta BJ Peter DeLaCruz 13.11.2018 - 02:31
fuente

3 respuestas

4

Salt es una cadena aleatoria que se utiliza para mitigar los ataques de diccionario.

+-------+------------+-----------------------+
|  id   |    salt    |       hashed_pw       |
+-------+------------+-----------------------+
| user1 | 9060d63fe0 | hash(pass19060d63fe0) |
| user2 | 39b3cdd660 | hash(pass239b3cdd660) |
+-------+------------+-----------------------+

Pepper es una cadena fija que es más secreta que la sal, y esto mitiga los ataques de fuerza bruta en contraseñas con sal.

  

¿Un pimiento está simplemente concatenado al principio o al final de una contraseña con sal? ¿Está concatenado a la contraseña con sal, que luego se vuelve a hash?

Los pimientos no deben simplemente ser concatenados porque su objetivo es hacer imposible el forzamiento de la carne bruta. También debe ser hash.

Supongamos que las contraseñas abcd1234 y salt 9060d63fe0 . Si esos dos hash con bcrypt con round 9 , el resultado será $2a$09$T.FYSHNRG5W.EiS3ieAU/OqdnNLXtou3yZk98/ZJ0Y7JXAoFlVWKS .

Si de alguna manera el hacker brute fuerza la contraseña y logra encontrar el valor abcd12349060d63fe0 , el hacker sabrá que el valor de sal es 9060d63fe0 y la contraseña es abcd1234 porque salt está almacenado en la base de datos.

Pero supongamos que se aplica un pimiento. pimienta abab4321 , contraseña abcd1234 y sal 9060d63fe0 . Si el hacker logra con éxito las fuerzas brutas.  y encontrado abab4321abcd12349060d63fe0 , el hacker no podrá saber qué parte es el pimiento y cuál es la contraseña.

Los pimientos se pueden aplicar antes de hacer este tipo de hash:

+-------+------------+-----------------------------+
|  id   |    salt    |          hashed_pw          |
+-------+------------+-----------------------------+
| user1 | 9060d63fe0 | hash(pepperpass19060d63fe0) |
| user2 | 39b3cdd660 | hash(pepperpass239b3cdd660) |
+-------+------------+-----------------------------+

O después de hash como este

+-------+------------+--------------------------------------+
|  id   |    salt    |              hashed_pw               |
+-------+------------+--------------------------------------+
| user1 | 9060d63fe0 | hash(pepper + hash(pass19060d63fe0)) |
| user2 | 39b3cdd660 | hash(pepper + hash(pass239b3cdd660)) |
+-------+------------+--------------------------------------+
    
respondido por el Moonsik Park 13.11.2018 - 03:25
fuente
1

En general, no se acuerda cómo usar un pimiento, si mejora la seguridad o lo que significa el término "pimiento".

  • La mayoría de las fuentes indican que el pimiento debe estar integrado en el hachís. Sin embargo, Dropbox optó explícitamente por usar el cifrado en lugar del hashing , ya que esto permite que la pimienta se cambie fácilmente.
  • La mayoría de la gente sugiere guardar el pimiento en algún lugar. Sin embargo, es también posible para hash un poco de datos junto con la contraseña y luego deséchelos, no los almacene. Esto significa que cuando se debe verificar la contraseña, la pimienta debe ser forzada. Este dato aleatorio que no se almacena también se conoce como pimienta, lo que crea confusión con el tipo almacenado.
  • Algunas personas argumentan que si sus hashes se ven comprometidos, toda su aplicación se verá comprometida, por lo tanto, el pimiento también se verá comprometido si lo almacena dentro de su aplicación. Esto significaría que el pimiento no ofrece ninguna seguridad real.
  • Las funciones de hash para contraseñas a menudo tienen soporte para sales pero no para pimientos. Esto significa que tienes que inventar alguna forma de poner la pimienta en ti mismo. Esta es generalmente una mala idea con la criptografía y puede llevar a problemas graves .

Concluyendo, no creo que haya consenso sobre si las aplicaciones deben usar un pimiento o no. La mayoría de las aplicaciones que he visto no incorporan una pimienta en su algoritmo de hashing de contraseña.

    
respondido por el Sjoerd 13.11.2018 - 11:58
fuente
0

Hay una forma mejor de agregar una clave del lado del servidor al procedimiento de hashing de contraseña. En lugar de agregarlo a la contraseña antes del hash, puede cifrar el hash de contraseña ya calculado.

  1. La clave se puede intercambiar siempre que sea necesario (descifre todos los hashes de contraseña y vuelva a cifrarlos con la nueva clave).
  2. Obtienes las mismas ventajas que con un pepper, el atacante necesita privilegios adicionales en el servidor para obtener la clave / pepper, solo los hashes no son suficientes.

Tenga en cuenta que un pimiento protege las contraseñas solo mientras la clave / pimiento permanezca en secreto, un escenario típico es la inyección SQL.

    
respondido por el martinstoeckli 13.11.2018 - 08:43
fuente

Lea otras preguntas en las etiquetas