pprime×qprime=n = pq2048 bitseasy forward, hard reversefactoring n breaks RSA

RSA Şifreleme

11 dk okumaKriptografi

RSA, iki kişinin şahsen tanışmadan sır alışverişinde bulunmasına olanak tanıyan ilk pratik açık anahtar algoritmasıydı. Kırk sekiz yıl sonra hala TLS anlaşmalarının önemli bir kısmını güvence altına alıyor, her PGP mesajını imzalıyor ve birçok kod imzalama planının temelini oluşturuyor. Yavaş yavaş yerini eliptik eğriler alıyor, ancak yok olmuyor.

Makalenin tam metni aşağıda İngilizce olarak verilmektedir.

RSA, 1977'de MIT'den Ron Rivest, Adi Shamir ve Leonard Adleman tarafından tanıtılan bir açık anahtar şifreleme sistemidir. Patentin süresi 2000 yılında sona erdi ve ardından neredeyse tüm kriptografik kütüphanelere yayıldı. RSA iki tamamlayıcı işlemi mümkün kılar: yalnızca özel anahtarın şifresini çözebilmesi için genel anahtarla şifreleme ve genel anahtara sahip herkesin doğrulayabilmesi için özel bir anahtarla imzalama.

Kısaca

RSA'nın matematiği, büyük sayıları çarpanlara ayırmanın zorluğuna dayanır. Anahtar oluşturma:

  1. p ve q (tipik olarak her biri 2048 bit) iki büyük rastgele asal sayı seçin.
  2. n = p × q'i hesaplayın. Bu, public modüldür.
  3. Euler'in totient'ini hesaplayın: φ(n) = (p-1)(q-1).
  4. e φ(n)'ye eş asal bir küçük sayı seçin. Genellikle 65537 (=2^16+1).
  5. Hesapla d = e^(-1) mod φ(n). Bu özel anahtardır.

Genel anahtar (n, e) çiftidir; özel anahtar: d.

Bir mesajı m şifrelemek için: şifreli metin c = m^e mod n. Şifreyi çözmek için: m = c^d mod n. Ortak anahtara sahip olan herkes şifreleme yapabilir; yalnızca özel anahtara sahip olan biri şifreyi çözebilir. İmzalamak için tam tersi: s = m^d mod n, m = s^e mod n ile doğrulayın.

Bu neden işe yarıyor

İşin püf noktası: d'i hesaplamak, çarpanlara ayırmayı gerektiren φ(n)'yi bilmeyi gerektirir. n'i p × q'e dönüştürün. 2048 bitlik bir yarı-asal sayıyı çarpanlara ayırmak, insanlığın sahip olduğundan daha fazla bilgi işlem gerektirir. p ve q'i zaten bildiğiniz halde n = p × q'i doğrulamak önemsizdir. Asimetri (kolay çarpma, zor çarpanlara ayırma) RSA.

Anahtar boyutları

  • RSA-1024'in tüm temelini oluşturur; prensipte iyi kaynaklara sahip rakipler tarafından bozulur; NIST, 2014'ten bu yana yeni dağıtımlar için yasakladı.
  • RSA-2048 - mevcut temel. Klasik rakiplere karşı orta vadede güvenli kabul edilir.
  • RSA-3072 — NIST'in 2030 geçiş zaman çizelgesine göre yeni dağıtımlar için önerilir.
  • RSA-4096 — anahtarın 10-20 yıllık bir ufka sahip olduğu kod imzalama için yaygındır. Daha yavaş ama muhafazakar bir şekilde güvenli.

RSA pratikte

RSA büyük mesajları neredeyse hiçbir zaman doğrudan şifrelemez. Yavaştır; bir kilobaytı şifrelemek için binlerce modüler üstel sayı gerekir. Bunun yerine, hibrit şifreleme'te RSA kullanılır: rastgele bir AES anahtarı oluşturun, verileri AES ile şifreleyin, yalnızca AES anahtarını RSA ile şifreleyin. Şifre çözme tarafı RSA anahtarın şifresini çözer, ardından AES verilerin şifresini çözer. Her TLS RSA anlaşması bu şekilde çalışır; PGP ile şifrelenmiş her e-posta bu şekilde çalışır.

Doldurma önemlidir

Plain ("ders kitabı") RSA — m'yi doldurma olmadan doğrudan şifrelemek — son derece güvensizdir. Çoğu saldırı şekillendirilebilirlikten, rastgeleliğin yokluğundan ve küçük m gibi uç durumlardan yararlanır. Gerçek RSA dolgu şemalarını kullanır:

  • PKCS#1 v1.5 dolgu — orijinal dolgu; Uygulamaların dolgunun geçerli olup olmadığını sızdırması durumunda Bleichenbacher saldırısına karşı savunmasızdır. Halen yaygın olarak kullanılmaktadır.
  • OAEP (Optimal Asimetrik Şifreleme Dolgusu) — modern dolgulama; seçilmiş şifreli metin saldırılarına karşı dayanıklıdır. Yeni RSA şifrelemesi için bunu kullanın.
  • PSS (Olasılıksal İmza Düzeni) — modern imza dolgusu; İmzalama açısından PKCS#1 v1.5'ten üstündür.

Dolgu şeması, isteğe bağlı değil, dağıtılan protokolün bir parçasıdır. Doldurma uygulamasındaki hatalar, gerçek sistemlerdeki RSA güvenlik açıklarının en yaygın tek kaynağıdır.

RSA'nın yavaş kullanımdan kaldırılması

RSA iki nedenden dolayı değiştiriliyor:

  • Anahtar boyutu. RSA-3072 anahtarları eşdeğerden daha büyük 10× eliptik eğri tuşları. TLS anlaşması ve depolama maliyetleri geniş ölçekte artıyor.
  • Kuantum direnci. Yeterince büyük bir kuantum bilgisayar, polinom zamanında Shor'un algoritması aracılığıyla RSA'yı hesaba katacaktır. ECC de savunmasızdır ancak kuantum dirençli alternatiflerin dağıtımı daha kolaydır.

TLS 1.3, ECDHE lehine RSA anahtar değişimini kullanımdan kaldırdı. Modern sertifika yetkilisi imzalama özelliği ECDSA'ya taşınıyor. RSA, kurulu sistem uyumluluğu (PGP, JWT, akıllı kartlar, kod imzalama) açısından varlığını sürdürüyor ve yıllarca kalacak.

Kuantum sonrası soru

RSA'yı kırabilecek kuantum bilgisayarlara onlarca yıl uzakta olsa bile, uzun vadeli değere sahip şifrelenmiş veriler, daha sonra şifresinin çözülebileceği varsayımıyla bugün toplanıyor. Devlet yazışmaları, tıbbi kayıtlar, fikri mülkiyet — "şimdi topla, sonra şifresini çöz" mevcut tehdit modelidir. NIST'in kuantum sonrası standartları (anahtar kapsülleme için CRYSTALS-Kyber, imzalar için CRYSTALS-Dilithium) hibrit yapılandırmalarda RSA ile birlikte kullanılıyor. Uzun vadeli gizli veriler için saf RSA dağıtımlarının giderek yetersiz olduğu düşünülüyor.

Sık sorulan sorular

RSA 2026'da hâlâ güvende mi?
Klasik rakiplere karşı RSA-2048 ve daha büyükleri güvende kalıyor. Şifrenin bilinen bir pratik kırılması yoktur. Gelecekteki kuantum rakiplerine karşı, RSA, yeterince büyük kuantum donanımı mevcut olduğunda (muhtemelen 5-20 yıl sonra) polinom zamanında kırılabilir. Uzun vadeli gizli veriler şimdiden hibrit kuantum sonrası planlara taşınıyor olmalı.
RSA neden AES'e kıyasla bu kadar yavaş?
RSA, büyük modüler üstelleştirmeye dayalı bir genel anahtar (asimetrik) algoritmasıdır; AES, donanım hızlandırmalı 128 bitlik bloklar üzerinde çalışan simetrik bir algoritmadır. AES bayt başına kabaca 1000 kat daha hızlıdır. Bu nedenle neredeyse tüm gerçek sistemler RSA'yı yalnızca oturum anahtarını değiştirmek için kullanır ve ardından toplu verileri AES ile şifreler.
RSA şifrelemesi ile RSA imzaları arasındaki fark nedir?
Aynı matematiği zıt yönlerde kullanırlar. Şifreleme: Genel anahtarla şifreleyin, özel anahtarla şifreyi çözün. İmza: Özel anahtarla "şifreleyin" (imzalama denir), genel anahtarla "şifreyi çözün" (doğrulama denir). Kriptografik temel öğeler ayrıntılar (doldurma) açısından farklılık gösterir ve her ikisi için de asla aynı anahtarı kullanmamalısınız; ayrı imzalama ve şifreleme anahtarları standarttır.
Neden 65537 RSA genel üssü olarak kullanılıyor?
Bu, şifreleme/doğrulamayı hızlı hale getirecek kadar küçük (yalnızca 17 çarpma) ve verimli hesaplamaya izin veren seyrek ikili gösterime sahip bir Fermat asalıdır (2^16 + 1). Daha büyük veya daha küçük değerler işe yarar ancak daha yavaştır veya hafif güvenlik açığı riskleri taşır. 65537, sözleşmeyle evrensel hale geldi.
Kendi RSA anahtarımı güvenli bir şekilde oluşturabilir miyim?
İyi test edilmiş bir kütüphane (OpenSSL, libsodium, GnuPG) ve bir CSPRNG kullanın. Hiçbir zaman kendi asallık testinizi gerçekleştirmeyin veya RSA'yı sıfırdan uygulamayın; hata modları incelikli ve yıkıcıdır. <code>ssh-keygen -t rsa -b 3072</code> veya eşdeğeri yoluyla bir anahtar oluşturmak iyidir; Matematiği kendiniz yazmak değildir.
RSA Şifrelemesinin Açıklaması: Açık Anahtar Şifrelemesini Pratik Hale Getiren Algoritma