Подтвердить что ты не робот

Синхронизация двухсторонней папки с шифрованием для защиты моих данных Dropbox

Я хотел бы написать небольшой инструмент .NET script/, который, по крайней мере, в основном такой же, как SecretSync или BoxCryptor, но без сохранения ключа шифрования на веб-серверах компании.

Сначала это звучит очень просто: у вас есть две папки - "decryped" -папка и "зашифрованная" -папка. В обеих папках есть FileSystemWatcher, поэтому инструмент получает уведомление, когда файл был изменен. Если файл "decryped" -памят изменяется, он шифрует файл и записывает его в "зашифрованную" -панель. Если файл изменяется в "зашифрованной" папке, он расшифровывает файл и записывает его в "расшифрованную" -панель.

Пока нет проблем.

Но что произойдет, если пользователи запускают приложение (например, KeePass, например) непосредственно из "decryped" -папки? Процесс синхронизации и шифрования теперь столкнется с проблемами, поскольку файлы заблокированы из приложения. Есть ли что-то, что я могу сделать, чтобы избежать этой проблемы, поэтому приложение все равно может работать рядом с процессом синхронизации и шифрования?

Спасибо за любую помощь!

Обновление: Я все еще не мог найти ответ на этот вопрос. При использовании класса FileSystemWatcher для синхронизации легко применять шифрование/дешифрование, но у вас возникают проблемы с блокировками файлов (из-за потоков или приложений, блокирующих файлы). Я также попробовал Microsoft Sync Framework. Файловая синхронизация работает с ней, но я не знаю, как шифровать/дешифровать файлы на лету.

Возможно, у кого-то есть небольшой пример рабочего кода.

4b9b3361

Ответ 1

Вдохновленный ответом Иванова, вам стоит взглянуть на AlphaVSS. Это оболочка .Net вокруг службы теневого копирования томов.

С помощью этого вы можете сделать снимок в регулярной основе (например, каждые 15 минут) и скопировать файлы из папки расшифровки из копии VSS в папку шифрования. Чтобы увеличить скорость, вы все равно можете использовать FileSystemWatcher, чтобы просто регистрировать, какие файлы были изменены с момента последней копии, и копировать только эти файлы из теневой копии.

Ответ 3

BoxCryptor использует Dokan библиотеку, которая является файловой системой пользовательского режима для окон. Библиотека позволяет вашей программе получать обратный вызов о различных операциях, связанных с файловой системой, на виртуальном диске. Таким образом, вы можете отвечать на эти обратные вызовы и шифровать/дешифровать данные на основе работы файловой системы.

Ответ 4

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

Я считаю, что наш CallbackFilter поможет вам. Это фильтр файловой системы (включен драйвер, вы пишете только код пользовательского режима), который позволяет вам проверять и изменять содержимое запросов файловой системы. Пример шифрования включен.