Как защитить/зашифровать индекс Lucene?
Я работаю над настольным приложением, которое будет использовать Lucerne в качестве поисковой системы. Приложение будет установлено на пользовательском компьютере, и индекс будет сохранен на локальном жестком диске.
Данные потенциально конфиденциальны, поэтому я хотел бы защитить индекс от несанкционированного доступа. Данные должны быть защищены, даже если пользовательская машина будет украдена.
2 подходы, которые я до сих пор придумал:
- Использовать шифрование Windows NTFS. Должна быть защищена, если неавторизованное лицо не знает, как войти в систему как пользователь, создавший индекс.
- Используйте TrueCrypt. Это должно быть очень безопасным, но для установки зашифрованного диска требуется установка TrueCrypt и прав администратора.
Приложение будет распространено среди многих пользователей, поэтому я хочу, чтобы установка была как можно более простой.
Есть ли у кого-нибудь опыт в этом сценарии? Сейчас я считаю, что самый простой подход - это шифрование NTFS. Как вы думаете?
Спасибо!
Ответы
Ответ 1
Проверьте исходный код FSDirectory.
Весь диск IO lucene проходит через этот класс. Вы можете поместить свой код шифрования/дешифрования в этот класс и распространить этот пользовательский двоичный файл lucene.
Если вы используете симметричное шифрование, вы, вероятно, вложите свой ключ в этот код. Это может быть уязвимым для декомпиляции.
С пользовательским FSDirectory вы можете отбить большинство любопытных людей, которые откроют этот индекс с Люком. Но вам, возможно, придется продумать все, чтобы сделать его нерушимым для действительно определенных людей.
Ответ 2
Возможно, это помогает: https://issues.apache.org/jira/browse/LUCENE-2228. Я не уверен в статусе, но
Ответ 3
- расширить FSDirectory и использовать симметричное (AES) шифрование для всех операций с файлами.
- используйте ключ, основанный на хэшере соляризованного пароля пользователя, поэтому вам не нужно распространять ключ с кодом.
Ответ 4
Если вы зашифруете хранилище индексов, я не уверен, как вы будете искать его позже, вы можете использовать что-то вроде симметричного шифрования с возможностью поиска и асимметричного шифрования с возможностью поиска, которые гарантировали бы, что вы выполняете поиск на даже удаленном диске, фактически не расшифровывая его.