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, 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.
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.
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.
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.
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.
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.
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();
}
}
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).
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 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.
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 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ğu | Simetrik Eşdeğer | Durum |
|---|---|---|
| 1024 bit | 80 bit | 2023'ten beri yasak |
| 2048 bit | 112 bit | Minimum standart |
| 3072 bit | 128 bit | Yeni sistemler için önerilir |
| 4096 bit | 256 bit | Gizli veriler için |
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 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.
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 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.
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'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.
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.
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.
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.
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.
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, 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.
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.
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.
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.
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
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.
Ayrıca okuyun