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

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

£ +- submatriJt[EC0 :[NB (m- 1} + 1] :Ng m : 1 = 1] 11 <e- submatrix^g :[Ng (m - 1} + 1J :Ng m : 1 = 1J for n e 1Ng S n+-En if Mvec bir,m = 1

E <- submatrix[EC1 = [Ng (m- 1} + 1] = Ng m 51 =l]

11 <e- submatrix^ :[Ng (m - 1} + 1J :Ng m : 1 = 1J for n e 1Ng S'n+-Enjin

S <- S' if m = 1 S <- stack(S = S}  if m>1

for і e rows{S} + 1.. rows(C) if rows(S} < rows(C) S.+-C.

(М.122)

m «- 1

while N*g m < rows(S*}

s+- submatrix[S*=[N*g (m- 1}+ 1]=N*B m = 1 =1] f+-cfft(s}

l <- in If + ю-20)

ac «- icfft(l)

"0" <­і = *V2

г.,+2 "1" +- ^

j = 8*1-2

AC.

AC.

В

В <- 0   if  "1" < "О"

В+-round(rnd(1}} if "1" = "О"

м* ыпт^-в m +- m + 1 for j e 1rows|M*bjn} ^ 8

M*vec «- B2D|submatrix(M*bin,8 j - 7 = 8 j=1 = 1>)

vec2str|M

(М.123)

vec I

На рис.5.87 наведено результат обчислення АКФ кепстру для 1-го і 8-го бітів пові­домлення (Mvec_bim = 0, Mvec_bin8 = 1).

Рис.5.87. Приклад вигляду АКФ кепстру сигналу, що містить нульове (а) і

одиничне (б) ехо-відображення.

7) Результати обчислення показників звукового спотворення контейнера при вбудо­вуванні до нього даних шляхом ехо-кодування зведено до табл.5.6.

5.5. Приховування даних у тексті

Для приховування конфіденційних повідомлень у тексті (або так звана лінгвістична стеганографія) використовується або звичайна надлишковість мови, або формати представ­лення тексту.

Електронна версія тексту за багатьма причинами є найскладнішим місцем для прихо­вування даних, на відміну від її "жорсткої" копії (наприклад, паперової), яка може бути оброблена як високоструктуроване зображення і є такою, що легко піддається різноманітним методам приховування, таким як незначні зміни формату текстових зразків, регулювання відстані між певними парами символів (кернінг), відстані між рядками тощо. В значній мірі це викликане відносним дефіцитом у текстовому файлі надлишкової інформації, особливо у порівнянні із зображеннями чи звуковими фрагментами. У той час, як до зображення/звуку є можливим у більшості випадків внести непомітні/невідчутні модифікації, навіть додаткова літера або крапка у тексті можуть бути помічені випадковим читачем. Приховування даних у тексті вимагає пошуку таких модифікацій, які були б непомітними переважною більшістю читачів. Автори [14] розглядають три групи методів, що зазнали найбільшого поширення при вбудовуванні приховуваних даних до тексту:

- методи довільного інтервалу, що здійснюють вбудовування шляхом маніпуляції з пробільними символами (вільним місцем на друкованій полосі);

- синтаксичні методи, які працюють з пунктуацією;

- семантичні методи, до основи яких покладене залежне від приховуваних бітів даних маніпулювання словами.

165

Таблиця 5.6.

Показники звукового спотворення у випадку приховування даних в аудіосередовищі

Назва показника спотворення

Оригінал

Методи приховування даних в аудіосередовищі

 

 

НЗБ

(ПВ інтервач)

Фазове кодування

Розширення спектру

Ехо-

кодування

Макс. абсолютна різниця, MD

0

1

1124

148

2963

Середня абсолютна різниця, AD

0

3.244-10"3

15.298

14.321

572.093

Норм, середня абс. різниця, NAD

0

2.62510 6

0.012

0.012

0.5

Середньоквадр. помилка, MSE

0

0.003

2.657-103

956.742

7.640-105

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

0

9.402-10~10

7.702 10 4

2.773-10"4

0.250

//-норма, р = 2

0

0.057

51.551

30.931

874.01

Відношення сигнал/шум, SNR

оо

1.064 109

1.298-103

3.606-103

4.006

Макс. відношення с/шум, PSNR

оо

1.177-1010

1.437-104

3.992-104

45.968

Якість звучання, AF

1

*1

0.999230

0.999723

0.750371

Норм, взаємна кореляція, NC

1

*1

0.999615

0.999806

1.255078

Якість кореляції, CQ

2.792-103

2.792-103

2.790-103

2.791-103

3.355-103

Структурний зміст, SC

1

*1

 

1.000110

0.568251

Загальне сигма-відношення сигнал/шум, GSSNR

оо

1.152-1014

1.5Ы020

3.279-108

9.377

Сигма-відношення сигнал/шум, SSNR

оо

140.6

201.8

85.2

9.721

Відношення сигнал/помилка, SER

оо

1.064 109

1.298-103

3.606-103

4.006

Подібність гістограм, HS

0

240

13854

14708

15548

5.5.1. Методи довільного інтервалу

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

У [14] наведено три методи, що використовують для приховування даних вільне місце у тексті. Дані методи оперують з інтервалами між реченнями, пропусками в кінці текстових рядків та інтервалами між словами у тексті, вирівняному по ширині.

5.5.1.1. Метод зміни інтервалу між реченнями

Вказаний метод дозволяє вбудовувати повідомлення, що має двійковий формат, до тексту шляхом розміщення одного або двох пробілів після кожного символу завершення речення (наприклад, крапки у звичайному тексті або крапки з комою для коду програм на мові C++ тощо). Одиночним пробілом кодується, наприклад, біт «1», подвійним - біт «0». Проте, такий простий метод має низку недоліків. По-перше, він є неефективним, вимагаючи тексту значного обсягу для вбудовування незначної кількості біт (так, один біт, що можна приховати в одному реченні є еквівалентним швидкості передачі даних приблизно 1 біт даних на 160 байт текстового контейнера, за умови, що у середньому речення становить собою 2 рядки по 80символів кожен). По-друге, можливість приховування залежить від структури тексту-контейнера (деякі тексти, як наприклад, верлібри або вільні вірші характеризуються відсут­ністю стійких узгоджених або однозначних знаків завершення рядка). По-третє, деякі з текс­тових редакторів автоматично встановлюють після крапки наприкінці речення один-два про­біли. Зрештою, як зазначається у [14], непослідовне використання вільних місць є досить помітним для читача.

Наведемо приклад реалізації даного методу.

1) Нехай в якості контейнера використовується текст, фрагмент якого наведено на рис.5.88 (C := READBIN("C.txt", "byte")). Приховуване ж повідомлення має наступний зміст: M := "Алгоритм".

Рис.5.88. Фрагмент оригіналу тексту-контейнера, використовуваного для приховування даних

2) Змінною п := ". " (крапка + пробіл) позначимо фрагмент контейнера, який сигналі-зуватиме про закінчення речень. У ASCII-кодировці: str2vec(n)T = (46 32).

Перевірку достатності речень у тексті для приховування заданої кількості біт пові­домлення (Lm := 8strlen(M), Lm = 64 біти) виконаємо за допомогою програмного модуля (М.124), який підраховує кількість елементів п в обраному тексті.

(М.124)

Для представленого на рис.5.88 фрагменту Nn = 8, що є достатнім для приховання одного символу повідомлення (8 біт).

3) Стеганографічне приховування виконує програмний модуль (М.125). На його поча­тку рядок символів M перетворюється на вектор двійкових даних Mvec_bin. Для кожного елеме­нту вектора Mvec_bin проводиться пошук кінця речення (елемент п) у представленому в ASCII-кодах тексті C'. Останній являє собою текст, який ще не зазнав модифікації вбудовуваними бітами. Паралельно формується стеганограма S, шляхом дописування в її кінець i-го елемента вектору C'.

У випадку знайдення фрагменту вектору C', що відповідає вектору п, відбувається збереження подальшої частини тексту як немодифікованого (перевизначення змінної C') і в залежності від значення поточного елемента Mvec_bin до стеганограми S дописується один або два пробіли (ASCII-код яких 32). Для запобігання можливому виникненню неоднозначності у тих випадках, коли в оригінальному тексті речення відділялися між собою крапкою і довільною кількістю пробілів, виконується видалення можливих пробілів на початку немодифікованого фрагменту C'.

По завершенні вбудовування всіх бітів повідомлення, до стеганограми S приписується текст C', який залишився без змін.

(М.125)

Результат приховання першого символу повідомлення ("А"), двійковий вираз ASCII-коду якого: D2B(str2vec("a"))t = (0lsb 0 0 0 0 0 1 1msb), зображено на рис.5.89.

Рис.5.89. Фрагмент заповненого методом зміни інтервалу між реченнями текстового

контейнера

4) Видобування прихованої інформації проводиться програмним модулем (М.126) при S* := S, п* := п. Алгоритм дій наступний: виконується пошук кінця речення (елемент п*) у представленому в ASCII-кодах тексті S*. У випадку знайдення, аналізується кількість пробілів після крапки, на підставі чого робиться висновок про значення поточного біту повідомлення, що видобувається. Наприкінці модуля вектор двійкових даних перетворюється на рядок символів.

(М.126)

5.5.1.2. Метод зміни кількості пробілів в кінці текстових рядків

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

Нами запропоновано наступний шлях реалізації даного методу.

1) Порожній текстовий контейнер і приховуване повідомлення ті самі, що й у попередньо розглянутому методі.

2) Вбудовування бітів повідомлення виконуємо за допомогою програмного модуля (М.127). Після одержання вектору двійкового представлення повідомлення, яке підлягає прихованню, виконується підрахунок кількості символів у кожному текстовому рядку r (нагада­ємо, що кожен рядок завершується парою службових символів повернення каретки CR (ASCII-код 13) і переведення рядка LF (ASCII-код 10), що в звичайному режимі не виводяться на екран і на друк). Підрахована кількість заноситься до r-го елементу вектора L.

Отеганограма формується шляхом дописування після останнього елементу вектора S, що її представляє, значення i-го елементу вектора C' (останній, як і у попередньо розглянутому методі, являє собою текст, який ще не зазнав модифікації), якщо той не являє собою символ CR. В протилежному випадку здійснюється перевизначення змінної C' як такої, що містить немо-дифіковану частину тексту. Кількість біт к, яку можна приховати у рядку визначається різ­ницею між кількістю символів у найдовшому рядку тексту (максимальне значення вектора L) і кількістю символів у поточному (r-му) рядку. При цьому, якщо приховується біт «0», до стеганограми дописується значення 32 (звичайний пробіл), а якщо біт «1 » - значення 160 (нерозривний пробіл). Після вбудовування к біт, рядок завершується парою символів CR/LF. Після вбудовування всіх 8strlen(M) біт повідомлення цикл переривається. Якщо рядок, що модифікувався останнім, не є останнім у тексті (загальну кількість рядків тексту можна визначити як кількість елементів вектора L), стеганограма доповнюється немодифікованим текстом C'.

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


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

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

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