Шифрование AES в .net - PullRequest
       20

Шифрование AES в .net

0 голосов
/ 20 сентября 2009
  1. Как я могу использовать AES в C # .NET, чтобы зашифровать файл и затем безопасно удалить локальную копию файла?

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

  2. Является ли AES самым надежным шифрованием, доступным в .NET 3.5?

Ответы [ 5 ]

3 голосов
/ 20 сентября 2009

Возможно, вы подходите к своей проблеме с неправильной точки зрения, если хотите получить файл и затем зашифровать его. Как уже упоминалось, не существует простого способа безопасного удаления файла.

В качестве альтернативы вы можете настроить зашифрованный раздел или папку, используя что-то вроде TrueCrypt , и перетащить файл в зашифрованный раздел, как только он будет получен.

Написание процедур шифрования с использованием c # может показаться довольно тривиальным, но без хорошего понимания проблем, связанных с шифрованием, есть большая вероятность, что вы допустите ошибки, например, при управлении ключами или при выборе неправильного режима блочного шифрования.

2 голосов
/ 20 сентября 2009

1) Вы не можете безопасно удалить файл, не связавшись с внутренними компонентами файловой системы.
2) Это зависит от вашего определения сильнее.

1 голос
/ 20 сентября 2009

Вот пример использования AES в C #, который генерирует симметричный ключ и IV и использует RSA с самозаверяющим сертификатом для хранения ключа AES и IV в файле. Для дешифрования он расшифрует ключевой файл с помощью RSA, а затем использует его для дешифрования зашифрованного файла обратно в исходный.

Возможно, вам придется изменить, конечно, но я думаю, что это хороший пример шифрования в оба конца в C #.

1 голос
/ 20 сентября 2009

Вы не можете безопасно удалить, если не углубляетесь в небезопасный код, есть пример на codeproject , но вам лучше найти программу командной строки, такую ​​как Sdelete и вызывать ее из вашего приложения, вы должны будете использовать небезопасный код в любом случае.

Сильнейшее шифрование слишком сложно назвать, особенно когда вы берете размеры ключей в уравнение. Существуют атаки на AES с максимальным размером ключа, 256 бит, но многие из них зависят от конкретных версий, атакуют реализацию, а не алгоритм, и те, которые нацелены на алгоритм, все еще очень сложны - если вы каждый раз поворачиваете свои ключи, как тогда вам действительно нужно очень мало беспокоиться. Если вас беспокоит реализация управляемого кода, вам следует включить соответствие FIPS , но это влияет на всю ОС. Это ограничило бы вас DESCryptoServiceProvider / TripleDESCryptoServiceProvider для симметричного шифрования и DSACryptoServiceProvider / RSACryptoServiceProvider для асимметричного шифрования.

0 голосов
/ 20 сентября 2009

Возможно, вы захотите взглянуть на что-то подобное для учебника по шифрованию в .NET Framework, поскольку есть много настроек, с которыми вам нужно будет определиться. http://www.vbdotnetheaven.com/UploadFile/gsparamasivam/cryp04112005063256AM/cryp.aspx

Удалить файл немного сложнее. Возможно, вы захотите записать поверх файла нули того же размера, что и файл, который вы хотите удалить.

Затем удалите этот файл. Таким образом, на жестком диске в основном должны быть нули, если кто-то разбирает ваш жесткий диск.

Я предпочитаю IDEA или Twofish, но AES может работать, это зависит от размера ключа, который вы сгенерировали.

Обновление: я обычно использую библиотеку Bouncycastle для шифрования, так как мне было легко пользоваться, и в целом она работала лучше для меня. http://www.bouncycastle.org/csharp/ Если вы загрузите исходный код, вы можете получить примеры, которые могут вам помочь.

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