Açık Anahtarlı Şifreleme Teknikleri ve RSA şifreleme
Algoritması
Kazım TEMUR, 2001510035, ktemur@gmail.com
Şifreleme/deşifreleme
bir bilgisayar ağında veya kişisel bilgisayarlarda haberleşme yada 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.
Her
açık anahtar tabanlı şifreleme sistemi matematiksel zor problemlere dayanır.
Örneğin RSA sisteminin güvenliği büyük sayıların faktorizasyonun zorluğuna
dayanmaktadır. Bu yazıda açık anahtarlı şifreleme teknikleri ve RSA şifreleme
algoritması hakkında bilgi verilmiştir.
İnternet üzerinden yolladığımız veri paketleri halka açık
networklerden geçtiği için herkesin erişimine açıktır. Gizli bilgilerimizi
internet üzerinden iletmek istediğimizde bu durum önemli bir sorun halini alı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.
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, mesela gruptan bir kullanıcının her
çıkışında geri kalan herkesin başka bir algoritmaya geçmesi 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; istenmeyen kişiler 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.
Kullanıcı bir mesajı 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 mesajı elde eder. İstenmeyen kişiler 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 adı verilir.
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.
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ı şifre anahtarından hesaplanamaz. Bu algoritmalara açık anahtarlı
algoritmalar denmesinin sebebi şifre anahtarı halka 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. Bir kullanıcının açık anahtarıyla kilitlenen
bir mesajı yalnız ve ancak ona ait gizli anahtar çözebilir.
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.
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. Bu algoritmanın güvenliği, çok büyük sayıları
çarpımlarına ayırmanın zorluğuna dayanmaktadır.
Ø
Hem p’nin hem de
q’nun asal olduğu p ve q seçilir.
Ø
Mod
alınacak değer hesaplanır n = pq.
Ø
Euler's
totient fonksiyonu uygulanır t = (p-1)(q-1).
Ø
T
değeri ile en büyük ortak böleni 1 olan bir e değeri hesaplanır.
Ø
e*d = 1 mod t olacak
şekilde d değeri hesaplanır
Ø
public
key (e, n).
Ø
Private
key (d, n).
Ø
Şifrelenecek
M olsun.
Ø
Şifreli
metin C = M^e mod n.
Ø
Şifre
çözme işlemi => Şifrelenen metin = C^d mod n = (M^e)^d mod n = M.
Örnek:
Ø
P =11; q=13;
Ø
N = 11*13 =
143.
Ø
t =
(11-1)*(13-1) = 120.
Ø
e = 7.
(7<120, ve 7 ve 120 nin en büyük ortak böleni 1 dir
Ø
7*d = 1 mod 120 => d = 103,
Ø
çünkü
Ø
7*103 = 721 = 1
mod 120.
Ø
public key (7,
143).
Ø
private key (103,
143).
Ø
M = 5 kabul
edelim.
Ø
Şifreli metin: C = 5^7 mod 143= 47
Ø
Şifrelenen metin:
47^103 mod 143 = 5
47^103
= (5^7)^103 = 5^721
= 5*[5^720] =5*[(5^120)^6]
= 5*[ 1^6] = 5.
= 5*[5^720] =5*[(5^120)^6]
= 5*[ 1^6] = 5.
5^120 = 5^t = 1 mod 143 (Euler teoremi) veya
x^(e*d) = x; bu sebepten, 5^721 =
5’tir.
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.
Matematikçiler
çok büyük sayıların çarpanlarına ayrılabilmesinin gerçekten zor bir problem
olduğu konusunda hemfikirdirler. Ancak bilgisayar hızlarındaki artış, p ve q
sayılarını seçerken bizleri çok dikkatli olmaya zorlar. Örneğin 512 ikillik bir
mod (n) kullanmak, artık çok güvenli sayılmamakta, 1024 ikil şu anki standart
olarak kabul edilmektedir.
Algoritmanın Önemli
Özellikleri:
v
Birbirine
uyan public/private anahtar çifti oluşturulabilir.
v
Eğer
public-key varsa ,encryption ve signature verification işlemleri yapılabilir.
v
Eğer
private-key varsa, decryption ve signing işlemleri yapılabilir.
v
public-key
varken private-key in oluşturulması çok zordur.
v
private-key
yokken şifreli mesajın çözülmesi çok zordur.
Kaynaklar:
1.
Kodaz,H.; 2002, Veri İletiminde
Güvenlik İçin Şifreleme, Yüksek Lisans, S.Ü.
5.
Özcan,M; Açık Anahtar
Tabanlı Şifreleme Neden Zordur, Sabancı Üniversitesi
Hiç yorum yok:
Yorum Gönder
isterseniz anonim seçeneginden kayıtsız gönderebilirsiniz iyi günler