PDA

Ver la Versión Completa : Base de Datos LOCAL / ENCRIPTADA


yapt
22-06-2010, 09:24:23
Hola...

esta es una necesidad que, aunque todavía no me ha tocado implementar, estoy seguro que tarde o temprano me tocará. Me explico:

Una base de datos que tenga:
(Obligatorio)
- Acompañe a la propia aplicación y no ocupe mucho espacio ni sea engorrosa de instalar.
- Que sus datos estén encriptados con estandares (DES, 3DES, AES, etc..).
- Que su comunicación esté encriptada también.
- Open Source
- Free.

(opcionales)
- Que sea ACID (http://es.wikipedia.org/wiki/ACID)

(mucho mas opcional)
- Que pueda ejecutar procedimientos almacenados.

He usado alguna vez SQLite. Pero adolece de la encriptación (solo está para usarla con C y, además, es de pago). He tratado de buscar información sobre Firebird embebbed y parece algo "antiguo" o sin mucha información (o yo no la he encontrado).

Se admiten sugerencias. :)

Gracias.

Casimiro Notevi
22-06-2010, 10:01:26
Si es local te sirve firebird "embebed" o como se escriba. Sólo has de añadir unos ficheritos junto a tu programa.
Zebedee (http://www.winton.org.uk/zebedee/manual.html) comprime y encripta las conexiones, pero... eso, las conexiones... y si es local... :confused:
Supongo que esos requerimientos ¿son de algún paranóico con sus datos, le vayan a robar los precios de sus artículos o el nombre de sus proveedores?.
Es que si va a usarse en un sólo ordenador, en local, sin red ni nada, el único problema es que hagan una copia de la base de datos y se la lleven. Pues que quite el grabador de cds y desactive los puertos usb :)

yapt
22-06-2010, 11:08:23
Si es local te sirve firebird "embebed" o como se escriba. Sólo has de añadir unos ficheritos junto a tu programa.
Zebedee (http://www.winton.org.uk/zebedee/manual.html) comprime y encripta las conexiones, pero... eso, las conexiones... y si es local... :confused:

Me falta la encriptación... ;)

Supongo que esos requerimientos ¿son de algún paranóico con sus datos, le vayan a robar los precios de sus artículos o el nombre de sus proveedores?.

O las formulas químicas de su propiedad, registradas con patente internacional, que permanecen encerradas (junto con este software) en una caja fuerte (conectada a la policia), dentro de un cuarto de máxima seguridad, grabado y vigilado día y noche. Formulas que, puestas en producción, representan el total de sus ingresos y que dan de comer a más de 3000 familias en todo el mundo.

Hay de todo en la viña del señor... :o Y hay empresas que hacen cosas importantes que todavía confian en Delphi (o en los técnicos que les aconsejan).

Salu2

Ñuño Martínez
22-06-2010, 11:14:25
Sobre la encriptación, tal vez no sea necesario encriptar la conexión si no los datos. Es decir, codificas los datos antes de enviarlos a la base de datos y los decodificas una vez obtenidos. En pseudocódigo:

VAR
Dato: STRING
BEGIN
Dato := 'Este es el dato'
TablaDatos.Campo := FuncionCodificadora (Dato, ClaveCodificacion)

{ ... }

Dato := FuncionDecodificadora (TablaDatos.Campo, ClaveDecodificacion)
END


Incluso el nombre de las tablas y los campos puede estar codificado de alguna forma:

SQLQuery.SQL := 'SELECT '+FuncionCodificadora ('NombreCampo', ClaveCodificacion).' FROM '+FuncionCodificadora ('NombreTabla', ClaveCodificacion)


Claro que el problema aquí está en que el nombre de los campos y tablas seguiría existiendo de forma legible en el ejecutable, pero hay formas de codificar dichos nombres "estáticamente" antes de compilar.

Se me entiende la idea, ¿no?

yapt
22-06-2010, 11:21:41
Si, si... la idea está clara. De una forma muy básica, es como está hecho ahora.

El gran problema de esto es que pierdo todas las funcionalidades de la base de datos (indices, consultas SQL, etc...) y, aunque para el tema que reflejaba arriba, esto no es importante, si que lo es para otros proyectos con requerimientos "medios" de seguridad.

Saludos

Casimiro Notevi
22-06-2010, 11:56:26
Me falta la encriptación... ;)
Zebedee (http://www.winton.org.uk/zebedee/manual.html) comprime y encripta ;)[..]

También puede encerrar el ordenador en un bunker de alta seguridad, así se ahorra el resto :)

Y nada de red local ni internet, evidentemente.

Ñuño Martínez
22-06-2010, 11:58:33
No estaba buscando, pero he encontrado por casualidad este gestor de bases de datos escrito en (Object) Pascal (http://www.elevatesoft.com/). Ni lo he probado, así que no sé si será fácil ni si se podrá modificar o algo para que haga lo que quieres hacer.

Otro es este: http://sourceforge.net/projects/tpflashfiler/ , pero te digo lo mismo que con el anterior: ni idea de si te servirá.

Casimiro Notevi
22-06-2010, 12:47:50
También se puede encriptar el disco, supongo que en windows existirá también, pero en linux es una posibilidad que se pregunta en la instalación, el que la partición esté encriptada, así si te lo roban... no pueden ver qué tiene.
En principio se pensó para los ordenadores portátiles, que son más fáciles de "perder"

fjcg02
22-06-2010, 12:55:37
Lo normal en estos casos es encriptar el disco con alguna herramienta que utilizan certificados instalados en dispositivos usb ocon dispositivos tipo token http://es.wikipedia.org/wiki/Token_de_seguridad. Si no los guardas juntos, te podrán robar el portátil, pero tendrán que formatearlo para poder usarlo.
Así al menos la informacion queda asegurada.

A mandar.

Saludos

yapt
22-06-2010, 22:53:47
No estaba buscando, pero he encontrado por casualidad este gestor de bases de datos escrito en (Object) Pascal (http://www.elevatesoft.com/). Ni lo he probado, así que no sé si será fácil ni si se podrá modificar o algo para que haga lo que quieres hacer.

Otro es este: http://sourceforge.net/projects/tpflashfiler/ , pero te digo lo mismo que con el anterior: ni idea de si te servirá.

Gracias Nuño, les echo un vistazo.

Perdon por el retraso en contestar, pero siguen sin llegarme las notificaciones vía mail.... sic...

yapt
22-06-2010, 22:56:05
Zebedee (http://www.winton.org.uk/zebedee/manual.html) comprime y encripta las conexiones, pero... eso, las conexiones...

Las conexiones.... :o


También puede encerrar el ordenador en un bunker de alta seguridad, así se ahorra el resto :)

Y nada de red local ni internet, evidentemente.

Todo eso ya lo tienen...... (y no es broma).... :-)

Casimiro Notevi
22-06-2010, 23:16:23
Las conexiones.... :o

Sí, las conexiones.

Jucho69
24-06-2010, 23:06:20
Hola a todos

A mi tambien me piden iguales caractweristicas con los programas que hago, ¿Y es posible que a Access se le pueda agregar esas caracteristicad de seguridad?.........sin matar a un gato.

Saludos

Ñuño Martínez
25-06-2010, 12:11:41
Sin matar a un gato... Difícil lo pones. ;)

Ahora bien, no uso Access desde el siglo pasado, más o menos (me encanta poder decir algo así :D), pero no recuerdo que el Access tenga una opción de codificar. Al menos no la versión "doméstica".

Casimiro Notevi
25-06-2010, 12:23:20
Sin matar a un gato... Difícil lo pones. ;)

Ahora bien, no uso Access desde el siglo pasado, más o menos (me encanta poder decir algo así :D), pero no recuerdo que el Access tenga una opción de codificar.
Al menos no la versión "doméstica".

¿Acaso existe alguna versión "salvaje"? :D

Ñuño Martínez
28-06-2010, 11:26:43
Ya sabes que Microsoft es muy dada a publicar sopocientasmil versiones con nombres como "home", "enterprise", y tal, capando las "home". A estas últimas no las llamaría yo "hogareñas", ¿o sí? :p

rrf
07-07-2010, 20:32:46
Hola.

Aunque no es gratuita, creo que la/s ultima/s version/es de Interbase incluyen la posibilidad de encriptar columnas en las tablas.

No lo he probado y solo lo menciono por un vago recuerdo de algunas caracteristicas que lei de publicidad de Interbase.

Por si te podria servir (aunque creo que indicaste que deberia ser gratuita).

Saludos.

yapt
10-07-2010, 12:59:11
Finalmente encriptaré las columnas críticas y manejaré la encriptación desde mi propia aplicación.

El único inconveniente a esto es que si encripto una columna de una tabla, ya no puedo hacer consultas SQL a esta columna, ni integrarla en indices, etc.. etc...

No es una óptima solución, pero es la que hay.

Gracias..