“RSA
Şifreleme Algoritmasının Uygulaması”
Arş. Gör. Halife
KODAZ
Bilgisayar
Mühendisliği Bölümü, Selçuk Üniversitesi, Alaeddin Keykubad Kampüsü,Konya- 2003
ÖZET
Ş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.
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.
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. (Şekil 3)
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.2002
Hiç yorum yok:
Yorum Gönder
isterseniz anonim seçeneginden kayıtsız gönderebilirsiniz iyi günler