Инструмент для детектирования шифртекста
Доброго дня! Может кто подскажет...
Исходные данные – блок данных относительно небольшого размера – единицы/сотни килобайт
Задача – определить с высокой вероятностью, является ли данный блок шифртекстом.
Предполагаемое решение:
поскольку одним из требований к шифртексту является "вероятность появления 0 и 1 равны 0,5, причём значение каждого последующего бита не зависит от предыдущих", отличить шифртекст от открытого текста можно по статистике появления 0 и 1, их пар, троек и т.д. Это все интуитивно понятно.
Вопрос:
Нужны ссылки на алгоритмы (может быть opensource реализации) подсчета битовой статистики, а также критерии, по которым принимать решение "открыто/зашифровано".
Заранее спасибо
Вот библиотека распознающая кодировку, с помощью вероятностного метода
http://popoff.donetsk.ua/text/work/libs/a/charset/
т.е. она может распознать текст читаемый или просто набор символов
комментариев: 11558 документов: 1036 редакций: 4118
Существует, называется видеоплеером.
комментариев: 11558 документов: 1036 редакций: 4118
Тогда Вам стоит освежить в памяти различия между кодированием и шифрованием.
комментариев: 11558 документов: 1036 редакций: 4118
Если сравнивать часть файла в формате, скажем, jpg – то написать такую программу не составит труда, но если нужно определить, является массив сл. данных шифртекстом – для хороших алгоритмов, это невозможно.
И? Такой алгоритм будет криптостойким?
Как только он станет известен, то даже поврежденный архив можно будет отличить от случайных данных. Но поврежденный архив (если нет данных для востановления) будет просто ненужным мусором.
Если он будет не поврежден, тогда зная алгоритм – проблем с индентификацией не составит проблем.
Вобщем, можно написать программу, которая с большой вероятностью сможет отличать случайные денные от неслучайных. Но практически невозможно – программу, которая в полученных данных будет выявлять шифртекст, кроме как взломом алгоритма шифрования.
Jpeg сам по себе не lossless-формат. Можно попытаться пережать инспектируемый кусок данных как jpg с ухудшением качества. Если при этом картинка не изменится, значит это jpg :) Должно работать безотносительно того, насколько случайная картинка.
Итого: отличить куски файлов, сгенерированных уже известными программами (архивы, видео, музыка, картинки и прочие высокоэнтропийные данные) от кусков криптотомов можно, и делается это методом перебора по уже известным алгоритмам и их параметрам. Если алгоритмы не известны, то нельзя. Вопрос о софте, осуществляющем такой функционал (широкого спектра действия), остаётся открытым.
С другой стороны, для стеганографических целей просто нужна опция сохранять шифрованные данные не в виде чистой случайной последовательности, а как-бы прошедшей через кодек или архиватор. (Все дружно просим ntldr'a, чтобы зашифрованный раздел выглядел так, как будто там раньше лежали архивы и фильмы ;)