it-swarm-tr.com

Güvenlik nedeniyle RSA kamu üssü sadece {3, 5, 17, 257 veya 65537} içinde olmalı mı?

Projemde 4451h genel üs değerini kullanıyorum. Bir ticari RSA şifreleme kütüphanesi kullanmaya başlayana kadar güvenli ve iyi olduğunu düşündüm. Bu üssü bu kütüphane ile kullanırsam istisna atar.

Bu kitaplığın geliştiricileriyle iletişim kurdum ve şu yanıtı aldım: "Bu özellik RSA anahtarlarına yapılan bazı saldırıları önlemek içindir. Sonuç, üs değerinin {3, 5, 17, 257 veya 65537} ile sınırlandırılmasıdır. riskler büyük olabileceğinden hala araştırılıyor. "

Hayatımda ilk kez {3, 5, 17, 257 veya 65537} dışındaki değerlerin RSA'yı kırmak için kullanıldığını duydum. Sadece 3'ün uygun olmayan dolgulara karşı savunmasız olduğunu biliyordum.

Gerçekten öyle mi? Elbette, başka bir kütüphane kullanabilirim, ancak böyle bir cevaptan sonra çözümümün güvenliği konusunda endişelendim.

70

Kamu üssü "doğru" olduğu sürece RSA için herhangi bir kısa veya uzun kamu üssü için bilinen bir zayıflık yoktur (yani, tüm asal sayılar için p-1 başlangıç ​​ p hangi modülü bölüyor).

Eğer küçük bir üs kullanıyorsanız ve şifreleme için herhangi bir dolgu kullanmıyorsunuz ve ile aynı mesajı şifreliyorsunuz birkaç farklı ortak anahtar varsa, mesajınız risk altındadır: if e = 3 ve = m açık anahtarları ile şifrelerseniz n1, n2 ve n3, o zaman cben = m3 mod nben için i = 1 - 3. Çin Kalan Teoremi ile, daha sonra yeniden oluşturabilirsiniz m3 mod n1n2n3, = m3 (herhangi bir modulo olmadan) çünkü n1n2n3 daha büyük bir tam sayıdır. (Modüler olmayan) bir küp kök ekstraksiyonu m ekstrakt etmek için yeterlidir.

Buradaki zayıflık, küçük üs değildir ; daha ziyade, şifreleme için uygun olmayan bir dolgu (yani, dolgu yok) kullanılmasıdır. Dolgu, şifreleme veya imza olsun, RSA'nın güvenliği için çok önemlidir; uygun bir dolgu kullanmazsanız ( PKCS # 1 ) bölümünde açıklananlar gibi, birçok zayıflığınız vardır ve yukarıdaki paragrafta ana hatları verilen en büyük değer değildir. Bununla birlikte, bir kişi üs boyutu ile ilgili bir zayıflığa başvurduğunda, aşağı yukarı doğrudan bu olayı ifade eder. Bu biraz eski ve yanlış irfan, bazen büyük üslere karşı bir yasağa dönüştürülür (bir efsane olduğu için, ters efsane de bir efsanedir ve artık yoktur - ve hayır daha az kanıtlanmış); Burada gözlemlediğiniz şey olduğuna inanıyorum.

Ancak, büyük bir kamu temsilcisinden kaçınılmasının birkaç nedeni bulunabilir:

  • Küçük kamu üsleri verimliliği arttırır (genel anahtar işlemleri için).

  • Küçük bir private üssüne sahip olmakla ilgili güvenlik sorunları vardır; özel üs uzunluğu kamu üssü uzunluğunun% 29'undan fazla olmadığında bir anahtar kurtarma saldırısı tanımlanmıştır. Özel üssü kısa olmaya zorlamak istediğinizde (ör. Özel anahtar işlemlerini hızlandırmak için), az çok büyük bir genel üs (modül kadar büyük) kullanmanız gerekir; kamu üssünün kısa olmasını gerektiren bir tür dolaylı önlem olarak görülebilir.

  • Yaygın olarak konuşlandırılan bazı RSA uygulamaları, büyük RSA halka açık üsleri üzerinde boğuluyor. Örneğin. Windows'taki RSA kodu (HTTPS için Internet Explorer tarafından kullanılan CryptoAPI), ortak üsün tek bir 32 bit Word içinde kodlanmasında ısrar eder; daha büyük bir genel üs olan bir ortak anahtarı işleyemez.

Yine de, "riskler büyük olabilir" genel bir gerekçe gibi görünür ("bu bir güvenlik meselesidir", "onu uygulamadık, ancak herhangi bir tembelliği kabul etmek istemiyoruz" demenin genel yoludur).

64
Thomas Pornin

Geliştiriciler yanlış. 0x4451 üssünde yanlış bir şey yok (ondalık 17489); herhangi bir güvenlik sorunu yaratmaz.

Uzun zaman önce insanlar, Thomas Pornin'in aynı mesajı birden fazla alıcıya göndermesiyle açıkladığı bir saldırı nedeniyle küçük üslerin bir sorun olduğunu düşünürlerdi. Ancak bugün, üslerin onunla hiçbir ilgisi olmadığını biliyoruz; sorun yanlış dolgu oldu. Bu saldırılar dolgu malzemesinin uygun kullanımı ile önlenir. Onun tuz değerinde herhangi bir kripto kütüphanesi daha iyi lanet iyi uygun dolgu kullanmak (aksi takdirde çok daha kötü sorunlarınız var).

Bu nedenle, bir kripto kütüphanesinin bu üssün kullanımını açıkça yasaklaması için iyi bir neden yoktur.

Bununla birlikte, bir performans perspektifinden, üs ne kadar küçük olursa, performans o kadar iyi olur. En iyi seçim e = 3'tür, çünkü bu en iyi performansı verir ve bilinen bir güvenlik sorunu yoktur. (Aslında, e = 2 biraz daha iyidir. Rabin şifrelemesi olarak da bilinir. Ancak, bu şema o kadar iyi bilinmemektedir ve biraz farklı kod gerektirir, bu yüzden yaygın olarak kullanılmaz.)

21
D.W.

Bu beş sayı Fermat asalları .

2 şeklindeyken k  + 1, şifreleme m E  = m · ((( m 2)2... k kez...)2genel durum 'da benzer büyüklükte bir üs ile üs alma işleminden daha basit ve daha hızlıdır.

Asal olduklarından, e 'nın ( p - 1) ( q - 1) sadece e bölmez.

Dolayısıyla bu hız veya konvansiyonla ilgili olduğundan, güvenlikten daha olasıdır. Verimli olmakla ilgili yanlış bir şey olmadığı için değil. Ama emin olmak için diğer cevap önerilen bir referans isteyin.

Ayrıca bakınız bu gönderi .

19
aaz

Bir RSA anahtarının genel üssünün sadece {3,5,17,257,65537} kümesinde olması gerektiğinin hiçbir nedeninin farkında değilim. Bahsettiğiniz gibi, 3 veya 5 gibi küçük üslerin kullanımı daha risklidir, çünkü uygulama hatalarının (yanlış dolgu gibi) olumsuz etkileri daha büyük olabilir. NIST yalnızca 2 ^ 16'dan daha büyük halka açık üslere izin verir, ancak kararlarının bir nedenini bilmiyorum.

Kullandığınız kütüphanenin geliştiricileri tarafından verilen cevaptan memnun kalmamalı ve somut bir referans istemelisiniz. Çok sık, bazı kağıtların yanlış anlaşıldığı ortaya çıkıyor. Örneğin, bazı geliştiricilerin Phong Nguyen tarafından "[Şifreleme Yazılımına Güvenebilir miyiz? Şifreleme Kusurları GNU Privacy Guard v1.2.3" belgesinin 4. bölümünü okuduğunu ve biri yukarıda. Bu makale GnuPG tarafından üretilen ortak anahtar 65539 gibi olağandışı bir değer olduğunda, saldırganın gizli anahtar hakkında biraz bilgi öğrendiğini fark eder. Sonuç, GnuPG'lerin anahtar oluşturma algoritmasının geliştirilebileceği, ancak 65539'un kötü bir ortak anahtar olmadığı anlamına geliyor.

8
Accipitridae

Genel üs için diğer değerlerin savunmasız olduğuna dair herhangi bir referans bulamadım. Performansa bağlı olarak, 2A gücüne yakın bir ortak üs kullanmak zor olabilir, RSA algoritması RSA.com kılavuzuna göre

Wikipedia'ya göre NIST, 65537'den küçük bir genel üse izin vermez, çünkü daha küçük üsler düzgün bir şekilde doldurulmamışlarsa bir problemdir.

7
Andreas Arnold