2009-02-17 23 views
9

En mi última pregunta "Base de datos portátil para almacenar secretos" the best answer until now dicen usar sqlite-crypt.¿Cómo no codificar contraseñas?

Al leer documentos sqlite-crypt, el nuevo parámetro para abrir la base de datos es la frase de paso. Por supuesto, no quiero hardcode la contraseña, ¿por qué estaba pensando cuál es el mejor, simple y rápido método para almacenar esa contraseña?

Respuesta

3

Usted muy bien tener para almacenarlo en un usuario.

De lo contrario no eres más que la sustitución de algún otro mecanismo de seguridad para el que usted está preguntando por ...


David's point in the comment on Infamy's answer es bien recibida. Se debe permitir cierta flexibilidad, en caso de que el usuario maneje la protección en una capa inferior ... Por lo tanto, vaya a votar por Infamy.

11

Algunas opciones.

  1. pedir al usuario que introduzca una contraseña (también conocido como memorizan una contraseña para acceder a todo su contraseña) (buena idea)

  2. crear una clave en la primera puesta en marcha de la aplicación, que se hash entonces en su propia manera única (mala idea)

  3. utilizar una mezcla de lo anterior, también conocido como dar a los usuarios las opciones de uno, o dos (recordar mi contraseña casilla de verificación)

+0

+1 para # 3. Algunos usuarios pueden tener implementados esquemas de seguridad alternativos (por ejemplo, cifrado de disco completo) que hacen que el almacenamiento de la contraseña en un archivo de configuración tenga un riesgo aceptablemente bajo para ellos. –

+0

@David: buen punto ... – dmckee

2

La codificación es inevitable en algún momento, a menos que la contraseña solo se use de forma interactiva.

Lo mejor que puede hacer en una situación de contraseña en el archivo es dificultar el acceso en primer lugar, y luego limitar lo que se puede hacer con él si alguien lo encuentra. Una regla práctica es que no debe otorgar más privilegios a una contraseña almacenada en una cadena que la que debe escribir en un aviso.

2

En Windows puede/debería usar DPAPI, Data Protection API que proporciona cifrado de almacenamiento.
Está ahí solo para este tipo de problema.

cifrado del almacenamiento se basa en cualquiera de los dos:

  • la cuenta de usuario, por lo que sólo el usuario que ha iniciado sesión en el se puede acceder a los datos. Esto hace que los datos sean transferibles a otra PC con exactamente las mismas credenciales de usuario.
  • la máquina, por lo que los datos solo son accesibles en esa configuración particular de la máquina y no son transferibles a otra PC.

Hay un dnrTV show with Karl Franklin que muestra exactamente lo que se necesita para implementar esto y otras funciones de cifrado.
El código fuente del programa también está disponible en la página.

Hay, por supuesto, muchas other articles sobre ese tema.