1. ホーム
  2. encryption

[解決済み] DSAとRSAの違いは何ですか?

2022-09-13 05:06:46

質問

これらは両方とも公開鍵と秘密鍵を必要とする暗号化アルゴリズムであるように見えます。 クライアント サーバー アプリケーションで暗号化を行うのに、なぜどちらか一方を選ぶ必要があるのでしょうか。

どのように解決するのですか?

参照してください。 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 e.d(mod R) = M(mod R)

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



DSA (デジタルシグネチャアルゴリズム)

DSA は ElGamal と Schnorr アルゴリズムの変種です。 320ビットの署名を作成しますが、512~1024ビットのセキュリティがあります。 離散対数の計算の難しさに起因しています。 は、かなり広く受け入れられています。



DSA鍵の生成

まず共有されたグローバルな公開鍵の値(p,q,g)が選択されます。

大きな素数p=2乗Lを選ぶ

ここでL= 512〜1024ビットで64の倍数

p-1の160ビット素因数であるqを選択します。

g = h乗(p-1)/qを選ぶ。

任意のh<p-1に対して、h(p-1)/q(mod p)>1

とすると、各ユーザは秘密鍵を選び、公開鍵を計算する。

xを選択します。

y = g power x(mod p)を計算する。



DSA 鍵生成は El Gamal と関連していますが、El Gamal よりもいくらか複雑です。 その主な理由は、160 ビットの 2 次モジュラス q を使用することで、計算を高速化し、署名のサイズを小さくするためです。 計算を高速化し、結果として得られる署名のサイズを小さくするために使用される、2 次的な 160 ビットのモジュラス q を使用することが主な理由です。

DSA 署名の作成と検証



メッセージに署名する M

ランダムな署名鍵k, k<qを生成する。

計算する

r = (gパワーk(mod p))(mod q)

s = k-1.SHA(M)+ x.r (mod q) です。

署名(r,s)をメッセージと一緒に送信



署名を検証するために、計算する。

w = s-1(mod q)

u1= (SHA(M).w)(mod q)

u2= r.w(mod q)

v = (g power u1.y power u2(mod p))(mod q)

もしv=rなら署名は検証されます。



署名の作成はElGamalと同様で、メッセージごとに一時的な署名キーkを使用します。 しかし、最初にmod pを計算し、次にmod qを計算することで、結果のサイズを小さくします。 次にmod qを計算し、結果のサイズを小さくします。ハッシュ関数SHAを使用することに注意してください。 ハッシュ関数SHAを使用することに注意。検証もまた、以下のように構成される。 2つの計算を比較するもので、これもEl Gamalより少し複雑である。 よりも少し複雑ですが、El Gamalに関連しています。

ほぼすべての計算が mod q であることに注意してください。 したがって、はるかに高速です。

しかし、RSAとは対照的に、DSAは電子署名にしか使えません。

DSAのセキュリティ

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