27 Mayıs 2009 Çarşamba

Kripto Sistemlerinin Karşılaştırılması

Asimetrik ve simetrik kriptografi sistemlerinin özelliklerini aşağıdaki karşılaştırma tablosuna görebilirsiniz:


Simetrik Kriptografi
Gizlilik - Sağlar
Bütünlük --
Kimlik doğrulama --
İnkar Edememezlik --
Performans - Hızlı
Güvenlik - Anahtar uzunluğuna bağlı
Asimetrik Kriptografi
Gizlilik - Sağlar
Bütünlük - Sağlar
Kimlik Doğrulama - Sağlar
İnkar Edilemezlik - Sağlar
Performnas - Yavaş
Güvenlik - Anahtar uzunluğun bağlı

20 Mayıs 2009 Çarşamba

Asimetrik Kriptografi

Asimetrik Kriptografi
Şifreleme ve şifre çözme işlemlerinin farklı anahtarlarla yapıldığı algoritmalara asimetrik algoritmalar denilmektedir. Asimetrik algoritmalar temelini matematikten alaktadır. Asimetrik algoritmaları kullanan taraflar; aynı şifreleme algoritmasını kullanmaktadırlar.

Kuvvetli Yönleri
• Hazırlanan algoritmaya bağlı kaba kuvvete dirençlidir.
• Kriptografinin ana ilkeleri olarak saydığımız; bütünlük, kimlik doğrulama ve inkar edememezlik güvenli bir şekilde hizmeti sağlanabilir.
• Anahtarı kullanıcı belirleyebilir.

Zayıf Yönleri
• Şifrelerin uzunluğundan kaynaklanan algoritmaların yavaş çalışması.
• Anahtar uzunlukları bazen sorun çıkarabiliyor olması.

Asimetrik Algoritmalar
Başlıca aimetik algoritmalar; RSA, Diffie-Hellman, ElGamal, Paillier, EKE, DSA vs. sonraki makalelerimizde bu algoritmalar hakkında bilgi edinebilirsiniz.





RSA Algoritması


Başlıca asimetrik kriptografi algoritmaları RSA, Eliptik Eğri Sistemleri, El Gamal ve Diffie-Hellman anahtar belirleme olarak sıralanabilir. Asimetrik kriptografi algoritmaları, simetrik algoritmalardan farklı olarak çözülmesi zor olan matematiksel problemlere dayanır.

•Açık anahtar kriptografik sistemi ve sayısal imzalama yöntemi olarak kullanılır.
•Çarpanlarına ayırma problemi üzerine inşa edilmiştir.
•Bileşik tam sayı olan n'i oluşturan, asal sayılar p ve q bulunur, öyleki n=pq 'dir.
•Yeterince büyük bir n için kırılması çok zordur.
•Ayrıca kök bulma problemine de dayanır.
•Çok güvenlidir fakat fazla hızlı değildir


En yaygın olarak kullanılan asimetrik algoritmadır. R. Rivest, A. Shamir, L. Adleman tarafından 1977 yılında bulunmuş ve 1978 yılında yayınlanmıştır. Adını mucitlerinin isimlerinin ilk harflerinden almıştır. Aşağıdaki özelliklere sahiptir.

•Açık anahtar kriptografik sistemi ve sayısal imzalama yöntemi olarak kullanılır.
•Çarpanlarına ayırma problemi üzerine inşa edilmiştir.
•Bileşik tam sayı olan n'i oluşturan, asal sayılar p ve q bulunur, öyleki n=pq 'dir.
•Yeterince büyük bir n için kırılması çok zordur.
•Ayrıca kök bulma problemine de dayanır.
•Çok güvenlidir fakat fazla hızlı değildir

Algoritmanın kullandığı parametreler şunlardır:


Açık anahtar : n, e


Özel anahtar : d


n bileşik bir tamsayıdır ("modulus")


e bir tamsayıdır ("açık üs ifadesi")


d bir tamsayıdır ("gizli üs ifadesi")
öyleki


ed ≡ 1 (mod (p-1)(q-1))


ve p, q sayıları n' nin asal çarpanlarıdır.

Algoritmanın Kullanımı


Ayşe, Bora'ya m mesajını şifreli göndermek için:

m'nin e'inci üssünü alır, yani m'yi Bora'nın açık anahtarı ile şifreler:
c = me mod n
c ("şifreli mesajı")'yi Bora'ya gönderir

Bora c sayısının d'nci üssünü alır, yani c'nin şifresini kendi özel anahtarını kullanarak çözer:
m = cd mod n

Algoritmanın incelenmesi


• Ayşe'nin işi kolaydır, sadece iki tane modüler çarpma işlemi yapar.
• Bora'nın işi kolaydır, 1.5 logn tane modüler çarpma yapar.
• Eğer asal sayılar p, q bilinirse işlem daha hızlı yapılabilir.
• Düşmanın işi zordur çünkü kök bulma ya da çarpanlarına ayırma problemini çözmelidir.
• Etkili bir çözümü bulunmamıştır.
• Modulus n sayısı arttıkça algoritmanın güvenliği artar.

Asimetrik Kriptografi Anahtar Yöntemi


Asimetrik kriptografi için anahtar yönetimi çok önemlidir. Anahtar yönetimi için dikkat edilmesi gereken noktalar şöyle sıralanabilir:

• Açık anahtarlar kontrollü olarak bir otorite tarafından yayınlanmalı ve değiştirilmeleri önlenmelidir.
• Anahtar çiftleri merkezi bir otorite tarafından üretilebilir veya her kullanıcı kendi anahtar çiftini üretebilir.
• Şifreleme ve imzalama için ayrı ayrı anahtar çiftleri olmalıdır. Çok özel durumlar için imzalama ve şifreleme anahtar çiftlerinin aynı olmasına izin verilebilir.
• Anahtar iptalleri kontrollü bir şekilde yapılmalı ve duyurulmalıdır.

Asimetrik kriptografi için anahtar yönetimi simetrik kriptografiye göre daha kolaydır çünkü bir kullanıcıyla şifreli haberleşmek isteyen kişi karşı tarafın açık anahtarına ihtiyaç duyar. Bu açık anahtar kamuya açık olarak yayınlandığı için sisteme giren bir kişi için sadece bir anahtar çifti üretmek yeterli olmaktadır.

Kriptoanaliz ve Yöntemleri

Kriptoanaliz, bir şifreleme sistemini veya sadece şifreli mesajı inceleyerek, şifreli mesajın açık halini elde etmeye çalışan kriptoloji disiplinidir. Kriptoanaliz çalışması sırasında kriptoanaliz yapan kişinin elinde çoğu zaman çok az bilgi vardır. Değişik durumlar aşağıda listelenmiştir:

Şifrelenmiş mesaj analizi : Kriptoanaliz yapan kişinin elinde sadece şifreli bir mesaj vardır. Mesajın açık hali ile ilgili hiç bir ipucu yoktur.

Tam bir açık mesajın analizi : Kriptoanaliz yapan kişinin elinde bütün bir mesajın hem açık hali hem de şifreli hali vardır.

Yarım olarak elde edilmiş açık mesajın analizi : Kriptoanaliz yapan kişi bir mesajın açık halinin belirli bir kısmına ve şifreli halinin tamamına sahiptir.

İstenen açık mesajın şifrelenmiş halinin analizi : Kriptoanaliz yapan kişi istediği açık mesajın şifreli halini elde edebilmektedir. Bu şifrelemeyi yapan cihazın veya yazılımın çalışan bir kopyasına sahip olarak veya şifrelemeyi yapan sistemi fark edilmeden kullanmakla mümkün olur.

Şifreli mesajın şifreleme algoritması bilinerek analizi : Kriptoanaliz yapan kişi elindeki şifreli mesajın hangi yöntemle şifrelendiğini bilmektedir.

Kullanılan kriptoanaliz yöntemleri ise aşağıda listelenmiştir:

Kaba kuvvet yöntemi : Bu yöntem bir şifreleme algoritması tarafından kullanılabilecek tüm anahtarları tek tek veya belirli bir mantık çerçevesinde deneyerek şifreyi çözmeye çalışır.

Diferansiyel kriptoanaliz : Bu yöntem bilinen açık-şifreli mesaj çiftleri arasındaki farkların hesaplanması temeline dayanır.

Basit Şifreleme Yöntemleri

Basit şifreleme yöntemleri genellikle kağıt kalem kullanarak gerçekleştirilebilen, çok karışık matematik temellere dayanmayan sistemlerdir. En gelişmiş örnekleri mekanik cihazlar olan basit şifreleme yöntemleri, elektronik cihazların kullanılmaya başlanmasıyla beraber ortadan kalkmıştır.

Mono Alfabetik Şifreleme


En eski ve basit şifreleme yötemlerinden birisi olan Sezar yöntemi mono alfabetik şifrelemenin tipik bir örneğidir. Sezar döneminde kullanılan bu yöntemde harflerin yeri değiştirilir. Şifrelenecek metindeki harfler alfabede 3 harf kaydırılarak değiştirilir.

Sezar Şifresi : ci= E(pi) = pi+3 mod 29

Açık Mesaj : Gizli Bilgi
Şifreli Mesaj : Ilcol Dloıl

Bu yöntemin biraz daha gelişmişi olan tablo yönteminde ise alfabedeki her harf başka bir harfle yer değiştirir ama bu bir kurala bağlı olmadan karışık bir şekilde yapılır.

ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ



CÇAVYJŞÜZKÖTUENOİPFGILĞHRMBDS

Mono alfabetik şifreleme yöntemleri bilgisayar yardımıyla çok kısa sürede kırılabilir. Bu yöntemler kullanılan dildeki harflerin yerini değiştirir ama harflerin kullanım sıklığını (frekansını) değiştirmez. Örneğin Türkçe'de en çok kullanılan harf olan "a" harfi tablo yöntemi kullanılarak "c" harfi ile yer değiştirilirse elde edilecek şifreli metinde en çok tekrar eden harfin "c" olduğu görülür ve bunun "a" harfi olabileceği tahmin edilerek şifre çözülmeye başlanabilir.






Poli Alfabetik Şifreleme




Bu tip şifrelemede, mono alfabetik yöntemlerden farklı olarak bir harf değiştirilince her seferinde aynı harfe dönüşmez. Bu yöntemlere güzel bir örnek Vigenere tablosudur.








Bu yöntemde oluşturulan tablo ve bir anahtar kelime kullanılarak şifreleme yapılır.

Şifreleme



Açık Mesaj (sütun) : BULUŞ MAYER İANKA RA
Anahtar Kelime (satır) : KALEM KALEM KALEM KALEM ...
Şifreli Mesaj : LUZAĞ ZAJIF UABÖM DA...

Şifre Çözme




Şifreli Mesaj (tablo) : LUZAĞ ZAJIF UABÖM DA...
Anahtar Kelime (satır) : KALEM KALEM KALEM KALEM ...
Açık Mesaj (sütun) : BULUŞ MAYER İANKA RA

Poli alfabetik şifreleme yöntemleri de bilgisayar yardımıyla ve frekans sayımı ile çok kolay ve çabuk çözülebilmektedir.

Tek Kullanımlık Karakter Dizisi (One-time Pad)


Bu basit şifreleme yönteminde rastgele üretilen bir karakter (harf veya rakam) dizisi kullanılarak şifreleme yapılır. Açık mesaj içinde yer alan her karakter, üretilen dizide karşısına denk gelen karakterle işleme sokularak (Örneğin modüler toplama işlemi) şifreli mesaj elde edilir. Mesajı çözmek için rastgele dizinin bilinmesi gereklidir. Bu yönteme Vernam şifreleme yöntemi denir.

Açık Mesaj : BULUSMAYERIANKARA
Rastgele Dizi : DEFRYPLCNMLJKHFGH
Şifreli Mesaj : RLDYDOY....

Bu yöntemin güvenliği rastgele üretilen diziye bağlıdır. Bu dizi gerçekten rastgele üretilmelidir, eğer bir kurala bağlı olarak üretilirse ve bu kural saldırgan tarafından bilinirse sistem kırılabilir. Bu tehdit dışında sistem mükemmel bir şifreleme sistemidir ve ilk olarak 1917'de bulunup "teletype" makinelerinde kullanılmıştır.

Simetrik Kriptografi

Simetrik KriptografiSimetrik algoritmalarda; şifreleme ve şifre açma işlemi aynı anahtar üzerinde yapılmaktadır.Bu tür algoritmalar da haberleşen taraflar;

• Aynı şifreleme algoritmaları kullanır.

• Algoritmalar birbirine uyumludur.

• Anahtarlar birdir.


Kuvvetli Yönleri

• Algoritmalar olabildiğince hızlıdır.

• Donanımla birlikte kullanılması.

• Güvenlidir.


Zayıf Yönleri

• Güvenli anahtar dağıtımı zordur.

• Kapasite sorunu vardır.

• Kimlik doğrulama ve bütünlük ilkeleri hizmetlerini güvenli bir şekilde gerçekleştirmek zordur.


Blok şifreleme ve dizi şifreleme algoritmaları olarak ikiye ayrılmaktadır.Blok Şifreleme AlgoritmalarıBu tür algoritmalar veriyi bloklar halinde işlemektedir. Bazen bağımsız bazen birbirine bağlı olarak şifrelemektedir. Bunlar;AES: Advanced Encryption Standard (Gelişmiş Şifreleme Standardı), uluslararası olarak kullanılan bir blok şifreleme algoritmasıdır. Vincent Rijmen ve Joan Daemen tarafından geliştirilmiş olup DES şifreleme algoritmasının zayıf noktalarını karşı oluşturulmuştur.Blowfish: Eskiyen DES şifreleme algoritmasının yerini alması ve diğer şifreleme algoritmalarının yerine alması. Bruce Schneier tarafından 1993 yılın da tasarlanmıştır.Camellia Cipher: Bilinen tüm şifre çözme saldırılarına karşı koyabilmek için yüksek güvenliği göz önünde bulundurularak tasarlanmıştır.DES: Data Encryption Standart (Veri Şifreleme Standardı ) dünyanın en çok kullanılan şifreleme algoritmalardandır. 1970 li yıllarda geliştirtmiştir. Günümüzde DES şifreleme algoritması güvenini kaybetmiştir.3DES: DES şifreleme algoritmasının güvenini kaybetmesinden dolayı IBM tarafından 1987 yılında geliştirtmiştir.Feistel Cipher: Bu Simitrik algoritma bilinen şifreleme blok şifreleme algoritmalarının temelini teşkil etmektedir.IDEA: International Data Encryption Algorithm (Uluslar Arası Veri Şifreleme Algoritması) 1992 yılında geliştirilmiştir. Kaynak kodu ücretsiz olmasına rağmen ticari amaçlı kullanımlar için lisans gerekiyor.Playfair Cipher: Temelini matematiksel matrislerden alan ve bilinen en basit algoritmadır.SkipJack: NSA tarafından tasarlanmış ve tasarımı ile ilgili bilgiler 1993’den 1998’e kadar gizli tutulmuştur.

Güvenli Şifreleme Yöntemleri

Bilindiği üzere bir sistemi basitleştiren, onun kullanabilirliğinin basit bir düzeye inmesidir. "Basit Şifreleme Yöntemleri" başlığı altında aldığımız yöntemler daha güvenli olmaya ihtiyaç duydukları için kriptografinin değer kazanıp ileri bir seviye gelmesiyle beraber bu başlığı açabilmemize vesile olmuştur. Dolayısıyla sırada basit yöntemleri temel edinmiş dev yapılar var.


Güvenli şifreleme yöntemleri klasik şifreleme yöntemlerinin zayıf yönlerini ortadan kaldıran ve kriptoanalize karşı dirençli olan algoritmalarla gerçeklenir. Bu yöntemler elektronik sistemlerde (bilgisayar, telekomünikasyon vb) kullanılır ve ikili düzende (binary) saklanan ve taşınan bilgi üzerinde uygulanır. Bu nedenle anahtar olarak bit dizileri kullanılır.






Bir şifreleme algoritmasının güvenliği belirleyen en önemli değişkenlerden birisi anahtar uzunluğudur. Örneğin 64 bitlik bir anahtar kullanan şifreleme algoritması için toplam anahtar sayısı 264= 1019 adettir. Şifrelemede bu anahtarlardan herhangi birisi kullanılabileceği için bu anahtarı tahmin yoluyla elde etme olasılığı çok düşüktür.

64 bitlik Anahtar = 1100101010110001 0001101000000111 0110100010011110 1100111010011011

Kriptolojide bahsedilen rakamlar genellikle çok büyük olduğu için, fiziksel dünyadaki bazı büyük rakamları bilmek okuyucuların hayal gücü için faydalı olacaktır.

Büyük Rakamlar
Yıldırım düşmesi sonucu ölme ihtimali (1 gün için) = 9 milyarda bir (233)
Evrenin yaşı = 1010 (234) yıl
Dünyadaki atomların sayısı = 1051 (2170)

Güvenli şifreleme temel olarak iki çeşittir :

Simetrik Kriptografi

Asimetrik Kriptografi






















17 Mayıs 2009 Pazar

Kriptolojideki Düzen:Algoritma...

Öncelikle kriptolojiyi düşüncesini uygulanabilir hale getirmek için, onu belirli bir düzene göre sıralayıp, her adımın birbirini takip ederken aynı zamanda etkide bulunduğu bir sistem yaratmalıyız. İşte algoritma, bu noktada kriptolojiye bir rehber olur. Karmakarışık bir düzene sahip olan bir şehirdeki bir yabancıyı düşünün. Ona bir yere ulaşması için bir yol tarifi vermeniz gerekiyor. Fakat ne yazık ki her sokak birkaç cümleyle ifade edemeyeceğiniz kadar ters noktalarda. Bu nedenle adım adım ve her adımı birbiriyle bağlantılı bir tarifte bulunmanız gerekiyor. Belki de tarifinizi bir krokide ifade etmeniz daha kolay. İşte soyut olarak düşündğümüz bu krokinin şemasal haline algoritma diyoruz. Tabiiki bu en basit tanımı olarak karşınızda. Şunu da düşünmemiz gerek ki: "eğer o yol kapalıysa bu yolu seç" tanımında adımlarımızda olabilirdi. Yani bir çok gereklilikler ve şartlar tarifimize etkide bulunabilirdi. Sonuç olarak algoritma: Belli bir durumdan başlayarak sonlu sayıda adımda belli bir sonucu elde etmenin yöntemini tarif eden iyi tanımlanmış kurallar kümesidir. Algoritmalar özel durumlara çözüm sunmazlar. Genel çözümlerin işlem basamaklarını içerirler. Başka bir örnek olarak:

I. Yoğurdu bir kaba koy
II. Karıştır
III. Aynı miktarda su ilave et
IV. Biraz tuz ekle
V.Tekrar karıştır


Yada şemasal olarak göstermemiz gerekirse:




Bunların yanı sıra kaynağını matematikten alan algoritmanın matematiksel uygulamalarına da örnek verilebilir:

Sonucu bir matematik problemin çözümü olan başka bir basit örnek de Öklid'in ortak bölenlerin en büyüğünü bulan algoritmasıdır.
giriş: iki sayı m, n
1. eğer n = 0 ise, sonuç m dir
2. m'nin yerine n koy, n nin yerine m%n koy, tekrar 1'den başla.
Bu örnekte m%n bölmenin kalanıdır, yani 5%2 = 1'deki gibi. Algoritmayı 33 ve 15'e uygulayalım:
33,15
15,3
3,0
sonuç 3

Bir başka ve algoritma için son olan örnek ise, bigisayar... Her türlü yazılım ve bilgisayar için geçerli olan denklemler bu yolla yapılmaktadır:

A0 --> Başla
A1 --> Sayaç=0 (Sayaç'ın ilk sayısı 0 olarak başlar.)
A2 --> Sayı=? : T=T+Sayı (Sayıyı giriniz. T'ye sayıyı ekle ve T'yi göster.)
A3 --> Sayaç=Sayaç+1 (Sayaç'a 1 ekle ve sayacı göster.)
A4 --> Sayaç<4> O=T/4 (Ortalama için T değerini 4'e böl)
A6 --> O'yu göster. (Ortalamayı göster.)
A7 --> Dur

Algoritmanın kriptolojiyle ilgisi basit olarak ortadadır. Kriptoloji anahtarını kullanarak bir kapıyı kilitlemek ya da açmak için, anahtarın dişlerinin algoritmaya göre kalıplanmış olması gerekmetedir. Kısacası, Kriptolojideki işlem bütünlüğünü sağlayabilmek için gerekli olan "ifade biçimi" algoritmadır. Başka bir deyişle kriptoloji şifreleme algoritmasının uygulamasıdır.

Artık inceleme alanımız biraz daha detaylandırılabilir. Fakat yeni başlığımıza geçmeden önce, algoritmanın örneklerini çoğaltarak düşüncelerimizi daha oturaklı ve yaratmaya müsait hale getirebilceğimizi düşünüyorum. İşte bir kaç örnek daha:

Algoritma Akış Şeması

Adım 1-Başla
Adım 2-A,B'yi oku
Adım 3-A=B ise Adım 7'ye git
Adım 4-A>B ise Adım 6'ya git
Adım 5-B'yi yaz Adım 8'e git
Adım 6-A'yı yaz Adım 8'e git
Adım 7-"A veB eşit"mesajını yaz
Adım 8-DUR



Bir okulda bulunan 10 sınıftaki 30'ar öğrencinin herbirinin 12 şer dersten aldıkları
notların ortalamasını bulan ve öğrenci ismi ile not ortalamasını yazan programın,algoritması ve
akış şeması şöyledir:

Değişkenler

ISS:Sınıf sayacı,
IOS:Öğrenci sayacı,
DN:Ders notu,
DNS:Ders notu sayacı,
DNT:Ders notlarının toplamı,
DNO:Ders notlarının ortalaması,
OGAD:Öğrencinin adı

Algoritma


Adım 1-Başla
Adım 2-SS=0
Adım 3-IOS=0
Adım 4-DNS=DNT=0
Adım 5-OGAD oku
Adım 6-DN oku
Adım 7-DNS=DNS+1(ders notu sayacı 1 artır.
Adım 8-DNT=DNT+DN(notları topla)
Adım 9-Eğer DNS<12 dno="DNT/12(ortalamayı" ios="IOS+1(öğrenci" iss="ISS+1(sınıf">

Akış şeması