私は現在、さまざまなセキュリティプロトコルの研究を始めており、SRPセキュアリモートパスワードプロトコルに出くわしました。その背後にある数式と計算はなんとか理解できましたが、「g」->乗法群の生成元を使用する理由/目的がわかりません。
「g」が静的な値である理由
事前定義する必要がある理由、動的に割り当てない理由
ほとんどの実装で「g」の値が2である理由、つまり3,4,5,6,7,8、..
このパラメータについて非常に重要であるため、計算に含める必要があります。
乗法群の生成の目的は何ですか私が数学で知っていなければならない特別な関係があります
gが1の場合はどうなりますか
ジェネレーターのウィキペディアの定義を読みましたが、その理由がわかりません。なぜそれらを使用する必要があるのか、つまりグループZが循環しているときに何が起こるのか、なぜこれが利点なのか、そうでないのか。
SRPは、 巡回群 で動作するアルゴリズムの大規模なコレクションの1つです。巡回群は、要素1、 g 、 g で構成されます。2_、 g 3_、...ある値まで g r -1 ここで、 r はグループの位数( g などの最小の非ゼロ整数)です。 r = 1)。したがって、 g は、実際には遊び場の定義の一部であるため、「静的」です。 [〜#〜] srp [〜#〜] 与えられた素数 [〜#〜] n [〜#〜] を法とする乗算をグループとして使用して、与えられた値 g によって生成された巡回群法律。クライアントとサーバーの両方が g と [〜#〜] n [〜#〜] に同意し、同じ g および [〜#〜] n [〜#〜] は、特定のユーザーに使用する必要があります。同じ g と [〜#〜] n [〜#〜] 、つまり同じ巡回群の場合、サーバーにとっては簡単です。 、すべてのユーザーに使用されます。同じグループを共有することはセキュリティの問題ではありません。
暗号化の目的で、 離散対数 が難しいようなグループが必要ですが、計算は簡単です(これらの2つの条件は、巡回群が必要であることを意味しますが、巡回群は必要ありません)。これには、 [〜#〜] n [〜#〜] が十分に大きいことと、 r ( g )は、十分な大きさの素数(少なくとも160ビット)の倍数になります。 SRPは、 [〜#〜] n [〜#〜] を「安全な素数」、つまり [〜#〜] n [〜#として選択することを推奨しています。 〜] = 2 q + 1ここで、 q も素数です。 [〜#〜] n [〜#〜] が安全な素数である場合、2。の g の順序。 [〜#〜] n [〜#〜] -2の範囲は必ず q または2 q、したがって適切です。
g = 1を選択すると、次数1の巡回群が得られ、すべての値が1になります。すべてのパスワードが受け入れられ、セキュリティはまったくありません。同様に、 g = [〜#〜] n [〜#〜] -1を選択すると、次の巡回群が得られます。次数2、これは実質的に良くありません。
ただし、2から [〜#〜] n [〜#〜] -2までの値は、 g に適しています( [〜#〜] n [〜#〜] は安全な素数です)。次に、 g = 2を使用することもできます。これは、パフォーマンスに最適です(ただし、ランダムな g と比較するとゲインはわずかです。 )。