2010-10-26 5 views
9

Что такое наиболее подходящая хеш-функция для проверки целостности файлов (контрольные суммы) для обнаружения коррупции?Подходящая хеш-функция для обнаружения повреждения данных/проверки целостности данных?

мне нужно учитывать следующее:

Широкого диапазона размера файла (1 кб до 10GB +)
Много различных типов файлов
Большой коллекции файлов (+/- 100 ТБА и растущего)

Большие файлы требуют более высоких размеров дайджеста (SHA-1 против SHA 512)?

Я вижу, что SHA-семейство называется криптографическими хеш-функциями. Не подходят ли они для использования «общего назначения», такие как обнаружение коррупции файлов? Будет ли что-то вроде MD5 или Tiger лучше?

Если злоумышленное вмешательство также вызывает беспокойство, будет ли ваш ответ изменен w.r.t на наиболее подходящую функцию хэша?

Внешние библиотеки не являются опцией, только то, что доступно на Win XP SP3 +.

Естественное исполнение также вызывает озабоченность.

(Пожалуйста, извините мою терминологию, если она неверна, мои знания по этому вопросу очень ограничены).

ответ

15

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

Тип файла не имеет значения. Хэш-функции работают над последовательностями битов (или байтов) независимо от того, что представляют эти биты.

Функция хэш-функции вряд ли будет проблемой. Даже «медленные» хеш-функции (например, SHA-256) будут работать быстрее на обычном ПК, чем на жестком диске: чтение файла будет узким местом, а не хэшированием (2,4 ГГц ПК может хэш-данные с SHA-512 со скоростью около 200 МБ/с, используя одно ядро). Если производительность хеш-функции является проблемой, то либо ваш процессор очень слаб, либо ваши диски быстрые SSD (и если у вас 100 МБ быстрого SSD, то я как бы ревнив). В этом случае некоторые хэш-функции несколько быстрее, чем другие, MD5 является одной из «быстрых» функций (но MD4 быстрее, и это достаточно просто, что его код может быть включен в любое приложение без особых хлопот).

Если вредоносное вмешательство является проблемой, то это становится проблемой безопасности, и это сложнее. Во-первых, вы хотите использовать одну из криптографически непрерывных хеш-функций, поэтому SHA-256 или SHA-512, а не MD4, MD5 или SHA-1 (недостатки, обнаруженные в MD4, MD5 и SHA-1, могут не применяться к конкретным ситуация, но это тонкий вопрос, и лучше играть безопасно). Тогда хеширование может быть или не быть достаточным, в зависимости от того, имеет ли злоумышленник доступ к результатам хеширования. Возможно, вам может понадобиться использовать MAC, который можно рассматривать как своего рода хеш-ключ. HMAC - это стандартный способ построения MAC из хэш-функции. Существуют и другие MAC, не содержащие хэш. Более того, MAC использует секретный «симметричный» ключ, что не подходит, если вы хотите, чтобы некоторые люди могли проверить целостность файла, не имея возможности выполнять молчащие изменения; в этом случае вам придется прибегать к цифровым подписям. Чтобы быть кратким, в контексте безопасности вам необходим тщательный анализ безопасности с четко определенной моделью атаки.

+0

Отличный ответ! Спасибо. – links77

Смежные вопросы