Уменьшение вероятности возникновения искусственных ошибок в помехоустойчивых кодах с помощью увеличения объёма вкрапляемого стегосообщения

УМЕНЬШЕНИЕ ВЕРОЯТНОСТИ ВОЗНИКНОВЕНИЯ ИСКУССТВЕННЫХ ОШИБОК В ПОМЕХОУСТОЙЧИВЫХ КОДАХ С ПОМОЩЬЮ УВЕЛИЧЕНИЯ ОБЪЁМА ВКРАПЛЯЕМОГО СТЕГОСООБЩЕНИЯ

Слипенчук Павел Владимирович, г. Москва

Статья посвящена проблеме уменьшения количества искусственных ошибок (artificial errors) при реализации стеганографии в помехоустойчивых кодах. Уменьшение количества искусственных ошибок позволяет усложнить стегоанализ и/или вкрапить большее количество данных. Автор предлагает в качестве решения данной актуальной проблемы использовать «коды уменьшения веса». В работе перечислены основные информационно-числовые характеристики «кодов уменьшения веса». Дано описание способа построения «простого кода уменьшения веса» с наибольшей добротностью. Обоснована актуальность изучения «непростых кодов уменьшения веса». Приведён пример использования кодов уменьшения веса в других классах стеганографии.

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

REDUCTION OF ARTIFICIAL ERROR PROBABILITY I IN ECC CODES BY INCREASE MEANS I OF STEGANOGRAPHY DATA VOLUME |

Pavel Slipenchuk, Moscow

This work is devoted to a quantity reduction of artificial errors in ECC steganography. Quantity reduction of artificial errors allows to complicate stegoanalysis and/or to insert more amount of bits. The author offers to use "Weight Reduction Codes" (WRC) as the solution of this actual problem. Information-theoretic parameters of WRC are listed. The method of construct "Simple Weight Reduction Codes" (SWRC) with most possible Q factor is given. Relevance of studying of "Not Simple Weight Reduction Codes" (NSWRC) is explained. Examples of WRC use in other types of a steganography is given.

Keywords: steganographyin ECC, Weight Reduction Codes, artificial error, perfectly secure stegosystem.

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

В отличие от криптографии, которая имеет дело с формальными алгоритмами и работает с идеальными математическими объектами для построения шифров (БР-сеть, РБР, сеть Фейстеля и т. д.), стеганография является междисциплинарной наукой. Стеганографию невозможно представить в отрыве от техники, физики и иных наук, необходимые для изучения контейнеров, в которые осуществляется вкрапление стегосообщения. Без ясного, научного

понимания того, что представляет собой контейнер, говорить о стеганографии как о научной дисциплине трудно, так как стегоанализ изучает именно контейнеры, пытаясь разделить то или иное множество контейнеров на пустые контейнеры и стегоконтейнеры (на не содержащие стегосообщения и содержащие стегосообщения). Если целью криптографии является создание шифра, то целью стеганографии - создание алгоритма вкрапления сообщения в уже заданные контейнеры (или создание алгоритма, порождающего контейнеры по определённому правилу, пытаясь «подражать» текстам и иным объектам, созданные человеком). Стеганография не создает новые «сущности», а как бы «приспосабливается» к уже созданным человеком и/или природой «сущностями», пытаясь вкрапить в них сообщение.

Рис. 1: Схема вкрапления стеганографических данных

Именно по этой причине в настоящий момент стеганография как теоретическая дисциплина оторвана от практики и не смотря на огромный потенциал использования для гражданских (цифровые отпечатки[9], стеганографические водяные знаки[9]) и военных целей (скрытая передача данных[9]), применяется не часто.

Таким образом, говоря языком философии, разумно определить различные стеганографические парадигмы, отличающиеся друг от друга подходом к определению и подходом к изучению контейнеров. Одной из таких парадигм можно назвать «информационную парадигму», которая представляет контейнер как последовательность букв, символов или бит, связанных друг с другом по каким-либо законам. Эти законы могут иметь очень сложный вид и плохо поддаваться изучению; однако формально определив эти законы, можно попытаться построить различные информационно-теоретические модели стеганографии1.

Начиная с «дрезденской модели»[3] существует ряд попыток построения информационно-теоретических моделей в рамках «информационной парадигмы». Одними из наиболее известных являются модели Кристиана Кашена [1], Томаса Мит-тельхольцера[4] и Святослава Волошиновского[6].

Введённая автором «модель трех кана-лов»[7,8] (МТК), в отличие от вышеперечисленных, не имеет общий характер и справедлива только для частного случая стеганографии - стеганографии в кодах, исправляющих ошибки. Однако для построения совершенной стегосистемы[1],

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

можно определить формальные критерии стой-кости[8] для МТК.

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

Данная статья посвящена формальному определению данного кода, названный автором «кодом уменьшения веса» (КУВ) и ряду характеризующих его параметров: скорости, добротности, ёмкости. В статье будут рассмотрены различные свойства и простые методы построения КУВ.

Общая идея стеганографии в помехоустойчивых кодах.

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

Суть стеганографии в помехоустойчивых кодах заключается во вкраплении битов стегосообще-ния в кодовый вектор перед отправкой данных в канал [7] (см рис.1). Позиции вкрапления задаются с помощью ключа. Вкрапляемые биты будем называть искусственными ошибками (artificial errors) [7], а ошибки, происходящие в канале передачи данных, будем называть подлинными ошибками (genuine errors)[7].

Актуальность уменьшения вероятности искусственной ошибки.

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

Возможно некорректное декодирование передаваемого контейнера;

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

Передаваемый по каналу стегоконтейнер содержит в себе искусственные и подлинные ошибки. Обозначим за Ь - кодовый вектор (кодовая последовательность бит) перед вкраплением стегосообщения; d- кодовый вектор после приёма из канала; е - вектор подлинных ошибок, v - вектор искусственных ошибок. Верна формула:

d = b + e-\-v

где 4- означает побитовое сложение по модулю Два

Под 1и е(у) будем обозначать -й бит в векторах искусственной и подлинной ошибки соответственно.

При использовании стеганографии, как канал скрытой передачи данных (СПД)[9], основная задача стегоанализа заключена в определении того, является ли определённая совокупность ошибок на носителе подлинными ошибками или искусственными? При решении данной задачи стоит обратить внимание на два вопроса:

1) как физически отличаются искусственные ошибки от подлинных ошибок?

2) по какому закону возникают физические ошибки и насколько правило выбора позиций для искусственных ошибок отличается от закона возникновения физических ошибок?

При решении первой задачи необходимо непосредственное изучение физического носителя информации или канала. Например, на оптических дисках ошибки возникают в результате старения, попадания пыли или возникновения царапин[5]. Если мы под микроскопом сможем увидеть царапины, которые являются возникновением подлинных ошибок, а при рассмотрении искусственных ошибок не увидеть ни царапин, ни следов старения, ни грязи, то можно подобным образом отличить подлинные ошибки от искусственных. Это очень похоже на атаку по побочным каналам (side channel attacks) в криптографии [2]. В стеганографии подобную атаку так же будем называть атакой по побочным каналам.

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

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

Так же уменьшение вероятности искусственной ошибки может быть полезным при разработке идеальной стегосистемы [8,7]. В работе [8] есть доказательство, что идеальные стегосистемы являются совершенными (perfectly secure)[1]. При использовании математической модели возникновения ошибок, приведённой в работе [8] при уменьшении вероятности искусственной ошибки можно вкрапить большее количество данных, чтобы стегосистема оставалась совершенной.

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

Методы вкрапления искусственных ошибок. Возьмём контейнер длины ^. Предположим, что мы хотим вкрапить стегосообщение длины I. С помощью какого-либо ключа ^ мы определяем позиции {allfl2;a3,a4;,,,,ai} в контейнере, в которые мы хотим вкрапить стегосообщение. Будем обозначать само стегосообщение за s, а -й бит стегосообщения за s,; /-Й бит контейнера, до вкрапления стегосообщения, будем обозначать за b(j); /-Й бит стегоконтейнера, после вкрапления и прохождения через канал с шумом, будем обозначать за d(f).

При этом мы можем руководствоваться следующими методами вкрапления.

Способ 1: «Вкрапление замещением». Если si = 1, то мы в позицию а, записываем 1. Если s. = о, то мы в позицию ft; записываем 0.

В данном методе искусственная ошибка будет равна 1, если Ь(с^) = 0 и = 1 или Ь(с^) = 1 и si = 0. Иначе говоря, верно равенство + st = 1. Если же + st = Q(mod 2} , то искусственная ошибка равна 0.

Извлечение бита стегосообщения происходит следующим способом. Вторая сторона просто берёт бит с позиции а; из стегоконтейнера d:

-f v

Возможна ситуация, когда подлинная ошибка е(п() = 1. Для этого необходимо перед вкраплением стегосообщения подать стего-сообщение в помехоустойчивый код. Если Va £ [dj, аг, аэ, а4,   , а,} вероятность

Р(е(а;) = 1) будет отлична от 0.5, то возможно разработать помехоустойчивый код для стегосо-общений. Разумеется, из-за использования помехоустойчивого кода, объём записываемой скрытой информации уменьшится.

Способ 2: «Вкрапление ошибкой». Если si = 0, то ничего не делаем. Если st = 1, то вкрапляем в позицию а.; ошибку. То есть = 1.

Извлечение бита стегосообщения происходит следующим способом. Вначале контейнер проходит декодирование. После декодирования определяются позиции, на которых произошли ошибки. По ключу к вторая сторона определяет позиции {а1г аг, аъ, а4,  ,а1}. Для каждой позиции определяем, произошла ошибка или нет. Если ошибка не произошла = Ь(с()), то si = 0

, если произошла (сЕ(п;) Ф то si ~ 1- (-ле"

довательно, верна формула:

= г

Аналогично, возможна ситуация, когда е(а;} = 1. Данную проблему будем так же решать помехоустойчивым кодом, как в способе 1.

Простые коды уменьшения веса. Предположим, что будем вкраплять вторым способом (вкрапление ошибкой) биты стегосообщения в контейнер. Тогда выходит, что чем меньше единиц в сте-госообщении, тем меньше искусственных ошибок произойдёт в контейнере.

Будем называть количество единиц в стегосо-общении весом стегосообщения.

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

Разобьём сообщение длины А на и равных частей, каждая часть которой имеет длину т. Каждую часть длины т будем называть входным вектором (или информационным вектором). Само сообщение будем называть входным (или информационным) сообщением. Зададим функцию U, которая каждому

входному вектору однозначно ставит в соответствие некую другую последовательность длины п. Эту последовательность длины п будем называть выходным вектором (или кодовым вектором). Затем из и кодовых векто-

п

ров собираем новое сообщение длины Данное сообщение будем называть выходным (или кодовым) сообщением.

т

Величину г = — будем называть скоростью

п

(кода), так же как в теории кодирования.

Если функция II является биекцией, то эту функцию и обратную к ней будем называть простым кодом уменьшения веса изтви или, для краткости, кодом изтви. Функцию и будем называть кодированием, а обратную к ней декодированием.

Задача кода уменьшения веса в получении кодового стегосообщения меньшего веса, чем входное сообщение. При этом чем ближе скорость кода к единице, тем лучше, так как от скорости кода в минус первой степени зависит то, во сколько раз уменьшится максимально-допустимый объём скрытого сообщения в контейнере.

Сам простой код изтвп можно задать таблицей из двух столбцов, с 2т строками. В первом столбце («столбец т») перечисляются всевозможные последовательности из нулей и единиц длины та, а во втором («столбец л») — кодовые вектора, в которые переходят информационные вектора напротив. Данную таблицу будем называть таблицей кода. Таким образом, сам код можно задавать его таблицей кода.

Приведём пример простого кода уменьшения веса из 3 в 4 с помощью таблицы кода:

m n

000 0000

001 0001

010 0010

011 0100

m n

100 1000

101 0011

110 0101

111 1001

Например, если входное сообщение 010-110010-001-000-101-011 (дефисы расставлены для удобства), то выходное сообщение: 0010-0101 -0010-0001-0000-0011-0100. Вес входного сообщения 9, вес выходного 8.

Будем считать, что вероятность возникновения единицы во входном сообщении равна 0.5. Таким образом, если длина входного сообщения равна А, то вес, в среднем, будет равен 0.5  А. Рассмотрим вес выходного сообщения. Вероятность возникновения единицы из-за равной вероятности каждой из 8 возможных последовательностей длины 3 вычисляется как сумма всех единиц во всех последовательностях длины л, делённая на сумму всех единиц и нулей:

01 + 14+2310 ~ ~ 32

1 4  2Э

Найдём среднестатистический вес кодового сообщения длины А Для этого необходимо вероятность возникновения единицы умножить на скорость кода в минус первой степени и на длину входного сообщения:

4 4 10 5

3

щ

КОД.СООЕЩ

А =

3 32

А =

12

А

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

Удельный вес должен быть меньше 0.5, иначе код не имеет практического смысла. Чем больше разница между 0.5 и удельным весом, тем в большее количество раз уменьшен вес стегосообще-ния.

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

Q = lim

1/2 -А

И/,

КОД.СООЕЩ

1/2-А 1/2 6

= lim —-= - = -

а^ос р - А Р 5

Добротность показывает во сколько раз вес выходного сообщения меньше веса входного сообщения.

Таким образом, качество простого кода уменьшения веса характеризуется двумя величинами: добротностью кода и скоростью кода.

Заметим, что кроме простых кодов уменьшения веса можно рассмотреть коды с переменными длинами информационных и кодовых векторов.

Лемма о простом коде с минимальным удельным весом. Возьмём множество всех кодов уменьшения веса из тп в п. Рассмотрим код с ми-

нимальным удельным весом РМ1д(п,тп), а таблицу кода будем обозначать А мш. Если ихнесколько - возьмём любой из них.

Рассмотрим код, построенный по следующему принципу:

1) построим таблицу с двумя столбцами и с 2™ строками. В первом столбце будем писать информационные вектора, а во втором — кодовые вектора, в которые кодер переводит информационные вектора, стоящие на той же строке. В первом столбце перечислим всевозможные входные вектора длины т. Их всего 2т и каждый из них равновероятен, так как вероятность появления единицы во входном сообщении равна 0.5.

2) Во второй столбец запишем один вектор длины п, веса 0, затем, будем заполнять оставшиеся столбцы векторами длины п, веса 1 так, чтобы эти вектора не повторялись. Когда не останется векторов веса 1, будем заполнять векторами веса 2. Когда «закончатся» вектора веса 2, будем заполнять векторами веса 3 и т.д.

Примером построенного данного кода является ранее построенный код уменьшения веса из 3 в 4.

Удельный вес полученного кода будем обозначать за Р(п,т), саму таблицу кода будем обозначать А. Данный код будем называть оптимальным кодом (уменьшения веса из п в т).

Утве ржде ние. Р( л , т) — Рмш (л , т).

А Если в таблице АМ1111 во втором столбце нет вектора нулевой длины, то мы заменяем любой кодовый вектор в таблице на вектор нулевой длины и получаем код с меньшой вероятностью возникновения единицы, и следовательно с меньшим удельным весом. Получили противоречие. Следовательно, в Амш есть вектор нулевой длины.

Возьмём в Амш кодовый вектор наибольшего веса. Будем считать, что этот вес равен и. Рассмотрим в таблице кодовые вектора меньшего веса ¿. Для каждого I существуют различных комбинаций векторов длины п с весом ¿. Если хотя бы одного из этих векторов не будет, то заменяем вектор веса и на данный отсутствующий вектор. Таким образом, получим новую таблицу кода, удельный вес которого меньше Рмш{гг,т}. Противоречие. Следовательно, в таблице кода Амш присутствуют все различных комбинаций векторов длины п с весом I.

Следовательно, АМ1М построен так же, как код

Впредь удельный вес оптимального кода из теп будем обозначать за Р(тг,т). Таблицу кода любого оптимального кода изтвп будем обозначать за^(т1,т).

Для оптимальных кодов верно неравенство:

Вычисление добротности произвольного оптимального кода. При рассмотрении оптимального кода, за 1¥(п, т) будем обозначать количество единиц в правом столбце таблицы кода. Общая формула вычисления удельного веса:

W

Введём обозначения:

D(n,u) = 0 + 1  с£ + 2  Cl +  + и  С}

Если код является оптимальным, то W(n,m} вычисляется по формуле:

W(n,rrï) = D(nr 0+0 + l)(2m - F(nr 0} где i G Ы, такое, что:

F

F(n, i) < 2m

4 Из формулы (11) следуют формулы:

1) №

2) 1 ,ш) = В(п+ 1,£3) +

+

Рассмотрим случай, когда = ¿2 = 0. Тогда справедлива формула:

Если ¿1 = 12 = г ^ о, то вычитая из второй формулы первую и используя формулу (13), получаем:

j=а

Действительно, от одного вектора веса 0 получаем 0 единиц к величине И/(тг,т); от векторов веса 1 получаем по 1 единице к величине ; от С* векторов веса 2 получаем по 2 единицы к величине W(n,m) и т. д. Это и есть величина D(n,i). Всего векторов 2т. Таким образом, в конце будем иметь (2m — F(ti,£)} векторов веса (£ -f 1).

Из формулы (8) и определения добротности ^ неравенство в формуле (16) верно (7) можно получить формулу вычисления добротности произвольного оптимального кода уменьшения веса:

то

Действительно, так как / < £, (/-(£ + 1)) < 0, а - с{ > 0. Таким обра

Q(n, m) -

1/2

m  2

7J1-1

Если £± < £г = 1, то £± = £2 + 1. Действительно, при увеличении п на единицу, £ не может умг......... " ^ * " "...... я из второй

Ф° н-1 ,т) - ]А7(п,т) - —С,

ча«

г 1 у (13), полу-

и + 1

i-1

+£(0- о+о)  Ci) - (о - о  ô <

J = 0

j=0

Р (пг т ) V/ (пг т) Формулу (11) можно преобразовать в другой вид:

,

где £ Е Н, такое, что:

+

^О, 0 < 2™

Некоторые свойства оптимальных кодов. Как

следует из доказанной выше леммы, для любого не оптимального простого кода уменьшения веса из т в пудельный вес будет большеудельного веса оптимального простого кода уменьшения веса из т в п. Таким образом, оптимальные коды изтпв бротность не уменьшается:

п - это коды, обеспечивающие наибольшую добротность.

Случай, когда 1± > £г невозможен.

Из формулы (14) следует, что при увеличении длины кодового вектора в оптимальном коде, до-

Q

При п = 2т + 1 величина Р(п,т) достигает наименьшего допустимого значения:

VII > 2т + 1 => Р(п,т} = Р(2т + 1,т) =

я

т  (2т) т т  2т т

Из формулы (19) следует верхняя граница для добротности оптимальных кодов:

Из формул (13)(12) имеем: т  2

(?(п,т) =

т—1

0+0-2-+ 0 +О}-^

2ш-1

т

ут

<1 + 1)  2'

2 (¡ + 1) где I £ М, такое, что:

I + 1) > 2™

т п

00 0001

01 0010

т п

10 0100

11 1000

Способ определения максимальной добротности среди простых кодов в случае

постоянного максимального объёма вкрапляемого стегосообщения. Предположим, что в контейнер можно записать не более I бит данных стегосообщения. Данная величина постоянна. Размер стегосообщения, который мы хотим записать, равен I. Предполагаем, что I < Ь. Вкраплять будем методом вкрапления ошибкой. Задача найти простой код с наибольшей добротностью.

Возьмём величину Т2 = -. Возьмём и зафиксируем некое т. За [д] будем обозначать целую часть от х. Для заданного т построим оптимальный код с добротностью Рассматривать коды с добротностью ф(т,п),

т

г2.

Из (21) получаем для добротности нижнюю оценку:

т

где п <

не имеет смысла, так как согласно формуле (18) добротность при уменьшении п не увеличивается.

Величина п не может быть больше либо равна

+ 1. Поясним это. Обозначим за Ъ2 количество бит, полученные после кода уменьшения веса. Справедлива оценка:

Обозначим за добротность какого-

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

<?

Коды с добротностью равной или меньшей единицы не имеют практического смысла. Не все простые коды имеют добротность большую единицы. Рассмотрим код из 2 в 4 представленный таблицей кода:

= - = Ь

Таким образом, Ь.

Скорость кода при фиксированном та будет равна:

т т

Таким образом, скорость лежит в пределах: т т

-~ Ъ----

г2 ^ г < т

ш — г,

Неоптимальные коды в силу формулы (23) не имеет смысл рассматривать. Следовательно, для фиксированного171 имеет смысл рассматривать

только кодЛ(ш, Для каждого т, такого,

что 2 < т < тт1МАх найдём все коды,

Для данного кода Р = ~  — = -. Таким

образом, добротность равна 1. Для оптимального кода из 2 в 4, согласно формуле (12), имеем 0(4,2) = 1.

и "ь, I аг\и1 V,

и определим их добротность. Выберем код с наибольшей добротностью.

Величину тМЛХ можно выбрать в соответствии с требованиями быстродействия или памяти. Действительно, память растёт как 0(2т). Однако бы-

стродеиствие алгоритма зависит только от времени обращения в таблицу, то есть как 0(1}.

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

Понятие «ёмкости кода». Лемма о совпадении ёмкости и добротности.

Пусть ¿0 - максимальное количество данных, которые мы можем вкрапить без использования кода уменьшения веса, а 11- максимальное количество входных данных, которые мы можем вкрапить с использованием рассматриваемого кода. Определим за ёмкость (кода) величину: '1

с=г

Пусть существует некий контейнер, в котором мы можем допустить не более V искусственных ошибок. Сделаем ряд предположений:

Предположение 1. Ошибки можно допустить в любом месте контейнера.

Предположение 2. Период алгоритма, определяющий позиции бит данных, в которые осуществляется стеганография, равен объёму контейнера. Предположение 3. Е/(11) < И/ Учитывая, что вероятность появления 1 во входных данных равно 0.5, мы получаем максимальное допустимое количество данных, которые можно записать без использования стеганографи-ческого алгоритма: V

10=- (28) 0 2

Определим за Ь - длину выходного сообщения кода уменьшения веса, при условии, что на вход подали сообщение длины 11. Определим за -вероятность появления единицы в бите выходного сообщения, а за И/ - среднестатистический вес выходного сообщения. Верна формула:

1\V 2-1л V = I  р± =-= W =-1

Следовательно, верно равенство: С = (?

если верны предположения 1, 2 и 3.

Заметим, что в данном случае нам совершенно не важна скорость кода. На практике же очевидно, что < ИЛ

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

Формула (31) является важным свойством добротности. Из этой формулы следует, что имея достаточно большой контейнер, уменьшая при этом V, можно увеличить ф и вкрапить тот же объём данных. Формально говоря, можно исказив всего один бит вкрапить сообщение любой длины 1± < ИЛ Разумеется, при этом потребуется разработать код с невероятной скоростью. Скорее всего, кодирование/декодирование будет занимать огромные промежутки времени. Находя компромисс между добротностью и скоростью, мы можем вкрапить большее количество данных, искажая то же количество бит.

Ограничение на максимальное количество ошибок важно при построении совершенных стегосистем [1,8]. Таким образом, коды уменьшения веса могут увеличить максимальный объём вкрапляемых данных так, чтобы стегосистема оставалась совершенной.

Пример непростого кода уменьшения веса. Актуальность исследования непростых кодов.

Рассмотрим оптимальный код из 3 в 7 (далее код А):

т п т п

000 0000000 100 0001000

001 0000001 101 0010000

010 0000010 110 0100000

011 0000100 111 1000000

Из (29) и (28) следует, что при использовании кода можно вкрапить максимальное количество данных:

Скорость данного кода будет равна гА = 3/7. Рассмотрим непростой код из 3 в 7

т п т п

000 0000000 100 0001

001 0000001 101 001

010 000001 110 01

011 00001 111 1

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

Данный код корректно кодируется и декодируется. Корректность кодирования очевидна в силу постоянной длины информационного вектора. Поясним корректность декодирования. При декодировании мы считываем бит до тех пор, пока не считали семь нулей или единицу. Полученную последовательность декодируем по таблице. В силу того, что у кода В нет кодовых векторов веса большего 1, декодирование всегда будет корректным.

Доопределим понятие скорости кода для кодов с переменным выходом. Определим за 71 величину как среднестатистическую длину кодового вектора. В случае, если каждая входная последовательность равновероятна, то п равна о/мме длин всех возможных кодовых вектором на ^ . Скоростью кода с переменным выходом будем называть величину:

т

Г = й

Как нетрудно видеть, для кода В величина вычисляется по формуле:

7+7+6+5+4+3+2+1 35

23 3

Заметим, что:

7+7+6+5+4+3+2+1 3 -=--< -

Получаем значение скорости кода В:

т 8-3 83 3 >-- -

4

гП - — -

п

35

36

m n m n

000 0000000 100 0001xxx

001 0000001 101 001xxxx

010 000001x 110 01xxxxx

011 00001xx 111 1xxxxxx

Например, последовательность

= 001- 011- 100- 111 (дефисы расставлены для удобства) кодируется как

сОо) = 0000001- 00001хх— OOOlxxx- lxxxxxx Оптимальным кодом А эта же последовательность кодируется как ЛО0) = 0000001- 0000001- 0000100- 0001000- 1000000 . Так как на вес влияет только количество единиц, то отличие кода A от кода C только в том, что на некоторых местах вместо 0 стоят x, что на добротность никак не влияет. Из этого следует, что добротность кода A равна добротности кода C:

^ =

Для того, чтобы из s получить кодовый вектор кода В, можно из кодового вектора C(s) убрать все символы х. Данную операцию обозначим как Des{C{s)y Таким образом:

B

Для нашего примера

В(_з0~) = 0000001-00001- 0001- 1. Но на добротность влияет только количество единиц в информационном и в кодовом векторах! Устранение всех символов x никак не изменит добротность кода, следовательно:

Таким образом, скорость кода В больше скорости кода А.

Обозначим за и - добротности кодов Л и В соответственно. Утверждение. = 4

Определим код с, выходной алфавит которого {0,1,х}:

Из (35) и (37) следует:

Таким образом, код В имеет ту же добротность, что и оптимальный код А из 3 в 7, но в то же время большую скорость! Это значит, что при решении проблемы уменьшения вероятности возникновения искусственной ошибки, имеет смысл рассматривать не только простые коды уменьшения веса.

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

способ, с помощью которого можно определить произошла ли запись в указанные позиции или не произошла.

Например, при стеганографии в *.Ьтр файле методом LSB представим, что пользователи обменялись не только ключами, но и множеством пустых контейнеров. Имея пару пустой контейнер - стегоконтейнер, сторона, принявшая стего-контейнер, может определить позиции, в которых произошли ошибки.

Со стороны может показаться, что данная идея не имеет смысла, так как стороны преждевременно обмениваются не только коротким ключом, но и огромными данными, которые будут контейнерами в стегоканале. На самом деле, при современных носителях информации данная идея не является абсурдной. Формально, каждый пустой контейнер можно считать «одноразовым ключом». Стегоключом можно восстановить последовательность вкра-плённых нулей и единиц, получив последовательность позиций, в которые было записано стегосообщение. Если бит отличен, то первая сторона вкрапила 1, если бит стегосообщения совпадает с битом пустого контейнера, то вкрапляли 0.

Уменьшение веса стегосообщения означает уменьшения количества бит, отличные от пустого контейнера. Стегоанализ усложнится.

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

Выводы:

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

2. Простые коды уменьшения веса могут служить способом уменьшения вероятности искусственной ошибки путём увеличения объёма вкрапляемых данных.

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

4. Нахождение качественных непростых кодов уменьшения веса является актуальной проблемой.

5. Табличный метод имеет сложность кодирования и декодирования 0(1), но требует памяти 0(2т), что при больших т делает невозможным кодирование с помощью таблицы кода. Нахождение способов кодирования и декодирования, требующих меньше памяти и несущественно увеличивающие время кодирования и декодирования является актуальной задачей в стеганографии.

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

Литература (References):

1. Cachin C. An Information-Theoretic Model for Steganography // MIT Laboratory for Computer Science - 2002. Edition. - October, 2010. - P.31

2. P. Kocher, J. Jaffe, B. Jun Differential Power Analysis // Интернет-доступ: http://www.cryptography.com/public/pdf/ DPA.pdf

3. J.Zollner, H.Federrath, H.Klimant, A.Pfitzmann, R.Piotraschke, A.Westfeld, G.Wicke, G.Wolf Modeling the Security of Steganographic Systems // Berlin. Springer: Information Hiding 1998, LNCS 1525, pp. 344-354, 1998.

4. Thomas Mittelholzer An Information-Theoretic Approach to Steganography and Watermarking // Berlin. Springer Information Hiding, LNCS 1768, pp. 1-16, 2000

5. Standard Blu-ray Disk Format: 1.B Physical Format Specifications for BD-R. 5th Edition. - 0ctober,2010. - P.31

6. S.Voloshynovskiy, S.Pereira, V. Iquise, T. Pun "Attack Modeling: Towards a Second Generation Watermarking Benchmark," Sig. Processing. Special Issue on Information Theoretic Issues in Digital Watermarking, 2001, vol. 81, no. 6, pp. 1177-1214

7. Слипенчук П.В. Стеганография в кодах, исправляющих ошибки // М.: Вестник МГТУ, Специальный Выпуск №5, 2013. 249 с.

8. Слипенчук П.В. Простое построение совершенных стегосистем на основе различных ошибок в помехоустойчивых кодах в модели трех каналов. Инженерный журнал: наука и инновации, 2013, вып. 11. URL:http:// engjournal.ru/catalog/it/security/998.html Дата обращения: 24.05.2014

9. Слипенчук П.В. Перспективы и практическое применение стеганографии в помехоустойчивых кодах. // М.: ВНИИ ПВТИ, журнал БИТ, № 3, 2014.