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

Насколько надежна контрольная сумма adler32?

Интересно, насколько надежна контрольная сумма adler32 по сравнению с, например, контрольные суммы md5? В wikipedia было сказано, что adler32 "намного менее надежный", чем md5, поэтому я задаюсь вопросом, сколько и как?

В частности, мне интересно, насколько он достаточно надежный, как проверка согласованности для долговременного архивирования (tar) файлов размером 20 ГБ +?

4b9b3361

Ответ 1

Подробнее о возможностях проверки ошибок контрольной суммы Adler-32 см., например, Повторная проверка контрольных сумм Fletcher и Adler. Maxino, 2006.

Настоящая статья содержит анализ расстояния Хэмминга, обеспечиваемого этими двумя контрольными суммами, и дает указание на остаточную частоту ошибок для слов данных до примерно 2 ^ 11 бит. Который, очевидно, намного меньше вашего требования 2 ^ 38 бит...

Ответ 2

Adler32 имеет совершенно другое назначение, чем MD5. Adler32 - это контрольная сумма. MD5 - это защищенный дайджест сообщений. Adler32 предназначен для быстрых хэшей, имеет небольшое битовое пространство и простой алгоритм. Его частота столкновений низкая, но недостаточно низкая, чтобы быть в безопасности. MD5, SHA и другие криптографические/защищенные хэши (или дайджесты сообщений) имеют намного большие битовые пространства и более сложные алгоритмы, таким образом, имеют гораздо меньше коллизий. Сравните SHA2-256, например; 256 бит по сравнению с Adler32 ничтожно 32 бит.

Adler имеет свое назначение, например, в хеш-таблицах или для быстрой проверки целостности данных. Тем не менее, он не предназначен для той же цели, что и MD5 или другие безопасные дайджесты.

Кстати, если вам нужна простая, но несколько надежная контрольная сумма, то, похоже, Флетчер превосходит Адлера. Я бы предположил, что они оба превосходят CRC, хотя, возможно, это не простая контрольная сумма, основанная на сложении (хотя она очень подвержена конфликтам). Если вам нужны ОБА и производительность, и безопасность, тогда используйте ОБА алгоритмы. Используйте алгоритм контрольной суммы для быстрого расчета и поиска, затем используйте больший дайджест для более тщательного подтверждения, если оно найдено.

Чтобы ответить на ваш вопрос об обеспечении достоверности архивов, я бы сказал, что этого вполне достаточно. Лучший выбор? Сомнительный. Возможность ошибки? Очень низкий.

Ответ 3

Это древний алгоритм; тот, который, как говорится на странице Википедии, "меняет точность на скорость". Короче говоря, нет, вы не должны полагаться на это.

Дело в том, что при множественных повреждениях эта контрольная сумма может все еще проходить как "хорошо". Из-за лавинного эффекта это значительно реже встречается в современных алгоритмах (даже в старых MD5).

На современных машинах скорость не так важна, поэтому я бы предложил использовать современный алгоритм (какой бы ни был текущий), даже для файлов в диапазоне TB. Незначительная экономия времени, которую вы получили бы со старой системой контрольных сумм, ИМХО не достаточна, чтобы уравновесить значительно возросший риск необнаруженного повреждения данных - и, честно говоря, 20 ГБ файлов - это не так много данных в наши дни, которые вам нужно использовать слабыми ( и я осмелюсь нарушить) алгоритмы.

Ответ 4

Adler-32 и MD5 не сопоставимы таким образом. На самом деле, MD5 является криптографической контрольной суммой, если вы хотите убедиться, что файл не был взломан противником, в то время как Adler-32 (а также CRC, сопоставимый с Adler-32) предназначен для обеспечения файл не был случайно изменен (контрольная сумма целостности.)

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

Эта ссылка дает хорошее обсуждение того, как использование Adler-32 может обеспечить преимущества производительности для некоторых видов кода, которые должны использовать криптографические суммы для дополнительной уверенности. А именно, что вы можете использовать меньшую и дешевую контрольную сумму, чтобы посмотреть, стоит ли делать более дорогой MD5/SHA/Whirlpool в случае изменения файлов.

Ответ 5

Он менее надежный, чем MD5 или CRC (примерно такой же, как CRC). Преимущество - это скорость, недостаток - это больше показаний для коротких данных (несколько сотен байт) - смысл в том, что распределение хеш-значений не очень хорошо охватывает доступный 32-битный вывод. Для больших файлов это хороший выбор.