2010-02-25 16 views
15

Estoy trabajando en una aplicación de escritorio que utilizará Lucerna como motor de búsqueda. La aplicación se instalará en la máquina del usuario y el índice se almacenará en el disco duro local.¿Cómo asegurar/encriptar un índice Lucene?

Los datos son potencialmente confidenciales, por lo que me gustaría proteger el índice del acceso no autorizado. Los datos deben estar seguros incluso cuando la máquina del usuario sea robada.

2 enfoques que he encontrado hasta el momento:

  • cifrado Uso de Windows NTFS. Debe ser seguro a menos que la persona no autorizada sepa cómo iniciar sesión como el usuario que creó el índice.
  • Use TrueCrypt. Esto debería ser muy seguro, pero requiere la instalación de TrueCrypt y derechos administrativos para instalar la unidad encriptada.

La aplicación se distribuirá a muchos usuarios, por lo que me gustaría mantener la instalación lo más simple posible.

¿Alguien tiene experiencia con este escenario? En este momento, creo que el enfoque más fácil sería el cifrado NTFS. ¿Qué piensas?

Gracias!

Respuesta

8

Echa un vistazo al código fuente de FSDirectory. Todo el disco IO de lucene pasa a través de esta clase. Puede colocar su código de cifrado/descifrado en esta clase y distribuir este binario personalizado de lucene.

Si usa cifrado simétrico, probablemente incruste su clave en este código. Eso podría ser vulnerable a la descompilación.

Con FSDirectory personalizado, puede protegerse de la mayoría de las personas curiosas que abrirían este índice con Luke. Sin embargo, es posible que tenga que pensar en todo para que sea irrompible para la gente realmente determinada.

+1

Donde estoy de acuerdo en que técnicamente sí, usted puede escribir su propia versión cifrada de FSDirectory, en realidad hacer un cifrado seguro es difícil y hay muchas posibilidades de que a menos que sepa realmente lo que está haciendo harás algo que lo haga inseguro. – Justin

+1

Definitivamente no hagas "homebrew" tu encriptación. Simplemente no lo hagas Como mínimo, use JCA/JCE. Eso todavía es complicado, por lo que probablemente desee utilizar una biblioteca como Jasypt (http://www.jasypt.org/) o (mi favorito personal) Cryptolite (https://github.com/workdocx/Cryptolite) –

+0

Hmm lo siento, esto es lucene.net –

0

Si cifra la memoria de índices, no estoy seguro de cómo le gustaría estar buscando más adelante, es posible que desee utilizar algo como encriptación simétrica de búsqueda y asimétricos de cifrado de búsqueda técnicas, lo que garantizaría que busque operaciones incluso en un disco remoto sin descifrarlo realmente.

2
  1. amplíe FSDirectory y utilice el cifrado simétrico (AES) para todas las operaciones de archivos.
  2. use la clave basada en el hash salado de la contraseña del usuario para que no tenga que distribuir la clave con el código.
Cuestiones relacionadas