Насколько надежна контрольная сумма adler32? - PullRequest
18 голосов
/ 18 мая 2011

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

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

Ответы [ 5 ]

16 голосов
/ 18 мая 2011

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

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

12 голосов
/ 23 сентября 2012

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

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

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

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

4 голосов
/ 18 мая 2011

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

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

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

2 голосов
/ 23 октября 2013

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

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

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

1 голос
/ 18 мая 2011

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

...