2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Хэш-функции и CRC
Сообщение28.02.2009, 09:30 
Аватара пользователя
Здравствуйте, интересует меня такой вопрос - часто в интернете при скачивании какого-нибудь большого файла на сайте указывается его хэш. Есть ли какие преимущества в использовании хэш-значений по сравнении с контрольной суммой, рассчитанной по одному из алгоритмов CRC?

 
 
 
 
Сообщение28.02.2009, 12:39 
Аватара пользователя
Насколько я понимаю, у этих функций немного разные задачи.
CRC --- это контрольная сумма, нужна для обнаружения случайных ошибок при передаче данных.
MD5, SHA-1 и прочие хеши --- это отпечатки, предназначены для обнаружения намеренных изменений файла злоумышленниками (например, с целью внедрения трояна в исполняемый модуль).
Изменить файл так, чтобы контрольная сумма не изменилась, очень легко, для отпечатка же это сделать практически невозможно.

Отпечатки, конечно, также могут использоваться в качестве контрольной суммы и, разумеется, будут работать значительно лучше, чем CRC (по причине большей длины).

 
 
 
 
Сообщение28.02.2009, 15:30 
Аватара пользователя
Существует два класса контрольных сумм.
1) Коды которые позволяют обнаружить ошибку в файле. Cюда подходит любой хэш. CRC, MD5, SHA-1.
2) И коды которые позволяют исправить ошибку. Сюда относится CRC.

CRC позволяет исправить ошибки. Но CRC очень слабый. Так как он позволяет исправить всего 1-32 ошибки и то если они идут одиночными. Поэтому для исправления ошибок CRC практически не применяют.
Вторая слабость это то что длина CRC составляет 32бита в отличии от MD5 и SHA которые длиннее. Это значит что файлов с одинаковым CRC могут встречаться чаще чем MD5. Считается что 128бит достаточно что-бы считать каждый такой хэш уникаленым. То есть вероятность встечи двух различных файлов с таким хэшом практически равна нулю.

А вот для CRC такого сказать нельзя. Это нужно для того чтобы быстро сравнить файлы. К примеру у нас есть два файла с одинаковыми названиями на разных сайтах. Если CRC одинаков то мы не можем сказать это одинаковые файлы или нет. А вот если хэш длиннее то мы уже можем говорить что файлы одинаковые или различные если они совпадают и не совпадают соответственно.

Еще CRC очень легко подделать. Что касается SHA и MD5 то гораздо труднее. Не знаю нашли ли алгоритмы или еще нет.

Плюс CRC только в том что он очень быстро считается.

 
 
 
 
Сообщение28.02.2009, 15:53 
Аватара пользователя
Спасибо вам за ответы. А если например, при копировании файла из сети произошли, то велика ли вероятность, что CRC окажется одинаковым? Меня интересует именно задача по обнаружению изменений в файле, как случайных, вызванных какими-либо сбоями, так и преднамеренными. Есть ли программы такие, которые позволяют отслеживать изменения в выбранном наборе файлов?

 
 
 
 
Сообщение28.02.2009, 16:32 
Аватара пользователя
Вероятность равна 1/(Число возможных значений контрольной суммы). Соответственно, для CRC16 вероятность равна $2^{-16}$, для CRC32 --- $2^{-32}$. То есть, из $2^{32}$ файлов, при копировании которых произошло (не пойманное на другом уровне) искажение информации, в среднем один пройдёт проверку на CRC32.

Цитата:
Есть ли программы такие, которые позволяют отслеживать изменения в выбранном наборе файлов?
Ну... например, системы контроля версий такое умеют. Не знаю, правда, то ли это, что Вам надо.

 
 
 
 
Сообщение28.02.2009, 17:24 
Cat писал(а):
Меня интересует именно задача по обнаружению изменений в файле, как случайных, вызванных какими-либо сбоями, так и преднамеренными. Есть ли программы такие, которые позволяют отслеживать изменения в выбранном наборе файлов?

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

Более профессиональное решение - использование протокола SSL при передаче по сети.

 
 
 
 
Сообщение28.02.2009, 17:47 
Аватара пользователя
Cat в сообщении #190398 писал(а):
Меня интересует именно задача по обнаружению изменений в файле, как случайных, вызванных какими-либо сбоями, так и преднамеренными.

Защиту от преднамеренных изменений могут обеспечить только криптографические хеш-функции. CRC к таким не относится.
Простейшими примерами программ для отслеживания изменений являются md5sum, sha1sum и т.п. Защищу от повреждений (с возможностью восстановления) дают программы типа rar (с recovery records), parchive и т.п.
Почитайте википедию на этот счет:
http://ru.wikipedia.org/wiki/CRC
http://ru.wikipedia.org/wiki/md5sum
http://en.wikipedia.org/wiki/parchive

 
 
 
 
Сообщение28.02.2009, 18:12 
Аватара пользователя
Пока что необходима программа, которая контролирует изменения, произошедшие в наборе файлов через некоторый промежуток времени, работающая на отдельном компьютере или с возможностью доступа по сети, а также проверяющая файлы при копировании с одного носителя на другой. О криптографических хэш-функциях я имею представление и понимаю, что реализовать их не составит труда. Но хотелось бы выяснить для себя есть ли подобные программы и есть ли смысл написать свою.
maxal, md5sum она ведь с файлами только на локальном компьютере может работать?

 
 
 
 
Сообщение28.02.2009, 18:39 
Аватара пользователя
Cat
Такие программы называются ревизорами. Например, ADinf.
md5sum работает только с локальными файлами (или с файлами на сетевых дисках), что впрочем логично - чтобы проверить содержимое файла на изменения, надо это содержимое так или иначе получить на компьютере, где происходит проверка.

 
 
 
 Re: Хэш-функции и CRC
Сообщение29.06.2009, 21:26 
Аватара пользователя
worm2
Привет! Столкнулся с проблемой замены картинки в ехе. Там стоит проверка контрольной суммы файла. Как мне заменить картинку с сохранением контрольной суммы от старой. Есть ли такие проги меняющие сумму? СRC32 checker 0.2 хоть и считает сумму, но менять отказывается.

 
 
 
 Re: Хэш-функции и CRC
Сообщение30.06.2009, 05:43 
Аватара пользователя
Rusikxxx
см. https://web.archive.org/web/20130421051 ... 118r.shtml

 
 
 
 Re: Хэш-функции и CRC
Сообщение30.06.2009, 22:58 
Аватара пользователя
Что означает данный алгоритм. Есть ли шанс его обойти?
Код:
CRC32 :: 002B4138 :: 002C5338
   Referenced at 0012FCD4
   Referenced at 0012FD20
   Referenced at 00130058
CRC32 :: 002CFF90 :: 002E1190
   Referenced at 0021A894
CRC32b :: 002D2A90 :: 002E3C90
   The reference is above.
ZLIB deflate [word] :: 002CFE90 :: 002E1090
   Referenced at 0021A25C

 
 
 
 Re: Хэш-функции и CRC
Сообщение15.10.2009, 12:59 
У меня проблема.Сказал файл а он защищён паролем и выдаёт ошибку CRC.А пороль платный.Можно как-то исправить ошибку или обойти пароль?

 
 
 
 Re: Хэш-функции и CRC
Сообщение15.10.2009, 13:07 
Sanieli в сообщении #251866 писал(а):
Можно как-то исправить ошибку или обойти пароль?
Это вряд ли. Файл, скорее всего, просто зашифрован паролем.

 
 
 
 Re: Хэш-функции и CRC
Сообщение15.10.2009, 13:30 
Если кто знает плиз помогите.мой маил balaramka@mail.ru

 
 
 [ Сообщений: 15 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group