RSA Nedir?

noktalıvirgül

Deneyimli Moderatör
17 Kas 2020
923
510
RSA, açık kaynaklı bir şifreleme sistemidir ve verilerin güvenli şekilde iletimi için kullanılır. Ron Rivest, Adi Shamir, Leonard Adleman’ın soyadlarının baş harfleri kullanılarak bu ismi almıştır. Şifreleme anahtarı açık olduğu için gizli tutulan (özel) şifre çözme anahtarından farklıdır. RSA ile şifreleme kullanan bir kullanıcı, yardımcı bir değerle birlikte iki büyük asal sayıya dayalı genel bir anahtar oluşturup yayınlar. Mesajları, genel anahtar aracılığıyla herkes şifreleyebilir, ama şifre yalnızca gizli tutulan asal sayıları bilenler tarafından çözülebilir. Asal sayıları çarpanlarına ayrılarak algoritmik bir zorluk oluşturan açık anahtarlı şifreleme yöntemi olması sağlanmıştır. Güvenilirliği de çok büyük sayıları işleme tabi tutmakla ilgili bir asimetrik şifreleme algoritması içeriğiyle sağlanır.

Simetrik şifrelemede şifrelenmiş veriyi alan tarafın bunu deşifre etmesi için gizli anahtar paylaşımı gereklidir. Ama RSA asimetrik bir şifreleme tekniği olduğundan gizli anahtarın paylaşılması durumu yoktur ve gizli anahtarların saklanması gerekmez. Böylelikle sistem fazladan bir depolama yükünden kurtarılmış olur. Ama şifrelemenin güçlü olması için büyük sayılarla işlem yapılması da yavaş algoritmanın çalışmasına sebep olmaktadır. Ayrıca RSA anahtarı uzadıkça işlem süresi de artar. Kablosuz ağlarda RSA algoritmasının kullanılması, bant genişliğini çok fazla tükettiği ve sistemi yavaşlattığı için performans düşüşlerine sebep olur.

Nasıl Çalışır?

Verilerin güvenli şekilde yerine ulaşması için iletim sırasındaki gizlilikleri çok önemlidir. Bu güvenlik için de şifreleme yöntemleri uygulanır ve bu şifreleme uygulamasına ayrıca kriptoloji de denilir. Verilerin içeriğinin başkaları tarafından anlaşılamayacak hale getirilmesi ve şifrelenmiş veriyi okuyacak kişilerdeki şifre çözme anahtarının bulunmasıyla güvenli iletimler sağlanmaktadır. Bu anahtarla şifrelenmiş olan veri metni düz metin haline çevrilir ve şifre çözülmüş olur. Yani açık veriler, güvenlik için önce gizli ve anlaşılmaz hale getirilir; sonra da bu anlaşılmaz metin, anlaşılır hale getirilerek veriye ulaşması gereken kişilerin çözmesi ve içeriği görmesi sağlanır.

Büyük bir değerde ve birbirinden farklı iki asal sayının çarpımıyla oluşan base bir değer oluşturulur. Aynı iki asal sayıdan diğer anahtar parametreleri de türetilir. Bu yöntemin kullanılma sebebi, tam sayısının çarpanlarına ayrılmasının, o sayıyı yeni sayılarla çarpmaktan daha zor ve karmaşık olmasından kaynaklanmıştır. Böylece çok daha güvenli bir şifreleme yapılacağı düşünülmüştür. Seçilen asal sayıların yeterince büyük olması güvenlik için önemlidir.

Bu kriptoloji algoritması, 3 basamaktan oluşur: Anahtar üretimi, şifreleme, şifre çözme. Bir ortak anahtar (public key) bir de özel anahtar (private key) bulunur. Ortak anahtar, mesajları şifrelemek için kullanılır ve herkes tarafından bilinir. Özel anahtar ise sadece mesajı yayınlayan kişi tarafından bilinir.

Şifreleme için kullanılacak olan asal sayılara p ve q dersek; base değerine de n dersek; base değerinin hesaplanması için n=p*q formülünü kullanabiliriz. (N sayısı özel ve ortak değerler konusunda mod değeri olarak kullanılır.) N değerinin totient fonksiyonu hesaplanırken ɸ ( n )=(p-1)(q-1) formülü kullanılır. (Totient sayılar teorisine göre, bir tam sayı ve ondan daha küçük olan ve o sayı ile aralarında asal olan sayma sayısını belirten fonksiyon ile formül belirlenir.) Public key ise e sembolüyle ifade edilirse, e için 1<e<ɸ ( n ) aralığında bir asal sayı seçilmelidir. Private değerine ise d denilirse, d*e=1 mod ( n ) formüle edilir. Yani bu “d” değeri özel anahtar üssü olarak belirlenmiştir. Bu hesaplama için uzatılmış Öklid algoritmasından faydalanılır.


Şifreleme işlemi sırasında bir kullanıcı, kendi ortak şifresi olan “n, e” ikilisini yayınlar. Onunla iletişimde olan kullanıcı da mesajı şu şekilde şifreler; c=me mod n. (Buradaki “m” simgesi, şifrelenecek olan açık metnin (plain text),” e” ve “n” simgeleri de mesajı gönderen kullanıcı tarafından yayınlanan şifrelerdir.) Karşı taraftaki kullanıcı tarafından yollanan mesajın açılması için şu formül kullanılır. m=cd mod n (burada açılacak olan şifrelenmiş metin c’dir. Alıcı kişinin özel şifresi ise d ile ifade edilmiştir, “n”ise mod değeridir.

-

AssignParameter metoduyla parametreleri kullanarak Açık Anahtar (Public Key) ile şifrelenmeyi sağlar.

public static string EncryptData(string data2Encrypt)
{
AssignParameter();
StreamReader reader =
new StreamReader(@"D:\publickey.xml");
string publicOnlyKeyXML = reader.ReadToEnd();
rsa.FromXmlString(publicOnlyKeyXML);
reader.Close();
byte[] plainbytes =
System.Text.Encoding.UTF8.GetBytes(data2Encrypt);
byte[] cipherbytes = rsa.Encrypt(plainbytes, false);
return Convert.ToBase64String(cipherbytes);
}


*AssignParameter metoduyla oluşturulan Açık Anahtar ve Gizli Anahtar (Private Key) verilerinin xml dosyasında saklanmasını ve oluşturulan şifrelerin EncryptData ve DecryptData metodlarının kullanımına açılmasını sağlar.

public static void AssignNewKey()
{
AssignParameter();
StreamWriter writer =
new StreamWriter(@"D:\privatekey.xml");
string publicPrivateKeyXML = rsa.ToXmlString(true);
writer.Write(publicPrivateKeyXML);
writer.Close();
writer = new StreamWriter(@"D:\publickey.xml");
string publicOnlyKeyXML =
rsa.ToXmlString(false);
writer.Write(publicOnlyKeyXML);
writer.Close();
}
 
Son düzenleme:
Ü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.