ENCODE (eşleme)
Encode, işlemindeki amaç bir bilginin (data) başka tür den bir bilgiye çevrilmesidir. Günlük hayatta kullandığımız kısaltmalar : İETT , AŞTİ , TSE birer encode örneğidir, amaçlanan sadece şekil değiştirmektir.
Encode işlemi eşleştirme ya da matematiksel algoritma ile yapılabilir.
Matematiksel encode işlemleri ise yine aynı fonksiyonun tersi alınarak sonuç bulunabilir (bknz sıkıştırma algoritmaları)
iki rakamı tek sayı olarak encode edecek
y = a * 10 + b şeklinde bir fonksiyonumuz olsun;
kullanıcı a ve b kutularına 5 ve 9 rakamlarını girdiğinde sunucu bilgisayara ayrı ayrı 2bytelık veri yollamaktansa,
y= 5 * 10 + 9
y=59
şeklinde veri yollayabiliriz, ve sunucu taraf decode ederek yani ters fonksiyon
b = 59 mod 10
a = (59 - b) /10
işlemleri ile sonuca ulaşabilir.
ASCII
Klavye vuruşlarımız, dosya içerisindeki veriler bilindiği üzere 1 ler ve 0 lar aracılığı ile tutuluyor bunun 8 adedine bir byte diyoruz ve ondalık sayı sistemine göre bir klavye vuruşumuz, dosyadaki bir harf 0 dan 255 e kadar olan bir sayı ile tutuluyor. ASCII bu sayıları "65 = A" şeklinde tek tek çevirerek bize sunulmuş halidir. Öyleki bir resim dosyasında bu sayılar harflere değil renklere eşlenmektedir
Linklerin Gorulmesine izin VerilmiyorLinki Gorebilmek icin Uye Ol veya
Giris YapBASE64
Ascii kullanırken 8 er li byte gruplarından yararlanarak dosyalarda okuma yapıyorduk, fakat bu karakterlerin bir kısmı ekrana çıkan karakterler, base64 de ise bit grupları 6şar şekilde okunmakta , her 6 lının ascii si alınmakta bu sayede text formatında resim , dosya gönderimi sağlanamaktadır.
Linklerin Gorulmesine izin VerilmiyorLinki Gorebilmek icin Uye Ol veya
Giris YapHTML ENCODE / HTML URL ENCODE
Ascii nin tüm dünya dillerini kapsamaması ve html dosya formatında kullanılan işaretlerin karışmaması için geliştirilmiştir. Normal metindeki " ş ğ ü / " gibi harfleri kullanabilmemizi sağlar.
Linklerin Gorulmesine izin VerilmiyorLinki Gorebilmek icin Uye Ol veya
Giris YapLinklerin Gorulmesine izin VerilmiyorLinki Gorebilmek icin Uye Ol veya
Giris YapMP3
Standart wave dosyaları belli sayıdaki (kaliteye göre) byte ların herhangi bir ses yüksekliğine eşitlenmesi ve bu ses yüksekliklerinin arka arkaya hızlıca çalınmasıdır. Mp3 formatında ise tüm dosya analiz edilir kullanılmayan ya da az kullanılan aralıklar çıkartılır, genel olarak aralık azaltılır ve dosya sıkıştırma (sıkıştırma :çok kullanılan byte değerlerinin az kullanılanlar ile yer değiştirmesi) işlemine tabi tutulur. Nihayetiyle aynı ses dosyası farklı bir formata bürünmüştür.
ENCRYPT (şifreleme)
Şifreleme de encode da olduğu gibi bir tür değişilikli vardır. Amaç veriyi güvenli hale getirmektir. Yani sadece kasanın anahtarının ve şifresinin olduğu kişi kasayı açabilir. Dikkat ettiyseniz her türlü şifreleme yönteminin kodunu internet üzerinden bulabilirsiniz. O zaman nasıl oluyorda şifre ve/veya anahtarı kullanmadan kasayı açamıyoruz? İşin sırrı matematikte yatıyor. Alt başlıkların ardında çeşitli basit örneklerle güncel yöntemler anlatılmıştır.
TEK YÖNLÜ ŞİFRELEME (Hash)
Amaç bir veriyi tanımlayacak başka bir veri üretmektir. Hemen aklınıza encode bölümü geldi değil mi ? Doğrudur ama encode da TSE = Türk standartlar enstitüsü şeklinde sadece 1 eşitlik mevcuttur.
Örnek: herhangi bir metni en kısa yoldan şifreyelim:
Kelimemiz : CAN olsun her harfin ascii kodunu çarparsak
HARF:
C
A
N
ASCII :
67
65
78
67 * 65 * 78 = 339690 sayısını elde ederiz. Güvenirliği artırmak için bölme, çıkarma gibi ek işlemlerde yapabiliriz tabi ki.
Şimdi düşünelim 339690 sayısını nasıl tekrar CAN haline çevirecek bir program yazabiliriz? İyi düşünün!
Matematiksel olarak tek yapabileceğimiz a * b * c = 339690 de a ,b,c değerlerinin yerine gelecek uygun sayıları bulmak
Sırayla düşünelim, öncelikle kelime kaç harfli ki ?
ascii yazılabilir karakterleri 32 den 126 ya (uzatılmışları saymazsak) kadar olduğuna göre ve koda göre sayılar birbirine çarpılıyor o zaman sonucun kök derecesi yardımcı olabilir √339690 = 582 hımm demek ki metin 2 haneden fazla √582= 24 evet sayımız 3 haneli imiş (eğer uzatılmış karakterleri de saysaydık aralıkta kalabilirdik) o zaman;
a * b * c = 339690
ifadesini veren tüm sayıları bulalım ve ascii kodlarına çevirelim:
sadece 32 – 128 aralığına göre :
A - C - N
A - N - C
C - A - N
C - N - A
N - A - C
N - C - A
2738019 çarpma işlemi yapılarak bulunmuştur
Eğer uzatılmışlar ve yazısızlarda dahil olsa idi :
- © - É
- É - ©
- ‚ - É
- † - Ã
- Ã - †
- É - ‚
- † - ©
- © - †
- A – É
- C – Ã
- Ã – C
- É – A
‑ - C - ©
‑ - © - C
' - A - †
' - C - ‚
' - ‚ – C
' - † - A
A - - É
A - ' - †
A - C – N
A - N – C
A - † - '
A - É -
C - - Ã
C - ‑ - ©
C - ' - ‚
C - A – N
C - N – A
C - ‚ - '
C - © - ‑
C - Ã -
N - A - C
N - C - A
‚ -
- É
‚ - ' – C
‚ - C - '
‚ - É -
† -
- Ã
† - - ©
† - ' – A
† - A - '
† - © -
† - Ã -
© - - †
© - ‑ - C
© - C - ‑
© - † -
© - É - Ã -
- †
à - - C
à - C -
à - † -
É -
- ©
É -
- ‚
É - - A
É - A -
É - ‚ -
É - © -
50331648 çarpma işlemi
Eşitliği sağlayan değerler ne de çok değil mi ? tabi biraz zeki bir insan içinden can ı çekip alabilir anlamlı bir metin oluşturduğundan dolayı, fakat eğer y = a * b * c / ( a * b ) * (c * a) – (a – b + c) gibi karma karışık bir
eşitlik olsaydı ve düşünün bu örnek sadece 3 karakter için. Basit denenebilecek bir çarpma işlemi kaldı ki sadece son örnekte 50 milyon çarpma işlemi dakikalar sürmüştür 5 haneli bir şifrede yapılacak : 3298534883328 adet çarpma işlemi epey bir süre işlemcimizi meşgul edecektir.
TEK YÖNLÜ ŞİFRELEMENIN KULLANILDIĞI YERLER:
Checksum (denetleyici) : işlemlerinde kullanılırlar. Örneğin elinizde 50mblık bir dosya var bu dosyayı sunucuya attınız ve başka bir yerden çekeceksiniz, ya dosyada bir değişiklik olmuşsa ? İşte burada devreye checksum devreye giriyor. Eğer ben 50mb lık dosyayı tanımlayacak 32bitlik bir metin oluşturursam problem ortadan kalkar. Az önceki örneğimizde CAN kelimesi 339690 gibi bir karşılık vermişti, tüm dosyayı CAN a benzer bir işleme tabi tutarsam bir harf bile değiştiğinde değişen bir değer alırsam, o dosyanın sağlam olduğundan emin olurum. Bu kısa metine fingerprint (parmak izi) denmektedir.
Parola Kontrolü: Checksum la aynı mantıktadır, düşünün bir web sitesinde şifremiz CAN olsun ve veritabanında saklansın, eğer birisi veritabanını okumayı başarırsa ilk deneyeceği mail adresinizde de can parolasını denemek olacaktır. Eğer her yerde aynı parolayı kullanıyorsanız bu da başınıza epey sorun yaratacaktır. Fakat şifreniz 339690 şeklinde veritabanın da saklansaydı?
1. Siteye giriş yaptınız
2. Parola kutucuğuna “CAN” yazdınız
3. Arka planda bu CAN az önceki işleme tabi tutulup 339690 ‘a çevrildi
4. 339690 veri tabanındaki 339690 ile karşılaştırıldı
5. İçeridesiniz
Fark etti iseniz eğer NCA yazsa iseniz yine sistem sizi kabul edecekti, bu da bizim algoritmamızın berbatlığının sonucudur, bu tip algoritmalarda en istenmeyen durum aynı sonucu verecek iki kelimenin bulunmasıdır. Zira o zaman algoritmanın kırılma aşaması başlamış olur.
Matematiksel bir algoritma ile bir fingerprint in eski haline çevrilmesi ancak üretilen sabit uzunluğun altındaki karakter sayısında olasılık olarak mümkün olabilir. Yani 5 karakterli bir çıktı veren algoritmada 6 karakterleri girdi yapıldığı ters işlemi mantık açısından mümkün değildir.
CRC32 (Cyclic Redundancy Check)
Amacı dosya sağlamlığını kontrol etmek olan herhangi bir verinin 32 bitlik eşleniğini üretir.
MD 4 , 5 (Message Digest 5)
En çok kullanılan algoritmalardan birisidir. Genel olarak parola kontrol işlemlerinde kullanılır. Fakat birçok programda crc32’nin yerini almıştır. Bir veri den 128 bitlik değer üretir.
ÇİFT YÖNLÜ ŞİFRELEME
Çok gizli bir metni ağ üzerinden arkadaşınıza gönderirken kimsenin okumasını istemezsiniz öyle değil mi ? Çift yönlü algoritmalar anahtar ve şifre ile korunan kasalardır.
Genellikle metin hex formatına anahtar kelime (key) uzunluğu kadar parçalara ayrılır. Daha sonra her parça anahtar ile etkileşime girer. Birçok algoritmada sürekli tablonun satırları, sütunları sürekli yer değiştirir.
Sonuçta key dosya olmaksızın geriye getirilemeyen, dosyalar oluşur.
NTFS formatında böyle bir özellik vardır, eğer dosyalarınızı şifreli şekilde kaydetmeyi seçerseniz dosyalarınızın boyutunda bir değişme olmayacaktır ama hard diske sizin kullanıcınız a özel o anda oluşturulmuş key dosyası ile etkileşime girerek saklanacaktır. Eğer bu anahtar dosyayı yedeklemez iseniz, dosyaların geriye dönüşü mümkün olmayacaktır.
Bazı algoritmalar da ise anahtar dosya yerine sizin belirlediğiniz parolanın metnine göre etkileşime girerler.
CAN kelimesini ALI kelimesi ile basitçe şifrelersek:
C (67)
A (65)
(65 + 67) / 2
66 (B)
A (65)
L (76)
(65 + 76) / 2
71 (G)
N (78)
I (73)
(78 + 73) / 2
76 (L)
Kimi algoritmalarda key + password yöntemi kullanmaktadırlar.
BLOWFISH , DES , 3DES (DES ile şifrelenmiş metni arka arkaya 2 kere daha des ile şifreleme) gibi algortimalar örnek gösterilebilir.
Şifreleme Kırma
Tek Yönlü :
Tek yönlü şifrelemelerin ters işlemlerinin ne kadar imkansız olduğunu yukarıda belirtmiştik. Fakat sonuç halka açık bir algoritmaya sahip olduklarından bir nebze de olsa bazı algoritmalarda tahminsel işlemler yapılabilmektir. Özellikle herhangi bir çakışma bulunduğu zaman, sonuca çok yaklaşacak işlemler yapılabilmektedir. Fakat en çok kullanılan yöntem veritabanı oluşturma yöntemidir. Daha önceden sırasıyla a ,b, aba,abacı,arabacı… gibi tek tek tüm anlamlı , anlamsız kelimelerin şifrelenmiş halleri saklanır. Sonuçta parola işlemleri 5 ~10 karakter aralığında gerçekleştiği için aralık içerisinde çakışma olmayacağından veritabanında neredeyse kesin sonuçlar barınır. Kısca encode dan farkı kalmaz fakat 10 karakterleri bir şifre takribi 100.000.000.000.000.000.000.000 farklı kombinasyon üreteceği için bu veritabanını üretmek epey bir vakit almaktadır.
fakat 4 karaktere kadar olan şifreler hızlı deneyici programlar yardımı ile kısa sürede çözülebilmektedirler.
Çift Yönlü :
Parola korumalı yöntemlerde yukarıdaki gibi deneme,yanılma programları kullanılmaktadır ( brute force). Örneğin bir zip dosyasının şifresini açmak için benzer bir program kullanılır.