Простой способ обнаружить шифрование - PullRequest
4 голосов
/ 26 февраля 2012

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

Можно ли, скажем, вычислить какое-то значение для первых 100 байтов или 1024 байтова потом решать?У кого-нибудь есть источники для этого?

Ответы [ 3 ]

3 голосов
/ 21 декабря 2012

Я бы использовал расчет кросс-энтропии . Рассчитайте значение кросс-энтропии для байтов X для известных зашифрованных данных (оно должно быть около 1, независимо от типа шифрования и т. Д.) - вы можете избегать верхних и нижних колонтитулов файлов, поскольку они могут содержать незашифрованные метаданные файла.

Рассчитать энтропию для файла; если оно близко к 1, то оно либо зашифровано, либо /dev/random. Если он достаточно далеко от 1, то, скорее всего, он не зашифрован. Я уверен, что вы могли бы применить тесты значимости для этого, чтобы получить базовый уровень.

Это около 10 строк Perl; Я не могу вспомнить, какая библиотека используется (хотя, это может быть полезно: http://dingo.sbs.arizona.edu/~hammond/ling696f-sp03/addonecross.txt)

2 голосов
/ 26 февраля 2012

Вы можете просто создать систему, которая распознает определенные распространенные формы зашифрованных файлов (например: распознавать зашифрованные zip, rar, vim, gpg, ssl, ecryptfs и truecrypt).Любая попытка определить шифрование на основе необработанных данных быстро приведет к обсуждению стеганографии.

1 голос
/ 26 февраля 2012

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

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

Представьте, что я написал бы программу, которая выводит два файла: file1 содержит 1024 бита π и file2 - это зашифрованная версия file1. Если вы ничего не знаете о содержимом file1 или file2, вы не сможете их различить. На самом деле, вполне вероятно, что π содержит содержимое file2 где-то!

EDIT:

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

...