
Cifrar una base de datos
#1
Posted 04 July 2012 - 03:18 PM
Existe alguna forma de cifrar una base de datos hecha en firebird que permita que la información solo pueda ser leida por mi aplicación.
Gracias por sus respuestas
#2
Posted 04 July 2012 - 03:38 PM
Sugiero la lectura del manual Firebird File and Metadata securitity que puedes encontrar aquí.
Justamente en dicha documentación se discute este tema.
No es del todo aconsejable cifrar una base de datos, ya que esto requiere de un proceso más lento ya que se requiere Cifrar y Descifrar constantemente la base de datos. Otro de los motivos de porqué no es del todo aconsejable es que en caso de que el algoritmo de descifrado fallara en algún momento la información original podría ser irrecuperable.
Además Firebird nunca va a contemplar incorporar cifrado en el motor, es una base de datos Open Source.
Existe una posibilidad, que se da a conocer en dicho artículo, que es hacer que el contenido del disco se cifre/descifre cuando el server se apaga/inicia. De este modo desde los clientes pueden recuperar la información.
La seguridad de las bases de datos de Firebird, por el momento (se esperan nuevas mejoras e implementaciones para la versión 3), fue pensada para un servidor dedicado y depende del acceso al archivo.
Lo que puedes hacer es que tu propio sistema cuente con un algoritmo de cifrado/descifrado y que guardes UNICAMENTE la información sensible cifrada. La desventaja de esta técnica es que ahora todo el proceso pasa por tu cliente y si para dicha información sensible estabas pensando implementar operaciones a nivel server (como triggers, sp, vistas, o hasta una simple consulta) pierdes esta capacidad ya que no es capaz de obtener el contenido original.
Sinceramente no vale mucho la pena cifrarla, trae por lo general más desventajas. Ahora si existe una estricta necesidad de ello, pues...
Saludos,
PD: Ha... ¡Por favor! Hagan un esfuerzo para no seguir "vendiendo" el término encriptar/desencriptar... ¡NO ES CORRECTO!
#3
Posted 04 July 2012 - 03:52 PM
La información me sirve mucho espero poder cifrar los datos y ojala no tenga problemas con el rendimiento.

#4
Posted 04 July 2012 - 05:20 PM
Además Firebird nunca va a contemplar incorporar cifrado en el motor, es una base de datos Open Source.

#5
Posted 04 July 2012 - 06:53 PM
Hola Domingo,
¿y que tiene que ver que sea Open Source para que cifre o no los datos?
NO recuerdo bien como lo expresa el artículo pero los principales motivos de porqué no incluye cifrado, relacionado con el concepto de Open Source, es que:
1) Consideran que el producto es abierto, y fomentan el pensamiento abierto. ¿Para que ocultar y cifrar si la intención es que compartir? Se considera al cifrado como una situación contraria a su pensamiento, cuando lo que buscan es que el conocimiento esté al alcance.
2) Además, debido a que es Open Source, de implementar el cifrado éste también sería Open Source, y consideran que esto podría ser una puerta más de inseguridad, o de más interés para ataques. De que serviría cifrar si alguien más puede saber como está implementado y con el tiempo romperlo.
3) Haría más difícil su desarrollo y podría afectar al rendimiento, ya que requeriría de técnicas más elaboradas.
4) Los objetivos de Firebird es ser simple pero poderoso.
Directamente, consideran que no está en la mesa de discusión la posibilidad de cifrado. Si alguien quiere, que haga un fork (que lo hubo) o lo implemente por otra vía.
Saludos,
#6
Posted 05 July 2012 - 12:55 AM
Otra cosa es que no lo implementen porque haría mucho mas lento el sistema y no tiene mucho sentido en un ambiente cliente-servidor, donde se supone que solo el administrador tiene acceso físico al servidor, y por lo tanto a los ficheros en disco de la base de datos. Con un esquema así, la propia seguridad de firebird (usuarios, contraseñas) llegaría para mantener la información segura.
Saludos
#7
Posted 05 July 2012 - 08:00 AM
No entiendo muy bien esos argumentos, ya que los algoritmos de cifrado mas fuertes y seguros son precisamente de código abierto (AES, Blowfish, Serpent, etc ...) y en eso precisamente reside su fortaleza, porque son revisados por cientos de personas todos los días buscando sus puntos débiles.
Sabemos que los algoritmos de cifrados son abiertos, yo también me pregunto de esas cuestiones. Yo más que nada intenté expresar de manera burda, lo que más o menos recuerdo de lo que leí en dicho documento.
Saludos,
#8
Posted 05 July 2012 - 01:58 PM
Verifiquen la fecha de creación, tipo, estatus y resolución.
Info http://tracker.fireb...omment-tabpanel
Saludos.
#9
Posted 05 July 2012 - 04:21 PM
bueno buscando, buscando hay un código que envía la información ya cifrada a la bd.
Pagina: http://delphi.jmrds.com/?q=node/44
Al hacer la prueba funciona bien; pero haciendo algunas pruebas al cifrar se usa una variable de tipo string llamada clave, que se usa en las function Cifrar y Descifrar; a esta le doy un valor, en el caso del ejemplo se le da el valor de '1234567890'. Guardo unos datos con esta clave, al cambiarla (prueba); el aplicativo me muestra los datos cifrados y al volverla a dejar como estaba ('1234567890') se pierden unos datos, caracteres. No se si me explique bien......
dejo este dato para los que les interesa cifrar información, no se si sera la mejor forma de hacerlo.
Estaré mirando el inconveniente que les comente para publicarlo si es que alguno de ustedes no lo ha publicado primero. Gracias a todos por sus respuestas y sus comentarios me ayudan a interpretar muchas cosas.
#10
Posted 05 July 2012 - 04:49 PM
Al hacer la prueba funciona bien; pero haciendo algunas pruebas al cifrar se usa una variable de tipo string llamada clave, que se usa en las function Cifrar y Descifrar; a esta le doy un valor, en el caso del ejemplo se le da el valor de '1234567890'. Guardo unos datos con esta clave, al cambiarla (prueba); el aplicativo me muestra los datos cifrados y al volverla a dejar como estaba ('1234567890') se pierden unos datos, caracteres. No se si me explique bien......
¿Y como lo haces? ¿que código usas?
#11
Posted 05 July 2012 - 04:58 PM
#12
Posted 05 July 2012 - 09:27 PM

fredycc me dejas perplejo. Sabía que para la versión 3 se hablaba de un cambio en la seguridad pero no que entre sus mejoras tuviera algo de cifrado. Hasta donde yo sabía en lo referente a la seguridad de la DB ya no pase simplemente por el SO, sino también a nivel usuario y roles.
El tema del cifrado si que fue pedido y hasta hace unos años era totalmente descartado. Fíjate en el histórico de los comentarios en el traker que pusiste que ya se estaban expresando en como esto podría afectar al server. Creo, y me parece, que si se incorpora cifrado no será total sino a través de UDFs como lo he visto en uno de los comentarios, y no de una forma natural y por defecto.
Saludos,
#13
Posted 06 July 2012 - 12:18 AM
Se ve que "seoane" y "la web de seoane" no tienen nada que verFELIX no creo que al autor de dicho sitio le moleste eso




#14
Posted 06 July 2012 - 01:09 AM
...... ... en fin seguiré sin ver el código que utiliza, me quedare con las ganas
qué penita tan grande que me das




#15
Posted 06 July 2012 - 03:37 AM
http://www.slideshar...nt-in-2011-2012 (ver hoja 8)
#16
Posted 06 July 2012 - 08:08 AM
Vaya, voy a tener que volver a empezar a actualizarme y leer las noticias de firebird de nuevo. Lo que es estar atrás y acostumbrado a la 1.5.6FireBird 3 llevará encriptacion a nivel de base de datos y tambien entre el cliente y el motor (over the wire supongo que se refiere a eso), lo leí precisamente ayer en unas diapositivas del programador principal Yemanov sobre los avances del 2011/2012, y la encriptacion de bases de datos aparece como YA termnada:
http://www.slideshar...nt-in-2011-2012 (ver hoja 8)

Saludos,
#17
Posted 08 July 2012 - 02:53 AM
Firebird no lleva encriptación de datos, porqué no lo necesitas para asegurar tu base de datos, para eso ya tienes al sistema operativo. Solo tienes que cifrar en Windows la base de datos y darle permiso de acceso al archivo únicamente a la cuenta de usuario que ejecuta el servicio de Firebird (ni siquiera el Administrador del Sistema debe tener acceso al archivo de datos). Por supuesto la contraseña de la cuenta de usuario que ejecuta Firebird solo la deberías conocer tú.
Con eso tu base de datos está totalmente asegurada y es imposible que ningún usuario te robe tu información, incluso aunque sean Administradores y tengan acceso físico al Servidor (tendrían que romper el cifrado del mismo sistema de seguridad de tu Windows).
NOTA: Naturalmente tienes que cambiar la contraseña de la cuenta SYSDBA de Firebird y no olvides también asignar los permisos de acceso de la carpeta del mismo Firebird con acceso solo para la cuenta de usuario de Firebird que únicamente tu conoces. De esta forma no te podrán sustituir el archivo de seguridad de Firebird security2.fdb por un archivo de seguridad estándar con el que podrían acceder simplemente mediante SYSDBA-masterkey.
Saludos.