Me gusta almacenar algunas configuraciones pero las cifraría con el cifrado Serpent. ¿Es seguro hacer esto? Cuando no, ¿cuál es una mejor solución?
Me gusta almacenar algunas configuraciones pero las cifraría con el cifrado Serpent. ¿Es seguro hacer esto? Cuando no, ¿cuál es una mejor solución?
No creas una clave con una función hash. Se crea una clave con aleatoriedad . O, quizás, usted derive una clave de otro valor secreto, utilizando una Función de derivación de claves .
Normalmente se define un algoritmo de cifrado simétrico para aceptar "claves binarias": cualquier secuencia de bits de algún tamaño específico es aceptable como valor clave. Cuando un algoritmo de encriptación acepta una clave binaria, entonces cualquier KDF seguro que produzca tales secuencias de bits no sesgadas puede usarse para producir la clave.
sospecho que está intentando hacer cifrado basado en contraseña : para derivar una clave de una contraseña , y luego usar la clave Con un algoritmo de cifrado simétrico. Si ese es el caso, entonces hágase un favor: use un protocolo / formato existente, no intente diseñar uno por sí mismo. Estas cosas son sutiles . Nadie sabe realmente cómo hacer un protocolo seguro desde el primer intento, o al menos asegurarse de que lo que diseñaron sea seguro (no se puede probar). Así que lo más inteligente es usar algo que ya ha sido diseñado y revisado en gran medida por muchas otras personas. Sugiero OpenPGP .
Aún mejor, si usa un formato estándar, puede que desee utilizar una biblioteca ya existente que haga todo el trabajo por usted. Sucede que escribir una implementación segura, incluso a partir de un protocolo estándar, también es muy difícil. El código que es más fácil de escribir correctamente es el que ya se ha escrito correctamente. En el caso de OpenPGP, esto apunta a GnuPG . O BouncyCastle si trabajas con Java.
Lea otras preguntas en las etiquetas passwords hash cryptography