Görünüşe göre ikisi de genel ve özel anahtarlar gerektiren şifreleme algoritmalarıdır. İstemci sunucu uygulamamda şifreleme sağlamak için neden birini diğerine seçeyim?
Görünüşe göre ikisi de genel ve özel anahtarlar gerektiren şifreleme algoritmalarıdır. İstemci sunucu uygulamamda şifreleme sağlamak için neden birini diğerine seçeyim?
Yanıtlar:
RSA
RSA şifreleme ve şifre çözme değişmeli
olduğundan
,
bir M mesajını imzalamak için bir RSA şeması {(e, R), (d, p, q)} verilen bir dijital imza şeması olarak doğrudan kullanılabilir , hesaplayın:
S = M güç d (mod R)
bir imzayı doğrulamak için, hesaplayın:
M = S power e (mod R) = M power ed (mod R) = M (mod R)
RSA, hem şifreleme hem de dijital imzalar için,
basitçe üslerin kullanıldığı sırayı tersine çevirerek kullanılabilir: imzayı oluşturmak için gizli üs (d), herkesin imzayı doğrulaması için ortak üs (e). Diğer her şey aynıdır.
DSA (Dijital İmza Algoritması)
DSA, ElGamal ve Schnorr algoritmalarının bir varyantıdır, ancak 512-1024 bit güvenlik ile güvenlik, ayrık logaritmaları hesaplamanın zorluğuna dayanır
DSA Anahtar Üretimi,
ilk olarak genel olarak paylaşılır anahtar değerleri (p, q, g) seçilir:
büyük bir asal p = 2 güç L seçin,
burada L = 512 ila 1024 bit ve 64'ün katıdır
q seçin, p-1'in 160 bitlik asal çarpanı
g = h'yi seçin
Herhangi bir h1 için power (p-1) / q ,
sonra her kullanıcı bir özel anahtar seçer ve kendi genel anahtarını hesaplar:
x hesaplama y = g güç x (mod p) seçin
DSA anahtar oluşturma, El Gamal ile ilgilidir, ancak biraz daha karmaşıktır. Çoğunlukla, hesaplamaları hızlandırmaya ve ortaya çıkan imzanın boyutunu azaltmaya yardımcı olmak için kullanılan ikincil 160 bitlik modül q'nun kullanılması nedeniyle.
Bir mesajı imzalamak için DSA İmza Oluşturma ve Doğrulama M
rastgele imza anahtarı oluşturur k, k hesaplama
r = (g güç k (mod p)) (mod q)
s = k-1. SHHA (M) + xr (mod q)
gönder imza (r, s)
bir imzayı doğrulamak için mesajla , hesaplayın:
w = s-1 (mod q)
u1 = (SHA (M) .w) (mod q)
u2 = rw (mod q)
v = (g güç u1.y güç u2 (mod p)) (mod q)
v = r ise imza doğrulanır
İmza oluşturma, mesaj başına geçici imza anahtarı k kullanımıyla yine ElGamal'a benzer, ancak sonucun boyutunu küçültmek için önce mod p sonra mod q hesaplanır. Karma işlevi SHA'nın kullanımının burada açık olduğunu unutmayın. Doğrulama ayrıca, yine El Gamal'den biraz daha karmaşık, ancak El Gamal ile ilişkili olan iki hesaplamayı karşılaştırmaktan ibarettir.
Neredeyse tüm hesaplamaların mod q olduğunu ve dolayısıyla çok daha hızlı olduğunu unutmayın.
Ancak, RSA'nın aksine, DSA yalnızca dijital imzalar için kullanılabilir
DSA Güvenliği
Bir bilinçaltı kanalının varlığı, yalnızca DSA'da değil, birçok şemada (rastgele bir sayı seçilmesi gereken herhangi biri) mevcuttur. Yalnızca iyi bir algoritmanın değil, "sistem güvenliğinin" gerekliliğini vurgular.
AVA'nın aşağıdaki yanıtını kontrol edin .
Eski cevabım yanlış görünüyor
Referans olarak man ssh-keygen
, bir DSA anahtarının uzunluğu, NIST'in FIPS 186-2 ile uyumlu kalması için tam olarak 1024 bit ile sınırlandırılmıştır. Bununla birlikte, daha uzun DSA anahtarları teorik olarak mümkündür; FIPS 186-3 bunlara açıkça izin verir. Ayrıca, 1024 bit uzunluğundaki RSA veya DSA anahtarlarıyla güvenlik artık garanti edilmemektedir.
Sonuç olarak, 2048 bitlik bir RSA anahtarı şu anda en iyi seçimdir.
Güvenli bir SSH bağlantısı kurmak, güvenli şifreleme anahtarı çifti teknolojisini seçmekten daha fazlasını gerektirir . Edward Snowden'ın NSA ifşaatlarına göre, daha önce yeterli kabul edilenden daha da ihtiyatlı olmak gerekiyor.
Sadece bir örnek vermek gerekirse, güvenli bir anahtar değişim algoritması kullanmak da aynı derecede önemlidir. İşte mevcut en iyi SSH sertleştirme uygulamalarına güzel bir genel bakış .
ssh-keygen
diğer bit boyutlu anahtarlara da izin verir (ben kendim ssh-keygen
, RHEL'de oluşturulan 2048 bitlik bir DSA anahtarı kullanıyorum ).