Arama

RSA Şifreleme Algoritması ve Uygulaması

Güncelleme: 25 Ağustos 2006 Gösterim: 21.684 Cevap: 0
ozti - avatarı
ozti
Ziyaretçi
25 Ağustos 2006       Mesaj #1
ozti - avatarı
Ziyaretçi
RSA Şifreleme Algoritmasının Uygulaması
Şifreleme/deşifreleme (encryption-decryption) bir bilgisayar ağında veya kişisel bilgisayarlarda haberleşme ya da dosya güvenliğini sağlamak için kullanılır. Bu nedenle günümüzde bilgisayarlarda ya da bilgisayar ağlarında şifrelemenin önemi gün geçtikçe artmaktadır.
Sponsorlu Bağlantılar
Bu çalışma da genel olarak şifreleme teknikleri hakkında bilgi verildikten sonra RSA şifreleme algoritmasına uygun olarak şifreleme ve deşifreleme işlemi yapan bir simulasyon tasarlanmıştır. Simulasyonu gerçekleştirmek için programlama dili olarak java seçilmiştir. Algoritma gereği kullanılan sayıların boyutları çok büyük olması nedeniyle java programlama dili kullanılmıştır.


1. Giriş
İnternette yollanan veri paketleri birçok halka açık networklerden geçer, bu da bu paketlere ulaşmayı mümkün kılar. Son derece gizli bilgiler internette nakil olurken, bu durum önemli bir kaygı halini alır. Bu tür bilgileri korumak mümkün olmadıkça, internet iş yapmak veya gizli, şahsi yazışmalarda bulunmak asla güvenli bir yer olmayacaktır. Bilgi güvenliği başkası tarafından dinlenme, bilginin değiştirilmesi, kimlik taklidi gibi tehditlerin ortadan kaldırılması ile sağlanır ve bu amaçla kullanılan temel araç kriptografidir. Kriptografi bilgi güvenliğini inceleyen ve anlaşılabileni anlaşılamaz yapan bir bilim dalıdır. Güvenilirlik, veri bütünlüğü, kimlik doğrulama gibi bilgi güvenliği konularıyla ilgilenen matematiksel yöntemler üzerine yapılan çalışmalar kriptografinin önemli konularıdır.

Kriptografi genel olarak şu ana konularla ilgilenir:
Gizlilik: Bilgi istenmeyen kişiler tarafından anlaşılamamalı.
Bütünlük: Bir iletinin alıcısı bu iletinin iletim sırasında değişikliğe uğrayıp uğramadığını öğrenmek isteyebilir; davetsiz bir misafir doğru iletinin yerine yanlış bir ileti koyma şansına erişmemelidir. Saklanan veya iletilmek istenen bilgi farkına varılmadan değiştirilememeli.
Reddedilemezlik: Bilgiyi oluşturan ya da gönderen, daha sonra bilgiyi kendisinin oluşturduğunu veya gönderdiğini inkar edememeli. Bir gönderici daha sonrasında bir ileti göndermiş olduğunu yanlışlıkla reddetmemelidir.
Kimlik belirleme: Gönderen ve alıcı, birbirlerinin kimliklerini doğrulayabilirler. davetsiz bir misafir başkasının kimliğine bürünme şansına erişmemelidir.

2. Şifrelemenin Temel Elemanları

Bir göndericinin bir alıcıya açık ağlar üzerinden bir ileti göndermek istediği zaman, açık ağlardan gönderilen iletiler üçüncü şahıslar tarafından dinlenme ve değiştirilme tehdidi altındadırlar. Burada söz konusu ileti düz metindir. Bazı kullanımlarda plaintext adı da verilir. Bir iletinin içeriğini saklamak üzere yapılan gizleme işlemi de şifrelemedir (encryption). Bu işlem düz metini şifreli metine dönüştürür. Bilginin içeriğinin başkalarının anlamayacağı hale gelir. Bu bilgi bir yere iletilmek amacıyla şifrelenen bir mesaj veya saklanmak amacıyla şifrelenen bir bilgi olabilir. Şifrelenmiş bir ileti şifreli metindir (ciphertext). Şifreli metini düzmetine geri çevirme işlemi şifre çözümüdür (decrypt). Bu işlemler Şekil 1’de gösterilmektedir.

rsa1oj5
İleti güvenliğini sağlama bilimi kriptografidir. Matematiğin hem şifrebilimi hem de şifreanalizini kapsayan dalı kriptolojidir ve şifrebilimciler tarafından icra edilir.

Eğer bir algoritmanın güvenliği bu algoritmanın çalışma biçimini gizlemeye dayalıysa, bu bir sınırlandırılmış algoritmadır. Sınırlandırılmış algoritmalar günümüzün şartlarına pek uymamaktadır; bir gruba ait kullanıcılar bunları kullanamamaktadır, çünkü gruptan bir kullanıcının her çıkışında geri kalan herkesin başka bir algoritmaya geçmesi gerekmektedir. İçlerinden birisi yanlışlıkla gizleneni açığa vurduğunda, diğer herkesin algoritmalarını değiştirmeleri gerekmektedir. Daha da kötüsü, sınırlandırılmış algoritmalar kalite kontrolüne ve standartizasyona olanak tanımamaktadır. Her bir grup kullanıcının kendisine ait bir algoritması olmalıdır. Bu tür bir grup hazır şifre çözüm anahtarının yazılım veya donanım ürünlerini kullanamaz; davetsiz bir misafir aynı ürünü alıp algoritmayı öğrenebilir. Kendi algoritmalarını ve gerçekleştirimlerini kendileri yazmaları gerekir. Günümüz kriptografisi bu sorunu bir anahtar ile çözmektedir. Bu anahtar çok çeşitli değerler alabilen herhangi bir anahtar olabilir. Günümüzde kullanılmakta olan modern ve güçlü şifreleme algoritmalaları artık gizli değildir. Bu algoritmalar güvenliklerini kullandıkları farklı uzunluk ve yapılardaki anahtarlarla sağlarlar. Bütün modern algoritmalar şifrelemeyi ve şifre çözmeyi kontrol için anahtarları kullanır. Bir anahtar ile şifrelenmiş bilgi, kullanılan algoritmaya bağlı olarak, ilgili anahtar ile çözülebilir. Genel olarak anahtarın kullanımı şu şekildedir:

Kullanıcı bir mesajı (m) göndermeden önce bir anahtar (k1) kullanarak şifreler. Şifreli metin (c) yasadışı dinleyicilere açık olan bir kanaldan gönderilir. Mesajı okumak için alıcı bir anahtar (k2) kullanarak şifreyi çözer ve m mesajını elde eder. Aktif düşmanlar araya girip iletişimi dinleyebilir. Eğer k1 ve k2 eşitse, sistem simetriktir. Aksi takdirde bu sistem asimetrik olarak nitelenir. Güvenliğin garantilenmesi için k2 her zaman gizli olmalıdır, ancak k1’i kullanarak k2’yi elde etmek mümkün olmadığı sürece k1 açıklanabilir. Bu durumda sisteme açık anahtarlı sistem (public key system) adı verilir.

Açık anahtarlı sistemler pek çok ilginç olanaklar sunar; örneğin herkes online bir mağazaya mağazanın açık k1 anahtarını kullanarak şifrelenmiş bir kredi kartı numarası gönderebilir. k2 anahtarını sadece mağaza bildiği için, kartın numarasını sadece mağaza öğrenebilir. Eğer simetrik sistem kullanılsaydı, mağaza potansiyel müşterilerinin her biriyle önceden ve gizlice ayrı ayrı anahtarlar belirlemek zorunda kalırdı. Açık anahtarlı sistemlerin güvenliği her zaman belirli matematiksel problemleri çözmenin zorluğuna dayanır, simetrik sistemler daha çok tek kullanımlık, geçici yapıdadırlar. Açık anahtarlı sistemlerin en büyük dezavantajı matematiksel yapıları nedeniyle simetrik sistemlerden daha yavaş olmalarıdır; özellikle açık anahtarlı sistemlerdeki anahtarların boyutları simetrik sistemlerin anahtarlarının boyutlarından çok daha büyüktür. Kısaca, kullanılacak şifreleme yöntemi gerçekleştirilecek uygulamaya bağlı olarak seçilir.
Algoritmalardaki bütün güvenlik anahtara (veya anahtarlara) dayalıdır, hiçbiri algoritmanın ayrıntılarında yer almaz. Bu, algoritmanın yayınlanabildiği ve incelenebildiği anlamına gelir. Bu algoritmayı kullanan ürünler seri üretilebilir. Bir davetsiz misafirin sizin algoritmanızı bilmesi önemli değildir; sizin özel anahtarınızı bilmedikçe, o şahıs iletilerinizi okuyamaz.

Şifreleme algoritmaları anahtar kullanma yöntemlerine göre genel olarak iki kategoriye ayrılmaktadır. Bu yöntemler:
- Gizli-Anahtar (Simetrik) yöntemleri (Geleneksel kriptolama sistemleri)
- Açık-Anahtar (Asimetrik) yöntemleri (Açık anahtar kriptolama sistemleri)

3. Açık-Anahtar (Asimetrik) Şifreleme Yöntemleri
Bu şifreleme yöntemi iki ayrı anahtar kullanan yöntemdir. İki anahtar kullanımının; güvenirlik, anahtar dağıtımı ve onaylama alanlarında önemli sonuçları vardır. Bu kriptografi yapısında, açık ve gizli anahtar olarak adlandırılmış olan bir anahtar çifti kullanılmaktadır. Asimetrik algoritmalar da denilen açık anahtarlı algoritmalarda şifreleme için kullanılan anahtar ile şifre çözme için kullanılan anahtar birbirinden farklıdır. Anahtar çiftlerini üreten algoritmaların matematiksel özelliklerinden dolayı açık-gizli anahtar çiftleri her kişi için farklıdır, diğer bir deyişle her kullanıcının açık-gizli anahtar çifti yalnızca o kullanıcıya özeldir. Ayrıca şifre çözüm anahtarı (en azından makul bir zaman dilimi içerisinde) şifre anahtarından hesaplanamaz. Bu algoritmalara açık anahtarlı algoritmalar denmesinin sebebi şifre anahtarı halka (kamuya/genel kullanıma) açılabilir: Bir yabancı bir iletiyi şifrelemek için şifreleme anahtarını kullanabilir, ancak sadece ilgili şifre çözüm anahtarına sahip bir kişi iletinin şifresini çözebilir. Bu sistemde, şifre anahtarına genellikle açık anahtar denir, şifre çözüm anahtarı da genellikle gizli anahtar olarak adlandırılır. Gizli anahtar kimi zaman özel anahtar olarak da adlandırılır, ancak simetrik algoritmalarla karışmaması için bu terim genelde kullanılmaz.
Bir kullanıcının açık anahtarıyla kilitlenen bir mesajı yalnız ve ancak ona ait gizli anahtar çözebilir. Aynı şekilde, herhangi bir kullanıcının gizli anahtarıyla attığı sayısal imzanın doğrulanabilmesi, yalnızca onun açık anahtarını kullanarak mümkün olabilir. Açık anahtar kamuya açıktır, elektronik kimlik belgelerinin içinde diğer kişisel bilgilerle birlikte tutulur ve herkes birbirinin açık anahtarını e-kimliklerine ulaşmak süretiyle istediği zaman elde edebilir.

Sayısal Şifreleme: Şifreleme açık ağlardan gönderilen bilginin başkaları tarafından görülmesinin (dinlenmesinin) istenmedigi zaman yapılır. Bunun için çift anahtarlı bir kriptografik algoritma kullanılabilir. Buna göre, mesajı gönderen taraf, gönderilen bilginin sayısal içeriğini, mesajı alacak tarafın açık anahtarını, sayısal şifrelemede kullanır. Mesajı alan taraf da, şifreli mesajı çözmek için şifreli mesajın sayısal içeriği, kendisinin gizli anahtarına gereksinim duyar.
Burada dikkat edilecek olursa, şifreli mesajın üçüncü taraflar tarafından dinlenebilmesi ancak “gizli anahtara” sahip olmaları ya da şifreli mesajı matematiksel yollarla deşifre etmeye çalışmaları ile mümkün olabilir. “Güvenlik açısından iyi bir şifreleme” algoritması, gizli anahtar olmadan şifreli mesajı deşifre etmeye imkan tanımıyan bir algoritmadır.

Sayısal İmza: Sayısal imza elektronik mesaja eklenmiş bilgidir. Çift anahtarlı bir kriptografik algoritmayla hazırlanan sayısal imza, hem gönderilen bilginin sayısal içeriğinin değiştirilmediğinin hem de gönderen tarafın kimliğinin ispatlanması için kullanılır ve gönderilecek mesajdan üretilen “mesaj özetinin” sayısal içeriği, gönderen tarafın kendi gizli anahtarına bağlı olarak oluşturulur. Sayısal imzanın doğruluğunu kanıtlamak için mesaji alan taraf, kendisine gelen mesajin ve sayısal imzanın sayısal içeriği, gönderen tarafın açık anahtarını kullanır.
Açık-anahtar şifreleme için pek çok algoritma bulunmaktadır. En yaygın olan iki tanesi RSA (Ron Rivest, Adi Shamir, Leonard Adleman) algoritması ve DSA (Digital Signature Algorithm - Dijital İmza Algortiması) dır. RSA pek çok uygulamada kullanılan bir algoritmadır. Mesajları şifrelemek için kullanılabileceği gibi dijital imzalarda da kullanılabilir. DSA sadece dijital imza kullanımı içindir. Mesajları şifrelemek için kullanılmaz.

3.1. Rsa Algoritması
1976 yılında Stanford Üniversitesinden Diffie ve Hellman adlı iki araştırmacı farklı bir şifreleme sistemi önerdiler, bu sistemde bir tane şifreleme için(encryption key) ve bundan farklı olarak bir tanede şifre çözmek için(decryption key) anahtar bulunmaktaydı ve decryption key encryption key den elde edilememekteydi.

RSA Algoritmasının içeriği ve çalışması aşağıdaki gibidir:

3.2. RSA Algoritmasının Önemli özellikleri

RSA nın yasal kullanımı ile kolayca hesaplanabilenler;
- Birbirine uyan public/private anahtar çifti oluşturulabilir.
- Eğer public-key varsa ,encryption ve signature verification işlemleri yapılabilir.
- Eğer private-key varsa, decryption ve signing işlemleri yapılabilir.

RSA nın yasalara aykırı kullanımı ile hesaplaması çok zor olanlar;
- public-key varken private-key in oluşturulması.
- private-key yokken şifreli mesajın çözülmesi.

RSA şifreleme algoritmasının güvenli olmasını şu şekilde açıklanabilir:
Bu algoritmaya zarar vermek için bilinen en etkin yol N’in asal çarpanları olan P ve Q nun bulunmasıdır. Ancak P ve Q çok büyük asal sayılar olduğundan ötürü bulunmaları neredeyse imkansızdır. Ayrıca public key {E,N} belli iken D yi, P ve Q olmadan bulmak çok zordur.

4. Sonuç
RSA açık anahtarlı şifreleme algoritması kullanılarak çeşitli anahtar uzunluklarında anahtarlar oluşturulmuş ve şifreleme işlemleri gerçekleştirilmiştir. Ayrıca anahtar oluşturma süreleri ve şifreleme süreleri tablo1 de gösterilmiştir. Test süreleri uygulamanın Pentium 4 1.7Ghz Cpu’ya sahip bir bilgisayarda çalıştırılmasıyla elde edilmiştir.
Uygulamanın gerektirdiği güvenlik seviyesine bağlı olarak kullanılacak bit sayısı ayarlanabilir. Normal şartlarda 1024 bitlik anahtar kullanarak şifreleme sistemi oluşturmak yeterli güvenliği sağlamaktadır.


Kaynak: http://ab.org.tr

BEĞEN Paylaş Paylaş
Bu mesajı 1 üye beğendi.

Benzer Konular

27 Haziran 2012 / ThinkerBeLL Matematik
2 Eylül 2013 / Intersect Bilgisayar
26 Haziran 2012 / bekirr Matematik
10 Eylül 2015 / Safi X-Sözlük