Г Ф Конахович - Комп'ютерна стеганографія теорія і практика - страница 33

Страницы:
1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51 

6) Відновлення звукового сигналу проводиться шляхом застосування оберне­ного ДПФ до первинної матриці амплітуд і модифікованої матриці фаз (рис.5.61, ж, з).

Перед процесом розшифрування повинна бути проведена синхронізація по­слідовності. Одержувачу повинні бути відомими довжина сегменту, точки ДПФ і інтервал даних. Значення основної фази першого сегменту виявляється як «0» або «1 », які представляють закодовану двій­кову послідовність.

Оскільки фаза ф1(©к) є зміненою, відповідним чином будуть змінені й абсо­лютні фази наступних сегментів. Але від­носна різниця фаз кожного суміжного сегменту буде збережена. Саме до цієї відносної різниці в фазі і є найбільш чутливим людський слух.

Розкид фаз - спотворення, викли­кане порушенням взаємозв' язку фаз між кожною з частотних складових. Зменшення розкиду фаз обмежує швидкість передачі даних при фазовому кодуванні. Однією з причин розкиду фаз є заміщення фази ф1) на двійковий код. Для зменшення спотворень, значення модифікованої фази повинне бути близьким до її первинного значення. Для того щоб знизити чутливість вбудованих даних до шуму, повинна збіль­шуватися різниця між структурами моди­фікованої фази. У нашому випадку, зна­ченню біта «0» відповідає -я/2, а зна­ченню «1» /2.

Іншим джерелом спотворення є швидкість зміни модифікованої фази. Якщо спотворення застосоване до кожного еле­менту дискретизації ДПФ, це з великою імовірністю зруйнує зв' язки між фазами

Рис.5.61. Блок-схема фазового кодування

Рис.5.62. Різкі переходи у порівнянні

зі згладженими

сусідніх частотних складових, що призведе до накладання фонового биття. Шляхом більш повільної зміни фази і узгодження переходів між змінами фази, досягається суттєве зниження відчутних на слух спотворювань.

На рис.5.62 зображено різкі переходи у порівнянні зі згладженими - круті фронти фазових переходів, викликають значні спотворення контейнера (а); спотворення зменшуються, якщо фронти є згладженими (б). Слід за­значити, що в обох випадках інформаційні точки присутні в одному і тому ж місці. Така плавна зміна характеризується недо­ліком спричинення скорочення смуги про­пускання, оскільки для того щоб зробити можливим плавний перехід, необхідно за­лишити місце між кожною інформаційною точкою.

Недоліком цієї схеми є її низька пропускна здатність. В експериментах авторів [14] ПЗ каналу варіювалася від 8 до 32 біт/сек. в залежності від звукового контексту.

Нами пропонується наступна реалізація методу фазового кодування.

1) Імпортуємо файл аудіоконтейнера до масиву квантованих амплітуд дискретних відліків: C := READWAVC'C.wav''). Приховувані дані вноситимемо до 1-го каналу даного звукового файлу: S := C<1>. Кількість елементів у даному контейнері: I := rows(S), I = 20191; i := 1.. I. Часова діаграма даного каналу ІКМ сигналу зображена на рис.5.58.

2) Нехай приховуване повідомлення має зміст: M := ''© Пузиренко О.Ю., 2005 р.''. До­вжина повідомлення (у бітах): Lm := 8strlen(M), Lm = 200 біт.

3) Проведемо розбиття звукової послідовності на сегменти. Кількість сегментів N визначається довжиною K окремого сегмента. Як буде показано нижче, параметр K повинен бути результатом возведення двійки до v-го степеню, де v є цілим числом і залежить від довжини приховуваного повідомлення Lm. При цьому останнє заноситиметься до масиву фаз, який отримується в результаті обчислення для сегменту швидкого перетворення Фур' є (ШПФ). Зазначений масив має розмірність вдвічі меншу за розмірність сегменту, для якого проводилося обчислення. Отже, значення параметру v можна знайти з розв' язку рівняння:

Given   2v = 2Lm ;        v := ceil(Find(v)),

де Given - ключове слово (директива), яке відкриває блок розв'язання рівняння (або системи рівнянь); Find(var1, var2, ...) - вектор змінних varl, var2, ... , які дають розв'язок рівняння у блоці (кількість повертаних значень дорівнює кількості аргументів); функція ceil(x) повертає найменше ціле, що перевищує або дорівнює аргументу x.

Результатом розв'язку є: v = 9. Отже, K := 2v+1 (степінь збільшена на одиницю для зменшення спотворюваності контейнера), K = 1024; k := 1..K.

Визначимо кількість сегментів N, на яку необхідно поділити послідовність аудіоданих: N := ceil(I/K),  N = 20;  n := 1..N;  I/K = 19,718.

Якщо ціле значення N є більшим від результату I/ K, то контейнер необхідно розширити, наприклад шляхом дописування нулів (М.105).

Таким чином, нове значення І := rows(S), І = 20480. S := | for

Остаточно визначившись з основними роз­мірностями, проводимо розбиття первинної звукової послідовності S за допомогою модуля (М.106).

1..NK S. ч- S.   if І < І

S. «- 0   if  І > і

(М.105)

(М.106)

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

204S        4096       6144       S192     1.02 104   1.23 104   1.43 104   1.64 104   1.S4 104   2.05 104

Рис.5.63. Сигнал Si (i =      розбитий на N сегментів sn (n = 1..N)

4) За допомогою вбудованої функції FFT(V) виконуємо ШПФ для даних, записаних в аргументі-векторі V. Останній повинен містити 2v елементів, де v - ціле число. Результат виконання функції - вектор розмірністю (2v-1 + 1). У нашому випадку, в якості аргументу функції виступатимуть вектори окремих сегментів sn (М.107,а).

Кожен n елемент отриманого масиву о містить підмасив з [(K/2) + 1] елементів, що представляють собою результат обчислення ШПФ для сегменту sn. Використовуючи відомі залежності, отримуємо масиви амплітуд і фаз (М.107, б, в).

(М.107)

Запис означає операцію

елементів масиву V).

В якості прикладу, наведемо сегмента (рис.5.64).

векторизації - виконання заданої операції \|/ для всіх результат обчислення (перші 13 елементів) для 1-го

s1 =

 

1

 

1

-&

 

2

-1

 

3

5

 

4

5

 

5

3

 

6

1

 

7

2

 

В

-1

 

9

А

 

10

-5

 

11

-7

 

12

-7

 

13

-12

 

14

-8

 

15

-11

 

 

1

1

-16.171

2

-16.039-0.37І

3

-16.54S-0.42Si

4

-11.696+0.936І

5

-22.515+1.469І

6

-1В. 97 9-1.94&і

7

-1В.442-2.90&І

&

-1В.062-2.3&6І

9

-13.601-1.661І

10

-21.488-11.192І

11

-21.555-1.В61І

12

-16.34В-1.132І

13

-17.92В-7.227І

14

-20.536-6.973i

15

-22.17^.&&ЗІ

А, =

 

1

1

16.171

2

16.043

3

16.554

4

11.733

5

22.562

6

19.078

7

18.670

В

18.219

9

13.702

10

24.228

11

21.635

12

16.3&7

13

19.329

14

21.687

15

22.701

01

 

1

1

3.142

2

-3.118

3

-3.116

4

3.062

5

3.076

6

-3.039

7

-2.985

В

-3.010

9

-3.020

10

-2.661

11

-3.055

12

-3.072

13

-2.758

14

-2.814

15

-2.925

(A^explj-фі)) =

 

1

1

-16.171

2

-16.039-0.37І

3

-16.54&-0.42ВІ

4

-11.696+0.93 6І

5

-22.515+1.469І

6

-18.97 9-1.94 Ві

7

-18.44 2-2.90 Ві

8

-18.062-2.ЗВ6І

9

-13.601-1.661І

10

-21.488-11.192І

11

-21.555-1.861І

12

-16.348-1.132І

13

-17.928-7.227І

14

-20.536-6.973i

15

-22.174.8ВЗІ

Рис.5.64. Приклад обчислення програмних модулів (М.106), (М.107)

На рис.5.65 представлено графічну інтерпретацію амплітудного і фазового масивів для 1 -го сегмента.

Рис.5.65. Приклад виділеного амплітудного і фазового спектру для сегмента s1

5) За допомогою програмного модуля (М.108) зберігаємо інформацію про різницю фаз між кожними сусідніми сегментами.

На рис.5.66 проілюстровано результат Аф :=

обчислення різниці фаз між 2-м і 1-м сегмен- | тог nE/-N (у[ 208)

тами.

АФп <- Фп - Фп-1

Аф

Рис.5.66. Приклад обчислення різниці фаз між сегментами s2 і s1

6) З урахуванням різниці фаз Аф відтворюємо нову матрицю фаз - програмний модуль (М.109). При цьому двійкову послідовність, на яку попередньо перетворюємо приховувані дані, вбудовуємо як значення фази, що дорівнює я/2, якщо приховується біт «1» і як - п/2, якщо приховується біт «0». Результат обчислення модуля, на прикладі нових фаз сегментів s1 і s2, приведено на рис.5.67.

При формуванні масиву нових фаз внесення приховуваних даних починається з ВЧ складових. Крім того, залишаються без змін перша і остання складові одержаного фазового спектру, оскільки їх модифікація призводить до значного спотворення вихідного сигналу. Після внесення даних, які необхідно було приховати, масив дописується елементами з первинного фазового масиву.

(М.109)

Рис.5.67. Результат вбудовування даних до фазового спектру сегмента s1 (а), обчислення нових значень фаз спектру сегмента s2 (б), перевірка різниці фаз між спектрами сегментів s2 і s1 (в).

7) Відновлюємо сегменти, шляхом застосування оберненого ШПФ до n первинних масивів амплітуд (An) і модифікованих масивів фаз (ф'п) - програмний модуль (М.110). При цьому використовуємо функцію ОШПФ виду IFFT(W), де вектор W повинен містити [(K/2) + 1] елементів. Дана функція повертає вектор V, кількість елементів у якому дорівнює K.

Відтворені сегменти об' єднуємо до спільного масиву - (М.111). Результат об' єднання зображено на рис.5.68, а (нагадаємо, що в даному випадку нами було приховано 200-бітове повідомлення). На рис.5.68, б зображено відновлений звуковий сигнал, у випадку приховання 512-бітового повідомлення при залишенні незмінною довжини сегменту (K = 1024). Очевидно, що в останньому випадку рівень прихованості конфіденційного повідомлення є неприпустимо низьким.

(М.110)

(М.

Страницы:
1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51 


Похожие статьи

Г Ф Конахович - Оцінка ефективності систем захисту інформації в телекомунікаційних системах

Г Ф Конахович - Комп'ютерна стеганографія теорія і практика