Я думаю написать приложение для шифрования многих файлов перед записью на диск. Я записал диск с помощью truecrypt, и у меня возникли проблемы с копированием хороших файлов, когда том содержит поврежденные сектора (https://serverfault.com/questions/48839/backup-on-disc-using-truecrypt-corruption-problem).. Я не делаю сложное приложение и не хочу заменять truecrypt и иметь виртуальные диски / файлы.
Идея состоит в том, чтобы зашифровать каждый файл. возможно, без отступов, поэтому каждый файл имеет одинаковый размер. Некоторые файлы будут крошечными (1-8 байт, 10 байт, 20 КБ и т. Д.), И у меня может быть несколько тысяч файлов известных типов (png, pdf, doc и т. Д.). Я думал использовать соленый ключ "SomethingVeryLongWithAtLeast32CharatersOrMaybeMore" + пароль пользователя. Использование AesCryptoServiceProvider. При желании шифрование имен файлов. Я не знаю, как зашифровать его легальными именами ascii, особенно когда используется nonascii, но я подумал, что генерация случайного уникального числа и сохранение оригинального имени файла в файле может быть хорошим решением.
Я не знаю, если шифрование многих файлов, особенно с использованием известных заголовков / шаблонов с одним и тем же ключом, плохо. В качестве опции я думал, что приложение может сгенерировать много ключей, затем зашифровать ключи в файле и выполнить поиск ключей для каждого файла (или ключа, общего для нескольких файлов X). Но, может быть, это пустая трата, поскольку шифрование должно быть безопасным, даже если есть известные байты?
Я бы хотел, чтобы это приложение было кроссплатформенным. В какие ловушки безопасности я могу попасть (небольшие файлы? Много файлов? Небольшие файлы с известными заголовками? Известные файлы?) И в какие ловушки кросс-платформы C # .NET я могу попасть, чтобы сделать их несовместимыми с Linux (и Mac)