“RSA Şifreleme Algoritmasının Uygulaması”

eXXe

Yeni üye
9 Şub 2006
20
0
“RSA Şifreleme Algoritmasının Uygulaması”
Bilgisayar Mühendisliği Bölümü, buradaki bilgiyi siliyorum eXXeTAyfa
[FONT=&quot]ÖZET[/FONT]

[FONT=&quot]Ş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.[/FONT]

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.

Anahtar Kelimeler:
Şifreleme, şifre çözme, açık anahtar, gizli anahtar, düz metin, şifreli metin, kriptografi


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.



İ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 (şekil 2):



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:

RSA Public Key Sistemi
Örnek
Hem p’nin hem de q’nun asal olduğu p ve q seçilir.
P =11; q=13;
Mod alınacak değer hesaplanır n = pq.
N = 11*13 = 143.
Euler's totient fonksiyonu uygulanır t = (p-1)(q-1).
t = (11-1)*(13-1) = 120.
T değeri ile en büyük ortak böleni 1 olan bir e değeri hesaplanır.
e = 7. (7<120, ve 7 ve 120 nin en büyük ortak böleni 1 dir
e*d = 1 mod t olacak şekilde d değeri hesaplanır
7*d = 1 mod 120 => d = 103,
çünkü
7*103 = 721 = 1 mod 120.
public key (e, n).
public key (7, 143).
Private key (d, n).
private key (103, 143).
Plaintext M olsun.
M = 5 kabul edelim.
ciphertext C = M^e mod n.
Ciphertext:
C = 5^7 mod 143= 47
Şifre çözme işlemi =>
plaintext = C^d mod n = (M^e)^d mod n = M.
Plaintext:
47^103 mod 143 = 5
47^103 = (5^7)^103 = 5^721
= 5*[5^720] =5*[(5^120)^6]
= 5*[ 1^6] = 5.

5^120 = 5^t = 1 mod 143 (Euler teoremi)veya,
daha basitçe,
x^(e*d) = x; bu sebepten, 5^721 = 5’tir.

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.

Tablo 1 RSA algoritmasında Farklı bit uzunluklarında anahtar oluşturma ve şifreleme süreleri
Bit Sayısı
Anahtar Oluşturma Süresi (saniye)
Şifreleme
Süresi (saniye)
64
0.021
0.011
128
0.026
0.013
256
0.083
0.015
512
0.307
0.018
1024
2.985
0.106
2048
50.432
0.766
4096
798.625
18.687
5. Kaynakça


1. Kodaz, 2002, Veri İletiminde Güvenlik İçin Şifreleme, Yüksek Lisans, S.Ü.
2. Erhan, 1993, RSA algoritmasını kullanan şifreleme/deşifreleme yazılımının tasarımı (Data encyption/decryption methods and software design of RSA algorithm), Yüksek Lisans, İTÜ
3. Gül, 1997, RSA tabanlı halka açık anahtarlı kripto sisteminin uygulanması (Implementation of on RSA based cryptosystem), Yüksek Lisans, ODTU
4. Uysal, 1998, RSA, DES ve MD5 tabanlı halka açık bir kripto sisteminin geliştirilmesi (Implementation of a public key cryptosystem using RSA, DES and MD5 algorithms), Yüksek Lisans, ODTU
5. Bellovin, 1998, " Cryptography and the Internet", In Proceedings of CRYPTO '98, August 1998
6. Aslan, 1999, Sayısal imza sistemlerinin incelenmesi (Digital signature schemes), Yüksek Lisans, İTÜ.
7. Saka, 2000, Bilgisayar ağ güvenliği ve şifreleme (Network security and cryptography), Yüksek Lisans, MUĞLA
8. http://www.olympos.org, 20.03.2002
9. http://e-kimlik.bilten.metu.edu.tr/,14.04.2002
10. http://security.nyg.ege.edu.tr/, 15.04.2002
11. http://www.rsa.com, 17.04.200






eXXeTAyfa
 

eXXe

Yeni üye
9 Şub 2006
20
0
ben anlamıyorum çok önemli bi konu bu ama hiç cevap yazılmamış enteresting..
 
A

Arsenik-tht

Ziyaretçi
dostum konu bilgi güzel ama ileri düzey için bir konu bu demekki pek anlayan olmamış:D eline sağlık.
 

XheraxX

Yeni üye
17 Tem 2006
7
0
aga yaa Algoritma lı bı sıfreyı nasıl cozerızz bende bı admının algorıtma halınde sıfresı var bı turlu cozemedımmm
 

ByFaCiA27

Katılımcı Üye
5 Haz 2010
604
0
Ellerine Sağlık

kardeş yanlış anlama ama bir dahakine tarihlere bakarak cevap yazarsan eski konular güncellenmez

15996459033950289703.bmp
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.