Подтвердить что ты не робот

AES против Blowfish для шифрования файлов

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

Какое лучшее решение, AES или Blowfish с той же длиной ключа? Мы можем предположить, что у злоумышленника есть большие ресурсы (программное обеспечение, знания, деньги) для взлома файла.

4b9b3361

Ответ 1

Возможно, AES. Blowfish был прямым предшественником Twofish. Twofish был Bruce Schneier вступления в конкурсе, который произвел AES. Это было оценено как уступка записи под названием Rijndael, которая стала тем, что стало AES.

Интересно, что в какой-то момент в конкурсе всех участников попросили дать свое мнение о том, как оценивались шифры. Это, наверное, не удивительно, что каждая команда выбрала свою собственную запись как лучшую, но каждая другая команда выбрала Rijndael в качестве второго лучшего.

Тем не менее, есть некоторые основные различия в основных целях Blowfish против AES, которые могут (возможно) поддержать Blowfish с точки зрения абсолютной безопасности. В частности, Blowfish пытается сделать атаку грубой силы (ключевое истощение) сложным, сделав начальную настройку ключа довольно медленной. Для обычного пользователя это малоинтересно (это еще меньше миллисекунды), но если вы пытаетесь использовать миллионы ключей в секунду, чтобы разбить его, разница довольно существенная.

В конце концов, я не вижу в этом основного преимущества. Обычно я рекомендую AES. Следующим моим выбором, вероятно, будет Змей, МАРС и Твойник в этом порядке. Blowfish придет где-то после этих (хотя есть несколько других, которые я, вероятно, рекомендую раньше Blowfish).

Ответ 2

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

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

AES, с другой стороны, имеет размер блока 128 бит. Это соображение само по себе является оправданием использования AES вместо Blowfish.

Ответ 3

В терминах самих алгоритмов я бы пошел с AES, по той простой причине, что он был принят NIST и будет проверяться экспертами и криптоанализом в течение многих лет. Однако я бы предположил, что в практических приложениях, если вы не храните какой-либо файл, который правительство хочет хранить в секрете (в этом случае NSA, вероятно, предоставит вам лучший алгоритм, чем AES и Blowfish), используя любой из этих алгоритмов, выигранных Не слишком большая разница. Вся безопасность должна быть в ключе, и оба этих алгоритма устойчивы к атакам грубой силы. Blowfish только показал, что он слаб для реализаций, которые не используют полные 16 раундов. И хотя AES новее, этот факт должен заставить вас больше ориентироваться на BlowFish (если учитывать только возраст). Подумайте об этом таким образом, BlowFish существует с 90-х, и никто (что мы знаем) еще не сломал его.

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

Ответ 4

AES.

(Я также предполагаю, что вы имеете в виду два рыцаря, а не намного более старые и более слабые луковицы)

Оба (AES и twofish) - хорошие алгоритмы. Однако, даже если они были равны или две рыбки были немного впереди по техническим достоинствам, я бы STILL выбрал AES.

Почему? Publicity. AES является стандартом для государственного шифрования, и, таким образом, миллионы других организаций также используют его. Талантливый криптоаналитик просто получает больше "взрыва для доллара", обнаруживая недостаток в AES, тогда он делает это для гораздо менее известных и используемых двух рыб.

Obscurity не обеспечивает защиту при шифровании. Больше тел, ищущих, изучающих, исследующих, атакующих алгоритм, всегда лучше. Вам нужен самый "проверенный" алгоритм, и сейчас это AES. Если алгоритм не подвергается интенсивному и постоянному контролю, вы должны снизить его уверенность в себе. Конечно, две рыбки не были скомпрометированы. Это из-за силы шифрования или просто потому, что недостаточно людей внимательно посмотрели..... YET

Ответ 5

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

Возможно, вы захотите взглянуть на спецификацию формата TrueCrypt для вдохновения, если вы хотите получить быстрый произвольный доступ. Если вам не нужен произвольный доступ, чем XTS, это не оптимальный режим, так как у него есть недостатки, другие режимы этого не делают. И вы можете захотеть добавить некоторую проверку целостности (или код аутентификации сообщения).

Ответ 6

Я знаю, что этот ответ нарушает условия вашего вопроса, но я думаю, что правильный ответ на ваши намерения заключается в следующем: используйте любой алгоритм, который позволяет вам максимально длинную длину ключа, а затем убедитесь, что вы выбрали действительно хороший ключ. Небольшие различия в производительности большинства хорошо известных алгоритмов (криптографически и хронологически) перегружены несколькими дополнительными битами ключа.

Ответ 7

Оба алгоритма (AES и twofish) считаются очень безопасными. Это было широко описано в других ответах.

Однако, поскольку AES широко используется в 2016 году, он был специально аппаратно ускорен на нескольких платформах, таких как ARM и x86. Несмотря на то, что перед аппаратным ускорением не намного быстрее, чем двухфайлы, AES теперь намного быстрее благодаря специальным инструкциям CPU.