Я бы рекомендовал избегать использования асимметричного шифрования для шифрования ваших файлов.Асимметричное шифрование значительно дороже (вычислительно), чем алгоритмы симметричного шифрования одинаковой силы.Для шифрования больших файлов я бы порекомендовал AES через RSA в любой день.
Что касается вашего вопроса - API защиты данных (DPAPI), который упоминает Гаурав, является вашим лучшим выбором для Windows. Как: использовать защиту данных
DPAPI предлагает ProtectedMemory и ProtectedData .Первый позволяет защищать секреты в памяти, а второй обеспечивает защиту секретов, сохраненных на диске.API заботится о шифровании и дешифровании для вас и (в зависимости от указанной области) будет защищать ваши данные от доступа / дешифрования другими пользователями или на других компьютерах.
Чтобы использовать DPAPI в вашем сценарии, я 'рекомендую взять пароль пользователя, сгенерировать симметричный ключ шифрования (например, PasswordDeriveBytes ), сохранить его с использованием DPAPI и ограничить доступ для текущего пользователя.
Ваше приложение может использовать этот ключ для шифрования всехдобавления.Ваше приложение может получить ключ без повторного запроса пользователя, и ключ может быть восстановлен пользователем в новой системе.
Недостатком может быть то, что вредоносное приложение, также выполненное тем же пользователем, потенциально может получитьсекретный ключ.Чтобы защитить от этого сценария, в Protect & Unprotect необходимо указать дополнительную энтропию (фактически, соль).Однако реализация этого, скорее всего, отклонится от вашей цели - потому что теперь вам нужно будет предложить пользователю что-то, что выглядит ужасно похоже на пароль.
Также: интересное чтение:
Вы также можете найти этот пост в Backblaze интересным чтением.Хотя они не объясняют, как они поддерживают ваш сценарий (зашифрованные загрузки, которые провайдер облака не может расшифровать - только то, что они предлагают такую услугу): http://blog.backblaze.com/2008/11/12/how-to-make-strong-encryption-easy-to-use/
Отказ от ответственности: я довольный клиент Backblaze, но нахожусь внет другого способа, связанного с их обслуживанием.
PS: Не торопитесь, чтобы отметить приемлемые ответы.Сообщество вознаградит вас.