Я ищу эффективное средство для частичной проверки целостности «больших» наборов данных на медленном носителе. Это кажется распространенной проблемой, поскольку размеры файлов растут непропорционально скорости передачи.
Например, для конкретных чисел терабайт данных через USB2. Проверка того, что эти данные все еще действительны, путем чтения каждого байта в хэш или контрольную сумму требует дня и увеличивает риск отказа диска.
Вместо этого этот код должен будет проверять случайные фрагменты данных и обеспечивать вероятность достоверности в зависимости от доступного времени. Если позволить работать достаточно долго, все блоки будут проверены (базовый случай чтения всего набора данных).
«История» использования:
— данные хранятся в больших зашифрованных контейнерах (размером от 1 ТБ до 1 ГБ).
– каждый контейнер резервируется на нескольких наборах дисков в разных местах.
— проверка проверки. должно выполняться без знания базовых данных или ключей.
Какие режимы сбоя необходимо ОБНАРУЖИТЬ в этом подходе:
– сбои при транспортировке хранилища (например, контроллер отбрасывает части физического адреса); – ошибки сектора (данные не возвращаются для определенного блока); память или кэш)
При обнаружении ошибок данные восстанавливаются из резервного хранилища. Данные проверки, вероятно, должны храниться отдельно.
Поскольку целью является целостность данных, методы файлообменных сетей кажутся неприменимыми — «дерево хэшей» потребует полного хранения хэшей на каждом узле, что кажется большим объемом памяти, чем необходимо для сценариев без активного злоумышленники.
- Как определить компромисс между объемом памяти и временем чтения соответствующих блоков файла?
- Если хэш-дерево/хэш-список — лучший способ, насколько безопасно хранить частичные значения хэшей?
- Будет ли какая-то контрольная сумма или код исправления ошибок лучшим выбором, чем хэши для эквивалентной защиты?