Stenografi-Veri Gizleme - Ferdi DOGAN

02.03.2017

Imgeler için veri gizleme yaklasimlari

Günümüz teknolojilerinde bilginin dis ortamlara karsi korunmasi çok önemli olmakla birlikte zorunlu hale gelmistir. Bu sebeple bilginin korunmasi için gelistirilen ve uygulanan birçok yöntem vardir. Bunlardan biri de stenografidir. Stenografik teknikler kullanilarak imge içerisine bilgiler güvenli sekilde karsi tarafa iletilmesi amaçlanir. Burada temel amaç imge üzerinde yapilacak degisikliklerin,  üzerindeki bozulmayi en aza indirgeyerek gizli bilginin varliginin saklanmasidir. Dijital görüntüler üzerinde degisiklikler yapilarak, imge içerisine pek çok bilgi yerlestirilebilir. Ancak bu degisikliklerin fark edilmemesi gerekmektedir. Internetin günümüz dünyasinda her alanda kullanildigi düsünülecek olursa her an dijital görüntülüler içerisinde oldugumuz görülecektir. Sosyal paylasim siteleri, sosyal aglar, internet siteleri içerisinde dolasan sayisiz dijital görüntü içerisine stenografik tekniklerle bilgin gizlenmesi mümkündür. Bununla beraber böyle bir dijital ortamda gizlenen bilginin farkedilebilmesi neredeyse imkansizdir. Bu makalede stenografik  veri gömme teknikleri üzerinde en çok kullanilan LSB kodlama, 2bit LSB kodlama, RGB kodlama, R kodlama teknikleri kullanilarak birbirleri üzerindeki üstünlükleri karsilastirilmistir. Bu yöntemler üzerine analizler yapilarak yeni bir veri kodlama teknigi sunulmustur. Önceki yöntemler ile gelistirilen 0.ve2. bite gömme yöntemi karsilastirilmistir. Gelistirilen yeni yöntemin önceki yöntemlere göre bilinmemesi, gizli veriye ulasilmasi bakimindan daha zor olacaktir

RGB kodlama teknigi(RGB coding technique)

Bu kodlama teknigindeki temel mantik bir piksel içerisine bir ASCII karakterinin gömülmesi mantigina dayanmaktadir. Bir piksel içerisinde yer alan Red Green ve Blue degerliklerinin içerisine bir Ascii karakter kümesinin sayisal degerliginin yerlestirilmesiyle olusur. Bir karakterin ascii kod karsiligi 3 haneden olusur. Burada örnek olarak f  harfini alacak olursak; f=102Asciidegerine sahiptir. Bu degerlikte her bir hane, pikseldeki renk kodlarindan R,G ve B degerliklerine yerlestirilir. Ancak buradaki islem yürütülürken Ascii karakter karsiligindaki rakamin her bir hanesi f ‘nintümleyeni olarak alinir. Bu alinan degerlik f’ olarak tanimlanir. 102 degeri tümleyeni alindiktan sonra 908 olarak görünür. f’=908 olur.

Pikseldeki RGB degerliginde ise her bir degerin sonu önce 0 degerini alir. Alinan örnek piksel degerliginin RGB(75,88,125) oldugunu düsünecek olursak; R=75, G=88, B=125’tir. Her degerin son hanesi 0 yapilir. Bu durumda R=70, G=80, B=125 olacaktir.  Ve görüntü içerisindeki piksel degerliginin sonuna buradaki her bir hane yerlestirilir.

R=70+9=79

G=80+0=80

B=120+8=128 olacaktir.

RGB kodlama ile veri gizleme semasiSekil3’te anlatilmistir.

Sekil 3:RGB kodlama ile veri gömme(Embedding data with RGB coding)

 

Yeni olusan RGB degeri ise RGB(79,80,128) seklinde olacaktir.

RGB kodlama teknigi ile veri gömüldükten sonra resim üzerinde bozulmalar meydana gelecektir. Hassasiyeti diger duyu organlarindan daha az olan gözün, olusan bu bozulmalari görmesi pek mümkün degildir[12].

Gizlenmis olan verinin yeniden elde edilmesi için gömme isleminin tersi uygulanir. Öncelikle bir piksel degerligi alinir. RGB(79,80,128). Her bir agirliktaki degerin son hanesi yani birler basamagindaki rakam alinir. Alinan rakamlarin tümleyeni alinarak, yani 10 çikarilarak ASCII karakter kod karsiligi elde edilir. R=79,G=80, B=128’dir. Her bir degerligin son hanesini alip 10’dan çikaracak olursak elde edilecek olan degerler 1, 0, 2‘dir. Yan yana getirilecek olan bu deger 102 ASCII karakter kodu olan f harfinin bulunmasini saglar. Bu durum sekil 4’te gösterilmektedir.

 

Sekil 4: RGB kodlama ile verinin elde edilmesi(Obtaining data by RGB encoding)

R kodlama teknigi(R coding technique)

R agirlikli kodlama teknigi RGB agirlikli kodlama teknigine benzer sekilde isler. Ancak burada islem yapilirken R agirlikli renk degerindeki son hane 0 yapilmadan ASCII kod karsiligindaki ilk basamak degerini alir. Diger renk degerlikleri yine RGB kodlama tekniginde anlatildigi sekilde isler. Önek olarak f harfini alacak olursak;

f=102 ASCII karakter koduna sahiptir. Piksel degerligimiz ise RGB(75,88,125) oldugunu düsünecek olursak; öncelikle piksel degerliklerin son basamak degerliklerini 0 yapariz. R=70, G=80,B=120 olarak tanimlanir. Daha sonra f ASCII kodlu olan 102 degerliginin ikinci ve üçüncü basamagindaki degerliklerin 10’a tümleyenini aliriz. Eger sonuç 10 ise bunu 0 olarak degerlendiririz. Buna göre 102 gömü degerindeki 0 degerligi için ilk basamak degerine dokunulmaz ve ikinci basamak degeri için 10-0=0 olur. 102 gömü verisindeki son basamak olan 2 degeri için ise 10-2=8 olacaktir. Yeni ASCII degerlikli kodumuz ise 108 olacaktir.  Gömme islemine geçildiginde ise her hanedeki degerlikler RGB piksel degerliklerinin birer basamagina yerlesecektir.  Burada 108 gömü verisindeki 1 degerligi R agirliginin son hanesine, 0 degeri G agirliginin son hanesine ve 8 degeri B agirlikli degerin son hanesine yerlestirilecektir.

R=70+1=71

G=80+0=80

B=120+8=128 olacaktir.

Olusacak olan yeni piksel degerligi RGB(71,80,128) olacaktir. Bu durum sekil 5’te gösterilmektedir.

Sekil 5: R Kodlama ile veri gömme(Embedding data with R coding)

Gömülen verinin tekrar elde edilmesi ise yukarida anlatilan islemin tersi ile mümkün olacaktir. Önce piksel degerligi okunur. RGB(71,80,128) elde edilen piksel degerligindeki her agirligindaki son haneler alinir. R agirligi hariç diger agirliklarin son hane degerlerinden 10 çikarilir. Yani 10’a tümleyeni alinir. R=71, G=80, B=128. Ve buradan son haneler alinir. R=1 G=10-0,B=10-8. Buradan R=1,G=0,B=2 olur. Ve elde edilen ascii karakter kodu 102 olur. Buradan elde edilen karakter f’dir. Sekil 6’da gösterilmektedir.

 

Sekil 6: R kodlama ile verinin elde edilmesi(Obtaining data by R encoding)

LSB kodlama teknigi(LSB coding technique)

LSB(Least Significant Bit)stenografik uygulamalar için yeni bir baslangiçtir[13]. LSB kodlama teknigi literatürde en çok kullanilan ve karsilasilan tekniktir[14][15]. Çok fazla kullanilmasinin sebebi ise veri gizlendikten sonra resim üzerindeki bozulmalarin bilinen tekniklere göre oldukça az olmasidir. Bu teknikte piksel degerliginin en az agirlikli olan son biti ardisik olarak degistirilerek gerçeklestirilir[16]. Piksel degerlikleri binary’e çevrilerek son bitlerine gömülecek olan verinin binary kodu yerlestirilir. Bir Ascii karakter kodunun gömülebilmesi için 3 piksele ihtiyaç vardir. 8 bitlik bir Ascii kod karsiligi olan bir karakterin yerlestirilmesi için 3 pikseldeki 9 degerlikten 8 degerlige gömülme isleminin yapilmasi gerekmektedir. En önemsiz bite yerlestirilecek olan bitler degistirilerek gerçeklesir. Resim üzerinde gerçeklesecek bu degisim gözle görünmeyecek kadar az olacaktir.  Asagidaki sekil 7’de 3 piksel okunur ve devamin da Ascii karakter kodunun karsiligi binary’e çevrilir. Ve en önemsiz bit olan son bite yerlestirilir.

Sekil 7: LSB kodlama ile veri gömme(Embedding data with LSB coding)

LSB ile veri gömme islemini sekil 7’de görmekteyiz. Veri gömüldükten sonra verinin tekrar elde edilmesi için sekil 7’de yapilan islemin tersi yapilir. 3 pikselin 9 agirlikli degerinden ilk 8 agirlikli deger okunur. Ve bu degerlerin en önemsiz bitleri alinarak 8 bit bir araya getirilir. Bir araya getirilen bu degerlikler decimal degerligi alinarak Ascii karakter kod karsiligi bulunur. Sekil 8’de gizli verinin elde edilmesi yer almaktadir.

Sekil8: LSB gizli verinin elde edilmesi(Obtaining data by LSB encoding)

2LSB kodlama teknigi(2LSB coding technique)

2 LSB yöntemi, LSB yöntemine göre 2 kat veri gizleme kapasitesine sahiptir. 2 bit LSB yöntemi maskeleme, filtreleme vb gibi pek çok algoritmalar ile pek çok yönteme göre olusabilecek tespitlere karsi daha dayaniklidir[17]. 2LSB biti ile bir görüntü içerisine gizlenen verinin fark edilmesi neredeyse imkansizdir. Fakat steganaliz yöntemleri ile gizli bilginin varligina ulasmak LSB’ye göre daha kolaydir[18].

2 bit LSB kodlama tekniginde en önemsiz 2 bit kullanilir. Ve gizlenecek olan veri son 2 bite gömülür. LSB yönteminde en önemsiz bit alirken burada son 2 bit alinmaktadir. LSB yönteminde 3 piksel içerisindeki 8 agirlikli renkten 8 bite yerlestirilirken,  2 bit LSB yönteminde ise 2 piksel içerisinde bulunan 4 agirlikli renkten 8 bite yerlestirilir. 2 pikselin okunmasi ve Ascii karakter kodunun yerlestirilmesi islemi sekil 9’da bu durum ifade edilmektedir.

Sekil 9: 2LSB bitine gömme (Embedding data with 2LSB coding)

 

Gömü isleminden sonra verinin çikarilmasi için sekil 9’da anlatilan islemlerin tersi yapilmaktadir. Bu durum sekil 10’da gösterilmektedir.

Sekil 10: 2LSB gizli veririn elde edilmesi(Obtaining data by 2LSB encoding)

0 ve 2 Bite kodlama teknigi(0 and 2 bits coding technique)

0 ve 2 bite kodlama teknigi LSB veri gömme teknigine benzer sekilde islenmektedir. LSB tekniginde son bit olan en az agirlikli degerin kullanilmasiyla gerçeklesir. Bu teknik LSB kodlama teknigi ile 2 LSB kodlama tekniginin harmanlanmis seklidir. Burada görüntüde yer alan bir piksel içerisindeki renk agirliklari binary hale getirilir. Daha sonra gizlenecek olan binary halindeki verinin sirasiyla gömü yapilacak görüntüdeki renk degerliginin 0 ve 2 bitine yerlestirilerek gerçeklesir. Yani gizli verinin ilk iki biti gizlenecek olan görüntü içerisindeki piksel degerliginin 0 ve 2 bitine yerlestirilir.

0 bitin decimal agirlik degerligi 1’dir. 2 bitin decimal agirlik degeri ise 4’tür. Gerçeklestirilecek olan bu stenografi tekniginde her iki bitinde degismesi durumunda decimal olarak 5 degeri kadar degisim gerçeklesmis olacaktir.

Sekil 9’da görüldügü gibi öncelikle görüntü resmindeki 2 piksel degeri okunmakta. Bu piksel degerlikleri binary’e çevrilmekte. Daha sonra gömü verisi olan bir ascii karakter kodunun decimal karsiligi olan sayi elde edilip bu decimal degerde binary’e çevrilmekte. Binary’e çevrilen bu degerin ilk 2 biti olan 01 verisi gömü verisindeki ilk pikselin r agirlikli kodunda yer alan son 3 bitteki 0. ve 2. bite yerlestirilmektedir. Bitlerin yerlesmesinden sonra piksel degerliklerindeki decimal degerlikleri bir sonraki asamada yer almaktadir.

Sekil 11: 0 ve 2 LSB bite kodlama teknigi ile veri gömme (Embedding data with 0 and 2 bits coding)

0 ve 2 bite kodlama tekniginde verinin gömülmesi islemi yukaridaki gibi anlatilmistir. Verinin elde edilmesi sirasinda ise bu islemin tersi bir durum söz konusu olacaktir. Bu durum Sekil 10’da gösterilmistir. Buna göre görüntü verisi içerisindeki piksel degerligi okunur. Okunan piksel degerligi içerisinde yer alan decimal degerliklerin binary’e dönüsümü yapilir. Binary degerligin en az agirlikli olan 0 ve 2 bitleri alinir. Piksel degerlikleri içerisindeki binary degerlikleri 8 bit olunca bu 8 bit degerin decimal degerligi hesaplanir. Ve bu decimal degerligin ascii karakter kod karsiligi tespit edilir.

Sekil 12: 0 ve 2 kodlama ile verinin elde edilmesi(Obtaining data by 0 and 2 bits encoding)

0 ve 2. Bite kodlama teknigi procedurel dil

Veri gizleme kodlama tekniklerinin yaninda bizim gelistirmis oldugumuz kodlama tekniginin gerçeklenmesi, islem algoritmasi(Procedurel kod) seklinde asagida yer almaktadir.

Procedure nesneye_veriyi_gizle

Görüntü  <--  resim(x,y)

gizlenecek_veri <-- metin

veri_gizleme_teknigini seç

while (gizlenecek_veri karakteri kadar tekrar et) 

karakter <-- gizlenecek_verin’in son karakteri

asciikodu <-- karakter’in ascii kod karsiligini bul

toplambinary <-- toplambinary  + asciikodu’nu binary’e cevir

do

while(resim(x,y) her pixele veri gömene kadar devam et)

rgb <-- resim(x,y)

            while(rgb(r) mod 2<8)

rgb(r) <-- rgb(r)/2

do

while(rgb(g) mod 2 <8)

rgb(g) <-- rgb(g)/2

do

while(rgb(b) mod 2 <8)

rgb(b) <-- rgb(b)/2

do

                        gomubiti <-- left(toplambinary,2)

if(rgb(b) gömme islemi yapildiysa) then

rgb(r) göme islemini yap //bir sonraki islem

if (gomubiti=”00”) then

if (rgb(r) >= 4) then

rgb(r) <-- rgb(r) - 4

if (rgb(r) mod 2 = 1) then

                     rgb(r)  <-- rgb(r)  - 1

if (gomubiti=”01”)  then

if (rgb(r) >= 4) then

rgb(r)  <-- rgb(r) - 4

if (rgb(r) mod 2 =0) then

                        rgb(r)  <-- rgb(r) + 1

if (gomubiti=”10”) then

if (rgb(r)  <  4) then

                        rgb(r)   <-- rgb(r)  + 4

if (rgb(r)  mod 2=1) then

                        rgb(r)  <-- rgb(r)  - 1

if (gomubiti=”11”) then

                                    if (rgb(r)  < 4) then

rgb(r)   <-- rgb(r)   + 4;

                                    if (rgb(r)  mod 2=0)

                        rgb(r)   <-- rgb(r)   +1;

if(rgb(r) gömü tamamlandiysa) then

rgb(g) gömme islemini gerçeklestir.

if(rgb(g)  gömü tamamlandiysa) then

rgb(b) gömme islemini gerçeklestir.

do

end procedure

 

Yukarida belirtildigi üzere piksellerin binary’e çevrilerek degil aldigi decimal degerlikler düsünülerek bir algoritma yapilmistir. Veri gömme algoritmasi yukarida gösterildigi gibidir. Gömülü verinin imge içerisinden çikarilabilmesi için ise asagidaki gibi bir algoritma tasarlanmistir.

görüntü <-- resim(x,y)

veri_gizleme_teknigini seç

while(resim(x,y) her pixel okunana kadar)

rgb <-- resim(x,y)

            while(rgb(r) mod 2<8)

rgb(r) <-- rgb(r)/2

do

while(rgb(g) mod 2 <8)

rgb(g) <-- rgb(g)/2

do

while(rgb(b) mod 2 <8)

rgb(b) <-- rgb(b)/2

do

if (rgb(r)= 0 or rgb(r)= 2) then

bitler <-- bitler+"00"

if (rgb(r) = 1 veya rgb(r)= 3) then

bitler <-- bitler+ "01"

if (rgb(r) = 4 veya rgb(r) = 6) then

bitler <-- bitler+"10"

if (rgb(r) = 7 veya rgb(r)= 5) then

bitler <--bitler +"11"

// rgb(r) için yapilan bitler islemi rgb(g) ve rgb(b) içinde yapilacaktir.

   if (bitler.lenght=8) then

decimaldeger=Decimal(bitler) //bitlerin decimal degerligini bul

karakter<--Ascii(decimaldeger)

gizlibilgi<--gizlibilgi+karakter

do

//Bütün pikseller okundugunda programi sonlandir.

End procedure

 

Haber Başlıkları

::::::::::::::        Tüm Haberler         ::::::::::::::
Bilgi Başlıkları

::::::::        Tüm Bilgilendirmeler        :::::::::
Makaleler

:::::::::::        Tüm Makaleler        ::::::::::::
Copyright (c) Ferdi DOĞAN