ОБЩЕТЕХНИЧЕСКИЕ ЗАДАЧИ И ПУТИ ИХ РЕШЕНИЯ
УДК 519.72
С. О. Вихарев, Е. Т. Мирончиков, М. В. Гофман
МЕТОДИКА ПОСТРОЕНИЯ ЦИФРОВЫХ ВОДЯНЫХ ЗНАКОВ, УСТОЙЧИВЫХ К СБОЯМ СИНХРОНИЗАЦИИ
Дата поступления: 14.12.2015 Решение о публикации: 28.01.2016
Цель: Построить цифровые водяные знаки, устойчивые к сбоям синхронизации. Методы: Описываемые в статье методы относятся к области теории информации и стеганографии. Результаты: Предложена методика построения цифровых водяных знаков на основе БЧХ-синхрокодов. Представлены метод встраивания в цифровой аудиосигнал предлагаемых водяных знаков и алгоритм их выделения даже после того, как из аудиосигнала будут удалены некоторые отсчёты. Практическая значимость: Представленные в статье цифровые водяные знаки можно использовать в качестве средства для внедрения дополнительной информации в цифровой аудиосигнал так, что даже после удаления некоторых отсчётов аудиосигнала остаётся возможность восстановить внедрённую информацию.
БЧХ-код, синхронизация, цифровой водяной знак, цифровой аудиосигнал.
Sergey O. Vikharev, post-graduate student; Yevgeny T. Mironchikov, Dr. Sci. (Eng.), professor; *Maksim V. Gofman, Cand. Sci. (Eng.), senior lecturer, [email protected] (Petersburg State Transport University) A METHOD FOR BUILDING SYNCHRONISATION FAULT-TOLERANT DIGITAL WATERMARKS
Objective: To build digital watermarks that are tolerant to synchronisation faults. Methods: Methods described in the paper fall within the domain of theory of information and steganography. Results: A method for building digital watermarks based on BCH codes iss proposed. A method for embedding the proposed watermarks in the digital audio signal, and an algorithm for their acquisition even after some readings would be deleted from the audio signal were presented. Practical importance: Digital watermarks presented in the paper can be used as a means for introducing additional information into a digital audio signal in a manner that allows restoring embedded information even after deletion of some audio signal readings.
BCH code, synchronisation, digital watermark, digital audio signal.
Цифровые аудиосигналы как объекты, содержащие аудиоинформацию, могут иметь большую ценность. Так, они могут представлять собой результат работы музыкантов
и певцов и быть ориентированы на удовлетворение эстетических потребностей людей или служить вместилищем информации для работы, например, секретарей, журналистов,
следователей, работников служб безопасности и т. д.
Часто цифровые аудиосигналы наделяются дополнительными свойствами, которые позволяют защитить авторские права или внедрить в аудиосигнал цифровой ярлык или тэг. Так, звукозаписывающим компаниям важно, чтобы их юридические права на музыкальное произведение были защищены, а людям, которые работают со звуковой информацией, - чтобы имелась возможность внедрить тэг в цифровой аудиосигнал.
Аудиосигналы представляют собой объекты, допускающие обработку. Их можно сжимать, их части - удалять, изменять или добавлять новые. Из-за этого добавочная информация (от звукозаписывающей компании) или тэги может быть утеряна или искажена, поэтому вопрос встраивания дополнительной информации в цифровые аудиосигналы остается открытым.
Встраивание дополнительной информации в виде цифровых водяных знаков - на сегодня один из основных способов защиты авторских прав или внедрения тэгов. Когда водяные знаки встраиваются в цифровой аудиосигнал последовательно во временной области, тогда при удалении части отсчётов цифрового аудиосигнала невозможно будет определить, где начало и конец водяного знака, т. е. фактически произойдёт сбой синхронизации.
Причины сбоев синхронизации могут быть различными. Так, весьма часты сбои при хранении больших объемов аудиоданных на различных носителях, особенно при многократных считываниях. Помимо технических причин сбои синхронизации могут быть следствием действий злоумышленников.
Вопросы применения последовательностей Баркера при построении водяных знаков, устойчивых к сбоям синхронизации, рассматриваются в статьях [2-4]. При этом сами последовательности Баркера не несут никакой полезной информации, а служат лишь для установления синхронизации.
В этой статье описывается методика построения цифровых водяных знаков на осно-
ве БЧХ-синхрокодов [1], которые не только восстанавливают синхронизацию, но и позволяют хранить в себе информацию. Кроме того, предлагается алгоритм их встраивания в цифровой аудиосигнал так, что они не будут слышны человеческому уху.
Сбои синхронизации и синхрокоды
Цифровой аудиосигнал - это последовательность квантованных отсчётов аналогового аудиосигнала. Если из цифрового аудиосигнала пропадёт несколько отсчётов, то, скорее всего, человеческое ухо это не отметит. Однако если в такой аудиосигнал были внедрены цифровые водяные знаки, то их считывание станет весьма затруднительным, если вообще возможным, так как исказятся ориентиры для установления синхронизации, по которым можно было бы определить позиции элементов цифрового водяного знака.
В качестве ориентиров обычно используют начала и концы блоков или сегментов, на которые разбивается цифровой аудиосигнал. И тогда при пропаже нескольких первых или последних отсчётов блока удастся восстановить синхронизацию, если, например, не рассматривать оставшиеся отсчёты блока, а ориентироваться на границы соседнего блока. Благодаря этому достаточно определить, сколько отсчётов от блока осталось, чтобы установить начало соседнего блока.
В общем случае цифровой аудиосигнал не обладает никакими специфическими свойствами, на основании которых из него можно было бы выделить блоки, оставшиеся после удаления некоторых отсчётов, поэтому если в обычный цифровой аудиосигнал встроить водяные знаки, неустойчивые к сбоям синхронизации, то их не удастся выделить обратно после манипуляций, приведших к сбоям.
Водяные знаки, устойчивые к сбоям синхронизации, допускают возможность определить, сколько элементов осталось от водяного знака. В качестве инструмента создания таких
водяных знаков в этой статье предлагается использовать БЧХ-синхрокоды.
Для синхрокодового слова можно определить, сколько элементов с начала или с конца было потеряно, конечно, если это число не больше некоторого порогового значения, зависящего от применяемого синхрокода. Если встраивать элементы синхрокодовых слов в каждый отсчёт цифрового аудиосигнала, то при выпадении нескольких отсчётов сигнала пропадёт и несколько элементов синхрокодо-вого слова, а значит, если применить методику вычисления сдвига синхронизации к оставшимся элементам синхрокодового слова, то удастся определить, сколько отсчётов из рассматриваемого блока осталось и где начало следующего блока, в котором будет ещё один водяной знак.
Для синхрокодов определяют два вида сбоев синхронизации: потерю и избыток. Пусть есть два синхрокодовых слова:
ci _ (ci,n-1 C1,n-2
ci,ö)'
= (c2,n-1
-2,n-2
-2,ö
которые, соответственно, в полиномиальной форме выглядят так:
п-1
ck (х) = ТРк •
(=0
А также пусть эти кодовые слова передаются так, что их элементы образуют последовательность
а = С1,п-1, С1,п-2 , • • •, С1,0 , С2,п-1, С2,п-2 , • • • , с2,0-
Потерей синхронизации в г символов является ситуация, когда теряются первые г символов последовательности а. В этом случае вместо первого кодового слова с1 получится вектор
(с1, п-г-1 С1, п-г-2 • С1,0 С2,п-1 С2, п-2 •• 'С2,п-г )'
Избытком синхронизации в г символов является ситуация, когда теряются последние г
символов последовательности а. Тогда вместо второго кодового слова с2 получится вектор
(с1, г-1 С1, г-2 • С1,0 С2, п-1 С2, п-2 ••• С2, г )
Синхрокоды можно построить разными способами. Наиболее просты, эффективны и исследованы с точки зрения свойств восстановления синхронизации синхрокоды, построенные на основе кодов БЧХ.
Синхрокоды на основе кодов БЧХ
Перед построением кодовых слов таких синхрокодов создают подходящий код БЧХ. Синхрокод является смежным классом БЧХ-кода. Смежный класс получается прибавлением смещающего полинома к каждому кодовому слову БЧХ-кода. Смещающий полином не должен делиться на х, а значит, его свободный член не должен быть равен нулю.
Как и всякий блоковый код, синхрокод на основе БЧХ-кода имеет ряд основных параметров. Это, в первую очередь, длина п кодового слова, число k исходных информационных символов, а также максимальная величина произошедшего сдвига г , который ещё можно выявить посредством синхрокода. Величина г определяется по формуле
r =
n - k - s -1
где [а] - целая часть числа а; 5 - степень смещающего полинома.
Алгоритм построения синхрокодового слова на основе БЧХ-кода
Входные данные: порождающий полином g(x) БЧХ-кода и информационный полином т(х).
Выходные результаты: синхрокодовое слово с(х) в полиномиальной форме.
1. Умножение информационного полинома на порождающий полином g(x):
сбчх ( x) = m( x) g (x)-
4. Определение максимальной dmax и минимальной d степеней членов полинома r (х):
min 3 v 7
dmax = degmax r3(х) И dmin = degmin r3(х)
2. Задание смещающего полинома p(x).
3. Сложение результата 3-го шага со смещающим полиномом, масштабирован-
ным x
.-1.
c(x) = сБЧХ (x) + x p(x).
На практике вместо полинома x_1 обычно используется полином w(x), который является обратным к полиному x1 по модулю порождающего полинома g(x) над полем GF(2):
((x_1w(x)) mod g(x)) mod 2 = 1.
где degmax a(x) и degmin a(x) - это максимальная и минимальная степени членов полинома a(x), соответственно. Таким образом, dmаx - это наивысшая степень ненулевого слагаемого полинома г3(х), а dmin - это низшая степень ненулевого слагаемого полинома г3(х).
5. Если dmax > гс + s , то произошла потеря синхронизации, в этом случае
r = d — r — s
потеря ""max c 13'
Если же dmin < rc, то произошёл избыток синхронизации, в этом случае
= r — d .
избыток
Алгоритм определения величины сдвига синхронизации
Входные данные: полином
п
> ¿-1
c'(x) = Yc'ix1 ,
i=1
который в отсутствие сбоев синхронизации представляет собой синхрокодовое слово.
Выходные значения: величина потери синхронизации r и величина избытка синхро-
1 потеря 1
низации r .
избыток
1. Вычитание смещающего полинома из полинома c'(x):
r1 (x) = (c'(x) - x"1 p(x)) mod 2.
2. Умножение на одночлен степени r + 1:
r2( x) = xrc+1r1( x).
Если г3 (х) = 0, то сбоя синхронизации не было, а с'(х) - это синхрокодовое слово, в этом случае
r = r = 0
потеря избыток •
Пример определения величины сдвига при помощи синхрокода
В качестве основы для синхрокода используем БЧХ-код со следующими параметрами: длина кодового слова п = 63, число информационных символов к = 30. Порождающий полином
g (х) = 1 + х + х2 + х5 + х6 + х8 + + х9 + х11 + х13 + х14 + х15 + х20 + + х22 + х23 + х26 + х27 + х28 +
29 30 32 33
+ х + х + х + х .
3. Получение остатка от деления полинома r2(x) на порождающий полином:
r3 (x) = r2 (x) mod g (x).
Смещающий полином р( х) = х +1; значит, 5 = 1. Синхрокод с такими параметрами позволяет определить величину сдвига синхронизации вплоть до
r =
n - k - s -1
= 15.
При построении синхрокодовых слов для рассматриваемого случая вместо х-1 удобно использовать полином
Предположим, что кодовые слова поэлементно передаются в канал, начиная со старших степеней, а также что первым передаётся первое кодовое слово с1(х), потом второе кодовое слово с2(х). Таким образом, в канал будет передаваться последовательность
w(x) — 1 + x + x4 + x5 + x7 +
. 8 . 1ö . 12 . 13 . 14 .
+ x + x + x + x + x +
. 19 . 21 . 22 . 25 . 26 .
+ x + x + x + x + x +
, 27 , 28 , 29 , 31 , 32
+ x + x + x + x + x .
Пусть есть два синхрокодовых слова. Первое синхрокодовое слово имеет полиномиальную форму
q( x) = (m1( x) g ( x) +
62
+ w(x)p(x)) mod 2 = Xc .x' —
i=ö
— x + x + x + x + x + x + + x18 + x20 + x21 + x22 + x23 + x25 + + x26 + x28 + x30 + x32 + x33 + x35 + + x38 + x41 + x42 + x44 + x50 + x51 + + x + x + x + x + x + x ,
29
где m1 ( x) — Xx'.
i=0
Второе синхрокодовое слово в форме полинома выглядит так:
с2( х) = х) g (х) +
62
+ w(x) p( х)) mod 2 = Yf2 х =
i=0
= 1 + х2 + х3 + х4 + х5 + х11 + х13 + + х15 + х16 + х18 + х22 + х23 + х29 +
. 32 . 33 . 38 . 41 . 42 . 44 .
+ х + х + х + х + х + х +
50 . 51 . 53 . 54 . 55 . 57 .
+ х + х + х + х + х + х +
+ 59 + 62
+ х + х ,
С1,62 , С1,61, • " , C1,ö , С2,62 , C2,61, ' • •, C2,ö .
Рассмотрим две ситуации: потерю и избыток синхронизации. При любом из этих сбоев синхронизации блок в полиномиальное форме, для которого будет вычисляться величина сдвига, вместо целого кодового слова будет содержать сумму из слагаемых первого и второго кодового слова.
Пусть произошла потеря синхронизации на величину сдвига г = 3. Значит, из первого кодового слова пропали три слагаемых наивысших степеней. Таким образом, вместо первого кодового слова получится вектор:
(с1,59 С1,58 • С1,0 С2,62 С2,61 С2,60),
который в полиномиальной форме будет таким:
62
r-1
r-i-1
С (x) — XC1,i-rx + XC2,62-ix
i—r i—ö
— x + x + x + x + x + x + + x20 + x21 + x23 + x24 + x25 + x26 + + x28 + x29 + x31 + x33 + x35 + x36 + x38 +
41 44 45 47 53 54
+ x41 + x + x45 + x + x + x + + x + x + x + x + x .
В соответствии с алгоритмом определения величины сдвига получим полином
г3( х) = ((хГс +1(c'( х) - w( х) х Xp(х))) mod g(х)) mod 2 = х15 + х16 + х18 + х19.
29
где m2 ( x) — Xx'.
i—3
По полиному г3(х) видно, что dmax = 19, а d . = 15. Следовательно, выполняется нера-
венство dmax > гс + 5, поэтому рассматриваемый сбой синхронизации представляет собой потерю синхронизации с величиной сдвига
Гпотеря = dmax - Гс - * = 3 Т0ГДа КаК Г
избыток
= r - d = 0.
c min
Пусть возник избыток синхронизации на величину сдвига r = 5. Значит, из второго кодового слова пропали 5 слагаемых низших степеней. Таким образом, вместо второго кодового слова получится вектор:
(с1,4 с1,3 С1,2 С1,1 С1,0 с
2,62 2,61
••• С2,5 )'
который в полиномиальной форме будет таким:
r-1 62
С(Х) = Yfl,r-i-1Х 62-' + TC2,iX'-Г =
i=0 i=r
= 1 + x6 + x8 + x10 + x11 + x13 + x17 + + x18 + x24 + x27 + x28 + x33 + x36 + + x37 + x39 + x45 + x46 + x48 + x49 + + x + x + x + x + x .
В соответствии с алгоритмом определения величины сдвига получим полином
Метод встраивания водяного знака в цифровой аудиосигнал
Цифровой аудиосигнал, т. е. последовательность квантованных отсчётов аналогового аудиосигнала, можно представлять в виде вектора. В общем случае любой отсчёт цифрового аудиосигнала может быть утерян, поэтому для устойчивости водяного знака к сбоям синхронизации синхрокодовое слово, являющееся водяным знаком, полезно внедрять в цифровой аудиосигнал так, чтобы каждый элемент вектора, описывающего аудиосигнал, содержал часть синхрокодового слова.
Один из вариантов встраивания водяного знака - это изменение младших разрядов значения отсчёта цифрового аудиосигнала в соответствии со встраиваемым значением. Пусть есть водяной знак, представляющий собой БЧХ-синхрокодовое слово с:
с = (с0 ... C„-1X
где с{ e{0,1}V/е{0,...,n-1}, а цифровой аудиосигнал пусть представляет собой вектор
У = (У1 ••• Ум X
r3 (x) = ((xrc +1 (c'( x) - w( x)3( x))) x x mod g (x)) mod 2 = x10 + x13 + x16.
По полиному r3(x) видно, что dmax = 16, а dmin = 10. Следовательно, выполняется неравенство dmin < rc, значит, возник избыток синхронизации с величиной сдвига r _ = 5,
избыток
тогда как r = 0.
потеря
Рассмотренный БЧХ-синхрокод (63,30) позволяет верно определить не только величину сдвига вплоть до rc = 15, но и вид сбоя синхронизации. Так, если произошла потеря синхронизации со сдвигом на 1 < r < rc, то гиз6ыток = = 0, тогда как r = r; то же самое можно
потеря
сказать о ситуации, когда возник избыток синхронизации, только в этом случае будет r = 0.
потеря
где у е {0,..., 216 -1} V/ е {1,..., N}. Предположим, что длина N вектора у кратна длине п синхрокодового слова:
N = кп,
где к - это целое положительное число. В этом случае вектор у можно разделить на к векторов, длина которых равна длине синхрокодового слова. Далее такие «подвекторы» будем называть блоками, или сегментами цифрового аудиосигнала.
Так как длина вектора у кратна длине синхрокодового слова, изменение младшего бита ¿-го элемента вектора у на битовое значение у-го элемента вектора c можно выполнить так:
У' = (Уг - (У mod 2)) + cj при j = (i -1) mod n,
где i e{1, ..., N}, а mod b - это остаток от деления числа a на число b. Из чисел у' можно составить вектор
у ' = Су' - yN X
который будет описывать цифровой аудиосигнал, содержащий водяной знак c в каждом своём сегменте.
Алгоритм выделения двоичных синхрокодовых слов из аудиофайла
Входные данные: вектор ув = (ув1 ... ) где у . - целые числа; N' > п, п - длина син-хрокодового слова.
Выходные данные: множество С выделенных синхрокодовых слов, представленных в виде битовых векторов.
1. Присвоить вектору c первые п значений вектора ув:
с ^ (МлБит(увД) • МлБит(ув>п)),
где МлБит (а) - значение младшего бита целого числа а.
2. Присвоить переменной г значение 1:
г^ 1.
3. В соответствии с описанным ранее алгоритмом по вектору с определить пару чисел
^избыто^ Гпотеря).
4. Если (rr
потере избыток
) = (0,0), то перейти к шагу 5. Если (г , г , ) = (г,0), при этом
^ ^ потере избыток-7 \ 7 /7 г
1 < г < г., то перейти к шагу 6. Если (г ,
с 7 •> ^ потеря7
гизбыток) = (0,г), при этом 1 < г < г., то перейти
к шагу 7. Если (гПОтгря, гизбыток ) = (г, г'Ь то перейти к шагу 8.
5. Сбоя синхронизации не было, а значит вектор с - синхрокодовое слово (в векторной форме). Добавить его в множество С. Присвоить переменной г значение г + п:
(^ г+ п;
перейти к шагу 9.
6. Произошла потеря синхронизации. Присвоить переменной г значение г + п - г:
г ^ г + п - г;
перейти к шагу 9.
7. Возник избыток синхронизации. Присвоить переменной г значение г + г:
г ^ г + г;
перейти к шагу 9.
8. Присвоить переменной г значение г +1:
г^ г +1;
перейти к шагу 9.
9. Если N' -г > п, то присвоить вектору c элементы вектора ув с г по г + п - 1:
с ^ (МлБит(ув,.) • МлБит(ув>г+п-1));
перейти к шагу 3; иначе, если N' - г < п , то ОСТАНОВ.
Пример восстановления данных после атаки «вырезание»
Пусть в соответствии с описанным методом цифровой водяной знак с был встроен в аудиосигнал у, в результате был получен аудиосигнал у '.
Теперь пусть на цифровой аудиосигнал у была выполнена атака «вырезание», т. е. было удалено несколько отсчётов аудиосигнала, в результате которой получился аудиосигнал
ув = (ув,1 • ув, N ' X
где N' > п; п - длина синхрокодового слова. Применив алгоритм выделения синхрокодо-вых слов к вектору ув, получим множество
С — {с1 , с2 , . , ск },
где К - количество выделенных синхрокодо-вых слов; ск (к е {1,2,...,К}) - битовый вектор длиной п, представляющий собой синхро-кодовое слово.
Пусть первый элемент вектора ck - это коэффициент при старшей степени полиномиальной формы соответствующего синхроко-дового слова, а последний его элемент - свободный член полиномиальной формы. Таким образом, если синхрокодовое слово в векторной форме ск — (ск 1 ... скп ), то в полиномиальной форме синхрокодовое слово будет
п
ск(х) — ТРк ¿х".
¿—1
Теперь, если вычесть из каждого полинома ск(х) смещающий полином х_1р(х), а затем к разности применить БЧХ-декодирование, получится множество информационных полиномов {т1(х), т2(х),..., тК (х)}.
Следует отметить, что из-за атаки «вырезание» синхрокодовые слова ск в общем случае могут не совпасть с исходным водяным знаком с. Значит, информационные полиномы тк(х) также в общем случае могут не совпасть с исходным информационным полиномом т(х).
Заключение
Рассмотрен метод построения цифровых водяных знаков на основе БЧХ-синхрокодов. Приведены примеры вычисления сдвигов синхронизации при разных видах сбоев синхронизации. Предложен такой алгоритм встраивания в цифровой аудиосигнал представленных водяных знаков, который позволяет использовать их устойчивость к сбоям синхронизации и противостоять атаке «вырезание» во временной области. Предложен алгоритм вос-
становления данных после атаки «вырезание», осуществлённой по отношению к аудиосигналу с представленными цифровыми водяными знаками.
Биографический список
1. Питерсон У. У. Коды, исправляющие ошибки : моногр. / У. У. Питерсон, Э. Уэлдон. - М. : Мир, 1976. - 594 с.
2. Huang J. A blind audio watermarking algorithm with self-synchronization / J. Huang, Yo. Wang, Yu. Q. Shi // IEEE Int. Symp. Circuits Syst. - 2002. -Vol. 3. - P. 627-630.
3. Wang X.-Ya. A Novel Synchronization Invariant Audio Watermarking Scheme Based on DWT and DCT / X.-Ya. Wang, H. Zhao // IEEE Trans. Signal Proc. - 2006. - Vol. 54, Is. 12. - P. 4835-4840.
4. Wu Sh. Efficiently self-synchronized audio watermarking for assured audio data transmission / Sh. Wu, J. Huang, D. Huang, Y. Q. Shi // IEEE Trans. Broadcast. - 2005. - Vol. 51, Is. 1. - P. 69-76.
References
1. Piterson U. U. & Ueldon E. Kody, ispravly-ayushchiye oshibki: monografiya [Error-Correcting Codes]. Moscow, Mir, 1976. 594 p.
2. Huang J., Wang Yo. & Shi Yu. Q. A blind audio watermarking algorithm with self-synchronization. IEEE Int. Symp. Circuits Syst., 2002, Vol. 3. Pp. 627630.
3. Wang X.-Ya. & Zhao H. A Novel Synchronization Invariant Audio Watermarking Scheme Based on DWT and DCT. IEEE Trans. Signal Proc., 2006. Vol. 54, Is. 12, pp. 4835-4840.
4. Wu Sh., Huang J., Huang D. & Shi Y. Q. Efficiently self-synchronized audio watermarking for assured audio data transmission. IEEE Trans. Broadcast., 2005. Vol. 51, Is. 1, pp. 69-76.
ВИХАРЕВ Сергей Олегович - аспирант; МИРОНЧИКОВ Евгений Тимофеевич - д-р. техн. наук, профессор; *ГОФМАН Максим Викторович - канд. техн. наук, ст. преподаватель, maxgof@gmail. com (Петербургский государственный университет путей сообщения Императора Александра I).