2009-08-04 18 views
9

Tengo algunos campos que almacenan notas e información confidencial que me gustaría encriptar antes de que llegue a la base de datos.Campos cifrados y búsqueda de texto completo, ¿cuál es el mejor enfoque?

En este momento, utilizo una búsqueda de texto completo de SQL para buscar estos campos. Obviamente, el cifrado de esta información arrojará mis resultados de búsqueda.

¿Cuál es la mejor manera de encriptar estos campos, pero aún así permitir la búsqueda?

Respuesta

3

No hay ninguna base de datos que soporte el índice encriptado, por lo que debe sacrificar algo de seguridad para lograrlo.

Puede indexar datos parciales en forma clara y encontrar los datos reales de su aplicación. Por ejemplo, si desea almacenar el número de la tarjeta de crédito. Puede tener un índice de los últimos 4 dígitos. La cantidad de tarjetas que comparten los mismos últimos 4 dígitos es limitada, por lo que puede permitirse descifrar cada una y verificar el número completo.

9

No va a ser fácil. Lo que describes no suele implementarse en bases de datos comerciales, aunque hay algunos resultados teóricos en el campo. Le sugiero que vaya al google scholar y comience a buscar artículos sobre el tema.

Estas son algunas referencias a empezar:

+0

también echar un vistazo a esta presentación: Cómo buscar en los datos cifrados - Eu-Jin Goh http: // cripto .stanford.edu/~ eujin/papers/secureindex/2003nov-encsearch.pdf –

2

Otra opción es almacenar el formato de los datos cifrados. Luego puede buscar en el valor soundex y acercarse sin descifrar los datos.

1

Oracle 10g versión 2 (o posterior) puede admitir esta funcionalidad. Desde su página web aquí:

http://www.oracle.com/technology/oramag/oracle/05-sep/o55security.html

"Una nueva característica de Oracle Database 10g Release 2 le permite hacer precisamente eso:. Se puede declarar una columna como cifrado sin escribir una sola línea de código Cuando los usuarios insertan los datos , la base de datos lo cifra y almacena de manera transparente en la columna. De forma similar, cuando los usuarios seleccionan la columna, la base de datos la descifra automáticamente. Como todo esto se hace de forma transparente sin ningún cambio en el código de la aplicación, la característica tiene un nombre apropiado: Datos transparentes Cifrado (TDE) ".

La idea es que nadie puede ver el texto claro en la base de datos, pero una instrucción select funcionaría normalmente. ¿Esto podría ayudar con su búsqueda si Oracle es una opción?

Actualización: hay otra opción aquí:

http://www.critotech.com/index.htm

para bases de datos MySQL, pero parece bastante caro.

Cuestiones relacionadas