Professional Documents
Culture Documents
371375227-Steganografija HR SR
371375227-Steganografija HR SR
Стеганографије У СЛИКАМА
nika Парађина
Ивана Буклијаш
Крешимир Мудровчић
24. мај 2007.
САДРЖАЈ:
2
1. УВОД
3
2. ВРСТЕ стеганографије
а) Померање линија
Линије текста се померају вертикално горе или доле.
Вриједностиелемента тајне поруке одговарају помаку линије у односу на
унапред дефинисану позицију.
б) Померање речи
Прилагођавамо хоризонталне размаке између речи тако да одговарају вредностима скривеног
податка. Овај начин је мање видљив од горе наведеног, али захтева да
коришћени формат текста подржава варијабилне размаке.
Сва три начина захтевају да прималац има увид у оригиналну текстуалну датотеку
да би могао да декодира поруку.
4
нијанси. 24-битне слике омогућава већу флексибилност. На располагању имамо
велики број боја (око 16 милиона) који надилази могућности људског визуелног
система и чини такво кодирање сигурнијим. Друга предност, али и мана, 24-битне
слика је њена величина (МБ). Можемо похранити пуно више података него у 8-
битну слику, али је она, управо због своје величине, сумњивија.
5
3.Скривање порука у аудио
Метода најнижег бита скрива податке у најмање значајан бит аудио фајлове.
Капацитет канала је 1 КБ по секунди по кХз-у (44 кбпс за са 44 КХз отипкан
секвенцу). Ова је метода лагана за коришћење, али је јако подложна губитку
информација због шума или поновног отипкавања.
Фазно кодирање замењује фазу почетног сегмента аудио сигнала са
референтном фазом која представља сакривене податке. Притом се користи
дискретна Фуријеова трансформација.
6
Метода кодирања преко целог спектра скрива податке поруке у цео спектар
сигнала, те затим одашиље сигнал преко разних фреквенција зависно о методи која
је изабрана за промену спектра.
7
драг-анд-дроп поступком. Одабере се датотека коју желимо сакрити, одабере се
датотека коју желимо користити као параван, одаберемо поступак који желимо
користити те лозинку и притиском на тастер на тастатури, подаци су скривени.
Притом, наравно, корисник мора водити рачуна коју ће слику користити као
параван. Једноставно правило било би да је увек боље одабрати шарену слику свога
пса која је већини људи непозната јер је мања вероватноћа да би неко могао уочити
неправилности. Пример оваквог алата јеС-Тоолс који нуди скривање датотека било
каквог формата у .ГИФ, или .БМП слике или .ВАВ звук.
МП3 стегли скрива податке у .МП3 аудио фајлове. Стеганос 3 нуди напредне
технике енкрипције у комбинацији са разним техникама стеганографије.
4. ЛСБстего
Ова апликација користи ЛСБ-ове сваког пиксела као медиј похране скривених
података. За скривање текста користи се лозинка како би подаци били заштићени те
како не би сваки ЛСБ заменили (предвидљиво).
Код скривања слике велики је проблем величина слике коју желимо сачувати јер ако
особа која треба открити слику из стегослике не зна којих је димензија слика коју
смо сакрили, она ју никако не може реконструисати.
Зато смо у овој методи одлучили величину слике коју желимо сакрити прилагодити
величини "цовер" слике.
Други проблем је квалитет слике, кад бисмо хтели сакрити без квантизирање неку
РГБ слику, максималне димензије би нам биле 90 * 90 за "цовер" слику 256 * 256.
Зато смо одлучили квантизирати слику на 3 бита те сваки бит спремити у једну од
РГБ компонената.
главниЛСБ
8
Апликација ЛСБстего коју смо израдили за потребе овог пројекта састоји се од
неколико подфункција које се лако бирају у горњем менију па ћемо описати сваки
поједини избор.
9
2.Учитавање текстуалне датотеке коју треба сакрити у слици
10
Првих 5 страница текста овог семинара величине 11254 Бајтова
11
Оригинална слика и стегослика
900 900
800 800
700 700
600 600
500 500
400 400
300 300
200 200
100 100
0 0
12
Унесите назив стегослике: 'СтегоЛСБслика.тифф'
8.Прочитај сакривени текст из слике
13
2. Учитавање црно-беле слике коју треба сакрити у слици
- величину слике мењамо да буде једнаком димензија као цовер слика у коју
сакривамо слику
14
- због чињенице да овим поступком морамо променити све ЛСБ-ове слике,
процес може бити дуготрајан када желимо сакрити слику у неку слику већих
димензија
- тако је за нашу цовер матрицу димензија 256 * 256 процес скривања трајао 6
минута
900 900
800 800
700 700
600 600
500 500
400 400
300 300
200 200
100 100
0 0
15
6.Спремање стегослике на диск
16
5. ДЦТстего
Дефиниција
17
ДЦТ-ИИ
Неки аутори даље множе Кс0 са 1 / √2 што ДЦТ-ИИ матрицу чини ортогоналном.
кнје паран око н = -1 / 2 и паран око н = Н-1/2; Кск је паран око к = 0 и непаран око
к = Н.
18
инверзне трансформације
upotreba
19
Слику, коју желимо искористити за
прекривање поруке, трансформишемо главни
дискретном Косинусном
трансформацијом. Коефицијенти
дискретне косинусне трансформације,
који одговарају нижим фреквенцијама,
носе већину информација о слици.
Другим речима, то значи да промена на
коефицијентима виших фреквенција,
изазвана заменом бита поруке коју
желимо да пренесемо, и најмање
значајног бита одабраног ДЦТ
коефицијента, неће имати видљиви
утицај на изглед слике. Додатно се
промена, са аспекта статистичке
раздиобе коефицијената, али и са
аспекта безбедности, може учинити
непримјетније (?), Уколико се помоћу
шифре промијене само они
коефицијенти који одговарају некој
релацији. Релација се може произвољно
одабрати. У нашем случају релација Апликација ДЦТстего коју смо
гласи: израдили за потребе овог пројекта
састоји се од неколико подфункција које
задњи_бит_редног_броја_коефицијента = се лако бирају у горњем менију па ћемо
бит_лозинке АНД
(вриједност_ДЦТ_коефицијента = 1 ОР
описати сваки поједини избор.
вриједност_ДЦТ_коефицијента = 0)
1.Учитавање слике у коју треба сакрити
Уколико релација није задовољена, податке
коефицијент се неће променити. Да би
прималац могао одгонетнути поруку, - у МАТЛАБ прозору тражи се унос
мора унапред знати шифру. црно-беле слике:
20
мање од 3, а који задовољавају
горњу релацију, замењује нулама
- на екрану се исписује број
коефицијената који су замењени
нулама
21
који задовољавају услов или кад 900
700
коефицијентима 400
300
200
Изврсено је 7672 замена ЛСБ-а 100
промењеним ДЦТ
500
400
коефицијентима 300
200
100
Приказ хистограма
22
променом вредности пиксела, променио
се и њихов фреквенцијски однос, а тиме
5.Процитај сакривене податке из слике и коефицијенти ДЦТ-а. Мала је
вероватноћа, да ће баш они
- да бисмо заштитили податке, приступ коефицијенти које смо циљано мењали,
скривеној информацији могућ је само услед квантизације, остати
ако оба корисника користе исту лозинку непромењени. Промена коефицијената,
значи и промену битова поруке те се
Унесите лозинку за откривање порука више неће моћи реконструисати.
података из слике: 'Досл' Порука пренесном без кватизације
идентична је оригиналној.
- тражи се и унос имена датотеке Апликација ради са квадратним црно-
у коју се желе сачувати белим сликама димензија које су
откривени подаци вишекратници од 8, али уз мање
модификације апликација може радити
и за ргб слике, као и за слике
Унесите назив датотеке у коју треба произвољних димензија.
сачувати податке: 'Стегоподаци.ткт' Даља модификација била би решити
проблем квантизације која у овој
- позива се функција методи може створити криво пренесене
стегодцтблокови8 која од слике податке.
ради 4Д матрицу ДЦТ
коефицијената
- позива се функција откриј која
из ДЦТ коефицијената уз помоћ
лозинке, узима поједине ЛСБ-
ове те формира бинарни низ
података
- позива се функција уписидата
која узима добијени бинарни низ 6. КОДОВИ
података те их уписује у тражену
датотеку као слова 6.1 ЛСБстего
Величина цовер слике главни.м
256 * 256
512 * 512 % Мени функција
% 1. Учитавање слике у коју треба сачувати
1024 * 1024 податке
% 2. Учитавање датотеке са подацима које
треба спремити
% 3. Сакриј податке у слику
Проблем се јавља код МАТЛАБ-ове % 4. Учитавање слике у којој су скривени
подаци
функције имврите која слику описану % 5. Процитај сакривене податке из слике
вредностима тачака типа доубле, % Затвори програм
23
избор = мену ('Стеганографија у сликама - иф(Боје ~ = 1)
ЛСБстего - ДОСЛ (2007)',... спринтф ('Покусавате сакрити ргб слику,
'1. Уцитавање слике у коју треба сакрити радије покусајте са црно-белом сликом \ н',
податке ',... Роунд (капац_лсб / 8))
"2. Уцитавање тесктуалним датотеке коју енд;
треба сакрити у слици ',... вел_слика = (ДИМ1) * (дим2) * (боје);
'3. Уцитавање црно-беле слике коју треба спринтф ('Велицина васе слике је% д
сакрити у слици ',... Бајтова', Вел_слика)
'4. Сакривање текста у слику ',... спринтф ('За потребе сакривања променити
'5. Сакривање црно-беле слике у слику цемо велицину за фактор: \ н% .2ф
',... хоризонтално \ н% .2ф вертикално',
'6. Чување стегослике на диск ',... (У./дим1), (в./дим2))
'7. Уцитавање слике са скривеним подацима
',...
'8. Процитај скривени текст из слике ',... енд;
'9. Процитај скривену слику из слике ',... % 4. Сакриј податке у слику
'Затвори програм'); иф избор == 4;
24
% Враца број битова који се могу заменити,
енд; тј. Који задовољавају услов
% 8. Процитај сакривене податке из слике % Да је задњи бит бинарног облика
иф избор == 8; коефицијента једнак поједином биту лозинке
лсбстего_лозинка = инпут ('Унесите лозинку % У бинарном облику
за откривање података из слике:');% Унос % Н - улазна слика (слика у којој сакривамо
лозинке податке)
лсбстеголоз_бин = дец2бин (доубле (уинт8 % Лсб_лозинка - лозинка у бинарном облику
(лсбстего_лозинка)), 8);% Конверзија % Лсбкоеф - броји чланове матрице
лозинке у бинарни облик %
лсбдат_излазна = инпут ('Унесите назив %
датотеке у коју треба сачувати податке:');% [Кси ргб] = сизе (Н);
Унос излазне датотеке [Безвезе кеилен] = сизе (лсб_лозинка);
тајна = откријлсб (лсбстегоимг,
лсбстеголоз_бин); % Откривање скривених капац_лсб = 0;
података лсбкоеф = 1;
уписидата (тајна, лсбдат_излазна);% Упис бројац = 1;
скривених података у датотеку фор и = 1: к
фор ј = 1: и
енд; лсбкоеф_бин = дец2бин (лсбкоеф, 8);
иф ((Лсбкоеф_бин (сизе (лсбкоеф_бин, 2))
% 9. Процитај сакривену слику из слике == лсб_лозинка (бројац)))% Провера услова
иф избор == 9; капац_лсб = капац_лсб + 1;
бројац = бројац + 1;
лсбслика_излазна = инпут ('Унесите назив иф(Бројац> кеилен)
датотеке у коју треба сачувати слику:'); бројац = 1;
енд
тајна = откријслику (лсбстегоимг); % енд
Открити скривени низ бинарних података лсбкоеф = лсбкоеф + 1;
[Клм] = сизе (лсбстегоимг); енд
тајна_слика = зерос (к, л);% Празна енд
матрица димензија као и сакривена слика капац_лсб = капац_лсб * ргб;
бројац = 1;
[Днк, сизетајна] = сизе (тајна);
фор и = 1: (сизетајна / 3)
бинтемп (:, и) = бин2дец (тајна ((и-1) * 3
уцитајдата.м
фунцтион [Биндат, бинмат] = уцитајдат
+ 1: и * 3));% Конверзија у декадски облик
(датотека);
енд;
% Ова функција слузи за цитање података
типа цхар из неке датотеке
фор и = 1: к
% Датотека - име датотеке из које је
фор ј = 1: л
потребно процитати податке
иф((Бројац * 3)> (сизе (тајна, 2)))
% Биндат - бинарни низ процитаниј знакова
бреак;
% Бинмат - колона са знаковима у бинарном
енд;
облику
тајна_слика (ј, и) = бинтемп (бројац);%
Спреми бројеве у поља матрице
% Инициализација вектора
бројац = бројац + 1;
биндат = [];
енд
енд
% Отвори датотеку за цитање
фигуре, имсхов (тајна_слика, []);% Приказ
фид = фопен (датотека, 'Р');
откривене слике
имврите (тајна_слика, граи (8),
% Провера да ли тражена датотека постоји
лсбслика_излазна);% Упис откривене слике на
иф (Фид == -1)
диск
еррор ('Не могу отворити датотеку за
цитање');
енд;
енд
% Затвори програм
% У цхарниз спреми све знакове из датотеке
иф избор == 10;
цхарниз = фсцанф (фид, '% Ц');
цлосе алл;% Затвори све прозоре
енд;
% Конверзија знакова у уинт8
енд;
интниз = уинт8 (цхарниз);
25
биндат = [биндат бинмат (ров * (ј-1) + коеф = 1;% За сваку РГБ компоненту
и)]; ресетирај бројац коефицијената
енд енд
енд спринтф ('Изврсено је% д замена ЛСБ-а',
Замена)
биндат = биндат; В = Б;
% Затвори датотеку
фцлосе (фид);
квант.м
фунцтион И = квант (И, Р)
% Функција која квантизира слику И у Р ниво
замјенаЛСБ.м % Враца квантизирана матрицу И
фунцтион В = замјенаЛСБ (Б, лсблоз_бин, % И - матрица коју треба квантизирати
лсбдата) % Р - број квантизацијских ниво
% Ова функција замењује ЛСБ у матрици оним И = доубле (И);
елементима цији коефицијент
% Има ЛСБ једнак припадном биту бинарног И = И / мак (мак (И));
облика насе матрице д = 1 / (Р-1);
% Б - РГБ слика у којој треба сакрити текст И = роунд (И / д);
% Лсблоз_бин - бинарни облик лозинке
% Лсбдата - бинарни облик података које
треба сакрити у слику
сакријслику.м
фунцтион В = сакријслику (Б, лсбдата)
% В - слика са замењеним ЛСБ-овима
% Ова функција сакрива квантизирана слику у
% Замена - броји број битова који су
цвовер слику истих димензија
замењени
% Те у сваком пикелу замени Р, Г и Б
%
компоненту, дакле 3 бита по пикселу
[Кси ргб] = сизе (Б);
% Б - слика у коју треба сакрити слику
кеилен = сизе (лсблоз_бин, 2);
% Лсбдата - бинарни низ података које треба
лсбдатален = сизе (лсбдата, 2);
сакрити (кватизирана слика
% 3 бита за сваки пиксел)
замена = 0;%
% В - слика са сакривеном сликом у себи
коеф = 1;% Броји пикселе у свакој од РГБ
%
компоненти
%
бројац = 1;% Бројац за битове лозинке
[Кси ргб] = сизе (Б);
датабројац = 1;% Бројац битова података
лсбдатален = сизе (лсбдата, 2);
фор боја = 1: ргб
замена = 0;
фор и = 1: к
датабројац = 1;
фор ј = 1: и
иф(Датабројац> лсбдатален)% Ако је крај
фор и = 1: к
податка који зелимо сакрити
фор ј = 1: и
спринтф ('Сакривени су сви тразени подаци,
фор боја = 1: ргб
укупно је сакривено% д Бајтова', Замена /
иф(Датабројац> лсбдатален)
8);
спринтф ('Сакривени су сви тразени подаци,
бреак
укупно је замењено% д Бајтова', Замена)
енд
бреак
% Пронади пикселе који задовољавају услов
енд
лозинке
бинарни = дец2бин (доубле (Б (ј, и,
коеф_бин = дец2бин (коеф, 8);% Претвори
боја)), 8);% Претвори у бинарно сваки
кеф у бинарно
пиксел
иф (Коеф_бин (сизе (коеф_бин, 2)) ==
сиз = сизе (бинарни, 2);
лсблоз_бин (бројац))
бинарни (сиз) = лсбдата (датабројац);%
бинарни = дец2бин (Б (и, ј, боја), 8);%
Замена ЛСБ-а
Претвори елемент матрице у бинарно
замена = замена + 1;
сиз = сизе (бинарни, 2);
Б (ј, и, боја) = бин2дец (бинарни);%
бинарни (сиз) = лсбдата (датабројац);%
Претвори назад у декадски
Замена ЛСБ-а
датабројац = датабројац + 1;
замена = замена + 1;% Повецај бројац
енд
замена
енд
Б (и, ј, боја) = бин2дец (бинарни);%
енд
Претвори назад у декадски облик
спринтф ('Изврсено је% д замена ЛСБ-а',
датабројац = датабројац + 1;
Замена)
бројац = бројац + 1;
В = Б;
коеф = коеф + 1;
иф(Бројац> кеилен)
бројац = 1;
енд
елсе
коеф = коеф + 1;
енд
енд
енд
26
% Отвори датотеку за писање
фид = фопен (датотека, 'В');
откријлсб.м % Провери да ли потоји, иако ју сам створи
фунцтион стегодата = откриј (Б, иф (Фид == -1)
лсбстеголоз_бин) еррор ('На могу отворити датотеку за
% Ова функција проналази ЛСБ-ове за упис !!!');
припадну лозинку енд;
% Б - матрица са сакривеним подацима у ЛСБ
% Лсбстеголоз_бин - бинарни облик лозинке % Уписи рес у датотеку
% Стегодата - бинарни низ откривених фурите (фид, рес);
података
% % Затвори датотеку
% фцлосе (фид);
27
блокови = зерос (8,8, к1, к1); "2. Уцитавање датотеке коју требе сакрити
% Претвори матрицу у 8 * 8 ДЦТ блокове и у слици ',...
кватизирај '3. Сакривање датотеке у слику ',...
фор и = 1: к1 '4. Чување стегослике на диск ',...
фор ј = 1: к1 '5. Уцитавање слике са скривеним подацима
блокови (:,:, и, ј) = роунд (ДЦТ2 (Н (8 * ',...
и-7: и * 8,8 * ј-7: ј * 8))); '6. Процитај сакривене податке из слике
енд ',...
енд 'Затвори програм');
28
стегослика = инпут ('Унесите назив Б (н, м, и, ј) = бин2дец (бинарни);%
стегослике:'); Конверзија назад у декадски облик
[Стегоимг, мап] = имреад (стегослика);% датабројац = датабројац + 1;
Уцитавање слике са диска бројац = бројац + 1;
коеф = коеф + 1;
енд; иф(Бројац> кеилен)
% 5. Процитај сакривене податке из слике бројац = 1;
иф избор == 6; енд
стего_лозинка = инпут ('Унесите лозинку за елсе
откривање података из слике:'); коеф = коеф + 1;
стеголоз_бин = дец2бин (доубле енд
(стего_лозинка), 8);% Претвори лозинку у енд
бинарни облик енд
дат_излазна = инпут ('Унесите назив коеф = 1;
датотеке у коју треба сачувати податке:'); енд
стегоблок_дцт = стегодцтблокови8 енд
(стегоимг, стеголоз_бин);% Претвори у 8 * 8 спринтф ('Изврсено је% д замена ЛСБ-а',
ДЦТ блокове Замена)
стегодата = откриј (стегоблок_дцт,
стеголоз_бин); % Откриј податке В = Б;
уписидата (стегодата, дат_излазна);% Уписи
податке на диск
енд; блокуматрицу.м
фунцтион Б = блокуматрицу (Н)
% Затвори програм % Ова функција као 4Д матрицу ДЦТ
иф избор == 7; коефицијената претвара у матрицу са
цлосе алл; % Атварно вредностима пиксела
енд; % Н - 4Д матрица са 8 * 8 блоковима ДЦТ
енд; коефицијената
% Б - 2Д матрица ције вредности
представљају пикселе слике
сакриј.м %
%
фунцтион В = сакриј (Б, лоз_бин, дата) к = сизе (Н, 3);
% Ова функција сакрива податке у ЛСБ-ове к1 = к * 8;
ДЦТ коефицијената који матрица = зерос (к1, к1);
% Задовољавају тражени услов те враћа 4Д фор и = 1: к
матрицу са промењеним ДЦТ фор ј = 1: к
% коефицијентима матрица (8 * и-7: и * 8,8 * ј-7: ј * 8) =
% Б - 4д матрица са ДЦТ коефицијентима идцт2 (Н (:,:, и, ј));
% Лоз_бин - лозинка у бинарном облику енд
% Дата - подаци у бинарном облику које енд
желимо сакрити Б = матрица;
%
к = сизе (Б, 3);
кеилен = сизе (лоз_бин, 2);
стегодцтблокови8.м
фунцтион [Б] = стегодцтблокови8 (Н,
датален = сизе (дата, 2);
стеголоз_бин);
% Ова функција претвара улазну 2Д матрицу Н
замена = 0;
у 4Д матрицу Б у којој су
коеф = 1;
% 8 * 8 блокови ДЦТ коефицијената
бројац = 1;
% Н - улазна 2Д матрица
датабројац = 1;
% Стеголоз_бин - лозинка у бинарном облику
фор и = 1: к
%
фор ј = 1: к
кеилен = сизе (стеголоз_бин, 2);
фор н = 1: 8
[Кси ргб] = сизе (Н);
фор м = 8-н + 1: 8
к1 = к / 8;
иф(Датабројац> датален)
бреак
енд
блокови = зерос (8,8, к1, к1);
коеф_бин = дец2бин (доубле (коеф), 8);%
% Претвара матрицу у 8 * 8 блокове ДЦТ
Конверзија у бинарни облик
коефицијената и квантизира их
иф ((Коеф_бин (сизе (коеф_бин, 2)) ==
фор и = 1: к1
лоз_бин (бројац)) & ((Б (н, м, и, ј) == 1)
фор ј = 1: к1
| (Б (н, м, и, ј) == 0 )))
блокови (:,:, и, ј) = роунд (ДЦТ2 (Н (8 *
бинарни = дец2бин (Б (н, м, и, ј), 8);%
и-7: и * 8,8 * ј-7: ј * 8)));
Конверзија у бинарни облик
енд
сиз = сизе (бинарни, 2);
енд
бинарни (сиз) = дата (датабројац);% Замена
ЛСБ-а
Б = блокови;
замена = замена + 1;
29
откриј.м
фунцтион стегодата = откриј (Б,
стеголоз_бин)
% Ова функција открива скривене податке у
ЛСБ-овима ДЦТ коефицијената те
% Враца бинарне податке који представљају
скривену поруку
% Б - 4Д матрица ДЦТ коефицијената у којима
су скривени подаци
% Стеголоз_бин - лозинка у бинарном облику
%
%
%
коеф = 1;
бројац = 1;
стегодатабројац = 1;
фор и = 1: к
фор ј = 1: к
фор н = 1: 8
фор м = 8-н + 1: 8
коеф_бин = дец2бин (коеф, 8);% Претвори у
бинарни облик
иф((Коеф_бин (сизе (коеф_бин, 2)) ==
стеголоз_бин (бројац)) & ((абс (Б (н, м, и,
ј)) <= 1)))
иф(Б (н, м, и, ј) == (- 1))
стегодата (:, стегодатабројац) = 0;% Због
греске квантизације ово је цест слуцај
елсе
бинарни = дец2бин (Б (н, м, и, ј), 8);%
Претвори у бинарни облик
сиз = сизе (бинарни, 2);
стегодата (:, стегодатабројац) = бинарни
(сиз);
енд
стегодатабројац = стегодатабројац + 1;
бројац = бројац + 1;
коеф = коеф + 1;
иф(Бројац> кеилен)
бројац = 1;
енд
елсе
коеф = коеф + 1;
енд
енд
енд
коеф = 1;
енд
енд
В = стегодата;
30