Сравнение DES, Triple DES, AES, шифрование blowfish для данных

Ответы:

247

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

Более подробно:

  • DES - это старый «стандарт шифрования данных» семидесятых годов. Размер его ключа слишком мал для обеспечения надлежащей защиты (56 эффективных битов; это может быть выполнено перебором, как это было продемонстрировано более десяти лет назад ). Кроме того, DES использует 64-битные блоки, что создает некоторые потенциальные проблемы при шифровании нескольких гигабайт данных одним и тем же ключом (гигабайт сейчас не так уж велик).
  • 3DES - это уловка для повторного использования реализаций DES путем каскадирования трех экземпляров DES (с разными ключами). Считается, что 3DES обеспечивает безопасность, по крайней мере, до « 2 112 » (что довольно много и далеко от уровня «не взломать с помощью современных технологий»). Но он медленный, особенно в программном обеспечении (DES был разработан для эффективной аппаратной реализации, но он отстой в программном обеспечении; а 3DES - отстой в три раза больше).
  • Blowfish - это блочный шифр, предложенный Брюсом Шнайером и используемый в некоторых программах. Blowfish может использовать огромные ключи и считается безопасным, за исключением размера блока, который составляет 64 бита, как DES и 3DES. Blowfish эффективен в программном обеспечении, по крайней мере, на некоторых программных платформах (он использует зависимые от ключа таблицы поиска, поэтому производительность зависит от того, как платформа обрабатывает память и кеши).
  • AES является преемником DES в качестве стандартного алгоритма симметричного шифрования для федеральных организаций США (а также в качестве стандарта почти для всех остальных). AES принимает ключи длиной 128, 192 или 256 бит (128 бит уже невозможно взломать), использует 128-битные блоки (так что здесь нет проблем) и эффективен как в программном, так и в аппаратном отношении. Он был выбран на открытом конкурсе с участием сотен криптографов в течение нескольких лет. В принципе, лучшего и быть не может.

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

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

Томас Порнин
источник
4
Будучи немного чокнутым, я почти всегда рекомендовал бы AES256
hdost
2
Черт возьми, АНБ смогло взломать DES в 1976 году, но поощряло его использование до 2002 года! Назовите меня параноиком, но я боюсь толчка AES
доктор Део
26

Все эти схемы, кроме AES и Blowfish, имеют известные уязвимости и не должны использоваться.
Однако на смену Blowfish пришел Twofish .

SLaks
источник
11

Описанные методы шифрования представляют собой блочные шифры с симметричным ключом.

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

Triple DES увеличивает длину ключа DES, применяя три операции DES к каждому блоку: шифрование с ключом 0, дешифрование с ключом 1 и шифрование с ключом 2. Эти ключи могут быть связаны.

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

AES считается преемником и современным стандартом. http://en.wikipedia.org/wiki/Advanced_Encryption_Standard

Я считаю, что использование Blowfish не рекомендуется.

Настоятельно рекомендуется не пытаться реализовать собственную криптографию, а вместо этого использовать высокоуровневую реализацию, такую ​​как GPG для данных в состоянии покоя или SSL / TLS для данных в пути. Вот отличное и отрезвляющее видео об уязвимостях шифрования http://rdist.root.org/2009/08/06/google-tech-talk-on-common-crypto-flaws/

Роханнес
источник
2
Почему не рекомендуется использовать иглобрюх? Разве это не самый безопасный?
yogsma 05
5
@yogsma: Blowfish имеет размер блока всего 64 бита (так как он был задуман как замена DES в протоколах), и поэтому становится проблематичным после того, как несколько ГБ данных зашифрованы с тем же ключом.
Paŭlo Ebermann
@rohannes, почему BlowFish не одобряет, я где-то читал с точки зрения производительности BlowFish лучше, чем AES, посмотрите эту статью на brighthub.com
Йогеш
9

AES - это симметричный криптографический алгоритм, а RSA - асимметричный (или открытый ключ) криптографический алгоритм. Шифрование и дешифрование выполняется с помощью одного ключа в AES, в то время как вы используете отдельные ключи (открытый и закрытый ключи) в RSA. Сила 128-битного ключа AES примерно эквивалентна 2600-битному ключу RSA.

BHEEMA RAM
источник
7
вы можете предоставить математические данные, подтверждающие этот ответ, или источник? Мне было бы интересно узнать, как вы пришли к выводу, что 128-битный AES примерно эквивалентен 2600-битному RSA (я понимаю, что это старый ответ)
Рассел Уль
3
@RussellUhl - Я согласен, что история этих чисел - интересный вопрос, даже после двух дополнительных лет молчания. :) Эти числа, похоже, взяты из этой статьи в формате PDF: eprint.iacr.org/2013/635.pdf под названием Universal security - from bits and mips to pools, lakes – and beyond.
Джесси Чисхолм
4

Хотя TripleDESCryptoServiceProvider - безопасный и хороший метод, но он слишком медленный. Если вы хотите обратиться к MSDN, вы получите совет использовать AES, а не TripleDES. Пожалуйста, проверьте ссылку ниже: http://msdn.microsoft.com/en-us/library/system.security.cryptography.tripledescryptoserviceprovider.aspx, вы увидите это внимание в разделе примечаний:

Примечание. Доступен более новый алгоритм симметричного шифрования, Advanced Encryption Standard (AES). Рассмотрите возможность использования класса AesCryptoServiceProvider вместо класса TripleDESCryptoServiceProvider. Используйте TripleDESCryptoServiceProvider только для совместимости с устаревшими приложениями и данными.

Удачи

QMaster
источник
3
Это забавно, учитывая, что Microsoft все еще активно использует TripleDES в некоторых своих продуктах для шифрования ( en.wikipedia.org/wiki/Triple_DES#Usage )
Том Херд,
@Tom вы правы, но не забывайте, что во многих программах используются старые технологии, и требуется время, чтобы адаптироваться к новым методам. Специально для крупных компаний, таких как Microsoft, хотя я согласен с вами в необходимости обновления, и это плохо, когда наша компания предлагает одни вещи и делает другие.
QMaster
1
Microsoft печально известна своей обратной совместимостью. Их использование TripleDES прямо подпадает под «только совместимость с устаревшими приложениями и данными».
Дэн Бечард,
1

введите описание изображения здесь

DES - это старый «стандарт шифрования данных» семидесятых годов.

Кешав Гера
источник
0

AES - это общепринятый в настоящее время стандартный алгоритм (отсюда и название Advanced Encryption Standard ).

Остальные нет.

Ян Бойд
источник
3
Отсюда и название? Как тогда название "AES" указывает на то, что его следует использовать?
CodyBugstein
15
Что насчет стандарта шифрования данных ? Ваша логика «он имеет <стандарт> в названии - следовательно, это то, что следует использовать» весьма ошибочна.
Златин Златев
0
                DES                               AES
Developed       1977                              2000
Key Length      56 bits                           128, 192, or 256 bits
Cipher Type     Symmetric                         Symmetric
Block Size      64 bits                           128 bits
Security        inadequate                        secure
Performance     Fast                              Slow
икарайель
источник
AES быстрее, чем 3DES, особенно на процессорах, поддерживающих AES-NI. (но даже без этого - DES был разработан для быстрых аппаратных реализаций, а не программных реализаций) (Обычный DES немного быстрее в некоторых тестах , но 56-битные ключи делают его непригодным для любого текущего использования)
Герт ван ден Берг