RSA: nedir, algoritma ve şifreleme uygulaması

Yazar: IT Sectr Yayınlanma: 2026-04-02 Okuma süresi: 9 dk

RSA, büyük sayıların çarpanlarına ayrılmasının hesaplama karmaşıklığına dayalı olarak şifreleme ve dijital imzalar sağlayan bir açık anahtarlı kriptosistemdir. NIST Special Publication 800-56B Rev. 2 (2023)'ye göre, 2048 bit anahtar uzunluğuna sahip RSA, devlet ve ticari sistemler için güvenlik standardı olmaya devam etmektedir. Algoritma, TLS protokollerinde, dijital imzalarda ve mobil uygulamalarda veri şifrelemede yaygın olarak kullanılmaktadır.

Ana Noktalar

  • RSA, bir çift anahtar kullanan asimetrik bir şifreleme algoritmasıdır: açık ve özel.
  • Güvenlik, büyük bir sayıyı asal çarpanlarına ayırmanın matematiksel zorluğuna dayanır.
  • 2048 bit anahtar boyutu, NIST'e göre 2023'ten bu yana minimum güvenilir standart olarak kabul edilmektedir.
  • RSA, TLS sertifikalarında, dijital imzalarda ve kimlik doğrulama protokollerinde kullanılır.
  • Mobil geliştirme, yerleşik kripto kütüphaneleri (Android Keystore ve iOS Security Framework) aracılığıyla RSA'yı kullanır.

RSA Nedir?

RSA, 1977 yılında Ron Rivest, Adi Shamir ve Leonard Adleman tarafından geliştirilen açık anahtarlı bir kriptografik algoritmadır. İsim, yazarların soyadlarının ilk harflerinden oluşmaktadır. Algoritma, şifreleme ve şifre çözme anahtarlarının farklı olduğu ilk pratik olarak uygulanabilir asimetrik kriptosistem haline gelmiştir.

Yaratılış Tarihi

RSA algoritması 1977 yılında Scientific American dergisinde yayımlanmış ve Whitfield Diffie ile Martin Hellman'ın açık anahtarlı kriptografi üzerindeki önceki çalışmalarına dayanmaktadır. Massachusetts Teknoloji Enstitüsü, 1983 yılında RSA için 2000 yılına kadar süren bir patent almıştır. RSA Laboratories raporuna (2023) göre, algoritma dünyadaki en yaygın kriptografik standartlardan biri olmaya devam etmektedir — her gün milyarlarca cihazda kullanılmaktadır.

Asimetri Prensibi

Hem şifreleme hem de şifre çözme için aynı anahtarın kullanıldığı simetrik şifrelerin aksine, RSA matematiksel olarak bağlı bir anahtar çifti ile çalışır. Açık anahtar, sistemi tehlikeye atma riski olmadan herkes için yayınlanabilir. Özel anahtar yalnızca sahibi tarafından bilinir ve asla ağ üzerinden iletilmez. IBM Security X-Force Threat Intelligence Index (2024) çalışmasına göre, modern güvenli veri iletim protokollerinin %96'sında asimetrik şifreleme kullanılmaktadır.

Matematiksel Temeller

RSA'nın güvenliği, iki büyük asal sayının çarpımını çarpanlarına ayırma problemine dayanır. Her biri 1024 bit olan p ve q asal sayılarını seçerseniz, bunların çarpımı n 2048 bit olacaktır. Modern yöntemlerle yalnızca n'yi bilerek p ve q'yu hesaplamak pratik olarak imkansızdır: CNRS uzman değerlendirmesine (2024) göre, RSA-2048'i kırmak için klasik bir bilgisayarda 300 milyar yıldan fazla hesaplama gerekir.

RSA Algoritması Nasıl Çalışır

Anahtar üretiminden mesaj şifreleme ve şifre çözmeye kadar RSA'nın tam çalışma döngüsünü inceleyelim. Bu aşamaları anlamak, algoritmanın mobil uygulamalarda doğru şekilde uygulanması için gereklidir.

Anahtar Üretimi

Süreç, iki büyük asal sayının p ve q seçilmesiyle başlar. Anahtar uzunluğunu belirleyen n = p x q modülü hesaplanır. Ardından Euler'in totient fonksiyonu phi(n) = (p-1)(q-1) hesaplanır. phi(n) ile aralarında asal olan bir açık üs e seçilir. Özel üs d, e'nin modüler çarpımsal tersi olarak hesaplanır. NIST SP 800-56B Rev. 2'ye göre, yeterli korumayı sağlamak için n'nin minimum uzunluğu 2048 bit olmalıdır.

java
import java.security.KeyPairGenerator;
import java.security.KeyPair;
import java.security.SecureRandom;

public class RSAKeyGenerator {
    public static KeyPair generateKeyPair() throws Exception {
        KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
        generator.initialize(2048, new SecureRandom());
        return generator.generateKeyPair();
    }
}

Şifreleme ve Şifre Çözme

Bir mesajı m şifrelemek için, gönderen onu n'den küçük bir tam sayıya dönüştürür ve şifreli metin c = m^e mod n'yi hesaplar. Alıcı, orijinal mesajı kurtarmak için özel anahtar d'yi kullanır: m = c^d mod n. RSA'nın düşük performans nedeniyle büyük miktarda veriyi şifrelemek için tasarlanmadığını belirtmek önemlidir — maksimum mesaj boyutu, anahtar uzunluğundan ek yük baytlarının çıkarılmasına eşittir (OAEP ile RSA-2048 için yaklaşık 190 bayt).

java
import javax.crypto.Cipher;
import java.security.PublicKey;
import java.util.Base64;

public class RSAEncryptor {
    public static String encrypt(String data, PublicKey publicKey) throws Exception {
        Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding");
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        byte[] encrypted = cipher.doFinal(data.getBytes());
        return Base64.getEncoder().encodeToString(encrypted);
    }
}

RSA ile Dijital İmza

RSA ayrıca dijital imzalar oluşturmak için de kullanılır — verilerin gerçekliğini ve bütünlüğünü doğrulamak için bir mekanizma. Sahibi, mesaj hash'ini özel anahtarıyla imzalar ve herkes açık anahtarı kullanarak imzayı doğrulayabilir. Sectigo Certificate Transparency raporuna (2025) göre, internetteki TLS sertifikalarının %85'inden fazlası dijital imzalar için RSA kullanmakta ve bu da algoritmayı web iletişimi için güvenin temeli haline getirmektedir.

kotlin
import java.security.Signature

fun signData(data: ByteArray, privateKey: java.security.PrivateKey): ByteArray {
    val signature = Signature.getInstance("SHA256withRSA")
    signature.initSign(privateKey)
    signature.update(data)
    return signature.sign()
}

fun verifySignature(
    data: ByteArray, signedData: ByteArray, publicKey: java.security.PublicKey
): Boolean {
    val signature = Signature.getInstance("SHA256withRSA")
    signature.initVerify(publicKey)
    signature.update(data)
    return signature.verify(signedData)
}

Anahtar Boyutları ve Güvenlik Seviyesi

Anahtar uzunluğu, RSA'nın kriptografik gücünü doğrudan etkiler. Hesaplama gücü arttıkça, minimum kabul edilebilir anahtar boyutu uluslararası standardizasyon kuruluşları tarafından düzenli olarak gözden geçirilir. NIST ve diğer düzenleyicilerin mevcut önerilerini inceleyelim.

Anahtar UzunluğuSimetrik EşdeğerDurum
1024 bit80 bit2023'ten beri yasak
2048 bit112 bitMinimum standart
3072 bit128 bitYeni sistemler için önerilir
4096 bit256 bitGizli veriler için

Performans Üzerindeki Etkisi

RSA anahtar uzunluğunu artırmak, işlemlerin yürütme süresini önemli ölçüde etkiler. 4096 bitlik bir anahtar oluşturmak, 2048 bitlik bir anahtara göre yaklaşık 10 kat daha fazla zaman alır. Daha uzun bir anahtarla şifreleme ve şifre çözme işlemleri daha fazla hesaplama kaynağı gerektirir ve bu da sınırlı güç tüketimine sahip mobil cihazlar için kritiktir.

Kuantum Tehdidi

Kuantum hesaplamanın gelişmesiyle, RSA Shor'un algoritması kullanılarak polinom zamanında kırılabilir. 1994 yılında Peter Shor tarafından önerilen bu algoritma, büyük sayıları O((log n)^3) işlemde çarpanlarına ayırabilir. IBM Quantum Roadmap (2025)'e göre, RSA-2048'in pratik olarak kırılmasının 2035'ten önce beklenmemesiyle birlikte, NIST zaten kuantum sonrası algoritmalar CRYSTALS-Kyber ve CRYSTALS-Dilithium'a kademeli geçişi önermektedir.

Mobil Geliştirmede RSA Uygulaması

RSA, güvenli veri iletimi, sunucu kimlik doğrulaması ve dijital işlem koruması sağlamak için mobil uygulamalarda aktif olarak kullanılmaktadır. Entegrasyon, her iki ana platformun standart şifreleme API'leri aracılığıyla gerçekleştirilir.

Android Keystore

Android platformu, Trusted Execution Environment donanım seviyesi tarafından korunan bir sistem şifreleme anahtarı deposu olan Android Keystore'u sağlar. KeyStore'da oluşturulan RSA anahtarları, uygulama tehlikeye girse bile cihazdan çıkarılamaz. Bu, kök erişimli kötü amaçlı yazılımlar da dahil olmak üzere çok çeşitli saldırılara karşı koruma sağlar.

kotlin
import android.security.keystore.KeyGenParameterSpec
import android.security.keystore.KeyProperties
import java.security.KeyPairGenerator

fun generateKeyInAndroidKeystore() {
    val generator = KeyPairGenerator.getInstance(
        KeyProperties.KEY_ALGORITHM_RSA,
        "AndroidKeyStore"
    )
    val spec = KeyGenParameterSpec.Builder(
        "rsa_key_pair",
        KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT
    )
        .setKeySize(2048)
        .setBlockModes(KeyProperties.BLOCK_MODE_ECB)
        .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_OAEP)
        .build()
    generator.initialize(spec)
    val keyPair = generator.generateKeyPair()
}

iOS Security Framework

iOS'ta RSA, A7 çipli ve daha yeni cihazlarda Secure Enclave'e erişimi olan Security Framework aracılığıyla yönetilir. Secure Enclave, ana işlemciden izole edilmiş, şifreleme işlemlerini gerçekleştiren ve anahtarları bir donanım kasasında saklayan özel bir yardımcı işlemcidir. RSA anahtarları, Secure Enclave içinde ve yazılım Keychain'inde çeşitli erişim seviyeleriyle oluşturulabilir.

Pratikte Hibrit Şifreleme

Gerçek mobil uygulamalarda, RSA büyük verilerin doğrudan şifrelenmesi için nadiren kullanılır. Standart uygulama hibrit bir şemadır: uygulama bir AES oturum anahtarı oluşturur, bunu sunucunun RSA açık anahtarıyla şifreler ve sunucuya gönderir. Sonraki tüm trafik, RSA üzerinden doğrudan veri iletiminden 100-1000 kat daha hızlı olan AES ile şifrelenir.

RSA'nın Avantajları ve Sınırlamaları

Her şifreleme algoritması gibi, RSA'nın da güvenli sistemler tasarlarken dikkate alınması gereken güçlü ve zayıf yönleri vardır. Objektif bir değerlendirme, belirli bir görev için doğru aracı seçmeye yardımcı olur.

Başlıca Avantajlar

RSA'nın ana avantajı, temel anahtar dağıtım sorununu çözmesidir — açık anahtar, tüm sistemi tehlikeye atma riski olmadan özgürce yayınlanabilir. Algoritmanın çok yönlülüğü, tek bir anahtar çiftiyle hem şifrelemeyi hem de dijital imzaları desteklemesinde görülür. Ayrıca, RSA geniş bir destek ekosistemine sahiptir: kütüphaneler tüm diller ve platformlar için mevcuttur.

Başlıca Sınırlamalar

RSA'nın ana dezavantajı, simetrik algoritmalara kıyasla düşük performanstır. Modern bir mobil işlemcide RSA-2048'in şifresini çözmek yaklaşık 5-15 milisaniye sürerken, AES-256 aynı sürede gigabaytlarca veriyi işler. Ayrıca, RSA Shor'un algoritması aracılığıyla kuantum saldırılarına karşı savunmasızdır ve bu da uzun vadeli veri koruması gerektiren sistemlerde kullanımını sınırlar.

Kullanım Önerileri

Mobil projeler için NIST uzmanları şunları önermektedir: RSA'yı yalnızca anahtar şifreleme ve dijital imzalar için kullanın, yeni projeler için en az 3072 bit anahtar uzunluğu seçin, RSA'yı AES ile hibrit bir şemada birleştirin ve uzun vadeli planlı geçiş için kuantum sonrası standartların gelişimini izleyin.

Sıkça Sorulan Sorular

RSA ve AES arasındaki fark nedir?

RSA, küçük miktarlarda veriyi ve dijital imzaları şifrelemek için kullanılan bir anahtar çiftine sahip asimetrik bir algoritmadır. AES, tek bir paylaşımlı anahtara sahip, RSA'dan 100-1000 kat daha hızlı çalışan simetrik bir algoritmadır. Modern sistemlerde birleştirilirler: RSA, AES oturum anahtarının iletimini korurken, AES ana trafiği şifreler.

Bugün hangi RSA anahtar boyutu güvenli kabul ediliyor?

2023'ten bu yana minimum güvenli boyut, NIST SP 800-131A Rev. 2'ye göre RSA-2048'dir. 1024 bit anahtarlar, ABD devlet sistemleri için resmi olarak yasaklanmıştır. Yeni projeler için 3072 bit önerilir; bu, bir güvenlik marjı ve 128 bit simetrik şifrelemeye eşdeğer güç sağlar.

RSA mobil uygulamalarda kullanılabilir mi?

Evet, RSA mobil uygulamalarda yaygın olarak kullanılmaktadır. Android, RSA anahtarlarının donanım üretimi ve güvenli depolanması için Android KeyStore sağlar. iOS, Secure Enclave desteğiyle Security Framework sağlar. Büyük veri şifrelemesi için, RSA'nın yalnızca oturum anahtarını şifrelediği hibrit bir RSA + AES şeması önerilir.

RSA-2048 kırılabilir mi?

Klasik bilgisayarlarda, RSA-2048'i kırmak pratik olarak imkansızdır — mevcut tahminlere göre, 300 milyar yıldan fazla sürekli hesaplama gerektirir. Ancak, yeterli kübite sahip bir kuantum bilgisayarı, Shor'un algoritmasını kullanarak RSA-2048'i dakikalar içinde kırabilir. IBM tahminlerine göre, böyle bir bilgisayar 2035'ten önce ortaya çıkmayacaktır.

RSA'nın alternatifleri nelerdir?

Asimetrik algoritmalar arasında, daha kısa anahtar uzunluğuyla eşdeğer güvenlik sağlayan ECC (Eliptik Eğri Kriptografisi) popülerdir — 256 bit ECC, RSA-3072'ye eşdeğerdir. Kuantum sonrası dönem için NIST, 2024 yılında şifreleme için CRYSTALS-Kyber ve dijital imzalar için CRYSTALS-Dilithium'u seçmiştir.

Özet

  • RSA, büyük sayıları çarpanlarına ayırmanın zorluğuna dayanan asimetrik bir şifreleme algoritmasıdır.
  • Anahtar çifti — şifreleme için açık ve şifre çözme için özel, anahtar dağıtım sorununu çözer.
  • 2048 bit boyutu 2023'ten bu yana minimum güvenlik standardıdır.
  • Performans simetrik şifrelerden 2-3 kat daha düşüktür, bu nedenle hibrit şemalarda kullanılır.
  • Dijital imzalar RSA kullanılarak internet TLS sertifikalarının %85'inde kullanılır.
  • Mobil platformlar Android ve iOS, RSA ile çalışmak için yerleşik API'ler sağlar.
  • Kuantum sonrası geçiş — 2035'e kadar RSA ana standart olarak kalacak, ardından yeni algoritmalara geçiş başlayacaktır.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun