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

Страницы:
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 

for  І e 1 256

if T sort, - = P'x

1 ■1 (М.28) М^ч- modj sort. v2j

річ- p,+ 1 for   j e 1    rOWS(M*) -н 8

M*„„ <- B2D(SUbmatriX(M* .8 j - 7.8 j.1 .1}}

j

vec2str| M* „_Jд :=

for

Лі

A

І є 1 .. 511 <г- І - 256 (М.29)

І <- 1

for у є 1 .. Y

с <r- R Ь. <- 0

(М.30)

stack(b

Значення b у даному разі обчис­люються на основі масиву червоної ко­лірної складаової. При цьому для кож­ного стовпця масиву R обчислюється сума по модулю 2 елементів стовпця з булевим додаванням до результату оди­ниці при кожному третьому елементі.

Наприкінці модуля одержаний вектор b розширюється на довжину вектора A. Таким чином елементи масиву b носять псевдовипадковий характер. Фрагменти сформованого стеганоключа наведено на рис.5.15.

3) Проведемо розгортання масиву контейнера C (масив синьої колірної складової) у вектор, використовуючи модуль (М.17). Задаємося стартовим індексом елемента отриманого вектора, починаючи з якого проводитиметься вбудовування бітів повідомлення (наприклад, Us := 105).

Для підрахунку величини кроку (псевдовипадкового інтервалу) використаємо модуль (М.16). Нехай при цьому K := 8.

4) Алгоритм вбудовування реалі­зує модуль (М.31). Формування вектора двійкових даних з рядка символів ана­логічне наведеному у (М.22) (при цьому S <— C слід замінити на Sv Cv).

д=

 

1

Ь=

 

1

1

-255

 

1

1

2

-254

 

2

0

3

-253

 

3

1

4

-252

 

4

0

 

;

 

 

 

254

-2

 

254

0

255

-1

 

255

1

256

0

 

256

0

257

1

 

257

1

258

2

 

258

0

 

;

 

 

 

508

252

 

508

0

509

253

 

509

0

510

254

 

510

0

511

255

 

511

1

Рис.5.15. Фрагменти стеганоключа

(М.31)

Для кожного ц-го біта повідомлення проводиться обчислення індексу z елементу вектора контейнера Cv. Обчислюється різниця A' між суміжними пікселями Cvz і Cvz—.

Внутрішнім циклом i є 1..rows(A) проводиться пошук відповідного значення різниці у векторі A. У випадку знаходження, змінній 3 присвоюється значення індексу i, який відповідає даній різниці у A. Якщо значення b3 не дорівнює поточному біту приховуваного повідомлення, відбувається пошук найближчого індексу, при якому bi дорівнює бітові повідомлення. Пошук проводиться вниз (L) і вгору (H) від індексу 3. Попереднє присвоєння змінним 3L та 3H значення ±1000 забезпечує неможливість дублювання попередніх значень 3, якщо рух вниз або вгору від 3 не призвело до виконання поставленої умови (останнє є можливим при знаходженні індексу 3 надто близько до нижньої або верхньої межі вектора b). Після знаходження значень

3L і 3H обирається той з них, який є найближчим до початкового значення 3. Інтенсивність пікселя контейнера Svz дорівнює збільшеній на величину A3l(h) інтенсивності суміжного пікселя Svz-1. Якщо дане збільшення призводить до виходу значення інтенсивності кольору за межі [0; 255], то, навпаки, інтенсивності суміжного пікселя Svz— присвоюється значення

інтенсивності пікселя Svz, зменшеній на величину A3l(h). Після вбудовування останнього біта повідомлення зовнішній цикл переривається.

Проводимо зворотне згортання вектора у матрицю, що має розмірність первинного масиву C (М.7). Одержуємо масив S.

5) При видобуванні повідомлення попередньо формується стеганоключ - вектори A* і b*. Програмні модулі при цьому є ідентичними (М.29) і (М.30). Масив контейнера розгор­тається у вектор Sv* (подібно до (М.17)).

6) Модуль ви­добування (М.32) обчи­слює різницю інтенсив­ностей суміжних піксе­лів Sv*z та Sv * і ви­конує пошук відповід­ної різниці у кодовій таблиці   A*. Значення

біту b*3, яке відповідає даній різниці, присвою­ється поточному елеме­нту вектора M*. Напри­кінці модуля вектор двійкових даних пере­творюється на символь­ний рядок.

Одержані при

обчисленні візуального спотворення результати зведено до табл.5.1. 5.3.2.7. Метод Куттера-Джордана-Боссена

M. Kutter, F. Jordan та F. Bossen [83] запропонували алгоритм вбудовування до каналу синього кольору зображення, яке має RGB-кодування, оскільки до синіх кольорів ЗСЛ є найменш чутливою. Розглянемо алгоритм передачі одного біта секретної інформації. Нехай Mi - біт, що підлягає вбудовуванню, С={R, G, B} - зображення-контейнер, p = (де, y) - псевдо-випадковий піксель контейнеру, до якого виконуватиметься вбудовування.

Секретний біт Mi вбудовується у канал синього кольору шляхом модифікації яскравості Xxy = 0.29890-Rxy + 0.58662 Gxy + 0.11448-Bx y:

for |i є 1 rows(Sv") z<- z + step(D2B(z))

A'^Sv* _ sv*      jf z<rows(Sv*)

z        z-1 ■ '

break if z > rows(Sv") for i є 1.. rows (A*)

(М.32)

break

for j є 1.. rows(M*) -г- 8

M\ec <- B£D(submatrix(M*,8 j - 7,8 j,1 ,1)) j

vec2str|M* veoi

Б'   = Гх,у U'Xx,y, npU Ш|'  0 = B   +(2.m.-l)ulx y, (5.5)

де u - константа, що визначає енергію вбудовуваного сигналу. Її величина залежить від призначення стеганосистеми. Чим більшою є и, тим вище стійкість вбудованої інформації до спотворень, але й тим сильніше її помітність.

Видобування біта одержувачем здійснюється без наявності в нього первинного зо­браження, тобто "наосліп". Для цього виконується передбачення значення первинного, немоди-фікованого пікселя на основі значень сусідніх пікселів. Для одержання оцінки пікселя за­пропоновано використовувати значення декількох пікселів, розміщених у тому ж стовпці і у тому ж рядку масиву контейнера. Автори використовували "хрест" пікселів розміром 7x7.

Оцінка В x, y отримується у вигляді

В x, y = 1

Та"

В x+i, y + У В x, y+j 2. В x, y (5.6)

де а - кількість пікселів зверху (знизу, ліворуч, праворуч) від оцінюваного пікселя = 3).

При видобуванні вбудованого біта обчислюється різниця 8 між поточним (В x, y) і

прогнозованим (В x,y ) значеннями інтенсивності пікселяp = (x, y):

8 = В* x,y В* x,y. (5.7) Знак 8 означатиме біт, який було вбудовано: якщо 8 < 0, то Мі = 0; якщо 8 > 0, то

Мі = 1.

Функції вбудовування і видобування у даному методі не є симетричними. Тобто функція видобування не становить собою зворотну функцію вбудовування. Хоча, як зазначають автори, правильне розпізнання біту повідомлення у випадку застосування описаних вище процедур, є високоімовірним, але не стовідсотково вірним. Для зменшення імовірності помилок видобування було запропоновано в процесі вбудовування кожен біт повторювати декілька разів (багатократне вбудовування). Оскільки при цьому кожен біт було повторено т разів, то одержується т оцінок одного біта повідомлення. Секретний біт отримується після усереднення різниці між реальним і оціненим значеннями інтенсивності пікселя в отриманому одержувачем контейнері:

8 = т— ^[в* x,y В* x, y ]. (5.8)

i =1

Як і у попередньому випадку, знак усередненої різниці визначатиме значення вбудова­ного біта. У роботі [83] показано, що алгоритм є стійким до багатьох з відомих атак: НЧ фільт­рації зображення, його компресії відповідно до алгоритму JPEG, обрізанню країв.

Пропонується наступна реалізація даного методу.

1) Первинні дані стандартні.

2) Масив яскравості одержується використанням функції РЕАОВМР("ім'я_файлу"), що повертає масив, який представляє зображення BMP-формату у яскравісному форматі (градаціях сірого): X := READBMP("C.bmp").

3) Алгоритм вбудовування реалізується програмним модулем (М.33). При цьому обчислення псевдовипадкових координат пікселя, до якого відбуватиметься вбудовування біту повідомлення виконується за алгоритмом, описаним у підпункті 5.3.2.3 для методу псевдо-випадкової перестановки. Попередньо задається параметр u, який визначає енергію вбудову­ваного сигналу, а також кількість повторювань вбудовування т одного і того ж самого біту. Встановлено, що результат вбудовування є візуально непомітним при значеннях u < 0,05. Але у цьому випадку для зменшення помилок при видобуванні доводиться значно підвищуватикількість приховувань т поточного біту > 35), що також негативно відбивається на статистиці зображення. Оптимальними, на наш погляд, є значення и ~ 0.15 і т < 20, але, знову ж таки, все залежить від характеристик зображення, яке було обране в якості контейнера.

.33)

Обчислення індексу елементу двійкового вектора повідомлення за формулою сеіІ(і/т) дозволяє один і той самий біт приховати рівно т разів, після чого вбудовуватиметься наступний біт повідомлення і т. д.

Після проведення модифікації інтенсивності пікселя, визначеного координатами (x, y), проводиться корегування значення результуючої інтенсивності. Інакше, при початковому значенні інтенсивності кольору пікселя, наприклад, 255, внесення біту повідомлення «1» призведе не до зростання значення інтенсивності, а навпаки, - до зменшення інтенсивності в бік темних відтінків (всі числа, що більші за 255 при формуванні зображення автоматично В іншому випадку, при занадто низьких початкових значеннях інтенсивності, зокрема 0, внесення біту «0» може призвести до одержання від'ємного значення, яке розумітиметься як значення інтенсивності, близької до 255.

4) Перед видобуванням повідомлення необхідні бути відомими: параметри контейнера, первинний ключ Ko*, кількість циклів обчислення координат (x, y) SR*, кількість дублюючих вбудовувань одного біта т*, а також

розмірність хреста а (кількість пікселів зверху (знизу, ліворуч, праворуч) від оцінюваного пікселя) - рис.5.16.

Модуль видобування прихова­ного повідомлення (М.34) містить у собі блок обчислення псевдовипадко-вих координат (x, y), ідентичний відпо­відному у модулі вбудовування (М.33). Далі йдуть блоки виконання умов, які у сукупності дозволяють врахувати про­блемні випадки, коли оцінюваний пік-сель знаходиться занадто близько до краю(-їв) зображення щоб побудувати повноцінний хрест з оточуючих піксе­лів (див. рис.5.16).

1  2 3

X*

Рис.5.16. Приклади оцінюваних пікселів і оцінювальних конфігурацій ("хрестів")

.34)

У наведеному модулі попередньо проводиться генерування псевдовипадкових індексів (x, y), які визначатимуть елемент масиву В*, навколо якого робитиметься оцінка прилеглих пікселів. За результатами генерування даних індексів обчислюється кількість пікселів зверху і знизу, ліворуч і праворуч від оцінюваного. У подальшому проводиться обчислення оцінки первинного значення оцінюваного пікселя (формула (5.6)). Одержаний результат заноситься до t-го елементу В*Л. Оцінюване значення пікселя B*x y зберігається у буферному масиві В *t

Страницы:
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 


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

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

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