Безопасно ли хранить хэш sha256 исходного незашифрованного файла, который должен храниться в зашифрованном виде?

Я работаю над системой управления документами, и для обнаружения изменений в файлах/дубликатов файлов я использую sha256 для получения дайджестов для сравнения. Это делается на питоне. Система может быть настроена на шифрование файлов перед сохранением.

Вопрос в том, безопасно ли по-прежнему хранить дайджест для незашифрованного файла.

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

Предполагая, что файл не может быть восстановлен из хеша и тот факт, что файл хранится в зашифрованном виде, должно быть безопасно сохранить исходный хеш для сравнения/поиска... или мне следует пересмотреть свою стратегию? эти сравнения будут внутренними для приложения и в любом случае не будут доступны пользователю.


person L0stLink    schedule 25.09.2019    source источник
comment
Вы предполагаете, что злоумышленник заменяет файл старой версией? Это называется атакой отката.   -  person kelalaka    schedule 25.09.2019
comment
Возможно, вам повезет больше, если вы зададите этот вопрос на сайте InfoSec.SE.   -  person Aran-Fey    schedule 25.09.2019
comment
Что конкретно вас беспокоит? Обратимость? Какая-то атака на основе хеш-коллизии?   -  person deceze♦    schedule 25.09.2019
comment
Является ли файл уникальным? Потому что, если это файл, доступный в другом месте, скорее всего, его хэш также находится в словаре.   -  person Yann Vernier    schedule 25.09.2019
comment
Пока файлы, которые вы храните, являются чистыми двоичными файлами определенной длины (не очень маленькими текстовыми файлами ascii, размер которых меньше, например, 12 байтов), данные файла не могут быть восстановлены. Для небольших ASCII-файлов (которые могут быть даже идентифицированы по размеру файла, который также хранится в незашифрованном виде) хранение SHA-256 может вызвать проблемы с безопасностью (генерация всех возможных документов методом перебора). Поэтому я бы установил минимальный размер документов ~ 20 байт.   -  person Robert    schedule 25.09.2019
comment
Система защищена логином, а действия, вызывающие изменение сохраненных данных, регистрируются и являются обратимыми (например, git). Можно предположить, что человек, способный войти в систему, является доверенным (достаточно в той степени, в которой это разрешено разрешениями, предоставленными пользователю). @ Роберт, что касается файлов, они будут иметь размер не менее нескольких сотен байт, как правило, в диапазоне KiB и MiB.   -  person L0stLink    schedule 25.09.2019
comment
@deceze меня беспокоит, безопасно ли использовать хэш незашифрованного файла для идентификации зашифрованного файла, учитывая, что файлы будут сохранены на диск и будут иметь GUID в качестве имени, связанного с таблицей базы данных с сохраненным хешем. ссылаться на него. Может ли хранение хэшей незашифрованных файлов с прямой ссылкой на зашифрованные файлы поставить под угрозу безопасность системы?   -  person L0stLink    schedule 25.09.2019
comment
Для обычных сценариев это не проблема, но если это файлы, которые никому не нужны (например, база данных Keepass), сохранение хэша перед шифрованием может дать кому-то уверенность в том, что это именно тот файл, который они каким-то образом получили. Например, из блоков жесткого диска из ошибочно записанных временных файлов они могут и восстановить правильный файл.   -  person chexum    schedule 17.02.2020


Ответы (1)


Сопротивление прообразу SHA-256 составляет 2 ^ 256, а сопротивление коллизиям — 2 ^ 128 (краткое резюме). С другой стороны, вы можете просто проверить количество комбинаций, необходимых для угадывания ключа для расшифровки файла. Сложность атаки прообраза SHA-256 сравнима со взломом 256-битного ключа для симметричного шифрования. Так что, в целом, я бы сказал, что этот подход достаточно безопасен, потому что проще восстановить исходный файл, угадывая ключ, а не находя прообраз из SHA-256.

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

person Oleh Rybalchenko    schedule 25.09.2019