Двусторонняя синхронизация папок с шифрованием для защиты данных Dropbox - PullRequest
12 голосов
/ 16 мая 2011

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

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

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

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

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

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

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

Ответы [ 4 ]

4 голосов
/ 24 мая 2011

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

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

1 голос
/ 16 мая 2011

Изучите использование Служба теневого копирования томов , убедитесь, что вы получили SDK для выбранной ОС

0 голосов
/ 03 июня 2011

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

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

0 голосов
/ 25 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...