¿Es seguro almacenar el código de acceso seguro del usuario en la base de datos con forma encriptada mientras se crea la billetera bitcoin?

Me gustaría crear una billetera Bitcoin.

Parte del proceso es almacenar claves públicas y privadas en forma cifrada en la base de datos del servidor.

Todas las claves que estoy almacenando están encriptadas usando el código de acceso del usuario .

1) ¿Es seguro almacenar el código de acceso del usuario en forma cifrada en la base de datos del servidor? (Pensando que el usuario podría olvidar su código de acceso, así que considere una opción de recuperación)

2) ¿Existe algún tipo de posibilidad futura de que me meta en problemas si ocurre algún tipo de ataque o por la acción de algún intruso/administrador (la peor posibilidad): la clave revelada al atacante que conducirá al acceso y abrirá todo el pub /claves privadas de la base de datos de ese usuario específico? De esta manera, no puedo dar la opción de olvidar el código de acceso al usuario.

Entonces, considerando ambas opciones, ¿debo almacenar el código de acceso del usuario o no?

¿Cuál es la mejor práctica para implementar esta característica de seguridad en la billetera bitcoin?

Respuestas (1)

La mejor práctica es almacenar solo un hash de una contraseña, no la contraseña en sí. También debe incluir una sal aleatoria antes del hashing. Debe tener en cuenta qué algoritmos hash conocidos ya no se consideran seguros para este uso.

Cifrar la contraseña antes de almacenarla no es una buena estrategia porque termina con una clave de cifrado, almacenada en algún lugar como texto sin formato, que puede desbloquear todas las contraseñas de los usuarios. Este es un regalo para los piratas informáticos.

Debe cuidar cómo mantiene la contraseña en la memoria para usarla al cifrar y descifrar otros datos (claves, etc.). Por ejemplo, debe asegurarse de que otros procesos y complementos no puedan ver el espacio de memoria de sus procesos y que, antes de liberarse, se borre toda la memoria asignada. Esto debería ser automático con la mayoría de los sistemas modernos, pero es su responsabilidad asegurarse de ello.

Sí, un aficionado que intenta escribir un código de seguridad es probablemente una buena manera de destruir su negocio, destruir su reputación y ponerse en el camino de procedimientos civiles o penales por negligencia.

Para ser honesto, es mejor hacer esta pregunta en algún lugar como Security.stackexchange. No hay nada específico de Bitcoin sobre esto.