Cifrar base de datos

15/05/2010 - 21:41 por Jose Carlos | Informe spam
Buenas tardes a todos y gracias por su ayuda de antemano.

Mi problema es que hasta ahora siempre he trabajado con bases de datos acces
y nunca las he cifrado o protegido con contraseña. Pero ahora me encuentro
con que tengo una pequeña aplicación en la que se guardan datos personales y
médicos y por la Ley de protrección de datos este tipo de datos siempre
deben ir protegidos por una clave y ir cifrados. El acceso a la aplicación
por usuario y contraseña lo tengo controlado, pero no se como hacerlo
exactamente con la base de datos, ya que si localizas esta base en el
directorio de la palicación la puedes abrir con el acces.
Si le pongo una contraseña a la base de datos, ¿Tendré que pasarle la
contraseña en cada recordset que abro en la aplicación? ¿O hay alguna forma
de "desproteger" la base de datos mientras la palicación esté abierta y
luego volver a "protegerla" al cerrar la palicación?

Un saludo y gracias de antemano

Jose Carlos Garcia

Preguntas similare

Leer las respuestas

#6 aa
17/05/2010 - 22:48 | Informe spam
Yo me pasaria a sql express 2008 que tiene encriptacion propia.
"Jose Carlos" wrote in message
news:
Buenas tardes a todos y gracias por su ayuda de antemano.

Mi problema es que hasta ahora siempre he trabajado con bases de datos
acces y nunca las he cifrado o protegido con contraseña. Pero ahora me
encuentro con que tengo una pequeña aplicación en la que se guardan datos
personales y médicos y por la Ley de protrección de datos este tipo de
datos siempre deben ir protegidos por una clave y ir cifrados. El acceso
a la aplicación por usuario y contraseña lo tengo controlado, pero no se
como hacerlo exactamente con la base de datos, ya que si localizas esta
base en el directorio de la palicación la puedes abrir con el acces.
Si le pongo una contraseña a la base de datos, ¿Tendré que pasarle la
contraseña en cada recordset que abro en la aplicación? ¿O hay alguna
forma de "desproteger" la base de datos mientras la palicación esté
abierta y luego volver a "protegerla" al cerrar la palicación?

Un saludo y gracias de antemano

Jose Carlos Garcia
Respuesta Responder a este mensaje
#7 Victor Koch
17/05/2010 - 23:08 | Informe spam
Hola,

En Access lo único que tenes son dos características de seguridad:

1 Asignar una contraseña para que al intentar abrir la base de datos deba
ser ingresada. Hasta donde se yo para Access 97 hay millones de programas
gratis para obtener la contraseña, pero ya para Access 2000 o superior la
cosa es bastante mas complicada, en otras palabras es mucho mas segura.

2.Codificar o decodificar base de datos, esto sirve para que al abrir la
base de datos con algún programa editor, por ejemplo el block de notas, no
puedas ver la información de los campos definidos como texto o
alfanuméricos. Por ejemplo si tenes una tabla de clientes seguramente vas a
tener un campo para la razón social, si bien al abrir la base de datos con
el block de notas no vas a poder ver la estructura ni cosas por el estilo si
vas a poder ver el valor ingresado en la razón social.

Si de seguridad se trata Access no es la mejor opción, pero tampoco se puede
obligar a un consultorio a comprar una base de datos con un nivel de
seguridad que requiera de expertos.

Para mi con agregarle contraseña y codificación con el mismo Access cumple
con los requisitos.

Un Saludo, Víctor Koch



"Jose Carlos" escribió en el mensaje
news:
Gracias Victor, no había pensado en este asunto. Pero si al final tengo
que encritar la base de datos ¿Alguna sugerencia?

Gracias.


"Victor Koch" <v i c t o r
(arroba)correo(punto)waldbott(punto)com(punto)ar> escribió en el mensaje
de noticias news:%
Hola

Si te inclinas por guardar los datos encriptados manualmente en la base
de datos olvídate del 98% de los beneficios de una base de datos, por
ejemplo la simple tarea de pedirle a la base de datos un conjunto de
registros ordenado.

Un Saludo, Víctor Koch



"gustavo gutierrez" escribió en el mensaje
news:
On 15 mayo, 14:41, "Jose Carlos" wrote:
Buenas tardes a todos y gracias por su ayuda de antemano.

Mi problema es que hasta ahora siempre he trabajado con bases de datos
acces
y nunca las he cifrado o protegido con contraseña. Pero ahora me
encuentro
con que tengo una pequeña aplicación en la que se guardan datos
personales y
médicos y por la Ley de protrección de datos este tipo de datos siempre
deben ir protegidos por una clave y ir cifrados. El acceso a la
aplicación
por usuario y contraseña lo tengo controlado, pero no se como hacerlo
exactamente con la base de datos, ya que si localizas esta base en el
directorio de la palicación la puedes abrir con el acces.
Si le pongo una contraseña a la base de datos, ¿Tendré que pasarle la
contraseña en cada recordset que abro en la aplicación? ¿O hay alguna
forma
de "desproteger" la base de datos mientras la palicación esté abierta y
luego volver a "protegerla" al cerrar la palicación?

Un saludo y gracias de antemano

Jose Carlos Garcia



Hola, Puedes ponerle contraseña a la bdd y pasársela en la cadena de
conexión. Con esto ya no se puede abrir desde access sin conocer la
contraseña. El problema es que hay programas para romper las
contraseñas de access. Entonces lo mejor sería poner la contraseña ya
adicionalmente usar una rutina de encriptación al grabar todos los
datos y una de desencriptación al leerlos. si usas una función
sencilla:

Public Function Crypto(strEnt As String) As String
Dim i As Integer
For i = 1 To Len(strEnt)
Mid(strEnt, i, 1) = Chr(Asc(Mid(strEnt, i, 1)) Xor 255)
Next
Crypto = strEnt
End Function

a la cual le pases los datos antes de grabar. Si usas ADO:

rs.AddNew
rs!Clave = "" & Crypto(text(0).text)
rs!Nombre = "" & Crypto(text(1).text)
rs!Codigo = "" & Crypto(text(2).text)

al recuperar los datos se usaría la misma función:

text(0).text = "" & Crypto(rsClave)
text(1).text = "" & Crypto(rsNombre)
text(2).text = "" & Crypto(rsCodigo)

De esta forma, el fisgón tendría dos trabajos: 1.- Conseguir el
programa para crackear las claves de access (hay de paga). y 2.- al
abrir la bdd tendría que buscar la forma de desencriptar los datos.
desde luego que en la función de encriptador puedes llevarla a una
complejidad tal que se le haga extremadamente difícil la tarea y esto
lo desanime si no dispone de mucho tiempo. Se me ocurre que antes de
encriptar aumentes la complejidad del texto invirtiéndolo y además
insertándole una frase basura: tomas los caracteres del texto y cada
cierto número de caracteres le insertas uno de la frase basura, misma
que previamente invertiste. Con esto obtienes un texto con
alteraciones previas. A continuación se lo pasas a la función de
encriptado y lo grabas en la base de datos. Para sacar los datos haces
el proceso inverso. Son solo ideas que a mi me han funcionado, algo de
esto te podría servir.

Saludos!

Gustavo Gutiérrez M.
Puebla, Pue. MEXICO




Respuesta Responder a este mensaje
#8 Jose Carlos
17/05/2010 - 23:16 | Informe spam
Gracias por tu sugerencias, las usaré en este proyecto.

Un saludo.


"Victor Koch" <v i c t o r (arroba)correo(punto)waldbott(punto)com(punto)ar>
escribió en el mensaje de noticias
news:e5$
Hola,

En Access lo único que tenes son dos características de seguridad:

1 Asignar una contraseña para que al intentar abrir la base de datos deba
ser ingresada. Hasta donde se yo para Access 97 hay millones de programas
gratis para obtener la contraseña, pero ya para Access 2000 o superior la
cosa es bastante mas complicada, en otras palabras es mucho mas segura.

2.Codificar o decodificar base de datos, esto sirve para que al abrir la
base de datos con algún programa editor, por ejemplo el block de notas, no
puedas ver la información de los campos definidos como texto o
alfanuméricos. Por ejemplo si tenes una tabla de clientes seguramente vas
a tener un campo para la razón social, si bien al abrir la base de datos
con el block de notas no vas a poder ver la estructura ni cosas por el
estilo si vas a poder ver el valor ingresado en la razón social.

Si de seguridad se trata Access no es la mejor opción, pero tampoco se
puede obligar a un consultorio a comprar una base de datos con un nivel de
seguridad que requiera de expertos.

Para mi con agregarle contraseña y codificación con el mismo Access cumple
con los requisitos.

Un Saludo, Víctor Koch



"Jose Carlos" escribió en el mensaje
news:
Gracias Victor, no había pensado en este asunto. Pero si al final tengo
que encritar la base de datos ¿Alguna sugerencia?

Gracias.


"Victor Koch" <v i c t o r
(arroba)correo(punto)waldbott(punto)com(punto)ar> escribió en el mensaje
de noticias news:%
Hola

Si te inclinas por guardar los datos encriptados manualmente en la base
de datos olvídate del 98% de los beneficios de una base de datos, por
ejemplo la simple tarea de pedirle a la base de datos un conjunto de
registros ordenado.

Un Saludo, Víctor Koch



"gustavo gutierrez" escribió en el mensaje
news:
On 15 mayo, 14:41, "Jose Carlos" wrote:
Buenas tardes a todos y gracias por su ayuda de antemano.

Mi problema es que hasta ahora siempre he trabajado con bases de datos
acces
y nunca las he cifrado o protegido con contraseña. Pero ahora me
encuentro
con que tengo una pequeña aplicación en la que se guardan datos
personales y
médicos y por la Ley de protrección de datos este tipo de datos siempre
deben ir protegidos por una clave y ir cifrados. El acceso a la
aplicación
por usuario y contraseña lo tengo controlado, pero no se como hacerlo
exactamente con la base de datos, ya que si localizas esta base en el
directorio de la palicación la puedes abrir con el acces.
Si le pongo una contraseña a la base de datos, ¿Tendré que pasarle la
contraseña en cada recordset que abro en la aplicación? ¿O hay alguna
forma
de "desproteger" la base de datos mientras la palicación esté abierta y
luego volver a "protegerla" al cerrar la palicación?

Un saludo y gracias de antemano

Jose Carlos Garcia



Hola, Puedes ponerle contraseña a la bdd y pasársela en la cadena de
conexión. Con esto ya no se puede abrir desde access sin conocer la
contraseña. El problema es que hay programas para romper las
contraseñas de access. Entonces lo mejor sería poner la contraseña ya
adicionalmente usar una rutina de encriptación al grabar todos los
datos y una de desencriptación al leerlos. si usas una función
sencilla:

Public Function Crypto(strEnt As String) As String
Dim i As Integer
For i = 1 To Len(strEnt)
Mid(strEnt, i, 1) = Chr(Asc(Mid(strEnt, i, 1)) Xor 255)
Next
Crypto = strEnt
End Function

a la cual le pases los datos antes de grabar. Si usas ADO:

rs.AddNew
rs!Clave = "" & Crypto(text(0).text)
rs!Nombre = "" & Crypto(text(1).text)
rs!Codigo = "" & Crypto(text(2).text)

al recuperar los datos se usaría la misma función:

text(0).text = "" & Crypto(rsClave)
text(1).text = "" & Crypto(rsNombre)
text(2).text = "" & Crypto(rsCodigo)

De esta forma, el fisgón tendría dos trabajos: 1.- Conseguir el
programa para crackear las claves de access (hay de paga). y 2.- al
abrir la bdd tendría que buscar la forma de desencriptar los datos.
desde luego que en la función de encriptador puedes llevarla a una
complejidad tal que se le haga extremadamente difícil la tarea y esto
lo desanime si no dispone de mucho tiempo. Se me ocurre que antes de
encriptar aumentes la complejidad del texto invirtiéndolo y además
insertándole una frase basura: tomas los caracteres del texto y cada
cierto número de caracteres le insertas uno de la frase basura, misma
que previamente invertiste. Con esto obtienes un texto con
alteraciones previas. A continuación se lo pasas a la función de
encriptado y lo grabas en la base de datos. Para sacar los datos haces
el proceso inverso. Son solo ideas que a mi me han funcionado, algo de
esto te podría servir.

Saludos!

Gustavo Gutiérrez M.
Puebla, Pue. MEXICO








Respuesta Responder a este mensaje
#9 aa
18/05/2010 - 21:17 | Informe spam
EL AOXPR saca las claves hasta del 2007 en milisegundos.
Respuesta Responder a este mensaje
#10 user
20/05/2010 - 23:58 | Informe spam
aa escribió:
EL AOXPR saca las claves hasta del 2007 en milisegundos.




Malditos Crackers! :S
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida