Как защитить/зашифровать индекс Lucene?

Я работаю над настольным приложением, которое будет использовать Lucerne в качестве поисковой системы. Приложение будет установлено на пользовательском компьютере, и индекс будет сохранен на локальном жестком диске.

Данные потенциально конфиденциальны, поэтому я хотел бы защитить индекс от несанкционированного доступа. Данные должны быть защищены, даже если пользовательская машина будет украдена.

2 подходы, которые я до сих пор придумал:

  • Использовать шифрование Windows NTFS. Должна быть защищена, если неавторизованное лицо не знает, как войти в систему как пользователь, создавший индекс.
  • Используйте TrueCrypt. Это должно быть очень безопасным, но для установки зашифрованного диска требуется установка TrueCrypt и прав администратора.

Приложение будет распространено среди многих пользователей, поэтому я хочу, чтобы установка была как можно более простой.

Есть ли у кого-нибудь опыт в этом сценарии? Сейчас я считаю, что самый простой подход - это шифрование NTFS. Как вы думаете?

Спасибо!

Ответы

Ответ 1

Проверьте исходный код FSDirectory. Весь диск IO lucene проходит через этот класс. Вы можете поместить свой код шифрования/дешифрования в этот класс и распространить этот пользовательский двоичный файл lucene.

Если вы используете симметричное шифрование, вы, вероятно, вложите свой ключ в этот код. Это может быть уязвимым для декомпиляции.

С пользовательским FSDirectory вы можете отбить большинство любопытных людей, которые откроют этот индекс с Люком. Но вам, возможно, придется продумать все, чтобы сделать его нерушимым для действительно определенных людей.

Ответ 3

  • расширить FSDirectory и использовать симметричное (AES) шифрование для всех операций с файлами.
  • используйте ключ, основанный на хэшере соляризованного пароля пользователя, поэтому вам не нужно распространять ключ с кодом.

Ответ 4

Если вы зашифруете хранилище индексов, я не уверен, как вы будете искать его позже, вы можете использовать что-то вроде симметричного шифрования с возможностью поиска и асимметричного шифрования с возможностью поиска, которые гарантировали бы, что вы выполняете поиск на даже удаленном диске, фактически не расшифровывая его.