Разница между симметричными алгоритмами криптографии

С# имеет четыре различных симметричных криптоалгоритма: RijndaelManaged, DESCryptoServiceProvider, RC2CryptoServiceProvider и TripleDESCryptoServiceProvider.

Я ищу дополнительную информацию между ними. В основном, каковы различия между каждым из них. MSDN не очень помогает, или я просто устал.;) Я уверен, что между каждым из них есть про и минусы, как и все, где есть несколько способов сделать что-то.

Спасибо за любое просвещение.
Тони

Ответы

Ответ 1

Это рейтинг (для 2015 года) самый сильный алгоритм появляется сверху:

Используйте AES.

Подробнее:

  • DES - это старый "стандарт шифрования данных" с семидесятых. Его ключевой размер слишком короток для правильной безопасности (56 эффективных бит, это может быть грубым, как было показано более десяти лет назад), Кроме того, DES использует 64-битные блоки, что вызывает некоторые потенциальные проблемы при шифровании нескольких гигабайт данных с одним и тем же ключом (гигабайт в наши дни не такой уж большой).
  • 3DES - это трюк для повторного использования реализаций DES, путем каскадирования трех экземпляров DES (с различными ключами). Считается, что 3DES безопасна, по крайней мере, до уровня "2 112" (что довольно много, и довольно далеко в сфере "не разрушаемых с сегодняшней технологией" ). Но он медленный, особенно в программном обеспечении (DES был разработан для эффективной аппаратной реализации, но он засасывает программное обеспечение, а 3DES всасывает в три раза больше).

  • AES является преемником DES как стандартного симметричного алгоритма шифрования для федеральных организаций США (и, как стандарт для почти всех остальных). AES принимает ключи из 128, 192 или 256 бит (128 бит уже очень нерушимы), использует 128-битные блоки (поэтому нет проблем) и эффективен как для программного обеспечения, так и для аппаратного обеспечения. Он был выбран в рамках открытого конкурса с участием сотен криптографов в течение нескольких лет. В принципе, у вас не может быть лучшего.

Итак, если у вас есть сомнения, используйте AES.

Обратите внимание, что блочный шифр представляет собой поле, которое шифрует "блоки" (128-битные фрагменты данных с AES). При шифровании "сообщения", которое может быть длиннее 128 бит, сообщение должно быть разделено на блоки, а фактический способ разделения данных называется режимом операции или "цепочки". Наивный режим (простой раскол) называется ECB и имеет проблемы. Правильное использование блочного шифра непросто, и это более важно, чем выбор между, например, AES или 3DES.

http://en.wikipedia.org/wiki/EFF_DES_cracker

http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation

Ответ 2

Короткий ответ: использовать Rijndael.

Какие существуют различные варианты:

RC2 - слабый сломанный шифр, созданный в конце 80-х годов для экспорта, поскольку в то время американским компаниям было запрещено экспортировать ' сильное "шифрование. Он имеет длину ключа 40 бит, что делает грубым принуждение на сегодняшний день аппаратным тривиальным (это, в конце концов, 20 лет спустя).

Это название означает Rivest Cipher No. 2, после него создатель Рон Ривест (всемирно известный криптограф, "R" в RSA).

DES был стандартом шифрования данных и был назван сильной криптографией. Однако с длиной ключа 56 бит теперь в пределах диапазона дешифровки грубой силы.

3DES работает DES три раза. Просто запуск DES дважды не делает его намного сильнее, на самом деле, но в третий раз. Это эффективная 116-разрядная версия (с 196-битным ключом).

3DES - очень хорошая, сильная версия по сегодняшнему стандарту.

Итак, RC2, DES и 3DES находятся в наборе шифров для обеспечения совместимости с бизнес-системами, использующими эти шифры.

Rijndael - это, однако, современный шифр выбора. Это официальная замена DES, называемая Advanced Encryption Standard (AES).

Он входит в набор ключей, но важный для использует 128-разрядный. Используйте только другие длины ключей (включая самый длинный, 256-разрядный) по соображениям совместимости.

Ответ 3

Действительно, как заявленный DES не очень сильный. Triple DES силен (у AFAIK нет никаких подходящих атак против него), но он несколько медленнее.

Rijndael - это то же самое, что и AES (Advanced Encryption Standard - одобренный NSA, очень сильный), но с большим выбором размера вашего ключа.

К сожалению, я также мало знаю о RC2. Если это не будет значительно быстрее, чем Rijndael, я бы не видел большой причины не ходить в Rijndael (и даже тогда я хотел бы посмотреть, насколько это безопасно.)

Следующее - это предположение... RC2 является предком нескольких поколений RC6, который был одним из финалистов для выбора шифрования, который будет называться AES. Rijndael был выбран над RC6, поэтому можно предположить, что Rijndael лучше на несколько градусов, чем RC2.

Ответ 4

Я бы придерживался RijndaelManaged или TripleDES, поскольку они сильнее DES.

Основная слабость DES - это более короткая длина ключевого слова, которая может допускать возможные атаки грубой силы. Выполнение шифрования с использованием DES три раза - это возможное средство для усиления вашего конечного результата, а значит, и TripleDES. Я не знаю много о RC2, поэтому я не могу прокомментировать этот метод.

Ответ 5

Если у вас нет по-настоящему уважительной причины, просто используйте RijndaelManaged. Rijndael - это то, что стало AES, общей заменой DES, поэтому он определенно предпочитал DES и TripleDES, если вам не нужна совместимость с какой-то старой системой на основе DES. В RC2 нет ничего особенно плохого, но он старше AES и нет реальной причины использовать его.

Ответ 6

Rijndael - лучший.

DES не очень хорош, довольно легко взломать с достаточной мощностью. Triple DES немного лучше, чем DES (его просто DES повторяется 3 раза).

Если вам интересно, загляните в сказочную библиотеку crypto для более С# crypto goodness: http://www.bouncycastle.org/

Ответ 7

Эти алгоритмы представляют различные точки кривой зависимости скорости от прочности.

(самый слабый/быстрый) RC2 < DES < 3DES < AES/Rijndael (самый сильный/самый медленный)

Я не знаком с API, но есть ли дополнительная разница между классами "Managed" и "CryptoServiceProvider"?