Значение контрольной суммы файла изменилось после долгого времени на неиспользованном диске

316
ng80092a

У меня есть накопитель с сохраненными данными, которые я не использовал уже 3 года и более. Затем я проверил много файлов с контрольной суммой corz.

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

Я также проверил контрольную сумму каждого файла и заметил, что один из zip-файлов был изменен, хотя я уверен, что ничего не изменил в нем.

Я протестировал zip-файл, распаковал содержимое, и все в порядке, но я не могу обойти тот факт, что сейчас у него другое значение контрольной суммы.

Контрольные суммы

Что может вызвать это? И почему тест и извлечение не возвращают ошибку?

В zip-файле хранится только один элемент, и я на 100% уверен, что не изменил его после контрольной суммы. Может кто-нибудь объяснить это или помочь найти причину?

1

1 ответ на вопрос

0
Kamil Maciorowski

Почему тест и извлечение не возвращают ошибку?

Потому что zip-файл, безусловно, в порядке. Zip-формат использует CRC-32 для обнаружения повреждений, и очень маловероятно, чтобы случайно измененный файл прошел этот тест.

По этой причине я думаю, что это старая контрольная сумма, что не так. Это было ошибочно рассчитано несколько лет назад.


Что может вызвать это?

Возможно, вы столкнулись с ошибкой программного обеспечения. Подумайте, могут быть ошибки, которые проявляются только в определенных обстоятельствах. С другой стороны, вычисление контрольной суммы относительно просто. Мы не можем исключить это, но я бы предпочел обвинить что-то еще.

Космический луч. Или что-то еще, что сделало один бит в вашей оперативной памяти, изменить его состояние. Это был не последний бит контрольной суммы, так как две контрольные суммы различаются по многим битам. Я думаю, что немного перевернулся до или во время расчета, несколько операций были выполнены позже, и это единственное изменение повлияло на весь результат. Я вижу md5на вашем скриншоте, я думаю, ваша контрольная сумма - MD5. Это хеш-функция; такие функции специально создаются (то есть определяются, выбираются) таким образом, что при переключении одного бита в заданную входную половину (в среднем) выходных битов также происходит изменение. Бит, который перевернулся, возможно, не был входным битом, это мог быть некоторый прерывистый бит; Тем не менее, неудивительно, что две суммы очень разные.

Я упомянул космические лучи, но также возможно, что ваша память не была надежной на 100% и слегка перевернута без внешней причины.

Эти вещи случаются. Несколько примеров:

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

  2. Использование ошибок памяти для атаки на виртуальную машину. Авторы Sudhakar Govindavajhala и Andrew W. Appel.

    Наша атака работает, посылая в JVM [Java Virtual Machine] Java-программу, которая разработана таким образом, что практически любая ошибка памяти в ее адресном пространстве позволяет ей контролировать JVM. Все обычные виртуальные машины Java и .NET уязвимы для этой атаки.

  3. Артем Динабург зарегистрировал доменные имена, несколько отличающиеся от разных популярных доменов . Устройства со всего мира посетили эти адреса.

Похожие вопросы