RSA

 

🔐 RSA Nedir ve Neden Güvenlidir?

RSA (Rivest-Shamir-Adleman), herkese açık anahtar kriptografisi (public-key cryptography) yöntemlerinden biridir.
Temel amacı, güvenli olmayan ortamlarda (örneğin internet) güvenli veri iletimini sağlamaktır.
RSA sayesinde, saldırganlar iletişimi dinliyor olsa bile, mesajı çözmeleri mümkün değildir.


⚙️ RSA’nın Dayandığı Matematiksel Temel

RSA, büyük sayıların çarpanlarına ayrılmasının zor olması prensibine dayanır.

  • İki büyük asal sayıyı çarpma işlemi kolaydır.

  • Ancak, bu çarpım sonucunda elde edilen çok büyük bir sayıyı tekrar çarpanlarına ayırmak (faktörlemek) çok zor ve hesaplaması çok pahalı bir işlemdir.

🔢 Örnek:

  • Asal sayı 1: 982451653031

  • Asal sayı 2: 169743212279

  • Çarpımları: 166764499494295486767649

Bu çarpma işlemini bilgisayarla yapmak kolaydır.
Ama 166764499494295486767649 sayısının çarpanlarını bulmak çok daha zordur.

Gerçek RSA uygulamalarında kullanılan asal sayılar genelde her biri 300 basamaklıdır.
Bu yüzden faktörleme işlemi günümüz bilgisayarlarıyla pratik olarak imkânsızdır.


🔑 RSA’da Anahtar Kullanımı

Asimetrik kriptografi mantığı burada da geçerlidir:

RolAçıklama
Herkese Açık Anahtar (Public Key)Herkesle paylaşılır, şifreleme için kullanılır
Özel Anahtar (Private Key)Sadece sahibinde bulunur, şifre çözme (decryption) için kullanılır

Örnek Senaryo:

  • Alice, Bob’a mesaj göndermek istiyor.

  • Bob’un herkese açık anahtarıyla mesajı şifreler.

  • Bu mesajı sadece Bob, özel anahtarıyla çözebilir.


➗ Modüler Aritmetik ve Sayısal RSA Örneği

Kriptografi temellerinde geçen mod işlemi burada hayati önem taşır.

Basit RSA Örneği:

  1. Bob iki asal sayı seçer: p = 157, q = 199

  2. n = p × q = 31243

  3. Euler fonksiyonu: ϕ(n) = n - p - q + 1 = 30888

  4. e = 163 seçilir → ϕ(n) ile aralarında asal.

  5. d = 379 bulunur → e × d mod ϕ(n) = 1

Böylece:

  • Public key: (n, e) = (31243, 163)

  • Private key: (n, d) = (31243, 379)

Şifreleme:

Mesaj: x = 13
Şifreli hali: y = x^e mod n = 13^163 mod 31243 = 16341

Çözme:

Şifre çözülürken: x = y^d mod n = 16341^379 mod 31243 = 13

Ve Alice’in gönderdiği orijinal değer geri elde edilir.

Not: Gerçek sistemlerde bu hesaplamalar çok daha büyük sayılarla yapılır.


🧩 RSA ve CTF’ler (Capture The Flag)

CTF yarışmalarında RSA’ya sıkça rastlanır.
Genellikle aşağıdaki değişkenler verilir:

DeğişkenAçıklama
p, qAsal sayılar
np × q
ePublic key’in parçası
dPrivate key’in parçası
mMesaj (plaintext)
cŞifreli mesaj (ciphertext)

Yarışmalarda genellikle c, n ve e verilir; geri kalanları hesaplayıp m'yi yani mesajı bulman beklenir.

🔧 Araçlar:

  • RsaCtfTool — Otomatik çözümler için çok başarılıdır.

  • rsatool — Anahtar üretimi ve çözümleme için kullanılır.


English Summary

RSA is a public-key encryption algorithm based on the difficulty of factoring large composite numbers. Multiplying two large primes is easy, but factoring their product is computationally hard.

Key Concepts:

  • Public key (n, e) is used to encrypt

  • Private key (n, d) is used to decrypt

  • Security comes from the fact that even if n is known, figuring out p and q is extremely hard.

RSA in Practice:

  1. Pick primes p, q; compute n = p × q

  2. Compute ϕ(n) and choose e such that gcd(e, ϕ(n)) = 1

  3. Find d such that (e × d) % ϕ(n) = 1

  4. Encrypt with: c = m^e mod n

  5. Decrypt with: m = c^d mod n

CTF Tips:

Learn to work with:

  • n, e, d, p, q, m, c
    Use tools like RsaCtfTool to break weak or misconfigured RSA setups.