Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Guardar claves de acceso de forma segura (https://www.clubdelphi.com/foros/showthread.php?t=65845)

yapt 16-01-2010 20:33:15

Guardar claves de acceso de forma segura
 
Hola a todos,

esto es más una duda teórica que un problema real, pero me gustaria comentarlo con vosotros a ver que opinais.

Se trata de guardar las claves de acceso (por ejemplo) a la base de datos de una aplicación, en un archivo .INI (o xml, CSV, o lo que sea). De forma tal que:
1.- Deben poder ser "modificables" por el usuario (a través del propio software).
2.- Deben ser guardadas de una forma segura en un archivo INI. Vamos que no sean directamente "leibles".

Quien más, quien menos, "encriptamos" esas claves de formas "propias" para que no se puedan leer. Luego, nuestro software desencripta el asunto y aplica las claves a la cadena de conexión de la base de datos. Voala.

Pero claro, esto es una solución "Security by Obscurity" y no me gusta mucho.

De qué modo debemos guardar una "clave de acceso" en un fichero de Texto ?

La primera solución que se viene a la mente es utilizar 3DES o DES o AES o cosas semejantes. Pero son encriptadores simétricos y, por tanto, la clave para desencriptar debe estar en algún sitio (dentro del programa, claro), con lo que volvemos al inicio de este pequeño dilema (donde guardar la clave que encripta/desencripta las claves).

La segunda solución, es utilizar una clave asimetrica (RSA o similar). Pero si queremos que el usuario pueda modificar esas claves, grabarlas y volver a leerlas, tendremos que proveer la clave PRIVADA en algún sitio de la aplicación. Así que volvemos al punto inicial.

No sé. Simplemente quería abrir este hilo para que me aporteis las ideas que se os ocurren a vosotros.

Salu2.

Delphius 16-01-2010 20:39:12

Hola yapt,
No me parece adecuado que se guarde en un archivo de texto... como que es algo inseguro. Deberías considerar otras alternativas.

Tampoco es recomendable guardar la clave cifrada, en todo caso a lo que se recurre es guardar su valor Hash. Como debes saber, estos algoritmos no son reversibles, de modo que no es posible obtener el "texto" original de su hash.

¿Cómo se valida? Simplemente cuando el usuario se loguea, se obtiene el hash del texto que ha ingresado como contraseña. Si es el mismo al guardado (sea donde sea...:rolleyes:) se da por entendido que el usuario ha sido identificado y correctamente logueado.

Saludos,

yapt 16-01-2010 22:51:53

Hola Delphius,

me parece que me he explicado mal. :o

No se trata de que el usuario entre su clave de acceso, cada vez, para acceder a la base de datos (por ejemplo).

Se trata de que la clave debe quedar GUARDADA en algún sitio puesto que es la clave de acceso a la base de datos, por ejemplo.

Imaginemos, 1000 usuarios, atacando a un sistema de base de datos transaccional. Evidentemente no les dás la clave de la base de datos a todos los usuarios (aunque he visto algunos sistemas donde lo hacen así).

Lo que hacemos es lo siguiente:

1.- Conectamos a la Base de datos (con la clave que está guardada en algún sitio). Esto es "invisible" al usuario.
2.- Solicitamos, ahora si, el usuario y clave de "autenticación" del usuario (seguramente se comprueba -por la aplicación- contra alguna tabla de la base de datos a la que YA estás conectado).
3.- Si todo es correcto, vamos para delante.

El punto flaco, es el punto 1. Donde y como guardamos esa clave (que el usuario normalmente no debe conocer, aunque si que la conoce el dpto. de sistemas o el administrador del sistema).

Espero haberme explicado mejor. :rolleyes:

Un saludo.


La franja horaria es GMT +2. Ahora son las 01:57:07.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi