Steganografi

Steganografi, gizli mesajları içeren bilgilerin başkaları tarafından fark edilmeden saklanması ve iletilmesi sanatı ve bilimidir. Bu uygulamanın tarihçesi oldukça eskiye dayanır ve çeşitli kültürlerde farklı yöntemlerle kullanılmıştır.

İlk steganografi örnekleri, Antik Yunanistan'a kadar uzanır. Tarihçi Herodot, düşmanların mesajlarını gizlemek için bir kölenin kafasının tıraş edilip kafa derisine mesajın yazılması ve saçlar tekrar uzadıktan sonra mesajın iletilmesini anlatır.

Steganografi kelimesi, Türkçeye Yunancadan geçmiştir. Yunanca "στεγανός" (steganos) kelimesi "örtülü" veya "gizli" anlamına gelir ve "γραφή" (graphē) kelimesi ise "yazı" anlamını taşır. Bu iki kelimenin birleşmesiyle oluşan "steganographia" terimi, "gizli yazı" anlamına gelir.

Steganografi konusundaki çalışmalar ilerledikçe bu konuya özel bazı terminolojiler de gelişti.

Gizlenecek mesajın içine saklanacağı veri “cover” yani örtücü ya da “carrier” yani taşıyıcı olarak adlandırılmaktadır.

Bazı kaynaklarda “host” yani “barındırıcı” olarak da adlandırılmıştır.

Taşıyıcı verinin içine mesaj saklama ise “embedding” yani “gömme” veya “içine yerleştirme” olarak adlandırılır.

İçine gizli mesaj yerleştirilmiş veriye ise “stego” denilmektedir.

Stego, taşıyıcı dosya ile gizlenecek verinin toplamına eşittir. Stego herhangi bir yolla alıcıya ulaştırılır. Alıcı veri saklama algoritmasının tersi olan bir işlemle gizli veriyi, anahtarı da kullanarak ortaya çıkarır.

-> ilker.bmp dosyasının içine bingöl.txt dosyasını saklayacak olalım.

-> Sonuçta ilkerbingöl.bmp gibi bir dosya oluşacak olsun. Burada ilker.bmp dosyası taşıyıcı, bingöl.txt dosyası gizli veri, ilkerbingöl.bmp dosyası ise stego dosya olmaktadır.

Steganografik bir algoritma incelenirken 3 temel unsur göz önüne alınmaktadır:

• Değişimin fark edilememesi

• Saklanabilecek veri miktarı

• Dayanıklılık

Resim üzerinde gerçekleştirilen değişiklikler insan gözü tarafından algılanmamalıdır. Aksi durum, birinci ilkenin ihlali ve gizli iletişimin ortaya çıkmasıyla sonuçlanacaktır. Öte yandan iletişim her ne kadar gizli de olsa üçüncü bir kişinin içerisinde gizli veri olan dosya üzerinde bazı işlemler yapma olasılığı vardır. Steganografik yöntemin bazı sınırlar içerisinde de olsa bu tür saldırılara karşı belli bir dayanıklılık sergilemesi gerekir. Steganografik algoritmalarda sağlanmak istenen, yüksek miktarda gizli verinin saklanabilmesidir. Maalesef, var olan algoritmaların tüm bu koşulları tam olarak sağlayamadığı bir gerçektir. Daha da kötüsü, bu koşullar arasında ciddi ikilemler vardır.

Taşıyıcı içerisine yüksek miktarda veri gömebilmek istenilen bir özelliktir. Ancak, veri miktarı arttıkça resim üzerindeki değişim insan gözüyle algılanabilecek sınırlara ulaşabilmektedir. Bu da kapasite ve değişim arasında bir ikilem yaratmaktadır. Yine benzer şekilde gömülen gizli verinin yapılan saldırılar sonucunda bile alıcı tarafında başarıyla çıkartılabilmesi için düşünülen dayanıklılığı arttırıcı önlemler ve/veya yöntemler yapılması gereken işlem miktarını arttırmakta ve yine dosya üzerinde yapılan değişimi belli edebilecek seviyeye ulaşabilmektedir.

Resim içine gizlenmiş bir metin;

Resim içine gizlenmiş bir resim;

Bu örneklerden de anlaşılacağı üzere masum görünen resimlerin çok da masum olmadığı.

Tüm bu koşullar ve ikilemler dâhilinde her türlü saldırıya göğüs gerebilecek bir algoritma henüz yayınlanmamıştır. Ancak, çeşitli düzeydeki ihtiyaçlar doğrultusunda önerilen algoritmalar başarılı olarak kullanılabilir.

Kriptoloji ile Farkı

Steganografi ile kriptografi arasındaki fark aslında çok açıktır: kriptoloji de iki nokta arasında gizli bir iletişim olduğu bilinir fakat steganografide, tanımı gereği, arada gizli bir iletişim olduğu görülemez. Steganografi ve kriptografi farklı konuları hedeflemiş olmalarına rağmen, güvenli bir iletişim için her ikisi birden kullanılmaktadır. Yani steganografi ile kriptografi birbirinin alternatifi değil tamamlayıcısıdır. Kriptografide aradaki şifrelenmiş mesaj okunursa sistem kırılmış demektir. Fakat steganografide durum biraz daha farklıdır. Sistemin kırılabilmesi için önce gizli verinin varlığının tespit edilmesi, sonra da gizlenmiş verinin doğru bir şekilde yeniden oluşturulması gerekmektedir.

Steganografi ile kriptografinin birlikte kullanıldığı bir sistemin kırılması içinse öncelikle gizli verinin varlığının tespit edilmesi, daha sonra saklanmış verinin doğru bir şekilde çıkartılması ve en sonunda da çıkartılan bu şifrelenmiş verinin çözümlenmesi gerekmektedir. Bundan da anlaşılabileceği gibi steganografi ve kriptografi kullanan bir sistem 3 katmanlı bir güvenlik yapısına sahip olmaktadır.

Fidye yazılımı çeteleri ve diğer tehdit aktörleri bir hedefe saldırırken genellikle bilgileri gizlediğinden steganografi, siber güvenlikle ilgilidir. Örneğin verileri gizleyebilir, kötü amaçlı bir aracı saklayabilir veya komuta ve kontrol sunucuları için talimatlar gönderebilirler. Tüm bu bilgileri zararsız görünen görüntü, video, ses veya metin dosyalarına yerleştirebilirler.

Steganografik Yöntemler

“Metin”, “resim”, “ses”, “html gibi farklı sayısal materyalin varlığı çeşitli yöntemlerin geliştirilmesine neden olmuştur. Bu yöntemler ya insanın görme sistemini Human Visual System ya işitme sistemini Human Audotary System ya da veri formatındaki gereksiz bölümleri istismar ederek çalışırlar. Örneğin bitmap resim dosyasına veri saklarken görme sisteminin ayırt edemeyeceği farklılıklar yapılarak saklama işlemi yapılır. Wav dosyasına veri saklanırken insan kulağının fark edemeyeceği sınırlarda değişim gerçekleştirilir. Bir exe dosyasına veri saklanırken ise aynı işlevi gören farklı komutların varlığından yararlanılmaktadır.

Resim İçerisine Veri Saklama

Şu ana kadar resim içerisine veri saklama konusunda birçok çalışma yapılmıştır. Bu çalışmalarda jpeg formatındaki resimler içerisine, gri seviyeli Bitmap resimler içerisine, siyah-beyaz resimler içerisine, LSB modifikasyonu, dönüştürme tekniği, maskeleme ve filtreleme gibi yaklaşımlarla veri saklama bunlara verilebilecek örneklerdir. Bu yöntemler alt başlıklarda sırasıyla açıklanacaktır.

LSB (Least Significant Bit) Modifikasyonu ve Bitmap İçerisine Veri Saklama

LSB modifikasyonu steganografide kullanılan en basit ve en yaygın yöntemdir. Mesaj resmi oluşturan piksellerin son bitlerini değiştirerek saklanır ve sonuçta oluşan resim orijinalinden görsel olarak ayırt edilemez. Veri ardışık olarak saklanabileceği gibi bir anahtar yardımıyla rastgele olarak seçilen piksellere de saklanabilir.

Şekil ’den de görülebileceği gibi bilgisayar açısından bir Bitmap resim dosyası piksellerin ışık değerlerini ifade eden iki boyutlu bir sayılar dizisidir. Yaygın olan resim boyutu 640x480 piksel ve 256 farklı piksel rengiyle oluşturulan resimlerdir. Sayısal resimler genel olarak 8, 16 veya 24 bitlik piksellerden oluşur. 24 bitlik piksellerden oluşan resimler en fazla veri saklayabilen resimlerdir. Bütün renk değerleri kırmızı, yeşil ve mavi (RGB) renklerin tonlarının karışımından elde edilir. Temel renklerin her biri bir byte büyüklüğünde değerle ifade edilir ve 256 şar farklı renk tonuna sahiptir.

24 bitlik bir resmin her bir pikseli 3 ana rengi ifade eden 3 byte boyutundaki piksellerden oluşur. 1024x768 boyutundaki 24 bitlik bir resim dosyasında her bir byte değerinin en az önemli bitleri veri saklama için kullanılsa toplam saklanabilecek veri boyutu:

1024x768x3/8 = 294912 (2.3) byte olmaktadır.

LSB modifikasyonu insan görme sisteminin küçük değişimleri ayırt edememesini kullanma mantığına dayanmaktadır. En az önemli bitlerine veri saklanan bir Bitmap resim dosyası orijinalinden görsel olarak farksız olmaktadır. Pikselleri oluşturan byte değerlerindeki değişimin oluşturduğu etki göz tarafından fark edilememektedir. Çalışmalar göstermiştir ki, sadece LSB değil, 4. seviyeye kadar ki bit değerlerinin modifikasyonu steganografide şeffaflığı bozmadan veri saklamak için başarılı bir şekilde uygulanmaktadır.

Resim içerisine LSB modifikasyonu ile veri saklamaya ilişkin aşağıda bir örnek verilmiştir. Saklanacak olan 9 bitlik bir verinin aşağıdaki bit değerlerinden oluştuğunu varsayalım:

1-1-0-1-0-0-1-1-0

Taşıyıcı resim dosyası ise 24 bitlik bir Bitmap resmi olsun. Bu durumda saklanacak olan mesajı barındırmak için 3 piksel yani 9 byte değerinin son bitleri yeterli olacaktır. Taşıyıcı dosyanın veri barındıracak olan piksellerinin en az önemli bitlerinin sırasıyla şu şekilde olduğunu varsayalım:

0-1-0-0-1-1-0-1-1

LSB modifikasyonundan sonra bu piksellerin en az önemli bitlerinin değerleri şu şekilde olacaktır:

1-1-0-1-0-0-1-1-0

Görüldüğü gibi 9 bit değerinin 6 tanesi (altı çizili olanlar) değişmiştir ancak bu tür değişimler görsel olarak ayırt edilebilir olmamaktadır. Geri getirme işleminde yeni piksel değerlerinin en az önemli bitleri sırayla okunup yan yana dizildiğinde saklanan mesaj doğru bir şekilde elde edilecektir.

Dönüştürme Tekniği ve Jpeg Resimlerine Veri Saklama

Dönüştürme tekniği (transformation), dönüştürme alanına (transformation domain) ait katsayı değerlerinin bitlerinin modifikasyonu ile gerçekleştirilir. AKT (Ayrık Kosinüs Transformasyonu) jpg resimlerinde kullanılan dönüştürme yöntemidir. Dönüştürme yöntemiyle veri saklama, resmin önemsiz alanlarında saklama yaptığından steganaliz ataklarına karsı daha sağlam olduğu değerlendirilebilir. Dönüştürme tekniğiyle resim içerisine veri saklama jpeg formatındaki resimler için aşağıdaki bölümde daha detaylı açıklanmıştır.

Resimler sayısal iletişimde sıklıkla kullanılan bir medya tipidir. İnternette en çok kullanılan resim türü jpeg resimleridir. Bitmap resimleri sıkıştırma kullanmayan resimlerken jpeg türü resimlerde kayıplı sıkıştırma işlemi gerçekleştirilmektedir. Veri saklama işlemi ise sıkıştırma esnasında gerçekleştirilmektedir.

Sıkıştırma esnasında jpeg resmi 8x8’lik bloklara bölünür ve her bir blok üzerinde AKT dönüştürme işlemi gerçekleştirilir. Nicemlemeye tabi tutulan bu katsayılar daha sonra Run-Length ve Huffman kodlama teknikleriyle kodlanır. Nicemleme (quantization) sonrası oluşan AKT katsayılarının en az önemli bitleri veri saklamak için kullanılabilir. Bu katsayılardaki yapılan değişiklikler resmin piksel değerlerini doğrudan etkilemediğinden oluşan değişim görsel açıdan ayırt edilemez. Bu durum jpeg resimlerini Bitmap resimlerine göre steganaliz ataklarına daha dayanıklı kılmakta ancak saklama kapasitesi Bitmap resimle kıyaslandığında çok düşük kalmaktadır. Jpeg resimleri üzerinde veri saklama algoritması gerçekleştiren çalışmaların neredeyse tamamı büyük oranlı saklama kapasitesine sahip değildir.

Maskeleme ve Filtreleme

Maskeleme ve filtreleme yönteminde resmin, resim işleme teknikleri kullanılarak veri saklamaya en uygun alanları belirlenir ve saklama işlemi bu bölgelerde gerçekleştirilir. Genellikle 24 bitlik gri seviyeli resimlerde başarılı olan bir yöntemdir.

Ses İçine Veri Saklama

Resim dosyalarına benzer şekilde ses içerisine veri saklama yöntemleri de insan işitme sisteminin zayıflıklarını kullanmaktadırlar. 2000’li yılların basından itibaren ses içerisine veri saklama çok popüler hale gelmiştir. Ses dosyaları da steganografi uygulamalarında veri saklama amacıyla kullanılabilmektedir. Bu konuda yapılan çalışmalarda genelde dönüştürme teknikleri ve LSB modifikasyonu gibi yöntemler kullanılmıştır. İnsan işitme sistemi çok geniş ve dinamik bir yelpazede islediği için ses sinyalleri içerisine veri saklamak özellikle zordur.

Ses içerisine veri saklama yöntemleri düşük bit kodlaması (Low Bit Encoding), faz kodlaması (phase coding), yayılmış spektrum (spread spectrum) ve yankı veri saklaması (echo data hiding) olarak sınıflandırılmaktadır. Düşük bit kodlaması, ses örneklerinin son bitlerinin saklanacak veriye göre değiştirilmesi yani LSB yöntemidir. Sesin analog ortamlara girmeksizin, tamamen sayısal ortamlarda transferi durumunda kullanılabilir. Faz kodlamasında ses dosyası bölümlere (segment) ayrılmakta ve bölümlere ait faz değeri, veriyi saklayacak şekilde yeniden oluşturulmaktadır. Bu yöntem resim içine veri saklama yöntemlerinden dönüştürme tekniğine benzemektedir. Yayılmış spektrum yönteminde sese ait frekans spektrumu üzerinde veri gizlenmektedir. Bu yöntemde seste gürültüler oluşabilir. Yankı veri saklaması yönteminde ise ses sinyali üzerine yankı eklenmekte ve yankının farklı gecikme değerleri kodlanarak veri saklanabilmektedir.

Wav ve mp3 dosyaları sayısal ortamda en sık kullanılan ses dosyalarıdır. Aşağıdaki bölümlerde bu dosya türleri içerisine veri saklanmasının ayrıntıları yer almaktadır.

WAV Dosyaları İçerisine Veri Saklama

WAV dosyaları sayısal iletişimde sıklıkla kullanılan ses dosyası türlerinden biridir. Windows WAV dosyaları 8 veya 16 bitlik yani 1 veya 2 byte büyüklüğündeki değerlere sahip ses örneklerinden oluşmaktadır. Ses örnekleri, doğası gereği, ses dalgasının belli bir andaki yaklaşık tahmini değerini ifade etmektedir. Bu durum ses örneklerinin en az önemli bitleriyle oynama imkânı vermektedir.

Mp3 İçerisine Veri Saklama

Mp3 dosyaları kullanımı giderek yaygınlaşan sıkıştırılmış ses dosyalarından birisidir. Boyutunun küçük olabilmesi nedeniyle steganografik uygulamalar için uygun bir taşıyıcı dosya türüdür. Mp3 dosyaları içerisine veri saklayabilen az sayıda uygulama mevcuttur. Bunların en bilineni Mp3Stego yazılımıdır. Bu yazılım sıkıştırma esnasında Mp3 dosyaları içerisine veri saklayabilmektedir.

Metin İçine Veri Saklama

Metin içerisine beyaz boşluklar kullanılarak veri saklanabilmektedir. Bu şekilde 3 ayrı yöntem kullanılmaktadır. Birinci yöntemde, her sonlandırıcı karakterin sonuna bir veya iki boşluk bırakarak kodlama gerçekleştirilir. İkinci yöntemde ise satır sonlarına boşluk bırakılarak kodlama yapılmakta ve veri saklanmaktadır. Üçüncü yöntemde de metnin sağa yaslanmasıyla oluşan boşlukların kodlanmasıyla veri saklama işlemi gerçekleştirilmektedir. Metin içerisine veri saklama yöntemleri bunlarla sınırlı değildir. Örneğin bir metindeki kelimeler, ilk harfleri yan yana geldiğinde anlamlı bir mesaj oluşturacak şekilde sıralanarak da mesaj saklanabilir. Örnek olarak, Alman bir casusun İkinci Dünya Savaşı’nda kullandığı şifreli metni inceleyelim:

“Apparently neutral’s protest is thorougly discounted and ignored. Isman hard hit. Blockade issue affects Pretext for embargo on by products, ejecting suets and vegetable oils.”

Her kelimenin ikinci harfini birleştirerek mesajını iletmiş:

“Pershing sails from NY June .”

HTML İçerisine Veri Saklama

En basit olarak, HTML ile yazılan web sayfalarının kaynak kodları arasına web tarayıcılar tarafından gösterilmeyen yorum satırları eklenerek gizli mesaj gizlenebilir. Ancak bu metot gizli mesajın açık olması güvenlik problemi teşkil etmektedir. İlgili mesajın gözden kaçırılmasını sağlayacak farklı alternatiflerin düşünülmesi bu noktada büyük önem arz etmektedir. HTML kodları içerisine sıklıkla kullanılan “src, width, height, alt, title, border, bgcolor, href” gibi anahtar ifadelerin ardı sıra gelme kombinasyonlarının anlamlandırılması ile ikili bilgilerin gizlenmesi yaklaşımı da etkili olup, ilk bakışta gizli mesajın tespit edilmesi ihtimalini ortadan kaldırmaktadır.

Aşağıdaki HTML taglarının yerleri kodlanır ve bilgi gizleme işlemi gerçekleştirilir. Bu yapılarda biri ‘1’ diğer ‘0’ olarak kodlanır.

<span class=”bigText” style=”color:#0088ff”>
               Text with a CSS class and special color
</span>
<span style=”color:#0088ff” class=”bigText”>
               Do you see the diffrence?
</span>

Kurallar şu şekilde tanımlanabilir:

if( class-attribute before style-attribute){
               the tag encodes a “1-bit
}
else{
               the tag encodes a “0-bit
}

Çalıştırılabilir (EXE) Dosyalar İçerisine Veri Saklama

Aynı işlevi gören komutların varlığından faydalanılarak, çalıştırılabilir dosyalar içerisine de veri saklanabilmektedir. Hydan isimli program i386 komut setindeki tekrarlardan faydalanarak 1/110 kapasiteyle bir mesajı bir uygulama içerisine saklayabilmektedir.

Steganografi Araçları

İnternet aracılığı ile açık kaynak kodlu, direkt çalıştırılıp uygulanabilen, serbest kullanım lisanslı ya da ücret karşılığı lisanslı olmak üzere birçok veri gizleme aracına ulaşılabilir. Her aracın kullandığı algoritmalar, desteklediği dosya uzantıları farklıdır. Bu blog yazısında, internette var olan bütün veri gizleme araçlarını incelemek, nasıl kullanıldıklarını anlatmak tercih edilmemiş, yerine en çok kullanılan, açık kaynak lisansa sahip iki tane araç tanıtılmıştır. Kullanıcının nasıl bir veri gizleme ihtiyacına göre ve hangi kapak dosya kullanacağına uygun olarak en uygun yazılımı kendisinin internet ortamında bulup kullanması tavsiye edilmektedir.

Günümüzde birçok steganografik yöntem bulunmaktadır. Bir steganografik yöntem değerlendirilirken dayanıklılık-kapasite ve taşıyıcıdaki değişim–kapasite arasında ikilemler söz konusudur. Kapasite arttıkça dayanıklılık azalacaktır. Yine aynı şekilde kapasite miktarı arttıkça taşıyıcı ortamdaki değişimler artacaktır.

Steghide Kullanımı

Steghide, birçok çeşit resim ve ses dosyasının içine veri saklamamıza yarayan bir steganografi programıdır. Bir gizleme işlemine tabi tuttuğunuz zaman bir parola da belirleyebilirsiniz. Bu sayede data direk extract edilemez.

Steghide özellikleri:

-> Saklanmış data sıkıştırma

-> Saklanmış data şifreleme

-> Saklanmış veri bütünlüğünü sağlamak için doğrulama kodu yerleştirme

-> JPEG, BMP, WAB ve Au dosya uzantılarını desteklemek.

Kurulumu:

Linux’da dağıtımınızın deposundan kolaylıkla kurabilirsiniz, eğer ki dağıtımınızın deposunda bulunmuyorsa internet adresinden uygun paketi indirebilirsiniz.

Kullanımı:

Veriyi saklamak için, Aşağıdaki örnek kullanımı temsil etmektedir.

$ steghide –embed -ef (saklanacak_veri) -cf (içine_gomulecek_dosya) -p (sifre) -sf (oluşturulacak_dosya_adi) -e (sifreleme_metodu) -z (sıkıştırma_derecesi) -v (verbose - ayrıntılar)

Veriyi kontrol etmek için:

$ steghide –-info (kontrol_edilecek_dosya) -p (sifre)

Veriyi açmak için:

$ steghide –extract -sf (sifrelenmis_dosya) -p (sifre) -xf (oluşturulacak_dosya_adi) -v (verbose-ayrintilar)

Diğer araçlar:

-> OpenStego

-> OutGuess 0.2

-> Snow

-> GifShuffle

-> MP3Stego

-> Hydan

-> TürkSteg

Steganaliz

Steganografinin gelişmesine paralel olarak gelişen diğer biri bilim dalı ise steganalizdir. Steganalizin amacı ise steganografinin tam tersine bir resim, ses veya herhangi bir dosyadaki gizlenmiş verinin varlığını ortaya çıkarmaktır. Steganaliz orijinal objelerle stego objeler arasındaki ayrımı tespit etmek üzere tasarlanmış teknikler bütünü olarak ifade edilmektedir.

Steganaliz çalışmalarının temelinde saklanan verinin taşıyıcı nesne üzerinde bir takım parmak izleri bıraktığı düşüncesidir. Yani saklama işlemi sonrasında oluşan stego nesne görsel, işitsel veya işlevsel olarak orijinalinden ayırt edilemez olsa da istatistiksel olarak farklılıklar taşıyabilmektedir.

Gizli mesajın varlığının tespit edilmesi, mesajın uzunluğunu tahmin edilmesi ve gizli verinin tamamen ortaya çıkarılması konuları steganalizin sahasına girmektedir. Steganografik uygulamalara karsı geliştirilen steganaliz ataklarından bazıları şunlardır:

-> Stego dosyanın bilindiği atak (stego-only)

-> Tasıyıcı dosya ile stego dosyanın ikisinin de bilindiği atak (known cover)

-> Saklı bir mesajın bilindiği atak (known message)

-> Algoritma ve stego dosyanın bilindiği atak (chosen stego)

-> Algoritma ve saklı bir mesajın bilindiği atak (chosen message)

Steganografide kullanılan saklama algoritmasına ihtiyaç duyulmaksızın evrensel tespit yapabilen steganaliz çalışmalarının sayısı artmaktadır. ANNTS (Artificial Neural Network Technology for Steganalysis) isimli projede de yapay sinir ağları kullanılarak dijital resimler istatistiksel olarak analiz edilip saklı bir veri olup olmadığının evrensel olarak tespit edilmesine çalışılmaktadır.

Last updated