Шифрование изображения с сохранением исходного размера

Материал из testwiki
Перейти к навигации Перейти к поиску

Шифрование изображения с сохранением исходного размера (Шаблон:Lang-en) - Шифрование битового потока (Шаблон:Lang-en) JPEG изображений. Данный алгоритм принимает на вход битовый поток исходного изображения и выборочно шифрует дополнительные биты. Подобный способ шифрования позволяет сохранить размер изображения без изменения.

Введение

На современном этапе развития телекоммуникационных технологий изображения широко используются при работе различных веб-приложений. При этом для большинства приложений остро стоит вопрос защиты передаваемой информации. С учетом того, что размер изображений достаточно большой, а некоторым приложениям необходимо работать в режиме реального времени, процесс шифрования должен осуществляться достаточно быстро. Традиционные алгоритмы шифрования, например, такие как AES и DES, разрабатывались без учета этих требований и не являются подходящими для данных целей. Поэтому возникает необходимость в создании новых алгоритмов шифрования. Большинство существующих схем шифрования JPEG изображений либо плохо совместимы со стандартом JPEG, либо существенно меняют размер изображения. Алгоритм, предложенный в данной статье, в свою очередь, гарантирует, что размер файла будет константным и не изменится после шифрования. Гарантируется это предотвращением иcчезновения маркеров.

Битовый поток и байтовые сдвиги

Рисунок 1. Структура битовго потока.

Рисунок 1(а) отображает структуру битового потока JPEG изображения. SOI и EOI - маркеры, обозначающие начало и конец изображения соответственно. Битовые потоки содержат сегменты, использующиеся для декодирования данных таких как, например : Таблицы Хаффмана. Каждый из сегментов начинается с маркера. Маркер состоит из двух байтов - первый из которых всегда равен 0xFF, а следующий за ним байт определяет тип маркера и принимает значение в диапазоне от 01 до FE.

Рисунок 1(b) отображает структуру энтропийно закодированного сегмента данных (Шаблон:Lang-en), показанного на рисунке 1(а). Данные состоят из MCU(Minimum Coded Unit)[1] блоков. Каждый MCU блок содержит в себе один DC[2] коэффициент и некоторое количество AC коэффициентов . Как видно из картинки, каждый DC коэффициент состоит из битов, закодированных кодами Хаффмана и дополнительных битов (Шаблон:Lang-en).

Особенности сохранения размера изображения.

Рисунок 2.Байтовый сдвиг в энтропийно закодированных данных.

На рисунке 2 изображен пример энтропийно закодированного сегмента данных. DCk - энтропийно закодированный коэффициент DC, а ACk,1 - энтропийно закодированные данные первого АС коэффициента в блоке k. Все данные содержат биты, отвечающие коду Хаффмана, а также дополнительные биты . Чтобы сгенерировать битовый поток, к энтропийно-закодированным данным применяется метод деления на байты (Шаблон:Lang-en) как показано на рисунке 2(b). После применения данной операции, необходимо учесть, что не исключено получить байт FF который , впоследствии, будет принят за маркер. Чтобы решить данную проблему применяется байтовый сдвиг (Шаблон:Lang-en). После каждого байта FF в коде Хаффмана или в дополнительных битах размещается нулевой байт , как показано на рисунке 2(с). Очевидно, что после применения данной операции размер битового потока изменится. В следующем разделе будет рассмотрен алгоритм байтового сдвига , не изменяющий размер битового потока.

Шифрование DC коэффициентов

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

  • Случайная подстановка. Корреляция между соседними DC коэффициентами , вносящими существенный вклад в степень сжатия будет ослаблена. Очевидно, это приведёт к увеличению размера файла.
  • Шифрование путём расширения разницы между квантованым коэффициентом текущего блока DC коэффициента и предыдущего. Это также приводит к увеличению размера изображения.
  • Коэффициент разностного шифрования. Используется корреляция между смежными коэффициентами DC. Возникают проблемы при декодировании изображения.

Шифрование АC коэффициентов

Как правило, АС коэффициенты содержат информацию о деталях изображения. Незашифрованные АС коэффициенты позволят получить некоторую информацию об изображении. Такую как, например, силуэт каких-либо предметов. Выделяются следующие типовые методы шифрования данных коэффициентов:

  • Внутриблочная перестановка. Минус метода заключается в значительном увеличении размера файла.
  • Перестановка внутри секции.
  • Внутриблочная символьная перестановка.
  • Перестановка на основе частоты. Влияет на коэффициент сжатия изображения

Алгоритм предлагаемого метода.

Рисунок 3. Результат предложенного метода.

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

Шаги алгоритма:

  • 1. Анализируются энтропийно-закодированные сегменты данных и выбираются дополнительные биты, удовлетворяющие следующему условию: байт, из которого был выбран бит, должен содержать как код Хаффмана, так и дополнительные биты. Причем код Хаффмана, должен содержать как минимум один «0» бит.
  • 2. Генерируется случайная бинарная последовательность с секретным ключом.
  • 3. Выполняется EX-OR операция между дополнительными битами и случайно-сгенерированной последовательностью из пункта 2. Все дополнительные биты заменяются на полученный результат.
  • 4. Зашифрованный битовый поток получается комбинированием зашифрованных дополнительных битов из пункта 3 с остальными данными.

Генерация случайной последовательности.

Случайная последовательность играет важную роль в данном алгоритме шифрования. В предлагаемом методе применяются хаотические карты в силу простоты и достаточной надежности. Любые другие генераторы случайных последовательностей также могут быть применены в данной схеме. Математическое определение хаотических карт:

xn+1=μxn(1xn), где xn[0,1.0] и μ[0,4.0].

x0 и μ - задаются изначально.

Возможность шифрования байтов

Рисунок 4. Возможность шифрования

На рисунке 4 заменены все дополнительные биты символом 'x'. Рассмотрим подробно какие байты можно шифровать, а какие нет:

  • 1. Первый байт состоит из 5 бит кода Хаффмана равных "10011" и 3 дополнительных бит. Даже если все дополнительные биты будут равны 1, байт не будет равен "FF". Следовательно, данные можно шифровать.
  • 2. Второй байт состоит из 3-х дополнительных бит и 5 бит кода Хаффмана, равных "11111". Поскольку дополнительные биты до шифрования были равны "111"(рис 2(b)) после второго байта идет нулевой байт. Таким образом, если применить алгоритм шифрование к данным трем дополнительным битам, то результат может не быть равен "111" , что приведёт к отсутствию нулевого байта , который стоит перед ним в незашифрованной версии. Этот приведёт к изменению битового потока и размера файла. Таким образом, второй байт шифровать нельзя.
  • 3. Третий байт не содержит дополнительных битов, поэтому не шифруется.
  • 4. Последний байт содержит один бит кода Хаффмана, равный нулю и 7 дополнительных битов. Очевидно, что шифровать дополнительные биты можно, так как результрующий байт не будет равен "FF".

Безопасность данного алгоритма

Существует два основных вида атак на алгоритмы подобного рода: атака грубой силой и криптоанализ.

Методы атак грубой силой

1. Перестановка последовательностей DC коэффициентов внутри группы.

Поскольку все коэффициенты DC случайно переставляются внутри своей группы, существует возможность подсчитать конечное число перестановок, используя данную формулу:

t=1M|St|!, где S - обозначает каждую группу, M - количество групп.

2. Перестановка последовательностей AC коэффициентов внутри категории.

Аналогичным образом существует возможность посчитать полное количество перестановок AC коэффициентов внутри каждой категории. Так как суммарное число AC коэффициентов в каждом MCU блоке составляет 63, получаем следующую формулу подсчета полного числа перестановок:

t=063|Ht|!, где H - обозначает каждую категорию.

Методы криптоанализа

Исходя из того, что число ненулевых AC коэффициентов в блоке DCT коррелирует с определенными характеристиками соответствующего блока такими как, например, текстура изображения, был предложен метод называемый "ненулевой счетной атакой" (Шаблон:Lang-en). При помощи данного метода существует возможность получить текстуру исходного изображения из соответствующего зашифрованного.[3] . Позднее , для улучшения данного алгоритма, было предложено еще три новых метода, использующих подсчёт количества ненулевых коэффициентов AC, а так же нахождение позиции последнего ненулевого коэффициента.[4] . При помощи этих алгоритмов улучшается точность получения контура исходного изображения из зашифрованного. Один из возможных способов избежать взлома подобными атаками - это использовать алгоритм изменения распределения AC коэффициентов внутри каждого блока [5].

См. также

Научные статьи

Примечания

Шаблон:Примечания Шаблон:Изолированная статья