Я хочу зашифровать двоичный файл. Моя цель - предотвратить чтение файла кем-либо, у кого нет пароля.
Какое решение лучше, AES или Blowfish с той же длиной ключа? Можно предположить, что у злоумышленника есть большие ресурсы (программное обеспечение, знания, деньги) для взлома файла.
security
encryption
aes
blowfish
мимрок
источник
источник
Ответы:
Наверное, AES. Blowfish был прямым предшественником Twofish. Twofish был участником конкурса Брюса Шнайера, который произвел AES. Он был признан более низким по сравнению с записью под названием Rijndael, которая и стала AES.
Кстати, интересно: в какой-то момент конкурса всех участников попросили высказать свое мнение о рейтинге шифров. Вероятно, неудивительно, что каждая команда выбрала свою собственную запись как лучшую, но все остальные команды выбрали Rijndael как второй лучший.
Тем не менее, есть несколько основных различий в основных целях Blowfish и AES, которые (возможно) могут благоприятствовать Blowfish с точки зрения абсолютной безопасности. В частности, Blowfish пытается затруднить атаку полным перебором (исчерпание ключа), делая начальную настройку ключа довольно медленной операцией. Для обычного пользователя это не имеет большого значения (это все еще меньше миллисекунды), но если вы пробуете миллионы ключей в секунду, чтобы взломать его, разница будет весьма существенной.
В конце концов, я не вижу в этом большого преимущества. Я обычно рекомендую AES. Моим следующим выбором, вероятно, были бы Serpent, MARS и Twofish в таком порядке. Blowfish придет где-то после них (хотя есть пара других, которые я, вероятно, порекомендовал бы перед Blowfish).
источник
Blowfish
самый быстрыйНе часто признается, что размер блока блочного шифра также является важным фактором безопасности (хотя и далеко не так важен, как размер ключа).
Blowfish (и большинство других блочных шифров той же эпохи, таких как 3DES и IDEA) имеют размер блока 64 бита, что считается недостаточным для больших размеров файлов, которые распространены в наши дни (чем больше файл, тем меньше размер блока , тем выше вероятность повторения блока в зашифрованном тексте - а такие повторяющиеся блоки чрезвычайно полезны в криптоанализе).
С другой стороны, AES имеет размер блока 128 бит. Уже одно это соображение является оправданием для использования AES вместо Blowfish.
источник
Что касается самих алгоритмов, я бы выбрал AES по той простой причине, что он принят NIST и будет подвергаться рецензированию и криптоанализу в течение многих лет. Однако я бы предположил, что в практических приложениях, если вы не храните какой-либо файл, который правительство хочет сохранить в секрете (в этом случае АНБ, вероятно, предоставит вам лучший алгоритм, чем AES и Blowfish), использование любого из этих алгоритмов выиграет не имеет большого значения. Вся безопасность должна быть в ключе, и оба этих алгоритма устойчивы к атакам грубой силы. Blowfish показал свою слабость только на реализациях, которые не используют полные 16 раундов. И хотя AES новее, этот факт должен заставить вас больше склоняться к BlowFish (если бы вы учитывали только возраст). Подумайте об этом так,
Вот что я хотел бы вам предложить ... вместо того, чтобы смотреть на эти два алгоритма и пытаться выбирать между алгоритмом, почему бы вам не взглянуть на свою схему генерации ключей. Потенциальный злоумышленник, который хочет расшифровать ваш файл, не собирается сидеть и предлагать теоретический набор ключей, которые можно использовать, а затем проводить атаку методом грубой силы, которая может занять месяцы. Вместо этого он собирается использовать что-то еще, например, атаку на ваше серверное оборудование, перепроектирование вашей сборки, чтобы увидеть ключ, попытку найти какой-то файл конфигурации, в котором есть ключ, или, возможно, шантажирует вашего друга, чтобы он скопировал файл с вашего компьютера. . Это будет то место, где вы наиболее уязвимы, а не алгоритм.
источник
AES.
(Я также предполагаю, что вы имеете в виду две рыбы, а не намного более старую и слабую рыбу)
Оба (AES и twofish) - хорошие алгоритмы. Однако даже если бы они были равны или были бы немного впереди по техническим характеристикам, я бы ВСЕ ЕЩЕ выбрал AES.
Зачем? Публичность. AES - это стандарт государственного шифрования, поэтому миллионы других организаций также используют его. Талантливый криптоаналитик просто получает больше «отдачи от вложенных средств», обнаружив недостаток в AES, чем он делает это за гораздо менее известные и используемые двойники.
Неизвестность не обеспечивает защиты при шифровании. Больше тел ищет, изучает, исследует, атакует алгоритм - всегда лучше. Вам нужен максимально проверенный алгоритм, и прямо сейчас это AES. Если алгоритм не подвергается интенсивной и постоянной проверке, вам следует меньше доверять его силе. Конечно, twofish не был скомпрометирован. Это из-за силы шифра или просто потому, что недостаточно людей внимательно посмотрели ... ЕЩЕ
источник
Выбор алгоритма, наверное, не имеет большого значения. Я бы использовал AES, так как он лучше исследован. Что гораздо важнее, так это выбор правильного режима работы и функции определения ключа .
Возможно, вы захотите взглянуть на спецификацию формата TrueCrypt для вдохновения, если вам нужен быстрый произвольный доступ. Если вам не нужен произвольный доступ, то XTS не является оптимальным режимом, поскольку у него есть недостатки, которых нет в других режимах. И вы можете также добавить какую-то проверку целостности (или код аутентификации сообщения).
источник
Я знаю, что этот ответ нарушает условия вашего вопроса, но я думаю, что правильный ответ на ваше намерение заключается в следующем: используйте любой алгоритм, который позволяет вам использовать самую длинную длину ключа, а затем убедитесь, что вы выбрали действительно хороший ключ. Незначительные различия в производительности наиболее известных алгоритмов (криптографически и хронологически) перекрываются несколькими дополнительными битами ключа.
источник
Оба алгоритма (AES и twofish) считаются очень безопасными. Это широко освещалось в других ответах.
Однако, поскольку в 2016 году AES широко используется, он был специально аппаратно ускорен на нескольких платформах, таких как ARM и x86. Хотя AES не был значительно быстрее, чем twofish до аппаратного ускорения, теперь он намного быстрее благодаря специальным инструкциям процессора.
источник