16 Nisan 2014

Kriptografi - 2. Bölüm

2. Asimetrik Şifreleme Algoritmaları

Simetrik şifreleme algoritmalarında  bulunan en büyük problem anahtar dağıtımıdır. Simetrik algoritma kullanan çok kullanıcılı bir sistemde anahtarın bütün kullanıcılara aynı anahtarın dağıtılması güvenlik açısından problemli olabilir. Her kullanıcıya farklı bir anahtar vermek ise sistemde bir çok farklı anahtar olacağı için sıkıntılı olabilir. Bu sorunları çözüm getirmek için asimetrik şifreleme algoritmaları geliştirilmiştir.
Asimetrik şifreleme algoritmalarında anahtar ile şifre çözme anahtarı birbirinden farklıdır. Şifreleme yapan anahtara açık anahtar, şifreyi çözen anahtar ise özel anahtardır. Açık anahtarlar herkese dağıtılabilir, ancak hangi anahtarın kime ait olduğundan da emin olunmalıdır. Bu yüzden sertifikalar kullanılmaktadır. Sertifika açık anahtar ile sahibinin kimliği arasındaki bağlantının belgesidir. Özel anahtar ise sadece şifreyi çözecek kullanıcıda bulunur, açık anahtar ise gizli değildir.  Bu yüzden asimetrik şifreleme güvenlik açısından simetriğe göre çok daha başarılıdır. Az sayıda anahtar kullanarak simetrik şifreleme yapan çok kullanıcılı uygulamalarda ortaya çıkabilecek anahtar fazlalığı durumunu engeller.  Bununla birlikte hız ve donanımsal uygunluk gibi konularda asimetrik şifreleme simetriğe göre geri planda kalmıştır. Asimetrik algoritmaların güvenliğini sağlayabilmek için çok büyük asal sayılar kullanılmaktadır. Bu da zaman açısından çok büyük problemler getirmektedir.Asimetrik bir algoritmayı kullanan sistemler simetrik algoritmaları kullanan sistemlere göre çok daha yavaştır. Ayrıca asimetrik şifreleme algoritmalarının çok büyük sayılar kullanmasından dolayı donanımsal yapılara uyum sağlaması çok zor olmaktadır.


Kuvvetli Yönleri;
  • Kriptografinin ana ilkeleri olarak sayılan; bütünlük, kimlik doğrulama ve gizlilik hizmeti güvenli bir şekilde 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ı.
Günümüzde simetrik ve asimetrik şifreleme algoritmalarını birlikte kullanarak hem yüksek derecede güvenlik hem de yüksek hızlı sistemler şifrelenebilmektedir. Bu gibi sistemlere melez sistem adı verilir. Anahtar şifreleme, anahtar anlaşma ve sayısal imza işlemleri genellikle asimetrik şifrelemeyle, yığın veri işlemleri ve imzasız veri bütünlüğü korumaysa simetriklerle gerçekleştirilir.

 

2.1. DH (Diffie-Helman)


1976 yılında Diffie ve Helman tarafından bulunmuş ilk asimetrik şifreleme algoritmasıdır. DH iki katılımcının öncesinde herhangi bir bilgi alışverişi yapmadan güvenli olmayan bir kanal vasıtasıyla (güvenli bir şekilde) ortak bir şifrede karar kılmalarına yarayan bir protokoldür. Algoritma anahtar değişimi ile asıl amacı, iki kullanıcının bir anahtarı güvenli bir şekilde birbirlerine iletmeleri ve daha sonrasında da bu anahtar yardımı ile şifreli mesajları birbirlerine gönderebilmelerini sağlamaktır. Diffie–Hellman algoritması oluşturularak simetrik şifreleme algoritmaları için büyük problemi olan gizli anahtarı koruma ve dağıtım büyük ölçüde aşılmıştır. Bununla birlikte Diffie-hellman algoritması sadece ortak gizli anahtarı belirlemekte kullanılmaktadır.

 

2.2. RSA (Rivest-Shamir-Adleman)


1977 yılında R.Rivest, A.Shamir ve L.Adleman isminde üç bilim adamının oluşturduğu yeni asimetrik şifreleme algoritması RSA, anahtar dağıtımının yanında şifreleme ve şifre çözme işlemlerini de gerçekleştirmektedir. RSA, güvenilirliği çok büyük tam sayılarla işlem yapmanın zorluğuna dayanan bir şifreleme tekniğidir.  Bir genel anahtarlı şifreleme tekniği olan RSA, çok büyük tamsayıları oluşturma ve bu sayıları işleminin zorluğu üzerine düşünülmüştür. Anahtar oluşturma işlemi için asal sayılar kullanılarak daha güvenli bir yapı oluşturulmuştur. Genel olarak RSA hem mesaj şifreleme hem de elektronik imza amacıyla kullanılan daha çok ticari uygulamalarda tercih edilen tam sayılar üzerinde en iyileştirme yapılarak oluşturulan değerlerden anahtarların üretildiği bir şifreleme teknolojisidir. RSA algoritmasında sistemin güvenilirliğinin yanı sıra hızının da yüksek olması için, kullanılacak anahtarın sayısal büyüklüğü önemlidir. Yeterli güvenilirlik derecesine ulaşmak için gerekli büyüklük Eliptik Eğri Şifreleme (ECC) Algoritması kullanılarak belirlenmektedir. RSA ile günümüzde 1024 bitlik bir anahtar (128 basamaklı bir sayı) basit uygulamalar için yeterli bir şifreleme tekniği olarak kullanılabilir. RSA algoritması, bir şifreleme algoritması için oldukça basit bir algoritmadır. Buna karşın sürekli çok büyük asal sayı oluşturmak oldukça zor bir işlemdir.

RSA şifreleme sistemin oluşturulmasıyla birlikte asimetrik şifreleme algoritmalarının günümüzde daha yaygın olarak kullanılması sağlanmıştır.

RSA şifreleme algoritması için anahtar oluşturma işlemlerini sıra sıra ele alarak görelim.

1) Bundan sonra N ile ifade edeceğimiz çok büyük tamsayıyı oluşturacak olan iki faklı ve büyük asal sayı belirlenir. Bu sayılar p ve q olarak isimlendirilir.

2) İki asal sayının çarpımını asal çarpanlarına ayırmak asal olmayan sayıları asal çarpanlarına ayırmaktan daha zor olduğu için N tam sayısını oluştururken bu iki asal sayının çarpımından elde ettiğimiz değeri kullanıyoruz.
                               N = p.q

3) N sayısının totient değeri hesaplanır. Totient, sayılar teorisinde bir tam sayının o sayıdan daha küçük ve o sayı ile aralarında asal olan sayı adedini belirten fonksiyondur. Genellikle Euler Totient ya da Euler'in Totienti olarak adlandırılan Totient, İsveçli matematikçi Leonhard Euler tarafından tanımlanmıştır. Totient fonksiyonu, Yunan harflerinden phi(φ) ile simgelendiği için Phi fonksiyonu olarak da anılabilir.[1]
                               φ(N) = (p-1)(q-1)

4) 1 < e < φ(N)   ve   EBOB(e, φ(N)) = 1
Yukarıdaki matematiksel ifadeden de anlaşıldığı üzere 1 ile Totient değeri arasında olan ve Totient değeri ile aralarında asal olan bir tam sayı seçilir ve e olarak isimlendirilir. Burada seçilecek olan e sayısının küçük seçilmesi(ör: 3 gibi) mod ve üs alma gibi işlemleri yaparken performanstan kazandırıyor olsa da bazı durumlarda güvenliği azaltmaktadır.

5) d.e ≡ 1  (mod φ(N))
Denkliğini sağlayan ve gizli anahtarı oluşturmada kullanılacak olan d sayısı bulunur. Burada yapılacak olan işlem e sayısının mod φ(N)’de tersinin bulunmasıdır. Bu değeri bulurken Genişletilmiş Öklid Algoritması kullanılabilir.
Açık ve gizli anahtar oluşturmak için gerekli olan tüm değişkenleri/değerleri oluşturuldu. Gizli anahtarı oluşturan d sayısının hesaplanmasında kullanılan (p,q, φ(N)) sayılarının gizli kalması şartı ile (N,e) çifti açık anahtarı; (N,d) çifti ise gizli anahtarı oluşturmaktadır. 

2.2.1. Şifreleme İşlemi 

RSA kullanılarak gerçekleştirilecek olan şifreli haberleşmede gönderilecek olan metin, alıcı kişinin herkese açık olan (N,e) değerleri yani açık anahtarı ile şifrelenmelidir ki bu mesajı istenilen alıcı dışında kimse görüntüleyemesin. Bunun için açık anahtar olan e kullanılır ve şifrelenecek bilginin sayısal karşılığının e’inci kuvvetinin mod N’deki karşılığı da şifrelenmiş metni oluşturur.
                               c = me  (mod N)
2.2.2. Şifre Çözme İşlemi

Açık anahtarlı şifreleme tekniğinin yapısı gereği açık anahtar ile şifrelenmiş bir metin ancak o açık anahtarın çifti olan gizli anahtar ile açılabilir. Bu yüzden (N,e) açık anahtarı kullanarak şifrelediğimiz yukarıdaki m mesajını sadece bu açık anahtarın çifti olan (N,d) gizli anahtarı kullanarak açabiliriz. Bunun için de şifrelenmiş metnin yani c’nin sayısal karşılığının d’inci kuvveti alınır ve bunun mod N’deki karşılığı bulunarak şifre çözme işlemi gerçekleştirilir ve açık metin elde edilir.
                               m = cd (mod N)

 

3. Anahtarsız Algoritmalar


Simetrik ve asimetrik şifrelemelerin haricinde girdi olarak anahtar kullanmayan algoritmalar da bulunmaktadır. Bu algoritmalar genel olarak bir sistemde yalnız olarak kullanılmazlar. Sistemde bulunan simetrik ve asimetrik diğer algoritmalara yardımcı olmak için yapılmışlardır. Özet fonksiyonu (Hash Functions) adı verilen algoritma en çok tercih edilendir. Bütünlük denetiminde ve güvenli şifre saklama işlemlerinde oldukça kullanılır. Bununla birlikte sayısal imza uygulamalarında asimetirik şifreleme kullanmak uygulamanın oldukça yavaş çalışmasına neden olmaktadır. Bu yüzden bu tür uygulamalarda özet fonkisyonları da kullanmak hız problemini azaltmaktadır.

 

3.1. MD5


MD5 (Message-Digest algorithm 5), veri bütünlüğünü test etmek için kullanılan, Ron Rivest tarafından 1991 yılında geliştirilmiş bir kriptografik özet (tek yönlü şifreleme) algoritmasıdır. Girdi verinin boyutundan bağımsız olarak 128 bitlik özetler üretir.

MD5’deki her girdinin benzersiz olması mümkün değildir, çünkü üretilen “özet” sonuç olarak 128 bittir, ancak MD5’le şifrelenebilecek bilgiler sonsuza gider.

 

3.2. SHA-1


Özetleme fonksiyonlarından olan SHA-1 herhangi bir uzunluktaki bir metnin sabit uzunluktaki özetini oluşturur. Bu özet,veri bütünlüğü ve kimlik doğrulaması ile ilgili uygulamalarda temel yapıtaşı haline gelmiş ve e-posta şifreleme uygulamaları, güvenli uzaktan ulaşım uygulamaları, özel bilgisayar ağları gibi birçok uygulamada kullanılmıştır.

Özetleme Fonksiyonlarının Özellikleri
1. Özetlenecek mesajın boyutu önemli değildir.
2. Mesaj özeti sabit uzunluktadır.
3. Verilen herhangi bir mesajın özeti kolay hesaplanmalıdır.
4. H(x) tek yönlü ve çakışmalara dayanıklı olmalıdır.

 

3.2.1. SHA-1 Özetleme Fonksiyonu

SHA (Secure Hash Algorithm – Güvenli Özetleme Algoritması), Amerika’nın ulusal güvenlik kurumu olan NSA (National Security Agency) tarafından tasarlanmıştır.1993 yılında FIPS PUB 180 standardında yayınlanmıştır. Sıkıştırma fonksiyonundaki küçük bir değişiklikle 2 yıl sonra tekrar NSA tarafından SHA-1 adında FIPS 180-1 de yayınlanmıştır.

SHA-1, uzunluğu en fazla 264 bit olan mesajları girdi olarak kullanır ve 160 bitlik mesaj özeti üretir. Bu işlem sırasında, ilk önce mesajı 512 bitlik bloklara ayırır ve gerekirse son bloğun uzunluğunu 512 bite tamamlar. SHA-1 çalışma prensibi olarak R. Rivest tarafından tasarlanan MD5 özet fonksiyonuna benzer ve iteratif bir yapısı vardır.160 bitlik mesaj özeti üreten SHA-1 çakışmalara karşı 80 bitlik güvenlik sağlar.

Bu iterasyonda mesajın 512 bitlik bloğu alınır ve 16 bitlik kelimlere(m0, m1, m2, …, m15) çevrilir. Daha sonra bu kelimeler, mi = (mi − 3 + mi − 8 + mi − 14 + mi − 16) < < 1 fonksiyonu kullanılarak 2560 bite genişletilir. 20 matematiksel fonksiyon içeren bu iterasyonlar 4 tur çalıştırılır ve 160 bitlik mesaj özeti oluşturulur.

 

3.3. RIPEMD-160


RIPEMD-160, açık anahtar şifreleme üzerine kurulu ilgili şifreleme ve güvenlik  istemidir.RIPEMD-160, MD4 ve MD5'in yerini alması amacıyla tasarlanmış bir hash algoritmasıdır. 20 baytlık (160 bitlik) bir özet üretir.
Sonuçun bit uzunluğu ve değişken zincirleme  160 bit (5 tane 32-bit ) artırılır. Döngü sayılarında 3’den 5’e artırılır ve 2 yol yapılır.

Bu sonuç ;
1) Bir adımda işleme  A := (A + f (B; C; D) + X + K)s + E ve
C := C durumlarda kaydırılan döngüleri gösterir.

2)  Mesaj kelimelerin dizilimleri.  Takip eden değişimlere getirilir:


π değişimi tanımlanır π (i)=9i + 5 (mod 16).  Mesajın düzenlenmesi tablada verilmiştir.
3) Boolean fonksiyonu tanımlanır:

Boolean fonksiyonu aşağıdaki gibi uygulanır:
4) aşağıdaki kaydırma işlemini yapıyoruz:
5)  takip edilen sayılardan tam sayılar alınır:



<<Önceki Bölüm