Steganografi

Steganografi, eski Yunanca'da "gizlenmiş yazı" anlamına gelir ve bilgiyi gizleme (önemli: şifreleme değil) bilimine verilen addır. Steganografi'nin şifrelemeye göre en büyük avantajı bilgiyi gören bir kimsenin gördüğü şeyin içinde önemli bir bilgi olduğunu fark edemiyor olmasıdır, böylece içinde bir bilgi aramaz (oysaki bir şifreli mesaj, çözmesi zor olsa bile, gizemi dolayısıyla ilgi çeker).

Örnek

Resimlerde, 24 bit'lik bir kanallama kullanılır. Bu kanallar kırmızı, yeşil ve mavi'dir ve her bir kanal 8 bit'lik bir değere sahip olabilir. 8 bit 256 ayrı değer saklayabilir, ve örneğin 12 sayısı 00001100 olarak 240 sayısı ise 11110000 olarak kodlanacaktır.
Öte yandan, bir insan her renkteki 8 bit'in son iki (hatta üç) bitindeki değişiklikleri göremeyecektir, zira bu değişiklik 3 (veya son üç bit için 7) ton değişikliğe eşdeğerdir (oysaki toplamda 255 ton var). Bu durumda, son üç bit asıl rengin detayları yerine başka bir bilgi saklamak için kullanılabilir: hesaplayacak olursak görüyoruz ki günümüzde cep telefonlarının çektiği (dolayısıyla sıkça paylaşılan) 1600 * 1200 çözünürlükteki bir resmin içine bile 2 Megabayta kadar veri saklanabilir!
Örneğin, soldaki resmi gelişmiş bir fotoğraf veya veri editörüne verin. Editöre, resmin her baytına 3 sayısı ile "Logical AND" işlemi yapmasını söyleyin. Ortaya simsiyah bir resim çıkacak.
Şimdi işin zevkli kısmı: o simsiyah (gibi görünen) resmi bir resim editörü ile açın ve resmin parlaklığını 85 katına çıkartın. Göreceksiniz ki, ortaya sağdaki kedi çıkacak!

Resim içine yazı gizlemek

Günümüzde birden fazla veri gizleme metodu bulunmaktadır. Bu yöntemler arasında en iyi en kötü ayrımı yapamayız, her birinin diğerlerine göre kısıtlamaları ya da üstünlükleri bulunmaktadır. Bu projede kullanılacak olan yönteme geçmeden önce diğer yöntemleri inceleyelim.
Yöntemlerin en kolayı gizlenecek olan veriyi resim dosyasının “açıklama” alanında gizlemektir. Bu ideal bir yöntem değil çünkü “açıklama” alanının bir sınırı var (255 byte kadar). Ayrıca bu yöntemde değişik resim dosyaları için değişik algoritmalar kurmanız gerekecektir.
Bir başka yöntem ise resim dosyasında renkler için ayrılan ama kullanılmayan alanların veri gizleme için kullanılmasıdır. Bu yöntem de bazı veri çözme araçları ile kolayca bulunabilir, fark edilebilir.
Resim dosyalarının tipik özelliklerini çok iyi kavramamız gerekir. 
Bunlar;

1- Bütün resimler dosya başlığı (header) ve piksellerden oluşur.

2- Her piksel sadece bir renk içeren/gösteren küçük bir bloktur.

3- Her pikseldeki renk temel 3 rengin karışımından elde edilir.(Red,Green,Blue)

4- Her pikselde bu 3 renkin verileri tutulur. Her temel renk 1 pikselde 1 byte (0..255) yer kaplar, yani 1 piksel 3 byte (R,G,B) veri taşır.
Örnek : 

Beyaz Renk RGB formatında FF-FF-FF hex değeri ile ifade edilir. 
Yani Red: FF(h), Green: FF(h), Blue: FF(h)

FF binary sistemde 11111111 in karşılığıdır.

1 pikselde beyaz rengi ifade etmek için 11111111- 11111111- 11111111 verisi 
kullanılır.

11111111- 11111111- 11111111 verisinin en anlamsız bitlerini gizlenecek olan veri için kullanma yöntemi üzerine kuruludur. Bu küçük renk değişikliğini insan gözü algılayamaz.

Her piksele 3 bit. İlk bakışta çok çok az gibi görünse de 800x600 ebatında bir resimde 

800 x 600 = 480.000 adet piksel bulunur.

480.000 x 3 bit = 1.440.000 bit (gizlenecek olan veri için kalan yer)

1.440.000 bit = 175,7 KiloByte

Ayrıca

VSL: Virtual Steganographic Laboratory