Header ads

Header ads
BU DESiFREYi OKUMAK iCiN .RESME TIKLAYIN KONU ARSiViNDEN DE BULABiLiRSiNiZ
» » » » » » » » GiZLi SiFRELER KRİPTOLAR GiZLi iLETiSİM

Vigenere Şifresi


Tarihi:

İlk olarak 1553 yılında Giovan Batista Belasa tanıtılmış 16. yüzyılın sonlarında Blaise De Vigenere bu yöntemi düzenleyip kullanmıştır ve bu yöntemin adı “Vigenere şifresi” olarak kalmıştır.

Tanımı:

Vigenere şifreleme yönteminden önce anlattığımız şifreleme yöntemlerini kısaca yeniden hatırlarsak, şifreler genel olarak bir alfabede yer değiştirme fonksiyonları ile oluturuluyordu. Buna en basit örnek olarak sezar sifreleme yöntemini verebiliriz. Tabiî bu yer değiştirme algoritmaları ile yazılan şifrelerde olasılık düşüktü ve şifre deneme-yanılma (yineleme) yöntemiyle kırılabilecek tarzdaydı. Vigenere yöntemi ile bu olasılık biraz daha büyültülmüştür. Bu yöntemin en büyük özelliği çoklu alfabe kullanmasıdır. Bundan kastımızı da aşağıdaki tabloya bakarak anlayabiliriz.


Bu tabloya Vigenere tablosu denilmektedir. Bu yöntemle şifreleme yaparken Vigenere tablosunda periyodik döngüler ile yer değiştirme işlemleri yapılır. sezar sifreleme yöntemini göz önünde bulundurup tablonun ilk satırına bakarsak arada bir benzerlik göreceğiz. Sezar yöntemine göre burada öteleme (kaydırma – shift) sayımız 0, son satıra göre de 25’dir ve ya 26x26 lık bir matris şeklinde de düşünebiliriz. Bunu birinci satırı bir şerit gibi düşünürsek her seferinde bir yana kaymasıyla oluşan tablo bize vigenere tablosunu verir.

Böylelikle alfabe ile yer değiştirme arasında bire-bir değilde bir-çok bir ilişki sağlamış oluruz.

Yani 26 karakterlik her harfe karşı bir tane 26 karakterlik harf şeridi karşılık gelir. Aslında bu şeridi oluşturan harfler hep aynıdır fakat yerleri kaydırılarak (shift edilerek) değiştirilmiştir.

Burada Vigenere şifreleme yönetiminin iki metodu olan autokey metodu ver keyword metoduna değineceğiz.

Autokey Metodu:

Bir mesajı Vigenere autokey metoduyla şifrelemek için gönderici ve alıcı bir başlangıç anahtarı (priming key) üzerinde anlaşmış olmalıdırlar. Bu başlangıç anahtarı (priming key)

tek harften oluşur. Mesajın şifrelenmeye başlaması için bu anahtara ihtiyaç duyarız. Yöntemimizi tarif edecek olursak; şifrelenecek düz metnimizi bir satıra yazalım. Bunun alt satırına da başlangıç anahtarımızı (priming key) yazalım. Böylece gönderici düz metindeki harfleri ve başlangıç anahtarını kullanarak Vigenere tablosundan şifrelemeyi yapar. Şifreleme işlemi ise düz metindeki harfleri Vigenere tablosunun satır başlarından, başlangıç anahtarımızı da sütun başlarından bakarak bu ikisinin karşılık geldiği (kesiştiği) harfler bizim şifreli metnimizi oluşturur.

Düz metindeki ilk harf ile başlangıç anahtarımızı kesiştirip bir harf buluyoruz. Daha sonra düz metindeki ikinci harfin şifrelenmesi için başlangıç anahtarı olarak bu sefer düz metindeki ilk harfi seçiyoruz yine tablodan bakarak ikinci harf içinde bu şifreleme işlemi yapılır. Böylece üçüncü ve diğer tüm harfler bu mantıkla şifrelenir. Bu söylediklerimizi bir örnek üstünde gösterelim.

Örnek:

Başlangıç anahtarı (priming key): B

Düz Metnimiz: DEFTER

Şimdi yukarıdaki tarife göre şifreleme işlemine geçelim.

Düz Metin: D E F T E R

B. anahtarı: B D E F T E

Şifreli Metin: E H J Y X V

Böylelikle şifreli metnimizi “EHJYXV” buluruz.

Çözümü

Alıcı olarak elimizde şifreli metnimiz ve daha önce üzerinde anlaştığımız başlangıç anahtarımız var. Yine bir satıra şifreli metnimizi yazıp alt satıra da başlangıç anahtarımızı yazıyoruz. Bu sefer tabloda satır başı olarak başlangıç anahtarımız olarak alıyoruz ve şifreli metnimizdeki karakteri bulana kadar sağa ilerliyoruz. Yani anahtar ile kesişimi şifreli metindeki karakter olan harf bizim düz metnimiz oluyor. İlk harf için bu işlemi yaptıktan sonra. Şifreli metindeki ikinci harfin çözümü için başlangıç anahtarı olarak bu sefer düz metindeki ilk harfi seçiyoruz. Bu işlemleri devam ettirdiğimizde düz metnimizi elde ederiz.

Şifreli Metin: E H J Y X V

B. anahtarı: B D E F T E

Düz Metin: D E F T E R

B ile başladık, kesişimi E olan düz metnimiz D oldu. Başlangıç anahtarı olarak bu sefer D yi alıp işlemleri tekrarladık. Düz metin olarak “DEFTER” `i bulmuş olduk.

Güvenlik:

Kırılması sizinde tahmin edeceğiniz gibi çok basittir. Başlangıç anahtarı olarak alfabede seçilecek 26 karakter vardır. Buda 26 olasılık ile bu şifrelemenin çözülebileceğidir. Onun için bundan daha kuvvetli olan anahtar kelime metodunu (keyword metod) görelim.

Keyword Metodu:

Aslında autokey metoduna biraz benzemektedir fakat orda başlangıç anahtarı olarak bir harf seçerken burada bir kelime seçmekteyiz. Hemen örneğimize geçersek.

Düz metin: DEFTER AL BANA

Anahtar kelime: SORU

Yine bunları alt alta yazalım fakat beşerli harf gurupları halinde olsun.

Düz Metin: D E F T E R A L B A N A

Anahtar: S O RU S O R U S O R U

Şifr. Metin: V S E N W F R F T O E U

D yi satır başından S yi sütun başından seçip kesişim olarak V bulduk. Sonra aynı şekilde E yi satır başından O yu sütun başından seçip S yi bulduk. Bu mantıkla tüm harfleri şifreledik. Şifreli metnimiz “V S E N W F R F T O E U” oldu.

Çözümü:

Şifreli metnin çözümü için yine autokey metodundaki yol izlenir. İlk satıra şifreli metin alt satıra da anahtar kelime yazılır. Yine beşerli guruplar halinde yazalım.

Şifr. Metin: V S E N W F R F T O E U

Anahtar: S O RU S O R U S O R U

Düz metin: D E F T E R A L B A N A

Satır başını S alıp kesişimi V olan harfimizi D düz metin harfimiz oluyor. Böylelikle düz metin bulunmuş oluyor.

Güvenlik:

Autokey metoduna göre çok daha kuvvetlidir. Görüldüğü gibi anahtar kelimenin boyu arttıkça şifreleme daha güçlü olmaktadır.

Vigenere şifresinin kriptoanalizi:

Vigenere şifreleme yönetmi bundan önce bahsettiğimiz yöntemlere göre daha kuvvetli dir fakat günümüz teknolojisini düşünürsek yine çok zayıf kalan bir algoritmadır. Şifreli yazının kırılması için gerekli olan anahtar uzunluğunun bulunmasıdır. Autokey metodunda anahtar uzunlığı 1 olduğu için 26 olasılıkla hemen düz metini elde ediyorduk.anahtar kelime metodunda ise kelime uzunluğu çözümü bulmak için yeterlidir. Şimdi bu algoritmaların kırılması için iki yöntemi ele alacağız. Bunlar Firiedman ve Kasiski testleridir.

Friedman Testi:

Bunu daha çok kapa testi olarak duyarız. 1925`te William F. Friedman tarafından bulunmulştur. Kendisine dayanak olarak şifreli metinde tekrarlanan karakter çiftlerinin baz alarak anahtar kelime uzunluğunu bulmaya çalışır. Gerekli formülleri verecek olursak

N(i) ler A,B,C,….,Z nin frekanslarıdır. N ise alfabedeki harf sayısıdır. 0,065 ten bahsedecek olursak; daha önce dediğimiz gibi rast gele seçilmiş iki harf grubunu (AB gibi) tekrarlanma olasılığının bulunmasına dayanır. Rastlantı dizi değeri olarak İngiliz alfabesinde tek harfe göre bu değer 0,077 Türkçe de 0,063 dür. İkili harf grubu için bu değer türkçede 0,059 ingilizcede 0,065 tir işte buna rastlantı dizi değeri diyoruz. Formülde verilen k ise tahmini anahtar uzunluğumuzdur.

Kasiski Testi:

Bu testte Friedman testi gibi anahtar kelime uzunluğunu bulmaya yöneliktir. Bunu bir örnek üzerinde anlatalım.

Düz metin: i have seen many beautiful Works of art over the years but there is one particular painting that impressed me more than any other it is called thescream and it was painted by edvard munch

Anahtar: help

Şifreli Metin: PLLKLWPTUQLCFFPPBXTUBPHDYODDMECIVZPGALPNLEC HIYEIOICTPWZCLTLGAMNJSECEHMYIPRRIOEEXTTCTZWPSTIXDYIEWHRLCFS EWLVTIPWNPSPPSALPHJVPPTEYSPXHPZTLXUXPSICPSCECSTYYRO

Şimdi burada önemli olan şifreli metinde tekrar eden harf gruplarıdır görüldüğü gibi “LCF” ve “ALP” tekrar etmektedir. Şimdi bunlar üzerinden anahtar kelime uzunluğunu bulalım.

Harf grubu

Yeri

Uzaklık

Çarpanlar

LCF

10 98

88

2 4 8 11 22 44 88

ALP

36 116

80

2 4 5 8 10 16 20 40 80

Yeri; şifreli metinde baştan başlayıp sayarak harf gurubunun olduğu yere kadar olan uzunluğu buluyoruz.

Uzaklık; bulduğumuz şifreli metindeki tekrarlanan harf gruplarının bir birine olan uzaklığı.

Çarpanlar; Burada ise bulduğumuz uzaklık sayısının çarpanlarını alıyoruz.

Bu veriler elimizdeyken kelime uzunluğu hakkında 2 , 4 veya 8 dir diye tahmin yürütebiliyoruz. 8 uzun bir kelime 2 de kısa bir kelime olacağından en uygun tahminimiz olarak 4 ü kullanabiliriz.

Şimdi anahtar kelime uzunluğu ile şifreli metnimizi nasıl kıracağımıza bakalım

Şifreli Metin: PLLKLWPTUQLCFFPPBXTUBPHDYODDMECIVZPGALPNLEC HIYEIOICTPWZCLTLGAMNJSECEHMYIPRRIOEEXTTCTZWPSTIXDYIEWHRLCFS EWLVTIPWNPSPPSALPHJVPPTEYSPXHPZTLXUXPSICPSCECSTYYRO

Anahtar uzunluğumuzu 4 olarak almıştık. Buda demektir ki anahtar kelimemizin ilk harfi ile şifreli metnimizin 1,5,9,… karakterleri aynı harf ile şifrelenmiştir.

1. harf PLUFBBYMVALIOPLASHPOTZTYHFLPSAJTPZUICTO

2. harf LWQFXPOEZLEYIWTMEMRETWIIRSVWPLVEXTXCEY

3. harf LPLPTHDCPPCECZLNCYRECPXELETNPPPYHLPPCY

4. harf KTCPUDDIGNHITCGJEIIXTSDWCWIPSHPSPXSSSR

Bundan sonra bir dizi frekans hesabından geçiriyoruz. Aynı örneğin benzeri burada var…

Fakat sizde internette buna benzer çözümlemeler yapmak isterseniz.

http://www.cs.uri.edu/cryptography/classicalvigenerecryptdemo.htm

Adresinden şifreli metinimizi çözmek için gerekli adımları takip edebiliriz.

Önce metin girilir. Harflerin şifreli metinde kaç kez tekrarlandığı bulunur. Rastlantı değişkeni elde edilir. Bizim örneğimiz için (0.05538355693154455) dir.. Sonra keyword uzunluklarımızı gireriz.. Yukarıda bunu 4 olarak belirlemiştik. Sonra 5 girin hatta 3 üde deneyiniz.. Göreceksiniz ki frekans hesabında en yakın değeri 4 de alacaktır. Bundan sonra yine bizim yukarıda ayırdığımız gibi harflerimiz dört guruba ayrılır. Şimdi kesinleştirmiş olduğumuz anahtar kelime uzunluğunu girersek. Karşımıza “help” çıkağını görürüz.. Bundan sonrası da basit zaten…

Buna benzer olarak

http://math.ucsd.edu/%7Ecrypto/java/EARLYCIPHERS/Vigenere.html

adresini de kullanabilirsiniz.

http://www.apprendre-en-ligne.net/crypto/vigenere/index.html

Kaynaklar:

  1. JASS 05, Seminar: Algorithms for IT Security, Classical Cryptography, Ilya Saverchenko, June 6, 2005
  2. Cryptography (SS2006), Prof. Michael Backes, Saarland University
  3. http://www.cs.uri.edu/cryptography



Afin Şifreleme Yöntemi

Tarihi ve Tanımı:

Simetrik (Sezar şifreleme metodu) şifreleme yöntemi ile yazı üzerinde 27 farklı dönüşüm yapılabiliyordu. Biz İngiliz alfabesini göz önünde tutarsak 26-1=25 dönüşümden söz etmemiz gerekir. Buda simetrik şifreleme yönteminin güvenli olmadığını gösterir. Afin yöntemi ile simetrik şifreleme yöntemi biraz daha genelleştirilmiştir ve güvenlik azda olsa simetrik şifreleme yöntemine göre daha güçlüdür. Tabi bu kağıt kalem kriptolojisinin bir örneği olduğundan bunu günümüz koşullarına göre düşünürsek. Çok çok zayıf bir yöntem olduğunu görürüz. Fakat bu bize kriptolojinin temel mantığını kavratmak için güzel bir örnek teşkil etmektedir.

y=(ax+b)MODm fonksiyonunu göz önüne alalım.

Burada x düz metindeki harflerin sayısal karşılığı, m düz metinde kullanılan alfabenin karakter sayısı, a ve b gizli sayılarımız ve y de fonksiyonumuzun işlem sonucunda aldığı değerdir. Y nin x e geri dönüşümü ise x=ters(a)(y-b)MODm formülü yardımıyla hesaplanır. Ters(a), a ile çarpımının modülo m e göre sonucu 1 olan sayıdır. Bunun kısaca şöyle ifade edebiliriz.

(a*ters(a))MODm=1

Aşağıdaki örnekte gördüğümüz gibi y=11x+4MOD26 şifreleme fonksiyonunu kullandığımız da E ve S harfleri W ve U şeklinde şifreli hallerini alır. Hesap modülo 26 aritmetiğini içerdiğinden, eğer çarpan 26 ile en büyük ortak bölene sahip ise bazı karakterler beklenen sonucu vermeyebilir. Bu yüzden m ve a nın en büyük ortak böleni 1 olmalıdır. Yani aralarında asal olacak şekilde seçmeliyiz.

Örnek:

Farzedelim ki mesaj y=(11x+4)MOD26 fonksiyonu ile şifrelensin. Şifreli metnimiz MONEY. Öncelikle düz metnimizdeki her bir karakterin aşağıda verilen listedeki olduğu gibi 0 ile 25 arasındaki sayısal değerlerini bulmalıyız.


A-0
B-1
C-2
D-3
E-4
.
.
.
Y-24
Z-25

Böylece MONEY metnimizin uygun sayısal değerleri 12, 14, 13, 4 ve 24 tür. Buradaki her bir değer için daha önce belirlediğimizy=(11x+4)MOD26 fonksiyonunu kullanırsak.

M: y =(11*12+4)MOD26=6 ---- G

O: y =(11*14+4)MOD26= 2 ----- C

N: y=(11*13+4)MOD26=17 ----- R

E: y=(11*4+4)MOD26=22 ----- W

Y: y=(11*24+4)MOD26=8 ----- I

Böylece bulduğumuz şifreli metnimiz “GCRWI” olur.

Şifre çözümü:

Şifre çözümü (deşifreleme) için y fonksiyonunu aşağıdaki gibi değiştirelim.

x=(ters(a)(y-b)MODm deşifreleme fonksiyonumuz

a=11 ve b=4 demiştik.

Böylelikle x=ters(11)(y-4)MOD26 yı elde edebiliriz.

Ters(11)MOD26=19 ve bu şekilde deşifreleme fonksiyonumuz x=19(y-4)MOD26 olur.

Şimde şifreli metnimiz olan “GCRWI” deki her bir karakterin karşılığı olan sayısal değeri tablomuzdan bulalım. 6,2,17,22,8 dir.

G: x=19*(6-4)MOD26=12 ------M

C: x=19*(2-4)MOD26=14 ------ O

R: x=19*(17-4)MOD26= 13 ---- N

W: x=19*(22-4)MOD26=4 ----- E

I: x=19*(8-4)MOD26=24 ------ Y

Bu sayede düz metnimize ulaşırız “MONEY”.

Analiz:

Düz metindeki her bir karakterin y=(ax+b)MODm fonksiyonu ile şifrelendiği bildiğimizden Afin yöntemini iki lineer denklemin çözümüyle kırabiliriz.

Örneğin

“IF” ----- “PQ”

I---P: 8a+b=15MOD26

F---Q: 5a+b=16MOD26

Bu işlemin sonucunda a=17 b=9 çıkar. Böylelikle verilen metin kolayca kırılabilir.



Hill Cipher

Tarihi ve Tanımı:

Hill şifreleme yöntemi bir blok şifreleme örneğidir. Blok şifrelemeyi de şöyle ifade edebiliriz. Düz metni bitişik ve aynı uzunluktaki bloklara bölme, her bloğu şifreleyerek şifreli metin bloklarına dönüştürme ve bu şifreli blokları şifreli metin çıktısı olarak gruplamaktır. Hill şifreleme yöntemi Lester Hill tarafından bulunmuş ve 1929 yılında yayınlanmıştır.

Örnek:

Bir mesajı Hill yöntemi ile belli bir düzen içinde şifrelememiz gerekir. Öncelikle mesajın göndericisi ve alıcısı bir anahtar nxn lik A matrisi üzerinde anlaşmış olmalılardır. Bu A matrisini seçerken dikkat etmemiz gereken bir özellik ise MOD26 ya göre terslenebilen bir matris olmasıdır. Düz metin n uzunluğundaki bloklar şeklinde şifrelenir. Aşağıdaki örnekte A 2x2 lik bir matris ve mesajımız 2 karakterli bloklar halinde şifrelenecektir.

Anahtar Matrisimiz: A=

Mesajımız: MISSISIPI

Öncelikle bloklara bölelim. Bu sayede mesajımız MI-SS-IS-SI-PP-I halini alır.

İlk bloğumuz MI dir. Bu seferde bloğumuzdaki karakterlerin harf tablosundaki yerine göre aldığı değerlerden oluşan matrisimizi oluşturalım. M->12, I->8 olduğundan

dir

Gönderenin hesaplaması gereken ise

A = (mod26) dir

Bu işlem yapıldığında ilk iki karakterin şifreli karşılığı 2 ile 8 olacaktır. Bu değerlerin alfabetik karşılığınada bakıldığında CI çıktısını elde etmiş oluruz.

Bu işlemi düz metnimizdeki her bloğa uygularsak

Düz Metin: MI-SS-IS-SI-PP-IK

Şifreli Metin: CI-KK-GE-UW-ER-OY

Düz metnimizde son bloğa K eklememizin sebebi. Son bloğun uzunluğunu da 2 yapmaktır.

Hill yönteminin en önemli özelliğini de burada görmüş oluruz. S veya P nin yan yana kullanımında S->K olmuş sonradan ise S->E ve S->U olmuştur. Dolayısıyla Hill yöntemi ile düz metindeki karakterleri maskeleyebiliriz.

Şifre Çözümü (Deşifrelenmesi) :

Mesajın deşifrelenmesi için öncelikle anahtar matrisimiz olan A matrisinin tersi hesaplanmalıdır.

(mod 26)

Anahtar matrisin tersi ile şifreli karakter çiftlerinin çarpımı bize düz metni verir.

Anahtar Matrisimiz: A=

Şifreli Metnimiz: CIKKGEUWEROY

Deşifrele için ilk bloğumuzu seçelim CI

A-1 = (mod26) dir

Mesaj deşifrelendiğinde ilk iki karakterin sayısal değeri olan 12 ve 8 sayıları bulunur. Bunlarda CI -> MI demektir. Mesajı alan kişi elinde bulunan şifreli metindeki her bir karakter bloğu için bu işlemi uygular.


Not:Bu makale özellikle lisede olup dönem ödevleri için bana sürekli e-posta atan kardeşlerim içindir. En basit kriptoloji mantığını anlamanız için bu iki örnek yeterlidir.


Kaynaklar:

1) Handbook of Applied Cryptography

2) Applied Cryptography, Second Edition

3) http://en.wikipedia.org/wiki/Hill_cipher

4)http://www.cs.uri.edu/cryptography/




Günümüz teknolojisinin baş döndürücü hızını göz önünde tutarsak, teknolojinin gelişmesiyle ortaya çıkan güvenlik açığının da bir o kadar önem taşıdığını bilmeliyiz. Kriptoloji (şifre bilimi); kişiler arası veya özel devlet kurumları arasındaki mesajlaşmalardan tutunda, sistemlerin oluşumunda ve işleyişinde ki güvenlik boşluklarına kadar her türlü dalla alakalıdır. Öncelikle kriptolojinin temelleri üstünde duracağız. Bunun için bu bilim dalının tarihinden bahsedelim.

Kriptolojinin Tarihi

Kriptografinin türkçe adı şifre yazımıdır. Kriptografi yunanca gizli anlamına gelen “kript” ve yazı anlamına gelen “graf” dan türetilmiştir. Kriptoloji ise şifre bilimidir. Kriptografi bilgi güvenliği ile uğraşır, Kriptoanaliz güvenli bilginin kırılması başak bir değişle kriptografinin tam karşıtıdır. Kriptoanalistler genelde şifre çözmeye dayalı çalışırlar. Kriptoloji bir matematik bilimidir ve genelde sayılar teorisi üstüne kuruludur. Şifreleme yöntemleri Sezar ın genarellerine gönderdiği mesajlardan başlamaktadır. Sezar generallerine öyle metinler yollamıştır ki, metinlerdeki A harfi yerine D, B harfi yerine E ..... şeklinde devam eden bir sistemle mesajlarını göndermiştir. Şifre bilimi o günlerde temellerini almıştır. Sezar şifresinden de anlayacağımız gibi şifre bilimi belli bir sistematiklik içermektedir. Şimdi kullanacağımız terimlerin anlamını görelim.

Kullanım alanları:

İletişim kurmak isteyen iki kişinin bir birlerine e-posta aracılığı ile ileti göndermesini göz önünde tutalım. Bu iletiler bir çok bilgisayardan geçmektedir. A kullanıcısından B kullanıcısına gittiğinde daha önce açılıp okunmadığını veya açılıp üstünde değişiklik yapmadığını bilemeyiz. Bu yüzden devreye kriptolama girmektedir. Kripto teknikleri genelde bu yazıyı daha önce hazırlanmış bir algoritma ile şifreli bir metin haline getirir. Örnek olarak buna Sezar şifresi diyebiliriz.

Bir başka iletişim tekniğini göz önüne alırsak, örneğin telsiz haberleşmelerinde de buna benzer sistemler kullanılmaktadır. Ses önce şifrelenir karşıya gönderilir orda şifre açılır ve ses araya başka bir kullanıcı girmeden güvenli bir şekilde teslim edilmiş olur.

Dikkat edeceğimiz gibi kriptoloji iletişim materyallerinin kullanıldığı her alanda gizliliği sağlamak için kullanılmaktadır (ses, görüntü, metin v.s v.s).

Nasıl Çalışır?

Daha önce Sezar şifresini örnek vermiştik. Kriptoloji algoritmaları tamamen matematiksel fonksiyonlardan oluşur. Örneğin Sezar şifresinde A harfi yerine D, B harfi yerine E kullanılmıştır... ve bu şekilde devam etmektedir. Buda demek oluyor ki algoritma gördüğü her harf yerine alfabede ona karşılık gelen harfin üç ilersindeki harfi getirerek kriptolu metin oluşturulmuş oluyor.

İlk kriptolu metinden bahsettik, bunu temel alarak devam edersek. İlk zamanlarda kriptolu metinlerin güvenliği için şifreleme ve deşifreleme algoritmaları saklı tutulurdu ve gizli bir anahtar bulunurdu. Fakat günümüzde kriptolojinin güvenliğinden bahsedecek olursak. Algoritma bilinse dahi yazı metninin çözülmemesi gerekir. Burada da devreye açık anahtarlı kripto algoritmaları girmektedir. Bunlar bir Puplic Key (genel anahtar) –ki bu herkesin görebileceği bir anahtar. (Secret Key) buda sadece yazının deşifrelenmiş halini elde etmeye yarayacak olan anahtardır.


GiZLi YÖNTEM ANLASMALARI

Farzedelim ki A ve B şahısları arasında bir mektuplaşma olacaktır. Bu iki şahıs aralarında bir gizli yöntem anlaşması imzalarlar. Mesela, A şahsından B şahsına “Mutasyon” gibi bir kelime gidecektir. Bunlar aralarında bu kelimenin her harfinden sonra rastgele bir harfin gelmesiyle gizli bir yöntem oluşturmuş olurlar. ( “mtuftjausfyroyn” )

Şimdi bu söylediklerimizi matematiksel notasyon haline dönüştürelim.

A şahsının göndermiş olduğu düz yazıyı M ile gösterelim. Şifreleme algoritmasını da E ile gösterelim ( Bu bir matematiksel fonksiyondur). Metnimizin şifreli halini de C notasyonuyla gösterirsek,

E(M)=C dir.

Deşifreleme algoritmasını da D ile gösterelim.

D(C)=M

Halini alır. Bu ikisinden elde edeceğimiz ise,

D(E(M))=M dir.

Yani, yukarıda vermiş olduğumuz örnek üstünde düşünürsek “mutasyon=M” , “mtuftjausfyroyn=C” ve bu düz yazıyı şifreli hale getiren matematiksel fonksiyonumuzu da E (Matematiksel fonksiyon, girilen her harfin arkasına bir harf eklemektedir. Algoritma bu mantıkla çalışmaktadır). Deşifre edecek algoritmaya da D diyebiliriz.

A şahsı farklı kişilerle yazışmak isterse bu sefer her şahıs için ayrı bir gizli yöntem anlaşması imzalamak zorunda kalacaktır. Ancak bu şekilde yazışma metinlerini güvence altına alabilecektir.

Simetrik Şifreleme ve İmparator Sezar

Örnek verebileceğimiz en basit simetrik şifrelerden biri Sezar Şifresidir. Neredeyse tüm kriptoloji kitaplarının giriş bölümlerinde Sezar Şifresi örneğine rastlarsınız.

Bunu bir örnekle hemen anlatayım:

Mesela göndereceğimiz metne yine M diyelim, bunun şifrelenmeş halinede C diyelim. (ingilizce karakterler göz önüne alınmıştır)

M: “Mutasyonda bir makale”

C: “Nvubtzpoeb cjs nblbmf”

Görüldüğü gibi alfabedeki tüm harfleri sayılara eşit tutarsak (A=1, B=2, C=3...) sonra gönderilen yazıda ve A =>B, B=>C, C=>D, ..., Y=>Z, Z=>A şeklindedir.

Algoritmamızın mantığı şudur: gelen her harfin sayısını bul ve bir ilersindeki sayıyı yerine yaz. (sezar şifresi için).

Sezar Şifresi tek alfabeli yer değiştirme veya permütasyon şifreleri arasında değerlendirir. Çözülmesine gelince de. Türk alfabesini göz önünde tutarsak 28 karakterden oluşacağı için, en fazla 27 ilersindeki harfi alabilir deriz. Buda 27 deneme yapmamıza mal olacaktır. Şifrenin bulunma denemesini ortalama olarak 27/2~=15 de diyebiliriz. Birde yazılan harfin yerine herhangi bir harf konulduğunu düşünürsek bu sefer yaklaşık olarak 28! (yirmi sekiz faktöriyel) kez denemek zorunda kalırız.

Açık Yöntemli Gizli Anahtar Anlaşmalı Şifreler

Bundan önce görmüş olduğumuz algoritma yöntemleri, günümüz teknolojisinde bilgisayarlarla çok kısa bir sürede çözülebilmektedir. Modern kriptoloji bu sorunu anahtarlarla çözmeye çalışır. Anahtarlar sayılardan ve değerlerden oluşabilirler. Şimdi bu bahsettiklerimizi matematiksel notasyon haline dökelim.

Düzyazı metnimiz : M

Şifrelenmiş Metnimiz :C

Anahtarımız : K

Şifreleme algoritmamız : E

Deşifreleme algoritmamız: D olsun.

EK(M) = C - Anahtarla şifreleme

DK(C) = M - Anahtarla deşifreleme

Bu iki denklemden de aşşağıdaki denklemimizi elde edebiliriz.

DK(EK(M)) = M

Bazı algoritmalarda şifreleme ve deşifreleme için ayrı anahtar içerebilirler. Şifreleme için K1, deşifreleme için K2 yi kullanırsak

EK1(M) = C

DK2(C) = M

DK2(EK1 (M)) = M

Tekrar elde etmiş olacağız.

Kriptolojiye Giriş

Modern Kriptoloji temelde üç görevi yerine getirmek için kullanılır. Verinin okunmasını ve değiştrilmesini engelleme ve verinin belirtilen kişi tarafından gönderildiğinin garanti altına alınması. Bir hacker yada kötü niyetli herhangi bir kişi internet gibi güvenli olmayan ortamlarda iki merkez arasındaki haberleşmeleri dinleyebilir ve bu haberleşmelerde gönderilen veriler üzerinde işlemler yapabilir. Bu işlemler genelde üç şekilde olabilir. Verinin gitmesini engelleme (intercept), veriyi sadece okuma (read), veriyi değiştirme (modify). Bu tip işlemlerin yapılmasını engellemek amacıyla şifreleme bir bilim olarak çalışmaktadır ve temelde üç görev üstlenmiştir.

1 - Veri Güvenliği (Confidentiality)

İki merkez arasında gönderilen verinin üçüncü kişiler tarafından okunmasını engelleme. (A/Symmetric Crypto) Bu basit şekilde normal yoldan gönderilen bir mektubun, alıcı kişiye giderken yolda herhangi bir kişi tarafından okunmasını (mesala postacı) engeleme amacı güder. Yazdığınız mektup düzmetin (plaintext) şeklindedir ve herhangi bir kişi tarafından zarfın açılması halinde, göndermiş olduğunuz mektup okunabilir. Şifreleme bu düzmetni şifreleyerek yazma işlemini gerçekleştirmenizi sağlar. Bu sayede mektubunuz yolda giderken herhangi bir kişi tarafından açılması halinde yazı düzmetin olmadığı için okunması engellenecektir. (Bu şifreleme için Symmetic yada Asymmetric yöntemler kullanılır.)

2 - Veri Bütünlüğü (Data integrity)

İki merkez arasında gönderilen verinin üçüncü kişiler tarafından değiştirilmesini engelleme. (Hashing)

Normal yoldan göndermiş olduğunuz mektup yine üçüncü kişiler tarafından yolda sizin yazdığınız şeklin dışında başka bir şekle dönüştürülerek yolculuğuna devam ettirilebilir.

Yazdığınız mektup düzmetin (plaintext) şeklindedir ve içerik okunabilmektedir. Okunabilen bu düzmetin kötü niyetli kişiler tarafından yolda değiştrilerek sizin gönderdiğiniz alıcıya, aslında söylemediğiniz şeyleri siz söylemiş gibi göstermek amacıyla yollanabilir. Şifreleme gönderilen bu düz metin üzerinde işlem yaparak sayısal bir sonuç oluşturur. Bu sonuç gönderilen yazının üzerinde en ufak bir değişiklik yapılırsa algoritma aynı olduğundan değişecektir.

Göderici ve alıcı tarafından aynı yazı üzerinde aynı algoritmayla oluşturulan sayısal sonuçlar birbirinin aynı olmak zorundadır. Eğer sayısal sonuçlar tutmuyorsa gönderilen metin yolda giderken değiştirilmiştir şeklinde düşünülebilir. Çünkü aynı metin üzerinde yapılcak bir değişiklik aynı sayısal sonucu çıkarmaycaktır. Kullanılan algoritma sayesinde farklı metinler üzerinde aynı sayısal sonucun çıkartılması neredeyse imkansızdır. (Bu sayısal sonuç oluşturma işlemi için Hasing yöntemi kullanılır)

3- Kimlik denetimi (Authentication)

İki merkez arasında gönderilen verinin, alıcı tarafında, belirtilen gönderici tarafından gönderildiğinden emin olunması . (Digital Signature)

Size ulaşan herhangi bir mektubun üzerinde bulanan gönderici ismi herzaman doğru olmayabilir. Kötü niyetli kişiler tarafından gönderici isimleri farklı yazılarak kişilere mektup yollanabilir (spam mailler gibi). Şifremele bilim olarak bu mektuplar üzerine özel imzalar (signature) ekleyerek, mektubu gönderen kişinin gerçekten mektubu gönderen kişi olduğundan emin olmanızı sağlayabilir.

Gönderilen zaman dilimine göre özel algoritmalar la oluşturulan bu imzalar, alıcı kişi tarafından belirli yöntemlerle doğrulanabilir. (Bu imza oluşturma ve doğrulama işlemi Digital Signature olarak adlandırılır.)

Bu bilgi alışverişi için geliştirilen şifreleme yöntemlerinden bilinen ilki Roma imparatoru Sezar'a aittir. Ve Sezar şifresi olarak bilinir.

Sezar şifresi çok basit bir yöntemle çalışır. Alfabe bütün harfleri ile direk yazılır.
ABCDEFG...........VWXYZ.

Sonra alfabe istenilen sayıda (en fazla alfabenin harf sayısından bir eksik kez. Neden ?) sağa kaydırılarak yazılır. Mesala 4 kez.
WXYZ..................ABCD.

Ve daha sonra mesaj bu yeni harflerle baştan yazılır.
ABCDEFG...........VWXYZ.
WXYZ..................ABCD.

Mesala ABD (Amerika Birleşik Devletleri) yazmak istiyorsak WXZ yazarız.. bu saydede ABD harfleri WYZ ye dönüşmüş olur. Düzmetin (plaintext) bu şekilde şifrelenmiş metin (encrypted text) olarak gönderilir. Ve alıcı kişiye alfabenin kaç kez sağa kaydırıldığı gizli bir şekilde söylenir. Ve alıcı kişi alfabeyi tersine kaydırarak orjinal metni (decrypted text - çözülmüş metin) bulur.

WXYZ..................ABCD. (4 kez sağa kaydırılmış alfabe)
ABCDEFG...........VWXYZ. (normal alfabe)
WXZ (şifreli metin)
ABD (çözülmüş metin)


Ve verinin yolda giderken üçüncü kişiler tarafından okunması engellenmiş olur.

Uygulanan bu yöntemin, şifresinin çözülmesi için denenmesi gereken çok az sayıda ihtimal vardır. (alfabenin harf sayısından bir eksik kez. Ortalama 28 deneme. Neden ?) bu ihtimallerin tamamı denenirse bu şifre çözülür. Alfabe teker teker sola kaydırlır ve her seferde yazı baştan çözülür anlamlı bir yazıya dönüştüğü an şifre çözülmüş olur.


SiMETRiK SiFRELEME

Kimi zaman bu şifreleme metodu gizli anahtar (secret-key) şifreleme olarak da adlandırılır. (belirtilen Sezar şifrelemesi modern olmamasına rağmen simetrik şifreleme olarak kabul edilir). Metni şifreleme işlemi için bir gizli anahtar seçilir ve bu gizli anahtar ile metin şifrelenir (alfabeyi 4 harf sağa kaydırma yukarıdaki örnekte gizli anahtar olarak kabul edililebilir.) Şifrelenmiş metin alıcı kişiye yollanır ve gizli bir şekilde gizli anahtar da alıcı kişiye bildirilir. Şifrelenmiş metni alan kişi bu metni, belirtilen gizli anahtar ile çözüp düzmetne çevirir ve metni okur. Bu şifreleme metodunda ki en büyük dezavantaj gizli anahtarın alıcıya bildirilmesidir. Bu bildirme işlemi üçüncü kişiler tarafından bilinmemelidir. Çünkü gizli anahtarın üçüncü bir kişi tarafından bilinmesi şifrelenmiş metni kolayca çözmesini sağlar.

Bilgisayar üzerinde basit bir simetrik şifreleme yapmanın yolu XOR (özel veya) operatörünü kullanmaktır. XOR operatorü iki bit i karşılaştırıp sadece ve sadece farklı ise 1 değerini verir. Yani diyelim ki A harfinin ascii kodu olan 65 (klavyeden alt tuşuna basılı tutarken numerik klavyeden 65 yazın) sayısını 87 ile XOR işlemine tabi tutmak istiyoruz. Önce 65 sayısının binary şeklinde yazarız daha sonra 87 sayısını yazarız ve bu iki sayının farklı olan bitlerini 1 aynı olan bitlerini 0 olarak işaretleriz.

(128 64 32 16 8 4 2 1)
0 1 0 0 0 0 0 1 = 65 => 'A'
0 1 0 1 0 1 1 1 = 87
----------------------- ^
0 0 0 1 0 1 1 0 = 20 => '¶'elde edilmiş olur


Tersine çevirmek içinde 20 sayını 87 ile XOR işlemine tabi tutarız
0 0 0 1 0 1 1 0 = 20
0 1 0 1 0 1 1 1 = 87
--------------------- ^
0 1 0 0 0 0 0 1 = 65 => 'A' ya geri dönmüş olur.

Xor ile yapılan veri şifreleme örnekleri.Visual C#.Net :

Örnek 1


/*
* Örnek 1
* XorCrypto.cs
* 21.04.2004
*/
using System;

namespace XorCrypto
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
char ch1 = 'A' ;
char ch2 = 'l' ;
char ch3 = 'i' ;

int key = 87 ;

Console.WriteLine("Orjinal mesaj : " + ch1 + ch2 + ch3) ;

//mesajı şifrele
ch1 = (char) (ch1 ^ key) ;
ch2 = (char) (ch2 ^ key) ;
ch3 = (char) (ch3 ^ key) ;

Console.WriteLine("Şifrelenmiş mesaj : " + ch1 + ch2 + ch3) ;

//mesajı çöz
ch1 = (char) (ch1 ^ key) ;
ch2 = (char) (ch2 ^ key) ;
ch3 = (char) (ch3 ^ key) ;

Console.WriteLine("Çözülmüş mesaj : " + ch1 + ch2 + ch3) ; }



Örnek 2

/*
* Örnek 2
* XorCrypto.cs
* 21.04.2004
*/
using System;

namespace XorCrypto
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
Console.WriteLine("Orjinal mesajı girin :") ;
string plainText = Console.ReadLine() ;
Console.WriteLine("Gizli Anahtarı girin (Örnek 87) :") ;
int secretKey = Convert.ToInt32(Console.ReadLine()) ;

char[] chArray = new char[plainText.Length] ;
chArray = plainText.ToCharArray() ;
EncryptMessage(ref chArray, secretKey) ;
Console.WriteLine() ;
DecryptMessage(ref chArray, secretKey) ;
Console.WriteLine() ;
}
private static void EncryptMessage(ref char[] chArray, int secretKey)
{
Console.Write("Şifrelenmiş metin (Encrypted Text) :") ;
for(int i = 0; i < i =" 0;">

ASiMETRiK şiFRELEME


Asimetrik şifreleme (public key) yöntemi simetrik şifreleme yönteminin en büyük dezavantjı olan gizli anahtarı (secret key) karşı tarafa, kimsenin öğrenmeden gönderilmesindeki zorluğu ortandan kaldırma adına geliştirilmiştir.

Asimetrik şifrelemede iki adet anahtar oluşturulur. Bu anahtarlar genel anahtar

(public key) ve özel anahtar (private key) olarak adlandırılır.

Public key ile veri şifrelenir

private key ilede sadece şifrelenmiş veri deşiflenip

orjinal hale

getirilir.Public key olarak belirtilen anahtar

umuma açıktır ve herkes tarafından bilinmesinde herhangi

bir sakınca yoktur.

Çünkü bu anahtarla sadece veri şifrelenir

ve bu anahtarla şifrelenmiş veriler ancak ve ancak

public key e karşılık

oluşturulmuş private key (özel anahtarla ) çözülebilir.

Bu itibarla private key in kesinlikle gizli olarak

kalması gerekir.

Belirtilen yöntem şu mantıkla çalışır. İki kişi

arasında bir veri

alışverişi yapıldığını varsayalım (bu iki kişi

hemen bütün şifreleme kitaplarında

Alice ve Bob diye geçer. Nedendir bilinmez?)

Alice, Bob’a şifreli bir mesaj göndermek istemektedir.

Bob kendi bilgisayarı üzerinde bir adet public key

(şifreleme için) ve bir adet de

private key

(şifre çözmek için) oluşturur. Ve Bob oluşturmuş

olduğu public key i


Alice gönderir. Yolda public key in başkaları

tarafından görülmesinde

herhangi bir sakınca yoktur.(secret key yada simetrik

algoritmalardan farkı buradadır.) Çünkü public key sadece

şifreleme yapar. Alice Bob’a ait public key ile mesajını

şifreler ve

şifreli bir şekilde Bob’a yollar.

Bob’un elinde de kendisine ait olan public key e

karşılık gelen private key vardır

(ve bu private key sadece oluşturulmuş olan

public key ile şifrelenmiş mesajları çözer ve

bu sebebten ötürü hep gizli kalmalıdır.)

Bob şifrelenmiş mesajı private key i ile

çözerek okur. Yolda metin şifrelenmiş olarak

gittiğinden

ve private key (özel anahtar) her zaman Bob un

elinde gizli bir şekilde

tutulduğundan mesajın güvenliği sağlanmıştır.

Alice : Plaint text + Bobs publickey = > Encrypted Text
Oluşturulmuş bu şifreli mesajı Bob’a yolla.

Bob : Encrypted Text + Bobs privatekey => Decrypted Text

(Yani Orjinal mesaj)

Biraz da matematik

Bu public/private key çiftini üretmek için özel bir

algoritma kullanılır.

Bu algoritma ilk kez Amerikalı üç bilim adamı tarafından

1977 yılında

geliştirimiştir ve ismini bu üç kişinin baş harflerinden

almıştır RSA. Rivest,

Shamir, Adleman. (Her ne kadar İngilizler ikici dünya

savaşı yıllarında bu tip te

bir yöntem keşfettiklerini ve bu yöntemi güvenlik

amacıyla kimseye söylemedikleri

belirtseler bile RSA yöntem olarak ilk kabul edilmiştir.)

RSA mantık olarak şöyle çalışır.
Tamamiyle asal sayılar üzerinde hareket eder..
Önce bir adet asal sayı seçilir ve buna p sayısı denir.

Sonra bir tane daha asal sayı seçilir ve bunada q denir.

p = 3
q = 11 (3 ve 11 asal sayıdır dimi?)

Daha sonra bir adet bu iki sayının çarpımından oluşan

N sayısı oluşturulur.
N = (p * q)
N = (3 * 11)
N = 33

Bu N sayısı Modulus olarak kabul edilir. Ve hem public hemde

private key in bir parçasını oluşturur.

Daha sonra bir a sayısı oluşturulur ve bu a sayısı p değerinin

bir eksiği ve q değerinin bir eksiniğinin çarpımından oluşur.

a = (p -1 ) * (q -1)
a = (3 -1 ) * (11 – 1)
a = 2 * 10
a = 20
sayısı elde edilir.


Daha sonra bir e sayısı oluşturulur ve bu e sayısı a

ile herhangi bir ortak

böleni olmayan bir sayı olmalıdır.
e = 7 (denebilir)
7 sayısının 20 ile ortak böleni yoktur.

Bu oluşturulan e ve N sayılar public key dir

(e Exponent (yani üs) N modulus

(yani mod alınacak sayı)

Daha sonra private key i oluşturmak için bir adet

d sayısı üretilir ve bu d sayısı

e sayısı ile

çarpılıp a sayısı ile mod landığında kalanı 1 verecek

şekilde bir sayı olmalıdır.

d = ? * e mod a => 1 sonucunda olmadır

bunun matematik teki yazımı şöyledir. d * e = 1 mod a, yani

d * 7 = 1 mod 20
d = 3 sonucu bulunur
çünkü 3 * 7 = 21 mod 20 de 1 sonucunu verir.

Oluşturulan bu d sayısı ile N sayısı da private key dir

(d Exponent, N modulus)

Yukarıdaki örnek devam ettirilirse Bob’un kendi

adına public ve private

key lerini oluşturduğunu fazedelim
Bob un key çifti :
Public key : e = 7 ve N = 33
Private key : d = 3 ve N = 33

Bob oluşturduğu bu keylerden private key i

çok iyi bi şekilde saklar.

Ve public key i Alice’ e yollar. Alice bu bu public key ile

mesajı şu şekilde şifreler. Diyelimki ‘A’

karakterini şifreleyip göndermek istiyor.

‘A’ harfine karşılık gelen herhangibi sayı

oluşturur (burada ascii kodları

kullanılabilir)

A harfinin sayısal değerini 16 olarak seçelim.

16 sayısını public key de

bulunan e sayısı ile üs alır ve N sayısı ile de

çıkan sonucun mod unu alır. Yani
X = 16 ^ 7 mod 33

X = 268435456 mod 33
X = 25

16 sayısını (ayni A harfini) 25 sayısına çevirerek Bob’a yollar.

Bob’da almış oluduğu bu 25 sayısını d ile üs alıp, N ile modlar

X = 25 ^ 3 mod 33
X = 15625 mod 33
X = 16 ya geri çevirir. (yani A)

Görüldüğü gibi Alice 16 sayısını şifreleyip 25 e çevirmişti.

Bob’da 25 sayısını çözüp 16 sayısına geri çevirdi.

(Burade belirtilen örnekte şifrelemek için 33 sayısına eşit

yada büyük bir sayı kullanılmamalıdır. Neden?)

sayısından bulunabilir. (nasıl?)

Burada belirttiğimiz örnekte sayıları hesaplayabilelim

diye çok küçük asal sayılar

seçtik 3 ve 11 gibi.

Ancak bu şifreleme metodunda kullanılan sayılar

oldukça büyüktür.
128 bitlik şifrelemede ortalama 45 haneli asal

sayılar kullanılmaktadır.

N sayısını oluşturmak için 45 haneli iki sayının

çarpımı bulunmalıdır.
128bit lik bir şifrenin çözülmesi için ihtimal

sayısı 2 üzeri 128 dir.

Ve bu kadar ihtimal normal bir bilgisayar ile

ortalama 2 trilyon yılda çözülür.

(Saniyete 1 trilyon işlem yapabilen 1 milyon

dolarlık süper bilgisayarlarla

bu süre 1190 yıl dır)
Japonyada 64bit bir şifre yaklaşık 100.000

(yüzbin) bilgisayarın paralel

bağlanarak ortak çalışması sonucunda yaklaşık

3,5 yılda çözülmüştür.
Bügün internet üzerinde SSL ile kurulu sayfalarda

128bit lik şifreleme kullanılır.

(sizin kredi kartı bilgilerinizin korunması için) ve

her zaman şifrelemede verinin

geçerlilik süresi çözülme süresinden az ise

güvendesiniz demektir.
Yani SSL kullanılan bir sayfada şifrelenerek yollanan

kredi kartı bilgileriniz

1190 yıldan fazla süre yürürlükte

kalmayacağı için 1190 yıl sonra çözülmüş olmasının

bir mahzuru yoktur.

Özel şifreleme programları ile 4096 bitlik (www.pgp.com)

şifreleme yapılabilir bu şekilde gerçekleştirilmiş

bir şifrenin çözülme

ihtimali 2 üzeri 4096 yani yaklaşık olarak 10

üzeri 500 dür.

Bu sayının büyüklüğünü anlamak için şöyle bir

örnek verilebilir. Dünyada bilinen

atom sayısı 10 üzeri 70 dir.

Asimetrik şifreleme yönteminin bütün güvenliği

şifre çözümünde denenmesi

gereken tüm ihtimallerin sayısının çok yüksek

miktarda oluşundan kaynaklanır.

(Ama sonuçta yine bir ihtimal vardır.)
Asimetrik key yöntemi ile ilgili örnekler Kriptoloji

ve .Net konusunda verilecektir



KRiPTOLOJi VE .NET


.netFramework modern şifreleme biliminde genel kabul
görmüş tüm şifreleme yöntemleri için hazır abstract ve bu abstract
class ları implement eden somut (concrete) classlar içerir. Asbtract
class ların inheritance yolu ile alınmasından yeni ve değişik classlar
da hazırlanabilir.

Bu classların tamamı System.Security.Cryptography namespace i altındadır.
.net içerisinde temelde bütün bu şifreleme işlemlerini gerçekleştirmek için iki tane temel sınıf oluşturulmuştur.

System.Security.Cryptography.SymmetricAlgorithm ve
System.Security.Cryptography.AsymmetricAlgorithm

Simetrik algoritmalar ve kullanım yerleri

Simetrik algoritmalar (yada secret-key algoritmaları) genelde block ciphers (blok şifreleyiciler) olarak adlandırılırlar. Kullanılan simetrik algoritmalar büyük miktardaki verilerin (.txt, .jpg, mp3, mpeg, avi, iso vb.) şifrelenmesinde kullanılır. Bu kullanım için hazırlanmış classlar vardır.

  • DESCryptoServiceProvider
  • RC2CryptoServiceProvider
  • RijndaelManaged
  • TripleDESCryptoServiceProvider

Belirtilen 4 adet class simetrik key algoritmasıyla çalışır. Bir tane gizli anahtar oluşturulur ve bu anahtara ek olarak da bir IV (Initialization Vector) değeri oluşturulur. Ve bu iki değere göre veri bloklar halinde şifrelenir. Örneğin 100 byte lık blok lar halinde. Gizli anahtarın dışında IV değerine ihtiyaç şu sebebten ötürü duyulmaktadır. Şifrelenmesi istenen yazı bloğu içerisinde aynı cümleler yada kelimeler bulunabilir. Eğer direk olarak veri şifrelenirse aynı kelime veya cümleler aynı şekilde şifrelenecektir ve şifrelenmiş metin içerisinde aynı görünecektir. Bu aynı görünmeyi (ve buna ait şifre çözmeyi zorlaştırmak için) IV değeri kullanılır. Bu değer ikinci aynı veriyi, birinci veriyi kullanarak şifrelemek ve sonuçta aynı değerler yada kelimeler için farklı şifrelenmiş biçimler oluşturmak amacı ile kullanılır. Böylece şifre çözme zorlaştırılmış olur.

Burada belirtilen örneklerden bazıları .netFramework SDK v1.1 den alınmış ve üzerlerinde küçük değişiklikler yapılmıştır. Diğer örneklerde baştan yazılmıştır. Örnekler dikkatle incelendiğinde her şifreleme işleminin sonucunun farklı çıktığı gözlenir. Her değişik çalıştırmada oluşturulan secret-key ve IV değerleri farklıdır. Her class a ait constructor çalıştırıldığında .netframework bu class lara ait secret-key ve IV değerlerini yeniden oluşturur. Oluşturulmuş bir secret-key ve IV değerini daha sonra şifreli metin çözme için saklayabilir ve bu değerleri Key ve IV property lerine aktarıp şifrelenmiş dosyaları eski haline getirebilirsiniz. Bu tip örnekleri siz oluşturun.

  • DESCryptoServiceProvider (DES – Data Encryption Standart)
  • 8 byte secret key ve IV değeri kullanır. Örnek.
    /*
    * DES
    * DesCrypto.cs
    * 21.04.2004
    *
    */

    using System;

    //Added namespaces
    using System.IO ;
    using System.Security.Cryptography ;

    namespace DesCrypt
    {
    class DesCrypto
    {
    public static DES des ;

    [STAThread]
    static void Main(string[] args)
    {
    des = new DESCryptoServiceProvider();
    des.GenerateKey() ;
    des.GenerateIV() ;
    byte[] desKey = des.Key ;
    byte[] desIV = des.IV ;

    Console.WriteLine("Des.Key : ") ;
    for(int i = 0; i < i =" 0;" fin =" new" fout =" new" bin =" new" rdlen =" 0;" totlen =" fin.Length;" encstream =" new" len =" fin.Read(bin," rdlen =" rdlen" fin =" new" fout =" new" bin =" new" rdlen =" 0;" totlen =" fin.Length;" encstream =" new" len =" fin.Read(bin," rdlen =" rdlen">

    About irFaN DeRiN GüNDeM

    Hi there! I am Hung Duy and I am a true enthusiast in the areas of SEO and web design. In my personal life I spend time on photography, mountain climbing, snorkeling and dirt bike riding.
    «
    Next
    Sonraki Kayıt
    »
    Previous
    Önceki Kayıt

    Hiç yorum yok:

    KÜRT ACILIMININ TÜM DESiFRESi

    iYi iZLE AKP TÜRKiYEYi BÖYLE SATIYOR _______________________________________________________________________ OLASI BiR iSTANBUL DEPREMi OLURSA AMERIKA TÜRKIYEYI ISGAL EDER