Skip to content

RSA Şifreleme Algoritması

Asimetrik şifrelemenin teorik altyapısını inceledikten sonra, bu paradigmanın dünyadaki ilk ve en yaygın uygulaması olan RSA (Rivest-Shamir-Adleman) algoritmasını ele alacağız. RSA'in güvenliği, sayı teorisinin en temel ve çözülmesi zor problemlerinden biri olan Büyük Sayıların Asal Çarpanlara Ayırılması (Integer Factorization Problem) ilkesine dayanır. Bilgisayarlar için iki büyük asal sayıyı çarpmak (ileri yön) saliseler alırken, çarpım sonucundan hareketle orijinal asal çarpanları bulmak (geri yön) günümüz işlemcileriyle milyarlarca yıl sürebilir.

📌 Gerekli Matematiksel Ön Bilgiler

RSA adımlarını tam olarak kavrayabilmek için şu iki kavramın hatırlanması hayati önem taşır:

  1. Euler Totient Fonksiyonu (ϕ(n)): Bir n pozitif tam sayısı için, n'den küçük ve n ile aralarında asal olan pozitif tam sayıların adedidir. Eğer p ve q iki farklı asal sayı ise, fonksiyonun çarpanlara ayrılabilme özelliğinden dolayı ϕ(pq)=(p1)(q1) olur.
  2. Modüler Çarpımsal Ters: ad1(modϕ(n)) denkliğini sağlayan d değeridir. Bu değer Genişletilmiş Öklid Algoritması (Extended Euclidean Algorithm) kullanılarak polinomsal zamanda hızlıca hesaplanır.

🔑 Anahtar Üretim Süreci (Key Generation)

Şifreli mesajı alacak olan taraf (örneğin Alıcı), kendi anahtar çiftini oluşturmak için şu adımları sırasıyla uygular:

  1. Birbirinden bağımsız, rastgele ve çok büyük iki asal sayı olan p ve q seçilir.
  2. Bu iki asal sayının çarpımı olan kamusal modül n hesaplanır:n=pq
  3. Bu modüle ait Euler Totient değeri ϕ(n) hesaplanır:ϕ(n)=(p1)(q1)
  4. 1<a<ϕ(n) aralığında, ϕ(n) ile aralarında asal olan bir açık üs (encryption exponent) a seçilir:gcd(a,ϕ(n))=1
  5. Seçilen a değerinin mod ϕ(n) altındaki çarpımsal tersi olan gizli üs (decryption exponent) d hesaplanır:ad1(modϕ(n))
  • Açık Anahtar (pk - Public Key): (a,n) çiftidir ve herkesin erişebileceği şekilde ilan edilir.
  • Gizli Anahtar (sk - Private Key): (d,n) çiftidir ve alıcı tarafından kesinlikle gizli tutulur. p,q ve ϕ(n) değerleri de süreç sonunda güvenli bir şekilde imha edilmelidir.

💡 Önemli Not: Carmichael Totient Fonksiyonu Alternatifi

Teorik anlatımlarda ve akademik kaynaklarda kolay anlaşılması açısından genellikle Euler Totient fonksiyonu (ϕ(n)) tercih edilir. Ancak gerçek dünya uygulamalarında ve modern PKCS#1 standartlarında, anahtar üretimi adımı sıklıkla Carmichael Totient Fonksiyonu (λ(n)) ile hesaplanır:

λ(n)=lcm(p1,q1)

λ(n) fonksiyonu, p1 ve q1 sayılarının en küçük ortak katını (EKOK) verir. Bu değer ϕ(n)'e eşit veya ondan daha küçük bir çalışma alanı sunduğu için, modüler tersi alındığında bilgisayarsal olarak daha küçük ve işleme hızı daha yüksek bir gizli anahtar (d) üretilmesini sağlar. Algoritmanın şifreleme, deşifreleme ve genel matematiksel mantığı bu değişiklikten etkilenmez.


🔒 Fonksiyonların Tanımı ve Doğruluk İspatı

Tanım: RSA Şifreleme ve Deşifreleme Fonksiyonları

Gönderici, iletmek istediği açık metni 0m<n şartını sağlayan bir mZn sayısına dönüştürür.

Şifreleme fonksiyonu epk, alıcının açık anahtarı pk=(a,n) ile şifreli metni (c) üretir:

cepk(m)ma(modn)

Alıcı, güvenli olmayan kanaldan gelen c metnini kendi deşifreleme fonksiyonu dsk ve gizli anahtarı sk=(d,n) ile çözer:

mdsk(c)cd(modn)

Teorem: RSA Algoritmasının Doğruluğu (Correctness of RSA)

Her mZn açık metni için, şifreleme ve ardından deşifreleme işlemleri uygulandığında orijinal mesaj hatasız bir şekilde elde edilir:

(ma)dmadm(modn)
İspat

Anahtar üretim adımından biliyoruz ki ad1(modϕ(n)) şartı geçerlidir. Modüler aritmetik tanımı gereği, bu eşitlik bize bir kZ tam sayısı için şu ifadeyi verir:

ad=kϕ(n)+1

Bu durumda deşifreleme fonksiyonunun çıktısını üslü sayılar kuralıyla açalım:

mad=mkϕ(n)+1=m(mϕ(n))k

Bu ifadenin mod n altındaki dengini ispatlamak için Çin Kalan Teoremi (Chinese Remainder Theorem) gereği ifadenin hem mod p hem de mod q altında m'ye denk olduğunu göstermemiz yeterlidir. İspatı mod p için yapalım (mod q için de tamamen simetriktir):

  • Durum 1: Eğer gcd(m,p)=1 ise, Fermat'nın Küçük Teoremi (Fermat's Little Theorem) uyarınca mp11(modp) olur. O halde ϕ(n)=(p1)(q1) eşitliğini yerine koyarsak:madm(m(p1)(q1))km((mp1)q1)km(1q1)km(modp)
  • Durum 2: Eğer gcd(m,p)1 ise, p bir asal sayı olduğundan m sayısı p'nin bir tam katı olmak zorundadır. Bu durumda m0(modp) olur. Sıfırın her pozitif kuvveti sıfır olacağından:mad0ad0m(modp)

Her iki durumda da madm(modp) olduğu gösterilmiş olur. Aynı adımlar mod q için de uygulandığında madm(modq) elde edilir. Aralarında asal iki asal sayıya ayrı ayrı bölünebilen bir ifade, bu sayıların çarpımına da tam bölünmek zorunda olduğundan:

madm(modpq)madm(modn)

Böylece deşifreleme fonksiyonunun şifreli metni her koşulda orijinal açık metne dönüştürdüğü matematiksel olarak kanıtlanmış olur.


📝 Çözümlü Uygulama

Örnek: Bir RSA kurgusunda başlangıç asalları p=7 ve q=11 olarak seçilmiştir. Açık üs değeri a=7 olduğuna göre anahtar çiftlerini hesaplayınız ve m=9 açık metnini şifreleyip ardından deşifre ediniz.

💡 Çözümü Göster / Gizle

1. Anahtar Üretimi:

  • Kamusal modül: n=pq=711=77

  • Totient değeri: ϕ(n)=(71)(111)=610=60

  • Seçilen a=7 değerinin ϕ(n)=60 ile aralarında asal olduğu doğrulanır (gcd(7,60)=1).

  • Gizli üs d hesabı (7d1(mod60)): Genişletilmiş Öklid aritmetiği veya ardışık katlar incelendiğinde; 743=301 bulunur. 301=(605)+11(mod60) olduğundan d=43 olarak belirlenir.

  • Açık Anahtar: pk=(7,77)

  • Gizli Anahtar: sk=(43,77)

2. Şifreleme Süreci: Gönderici m=9 mesajını alır ve şifreler:

cepk(m)ma(modn)c97(mod77)

Hesabı kolaylaştırmak için üssü parçalayalım:

919(mod77)92=814(mod77)9442=16(mod77)

O halde 97=949291 eşitliğinden:

c1649=576(mod77)

576 sayısının 77 ile bölümünden kalan (777=539):

576539=37c=37

3. Deşifreleme Süreci: Alıcı gelen c=37 şifreli metnini gizli anahtarı sk ile çözer:

mdsk(c)cd(modn)m3743(mod77)

Ardışık kare alma (Square-and-Multiply) yöntemi ile büyük üssü mod 77'de indirgeyelim:

37137(mod77)372=1369=(7717)+606017(mod77)374(17)2=289=(773)+585819(mod77)378(19)2=361=(774)+535324(mod77)3716(24)2=57637(mod77)373237260(mod77)

43 sayısının ikilik tabandaki açılımı 43=32+8+2+1 olduğundan:

3743=3732378372371374360536037(mod77)

Daha kolay sayılar için negatif denklikleri (6017) geri koyalım:

(17)53(17)37=2891961

Mod 77 karşılıkları: 2895819 ve 1961=(7725)+3636.

(19)36=684

684 sayısının pozitif dengini bulalım (779=693):

684+693=9

Sonuç: Deşifreleme işlemi tamamlanmış ve orijinal açık metin olan m=9 değerine başarıyla geri dönülmüştür.

Akademik amaçlarla tasarlanmış açık kaynaklı eğitim arşivi. Bu sitedeki tüm ders notları ve içerikler CC BY-NC-SA 4.0 Lisansı ile korunmaktadır.