есть ли способ проверить, зашифрованы ли данные файла или нет?

#algorithm #file-io #storage

#алгоритм #file-io #Хранение

Вопрос:

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

  • Я использовал энтропию Шеннона для проверки энтропии файлов, делая это, мы можем найти энтропии файла, что приведет к выводу, что данные либо зашифрованы, либо сжаты, либо имеют случайные данные, потому что, если энтропия файла высока, в нем могут быть указаны эти три условия
  • Но он не может различать сжатый и зашифрованный файл, поскольку высокая энтропия может привести к любому из этих условий

Как мы можем определить, зашифрован файл или нет?

Комментарии:

1. Если вы ничего не можете предположить ни об исходном содержимом, ни об алгоритме сжатия, ни о схеме шифрования, это будет довольно сложно. У вас есть еще какая-нибудь доступная информация?

2. ничего особенного, кроме имени и формата файла.

3. Какой тогда формат? Я имею в виду, .txt никогда не шифруется, тогда .zip как всегда сжимается и т.д.

Ответ №1:

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

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

Довольно хорошей реализацией было бы искать целую кучу тегов, которые вы знаете, а затем использовать эмпирическое правило:

  • Небольшая часть материала с низкой энтропией в начале => зашифровано, в то время как
  • Длинный бит материала с низкой энтропией в начале (например, jpeg) или материал с низкой энтропией в конце (например, zip), или много маленьких битов с низкой энтропией между ними (например, аудио / видео) => сжатый.

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

Комментарии:

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

2. Вы хотите сказать, что проверяете энтропию файла в блоке битов, находите энтропию и анализируете

3. Да, хотя простая энтропия порядка 0, вероятно, не подойдет. Создайте прогностическую модель порядка 2 для всего файла, а затем для каждого отдельного байта вы можете увидеть, может ли модель для файла без этого байта предсказать этот байт. Сжатые файлы будут содержать кластеры из правильно предсказанных байтов.