Как обеспечить прозрачный доступ к зашифрованным файлам без их полного расшифрования?
Всем привет!
Я пишу небольшое приложение на Java похожее на TrueCrypt, оно представляет из себя контейнер с зашифрованными файлами пользователя.
Есть проблема с получением доступа к зашифрованным файлам. На данный момент я использую такой поход:
1. При подключении контейнера полностью расшифровываю все файлы в обычную папку.
2. Монтирую папку как диск.
3. Наблюдаю за событиями в папке с расшифрованными файлами используя WatchService.
4. Например, при добавление нового файла зашифровываю его и сохраняю в контейнер.
5. После отключения контейнера удаляю все расшифрованные файлы и отключаю папку.
Хотелось бы найти решение, которое позволило бы расшифровывать только те файлы, которыми хочет воспользоваться пользователь, например предоставляя пользователю доступ только к названиям файлов, а когда пользователь хочет использовать файл расшифровать только один файл.
Требования такие: использовать только нативный проводник, т. е. Не изобретать свой файловый менеджер, решение должно быть кросплатформенным.
На данный момент есть идея реализовать протокол FTP или WebDAV и смонтировать их как сетевой диск.
На данный момент я использую такой поход:
1. При подключении контейнера полностью расшифровываю все файлы в обычную папку.
2. Монтирую папку как диск.
3. Наблюдаю за событиями в папке с расшифрованными файлами используя WatchService.
4. Например, при добавление нового файла зашифровываю его и сохраняю в контейнер.
5. После отключения контейнера удаляю все расшифрованные файлы и отключаю папку.
Вы хотите сказать, что при аварийном завершении программы папка с расшифрованными файлами останется на диске? И пытаетесь то же самое повернуть через сетевой диск? Мне кажется, что нужно искать другой подход.
Всё уже описано верно в ответе Максим Кузнецов
Добавлю только ссылку на мой более ранний ответ : Какую программу использовать для защиты данных на USB-флешке «на лету»? - уверен, что без прав администратора реализовать то, что Вы хотите нативными программами нельзя. Решений собственно 2 : либо подключение на уровне драйвера устройства (что требует прав администратора на ПК) либо аппаратное решение как описано в ссылке.