Повышает ли безопасность инкапсуляцию одного CryptoStream в несколько других? - PullRequest
2 голосов
/ 29 апреля 2011

Я работаю над проектом для Windows Phone 7, в котором хранится информация с высокой степенью защиты.Эти данные защищены паролем.Если я зашифрую один CryptoStream в 3 других CryptoStreams (всего 4 криптопотока встроены друг в друга, каждый из которых использует разные методы для генерации ключа, вектора инициализации и соли).Достаточно ли безопасен этот метод или мне нужно больше CryptoStreams (каждый использует 256-битное шифрование AES)?

Ответы [ 3 ]

7 голосов
/ 29 апреля 2011

Гораздо более вероятно, что кто-то будет грубо насиловать или придумывать пароль в социальной сети, чем взломать даже зашифрованный поток, поскольку пароль обычно имеет меньшее битовое пространство, чем ключ.Все, что шифруется несколько раз, - это увеличивает время или усилия, необходимые для взлома пароля, на O (n) (вы действительно хотите, чтобы сложность увеличивалась на O (n ^ 2) или более).

Но если выВам нужно супер-безопасное шифрование, не катите свою собственную стратегию, выберите стандарт DOD (или эквивалентный) и реализуйте его.


Чтобы объяснить более подробно, AES - блочный шифр с тремя различными длинами ключей.Первая часть стратегии - это определение длины ключа, которую вы хотите использовать.Вы можете выбрать один наугад или самый большой, но вы действительно хотите выбрать лучший вариант для вашей ситуации.Далее идет фактическое использование AES.Поскольку это блочный шифр, он будет кодировать идентичный открытый текст в идентичный зашифрованный текст, поэтому вы захотите использовать вектор инициализации, соль и другие подобные методы, чтобы гарантировать, что открытый текст станет другим зашифрованным текстом.

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

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

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


Для интереса прочитайте, как TrueCrypt делает это .

1 голос
/ 29 апреля 2011

Одно шифрование AES-256 должно быть достаточно сильным.4 звучит достаточно параноидально.

0 голосов
/ 10 декабря 2011

Вы можете зашифровать и расшифровать пароль с помощью AesManaged, дополнительную информацию и пример исходного кода вы найдете в этой статье.

http://www.miisoft.it/portale/index.php/programmazione/59-c-windows-phone/78-windows-phone-criptografia

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