¿Cuál es el mejor método?
Supuesto: Tengo una función que genera un número de bytes de entropía medio-alto
-
Paso 1: Genero 3 de estos bytes de entropía medio-alto.
-
Paso 2: Hago estos bytes usando un algoritmo criptográfico fuerte conocido (sha256)
-
Paso 3: Corté una subcadena del resultado.
-
Paso 4: Utilizo esta cadena como mi sal (sal de 3 bytes)
Entonces, puedo hacer:
-
Paso 1 y 4;
-
1, 2, 3 y 4;
-
1, 3 y 4; etc.
La pregunta es ¿cuál de estas operaciones aumenta la entropía y cuál no?
Algún código:
function delicious_delicious_salt()
{
$string = openssl_random_pseudo_bytes(3);
//Do I hash this? Do I generate a longer byte string and cut it?
return $string;
}
Lo que en realidad no sé
¿Pasar bits pseudoaleatorios a través de un algoritmo de hash y cortar un conjunto pseudoaleatorio de bits de la salida produce bits de alta entropía?
Quiero implementar una función de generación de sal para mis hashes de contraseña SHA256 en mi servidor web, y como ejercicio, según mi propio entendimiento, quiero que sea criptográficamente seguro, ya que razonablemente puedo hacerlo sin enloquecer (y tomar entropía codificada a partir de HID (mouse, micrófono, video)).