DSAとRSAの違いは何ですか?


114

どちらも公開鍵と秘密鍵を必要とする暗号化アルゴリズムのようです。クライアントサーバーアプリケーションで暗号化を提供するために、なぜ一方を選択するのですか?


3
henriが述べたように、DSAは暗号化のためではなく、署名するためのものです。
Samveen 2013

回答:


27

参照、https://web.archive.org/web/20140212143556/http://courses.cs.tamu.edu:80 / pooch / 665_spring2008 / Australian-sec-2006 / less19.html

RSA
RSA暗号化と復号化は交換
可能であるため
、RSAスキーム{(e、R)、(d、p、q)}
が与えられれば、デジタル署名スキームとして直接使用して、メッセージMに署名し、計算する:
S = M power d (mod R)
署名を検証するには、以下を計算します:
M = S power e(mod R)= M power ed(mod R)= M(mod R)

RSAは 、指数の使用順序を逆にするだけで、暗号化とデジタル署名の両方に使用できます。つまり、秘密指数(d)で署名を作成し、公開指数(e)で誰でも署名を検証できます。それ以外はすべて同じです。

DSA(デジタル署名アルゴリズム)
DSAは、320ビットの署名を作成し、やはり512から1024ビットのセキュリティセキュリティと離散対数を計算することの難しさにかかっているが非常に広く受け入れられているエルガマルとシュノールアルゴリズム上の変異体である

DSA鍵生成
まず、共有グローバル公開キー値(p、q、g)が選択され
ます。大きな素数p = 2の累乗Lを選択します。
ここで、L = 512から1024ビットで、64の倍数です
qを選択し、p-1の160ビット素数係数を
選択しますg = hを選択します
任意のh1の累乗(p-1)/ q
次に、各ユーザーが秘密鍵を選択し、それらの公開鍵を計算し
ます。xを計算y = g累乗x(mod p)

DSA鍵の生成は関連していますが、El Gamalよりも多少複雑です。主に、計算を高速化し、結果として得られる署名のサイズを削減するために使用されるセカンダリ160ビット係数qを使用しているためです。



メッセージに署名するためのDSA署名の作成と検証M
はランダムな署名鍵を生成しますk、k計算
r =(g power k(mod p))(mod q)
s = k-1.SHA(M)+ xr(mod q)
send署名

を検証するメッセージ付きの署名(r、s)、計算:
w = s-1(mod q)
u1 =(SHA(M).w)(mod q)
u2 = rw(mod q)
v =(g power u1.y power u2(mod p))(mod q)
v = rの場合、署名が検証されます

署名の作成も、メッセージごとの一時署名キーkを使用するElGamalに似ていますが、最初にcalc p、次にmod qを実行して結果のサイズを小さくします。ここではハッシュ関数SHAの使用が明示的であることに注意してください。検証は、2つの計算を比較することでも構成されますが、これもEl Gamalに比べて少し複雑です。
ほぼすべての計算がmod qであるため、はるかに高速であることに注意してください。
ただし、RSAとは異なり、DSAはデジタル署名にのみ使用できます。

DSAセキュリティ
サブリミナルチャネルの存在は、DSAだけでなく、多くのスキーム(乱数を選択する必要のあるスキーム)に存在します。優れたアルゴリズムだけでなく、「システムセキュリティ」の必要性を強調しています。


参照へのリンクが壊れています
Paul Wintz

82

以下のAVAの回答を確認してください。

私の古い答えは間違っているようです


それでは、暗号化するデータの量が多い場合、RSAを使用するとより高速に実行されるということですか。
WilliamKF 2010年

2
いいえ、その逆です。DSAの署名は高速です(数学的には暗号化とほぼ同じです)。したがって、たくさん暗号化して頻繁に復号化する必要がある場合は、DSAの方が高速です。
アンリ

クライアント側で暗号化するデータがたくさんありますが、サーバーで一度だけ復号化されるので、DSAは引き続き勝ちますか?
WilliamKF 2010年

30
DSAは暗号化しません。繰り返しますが、DSAは暗号化しません。クイズです:DSAの「S」は何を意味しますか?
James K. Polk大統領、

4
@GregS RSAを暗号化できるか、DSAが暗号化できないかは、主に用語の問題です。いくつかの異なるアルゴリズムをRSAと呼び、その一部は署名(例:RSA-PSS)、一部は暗号化(例:RSA-OAEP)します。ただし、グループベースの暗号化のすべてのアルゴリズムに異なる名前を付け、暗号化アルゴリズムElGamal暗号化の1つを呼び出し、署名アルゴリズムDSAの1つを呼び出しました。
CodesInChaos 2013年

24

ところで、DSAで暗号化することはできません。署名するだけです。それらは数学的に同等(多かれ少なかれ)ですが、実際にはDSAを暗号化スキームとして使用することはできず、デジタル署名スキームとしてのみ使用できます。


20

を参照するman ssh-keygenと、NISTのFIPS 186-2に引き続き準拠するために、DSAキーの長さは正確に1024ビットに制限されています。それにもかかわらず、より長いDSAキーは理論的には可能です。FIPS 186-3では、それらを明示的に許可しています。さらに、1024ビット長のRSAまたはDSAキーでは、セキュリティが保証されなくなります。

結論として、現在2048ビットのRSA鍵が最良の選択です。

服用するためのその他の注意事項

安全なSSH接続を確立するには、安全な暗号化キーペアテクノロジーを選択する以上のことが必要です。エドワードスノーデンのNSAの啓示を考慮すると、以前は十分であると考えられていたものよりもさらに警戒する必要があります。

一例を挙げると、安全な鍵交換アルゴリズムを使用することも同様に重要です。ここでは、現在のSSH強化のベストプラクティスの概要を示します。


の一部の古いバージョンでssh-keygenは、他のビットサイズのキーも使用できます(私自身は、ssh-keygenRHELで生成された2048ビットDSAキーを使用しています)。
Samveen 2013

6

上記の素晴らしい答えに加えて。

  • DSAは離散対数を使用します。
  • RSAは整数因数分解を使用します。

RSAはRon R ivest、Adi S hamir、Leonard A dlemanの略です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.